python实现的简易版 学生成绩管理系统
如有不妥的地方欢迎评论区指出
# 简单学生成绩管理系统
class Score():
def __init__(self):
self.s=0
def input(self):
self.s=float(input("请输入分数(0~100:"))
def output(self):
print(self.s,end='')
# 定义课程类,包括课程名称和任课教师
class Subject():
def __init__(self):
self.subject=''
self.teacher=''
def input(self):
self.subject=str(input("请输入课程名称:"))
self.teacher=str(input("请输入任课教师:"))
def output(self):
print(self.subject,self.teacher)
# 定义学生类
class Student():
def __init__(self,s):
self.name=''
self.sum=0
self.grade={}
self.subject=s
#输入每门课的成绩,用字典进行存储
def input(self):
self.name=str(input("请输入学生姓名:"))
for i in self.subject:
self.sum+=self.grade[i].s
# 输出每门课的成绩及总分
def output(self):
print(self.name,end='')
for i in self.subject:
self.grade[i].output()
print(self.sum)
# 课程输入函数,返回课程列表
def kc():
print("****课程信息录入****")
sub=[]
while True:
subject=Subject()
subject.input()
if subject.subject=='**':#以输入“**”结束
break
else:
sub.append(subject)
return sub
#学生成绩输入函数,返回全部学生列表
def cj(sub):
print("****学生信息录入****")
class_jd=[]
while True:
stu=Student(sub)
stu.input()
stu.count()
class_jd.append(stu)
if input("继续输入学生吗(y/n)?") in ['n','N']:
break
return class_jd
def main():
print("*****学生成绩管理系统*******")
sub=kc()
class_jd=cj(sub)
class_jd.sort(key=lambda class_jd:class_jd.sum)
print("***结果输出***")
print("最高分:",max(class_jd,key=lambda class_jd:class_jd.sum).sum)
print("最低分:",min(class_jd,key=lambda class_jd:class_jd.sum).sum)
print("姓名",end='')
for i in sub: # 输出表头
print(i.subject,end='')
print("总分")
for i in class_jd: # 按总分从低到高输出学生信息
print(i.output())
if __name__ == '__main__':
main()