增、删、改、显示所有学生信息(姓名、性别、学号、成绩)、求所有学生成绩之和、保存并退出
IDLE运行效果显示
代码
import json
import sys
student = []
def addinfo():
while True:
dict = {}
name = input("请输入学生的姓名")
sex = input("请输入学生的性别")
number = input("请输入学生的学号")
#校验学号是否唯一
score = float(input("请输入学生的python成绩"))
dict["name"] = name
dict["sex"] = sex
dict["number"] = number
dict["score"] = score
student.append(dict)
ret = input("是否继续输入下一个学生的信息? Y/N")
if ret == "Y":
continue
else:
break
return
def delinfo():
flag = False
print("请输入您所需要删除的学生的学号:")
number = input()
for i in student:
if number == i["number"]:
#删除该学生
student.remove(i)
flag = True
print("删除成功!")
break
if flag == False:
print("未找到该学生!")
return
def modifyInfo():
flag = False
print("请输入您所需要修改的学生的学号:")
number = input()
for i in student:
if number == i["number"]:
name = input("请输入学生的姓名")
sex = input("请输入学生的性别")
number = input("请输入学生的学号")
#校验学号是否唯一
score = float(input("请输入学生的python成绩"))
i["name"] = name
i["sex"] = sex
i["number"] = number
i["score"] = score
flag = True
print("修改成功!")
break
if flag == False:
print("未找到该学生!")
return
def showinfo():
print("姓名 性别 学号 成绩 ")
print("-"*30)
for i in student:
print("%s %s %s %f " %(i["name"], i["sex"], i["number"], i["score"]))
return
def sumofallscore(n):
if n==0:
return 0
if n==1:
return student[0]["score"]
else:
return student[n-1]["score"] + sumofallscore(n-1)
def saveandquit():
f = open("stu.txt", "w+") #一定要用清空
context = json.dumps(student)
f.write(context)#转成字符串
f.close()
sys.exit()
def test():
global student
f = open("stu.txt", "a+")
#既能没有文件能创建文件,又能读,字符串格式,不能清空只有a+
#如果用a+ 需要调一下文件指针
f.seek(0)
context = f.read()
print(context)
if context != "":
student=json.loads(context)
print(student)
f.close()
while True:
print("1.插入新的学生信息")
print("2.删除学生信息")
print("3.修改学生信息")
print("4.显示所有学生信息")
print("5.求所有学生成绩之和")
print("6.保存并退出")
print("请输入您的操作选项1---5:")
option = input()
if option=="1":
addinfo()
elif option=="2":
delinfo()
elif option=="3":
modifyInfo()
elif option=="4":
showinfo()
elif option=="5":
print("总成绩为%d" % sumofallscore(len(student)))
elif option == "6":#保存退出
saveandquit()
else:
print("您输入的选项有误,请重新输入:")
if __name__ == "__main__":
test()