文件夹目录:
系统要求:学员信息保存在文件中
功能:
添加,删除,修改,查询,显示,保存信息以及退出功能
分析:
对象:
学员
管理系统:添加,删除,修改,查询,显示,保存信息以及退出功能
学员对象
建议学员对象进行保存和多次调用
'''
学员信息
需求:
姓名,性别,手机号
添加__str__,方便查看学员对象信息
'''
class Student(object):
def __init__(self,name,gender,phone):
'''包含学员信息'''
self.name =name
self.gender = gender
self.phone = phone
def __str__(self):
return "姓名:%s;性别:%s;联系电话:%d"%(self.name,self.gender,self.phone)
if __name__ =='__main__':
aa = Student('aa','男',123456)
print(aa)
学员管理对象
管理系统
需求:
存储数据的位置:文件(student.data)
加载数据
修改数据后保存到文件中
存储方式:列表存储学员对象
系统功能:添加、删除、修改、查询、显示、保存
from student import *
class StudentManager(object):
def __init__(self):
'''系统初始化'''
self.student_list = []
# 管理框架
# 系统功能循环使用,用户输入不同的功能序列,执行不同功能
# 步骤:
# 1.入口函数
# 加载数据,显示功能菜单,用户输入功能序号,根据序号执行不同功能
# 2.定义系统功能函数,添加删除学员等
# 入口函数
def run(self):
# 加载数据
self.student_list_load()
while True:
#显示功能函数
self.show_manu()
# 用户输入序号
menu_num = int(input('输入要执行的功能序号:'))
# 根据用户序号执行不同功能
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.query_student()
elif menu_num == 5:
#显示所有学员
self.display_student()
elif menu_num == 6:
#保存学员信息
self.perservation_student()
elif menu_num == 7:
# 退出程序
break
else:
# 用户输入非功能序号
print('输入错误请重新输入')
# 系统功能:
# 1.1显示功能菜单——打印序号和对应功能——静态方法
@staticmethod
def show_manu():
print('*' * 50)
print('''欢迎使用【学员管理系统】V1.0
1.添加学员
2.删除学员
3.修改学员信息
4.查询学员信息
5.显示全部学员信息
6.保存学员信息
7.退出系统''')
print('*' * 50)
#1.2 添加学员
def add_student(self):
# 1.用户输入学员信息
name = input('学员姓名:')
gender = input('学员性别:')
phone = int(input('学员电话:'))
# 2. 创建学员对象
student = Student(name,gender,phone)
# 3.添加到学员列表中
self.student_list.append(student)
print(student)
# 1.3 删除学员
def del_student(self):
# 用户输入要删除的姓名
del_name = input('要删除的学员姓名:')
# 查询列表是否存在并删除
for i in self.student_list:
if i.name == del_name:
self.student_list.remove(i)
print('删除成功!')
break
else:
print('查无此人!')
print(self.student_list)
# 1.4 修改学员
def modify_student(self):
# 输入信息
modify_name = input('要修改的学员姓名:')
# 查找信息重新修改,不存在提示
for i in self.student_list:
if i.name == modify_name:
i.name = input('请输入修改后的姓名:')
i.gender = input('请输入修改后的性别:')
i.phone = int(input('请输入修改后的电话:'))
print('修改信息成功',i)
break
else:
print('学员不存在!')
# 1.5 查询学员
def query_student(self):
# 用户输入
query_student = input('查询的学员信息:')
# 遍历列表,查找学员并打印
for i in self.student_list:
if i.name == query_student:
print('查找到该学员信息为,',i)
break
else:
print('学员不存在')
# 1.6 显示所有学员
def display_student(self):
print('学生\t性别\t电话')
for i in self.student_list:
print(i.name,'\t',i.gender,'\t',i.phone)
# 1.7 保存学员信息
#需求:修改后的学员数据保存到文件中,打开文件,写入数据关闭文件
def perservation_student(self):
f = open('student.data','w')
# 写入数据,注意:文件写入的数据不是内存地址而是学员数据转换成列表字典数据在存储
new_list = [i.__dict__ for i in self.student_list]
print(new_list)
# 注意2:文件内数据要转换成字符串的数据类型
#写入数据
f.write(str(new_list))
# 关闭文件
f.close()
# 1.8 加载学员信息 每次进入系统修改文件信息
# 先用只读打开文件信息,如果不存在则用W形式打开
# 读取数据,转换类型为列表并转换列表字典形式
#存储学员数据到学员列表
#关闭文件
def student_list_load(self):
try:
f = open('student.data','r')
except:
f = open('student.data','w')
else:
# 读数据
data = f.read()
#转换数据类型,变为列表形式 eval转换数据类型
new_list = eval(data)
self.student_list = [Student(i['name'],i['gender'],i['phone']) for i in new_list]
finally:
f.close()
入口函数
# 1.入口函数
# 加载数据,显示功能菜单,用户输入功能序号,根据序号执行不同功能
# 2.定义系统功能函数,添加删除学员等
# 入口函数
def run(self):
# 加载数据
self.student_list_load()
while True:
#显示功能函数
self.show_manu()
# 用户输入序号
menu_num = int(input('输入要执行的功能序号:'))
# 根据用户序号执行不同功能
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.query_student()
elif menu_num == 5:
#显示所有学员
self.display_student()
elif menu_num == 6:
#保存学员信息
self.perservation_student()
elif menu_num == 7:
# 退出程序
break
else:
# 用户输入非功能序号
print('输入错误请重新输入')
系统功能:
菜单面板
# 1.1显示功能菜单——打印序号和对应功能——静态方法
@staticmethod
def show_manu():
print('*' * 50)
print('''欢迎使用【学员管理系统】V1.0
1.添加学员
2.删除学员
3.修改学员信息
4.查询学员信息
5.显示全部学员信息
6.保存学员信息
7.退出系统''')
print('*' * 50)
添加
def add_student(self):
# 1.用户输入学员信息
name = input('学员姓名:')
gender = input('学员性别:')
phone = int(input('学员电话:'))
# 2. 创建学员对象
student = Student(name,gender,phone)
# 3.添加到学员列表中
self.student_list.append(student)
print(student)
删除
def del_student(self):
# 用户输入要删除的姓名
del_name = input('要删除的学员姓名:')
# 查询列表是否存在并删除
for i in self.student_list:
if i.name == del_name:
self.student_list.remove(i)
print('删除成功!')
break
else:
print('查无此人!')
print(self.student_list)
修改
def modify_student(self):
# 输入信息
modify_name = input('要修改的学员姓名:')
# 查找信息重新修改,不存在提示
for i in self.student_list:
if i.name == modify_name:
i.name = input('请输入修改后的姓名:')
i.gender = input('请输入修改后的性别:')
i.phone = int(input('请输入修改后的电话:'))
print('修改信息成功',i)
break
else:
print('学员不存在!')
查询学员
def query_student(self):
# 用户输入
query_student = input('查询的学员信息:')
# 遍历列表,查找学员并打印
for i in self.student_list:
if i.name == query_student:
print('查找到该学员信息为,',i)
break
else:
print('学员不存在')
显示所有学员
def display_student(self):
print('学生\t性别\t电话')
for i in self.student_list:
print(i.name,'\t',i.gender,'\t',i.phone)
保存学员信息
#需求:修改后的学员数据保存到文件中,打开文件,写入数据关闭文件
def perservation_student(self):
f = open('student.data','w')
# 写入数据,注意:文件写入的数据不是内存地址而是学员数据转换成列表字典数据在存储
new_list = [i.__dict__ for i in self.student_list]
print(new_list)
# 注意2:文件内数据要转换成字符串的数据类型
#写入数据
f.write(str(new_list))
# 关闭文件
f.close()
载入学员信息
# 1.8 加载学员信息 每次进入系统修改文件信息
# 先用只读打开文件信息,如果不存在则用W形式打开
# 读取数据,转换类型为列表并转换列表字典形式
#存储学员数据到学员列表
#关闭文件
def student_list_load(self):
try:
f = open('student.data','r')
except:
f = open('student.data','w')
else:
# 读数据
data = f.read()
#转换数据类型,变为列表形式 eval转换数据类型
new_list = eval(data)
self.student_list = [Student(i['name'],i['gender'],i['phone']) for i in new_list]
finally:
f.close()
主函数
# 导入模块
from management import *
# 启动管理系统
if __name__ == '__main__':
student_manager = StudentManager()
student_manager.run()