day13②
昨天写完了,但是有个bug,脑子不清醒就今早补的!嘿嘿嘿,这个算昨天的哦
python自学,笔记分享
这次几乎把以前学的全用上了,算是一个大复习,下一步我要学习进阶
今天上传一整个系统,前方核能::::
主函数:main.py
# 导入模块,要能启动系统
from managerSystem import *
if __name__ == '__main__': # 发现是当前文件才会执行下面
student_manager = StudentManager()
student_manager.run()
模块:managerStudent.py
# 存储关于管理系统相关代码
# 1\加载数据2、显示菜单3、用户输入功能序号4、根据输入反应
from student import *
class StudentManager(object):
def __init__(self):
# 存储数据所用的列表
self.student_list = []
def run(self):
# 加载学员信息
self.load_student()
while True:
# self.load_student()
self.show_menu()
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.search_student()
elif menu_num == 5: # 显示所有
self.show_menu()
elif menu_num == 6: # 保存信息
self.save_student()
elif menu_num == 7: # 退出系统
break
# 静态
@staticmethod
def show_menu():
print('1:添加')
print('2:删除')
print('3:修改')
print('4:查询')
print('5:显示所有')
print('6:保存')
print('7:退出')
def add_student(self):
name = input('输入姓名')
gender = input('输入性别')
tel = input('输入手机号')
# 用类创建对象
student = Student(name, gender, tel)
self.student_list.append(student)
# 验证是否添加成功
print(self.student_list)
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)
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.tel = input('手机号:')
print(f'修改成功,姓名:{i.name},性别{i.gender},手机号{i.tel}')
break
else:
print('查无此人')
def search_student(self):
search_name = input('输入学员姓名')
for i in self.student_list:
if i.name == search_name:
print(f'姓名:{i.name},性别{i.gender},手机号{i.tel}')
break
else:
print('柴湾粗人')
def show_student(self):
print('姓名\t性别\t手机号')
for i in self.student_list:
print(f'{i.name}\t{i.gender}\t{i.tel}')
def save_student(self):
f = open('student.data', 'w')
# 文件写入的数据不能是学员对象的内存地址,需要把学员数据转换成列表字典数据再做存储
new_list = [i.__dict__ for i in self.student_list]
print(new_list)
f.write(str(new_list))
f.close()
def load_student(self):
try:
f = open('student.data', 'r') # 尝试只读文件
except:
f = open('student.data', 'w') # 没有则新建
else:
data = f.read() # data是字符串
# 注意使用eval()时不能传入空字符串
new_list = eval(data) # 内部为字典数据,需要转换为对象再存储到学员列表
# [for i in new_list]列表推导式 Student()创建对象
self.student_list = [Student(i['name'], i['gender'], i['tel']) for i in new_list]
finally:
f.close()
拓展:dict.py
class A(object):
a = 0
def __init__(self):
self.b = 1
aa = A()
# 调用dict
print(A.__dict__) # 返回字典
print('\n')
print(aa.__dict__) # 用对象调用,打印对象相关字典
模块:student.py
# 用__str__魔法方法,方便查看学员信息
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}'
# 随写着随着检查
# aa = Student('aa', 'woman', 111)
# print(aa)