python编写学生管理系统,如何写入数据?

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()

img

student.txt文件不存在,可以把模式改为w+。另外,你这个代码还有问题,会陷入死循环,没办法输入数据,有些功能不够完善。可以参考下面代码修改试试:

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
    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 = input("请输入修改后的电话[直接回车则不修改]:")
            if len(change_tel) > 0:
                i['tel'] = int(change_tel)
            change_id = input("请输入修改后的学号[直接回车则不修改]:")
            if len(change_id) > 0:
                i['id'] = change_id
            change_age = input("请输入修改后的年龄[直接回车则不修改]:")
            if len(change_age) > 0:
                i['age'] = int(change_age)
            change_sex = input("请输入修改后的性别[直接回车则不修改]:")
            if len(change_sex) > 0:
                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(f"名字:{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", "w+")
    date = f.read()
    if len(date) > 0:
        date = eval(date)
        info = date
    f.close()


def save_data():
    """保存数据"""
    f = open("student.txt", "a")
    # 文件必须存储字符串数据
    f.write(str(info))
    f.close()


if __name__ == '__main__':
    main()
student.txt是这个文件名么?是在d盘根目录么

用 d:\\student.txt 看看呢

你这个没有位置

img

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^