学生管理系统

举报
建帅小伙儿 发表于 2022/09/25 04:40:34 2022/09/25
【摘要】 一、学生管理系统 studentsystem.py # coding=utf-8""" 作者:gaojs 功能: 新增功能: 日期:2022/4/3 23:41"""import os.path filename = 'student.txt' def main(): """ 学生管...

一、学生管理系统

studentsystem.py
  

   
  1. # coding=utf-8
  2. """
  3. 作者:gaojs
  4. 功能:
  5. 新增功能:
  6. 日期:2022/4/3 23:41
  7. """
  8. import os.path
  9. filename = 'student.txt'
  10. def main():
  11. """
  12. 学生管理系统主函数
  13. :return:
  14. """
  15. while True:
  16. num()
  17. choice = int(input('请选择'))
  18. if choice in [0, 1, 2, 3, 4, 5, 6, 7]:
  19. if choice == 0:
  20. answer = input('您确定要退出系统吗?y/n')
  21. if answer == 'y' or answer == 'Y':
  22. print('谢谢您的使用!!!')
  23. break
  24. else:
  25. continue
  26. elif choice == 1:
  27. insert()
  28. elif choice == 2:
  29. search()
  30. elif choice == 3:
  31. delete()
  32. elif choice == 4:
  33. modify()
  34. elif choice == 5:
  35. sort()
  36. elif choice == 6:
  37. total()
  38. elif choice == 7:
  39. show()
  40. def num():
  41. """
  42. 打印功能列表函数
  43. :return:
  44. """
  45. print('========================学生成绩管理系统========================')
  46. print('---------------------------功能菜单----------------------------')
  47. print('\t\t\t\t\t\t1.录入学生系统')
  48. print('\t\t\t\t\t\t2.查找学生系统')
  49. print('\t\t\t\t\t\t3.删除学生系统')
  50. print('\t\t\t\t\t\t4.修改学生系统')
  51. print('\t\t\t\t\t\t5.排序')
  52. print('\t\t\t\t\t\t6.统计学生总人数')
  53. print('\t\t\t\t\t\t7.显示所有学生信息')
  54. print('\t\t\t\t\t\t0.退出')
  55. def insert():
  56. """
  57. 1.录入学生信息
  58. :return:
  59. """
  60. student_list = []
  61. while True:
  62. id = input('请输入ID(如1001):')
  63. if not id:
  64. break
  65. name = input('请输入姓名:')
  66. if not name:
  67. break
  68. try:
  69. english = int(input('请输入英语成绩:'))
  70. python = int(input('请输入python成绩:'))
  71. java = int(input('请输入java成绩:'))
  72. except Exception as e:
  73. print(e)
  74. print('输入有误,不是整数类型,请重新输入!')
  75. continue
  76. # 将录入的系统保存到字典
  77. student = {'id': id, 'name': name, 'english': english, 'python': python, 'java': java}
  78. # 将学生信息添加到列表中
  79. student_list.append(student)
  80. answer = input('是否继续添加y/n\n')
  81. if answer == 'y' or answer == 'Y':
  82. continue
  83. else:
  84. break
  85. # 保存
  86. save(student_list)
  87. print('学生信息录入完毕!!!')
  88. def save(lst):
  89. """
  90. 保存学生信息
  91. :param lst:
  92. :return:
  93. """
  94. try:
  95. stu_txt = open(filename, 'a', encoding='utf-8')
  96. except:
  97. stu_txt = open(filename, 'w', encoding='utf-8')
  98. for item in lst:
  99. stu_txt.write(str(item) + '\n')
  100. stu_txt.close()
  101. def search():
  102. """
  103. 2.查找学生数据
  104. :return:
  105. """
  106. student_query = []
  107. while True:
  108. id = ''
  109. name = ''
  110. if os.path.exists(filename):
  111. mode = input('按照ID查找请输入1, 按姓名查找请输入2:')
  112. if mode == '1':
  113. id = input('请输入学生ID')
  114. elif mode == '2':
  115. name = input('请输入学生姓名')
  116. else:
  117. print('输入学生信息不存在,请重新输入!')
  118. search()
  119. with open(filename, 'r', encoding='utf-8') as f:
  120. student = f.readlines()
  121. for item in student:
  122. d = dict(eval(item))
  123. if d['id'] == id:
  124. student_query.append(d)
  125. elif d['name'] == name:
  126. student_query.append(d)
  127. # 显示查询结果
  128. show_student(student_query)
  129. # 清空列表
  130. student_query.clear()
  131. answer = input('是否要继续查询?y/n\n')
  132. if answer == 'y':
  133. continue
  134. else:
  135. break
  136. else:
  137. print('暂未保存学生信息!')
  138. return
  139. def show_student(lst):
  140. """
  141. 显示学生信息
  142. :param lst:
  143. :return:
  144. """
  145. if len(lst) == 0:
  146. print('没有查询到学生信息,无数据显示!!!')
  147. return
  148. # 定义标题显示
  149. format_tltle = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'
  150. print(format_tltle.format('ID', '姓名', '英语成绩', 'python成绩', 'java成绩', '总成绩'))
  151. # 定义内容的显示格式
  152. format_data = '{:^6}\t{:^12}\t{:^10}\t{:^10}\t{:^16}\t{:^12}'
  153. for item in lst:
  154. print(format_data.format(item.get('id'),
  155. item.get('name'),
  156. item.get('english'),
  157. item.get('python'),
  158. item.get('java'),
  159. int(item.get('english')) + int(item.get('python')) + int(item.get('java'))
  160. ))
  161. def delete():
  162. """
  163. 3.删除学生信息
  164. :return:
  165. """
  166. while True:
  167. student_id = input('请输入要删除学生的ID:')
  168. if student_id != '':
  169. if os.path.exists(filename):
  170. with open(filename, 'r', encoding='utf-8') as f:
  171. student_old = f.readlines()
  172. else:
  173. student_old = []
  174. flag = False
  175. if student_old:
  176. with open(filename, 'w', encoding='utf-8') as f:
  177. for item in student_old:
  178. d = dict(eval(item))# 将字符串转为字典
  179. if d['id'] != student_id:
  180. f.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. answer = input('是否继续删除?y/n\n')
  192. if answer == 'y' or answer == 'Y':
  193. continue
  194. else:
  195. break
  196. def modify():
  197. """
  198. 4.修改学生信息
  199. :return:
  200. """
  201. show()
  202. if os.path.exists(filename):
  203. with open(filename, 'r', encoding='utf-8') as f1:
  204. student_old = f1.readlines()
  205. else:
  206. return
  207. student_id = input('请输入学生的ID:')
  208. with open(filename, 'w', encoding='utf-8') as f:
  209. for item in student_old:
  210. d = dict(eval(item))
  211. if d['id'] == student_id:
  212. print('找到学生信息,可以修改相关信息!')
  213. while True:
  214. try:
  215. d['name'] = input('请输入姓名:')
  216. d['english'] = input('请输入英语成绩:')
  217. d['python'] = input('请输入python成绩:')
  218. d['java'] = input('请输入java成绩:')
  219. except Exception as e:
  220. print(e)
  221. print('您输入的有误,请重新输入:')
  222. else:
  223. break
  224. f.write(str(d) + '\n')
  225. print('修改成功')
  226. else:
  227. f.write(str(d) + '\n')
  228. print('没找到学生信息,请重试!')
  229. answer = input('是否继续修改其他学生信息?y/n\n')
  230. if answer == 'y' or answer == 'Y':
  231. modify()
  232. def sort():
  233. """
  234. 排序
  235. :return:
  236. """
  237. pass
  238. def total():
  239. """
  240. 6.统计所有学生信息个数:6
  241. :return:
  242. """
  243. if os.path.exists(filename):
  244. with open(filename, 'r', encoding='utf-8') as f:
  245. students= f.readlines()
  246. if students:
  247. print(f'一共有{len(students)}个学生信息!')
  248. else:
  249. print('还没有录入学生信息!')
  250. else:
  251. print('暂未保存数据!!!')
  252. def show():
  253. """
  254. 7.显示所有学生信息
  255. :return:
  256. """
  257. student_list = []
  258. if os.path.exists(filename):
  259. with open(filename, 'r', encoding='utf-8') as f:
  260. students = f.readlines()
  261. for item in students:
  262. student_list.append(eval(item))
  263. if student_list:
  264. show_student(student_list)
  265. else:
  266. print('暂未保存过数据!')
  267. if __name__ == '__main__':
  268. main()

文章来源: blog.csdn.net,作者:懿曲折扇情,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_41332844/article/details/126837400

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。