12.1.需求分析
12.1.1.使用面向对象编程思想完成学员的管理系统开发
- 系统要求:学员数据存储在文件中
- 系统功能:添加学员、删除学员、修改学员信息、查询学员信息、显示所有学员信息、保存学员数据、退出系统等功能
12.2.角色分析
12.2.1.在面向对象编程思想中,必须找到具体实现操作的实体
12.2.2.分析
- 通过系统实现添加学员操作
- 通过系统实现学员操作
- .......
- 实体:学员
12.3.要求
12.3.1..为了方便代码的维护,一个角色一个程序文件
12.3.2.项目必须要有主程序入口,一般习惯为main.py.
12.4.创建项目
12.4.1.创建一个student项目名
12.4.2.创建学生信息文件:student.py
12.4.3.创建信息管理系统文件:studentManger
12.5.student.py学员信息存储代码分析
12.5.1.需求:学员(主题)->属性(姓名、年龄、电话...)
12.5.2.实现:创建Student类,初始化、定义_ _str _ _方法来实现输出学员信息
#定义一个Student学员类
class Student():
#定义初始化方法
def __init__(self,name,age,mobile):
self.name=name
self.age=age
self.mobile=mobile
def __str__(self):
return f'{self.name},{self.age},{self.mobile}'
12.6.studentManger.py信息管理代码分析
12.6.1.需求:存储数据文件名:student.data
- 加载文件数据
- 修改数据后保存到文件
12.6.2.存储数据的形式:列表存储学员对象
12.6.3.系统子功能
- 添加学员信息
- 删除学员信息
- 修改学员信息
- 查询学员信息
- 显示所有学员信息
- 保存学员信息
- 退出系统
12.6.4.原则:先搭建程序框架,具体功能回头在填充
class StudentManger(object):
#定义一个初始化方法
def __init__(self): #初始化一个student_list属性,将所有学员信息保存起来
self.student_list=[]
def load_student(self): #定义load_student方法
pass
#定义一个静态方法
@staticmethod
def show_help():
print('-'*40)
print('信息管理系统')
print('1.添加学员信息')
print('2.删除学员信息')
print('3.修改学员信息')
print('4.查询学员信息')
print('5.显示所有学员信息')
print('6.保存学员信息')
print('7.退出系统')
def add_student(self):
pass
def del_student(self):
pass
def mod_student(self):
pass
def show_student(self):
pass
def show_all(self):
pass
def save_student(self):
pass
#定义一个run()方法,专门实现对系统个功能的调用
def run(self):
#1.调用一个学员加载方法,用于加载文件中所有学员信息,加载完成后,将所有学员信息保存到student_list中
self.load_student()
#2.显示帮助信息,提示用户输入要实现的功能编号
self.show_help()
user_num=int(input('请输入要操作功能的编号:'))
if user_num==1:
self.add_student()
elif user_num==2:
self.del_student()
elif user_num==3:
self.mod_student()
elif user_num==4:
self.show_student()
elif user_num==5:
self.show_all()
elif user_num==6:
self.save_student()
elif user_num==7:
print("感谢你使用信息管理系统,欢迎下次使用")
else:
print('信息输入错误,请重新输入')
12.6.5.编写add_student()学员添加方法
- 需求:将用户输入的学员姓名、年龄、手机号信息添加到系统中
def add_student(self):
name=input('请输入学员信息:')
age=int(input('请输入学员年龄:'))
moblie=int(input('请输入学员电话号码:'))
student=Student(name,age,moblie) #创建实例对象,并初始化
self.student_list.append(student) #调用student_list属性追加student对象信息
print('学员信息已添加成功')
12.6.6.编写del_student()学员删除方法
- 需求输入学员姓名,若存在则删除该学员信息
def del_student(self):
name=input("请输入需要删除学员的姓名:")
#对student_list列表进行遍历
for i in self.student_list:
if i.name==name:
self.student_list.remove(i) #若找到了则删除
print(f'学员{name}信息成功删除')
break
else:
print('要删除的学员不存在...')
12.6.7.编写mod_student()方法实现修改
def mod_student(self):
name=input('请输入要修改的学员姓名:')
#对student_list属性进行遍历,判断要修改的学员是否存在
for i in self.student_list:
if i.name==name:
i.name=input('请输入修改后的学员姓名:')
i.age=input('请输入修改后的学员年龄:')
i.mobile=input('请输入修改后的学员电话:')
print(f'学员信息修改成功,修改后信息如下=>学员姓名:{i.name},学员年龄:{i.age},学员电话:{i.mobile}')
break
else:
print('你要修改的学员信息不存在')
12.6.8.编写show_student()方法:
def show_student(self):
name=input('请输入要查询的学员姓名:')
for i in self.student_list:
if i.name==name:
print(i)
break
else:
print("你要查找的学员信息不存在")
12.6.9.编写show_all()方法
def show_all(self):
for i in self.student_list:
print(i) #遍历列表直接输出
12.6.10.编写save_student()保存信息的方法
- 需求:将所有学员信息保存到文件中(student.data)
- b步骤:打开文件->读写文件->关闭文件
def save_student(self):
#将self.studet_list转为字符串保存到student.data文件中
f=open('student.data','w',encoding='utf-8')
#将列表转为字典
new_list=[i.__dict__ for i in self.student_list]
#读写文件
f.write(str(new_list))
f.close()
print('学员信息保存成功')
12.6.11.编写load_student()方法实现学员加载功能
- 需求:每次进入系统后,修改文件内部数据
- 步骤:读取文件、读取数据、转换数据
def load_student(self): #定义load_student方法
try:
f=open('student.data','r',encoding='utf-8')
except:
f=open('student.data','w',encoding='utf-8')
else:
content=f.read()
data=eval(content) #将字符串转为原始数据类型[{},{},{}]
self.student_list=[Student(i['name'],i['age'],i['mobile']) for i in data]
finally:
f.close()
12.7.编写main.py主入口文件
- 软件从当前文件开始执行,从入口程序
from studentManager import StudentManager
# 定义入口代码
if __name__=='__main__':
student_Manager=StudentManager()
student_Manager.run()
# 整个程序需要在main()中开始执行