注:

  • 为维护方便,一般一个角色创建一个程序文件
  • 项目要有主程序入口,习惯为**main.py**。 ```python

    Students.py

    “””
  1. 学员信息:姓名、性别和手机号
  2. 添加str魔法方法,方便查看学员对象信息 “””

class Students(object): def init(self, name, gender, tel): self.name = name self.gender = gender self.tel = tel

  1. def __str__(self):
  2. return f"该学员信息是:{self.name}\t{self.gender}\t{self.tel}"

test

if name == “main“: result = Students(“xiaoming”, “male”, 10086) print(result)

  1. ```python
  2. # ManagerSystem.py
  3. """
  4. 1. 存储数据的位置:文件(students.data)
  5. 2. 存储数据的形式:列表存储学员对象
  6. 3. 系统功能:
  7. 3.1 添加学员信息
  8. 3.2 删除学员信息
  9. 3.3 修改学员信息
  10. 3.4 查询学员信息
  11. 3.5 显示所有学员信息
  12. 3.6 保存学员信息
  13. 3.7 退出系统
  14. """
  15. from Students import *
  16. class ManagerSystem(object):
  17. def __init__(self):
  18. self.student_list = [] # 存储列表
  19. def run(self):
  20. # 加载原文件信息
  21. self.load_data()
  22. while True:
  23. # 显示功能菜单
  24. self.show_menu()
  25. # 捕获用户输入
  26. menu_num = int(input("请输入你要执行的功能序号:"))
  27. # 根据用户输入执行功能
  28. # 添加学员信息
  29. if menu_num == 1:
  30. self.add_student()
  31. # 删除学员信息
  32. elif menu_num == 2:
  33. self.del_student()
  34. # 修改学员信息
  35. elif menu_num == 3:
  36. self.modify_student()
  37. # 查询学员信息
  38. elif menu_num == 4:
  39. self.search_student()
  40. # 显示所有学员信息
  41. elif menu_num == 5:
  42. self.show_all()
  43. # 保存学员信息
  44. elif menu_num == 6:
  45. self.save_data()
  46. # 退出系统
  47. elif menu_num == 7:
  48. print("----系统退出!")
  49. break
  50. @staticmethod # 静态类方法显示
  51. def show_menu():
  52. print("以下是系统功能菜单:")
  53. print("1.添加学员信息")
  54. print("2.删除学员信息")
  55. print("3.修改学员信息")
  56. print("4.查询学员信息")
  57. print("5.显示所有学员信息")
  58. print("6.保存学员信息")
  59. print("7.退出系统")
  60. @staticmethod # 静态类方法显示
  61. def student_modify_info_menu():
  62. print("以下是修改的功能菜单:")
  63. print("1.修改学员姓名")
  64. print("2.修改学员性别")
  65. print("3.修改学员手机号码")
  66. def add_student(self):
  67. name = input("请输入学生名字:")
  68. gender = input("请输入学生性别:")
  69. tel = input("请输入学生电话:")
  70. # 将获取的数据用来创建对象
  71. student = Students(name, gender, tel)
  72. # 将对象追加到学生列表
  73. self.student_list.append(student)
  74. def del_student(self):
  75. name = input("请输入要删除的学生姓名:")
  76. if len(self.student_list) == 0:
  77. print("文件数据为空,功能自动退出!")
  78. return
  79. for i in self.student_list:
  80. if i.name == name:
  81. self.student_list.remove(i)
  82. break
  83. else:
  84. print("Error,该学生不存在!")
  85. def modify_student(self):
  86. name = input("请输入要修改的学生姓名:")
  87. if len(self.student_list) == 0:
  88. print("文件数据为空,功能自动退出!")
  89. return
  90. for i in self.student_list: # 遍历出来的是对象类型
  91. if i.name == name:
  92. self.student_modify_info_menu()
  93. num = int(input("请输入需要修改的功能编号:"))
  94. if num == 1:
  95. i.name = input("请输入要修改的名字:")
  96. elif num == 2:
  97. i.gender = input("请输入要修改的性别:")
  98. elif num == 3:
  99. i.tel = input("请输入要修改的tel:")
  100. break
  101. else:
  102. print("Error,该学生不存在!")
  103. def search_student(self):
  104. name = input("请输入要查询的学生姓名:")
  105. if len(self.student_list) == 0:
  106. print("文件数据为空,功能自动退出!")
  107. return
  108. for i in self.student_list:
  109. if i.name == name:
  110. print(f"姓名:{i.name},性别:{i.gender},tel:{i.tel}")
  111. break
  112. else:
  113. print("Error,该学生不存在!")
  114. def show_all(self):
  115. print("姓名\t\t性别\t\ttel")
  116. for i in self.student_list:
  117. print(f"{i.name}\t\t{i.gender}\t\t{i.tel}")
  118. def save_data(self):
  119. fo = open("students.data", "w")
  120. # 将类属性转换成字典形式
  121. new_list = [i.__dict__ for i in self.student_list]
  122. # test
  123. # print(new_list)
  124. # 以字符串的形式写入文件
  125. fo.write(str(new_list))
  126. fo.close()
  127. def load_data(self):
  128. # 打开文件
  129. try:
  130. fo = open("students.data", "r")
  131. except:
  132. fo = open("students.data", "w")
  133. else:
  134. # 读取文件
  135. data = fo.read()
  136. # test
  137. # print(data)
  138. if len(data) != 0: # 防止文件数据为空时,再次读取时,系统报错
  139. # 字符串转字典对象
  140. new_list = eval(data)
  141. # test
  142. # print(new_list)
  143. # 提取字典中的值传入学生类属性并保存在学生信息列表
  144. self.student_list = [Students(i["name"], i["gender"], i["tel"]) for i in new_list]
  145. # 关闭文件
  146. finally:
  147. fo.close()
  1. # main.py
  2. from ManagerSystem import ManagerSystem
  3. if __name__ == "__main__":
  4. student_manager = ManagerSystem()
  5. student_manager.run()