当前位置:   article > 正文

利用python实现简单的学员信息管理系统——2.0_python 个人信息管理系统

python 个人信息管理系统

目录

1.main.py 

2.student.py和user.py

3.managerSystem.py


这次的相比于上次改动不是很大,添加了登录、注册功能,还有在添加的同时直接将数据写入文件中;在对密码进行判断时,使用了正则表达式进行判断。

这次所分的模块:

1.main.py

这次运行main方法时,首先进入登录,注册界面

  1. # 导入管理系统模块
  2. from managerSystem import *
  3. # if条件判断,保证当前程序运行才运行管理系统
  4. if __name__ == "__main__":
  5. # 创建实例对象
  6. manager_user = StudentManager()
  7. manager_user.register()

2.student.py和user.py

这两个模块就是抽象出来两个类,student和user,并定义一些对应属性

  1. # 学员类
  2. class Student():
  3. # 初始化魔法方法
  4. def __init__(self, name, gender, tel):
  5. self.name = name
  6. self.gender = gender
  7. self.tel = tel
  8. # “魔法”方法,当使用print输出对象的时候只要自己定义了__str__(self)方法,
  9. # 那么就会打印从在这个方法中return的数据。
  10. def __str__(self):
  11. return f"姓名:{self.name},性别:{self.gender},电话:{self.tel}"
  12. # t = Student("aa","女",23)
  13. # print(t)
'
运行
  1. class Unser():
  2. def __init__(self, username, password):
  3. self.username = username
  4. self.password = password
  5. def __str__(self):
  6. # “魔法”方法,当使用print输出对象的时候只要自己定义了__str__(self)方法,
  7. # 那么就会打印从在这个方法中return的数据。
  8. return f"用户名:{self.username},密码:{self.password}"
  9. # u = Unser("ss",123)
  10. # print(u)
'
运行

3.managerSystem.py

代码如下:

  1. # 主界面代码
  2. # 导入user,student模块
  3. from student import *
  4. from user import *
  5. # 使用正则表达式时,需要引入 re 库
  6. import re
  7. class StudentManager():
  8. def __init__(self):
  9. # 初始化,创建空列表
  10. self.student_list = []
  11. self.user_list = []
  12. def register(self):
  13. print("欢迎来的登录界面")
  14. while True:
  15. print("请输入你想要做的操作: a/注册,b/登录")
  16. register_way = input("请输入:")
  17. if register_way == "a":
  18. # 注册
  19. username = input("请输入用户名:")
  20. password = input("请输入密码:")
  21. # 下面通过正则表达式来对密码进行判断
  22. ret = re.match(r"^[123456789]\d{5}$", password)
  23. if ret:
  24. user = Unser(username, password)
  25. self.user_list.append(user)
  26. # 进行验证
  27. print("你注册的用户为:")
  28. print(self.user_list)
  29. print(user)
  30. print("是否确认注册:Y/是,N/否")
  31. confirm = input("请输入:")
  32. if confirm == "Y":
  33. self.save_user()
  34. elif confirm == "N":
  35. print("没有保存")
  36. else:
  37. print("你输入有误")
  38. else:
  39. print("你输入的密码不符合规范,请重新注册")
  40. # 登录
  41. elif register_way == "b":
  42. # 加载用户信息
  43. self.load_user()
  44. register_username = input("请输入账号")
  45. register_password = input("请输入密码")
  46. # 遍历列表
  47. for i in self.user_list:
  48. if i.username == register_username and i.password == register_password:
  49. # 登录成功
  50. # 创建实例对象,调用run()方法
  51. student_manager = StudentManager()
  52. student_manager.run()
  53. print("用户名或密码错误,请重新登录。")
  54. else:
  55. print("你的选择有误,")
  56. # 定义程序入口函数
  57. # 1.加载数据
  58. # 2.功能菜单
  59. # 3.输入功能序号
  60. # 4.执行不同功能
  61. def run(self):
  62. # 加载学员信息
  63. self.load_student()
  64. while True:
  65. # 这是在类里面调用实例方法,调用功能菜单函数
  66. self.show_menu()
  67. menu_num = int(input("请输入功能序号 :"))
  68. if menu_num == 1:
  69. # 添加学员
  70. self.add_student()
  71. elif menu_num == 2:
  72. # 删除学员
  73. self.del_student()
  74. elif menu_num == 3:
  75. # 修改学员信息
  76. self.modify_student()
  77. elif menu_num == 4:
  78. # 查询学员信息
  79. self.search_student()
  80. elif menu_num == 5:
  81. # 显示所有学员信息
  82. self.show_student()
  83. elif menu_num == 6:
  84. # 保存学员信息
  85. self.save_student()
  86. elif menu_num == 7:
  87. # 退出
  88. break
  89. # 系统功能函数
  90. # 功能菜单
  91. # 不涉及对象和对象数据,定义静态方法
  92. @staticmethod
  93. def show_menu():
  94. print("-------------------欢迎来到学员信息管理系统-------------")
  95. print("请选择下方功能")
  96. print("1.添加学员")
  97. print("2.删除学员")
  98. print("3.修改学员信息")
  99. print("4.查询学员信息")
  100. print("5.显示所有学员")
  101. # print("6.保存学员信息")
  102. print("7.退出系统")
  103. # 定义实例属性,用列表来储存每个学员信息
  104. # 添加学员
  105. def add_student(self):
  106. # 用户输入,姓名,性别,手机号
  107. name = input("请输入你的姓名 :")
  108. gender = input("请输入你的性别 :")
  109. if gender == "男" or gender == "女":
  110. tel = input("请输入你的手机号/6位整数字 :")
  111. # 利用try语句可以实现判段电话号是否是6位整数
  112. try:
  113. tel_number = int(tel)
  114. except:
  115. print("你输入的手机号有误,请重新操作")
  116. else:
  117. tel_len = len(tel)
  118. if tel_len == 6:
  119. # 创建学员对象,需先导入Student类,即先导入student模块
  120. student = Student(name, gender, tel)
  121. # 将学员数据存储到列表中
  122. self.student_list.append(student)
  123. # 验证一下
  124. print(self.student_list)
  125. print("你添加的信息为:")
  126. print(student)
  127. else:
  128. print("你输入的电话有误,请重新操作")
  129. else:
  130. print("你输入的性别有误,请重新操作")
  131. confirm = input("是否确认:Y/是,N/否")
  132. if confirm == "Y":
  133. self.save_student()
  134. elif confirm == "N":
  135. print("没有保存")
  136. else:
  137. print("你输入有误")
  138. # tel = input("请输入你的手机号/6位整数字 :")
  139. # 删除学员
  140. def del_student(self):
  141. # 按照姓名来删除学员
  142. del_name = input("请输入要删除的学员姓名")
  143. # 遍历列表,查找
  144. for i in self.student_list:
  145. if del_name == i.name:
  146. # 删除学员对象
  147. self.student_list.remove(i)
  148. print("删除成功")
  149. # 没有找到,打印没有查到信息
  150. else:
  151. print("没有查找到此学员信息")
  152. # 再次打印列表,查看是否删除
  153. print(self.student_list)
  154. # 修改学员
  155. def modify_student(self):
  156. # 输入目标学员姓名
  157. modify_name = input("请输入你所要修改的学员信息:")
  158. # 遍历列表查找是否存在,有则修改,无则提示不存在信息
  159. for i in self.student_list:
  160. if modify_name == i.name:
  161. # 更新学员信息
  162. i.name = input("请输入学员姓名:")
  163. i.gender = input("请输入学员性别:")
  164. i.tel = input("请输入学员电话:")
  165. print(f"修改的学员信息为:姓名:{i.name},性别:{i.gender},电话:{i.tel}")
  166. break
  167. else:
  168. print("没有此学员信息")
  169. # 查询学员信息(按照姓名或电话查找)
  170. def search_student(self):
  171. print("查询方式a/姓名查询,b/电话查询")
  172. search_way = input("请输入:")
  173. if search_way == "a":
  174. search_name = input("请输入你所有查询的姓名:")
  175. for i in self.student_list:
  176. if i.name == search_name:
  177. print(f"此学员信息为:姓名:{i.name},性别:{i.gender},电话:{i.tel}")
  178. break
  179. else:
  180. print("没有查到此学员信息")
  181. elif search_way == "b":
  182. search_tel = input("请输入你所查询的电话:")
  183. for i in self.student_list:
  184. if i.tel == search_tel:
  185. print(f"此学员信息为:姓名:{i.name},性别:{i.gender},电话:{i.tel}")
  186. break
  187. else:
  188. print("没有查到此学员信息")
  189. else:
  190. print("你输入的信息有误,请重新输入")
  191. # 显示所有学员
  192. def show_student(self):
  193. print("学员信息如下:")
  194. # 遍历输出
  195. for i in self.student_list:
  196. print(f"姓名:{i.name},性别:{i.gender},电话:{i.tel}")
  197. # 保存学员信息
  198. def save_student(self):
  199. # 打开文件
  200. r = open("student.txt", "w")
  201. # 文件写入数据先将列表中学员对象转为字典,再写入文件
  202. new_student_list = [i.__dict__ for i in self.student_list]
  203. # 写入,再将字典转换为字符串
  204. r.write(str(new_student_list))
  205. # 换行功能
  206. r.write("\r\n")
  207. # 关闭文件
  208. r.close()
  209. print("保存成功")
  210. # 加载学员信息
  211. def load_student(self):
  212. # 如果文件存在则以只读模式打开,否则以写入模式打开
  213. try:
  214. r = open("student.txt", "r")
  215. except:
  216. r = open("student.txt", "w")
  217. else:
  218. # 读取数据,读取出的数据是字符串类型,先将其还原为字典,
  219. data = r.read()
  220. # eval函数就是实现list、dict、tuple与str之间的转化
  221. new_list = eval(data)
  222. self.student_list = [Student(i["name"], i["gender"], i["tel"]) for i in new_list]
  223. finally:
  224. r.close()
  225. def save_user(self):
  226. # 打开文件
  227. r = open("user.txt", "w")
  228. # 文件写入数据先将列表中学员对象转为字典,再写入文件
  229. new_user_list = [i.__dict__ for i in self.user_list]
  230. # 写入,但需先将列表转换为字符串
  231. # str函数把list,dict,tuple转为为字符串
  232. r.write(str(new_user_list))
  233. r.write("\r\n")
  234. # 关闭文件
  235. r.close()
  236. print("保存成功")
  237. # 加载用户信息
  238. def load_user(self):
  239. # 如果文件存在则以只读模式打开,否则以写入模式打开
  240. try:
  241. r = open("user.txt", "r")
  242. except:
  243. r = open("user.txt", "w")
  244. else:
  245. # 读取数据,读取出的数据是字符串类型,先将其还原为字典,
  246. data = r.read()
  247. new_user_list = eval(data)
  248. self.user_list = [Unser(i["username"], i["password"]) for i in new_user_list]
  249. finally:
  250. r.close()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/808074
推荐阅读
相关标签
  

闽ICP备14008679号