栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python学生成绩管理系统

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python学生成绩管理系统

前言

本学期学校开设了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()

总结

至此所有的内容就成功实现了,分享下自己的实验成果,纪念下通过写代码获得的成就感,代码或多或少会过于复杂,各位大佬如有更好的解决方法也请不吝赐教,感谢各位观看。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/874914.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号