当前位置:   article > 正文

学生信息管理系统(录入、查找、删除、修改、排序、统计等功能实现)超详细完整代码,建议保存。_python 信息录入 查询

python 信息录入 查询

许多老师都会布置Python期末大作业,作业题目很多就是学生信息管理系统,以前都是练习小题目,几十行代码就能搞定,而完整的写完这个系统我用了差不多400行代码。完整写完这个系统,是对一个学期所学知识的进一步深入了解于学习,还能扩充一些课外知识。篇幅很长,收藏起来,慢慢看!

通过数百行python代码实现完整学生信息管理系统(录入、查找、删除、修改、排序、统计、显示功能),值得仔细揣摩和学习。

一次复制,无需麻烦!!!

如果满意的话,别忘了点赞哦!!!

P.S:若有问题和疑惑请留言。

效果如图:

 代码如下:

  1. # encoding=GBK
  2. # @Time : 2022/8/7 21:08
  3. # @Author : YKW
  4. # @File : stusystem.py
  5. # 开始奇妙的python之旅吧!!!
  6. import os
  7. filename = 'student.txt'
  8. def main():
  9. while True:
  10. menu()
  11. choice = int(input('请选择:\n'))
  12. if choice in [0, 1, 2, 3, 4, 5, 6, 7]:
  13. if choice == 0:
  14. ans = input('确定要推出系统吗?(y/n)')
  15. if ans in ['y', 'Y']:
  16. print('谢谢你的使用!!!')
  17. break
  18. else:
  19. continue
  20. elif choice == 1:
  21. insert() # 录入信息
  22. elif choice == 2:
  23. search()
  24. elif choice == 3:
  25. delete()
  26. elif choice == 4:
  27. modify()
  28. elif choice == 5:
  29. sort()
  30. elif choice == 6:
  31. total()
  32. elif choice == 7:
  33. show()
  34. def menu():
  35. print('学生信息管理系统'.center(90, '='))
  36. print('功能菜单'.center(90, '-'))
  37. print('1.'.rjust(43), '录入学生信息')
  38. print('2.'.rjust(43), '查找学生信息')
  39. print('3.'.rjust(43), '删除学生信息')
  40. print('4.'.rjust(43), '修改学生信息')
  41. print('5.'.rjust(43), '排序学生信息')
  42. print('6.'.rjust(43), '统计学生总人数')
  43. print('7.'.rjust(43), '显示所有学生信息')
  44. print('0.'.rjust(43), '退出')
  45. print('-' * 90)
  46. def insert():
  47. student_list = []
  48. while True:
  49. if os.path.exists(filename):
  50. with open(filename, 'r', encoding='utf-8') as rfile:
  51. student_old = rfile.readlines()
  52. id = input('请输入id(如1001):\t')
  53. if not id: # 如果为空
  54. break
  55. with open(filename, 'r', encoding='utf-8') as wfile:
  56. flag = True
  57. for item in student_old:
  58. d = dict(eval(item))
  59. if d['id'] == id:
  60. flag = False
  61. print('找到学生信息了,可以修改!!!')
  62. break
  63. if not flag: # 存在,修改
  64. with open(filename, 'w', encoding='utf-8') as wfile:
  65. for item in student_old:
  66. d = dict(eval(item))
  67. if d['id'] == id:
  68. while True:
  69. try:
  70. d['name'] = input("请输入姓名: ")
  71. english = int(input('请输入英语成绩: '))
  72. python = int(input('请输入Python成绩: '))
  73. java = int(input('请输入Java成绩: '))
  74. except:
  75. print('您的输入有误,请重新输入!!!')
  76. else:
  77. break
  78. wfile.write(str(d) + '\n')
  79. print('修改成功!!!')
  80. else:
  81. wfile.write(str(d) + '\n')
  82. elif flag: # 不存在, 追加
  83. name = input('请输入名字:\t')
  84. if not name:
  85. break
  86. try:
  87. english = int(input('请输入英语成绩: '))
  88. python = int(input('请输入Python成绩: '))
  89. java = int(input('请输入Java成绩: '))
  90. except:
  91. print('输入无效,不是整数类型,请重新输入!')
  92. continue
  93. # 将录入的学生信息保存到字典中
  94. student = {'id': id, 'name': name, 'english': english, 'python': python, 'java': java}
  95. # 将学生信息添加到列表中
  96. student_list.append(student)
  97. # 调用save()函数
  98. save(student_list)
  99. student_list.clear()
  100. print('学生信息录入完毕!!!')
  101. ans = input('是否继续添加?(y/n)\n')
  102. if ans == 'y':
  103. continue
  104. else:
  105. break
  106. def save(lst):
  107. with open(filename, 'a', encoding='utf-8') as stu_txt:
  108. for item in lst:
  109. stu_txt.write(str(item) + '\n')
  110. def search():
  111. student_query = []
  112. while True:
  113. id = ''
  114. name = ''
  115. if os.path.exists(filename):
  116. mode = input('按照ID查找请输入1,按姓名查找请输入2:')
  117. if mode == '1':
  118. id = input('请输入学生ID:')
  119. elif mode == '2':
  120. name = input('请输入学生姓名:')
  121. else:
  122. print('您的输入有误,请重新输入!!!')
  123. continue
  124. with open(filename, 'r', encoding='utf-8') as rfile:
  125. student = rfile.readlines()
  126. for item in student:
  127. d = dict(eval(item))
  128. if id != '':
  129. if d['id'] == id:
  130. student_query.append(d)
  131. elif name != '':
  132. if d['name'] == name:
  133. student_query.append(d)
  134. # 显示查询结果
  135. show_student(student_query)
  136. # 清空列表
  137. student_query.clear()
  138. ans = input('是否要继续查询?(y/n)')
  139. if ans == 'y':
  140. continue
  141. else:
  142. break
  143. else:
  144. print('暂未保存学员信息')
  145. return
  146. def show_student(lst):
  147. if len(lst) == 0:
  148. print('没有查询到学生信息,无数据显示!!!')
  149. return
  150. # 定义标题显示格式
  151. # 例子中format,用.format()中的参数替代前面的{},{:^6}表示中间对齐,总占据6个宽度;其他有{:<6}表左对齐等
  152. format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'
  153. print(format_title.format('id', '姓名', '英语成绩', 'Python成绩', 'Java成绩', '总成绩'))
  154. # 定义内容显示格式
  155. format_data = '{:^6}\t{:^12}\t{:^8}\t{:^8}\t{:^8}\t{:^8}'
  156. for item in lst:
  157. print(format_data.format(item.get('id'),
  158. item.get('name'),
  159. item.get('english'),
  160. item.get('python'),
  161. item.get('java'),
  162. int(item.get('english')) + int(item.get('python')) + int(item.get('java'))
  163. ))
  164. def delete():
  165. while True:
  166. student_id = input('请输入要删除的学生id:')
  167. if student_id != '':
  168. if os.path.exists(filename):
  169. with open(filename, 'r', encoding='utf-8') as file:
  170. student_old = file.readlines()
  171. else:
  172. student_old = []
  173. flag = False
  174. if student_old:
  175. with open(filename, 'w', encoding='utf-8') as wfile:
  176. d = {}
  177. for item in student_old:
  178. d = dict(eval(item)) # 将字符串转成字典
  179. if d['id'] != student_id:
  180. wfile.write(str(d) + '\n')
  181. else:
  182. flag = True
  183. if flag:
  184. print(f'id为{student_id}的学生信息已被删除')
  185. else:
  186. print(f'没有找到ID为{student_id}的学生信息')
  187. else:
  188. print('无学生信息')
  189. break
  190. show() # 删除后显示所有学生信息
  191. ans = input('是否继续删除?(y/n)')
  192. if ans == 'y':
  193. continue
  194. else:
  195. break
  196. def modify():
  197. show()
  198. if os.path.exists(filename):
  199. with open(filename, 'r', encoding='utf-8') as rfile:
  200. student_old = rfile.readlines()
  201. else:
  202. return
  203. student_id = input('请输入要修改的学员ID: ')
  204. with open(filename, 'w', encoding='utf-8') as wfile:
  205. flag = True
  206. for item in student_old:
  207. d = dict(eval(item))
  208. if d['id'] == student_id:
  209. flag = False
  210. print('找到学生信息了,可以修改!!!')
  211. while True:
  212. try:
  213. d['name'] = input("请输入姓名: ")
  214. english = int(input('请输入英语成绩: '))
  215. python = int(input('请输入Python成绩: '))
  216. java = int(input('请输入Java成绩: '))
  217. except:
  218. print('您的输入有误,请重新输入!!!')
  219. else:
  220. break
  221. wfile.write(str(d) + '\n')
  222. print('修改成功!!!')
  223. else:
  224. wfile.write(str(d) + '\n')
  225. if flag:
  226. print('没有找到该id信息!请仔细核对!!!')
  227. ans = input('是否继续修改其他学生信息?(y/n)')
  228. if ans == 'y':
  229. modify()
  230. def sort():
  231. show()
  232. if os.path.exists(filename):
  233. with open(filename, 'r', encoding='utf-8') as rfile:
  234. student_list = rfile.readlines()
  235. student_new = []
  236. for item in student_list:
  237. d = eval(item)
  238. student_new.append(d)
  239. else:
  240. return
  241. asc_or_dsc = input('请选择(0.升序 1.降序):')
  242. if asc_or_dsc == '0':
  243. asc_or_dsc_bool = False
  244. elif asc_or_dsc == '1':
  245. asc_or_dsc_bool = True # 降序
  246. else:
  247. print('您的输入有误,请重新输入!!!')
  248. sort()
  249. mode = int(input('请输入排序方式(1.按英语成绩,2.按Python成绩排序,3.按Java成绩排序,0.按总成绩排序'))
  250. if mode == 1:
  251. # lambda X:Y函数表示输入Y值,然后返回X值,实现返回字典中的key对应的value,再用sort进行排序,因为列表中的元素是字典,无法直接进行排序
  252. # x是代表student_new这个列表中的每个元素,这个列表是之前转换文件中的信息得到的,列表student_new中的元素是一个一个的字典
  253. # 相当于sort()里面的key代表使用字典模式,把调用sort()的对象里的字典放在第一个x里(x随便写什么),第二个x则是把第一个x里的字典给遍历了一下,并查询字典里的key(第二个x跟第一个必须一
  254. student_new.sort(key=lambda x: int(x['english']), reverse=asc_or_dsc_bool)
  255. elif mode == 1:
  256. student_new.sort(key=lambda x: int(x['python']), reverse=asc_or_dsc_bool)
  257. elif mode == 1:
  258. student_new.sort(key=lambda x: int(x['java']), reverse=asc_or_dsc_bool)
  259. elif mode == 0:
  260. student_new.sort(key=lambda x: (int(x['english']) + int(x['python']) + int(x['java'])), reverse=asc_or_dsc_bool)
  261. else:
  262. print('您的输入有误,请重新输入!!!')
  263. sort()
  264. show_student(student_new)
  265. def total():
  266. if os.path.exists(filename):
  267. with open(filename, 'r', encoding='utf-8') as rfile:
  268. students = rfile.readlines()
  269. if students:
  270. print('一共有{}名学生。'.format(len(students)))
  271. else:
  272. print('还没有录入学生信息。')
  273. else:
  274. print('暂未保存数据信息!!!')
  275. def show():
  276. student_list = []
  277. if os.path.exists(filename):
  278. with open(filename, 'r', encoding='utf-8') as rfile:
  279. students = rfile.readlines()
  280. for item in students:
  281. student_list.append(eval(item))
  282. if student_list:
  283. show_student(student_list)
  284. else:
  285. print('暂未保存数据信息!!!')
  286. if __name__ == '__main__':
  287. main()
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/594054
推荐阅读
相关标签
  

闽ICP备14008679号