亲爱的亦菲彦祖们,欢迎回到我们的编程学习系列!在前两篇博客中,我们已经了解了类与对象的基本概念以及面向对象编程的三大核心特性——封装、继承、多态。今天,我们将通过一个实际的项目——学生信息管理系统,将所学的面向对象编程知识应用到实际开发中。让我们一起来动手,打造一个功能完善、结构清晰的学生管理系统吧!
一. 项目目标
通过本项目,亦菲彦祖们将:
- 深入理解面向对象开发过程中类内部功能的分析方法。
- 学会设计和实现常用的系统功能,包括添加、删除、修改、查询等操作。
- 掌握如何将对象存储在文件中,实现数据的持久化。
二. 系统需求分析
我们将开发一个学生信息管理系统,具体需求如下:
- 数据存储:
- 存储位置:文件(如
students.json
)。 - 存储形式:列表中存储学生对象。
- 存储位置:文件(如
- 系统功能:
- 添加学员:录入学生的姓名、语文成绩、数学成绩、英语成绩,并计算总分。
- 显示全部信息:展示所有学生的详细信息。
- 查询学员信息:根据姓名查询学生信息。
- 删除学员信息:根据姓名删除学生记录。
- 修改学员信息:根据姓名修改学生成绩。
- 保存学员信息:将当前数据保存到文件。
- 退出系统:保存数据并退出程序。
三. 具体实现
1. 学生类的设计
首先,我们需要设计一个学生类,用于封装学生的基本信息和相关操作。
需求:
- 属性:
name
(姓名)chinese
(语文成绩)math
(数学成绩)english
(英语成绩)total
(总分)
- 方法:
__init__
:初始化学生对象。__str__
:返回学生的详细信息字符串表示。
代码实现:
import json
class Student:
"""学生信息类"""
def __init__(self, name, chinese, math, english):
"""
初始化方法
:param name: 姓名
:param chinese: 语文成绩
:param math: 数学成绩
:param english: 英语成绩
"""
self.name = name
self.chinese = chinese
self.math = math
self.english = english
self.total = chinese + math + english # 总分
def __str__(self):
return f"{self.name}\t{self.chinese}\t{self.math}\t{self.english}\t{self.total}"
解释:
__init__
方法用于初始化学生对象,计算总分。__str__
方法使得打印学生对象时,能以表格形式显示其信息。
2. 学生管理系统类的设计
接下来,我们设计学生管理系统类,负责管理学生对象的增删改查及数据的加载和保存。
2.1 系统框架
需求:
- 程序入口:
- 加载数据。
- 显示功能菜单。
- 接收用户输入,执行相应操作。
- 系统功能函数:
- 添加、删除、修改、查询学生信息。
- 显示所有学生信息。
- 保存数据。
代码实现:
class StudentManager:
"""学生信息管理系统类"""
def __init__(self):
# 存储学员数据 -- 列表
self.student_list = []
# 程序入口函数
def run(self):
# 加载文件里面的学员数据
self.load_student()
while True:
# 显示功能菜单
self.show_menu()
# 用户输入目标功能序号
action = input('请选择您想要进行的操作(0-退出):')
# 根据用户输入的序号执行不同的功能
if action == '1':
# 新建学生信息
self.add_student()
elif action == '2':
# 显示全部信息
self.show_student()
elif action == '3':
# 查询学生信息
self.search_student()
elif action == '4':
# 删除学生信息
self.del_student()
elif action == '5':
# 修改学生信息
self.modify_student()
elif action == '0':