importosfrom student_system importstudent_modelclassStudentSystem(object):def __init__(self):#定义类属性的学生列表
self.student_list = [] #list()
#显示功能菜单
@staticmethoddefshow_menu():print("----学生管理系统V1.0----")print("1. 添加学生")print("2. 修改学生")print("3. 删除学生")print("4. 查询学生")print("5. 显示所有学生")print("6. 退出")#添加学生的功能方法
defadd_student(self):
name= input("请输入您的姓名:")
age= input("请输入您的年龄:")
sex= input("请输入您的性别:")
stu=student_model.Student(name, age, sex)
self.student_list.append(stu)print("添加成功")#显示所有学生的功能方法
defshow_all_student(self):for index, stu inenumerate(self.student_list):#学号 = 下标 + 1
num = index + 1
print("学号: %d 姓名: %s 年龄: %s 性别: %s" %(num,
stu.name,
stu.age,
stu.sex))#修改学生信息的功能方法
defmodify_student(self):for index, stu inenumerate(self.student_list):#学号 = 下标 + 1
num = index + 1
print("学号: %d 姓名: %s 年龄: %s 性别: %s" %(num,
stu.name,
stu.age,
stu.sex))
student_no= int(input("请输入您要修改学生信息的学号:"))#根据学号计算对应的下标
index = student_no - 1
#判断index是否是一个合法的下标
if 0 <= index
stu =self.student_list[index]#接收用户输入的最新数据
new_name = input("请输入您修改后的姓名:")
new_age= input("请输入您修改后的年龄:")
new_sex= input("请输入您修改后的性别:")#修改指定字典里面的信息
stu.name =new_name
stu.age=new_age
stu.sex=new_sexprint("修改成功!")else:print("请输入合法学号!")#删除学生信息的功能方法
defremove_student(self):for index, stu inenumerate(self.student_list):#学号 = 下标 + 1
num = index + 1
print("学号: %d 姓名: %s 年龄: %s 性别: %s" %(num,
stu.name,
stu.age,
stu.sex))
student_no= int(input("请输入要删除学生的学号:"))#根据学号计算对应下标
index = student_no - 1
#判断index是否是一个合法的下标
if 0 <= index
delself.student_list[index]print("删除成功!")else:print("请输入合法的学号!")#查询学生的功能方法
defquery_student(self):
name= input("请输入您要查询学生的姓名:")#遍历学生列表,获取每一个学生字典信息
for index, stu inenumerate(self.student_list):#根据学生字典取出姓名,判断是否和用户输入的姓名一致
if stu.name ==name:#生成学号
num = index + 1
print("学号: %d 姓名: %s 年龄: %s 性别: %s" %(num,
stu.name,
stu.age,
stu.sex))break
else:print("对不起,您查询的学生信息不存在!")#保存学生对象列表数据到文件
defsave_data(self):
with open("student_list.data", "w", encoding="utf-8") as file:
student_dic_list= [stu.__dict__ for stu inself.student_list]#print(student_dic_list)
file.write(str(student_dic_list))#加载缓存文件中的历史数据
defload_data(self):#判断文件是否存在
if os.path.exists("student_list.data"):
with open("student_list.data", "r", encoding="utf-8") as file:
stu_dict_list=file.read()
new_stu_list= [Student(**stu_dict) for stu_dict ineval(stu_dict_list)]
self.student_list.extend(new_stu_list)#程序启动的入口方法
defstart(self):#加载历史数据,只加载一次即可
self.load_data()whileTrue:#显示功能菜单
self.show_menu()#2. 接收用户输入的功能选项
menu_option = input("请输入您需要的功能选项:")#3. 判断用户输入的功能选项
if menu_option == "1":#print("执行添加学生的功能")
self.add_student()elif menu_option == "2":#print("执行修改学生的功能")
self.modify_student()elif menu_option == "3":#print("执行删除学生的功能")
self.remove_student()elif menu_option == "4":#print("执行查询学生的功能")
self.query_student()elif menu_option == "5":#print("执行显示所有学生的功能")
self.show_all_student()elif menu_option == "6":print("退出系统")#退出程序之前,保存数据到文件
self.save_data()break