from student import *
class StudentManager:
def __init__(self):
self.student_list = []
def run(self):
# 加载学生信息
self.load_student()
while True:
# 打印菜单
self.show_menu()
try:
choice = int(input("请选择:"))
except ValueError:
print("输入无效,请输入整数类型")
else:
if choice in [0, 1, 2, 3, 4, 5, 6, 7]:
if choice == 0:
answer = input("您确定要退出系统吗(输入y结束):")
if answer == "y":
print("谢谢使用!!!")
break
else:
continue
elif choice == 1:
self.add_student()
elif choice == 2:
self.del_student()
elif choice == 3:
self.modify_student()
elif choice == 4:
self.search_student()
elif choice == 5:
self.sort_student()
elif choice == 6:
self.total_student()
time.sleep(0.2)
elif choice == 7:
self.show_student()
input("请输入任意键继续...")
else:
print("输入错误,请重新输入")
def add_student(self):
global id,name,gender,english,python
while True:
# 输入学号
while True:
id = input("请输入ID:")
if not id:
print("输入错误,请重新输入")
continue
# 不能有相同学号的学生
for i in self.student_list:
if i.id == id:
print("学号与其他学生重复,请重新输入")
break
else:
break
# 输入姓名
while True:
name = input("请输入姓名:")
if not name:
print("输入错误,请重新输入")
continue
else:
break
# 输入性别
while True:
gender = input("请输入性别:")
if not gender:
print("输入无效,请重新输入")
continue
else:
break
# 输入英语成绩
while True:
try:
english = int(input("请输入英语成绩:"))
if english > 100:
print("请输入100以下的英语成绩")
continue
else:
break
except ValueError:
print("输入错误,请输入整数类型")
continue
# 输入python成绩
while True:
try:
python = int(input("请输入python成绩:"))
if python > 100:
print("请输入100以下的python成绩")
continue
else:
break
except ValueError:
print("输入错误,请输入整数类型")
continue
# 创建学生对象
student = Student(id, name, gender, english, python)
# 将学生保存到列表中
self.student_list.append(student)
# 保存到文件
self.save_student()
print("保存成功")
answer = input("是否继续输入(输入y继续):")
if answer == 'y':
continue
else:
break
def del_student(self):
# 用于存储多个学生的列表
student_list = []
# 与用户输入的姓名相同的学生个数
count = 0
# 用户选择删除的第choise个学生
choise = 0
# 没有任何学生的处理方法
if len(self.student_list) == 0:
print("无任何学生信息")
else:
# 用户输入需要删除学生的姓名
while True:
del_name = input("请输入要删除的学生姓名:")
if del_name:
# 寻找是否有该学生
for i in self.student_list:
if i.name == del_name:
student_list.append(i)
count += 1
# 找不到该学生
if count == 0:
print("查无此人!")
break
# 与用户输入的姓名相同的学生大于等于一位时
elif count > 1:
print("学号\t\t姓名\t\t性别\t\t英语成绩\t\tpython成绩\t\t总成绩")
for i in student_list:
print(f"{i.id}\t\t{i.name}\t\t{i.gender}\t\t{i.english}\t\t{i.python}\t\t{i.total}")
while True:
try:
choise = int(input("请选择需要删除的学生为第几位学生:"))
except ValueError:
print("输入错误,请输入整数类型")
continue
else:
if count >= choise > 0:
break
else:
print("输入错误,请重新输入")
continue
elif count == 1:
pass
# 删除该学生
self.student_list.remove(student_list[choise - 1])
# 保存到文件
self.save_student()
print("删除成功")
break
else:
print("输入错误,请重新输入")
continue
def modify_student(self):
global name,id,gender,english,python
# 用于存储多个学生的列表
student_list = []
# 与用户输入的姓名相同的学生个数
count = 0
# 用户选择删除的第choise个学生
choise = 0
# 没有任何学生的处理方法
if len(self.student_list) == 0:
print("无任何学生信息")
else:
# 用户输入需要修改学生的姓名
while True:
modify_name = input("请输入要修改的学生的姓名:")
if modify_name:
# 寻找是否有该学生
for i in self.student_list:
if i.name == modify_name:
student_list.append(i)
count += 1
# 找不到该学生
if count == 0:
print("查无此人!")
break
# 与用户输入的姓名相同的学生大于等于一位时
elif count > 1:
print("学号\t\t姓名\t\t性别\t\t英语成绩\t\tpython成绩\t\t总成绩")
for i in student_list:
print(f"{i.id}\t\t{i.name}\t\t{i.gender}\t\t{i.english}\t\t{i.python}\t\t{i.total}")
while True:
try:
choise = int(input("请选择需要修改�