项目实战:学员管理系统
main.py
#1.导入管理系统模块
from ManageSystem import *
#2.启动管理系统
#保证是当前文件运行才启动管理系统: if --创建对象并调用run方法
if __name__ == '__main__':
student_manager = StudentManager()
student_manager.run()
student.py
class Student(object):
def __init__(self, name, gender, tel):
self.name = name
self.gender = gender
self.tel = tel
def __str__(self):
return f'{self.name}, {self.gender}, {self.tel}'
ManageSystem.py
from student import *
class StudentManager(object):
def __init__(self):
#存储学员数据所用的列表
self.student_list = []
#一.程序入口函数
def run(self):
#1.加载文件里面的学员数据
self.load_student()
while True:
#2.显示功能菜单
self.show_menu()
#3.用户输入目标功能序号
menu_num = int(input('请输入您需要的功能序号:'))
#4.根据用户输入的序号执行不同的功能 -- 如果用户输入1:执行添加
if menu_num == 1:
#添加学员
self.add_student()
elif menu_num == 2:
#删除学员
self.del_student()
elif menu_num == 3:
#修改学员
self.modify_student()
elif menu_num == 4:
#查询学员信息
self.search_student()
elif menu_num == 5:
#显示所有学员信息
self.show_student()
elif menu_num == 6:
#保存学员信息
self.save_student()
elif menu_num == 7:
#退出系统 -- 退出循环
break
#二.系统功能函数
#2.1显示功能菜单 -- 打印序号的功能对应信息 -- 静态
@staticmethod
def show_menu():
print('请选择如下功能:')
print('1.添加学员')
print('2.删除学员')
print('3.修改学员信息')
print('4.查询学员信息')
print('5.显示所有学员信息')
print('6.保存学员信息')
print('7.退出系统')
#2.2添加学员
def add_student(self):
#1.用户输入姓名、性别、手机号
name = input('请输入您的姓名:')
gender = input('请输入您的性别:')
tel = input('请输入您的手机号:')
#2.创建学员对象
student = Student(name, gender, tel)
#3.将该对象添加到学员列表
self.student_list.append(student)
print(self.student_list)
print(student)
#2.3删除学员
def del_student(self):
#1.用户输入目标学员姓名
del_name = input('请输入要删除的学员姓名:')
#2.如果用户输入的目标学员存在则删除,否则提示学员不存在
for i in self.student_list:
if i.name == del_name:
self.student_list.remove(i)
break
else:
print('查无此人!')
print(self.student_list)
#2.4修改学员信息
def modify_student(self):
#1.用户输入学员姓名
modify_name = input('请输入要修改的学员姓名:')
#2.如果用户输入的目标学员存在则修改姓名、性别、手机号等数据,否则提示学员不存在
for i in self.student_list:
if i.name == modify_name:
i.name = input('请输入您的姓名:')
i.gender = input('请输入您的性别:')
i.tel = input('请输入您的手机号:')
print(f'修改该学员信息成功,姓名:{i.name}, 性别:{i.gender}, 电话:{i.tel}')
break
else:
print('查无此人!')
#2.5查询学员信息
def search_student(self):
#1.用户输入学员姓名
search_name = input('请输入要查询的学员姓名:')
#2.如果用户输入的目标学员存在,则打印学员信息,否则提示学员不存在
for i in self.student_list:
if i.name == search_name:
print(f'姓名{i.name}, 性别{i.gender}, 手机号{i.tel}')
break
else:
print('查无此人!')
#2.6显示所有学员信息
def show_student(self):
#1.打印表头
print('姓名\t性别\t手机号')
#2.打印学员数据
for i in self.student_list:
print(f'{i.name}\t{i.gender}\t{i.tel}')
#2.7保存学员信息
def save_student(self):
#1.打开文件
f = open('student.data', 'w')
#2.文件写入数据
#2.1[学员对象] 转换成 [字典]
new_list = [i.__dict__ for i in self.student_list]
#2.2文件写入 字符串数据
f.write(str(new_list))
#3.关闭文件
f.close()
#2.8加载学员信息
def load_student(self):
#1.打开文件:尝试r打开,如果有异常用w打开
try:
f = open('student.data', 'r')
except:
f = open('student.data', 'w')
else:
#2.读取数据:文件读取出的数据是字符串,还原列表类型[{}]转换[学员对象]
data = f.read()
new_list = eval(data)
self.student_list = [Student(i['name'], i['gender'], i['tel']) for i in new_list]
finally:
#3.关闭文件
f.close()