python创建学生成绩管理系统
python学生成绩管理系统创建,供大家参考,具体内容如下
要求编写学生类,班级类,并在电脑运行生成表单,输入一个数字,得到对应的结果。
输出样式
代码如下
学生类
classStudent:
def__init__(self,sno,name,english,math):
self.sno=sno
self.name=name
self.__english=english
self.__math=math
@property
defenglish(self):
returnself.__english
@english.setter
defenglish(self,english):
self.__english=englishif0<=english<=100else0
@property
defmath(self):
returnself.__math
@math.setter
defmath(self,math):
self.__math=mathif0<=math<=100else0
defget_average(self):
return(self.english+self.math)/2
def__str__(self):
s=str.format('{0:>4d}{1:>4s}{2:>8d}{3:>8d}',self.sno,self.name,self.english,self.math)
returns
@staticmethod
defget_header():
return'{0:>2s}{1:>4s}{2:\u3000>4s}{3:>4s}'.format('学号','姓名','英语','数学')
def__eq__(self,other):
returnself.sno==other.sno
def__gt__(self,other):
returnself.sno>other.sno
测试
#测试 if__name__=='__main__': s1=Student(1,'王大海',100,65) s2=Student(2,'李三',38,45) s3=Student(3,'李四',88,45) print(s1>s2) students=[s2,s1,s3] students.sort() print(students) print(Student.get_header()) forsinstudents: print(s)
结果
班级类
fromstudentimportStudent
classBanJi:
def__init__(self,name):
self.name=name
self.students=[]
self.load_data()
defload_data(self):
withopen('data.txt','r')asf:
forlineinf:
d=line.split()
self.students.append(Student(int(d[0]),d[1],int(d[2]),int(d[3])))
defshow_student(self):
print(Student.get_header())
forsinself.students:
print(s)
defadd_student(self,student):
ifstudentinself.students:
return'此学生已存在'
else:
self.students.append(student)
return'添加成功'
def__index_student(self,sno):
s=Student(sno,'',0,0)
ifsnotinself.students:
returnNone
else:
returnself.students.index(s)
deffind_student(self,sno):
i=self.__index_student(sno)
ifiisNone:
returnNone
else:
returnself.students[i]
defdelete_student(self,sno):
i=self.__index_student(sno)
ifiisNone:
r='没有学号为{0:d}'.format(sno)
else:
delself.students[i]
r='删除成功!'
returnr
defupdate_student(self,sno):
s=self.find_student(sno)
ifsisNone:
return'没有学号为{0:d}的学生!'.format(sno)
else:
print(s)
print('请输入新的值,直接回车不修改!')
name_str=input('姓名:')
english_str=input('英语:')
math_str=input('数学:')
s.name=name_striflen(name_str)>0elses.name
s.name=int(english_str)iflen(english_str)>0elses.english
s.name=int(math_str)iflen(math_str)>0elses.math
return'修改成功!'
defsave_data(self):
withopen('data.txt','w',encoding='GBK')asf:
forsinself.students:
r=str.format('{0:d}{1:s}{2:d}{3:d}\n',s.sno,s.name,s.english,s.math)
f.write(r)
defsort_by_english(self,reverse=False):
self.students.sort(key=lambdax:x.english,reverse=reverse)
学生管理系统
importos
fromstudentimportStudent
frombanjiimportBanJi
menu="""
*********************
学生成绩管理系统
1.浏览学生成绩
2.按学号查找学生
3.按英语成绩排序
4.添加学生
5.删除学生
6.修改学生信息
9.保存
0.退出
*********************
"""
tip='输入(0-9)选择操作:'
choice=''
b=BanJi('1802')
os.system('cls')
print(menu)
whileTrue:
choice=input(tip)
os.system('cls')
print(menu)
ifchoice=='0':
print('数据以保存!')
break
elifchoice=='1':
b.show_student()
elifchoice=='2':
sno=int(input('请输入您需要查询的学生的学号:'))
s=b.find_student(sno)
ifsisNone:
print('无此学号的学生!')
else:
print(s)
elifchoice=='3':
b.sort_by_english()
b.show_student()
elifchoice=='4':
print('请输入学生信息:')
sno=int(input('学号:'))
name=input('姓名:')
english=int(input('英语:'))
math=int(input('数学:'))
student=Student(sno,name,english,math)
r=b.add_student(student)
print(r)
elifchoice=='5':
sno=int(input('请输入要删除的学生的学号:'))
r=b.delete_student(sno)
print(r)
elifchoice=='6':
sno=int(input('请输入要修改的学生的学号:'))
r=b.update_student(sno)
print(r)
elifchoice=='9':
b.save_data()
print('保存成功!')
else:
print('输入错误!')
用spyder或者cmd运行都可以。
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。