当前位置:   article > 正文

学生信息管理系统(Python)完整版_学生信息管理系统 python

学生信息管理系统 python

目录

功能模块:

实现思路:

运行功能演示:

具体实现过程:

定义学生类:

定义学生管理类

定义显示学生信息函数

输入成绩函数:

添加学生信息:

删除学生信息

修改学生信息

导入学生信息

导出学生信息

求课程平均分

求课程最高分

求课程最低分

最后定义菜单函数和主函数:

完整代码:


功能模块:

基本信息管理和学生成绩管理

基本信息管理模块的主要功能有学生信息的添加、删除、修改、显示和学生数据的导入导出,、

学生成绩管理模块的主要功能有统计课程最高分、最低分和平均分。

实现思路:

  1. 设计一个学生类,包含学号、姓名、语文成绩、数学成绩和英语成绩等数据成员。
  2. 引入OS模块,用于导入导出路径文件信息
  3. 设计一个学生管理类,用于定义各个模块的具体功能函数。
  4. 设计一个主菜单,两个子菜单,分别管理学生基本信息和学生成绩信息

运行功能演示:

学生信息管理系统启动后,首先进入系统主界面,等待用户输入命令选择相应的功能。

如果用户输入“info”命令,则进入学生基本信息管理子功能模块。

在学生基本信息管理界面,用户通过输入相应的命令进行学生基本信息的增、删、改、显示等操作。

学生基本信息菜单

添加学生信息

删除学生信息

修改学生信息

显示学生信息

如果用户输入“score”命令,则进入学生成绩管理子功能模块。

在学生成绩管理界面用户可选择相应的功能进行成绩处理。

平均分:

最高分

最低分

具体实现过程:

定义学生类:

  1. class Student:
  2. def __init__(self,no,name,chinese,math,english):
  3. self.no = no
  4. self.name = name
  5. self.chinese = int(chinese)
  6. self.math = int(math)
  7. self.english = int(english)

定义学生管理类

  1. class StudentList:
  2. def __init__(self):
  3. self.stulist = []

定义显示学生信息函数

在学生管理类下面定义显示学生信息函数:

  1. def show(self):
  2. #显示学生信息
  3. print('{:8}\t{:8}\t{:8}\t{:8}\t{:8}'
  4. .format('学号','姓名','语文','数学','英语'))
  5. for stu in self.stulist:
  6. print('{:8}\t{:8}\t{:<8}\t{:<8}\t{:<8}'
  7. .format(stu.no,stu.name,stu.chinese,stu.math,stu.english))

输入成绩函数:

  1. def __enterScore(self,message):
  2. #成绩输入
  3. while True:
  4. try:
  5. score = input(message)
  6. if 0 <= int(score) <= 100:
  7. break
  8. else:
  9. print("输入错误,成绩应在0到100之间")
  10. except:
  11. print("输入错误,成绩应在0到100之间")
  12. return score
  13. def __exists(self,no):
  14. #判断学号是否存在
  15. for stu in self.stulist:
  16. if stu.no == no:
  17. return True
  18. else:
  19. return False

添加学生信息:

  1. def insert(self):
  2. #添加学生信息
  3. while True:
  4. no = input('学号:')
  5. if self.__exists(no):
  6. print('该学号已存在')
  7. else:
  8. name = input('姓名:')
  9. chinese = self.__enterScore('语文成绩:')
  10. math = self.__enterScore('数学成绩:')
  11. english = self.__enterScore('英语成绩:')
  12. stu = Student(no,name,chinese,math,english)
  13. self.stulist.append(stu)
  14. choice = input('继续添加(y/n)?').lower()
  15. if choice == 'n':
  16. break

删除学生信息

  1. def delete(self):
  2. #删除学生信息
  3. while True:
  4. no = input('请输入要删除的学生学号:')
  5. for stu in self.stulist[::]:
  6. if stu.no == no:
  7. self.stulist.remove(stu)
  8. print('删除成功')
  9. break
  10. else:
  11. print('该学号不存在')
  12. choice = input('继续删除(y/n)?').lower()
  13. if choice == 'n':
  14. break

修改学生信息

  1. def update(self):
  2. #修改学生信息
  3. while True:
  4. no = input('请输入要修改的学生学号:')
  5. if self.__exists(no):
  6. for stu in self.stulist:
  7. if stu.no == no:
  8. stu.name = input('姓名:')
  9. stu.chinese = int(self.__enterScore('语文成绩:'))
  10. stu.math = int(self.__enterScore('数学成绩:'))
  11. stu.english = int(self.__enterScore('英语成绩:'))
  12. print('修改成功')
  13. break
  14. else:
  15. print('该学号不存在')
  16. choice = input('继续修改(y/n)?').lower()
  17. if choice == 'n':
  18. break

导入学生信息

  1. def load(self,fn):
  2. #导入学生信息
  3. if os.path.exists(fn):
  4. try:
  5. with open(fn,'r',encoding = 'utf-8') as fp:
  6. while True:
  7. fs = fp.readline().strip('\n')
  8. if not fs:
  9. break
  10. else:
  11. stu = Student(*fs.split(','))
  12. if self.__exists(stu.no):
  13. print('该学号已存在')
  14. else:
  15. self.stulist.append(stu)
  16. print('导入完毕')
  17. except:
  18. print('error...') #要导入的文件不是utf-8编码,或是字段数不匹配等
  19. else:
  20. print('要导入的文件不存在')

导出学生信息

  1. def save(self,fn):
  2. #导出学生信息
  3. with open(fn,'w',encoding = 'utf-8') as fp:
  4. for stu in self.stulist:
  5. fp.write(stu.no + ',')
  6. fp.write(stu.name + ',')
  7. fp.write(str(stu.chinese) + ',')
  8. fp.write(str(stu.math) + ',')
  9. fp.write(str(stu.english) + '\n')
  10. print("导出完毕")

求课程平均分

  1. def scoreavg(self):
  2. #求课程平均分
  3. length = len(self.stulist)
  4. if length > 0:
  5. chinese_avg = sum([stu.chinese for stu in self.stulist])/length
  6. math_avg = sum([stu.math for stu in self.stulist])/length
  7. english_avg = sum([stu.english for stu in self.stulist])/length
  8. print('语文成绩平均分是:%.2f'%chinese_avg)
  9. print('数学成绩平均分是:%.2f'%math_avg)
  10. print('英语成绩平均分是:%.2f'%english_avg)
  11. else:
  12. print('尚没有学生成绩...')

求课程最高分

  1. def scoremax(self):
  2. #求课程最高分
  3. if len(self.stulist) > 0:
  4. chinese_max = max([stu.chinese for stu in self.stulist])
  5. math_max = max([stu.math for stu in self.stulist])
  6. english_max = max([stu.english for stu in self.stulist])
  7. print('语文成绩最高分是:%d'%chinese_max)
  8. print('数学成绩最高分是:%d'%math_max)
  9. print('英语成绩最高分是:%d'%english_max)
  10. else:
  11. print('尚没有学生成绩...')

求课程最低分

  1. def scoremin(self):
  2. #求课程最低分
  3. if len(self.stulist) > 0:
  4. chinese_min = min([stu.chinese for stu in self.stulist])
  5. math_min = min([stu.math for stu in self.stulist])
  6. english_min = min([stu.english for stu in self.stulist])
  7. print('语文成绩最低分是:%d'%chinese_min)
  8. print('数学成绩最低分是:%d'%math_min)
  9. print('英语成绩最低分是:%d'%english_min)
  10. else:
  11. print('尚没有学生成绩...')

最后定义菜单函数和主函数:

  1. def infoprocess(self):
  2. #基本信息管理
  3. print('学生基本信息管理'.center(20,'-'))
  4. print('load----------导入学生信息')
  5. print('insert--------添加学生信息')
  6. print('delete--------删除学生信息')
  7. print('update--------修改学生信息')
  8. print('show----------显示学生信息')
  9. print('save----------导出学生信息')
  10. print('return--------返回')
  11. print('-'*28)
  12. while True:
  13. s = input('info>').strip().lower()
  14. if s == 'load':
  15. fn = input('请输入要导入的文件名:')
  16. self.load(fn)
  17. elif s == 'show':
  18. self.show()
  19. elif s == 'insert':
  20. self.insert()
  21. elif s == 'delete':
  22. self.delete()
  23. elif s == 'update':
  24. self.update()
  25. elif s == 'save':
  26. fn = input('请输入要导出的文件名:')
  27. self.save(fn)
  28. elif s =='return':
  29. break
  30. else:
  31. print('输入错误')
  32. def scoreprocess(self):
  33. #学生成绩统计
  34. print('学生成绩统计'.center(24,'='))
  35. print('avg --------课程平均分')
  36. print('max --------课程最高分')
  37. print('min --------课程最低分')
  38. print('return --------返回')
  39. print(''.center(30,'='))
  40. while True:
  41. s = input('score>').strip().lower()
  42. if s == 'avg':
  43. self.scoreavg()
  44. elif s == 'max':
  45. self.scoremax()
  46. elif s == 'min':
  47. self.scoremin()
  48. elif s == 'return':
  49. break
  50. else:
  51. print('输入错误')
  52. def main(self):
  53. #主控函数
  54. while True:
  55. print('学生信息管理系统V1.0'.center(24,'='))
  56. print('info -------学生基本信息管理')
  57. print('score -------学生成绩统计')
  58. print('exit -------退出系统')
  59. print(''.center(32,'='))
  60. s = input('main>').strip().lower()
  61. if s == 'info':
  62. self.infoprocess()
  63. elif s == 'score':
  64. self.scoreprocess()
  65. elif s == 'exit':
  66. break
  67. else:
  68. print('输入错误')
  69. if __name__ == '__main__':
  70. st = StudentList()
  71. st.main()

完整代码:

  1. import os
  2. class Student:
  3. def __init__(self,no,name,chinese,math,english):
  4. self.no = no
  5. self.name = name
  6. self.chinese = int(chinese)
  7. self.math = int(math)
  8. self.english = int(english)
  9. class StudentList:
  10. def __init__(self):
  11. self.stulist = []
  12. def show(self):
  13. #显示学生信息
  14. print('{:8}\t{:8}\t{:8}\t{:8}\t{:8}'
  15. .format('学号','姓名','语文','数学','英语'))
  16. for stu in self.stulist:
  17. print('{:8}\t{:8}\t{:<8}\t{:<8}\t{:<8}'
  18. .format(stu.no,stu.name,stu.chinese,stu.math,stu.english))
  19. def __enterScore(self,message):
  20. #成绩输入
  21. while True:
  22. try:
  23. score = input(message)
  24. if 0 <= int(score) <= 100:
  25. break
  26. else:
  27. print("输入错误,成绩应在0到100之间")
  28. except:
  29. print("输入错误,成绩应在0到100之间")
  30. return score
  31. def __exists(self,no):
  32. #判断学号是否存在
  33. for stu in self.stulist:
  34. if stu.no == no:
  35. return True
  36. else:
  37. return False
  38. def insert(self):
  39. #添加学生信息
  40. while True:
  41. no = input('学号:')
  42. if self.__exists(no):
  43. print('该学号已存在')
  44. else:
  45. name = input('姓名:')
  46. chinese = self.__enterScore('语文成绩:')
  47. math = self.__enterScore('数学成绩:')
  48. english = self.__enterScore('英语成绩:')
  49. stu = Student(no,name,chinese,math,english)
  50. self.stulist.append(stu)
  51. choice = input('继续添加(y/n)?').lower()
  52. if choice == 'n':
  53. break
  54. def delete(self):
  55. #删除学生信息
  56. while True:
  57. no = input('请输入要删除的学生学号:')
  58. for stu in self.stulist[::]:
  59. if stu.no == no:
  60. self.stulist.remove(stu)
  61. print('删除成功')
  62. break
  63. else:
  64. print('该学号不存在')
  65. choice = input('继续删除(y/n)?').lower()
  66. if choice == 'n':
  67. break
  68. def update(self):
  69. #修改学生信息
  70. while True:
  71. no = input('请输入要修改的学生学号:')
  72. if self.__exists(no):
  73. for stu in self.stulist:
  74. if stu.no == no:
  75. stu.name = input('姓名:')
  76. stu.chinese = int(self.__enterScore('语文成绩:'))
  77. stu.math = int(self.__enterScore('数学成绩:'))
  78. stu.english = int(self.__enterScore('英语成绩:'))
  79. print('修改成功')
  80. break
  81. else:
  82. print('该学号不存在')
  83. choice = input('继续修改(y/n)?').lower()
  84. if choice == 'n':
  85. break
  86. def load(self,fn):
  87. #导入学生信息
  88. if os.path.exists(fn):
  89. try:
  90. with open(fn,'r',encoding = 'utf-8') as fp:
  91. while True:
  92. fs = fp.readline().strip('\n')
  93. if not fs:
  94. break
  95. else:
  96. stu = Student(*fs.split(','))
  97. if self.__exists(stu.no):
  98. print('该学号已存在')
  99. else:
  100. self.stulist.append(stu)
  101. print('导入完毕')
  102. except:
  103. print('error...') #要导入的文件不是utf-8编码,或是字段数不匹配等
  104. else:
  105. print('要导入的文件不存在')
  106. def save(self,fn):
  107. #导出学生信息
  108. with open(fn,'w',encoding = 'utf-8') as fp:
  109. for stu in self.stulist:
  110. fp.write(stu.no + ',')
  111. fp.write(stu.name + ',')
  112. fp.write(str(stu.chinese) + ',')
  113. fp.write(str(stu.math) + ',')
  114. fp.write(str(stu.english) + '\n')
  115. print("导出完毕")
  116. def scoreavg(self):
  117. #求课程平均分
  118. length = len(self.stulist)
  119. if length > 0:
  120. chinese_avg = sum([stu.chinese for stu in self.stulist])/length
  121. math_avg = sum([stu.math for stu in self.stulist])/length
  122. english_avg = sum([stu.english for stu in self.stulist])/length
  123. print('语文成绩平均分是:%.2f'%chinese_avg)
  124. print('数学成绩平均分是:%.2f'%math_avg)
  125. print('英语成绩平均分是:%.2f'%english_avg)
  126. else:
  127. print('尚没有学生成绩...')
  128. def scoremax(self):
  129. #求课程最高分
  130. if len(self.stulist) > 0:
  131. chinese_max = max([stu.chinese for stu in self.stulist])
  132. math_max = max([stu.math for stu in self.stulist])
  133. english_max = max([stu.english for stu in self.stulist])
  134. print('语文成绩最高分是:%d'%chinese_max)
  135. print('数学成绩最高分是:%d'%math_max)
  136. print('英语成绩最高分是:%d'%english_max)
  137. else:
  138. print('尚没有学生成绩...')
  139. def scoremin(self):
  140. #求课程最低分
  141. if len(self.stulist) > 0:
  142. chinese_min = min([stu.chinese for stu in self.stulist])
  143. math_min = min([stu.math for stu in self.stulist])
  144. english_min = min([stu.english for stu in self.stulist])
  145. print('语文成绩最低分是:%d'%chinese_min)
  146. print('数学成绩最低分是:%d'%math_min)
  147. print('英语成绩最低分是:%d'%english_min)
  148. else:
  149. print('尚没有学生成绩...')
  150. def infoprocess(self):
  151. #基本信息管理
  152. print('学生基本信息管理'.center(20,'-'))
  153. print('load----------导入学生信息')
  154. print('insert--------添加学生信息')
  155. print('delete--------删除学生信息')
  156. print('update--------修改学生信息')
  157. print('show----------显示学生信息')
  158. print('save----------导出学生信息')
  159. print('return--------返回')
  160. print('-'*28)
  161. while True:
  162. s = input('info>').strip().lower()
  163. if s == 'load':
  164. fn = input('请输入要导入的文件名:')
  165. self.load(fn)
  166. elif s == 'show':
  167. self.show()
  168. elif s == 'insert':
  169. self.insert()
  170. elif s == 'delete':
  171. self.delete()
  172. elif s == 'update':
  173. self.update()
  174. elif s == 'save':
  175. fn = input('请输入要导出的文件名:')
  176. self.save(fn)
  177. elif s =='return':
  178. break
  179. else:
  180. print('输入错误')
  181. def scoreprocess(self):
  182. #学生成绩统计
  183. print('学生成绩统计'.center(24,'='))
  184. print('avg --------课程平均分')
  185. print('max --------课程最高分')
  186. print('min --------课程最低分')
  187. print('return --------返回')
  188. print(''.center(30,'='))
  189. while True:
  190. s = input('score>').strip().lower()
  191. if s == 'avg':
  192. self.scoreavg()
  193. elif s == 'max':
  194. self.scoremax()
  195. elif s == 'min':
  196. self.scoremin()
  197. elif s == 'return':
  198. break
  199. else:
  200. print('输入错误')
  201. def main(self):
  202. #主控函数
  203. while True:
  204. print('学生信息管理系统V1.0'.center(24,'='))
  205. print('info -------学生基本信息管理')
  206. print('score -------学生成绩统计')
  207. print('exit -------退出系统')
  208. print(''.center(32,'='))
  209. s = input('main>').strip().lower()
  210. if s == 'info':
  211. self.infoprocess()
  212. elif s == 'score':
  213. self.scoreprocess()
  214. elif s == 'exit':
  215. break
  216. else:
  217. print('输入错误')
  218. if __name__ == '__main__':
  219. st = StudentList()
  220. st.main()

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

闽ICP备14008679号