请问这种情况到底是哪里出了问题QAQ,孩子真的不会解了

 

 

 

数组越界,数组下标从0开始的,你的infos要获取第三个元素的话需要用infos[2]

顺便说下,程序路径之类的最好不要有中文,虽然现在很多东西都可以支持,但是你不知道哪天哪个模块就抽筋了

class StudentManager:
    def __init__(self):
        self.student_dict = {}

    def start(self):
        """
        启动学生管理系统
        """
        self.file_to_dict()

        while True:
        
            self.show_menu()
          
            menu_code = input("请录入菜单编号:")
          
            if menu_code == "1":
               
                self.add_student()
            elif menu_code == "2":
                
                self.show_all()
            elif menu_code == "3":
            
                self.find_student()
            elif menu_code == "4":

                self.update_student()
            elif menu_code == "5":
       
                self.delete_student()
            elif menu_code == "0":
               
                self.dict_to_file()
                break
            else:
                print("录入的菜单编号有误,请重新录入!!!")

    def show_menu(self):
        """
        显示菜单
        """
        print("*" * 40)
        print("欢迎使用【学生管理系统】 V1.0")
        print("1.添加学生")
        print("2.显示全部")
        print("3.查询学生")
        print("4.修改学生")
        print("5.删除学生")
        print()
        print("0.退出系统")
        print("*" * 40)

    def add_student(self):
        """
        添加学生
        """
        while True:
            id = input("请输入学号:")
            if id in self.student_dict:
                print("学号已经被占用,请使用一个不同的学号!!!")
                continue
            else:
                break
        name = input("请输入姓名:")
        age = input("请输入年龄:")
        sex = input("请输入性别:")
        Class = input("请输入班级:")
        s = Student(id, name, age,sex,Class)
        self.student_dict[id] = s
        print(f"添加{id}成功!!!")

    def show_all(self):
        """
         #显示全部学生信息
        """
        if len(self.student_dict) > 0:
            print("学号".ljust(15) + "姓名".ljust(15) + "年龄".ljust(15) + "性别".ljust(15) +"班级".ljust(15))
            print("-" * 75)
            student_list = self.student_dict.values()
            for student in student_list:
                id = student.id
                name = student.name
                age = student.age
                sex = student.age
                Class = student.Class
                print(id.ljust(15) + name.ljust(15) + age.ljust(15) + sex.ljust(15) + Class.ljust(15))
            print("-" * 75)
        else:
            print("系统中还没有学生信息!!!")

    def find_student(self):
        """
        根据学号查询一个学生
        """
        id = input("请输入学号:")
        if id not in self.student_dict:
            print(f"系统中没有学号为{id}的学生!!!")
        else:
            print("学号".ljust(15) + "姓名".ljust(15) + "年龄".ljust(15) +"性别".ljust(15) + "班级".ljust(15))
            print("-" * 75)
            s = self.student_dict.get(id)
            id = s.id
            name = s.name
            age = s.age
            sex = s.sex
            Class = s.Class
            print(id.ljust(15) + name.ljust(15) + age.ljust(15) + sex,ljust(15) + Class.ljust(15))
            print("-" * 75)

    def update_student(self):
        """
        根据学号修改一个学生信息
        """
        id = input("请录入要修改学生的学号:")
        if id not in self.student_dict:
            print(f"系统中没有学号为{id}的学生")
        else:
            name = input("请录入新的姓名:")
            age = input("请录入新的年龄:")
            sex = input("请输入新的性别:")
            Class = input("请输入新的班级:")
            s = self.student_dict[id]
            s.name = name
            s.age = age
            s.sex = sex
            s.Class = Class
            print("修改学生信息成功!!!")

    def delete_student(self):
        """
        根据学号删除一个学生信息
        """
        id = input("请录入要修改学生的学号:")
        if id not in self.student_dict:
            print(f"系统中没有学号为{id}的学生")
        else:
            self.student_dict.pop(id)
            print(f"删除学生{id}成功!!!")

    def dict_to_file(self):
        """
        把字典中的学生的数据覆盖写到文件中
        """
        student_list = self.student_dict.values()
        f = open("student.txt", "w", encoding="UTF-8")
        for student in student_list:
            id = student.id
            name = student.name
            age = student.age
            sex = student.sex
            Class = student.Class
            line = id + "," + name + "," + age +"," +sex + "," +Class
            f.write(line + "\n")
        f.close()

    def file_to_dict(self):
        """
        读取文件中的数据,一行一行的读取.
        从读到的一行数据中解析出学号,姓名,年龄,性别,班级 创建一个学生对象.
        把对象作为value,把学号作为key,添加到字典中
        """
        f = open("student.txt", "r", encoding="UTF-8")
        while True:
            line = f.readline()
            if line != "":
                line = line[0:len(line) - 1]
                infos = line.split(",")
                id = infos[0]
                name = infos[1]
                age = infos[2]
                sex= infos[3]
                Class = infos[4]
                s = Student(id, name, age, sex, Class)
                self.student_dict[id] = s
            else:
                break