永发信息网

用python编写的一个学生成绩管理系统

答案:2  悬赏:60  手机版
解决时间 2021-02-20 21:33
用python编写的一个学生成绩管理系统
最佳答案
# -*- coding: cp936 -*-
class StuInfo:
def __init__(self):
self.Stu=[{"Sno":"1","Sname":"姓名","ChineseScore":64,"MathsScore":34,"EnglishScore":94,"ComputerScore":83},
{"Sno":"2","Sname":"姓名","ChineseScore":44,"MathsScore":24,"EnglishScore":44,"ComputerScore":71},
{"Sno":"3","Sname":"姓名","ChineseScore":74,"MathsScore":35,"EnglishScore":74,"ComputerScore":93},
{"Sno":"4","Sname":"姓名","ChineseScore":94,"MathsScore":54,"EnglishScore":24,"ComputerScore":73}]
self.attribute={"Sno":"学号",
"Sname":"姓名",
"ChineseScore":"语文成绩",
"MathsScore":"数学成绩",
"EnglishScore":"英语成绩",
"ComputerScore":"计算机成绩"
}
def _add(self):
'''添加'''
singleInfo={}
for i in self.attribute:
if "Score" in i:
singleInfo[i]=int(raw_input(self.attribute[i]+"\n"))
else:
singleInfo[i]=raw_input(self.attribute[i]+"\n").strip()
self.Stu.append(singleInfo)
print "添加成功OK"
for i in singleInfo:
print i,"=",singleInfo[i]

def _del(self):
"""删除学号为Sno的记录"""
Sno=raw_input("学号:\n")
self.Stu.remove(self.__getInfo(Sno))
print "删除成功OK"

def _update(self):
"""更新数据"""
Sno=raw_input("学号\n").strip()
prefix="修改"
updateOperate={"1":"ChineseScore",
"2":"MathsScore",
"3":"EnglishScore",
"4":"ComputerScore"}
for i in updateOperate:
print i,"-->",prefix+self.attribute[updateOperate[i]]
getOperateNum=raw_input("选择操作:\n")
if getOperateNum:
getNewValue=int(raw_input("输入新的值:\n"))
record=self.__getInfo(Sno)
record[updateOperate[getOperateNum]]=getNewValue
print "修改"+record["Sname"]+"的"+str(updateOperate[getOperateNum])+"成绩=",getNewValue,"\n成功OK"

def _getInfo(self):
"""查询数据"""
while True:
print "1->学号查询 2->条件查询 3->退出"
getNum=raw_input("选择:\n")
if getNum=="1":
Sno=raw_input("学号:\n")
print filter(lambda record:record["Sno"]==Sno,self.Stu)[0]
elif getNum=="2":
print "ChineseScore 语文成绩;","MathsScore 数学成绩;","EnglishScore 英语成绩;","ComputerScore 计算机成绩;"
print "等于 ==,小于 <, 大于 > ,大于等于 >=,小于等于<= ,不等于!="
print "按如下格式输入查询条件 eg: ChineseScore>=60 "
expr=raw_input("条件:\n")
Infos=self.__getInfo(expr=expr)
if Infos:
print "共%d记录"%len(Infos)
for i in Infos:
print i
else:
print "记录为空"
elif getNum=="3":
break
else:
pass
def __getInfo(self,Sno=None,expr=""):
"""查询数据
根据学号 _getInfo("111111")
根据分数 _getInfo("EnglishSorce>80")"""
if Sno:
return filter(lambda record:record["Sno"]==Sno,self.Stu)[0]
for operate in [">=",">","<=","<","==","!="]:
if operate in expr:
gradeName,value=expr.split(operate)
return filter(lambda record: eval( repr(record[gradeName.strip()])+operate+value.strip()) ,self.Stu)
return {}

def _showAll(self):
"""显示所有记录"""
for i in self.Stu:
print i

@staticmethod
def test():
"""测试"""
_StuInfo=StuInfo()
while True:
print "1->录入数据 2->修改数据 3->删除数据 4->查询数据 5->查看数据 6->退出"
t=raw_input("选择:\n")
if t=="1":
print "录入数据"
_StuInfo._add()
elif t=="2":
print "修改数据"
_StuInfo._update()
elif t=="3":
print "删除数据"
_StuInfo._del()
elif t=="4":
print "查询数据"
_StuInfo._getInfo()
elif t=="5":
print "显示所有记录"
_StuInfo._showAll()
elif t=="6":
break
else:
pass
if __name__=="__main__":
StuInfo.test()追问能够运行无误吧追答不会懒到自己测试一下都不愿意吧。我这能运行,不代表你那可以

全部回答

哪个学校的,竟然还有实验追问没办法,选修老师要求的,你会吗,要是能运行且达到要求的立马采纳
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
火车中转是什么意思,怎么样个过程如何买票,我
微信组织名称是什么
无得利雪花粉多钱一袋五十斤装
下图为“某大洋海岸大陆等高线地形图”,左图
积成电子股份有限公司签约及待遇问题(急急急
峙归地址在什么地方,想过去办事
关于跳跃的句子
企业可持续发展的依据有哪些
求电影《西西里的美丽传说》的种子
瑞新路/临康路(路口)地址在哪,我要去那里办
龙鱼和魟鱼混养时龙鱼药对魟鱼有影响吗?
读经纬线图,回答问题(1)写出图中A点的经纬
ps圆角矩形工具怎么弄成透明
沟通用英文怎么说
全屋定制十大品牌有哪些,哪个做的比较好
推荐资讯
昌城锅炉水暖地址有知道的么?有点事想过去
狗狗有点打喷嚏和吸鼻子,可没有其他症状,怎
0.5×10是不是科学计数法
金光农场淋油分场怎么去啊,有知道地址的么
韦小堡(洪浪北店)我想知道这个在什么地方
车出了事故,拖车费1500平安保险公司说要自己
有什么漫画和 听爸爸的话路上研究观察日记 御
叫别人在美团上下订单是不是给个美团卷就够了
qq同步助手注册iphone手机,无法查看验证码
宝纯汽车修配厂在哪里啊,我有事要去这个地方
吉林省高速公路局伊通管理分局怎么去啊,有知
南宁到鹿寨县坐快巴需要多少时间
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?