本学期学校开设了python课程,实验课时自己写了个学生管理系统,发出来与大家分享分享。
实验步骤 1.初始化
class StudentSystem: def __init__(self): #存储全部数据 self.all = [] #单独存储学号 self.number = [] #单独存储姓名成绩 self.name = [] #单独存储数学成绩 self.math = [] #单独存储语文成绩 self.chinese = [] #单独存储英语成绩 self.english = [] #单独存储总成绩 self.total = []2.插入数据
#建立一个临时数组用来存储
box = []
number = input("学号:")
box.append(number)
self.number.append(number)
name = input("姓名:")
box.append(name)
self.name.append(name)
chinese = int(input("语文成绩:"))
if 0 <= chinese <= 100:
box.append(chinese)
self.chinese.append(chinese)
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(chinese + math + english)
#使用二维数组进行存储即每个box存储的是每个学生的信息
self.all.append(box)
3.输出数据
init = ["学号", "姓名", "语文成绩", "数学成绩", "英语成绩", "成绩总和"]
for i in init:
print("%-10s" % i, end="")
print()
for i in self.all:
for j in i:
print("%-12s" % j, end="", )
print()
4.删除数据
k = 0
opt1 = input("输入删除的学号:")
if len(self.number) == 0:
print("系统中学号为空")
for i in self.number:
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.chinese.remove(self.chinese[m])
self.english.remove(self.english[m])
print("删除成功")
k += 1
while k == len(self.number):
print("系统中没有该学号")
break
5.更新数据
while True:
print("1 修改学号")
print("2 修改姓名")
print("3 修改语文成绩")
print("4 修改数学成绩")
print("5 修改英语成绩")
print("6 返回主菜单")
opt2 = int(input("输入选项:"))
if opt2 == 1:
n = input("请输入旧学号:")
m = input("请输入新学号:")
#通过学号列表获取到要all中要更改的信息
j = self.number.index(n)
self.number[j] = m
self.all[j][0] = m
print("修改成功")
elif opt2 == 2:
n = input("请输入学生学号")
m = input("请输入新名字:")
j = self.number.index(n)
self.number[j] = m
self.all[j][1] = m
print("修改成功")
elif opt2 == 3:
n = input("请输入学生学号:")
m = int(input("请输入新语文成绩:"))
j = self.number.index(n)
self.number[j] = m
self.all[j][2] = m
#对成绩进行更改的同时也要对成绩总和进行修改
self.all[j][5] = self.all[j][4] + self.all[j][3] + self.all[j][2]
print("修改成功")
elif opt2 == 4:
n = input("请输入学生学号:")
m = int(input("请输入新数学成绩:"))
j = self.number.index(n)
self.number[j] = m
self.all[j][3] = m
self.all[j][5] = self.all[j][4] + self.all[j][3] + self.all[j][2]
print("修改成功")
elif opt2 == 5:
n = input("请输入学生学号:")
m = int(input("请输入新英语成绩:"))
j = self.number.index(n)
self.number[j] = m
self.all[j][4] = m
self.all[j][5] = self.all[j][4] + self.all[j][3] + self.all[j][2]
print("修改成功")
elif opt2 == 6:
self.menu()
else:
print("请输入有效选项!")
self.update()
6. 排序数据
这里对总成绩进行从高到低的排序
其他成绩的排序与与总成绩排序一致,以此类推即可
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 = ["学号", "姓名", "语文成绩", "数学成绩", "英语成绩", "成绩总和"]
for i in init2:
print("%-10s" % i, end="")
print()
for i in sort:
for j in i:
print("%-12s" % j, end="", )
print()
7.对各分段人数进行统计
a1 = 0
b1 = 0
c1 = 0
d1 = 0
e1 = 0
a2 = 0
b2 = 0
c2 = 0
d2 = 0
e2 = 0
a3 = 0
b3 = 0
c3 = 0
d3 = 0
e3 = 0
a4 = 0
b4 = 0
c4 = 0
d4 = 0
e4 = 0
all1 = []
box1 = ["语文"]
box2 = ["数学"]
box3 = ["英语"]
print("1 获取语文各分数段的人数")
print("2 获取数学各分数段的人数")
print("3 获取英语各分数段的人数")
print("4 获取总分各分数段的人数")
print("5 总览")
for j in self.chinese:
if j < 60:
a1 += 1
elif 60 <= j < 70:
b1 += 1
elif 70 <= j < 80:
c1 += 1
elif 80 <= j < 90:
d1 += 1
elif 90 <= j <= 100:
e1 += 1
box1.append(a1)
box1.append(b1)
box1.append(c1)
box1.append(d1)
box1.append(e1)
all1.append(box1)
for j in self.math:
if j < 60:
a2 += 1
elif 60 <= j < 70:
b2 += 1
elif 70 <= j < 80:
c2 += 1
elif 80 <= j < 90:
d2 += 1
elif 90 <= j <= 100:
e2 += 1
box2.append(a2)
box2.append(b2)
box2.append(c2)
box2.append(d2)
box2.append(e2)
all1.append(box2)
for j in self.english:
if j < 60:
a3 += 1
elif 60 <= j < 70:
b3 += 1
elif 70 <= j < 80:
c3 += 1
elif 80 <= j < 90:
d3 += 1
elif 90 <= j <= 100:
e3 += 1
box3.append(a3)
box3.append(b3)
box3.append(c3)
box3.append(d3)
box3.append(e3)
all1.append(box3)
for j in self.total:
if j < 180:
a4 += 1
elif 180 <= j < 210:
b4 += 1
elif 210 <= j < 240:
c4 += 1
elif 240 <= j < 270:
d4 += 1
elif 270 <= j <= 300:
e4 += 1
m = int(input("输入选项:"))
if m == 1:
print("60分以下:", a1)
print("60分到70分:", b1)
print("70分到80分:", c1)
print("80分到90分:", d1)
print("90分到100分:", e1)
elif m == 2:
print("60分以下:", a2)
print("60分到70分:", b2)
print("70分到80分:", c2)
print("80分到90分:", d2)
print("90分到100分:", e2)
elif m == 3:
print("60分以下:", a3)
print("60分到70分:", b3)
print("70分到80分:", c3)
print("80分到90分:", d3)
print("90分到100分:", e3)
elif m == 4:
print("60分以下:", a4)
print("60分到70分:", b4)
print("70分到80分:", c4)
print("80分到90分:", d4)
print("90分到100分:", e4)
elif m == 5:
init3 = ["科目", "60分以下", "60分到70分", "70分到80分", "80分到90分", "90分到100分"]
for i in init3:
print("%-10s" % i, end="")
print()
for m in all1:
for n in m:
print("%-12s" % n, end="")
print()
8.汇总
class StudentSystem:
def __init__(self):
self.all = []
self.number = []
self.name = []
self.math = []
self.chinese = []
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)
chinese = int(input("语文成绩:"))
if 0 <= chinese <= 100:
box.append(chinese)
self.chinese.append(chinese)
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(chinese + math + english)
self.all.append(box)
def show(self):
init = ["学号", "姓名", "语文成绩", "数学成绩", "英语成绩", "成绩总和"]
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.chinese.remove(self.chinese[m])
self.english.remove(self.english[m])
print("删除成功")
k += 1
while k == len(self.number):
print("系统中没有该学号")
break
def update(self):
while True:
print("1 修改学号")
print("2 修改姓名")
print("3 修改语文成绩")
print("4 修改数学成绩")
print("5 修改英语成绩")
print("6 返回主菜单")
opt2 = int(input("输入选项:"))
if opt2 == 1:
n = input("请输入旧学号:")
m = input("请输入新学号:")
j = self.number.index(n)
self.number[j] = m
self.all[j][0] = m
print("修改成功")
elif opt2 == 2:
n = input("请输入学生学号")
m = input("请输入新名字:")
j = self.number.index(n)
self.number[j] = m
self.all[j][1] = m
print("修改成功")
elif opt2 == 3:
n = input("请输入学生学号:")
m = int(input("请输入新语文成绩:"))
j = self.number.index(n)
self.number[j] = m
self.all[j][2] = m
self.all[j][5] = self.all[j][4] + self.all[j][3] + self.all[j][2]
print("修改成功")
elif opt2 == 4:
n = input("请输入学生学号:")
m = int(input("请输入新数学成绩:"))
j = self.number.index(n)
self.number[j] = m
self.all[j][3] = m
self.all[j][5] = self.all[j][4] + self.all[j][3] + self.all[j][2]
print("修改成功")
elif opt2 == 5:
n = input("请输入学生学号:")
m = int(input("请输入新英语成绩:"))
j = self.number.index(n)
self.number[j] = m
self.all[j][4] = m
self.all[j][5] = self.all[j][4] + self.all[j][3] + self.all[j][2]
print("修改成功")
elif opt2 == 6:
self.menu()
else:
print("请输入有效选项!")
self.update()
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 = ["学号", "姓名", "语文成绩", "数学成绩", "英语成绩", "成绩总和"]
for i in init2:
print("%-10s" % i, end="")
print()
for i in sort:
for j in i:
print("%-12s" % j, end="", )
print()
def stat(self):
a1 = 0
b1 = 0
c1 = 0
d1 = 0
e1 = 0
a2 = 0
b2 = 0
c2 = 0
d2 = 0
e2 = 0
a3 = 0
b3 = 0
c3 = 0
d3 = 0
e3 = 0
a4 = 0
b4 = 0
c4 = 0
d4 = 0
e4 = 0
all1 = []
box1 = ["语文"]
box2 = ["数学"]
box3 = ["英语"]
print("1 获取语文各分数段的人数")
print("2 获取数学各分数段的人数")
print("3 获取英语各分数段的人数")
print("4 获取总分各分数段的人数")
print("5 总览")
for j in self.chinese:
if j < 60:
a1 += 1
elif 60 <= j < 70:
b1 += 1
elif 70 <= j < 80:
c1 += 1
elif 80 <= j < 90:
d1 += 1
elif 90 <= j <= 100:
e1 += 1
box1.append(a1)
box1.append(b1)
box1.append(c1)
box1.append(d1)
box1.append(e1)
all1.append(box1)
for j in self.math:
if j < 60:
a2 += 1
elif 60 <= j < 70:
b2 += 1
elif 70 <= j < 80:
c2 += 1
elif 80 <= j < 90:
d2 += 1
elif 90 <= j <= 100:
e2 += 1
box2.append(a2)
box2.append(b2)
box2.append(c2)
box2.append(d2)
box2.append(e2)
all1.append(box2)
for j in self.english:
if j < 60:
a3 += 1
elif 60 <= j < 70:
b3 += 1
elif 70 <= j < 80:
c3 += 1
elif 80 <= j < 90:
d3 += 1
elif 90 <= j <= 100:
e3 += 1
box3.append(a3)
box3.append(b3)
box3.append(c3)
box3.append(d3)
box3.append(e3)
all1.append(box3)
for j in self.total:
if j < 180:
a4 += 1
elif 180 <= j < 210:
b4 += 1
elif 210 <= j < 240:
c4 += 1
elif 240 <= j < 270:
d4 += 1
elif 270 <= j <= 300:
e4 += 1
m = int(input("输入选项:"))
if m == 1:
print("60分以下:", a1)
print("60分到70分:", b1)
print("70分到80分:", c1)
print("80分到90分:", d1)
print("90分到100分:", e1)
elif m == 2:
print("60分以下:", a2)
print("60分到70分:", b2)
print("70分到80分:", c2)
print("80分到90分:", d2)
print("90分到100分:", e2)
elif m == 3:
print("60分以下:", a3)
print("60分到70分:", b3)
print("70分到80分:", c3)
print("80分到90分:", d3)
print("90分到100分:", e3)
elif m == 4:
print("60分以下:", a4)
print("60分到70分:", b4)
print("70分到80分:", c4)
print("80分到90分:", d4)
print("90分到100分:", e4)
elif m == 5:
init3 = ["科目", "60分以下", "60分到70分", "70分到80分", "80分到90分", "90分到100分"]
for i in init3:
print("%-10s" % i, end="")
print()
for m in all1:
for n in m:
print("%-12s" % n, end="")
print()
def menu(self):
while True:
print("1 插入成绩")
print("2 输出成绩")
print("3 删除数据")
print("4 更新数据")
print("5 排序数据")
print("6 获取各分段人数")
print("7 退出系统")
option = int(input("输入选项:"))
if option == 1:
self.insert()
print("插入成功")
elif option == 2:
self.show()
elif option == 3:
self.delete()
elif option == 4:
self.update()
elif option == 5:
self.sort()
elif option == 6:
self.stat()
elif option == 7:
break
else:
print("请输入有效选项")
self.menu()
s = StudentSystem
s().menu()
总结
至此所有的内容就成功实现了,分享下自己的实验成果,纪念下通过写代码获得的成就感,代码或多或少会过于复杂,各位大佬如有更好的解决方法也请不吝赐教,感谢各位观看。



