2018-03-31 回答
# -*- 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 [">=",">","<=","录入数据 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()