实验四:
通过对学生成绩管理系统的设计与实现,进一步理解面向对象程序设计方法,会用面向对象的方法完成小型系统的开发。
简单学生成绩管理系统要求具有课程与成绩录入、总分计算、按总分排序、最高分和最低分计算等功能。信息输入和输出要简洁明了,增加必要的提示等。
1、学生成绩登记表
姓名 |
C# |
JAVA |
英语 |
数学 |
总分 |
李明 |
65 |
72 |
36 |
86 | |
王兵 |
81 |
70 |
65 |
71 | |
刘萍 |
73 |
64 |
88 |
65 |
- 课程与教师表
课程名称 |
任课教师 |
C# |
王长荣 |
JAVA |
李小小 |
英语 |
刘卫兵 |
数学 |
张常来 |
本学生成绩管理系统就是帮班主任完成“学生成绩登记表”和“课程与教师表”基本信息的录入,并求总分、排名和最高分及最低分。
本系统功能相对简单,关键是如何合理地定义相关的类来描述对象。这里设计分数(Score)、课程(Subject)以及学生(Student)三个类。分数(Score)类具有分数属性和输入、输出功能;课程(Subject)类具有课程名称和任课教师两个属性,以及输入、输出功能;学生(Student)类具有姓名、成绩、课程等属
性和输入成绩、输出成绩、求总分等功能。
class StudentSystem:
def __init__(self):
self.all = []
self.number = []
self.name = []
self.clanguage = []
self.java = []
self.math = []
self.english = []
self.total = []
def insert(self):
box = []
number = input("学号:")
box.append(number)
self.number.append(number)
name = input("姓名:")
box.append(name)
self.name.append(name)
clanguage = int(input("请输入c#的成绩:"))
if 0 <= clanguage <= 100:
box.append(clanguage)
self.clanguage.append(clanguage)
else:
print("请输入正确的数字")
self.insert()
java = int(input("请输入Java成绩:"))
if 0 <= java <= 100:
box.append(java)
self.java.append(java)
else:
print("请输入正确的数字")
self.insert()
math = int(input("数学成绩:"))
if 0 <= math <= 100:
box.append(math)
self.math.append(math)
else:
print("请输入正确的数字")
self.insert()
english = int(input("英语成绩:"))
if 0 <= english <= 100:
box.append(english)
self.english.append(english)
else:
print("请输入正确的数字")
self.insert()
box.append(clanguage+java + math + english)
self.all.append(box)
def show(self):
init = ["学号","姓名", "c#", "java", "数学", "英语", "成绩总和"]
for i in init:
print("%-10s" % i, end="")
print()
for i in self.all:
for j in i:
print("%-12s" % j, end="", )
print()
def delete(self):
k = 0
opt1 = input("输入删除的学号:")
if len(self.number) == 0:
print("系统中学号为空")
for i in self.number:
# 使用try + self.number.index(opt)减少时间复杂度
if i == opt1:
m = self.number.index(opt1)
self.all.remove(self.all[m])
self.name.remove(self.name[m])
self.number.remove(self.number[m])
self.math.remove(self.math[m])
self.clanguage.remove(self.clanguage[m])
self.java.remove(self.java[m])
self.english.remove(self.english[m])
print("删除成功")
k += 1
while k == len(self.number):
print("系统中没有该学号")
break
def sort(self):
sort = []
j = 0
for i in range(0, len(self.all)):
self.total.append(self.all[i][5])
self.total.sort(reverse=True)
while j < len(self.all):
for i in self.all:
if i[5] == self.total[j]:
sort.append(i)
j += 1
init2 = ["学号","姓名", "c#", "Java", "数学", "英语", "成绩总和"]
for i in init2:
print("%-10s" % i, end="")
print()
for i in sort:
for j in i:
print("%-12s" % j, end="", )
print()
def menu(self):
while True:
print("1 插入成绩")
print("2 输出成绩")
print("3 删除数据")
print("4 排序数据")
print("5 退出系统")
option = int(input("输入选项:"))
if option == 1:
self.insert()
print("插入成功")
elif option == 2:
self.show()
elif option == 3:
self.delete()
elif option == 4:
self.sort()
elif option==5:
break
else:
print("请输入有效选项")
self.menu()
class Subject():
def __init__(self):
self.alls = []
self.subject = []
self.teacher = []
def input(self):
box=[]
subject = str(input("请输入课程名称:"))
box.append(subject)
self.subject.append(subject)
teacher = str(input("请输入任课教师:"))
box.append(teacher)
self.teacher.append(teacher)
self.alls.append(box)
def output(self):
init = ["课程名称","任课教师"]
for i in init:
print("%-10s" % i, end="")
print()
for i in self.alls:
for j in i:
print("%-12s" % j, end="", )
print()
def menu1(self):
while True:
print("1 添加课表")
print("2 展示课表")
print("3 退出")
option = int(input("输入选项:"))
if option == 1:
self.input()
elif option == 2:
self.output()
elif option==3:
break
else:
print("请输入有效选项")
self.menu1()
def main():
while True:
print("欢迎来到学生成绩管理系统")
print("1 学生成绩")
print("2 课表展示")
option = int(input("输入选项:"))
if option == 1:
s = StudentSystem
s().menu()
else:
if option == 2:
su=Subject
su().menu1()
if __name__ == '__main__':
main()
结果截图
欢迎来到学生成绩管理系统 1 学生成绩 2 课表展示 输入选项:1 1 插入成绩 2 输出成绩 3 删除数据 4 排序数据 5 退出系统 输入选项:1 学号:1 姓名:李明 请输入c#的成绩:65 请输入Java成绩:72 数学成绩:36 英语成绩:86 插入成功 1 插入成绩 2 输出成绩 3 删除数据 4 排序数据 5 退出系统 输入选项:1 学号:2 姓名:王兵 请输入c#的成绩:81 请输入Java成绩:70 数学成绩:65 英语成绩:71 插入成功 1 插入成绩 2 输出成绩 3 删除数据 4 排序数据 5 退出系统 输入选项:1 学号:3 姓名:刘萍 请输入c#的成绩:73 请输入Java成绩:64 数学成绩:88 英语成绩:65 插入成功 1 插入成绩 2 输出成绩 3 删除数据 4 排序数据 5 退出系统 输入选项:1 学号:4 姓名:李阳 请输入c#的成绩:65 请输入Java成绩:88 数学成绩:55 英语成绩:98 插入成功 1 插入成绩 2 输出成绩 3 删除数据 4 排序数据 5 退出系统 输入选项:2 学号 姓名 c# java 数学 英语 成绩总和 1 李明 65 72 36 86 259 2 王兵 81 70 65 71 287 3 刘萍 73 64 88 65 290 4 李阳 65 88 55 98 306 1 插入成绩 2 输出成绩 3 删除数据 4 排序数据 5 退出系统 输入选项:3 输入删除的学号:4 删除成功 1 插入成绩 2 输出成绩 3 删除数据 4 排序数据 5 退出系统 输入选项:4 学号 姓名 c# Java 数学 英语 成绩总和 1 李明 65 72 36 86 259 2 王兵 81 70 65 71 287 3 刘萍 73 64 88 65 290 1 插入成绩 2 输出成绩 3 删除数据 4 排序数据 5 退出系统 输入选项:5 欢迎来到学生成绩管理系统 1 学生成绩 2 课表展示 输入选项:2 1 添加课表 2 展示课表 3 退出 输入选项:1 请输入课程名称:C# 请输入任课教师:王长荣 1 添加课表 2 展示课表 3 退出 输入选项:1 请输入课程名称:java 请输入任课教师:李小小 1 添加课表 2 展示课表 3 退出 输入选项:1 请输入课程名称:英语 请输入任课教师:刘卫兵 1 添加课表 2 展示课表 3 退出 输入选项:1 请输入课程名称:数学 请输入任课教师:张常来 1 添加课表 2 展示课表 3 退出 输入选项:2 课程名称 任课教师 C# 王长荣 java 李小小 英语 刘卫兵 数学 张常来 1 添加课表 2 展示课表 3 退出
输入选项: