‪Outlier 2023-04-06 14:04 采纳率: 72.2%
浏览 46
已结题

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

  • 写回答

4条回答 默认 最新

  • 迷茫中的程序媛 2023-04-06 15:35
    关注

    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()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月21日
  • 已采纳回答 4月13日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题