这个文件中定义了StudentManager类
这个类中定义了一个存储所有学生的字典:students_dict,students_dict字典是用来存储所有的学生对象的
显示菜单的方法以及对学生进行增删改查的方法
把字典中的学生数据学到文件中的方法
从文件中读数据,存储字典中的方法
代码如下:
from student import Student
class StudentManager:
"""
定义一个学生管理类,在这个类中定义显示菜单和对学生进行增删改查的方法
"""
def __init__(self):
self.students_dict = {}
def startup(self):
"""
学生管理系统的入口,系统一启动的时候就应该调用这个方法
"""
self.load_from_file("data.txt")
while True:
self.show_menu()
menu_code = int(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:
print("退出系统")
self.save_to_file("data.txt")
break
else:
print("录入的菜单编号有误,请重新录入!!!\n")
@staticmethod
def show_menu():
"""
显示菜单:
******************************
欢迎使用【学生管理系统】 V1.0
1.添加学生
2.显示全部
3.查询学生
4.修改学生
5.删除学生
0.退出系统
******************************
"""
print("*" * 30)
print("欢迎使用【学生管理系统】 V1.0")
print("1.添加学生")
print("2.显示全部")
print("3.查询学生")
print("4.修改学生")
print("5.删除学生")
print()
print("0.退出系统")
print("*" * 30)
def add_student(self):
"""
添加一个学生
"""
id = input("请录入学号:")
name = input("请录入姓名:")
score = input("请录入考试分数:")
if id in self.students_dict.keys():
print("学生已存在!!!")
return
else:
student = Student(id, name, score)
self.students_dict[id] = student
print("添加学生" + id + "成功!\n")
print(self.students_dict)
def show_all(self):
if len(self.students_dict) <= 0:
print("系统中还没有学生信息!!!\n")
else:
print("学号".ljust(14) + "姓名".ljust(15) + "分数".ljust(15))
print("-" * 45)
for student in self.students_dict.values():
id = student.id
name = student.name
score = student.score
print(id.ljust(15) + name.ljust(15) + score.ljust(15))
print("-" * 45)
def find_student(self):
"""
查询一个学生
"""
input_id = input("请录入一个学号:")
if input_id not in self.students_dict.keys():
print("在系统中没有找到此学生!!!\n")
return
else:
student = self.students_dict[input_id]
print("学号".ljust(14) + "姓名".ljust(15) + "分数".ljust(15))
print("-" * 45)
id = student.id
name = student.name
score = student.score
print(id.ljust(15) + name.ljust(15) + score.ljust(15))
print("-" * 45)
def update_student(self):
"""
修改一个学生
"""
input_id = input("请录入一个学号:")
if input_id not in self.students_dict.keys():
print("在系统中没有找到此学生!!!\n")
return
else:
student = self.students_dict[input_id]
new_name = input('请输入新名字:')
new_score = input('请输入新分数:')
student.name = new_name
student.score = new_score
print("修改%s成功" % input_id)
def delete_student(self):
"""
删除一个学生
"""
input_id = input("请录入一个学号:")
if input_id not in self.students_dict.keys():
print("在系统中没有找到此学生!!!\n")
return
else:
del self.students_dict[input_id]
print("删除成功!!!\n")
def save_to_file(self, file):
"""
把列表中的数据写到指定的文件中
:param file: 文件
"""
student_list = self.students_dict.values()
f = open(file, "w", encoding="UTF-8")
for student in student_list:
f.write(str(student)+"\n")
f.close()
def load_from_file(self, file):
"""
从指定的文件中读取,并返回数据
:param file:
:return: 返回从文件中读出来的数据
"""
f = open(file, "r", encoding="UTF-8")
for line in f.readlines():
student_info = line[:-1].split(",")
id = student_info[0]
name = student_info[1]
score = student_info[2]
student = Student(id, name, score)
self.students_dict[id] = student
f.close()
class Student:
"""
定义一个学生类,用来封装学生的4个信息
"""
def __init__(self, id, name, score):
"""
给对象添加3个属性
:param id: 学号
:param name: 姓名
:param score: 分数
"""
self.id = id
self.name = name
self.score = score
def __str__(self):
return "%s,%s,%s" % (self.id, self.name, self.score)
from student_manager import *
if __name__ == "__main__":
sm = StudentManager()
sm.startup()