Python实现学生成绩管理系统,shell实现学生成绩管理系统

本文实例为大家分享了Python实现学生战绩管理类别的切切实实代码,供大家参照他事他说加以考察,具体内容如下

Python达成学生战表管理类别,python

本文实例为我们享用了Python达成学生战表处理类别的有血有肉代码,供大家参谋,具体内容如下

基本功效:

输入并积累学生的音讯:通过输入学生的学号、姓名、和分数,然后就能够把数量保存在创立的student文件之中。

打字与印刷学生的享有音信:通过三个打字与印刷函数就能够把富有的音信打字与印刷在显示屏上。

修改学生音信:那个成效首先通过询问功效查询出该学生是不是存在,假若存在就对该学员的音讯举办修改,若是不存在则赶回到主界面。

删去学生信息:该效率是对相应的学生开始展览删减操作,若是学员存在就查找到进行删除。

按学生战表举办排序:
这一个效应是依照学生的成绩进行排序,对学生的新闻进行操作。

寻觅学生新闻:那个效果通过输入学号,查找该学员的音信,尽管有该学号就输出该学生的音讯,没有该学号就提醒输入的学号不设有。

开首化作用

系统在上马使用以前先进行开首化成效,剖断students.txt文件中是还是不是保存的有学童的音信,要是有就把文件的内容读抽取来,供接下来的操作使用,如用未有就早先化三个空的列表,用来保存用户的输入,程序中接下去的富有数据都会保留在该列表中至极与三个数量缓冲区。

Python实现学生成绩管理系统,shell实现学生成绩管理系统。率先是开垦文件操作,对文件中的内容张开读取操作,由于在文书中保留的内容是由空格实行剪切的,并且每三个学员的新闻都侵占一行,首先读出具有的原委,先进行依据换行进行私分,获得每种人的音讯,然后再对每种人的音信进行设置空格分隔,得到各个人的详细消息包括用户的姓名,学号,战绩。

def Init(stulist): #初始化函数 
 print "初始化......" 
 file_object = open('students.txt', 'r') 
 for line in file_object: 
  stu = Student() 
  line = line.strip("\n") 
  s = line.split(" ") 
  stu.ID = s[0] 
  stu.name = s[1] 
  stu.score = s[2] 
 stulist.append(stu) 
print "初始化成功!" 

成就排序实现

这一部分代码是坚守学生战表的高低举办排序,在贯彻的时候,首先是把全体人的大成放到一个列表里面然后使用插入排序,依据成绩的深浅对StuList中保留的学习者音讯的地址举行排序

def Sort(stulist): #按学生成绩排序
 Stu = []
 sum_count = []
 for li in stulist:
 temp = []
 temp.append(li.ID)
 temp.append(li.name)
 temp.append(int(li.score1))
 temp.append(int(li.score2))
 temp.append(int(li.score3))
 temp.append(int(li.sum))
 sum_count.append(int(li.sum))
 Stu.append(temp)

 #print sum_count
 #print Stu;
 #print stulist
 insertSort(sum_count, stulist)
 #print stulist;
 display(stulist)

def insertSort(a, stulist): 
 for i in range(len(a)-1): 
 #print a,i 
 for j in range(i+1,len(a)): 
  if a[i]<a[j]: 
  temp = stulist[i] 
  stulist[i] = stulist[j] 
  stulist[j] = temp

分界面截图如下:

图片 1

源码:

# -*- coding: UTF-8 -*-

import os
import re
import numpy as np

class Student: #定义一个学生类
 def __init__(self):
 self.name = ''
 self.ID =''
 self.score1 = 0
 self.score2 = 0
 self.score1 = 0
 self.sum = 0


def searchByID(stulist, ID): #按学号查找看是否学号已经存在
 for item in stulist:
 if item.ID == ID:
  return True

def Add(stulist,stu): #添加一个学生信息
 if searchByID(stulist, stu.ID) == True:
 print"学号已经存在!"
 return False
 stulist.append(stu)
 print stu.name,stu.ID, stu.score1, stu.score2, stu.score3, stu.sum;
 print "是否要保存学生信息?"
 nChoose = raw_input("Choose Y/N")
 if nChoose == 'Y' or nChoose == 'y':
 file_object = open("students.txt", "a")
 file_object.write(stu.ID)
 file_object.write(" ")
 file_object.write(stu.name)
 file_object.write(" ")
 file_object.write(str(stu.score1))
 file_object.write(" ")
 file_object.write(str(stu.score2))
 file_object.write(" ")
 file_object.write(str(stu.score3))
 file_object.write(" ")
 file_object.write(str(stu.sum))
 file_object.write("\n")
 file_object.close()
 print u"保存成功!"

def Search(stulist, ID): #搜索一个学生信息
 print u"学号 姓名 语文 数学 英语 总分"
 count = 0
 for item in stulist:
 if item.ID == ID:
  print item.ID, '\t' ,item.name,'\t', item.score1,'\t',item.score2, '\t', item.score3, '\t',item.sum
  break
 count = 0
 if count == len(stulist):
 print "没有该学生学号!"

def Del(stulist, ID): #删除一个学生信息
 count = 0
 for item in stulist:
 if item.ID == ID:
  stulist.remove(item)
  print "删除成功!"
  break
 count +=1
 # if count == len(stulist):
 # print "没有该学生学号!"
 file_object = open("students.txt", "w")
 for stu in stulist:
 print stu.ID, stu.name, stu.score1,stu.score2, stu.score3, stu.sum
 file_object.write(stu.ID)
 file_object.write(" ")
 file_object.write(stu.name)
 file_object.write(" ")
 file_object.write(str(stu.score1))
 file_object.write(" ")
 file_object.write(str(stu.score2))
 file_object.write(" ")
 file_object.write(str(stu.score3))
 file_object.write(" ")
 file_object.write(str(stu.sum))
 file_object.write("\n")
 file_object.close()
 # print "保存成功!"
 file_object.close()
def Change(stulist, ID):
 count = 0
 for item in stulist:
 if item.ID == ID:
  stulist.remove(item)
  file_object = open("students.txt", "w")
  for stu in stulist:
  #print li.ID, li.name, li.score
  file_object.write(stu.ID)
  file_object.write(" ")
  file_object.write(stu.name)
  file_object.write(" ")
  file_object.write(str(stu.score1))
  file_object.write(" ")
  file_object.write(str(stu.score2))
  file_object.write(" ")
  file_object.write(str(stu.score3))
  file_object.write(" ")
  file_object.write(str(stu.sum))
  file_object.write("\n")
  # print "保存成功!"
  file_object.close()
  stu = Student()
  stu.name = raw_input("请输入学生的姓名")
  while True:
  stu.ID = raw_input("请输入学生的ID")
  p = re.compile('^[0-9]{3}$')
  if p.match(stu.ID):
   break
  else:
   print "输入的有错误!"
  while True:
  stu.score1 = int(raw_input("请输入学生语文成绩"))
  if stu.score1 <= 100 and stu.score1 > 0 :
   break
  else:
   print "输入的学生成绩有错误!"
  while True:
  stu.score2 = int(raw_input("请输入学生数学成绩"))
  if stu.score2 <= 100 and stu.score2 > 0 :
   break
  else:
   print "输入的学生成绩有错误!"
  while True:
  stu.score3 = int(raw_input("请输入学生英语成绩"))
  if stu.score3 <= 100 and stu.score3 > 0 :
   break
  else:
   print "输入的学生成绩有错误!"
  stu.sum = stu.score1 + stu.score2 + stu.score3
  Add(stulist,stu)
def display(stulist): #显示所有学生信息
 print u"学号 姓名 语文 数学 英语 总分"
 for item in stulist:
 print item.ID, '\t' ,item.name,'\t', item.score1,'\t',item.score2, '\t', item.score3, '\t',item.sum

def Sort(stulist): #按学生成绩排序
 Stu = []
 sum_count = []
 for li in stulist:
 temp = []
 temp.append(li.ID)
 temp.append(li.name)
 temp.append(int(li.score1))
 temp.append(int(li.score2))
 temp.append(int(li.score3))
 temp.append(int(li.sum))
 sum_count.append(int(li.sum))
 Stu.append(temp)

 #print sum_count
 #print Stu;
 #print stulist
 insertSort(sum_count, stulist)
 #print stulist;
 display(stulist)

def insertSort(a, stulist): 
 for i in range(len(a)-1): 
 #print a,i 
 for j in range(i+1,len(a)): 
  if a[i]<a[j]: 
  temp = stulist[i] 
  stulist[i] = stulist[j] 
  stulist[j] = temp 
 #return a 

def Init(stulist): #初始化函数
 print "初始化......"
 file_object = open('students.txt', 'r')
 for line in file_object:
 stu = Student()
 line = line.strip("\n")
 s = line.split(" ")
 stu.ID = s[0]
 stu.name = s[1]
 stu.score1 = s[2]
 stu.score2 = s[3]
 stu.score3 = s[4]
 stu.sum = s[5]
 stulist.append(stu)
 file_object.close()
 print "初始化成功!"
 main()

def main(): #主函数 该程序的入口函数
 while True:
 print "*********************"
 print u"--------菜单---------"
 print u"增加学生信息--------1"
 print u"查找学生信息--------2"
 print u"删除学生信息--------3"
 print u"修改学生信息--------4"
 print u"所有学生信息--------5"
 print u"按照分数排序--------6"
 print u"退出程序------------0"
 print "*********************"

 nChoose = raw_input("请输入你的选择:")
 if nChoose == "1":
  stu = Student()
  stu.name = raw_input("请输入学生的姓名")
  while True:
  stu.ID = raw_input("请输入学生的ID")
  p = re.compile('^[0-9]{3}$')
  if p.match(stu.ID):
   break
  else:
   print "输入的有错误!"
  while True:
  stu.score1 = int(raw_input("请输入学生语文成绩"))
  if stu.score1 <= 100 and stu.score1 > 0 :
   break
  else:
   print "输入的学生成绩有错误!"
  while True:
  stu.score2 = int(raw_input("请输入学生数学成绩"))
  if stu.score2 <= 100 and stu.score2 > 0 :
   break
  else:
   print "输入的学生成绩有错误!"
  while True:
  stu.score3 = int(raw_input("请输入学生英语成绩"))
  if stu.score3 <= 100 and stu.score3 > 0 :
   break
  else:
   print "输入的学生成绩有错误!"
  stu.sum = stu.score1 + stu.score2 + stu.score3
  Add(stulist,stu)

 if nChoose == '2':
  ID = raw_input("请输入学生的ID")
  Search(stulist, ID)

 if nChoose == '3':
  ID = raw_input("请输入学生的ID")
  Del(stulist, ID)
 if nChoose == '4':
  ID = raw_input("请输入学生的ID")
  Change(stulist, ID)

 if nChoose == '5':
  display(stulist)

 if nChoose == '6':
  Sort(stulist)


 if nChoose == '0':
  break

if __name__ == '__main__':
 stulist =[]
Init(stulist)

越多学习材质请关怀专项论题《管理类别开采》。

如上就是本文的全体内容,希望对我们的读书抱有协助,也希望大家多多扶助帮客之家。

本文实例为大家享用了Python达成学生成绩管理种类的有血有肉代码,供我们参照他事他说加以调查,具体内容如下
基本效率:…

上三回,公众号介绍了何等运用 Python
实现单链表,上面让大家一探单链表的简易利用:在命令行,完结简易版战表处理种类。

正文实例为咱们大饱眼福了shell落成学生成绩管理种类的切切实实代码,供我们参谋,具体内容如下

基本成效:

此次的简易版战表管理连串,首要有六大效力:扩大学生新闻、删除学生音信、修改学生新闻、查找学生音信、展现学生音信、按
ID 排序。

基本的操作

输入并积累学生的音讯:通过输入学生的学号、姓名、和分数,然后就足以把多太史存在创立的student文件之中。

兑现效益如下:

增加
删除
查询
展现全部学生消息
vim编辑保存音信的文件

打字与印刷学生的兼具消息:通过一个打字与印刷函数就足以把持有的音信打印在荧屏上。

图片 2兑现效益.JPG

遇见的标题

修改学生音讯:这几个意义首先通过询问作用查询出该学生是还是不是存在,假设存在就对该学员的新闻进行修改,如若不存在则赶回到主分界面。

封存与读取音讯

先是判别当前路径下,是或不是留存database.txt以此文件。假使不存在的话,就新建一个。假设存在的话,就按行读取数据。在那之中,eval函数将读取的字符床分析为字典。然后,将学员音讯存款和储蓄在单链表中。

try: with open('database.txt', 'r') as f: for data in f.readlines(): SCS.append(evalexcept: with open('database.txt', 'w') as f: pass

随即,倘诺用户选拔退出程序的话,就遍历学生消息,并且以字符串的花样按行存款和储蓄学生消息。

elif item == 0: with open('database.txt', 'w') as f: self.point = self.head while self.point.next: self.point = self.point.next f.writelines('{}\n'.format(self.point.data)) exit()

1.充实学生消息时

去除学生消息:该作用是对相应的学习者张开删减操作,若是学员存在就查找到进行删除。

追加学生音讯

由于此番达成的大成处理体系比较简便,我们只对学生 id 和 战绩实行限制。

以此,大家要确定保障学生 id
无法重复。当大家意在向链表中添扩大少时,首先要迭代整个链表,判定要添英镑素的
id 是或不是曾经在链表中留存。

def unique_id(self, std_id): self.point = self.head while self.point.next: self.point = self.point.next if self.point.data['id'] == std_id: return False return True

那些,大家要保管学生战表在 0 ~ 100
分之间。当用户达成输入时,需求看清是不是要保存数据,假如否,那么就不实行扦插数据操作。为了降低用户误输入造成的震慑,大家设定各个用户大概输入的字符:[‘y’,
‘yes’, ‘Y’, ‘Yes’]。

末段,我们以字典的花样插入学生信息。

# 增加信息def add_info: # id 不能重复 # 成绩不能超出范围 name = input std_id = input while not self.unique_id(std_id=std_id): print std_id = input grade = input if eval < 0 or eval > 100: print grade = input print(name, std_id, grade) print('请确认无误后保存') choice = input items = ['y', 'yes', 'Y', 'Yes'] if choice in items: data = {'id': std_id, 'name': name, 'grade': grade} self.append 

追加学生消息时,笔者用的echo重定向到文件里,这里先河用的多个>,会导致覆盖。以前的多寡尚未了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图