学生通讯管理系统(文件版)代码正确,但是运行下去一直报错,如何解决?

问题遇到的现象和发生背景

代码好像是正确的,但是运行下去一直报错。

问题相关代码,请勿粘贴截图

学生通讯录管理系统主界面

def showMenu():
print("-" * 30)
print(" 学生通讯录管理系统 vl.0")
print("1.添加学生")
print("2.删除学生")
print("3.修改学生")
print("4.查询学生")
print("5.获取所有学生通讯信息")
print("6.保存信息")
print("7.退出系统")
print("-" * 30)
showMenu()
'''

实现不间断的显示

while True:
showMenu()
'''

选择输入功能

def getSelcet():
selectNum = int(input("请输入选择的序号:"))
return selectNum
num = getSelcet()

定义保存数据的函数

def saveToFile():
f = open("backup. data", "w", encoding="utf-8")
f. write(str(dict))
f. close()

定义从文件中恢复数据的函数,从文件中读取数据

def recoverData():
global dict
f = open("backup. data")
content = f. read()
dict = eval(content)
f. close()

用户选择序号1,实现学生通信信息的添加

dict = {
"张三": {"性别": "男", "电话": "13787007426"},
"李丽": {"性别": "男", "电话": "13787008916"}
}
def addstuInfo():
name = input("你当前是做添加操作,请输入要添加的名片信息:姓名")
sex = input("请输入要添加的名片信息:性别")
telphone = input("请输入要添加的名片信息:手机号码")
dict[name] = {"性别": sex, "电话": telphone}
print(dict)
if num == 1:
addstuInfo()

用户选择序号2,实现学生通信信息的删除

def delstuInof():
name = input("你当前是做删除操作,接下来请输入要删除的姓名:")
del dict[name]
print(dict)
if num == 2:
delstuInof()

用户选择序号3,实现学生通信信息的修改

def modifystuInfo():
name = input("你当前是做修改操作,接下来请输入要修改人的姓名:")
sex = input("请输入修改后的信息:性别")
telphone = input("请输入修改后的信息:手机号码")
dict[name] = {"性别": sex, "电话": telphone}
print(dict)
if num == 3:
modifystuInfo()

用户选择序号4,实现查询学生的通讯信息

def seckstuInfo():
name = input("你当前是做修改操作,接下来请输入要查询人的姓名:")
print(dict[name])
if num == 4:
seckstuInfo()

用户选择序号5,实现显示所有学生的通讯信息

def showstuInfo():
print("当前的名片有:")
for i in dict. items():
print(i)
if num == 5:
showstuInfo()

用户选择序号6,保存信息

def saveToFile():
f = open("backup. data", "w", encoding="UTF-8")
f. write(str(dict))
f. close()

用户选择序号7,退出学生通讯管理系统

def exitSystem():
print("谢谢使用本系统!")
if num == 7:
exitSystem()

main函数

def main():
recoverData()
while True:
showMenu()
num = getSelcet()
if num == 1:
addstuInfo()
elif num == 2:
delstuInof()
elif num == 3:
modifystuInfo()
elif num == 4:
seckstuInfo()
elif num == 5:
showstuInfo()
elif num == 6:
saveToFile()
elif num == 7:
exitSystem()
break
else:
print("你的输入有误,请重新输入")
main()

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

运行程序,选择添加一个学生信息并保存,退出系统后,打卡“backup.data"文件,发现新增的学生信息已经成功保存到备份文件中。

代码里面backup.data有空格,建议换成绝对路径,或者把文件和代码放到同一文件目录