python编写学生管理系统,如何写入数据?
运行的时候提示以下错误,该如何修改?
info = []#等待储存学生信息
#定义一个函数
def print_info():
# 打印提示信息
print()
print('---------------->学生管理系统<-----------------')
print()
print(' 1 -> 添加学生信息 2 -> 删除学生信息')
print(' 3 -> 修改学生信息 4 -> 查询单个学生信息')
print(' 5 -> 查询所有学生信息 6 -> 退出程序')
print('---------------------------------------------')
def main():
load_data()
while True:
print_info()
num = input('请输入您的选项:')
if num == "1" :# print(‘增加学生’)
add_info()
if num == "2" :# print('删除学生‘)
del_info()
if num == "3" : # print ('修改学生信息')
change_info()
if num == "4" :# print ('查询学生信息')
search_info()
if num == "5" :# print ('显示学生信息')
show_info()
elif num == "6" :
exit_flag = input("确定要退出系统?yes/no")
if exit_flag == 'yes' :
save_data()
print("欢迎下次使用")
return
else:
print("输入有误!")
def add_info():
new_id= input("输入学号:")
global info
for i in info():
if new_id == i['id'] :
print("此学生已经存在,请勿重复添加")
return
else:
new_name = input("输入姓名")
new_tel = int(input("请输入电话号码:"))
new_sex = input("输入性别")
new_age = int(input("请输入年龄:"))
info_dict={'id':new_id,'name':new_name,'sex':new_sex,'tel':new_tel,'age':new_age}
info.append(info_dict)
print(info)
def del_info() :
del_name=input("请输入删除学生名字:")
global info
for i in info :
if del_name == i['name']:
info.remove(i)
break
else:
print("该学生不存在!")
def change_info():
change_name = input("请输入要修改的学生的姓名:")
global info
for i in info :
if change_name == i['name']:
change_tel=int(input("请输入修改后的电话"))
change_id=int(input("请输入修改后的学号"))
change_age=int(input("请输入修改后的年龄"))
change_sex=input("请输入修改后的性别")
i['tel']=change_tel
i['id']=change_id
i['age']=change_age
i['sex']=change_sex
print("修改完毕!")
return
else:
print("查无此人!")
def search_info():
search_id=input("请输入需要查询的学号")
for i in info:
if search_id==i['id']:
print("找到该学生的信息如下:")
print("名字:{i['name']}\n性别:{i['sex']}\n年龄:{i['age']}\n手机号码:{i[tel']}")
break
else:
print("该学生不存在")
def show_info():
print("学号:\t姓名:\t性别:\t年龄:\t电话号码:")
for i in info:
print(f"{i['id']}\t{i['name']}\t{i['sex']}\t{i['age']}\t{i['tel']}")
def load_data():
global info
f=open("student.txt","r")
date=f.read()
if len(date)>0:
date=eval(date)
info=date
f.close()
def save_data():
"""保存数据"""
f = open("D:/student.txt", "a")
# 文件必须存储字符串数据
f.write(str(info))
f.close()
if __name__ == '__main__':
main()