• Python学生成绩管信息理系统(面向对象)(学生信息篇)


    目录

    任务描述

    系统业务流程设计

    学生基本信息管理模块

    学生类的设计与实现

    学生管理类的设计与实现

    结语


    任务描述

    项目组接到一个新项目,要为某学校开发一个“学生信息管理系统”,经过与客户沟通交流,确定该系统的主要功能如下图所示。

    整个学生信息管理系统主要包括两大模块:基本信息管理和学生成绩管理

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

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

    系统业务流程设计

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

    如果用户输入“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)

    学生管理类的设计与实现

    设计一个学生信息管理类StudentList用于实现对所有学生信息的管理,如学生信息的添加、删除、修改和显示等功能。

    1. class StudentList:
    2. def __init__(self):
    3. self.stulist = []
    4. def show(self):
    5. #显示学生信息
    6. print('{:8}\t{:8}\t{:8}\t{:8}\t{:8}'
    7. .format('学号','姓名','语文','数学','英语'))
    8. for stu in self.stulist:
    9. print('{:8}\t{:8}\t{:<8}\t{:<8}\t{:<8}'
    10. .format(stu.no,stu.name,stu.chinese,stu.math,stu.english))
    11. def insert(self):
    12. #添加学生信息
    13. while True:
    14. no = input('学号:')
    15. name = input('姓名:')
    16. chinese = input('语文成绩:')
    17. math = input('数学成绩:')
    18. english = input('英语成绩:')
    19. stu = Student(no,name,chinese,math,english)
    20. self.stulist.append(stu)
    21. choice = input('继续添加(y/n)?').lower()
    22. if choice == 'n':
    23. break
    24. def delete(self):
    25. #删除学生信息
    26. while True:
    27. no = input('请输入要删除的学生学号:')
    28. for stu in self.stulist[::]:
    29. if stu.no == no:
    30. self.stulist.remove(stu)
    31. print('删除成功')
    32. break
    33. else:
    34. print('该学号不存在')
    35. choice = input('继续删除(y/n)?').lower()
    36. if choice == 'n':
    37. break
    38. def update(self):
    39. #修改学生信息
    40. while True:
    41. no = input('请输入要修改的学生学号:')
    42. for stu in self.stulist:
    43. if stu.no == no:
    44. stu.name = input('姓名:')
    45. stu.chinese = input('语文成绩:')
    46. stu.math = input('数学成绩:')
    47. stu.english = input('英语成绩:')
    48. print('修改成功')
    49. break
    50. else:
    51. print('该学号不存在')
    52. choice = input('继续修改(y/n)?').lower()
    53. if choice == 'n':
    54. break

    然后定义一个打印菜单的模块:

    1. def print_menu(self):
    2. #打印菜单
    3. print('学生基本信息管理'.center(20,'-'))
    4. print('insert--------添加学生信息')
    5. print('delete--------删除学生信息')
    6. print('update--------修改学生信息')
    7. print('show----------显示学生信息')
    8. print('return--------返回')
    9. print('-'*28)

    最后定义主函数:

    1. def main(self):
    2. #主控函数
    3. self.print_menu()
    4. while True:
    5. s = input('info>').strip().lower()
    6. if s == 'show':
    7. self.show()
    8. elif s == 'insert':
    9. self.insert()
    10. elif s == 'delete':
    11. self.delete()
    12. elif s == 'update':
    13. self.update()
    14. elif s =='return':
    15. break
    16. else:
    17. print('输入错误')
    18. if __name__ == '__main__':
    19. st = StudentList()
    20. st.main()
    21. 完成之后的完整代码如下:
    22. class Student:
    23. def __init__(self,no,name,chinese,math,english):
    24. self.no = no
    25. self.name = name
    26. self.chinese = int(chinese)
    27. self.math = int(math)
    28. self.english = int(english)
    29. class StudentList:
    30. def __init__(self):
    31. self.stulist = []
    32. def show(self):
    33. #显示学生信息
    34. print('{:8}\t{:8}\t{:8}\t{:8}\t{:8}'
    35. .format('学号','姓名','语文','数学','英语'))
    36. for stu in self.stulist:
    37. print('{:8}\t{:8}\t{:<8}\t{:<8}\t{:<8}'
    38. .format(stu.no,stu.name,stu.chinese,stu.math,stu.english))
    39. def insert(self):
    40. #添加学生信息
    41. while True:
    42. no = input('学号:')
    43. name = input('姓名:')
    44. chinese = input('语文成绩:')
    45. math = input('数学成绩:')
    46. english = input('英语成绩:')
    47. stu = Student(no,name,chinese,math,english)
    48. self.stulist.append(stu)
    49. choice = input('继续添加(y/n)?').lower()
    50. if choice == 'n':
    51. break
    52. def delete(self):
    53. #删除学生信息
    54. while True:
    55. no = input('请输入要删除的学生学号:')
    56. for stu in self.stulist[::]:
    57. if stu.no == no:
    58. self.stulist.remove(stu)
    59. print('删除成功')
    60. break
    61. else:
    62. print('该学号不存在')
    63. choice = input('继续删除(y/n)?').lower()
    64. if choice == 'n':
    65. break
    66. def update(self):
    67. #修改学生信息
    68. while True:
    69. no = input('请输入要修改的学生学号:')
    70. for stu in self.stulist:
    71. if stu.no == no:
    72. stu.name = input('姓名:')
    73. stu.chinese = input('语文成绩:')
    74. stu.math = input('数学成绩:')
    75. stu.english = input('英语成绩:')
    76. print('修改成功')
    77. break
    78. else:
    79. print('该学号不存在')
    80. choice = input('继续修改(y/n)?').lower()
    81. if choice == 'n':
    82. break
    83. def print_menu(self):
    84. #打印菜单
    85. print('学生基本信息管理'.center(20,'-'))
    86. print('insert--------添加学生信息')
    87. print('delete--------删除学生信息')
    88. print('update--------修改学生信息')
    89. print('show----------显示学生信息')
    90. print('return--------返回')
    91. print('-'*28)
    92. def main(self):
    93. #主控函数
    94. self.print_menu()
    95. while True:
    96. s = input('info>').strip().lower()
    97. if s == 'show':
    98. self.show()
    99. elif s == 'insert':
    100. self.insert()
    101. elif s == 'delete':
    102. self.delete()
    103. elif s == 'update':
    104. self.update()
    105. elif s =='return':
    106. break
    107. else:
    108. print('输入错误')
    109. if __name__ == '__main__':
    110. st = StudentList()
    111. st.main()

    运行程序:

    学生基本信息菜单

    添加学生信息

    删除学生信息

    修改学生信息

    显示学生信息

    结语

    本篇我们完成了学生成绩管理系统的学习信息部分,新建了一个学生基本信息和学生管理类,实现了面向对象的学生信息管理。

    通过学生基本信息管理菜单,我们可以实现学生信息的添加,删除,修改和显示。

    下篇我们将完善学生基本信息功能,增加外部文件导入和导出成外部文件的功能。

    同时,我们也将实现学生成绩管理系统的成绩统计相关功能。

     

  • 相关阅读:
    自定义mybatis插件实现sql日志打印
    Werkzeug的Map
    FreeRTOS两个死机原因(中断调用接口异常)【杂记】
    SSM整合
    当开发人员无法解决问题时,测试人员应该如何与他们沟通?
    编译libkml-1.3.0报错:minizip/crypt.h:没有那个文件或目录
    数据结构 栈Stack的理解与C语言实现
    设计模式:桥接器模式(C++实现)
    tensorrt的安装和使用
    MySQL 练习<1>
  • 原文地址:https://blog.csdn.net/agelee/article/details/126664530