当前位置:   article > 正文

python:学生信息管理系统(简易系统编写)_python学生信息管理系统

python学生信息管理系统

对于此系统我所使用的是window10系统,所用python解释器版本:python3.8,建议在pycharm进行编写

这篇文章将对学生信息管理系统进行全方位刨析,一步一步讲解,希望对有需要的人有所帮助

目录

系统设计:

设计系统流程图: 

 主函数设计:

主函数程序流程图:

实现主函数设计:

 代码部分:

 录入学生信息(insert函数内容):

录入学生信息程序流程图:

 代码部分:

删除学生信息(delete函数内容):

删除学生信息程序框图:

 代码部分:

修改学生信息(modify函数内容):

修改学生信息程序流程图:

代码部分: 

查找学生信息(serach函数内容):

查找学生信息程序流程图:

 代码部分:

统计学生总人数(total函数内容):

代码部分:

显示学生信息功能(show函数内容):

代码部分:

排序模块设计(sort函数内容):

代码部分:

完整代码:

项目打包:


首先要做一个系统首先要明确这个系统要有什么功能,需要进行怎样的设计。

对于一个系统应该怎样去做:

  1. 需求分析
  2. 系统设计
  3. 系统开发必备
  4. 主函数设计
  5. 学生信息维护模块设计
  6. 查询/统计模块设计
  7. 排序模块设计
  8. 项目打包

那么先对学生信息管理系统进行一个需求分析:

学生管理系统应具备的功能:

  1. 添加学生及成绩信息
  2. 将学审核信息保存到文件中
  3. 修改和删除学生信息
  4. 查询学生信息
  5. 根据学生成绩进行排序
  6. 统计学生总分

经过对需求分析,整理出学生信息管理系统应该具备的功能如上。

接下来,应该进行对系统的设计:

系统设计:

  • 系统功能结构
    • 学生信息管理系统的七大模块
      • 录入学生信息模块
      • 查找学生信息模块
      • 删除学生信息模块
      • 修改学生信息模块
      • 学生成绩排名模块
      • 统计学生总人数模块
      • 显示全部学生信息模块

设计系统流程图: 

 

 主函数设计:

主函数程序流程图:

        

实现主函数设计:

编号功能
0        退出系统
1

录入学生信息,调用insert()函数

2查找学生信息,调用searc()函数
3删除学生信息,调用delete()函数
4修改学生信息,调用modify()函数
5对学生成绩进行排名,调用sort()函数
6统计学生总人数,调用total()函数
7显示所有学生信息,调用show()函数

 代码部分:

  1. def main():
  2. while True:
  3. menu()
  4. choice=int(input('请选择:'))
  5. if choice in [0,1,2,3,4,5,6,7]:
  6. if choice==0:
  7. answer=input('您确定要退出系统么?y/n')
  8. if answer=='y' or answer=='Y':
  9. print('谢谢您的使用!!!')
  10. break
  11. else:
  12. continue
  13. elif choice==1:
  14. insert()
  15. elif choice==2:
  16. search()
  17. elif choice==3:
  18. delete()
  19. elif choice==4:
  20. modify()
  21. elif choice==5:
  22. sort()
  23. elif choice==6:
  24. total()
  25. else:
  26. show()
  27. def menu():
  28. print('==========================================学生信息管理系统==========================================')
  29. print('-----------------------------------------------功能界面-------------------------------------------')
  30. print('\t\t\t\t\t\t1,录入学生信息')
  31. print('\t\t\t\t\t\t2,查找学生信息')
  32. print('\t\t\t\t\t\t3,删除学生信息')
  33. print('\t\t\t\t\t\t4,修改学生信息')
  34. print('\t\t\t\t\t\t5,排序')
  35. print('\t\t\t\t\t\t6,统计学生总人数')
  36. print('\t\t\t\t\t\t7,显示所有学生信息')
  37. print('\t\t\t\t\t\t0,退出系统')
  38. def insert():
  39. pass
  40. def search():
  41. pass
  42. def delete():
  43. pass
  44. def modify():
  45. pass
  46. def sort():
  47. pass
  48. def total():
  49. pass
  50. def show():
  51. pass
  52. if __name__ == '__main__':
  53. main()

 录入学生信息(insert函数内容):

录入学生信息程序流程图:

 代码部分:

  1. def insert():
  2. student_list=[] #创建学生集合
  3. while True:
  4. id=int(input('请录入学生id(如1001):'))
  5. if not id:
  6. break
  7. name=input('请输入学生姓名:')
  8. if not name:
  9. break
  10. try:
  11. enligh=int(input('请输入英语成绩:'))
  12. python=int(input('请输入python成绩:'))
  13. java=int(input('请输入Java成绩:'))
  14. except:
  15. print('输入无效,不是整数类型,请重新输入')
  16. continue
  17. #将录入的学生信息保存到字典当中
  18. student={'id':id,'name':name,'enligh':enligh,'python':python,'java':java}
  19. #将学生信息添加到列表当中
  20. student_list.append(student)
  21. answer=input('是否继续添加?y/n\n')
  22. if answer=='y' or answer=='Y':
  23. continue
  24. else:
  25. break
  26. #调用save()函数
  27. save(student_list)
  28. print('学生信息录入完成!!!!!!!!1')
  29. def save(lst):
  30. try:
  31. stu_txt=open(filename,'a',encoding='utf-8')
  32. except:
  33. stu_txt = open(filename, 'w', encoding='utf-8')
  34. for item in lst:
  35. stu_txt.write(str(item)+'\n')
  36. stu_txt.close()

删除学生信息(delete函数内容):

删除学生信息程序框图:

 代码部分:

  1. def delete():
  2. while True:
  3. student_id=input('请输入要删除的学生id:')
  4. if student_id!='':
  5. if os.path.exists(filename):
  6. with open(filename,'r',encoding='utf-8') as file:
  7. student_old=file.readlines()
  8. else:
  9. student_old=[]
  10. flag=False #标记是否删除
  11. if student_old:
  12. with open(filename,'w',encoding='utf-8') as wfile:
  13. d={}
  14. for item in student_old:
  15. d=dict(eval(item)) #将字符串转换成字典
  16. if str(d['id'])!=student_id:
  17. wfile.write(str(d)+'\n')
  18. else:
  19. flag=True
  20. if flag:
  21. print(f'id为{student_id}的学生信息已被删除')
  22. else:
  23. print(f'没有找到id为{student_id}')
  24. else:
  25. print('无学生信息')
  26. break
  27. show() # 删除之后显示所有学生信息
  28. answer=input('是否继续删除?y/n\n')
  29. if answer=='y' or answer=='Y':
  30. continue
  31. else:
  32. break
  33. print('删除学生信息完毕!!!')

修改学生信息(modify函数内容):

修改学生信息程序流程图:

代码部分: 

  1. def modify():
  2. show()
  3. if os.path.exists(filename):
  4. with open(filename,'r',encoding='utf-8') as rfile:
  5. stuedent_old=rfile.readlines()
  6. else:
  7. return
  8. student_id=input('请输入修改学生的id:')
  9. with open(filename,'w',encoding='utf-8') as wfile:
  10. for item in stuedent_old:
  11. d=dict(eval(item))
  12. if str(d['id'])==student_id:
  13. print('恭喜找到这名学生的信息,可以修改他的相关信息了!!!')
  14. while True:
  15. try:
  16. d['name']=input('请输入姓名:')
  17. d['english']=input('请输入英语成绩:')
  18. d['python']=input('请输入python成绩:')
  19. d['java']=input('请输入Java成绩')
  20. except:
  21. print('您的输入有误,请重新输入')
  22. else:
  23. break
  24. wfile.write(str(d)+'\n')
  25. print('修改成功')
  26. else:
  27. wfile.write(str(d)+'\n')
  28. answer=input('是否继续修改其他学生的信息?y/n\n')
  29. if answer=='y' or answer=='Y':
  30. modify()

查找学生信息(serach函数内容):

查找学生信息程序流程图:

编写主函数中调用的查找学生信息的函数search() 定义显示查询结果的函数show_student(query_student)  

 代码部分:

  1. def search():
  2. student_query=[]
  3. while True:
  4. id=''
  5. name=''
  6. if os.path.exists(filename):
  7. mode=input('按id查找请输入1,按姓名查找请输入2\n')
  8. if mode=='1':
  9. id=input('请输入要查找的id:')
  10. elif mode=='2':
  11. name=input('请输入要查找的姓名:')
  12. else:
  13. print('您的输入有误,请重新输入')
  14. search()
  15. with open(filename,'r',encoding='utf-8') as rfile:
  16. student=rfile.readlines()
  17. for item in student:
  18. d=dict(eval(item))
  19. if id!='':
  20. if d['id']==id:
  21. student_query.append(d)
  22. elif name!='':
  23. if d['name']==name:
  24. student_query.append(d)
  25. #显示查询结果
  26. show_student(student_query)
  27. #清空列表
  28. student_query.clear()
  29. answer=input('是否要继续查询?y/n\n')
  30. if answer=='y' or answer=='Y':
  31. continue
  32. else:
  33. break
  34. else:
  35. print('暂未保存该学生信息')
  36. return
  37. def show_student(lst):
  38. if len(lst)==0:
  39. print('没有查询到学生信息,无数据显示!!!')
  40. return
  41. #定义标题显示格式
  42. format_title='{:^6}\t{:^12}\t{:^8}\t{:^8}\t{:^8}\t{:^8}'
  43. print(format_title.format('id','姓名','英语成绩','python成绩','java成绩','总成绩'))
  44. #定义内容显示格式
  45. format_date='{:^6}\t{:^12}\t{:^8}\t{:^8}\t{:^8}\t{:^8}'
  46. for item in lst:
  47. print(format_date.format(item.get('id'),
  48. item.get('name'),
  49. item.get('english'),
  50. item.get('python'),
  51. item.get('java'),
  52. int(item.get('english'))+int(item.get('python'))+int(item.get('java'))
  53. ))

统计学生总人数(total函数内容):

代码部分:

  1. def total():
  2. if os.path.exists(filename):
  3. with open(filename,'r',encoding='utf-8') as rfile:
  4. students=rfile.readlines()
  5. for item in students:
  6. if students:
  7. len(students)
  8. print('一共有{}个学生'.format(len(students)))
  9. else:
  10. print('还没有录入学生信息')
  11. else:
  12. print('暂未保存学生信息')

显示学生信息功能(show函数内容):

代码部分:

  1. def show():
  2. student_information=[]
  3. if os.path.exists(filename):
  4. with open(filename,'r',encoding='utf-8') as rfile:
  5. students=rfile.readlines()
  6. for item in students:
  7. student_information.append(eval(item))
  8. if student_information!=[]:
  9. show_student(student_information)
  10. else:
  11. print('暂未保存学生信息')

排序模块设计(sort函数内容):

代码部分:

  1. def sort():
  2. show()
  3. if os.path.exists(filename):
  4. with open(filename,'r',encoding='utf-8') as rfile:
  5. students=rfile.readlines()
  6. student_new=[]
  7. for item in students:
  8. d=dict(eval(item))
  9. student_new.append(d)
  10. else:
  11. return
  12. asc_or_desc=input('请选择排序方式(0,升序 1,降序)\n')
  13. if asc_or_desc=='0':
  14. asc_or_desc_bool=False
  15. elif asc_or_desc=='1':
  16. asc_or_desc_bool=True
  17. else:
  18. print('您的输入有误,请重新输入')
  19. sort()
  20. mode=input('请选择排序方式(1,按英语成绩排序 2,按python成绩排序 3,按Java成绩排序 0,按总成绩排序)\n')
  21. if mode=='1':
  22. student_new.sort(key=lambda student_new:int(student_new['english']),reverse=asc_or_desc_bool)
  23. elif mode=='2':
  24. student_new.sort(key=lambda student_new: int(student_new['python']), reverse=asc_or_desc_bool)
  25. elif mode=='3':
  26. student_new.sort(key=lambda student_new: int(student_new['java']), reverse=asc_or_desc_bool)
  27. elif mode=='0':
  28. student_new.sort(key=lambda student_new: int(student_new['english'])+int(student_new['python']+int(student_new['java'])), reverse=asc_or_desc_bool)
  29. else:
  30. print('您输入的信息有误,请重新输入')
  31. sort()
  32. show_student(student_new)

完整代码:

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

项目打包:

安装第三方模块:1,按win+R,输入cmd,打开cmd命令界面,

                                  在线安装模式:pip install Pyinstaller

                              2,执行打包操作      

pyinstaller -F E:\python基础语法学习\章节十六\system.py

 如果有特殊需求,请自行根据代码改写

看到这里相信你已经对于python的学习有了更深的了解,祝愿在以后道路上更进一步。

希望对初学者或者有需要的人有所帮助。

           

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

闽ICP备14008679号