• Python实现面向对象版学员管理系统


    如有错误,敬请谅解!

    此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!!

    1.1需求分析

        1.1.1使用面向对象编程思想完成学员管理系统的开发,具体如下:

    • 系统要求:学员数据存储在文件中
    • 系统功能:添加学员、删除学员、修改学员信息、查询学员信息、显示所有学员信息、保存学员信息及退 出系统等功能

    1.2 角色分析

        1.2.1在面向对象编程思想中,必须找到要具体实现操作的实体。

        1.2.2分析:

    •         通过系统实现添加学员操作
    •         通过系统实现删除学员操作 ....

        1.2.3注意:

    •         为了方便维护代码,一般一个角色一个程序文件
    •         项目要有主程序入口,习惯为 main.py

    1.3创建项目

    1.3.1. 创建一个student项目名的项目

    1.3.2. 创建学生信息的文件:student.py

    1.3.3. 创建信息管理的文件:studentManager.py

    1.3.4. 创建主入口文件:main.py

    1.4 student.py

        1.4.1. 需求:学员(主体) => 属性(姓名、年龄、电话)

        1.4.2. 注意:添加 __str__ 魔法方法,方便查看学员对象信息

    1. # 定义一个Student类
    2. class Student():
    3. # 定义魔术方法,用于初始化属性信息
    4. def __init__(self, name, age, mobile):
    5. self.name = name
    6. self.age = age
    7. self.mobile = mobile
    8. # 定义魔术方法,用于打印输出学员信息
    9. def __str__(self):
    10. return f'{self.name}, {self.age}, {self.mobile}'

    1.5 studentManager.py

        1.5.1. 需求:

             存储数据的文件名:student.data

                 加载文件数据

                 修改数据后保存到文件

             存储数据的形式:列表存储学员对象

             系统功能:

                      添加学员信息

                      删除学员信息

                      修改学员信息

                      查询学员信息

                      显示所有学员信息

                      保存学员信息

                      退出系统

    1. from student import Student
    2. class StudentManager(object):
    3. # 定义一个__init__魔术方法,用于初始化数据
    4. def __init__(self):
    5. # 初始化一个student_list属性,用于将来保存所有学员对象信息
    6. self.student_list = []
    7. # 定义load_student()方法
    8. def load_student(self):
    9. # 捕获异常
    10. try:
    11. f = open('student.data', 'r', encoding='utf-8')
    12. except:
    13. f = open('student.data', 'w', encoding='utf-8')
    14. else:
    15. # 如果文件存在,没有异常,则执行else语句
    16. content = f.read()
    17. # 把字符串转换为原数据类型[{}, {}, {}]
    18. data = eval(content)
    19. # 把列表中的所有字典 => 转换为对象
    20. self.student_list = [Student(i['name'], i['age'], i['mobile']) for i in data]
    21. finally:
    22. f.close()
    23. # 定义静态show_help()方法
    24. @staticmethod
    25. def show_help():
    26. print('-' * 40)
    27. print('===========学员信息管理系统V2.0===========')
    28. print('=============1.添加学员信息==============')
    29. print('=============2.删除学员信息==============')
    30. print('=============3.修改学员信息==============')
    31. print('=============4.查询学员信息==============')
    32. print('=============5.显示所有学员信息===========')
    33. # V2.0新增功能
    34. print('=============6.保存学员信息==============')
    35. print('=============7.退出系统=================')
    36. print('-' * 40)
    37. def add_student(self):
    38. # 提示用户输入学员信息
    39. name = input('请输入学员的姓名:')
    40. age = int(input('请输入学员的年龄:'))
    41. mobile = input('请输入学员的学号:')
    42. # 使用Student类实例化对象
    43. student = Student(name, age, mobile)
    44. # 调用student_list属性,追加student对象信息
    45. self.student_list.append(student)
    46. print('学员信息已添加成功')
    47. def del_student(self):
    48. # 提示用户输入要删除的学员姓名
    49. name = input('请输入要删除的学员姓名:')
    50. # 对student_list属性(本质列表)进行遍历
    51. for i in self.student_list:
    52. if i.name == name:
    53. # 找到了要删除的学员,删除
    54. self.student_list.remove(i)
    55. print(f'学员{name}信息删除成功')
    56. break
    57. else:
    58. print('您要删除的学员不存在...')
    59. def mod_student(self):
    60. # 提示用户输入要修改的学员姓名
    61. name = input('请输入要修改的学员姓名:')
    62. # 对student_list属性进行遍历,判断要修改的学员姓名是否存在
    63. for i in self.student_list:
    64. if i.name == name:
    65. i.name = input('请输入修改后的学员姓名:')
    66. i.age = int(input('请输入修改后的学员年龄:'))
    67. i.mobile = input('请输入修改后的学员电话:')
    68. print(f'学员信息修改成功,修改后信息如下 => 学员姓名:{i.name},学员年龄:{i.age},学员电话:{i.mobile}')
    69. break
    70. else:
    71. print('您要修改的学员信息不存在...')
    72. def show_student(self):
    73. # 提示用户输入要查询的学员姓名
    74. name = input('请输入要查询的学员姓名:')
    75. # 对student_list属性进行遍历
    76. for i in self.student_list:
    77. if i.name == name:
    78. print(i)
    79. break
    80. else:
    81. print('您要查找的学员信息不存在...')
    82. def show_all(self):
    83. # 直接对列表进行遍历
    84. for i in self.student_list:
    85. print(i)
    86. def save_student(self):
    87. # 打开文件
    88. f = open('student.data', 'w', encoding='utf-8')
    89. # 把列表中的对象转换为字典
    90. new_list = [i.__dict__ for i in self.student_list]
    91. # 文件读写(写入)
    92. f.write(str(new_list))
    93. # 关闭文件
    94. f.close()
    95. # 提示用户数据已经保存成功了
    96. print('学员信息保存成功')
    97. # 定义一个run()方法,专门用于实现对管理系统中各个功能调用
    98. def run(self):
    99. # 1、调用一个学员加载方法,用于加载文件中的所有学员信息,加载完成后,把得到的所有学员信息保存在student_list属性中
    100. self.load_student()
    101. # 2、显示帮助信息,提示用户输入要实现的功能编号
    102. while True:
    103. # 显示帮助信息
    104. self.show_help()
    105. # 提示用户输入要操作功能编号
    106. user_num = int(input('请输入要操作功能的编号:'))
    107. if user_num == 1:
    108. self.add_student()
    109. elif user_num == 2:
    110. self.del_student()
    111. elif user_num == 3:
    112. self.mod_student()
    113. elif user_num == 4:
    114. self.show_student()
    115. elif user_num == 5:
    116. self.show_all()
    117. elif user_num == 6:
    118. self.save_student()
    119. elif user_num == 7:
    120. print('感谢您使用openlab信息管理系统V2.0,欢迎下次使用!')
    121. break
    122. else:
    123. print('信息输入错误,请重新输入...')

    1.6 main.py

    1. # 从studentManager模块中导入StudentManager类功能
    2. from studentManager import StudentManager
    3. # 定义入口代码
    4. if __name__ == '__main__':
    5. student_manager = StudentManager()
    6. student_manager.run()
    7. # 整个程序需要在main开始执行

    如有错误,敬请谅解!

    此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!!

  • 相关阅读:
    136. 只出现一次的数字
    (进阶)004 - AWS DeepRacer重要资料合集
    【CVPR 2021】pixelNeRF: Neural Radiance Fields from One or Few Images
    [论文评析]AdaptivePose: Human Parts as Adaptive Points,AAAI 2022
    Java并发编程学习13-任务取消(下)
    解释在Android中如何实现本地存储,包括SQLite数据库和SharedPreferences。
    「专升本信息技术」计算机基础知识单选题集 (15)
    Qt 框架 6.6版本添加响应式布局,并兼容AArch64 架构
    Tomcat7集成链路追踪SkyWalking6.6版本
    Java后端开发工程师学习笔记【狂神说Java笔记】
  • 原文地址:https://blog.csdn.net/m0_54803732/article/details/131153118