【python面向对象】学生管理系统
文章目录
- 前言
- 软件设计流程
- 一、系统需求
- 二、项目分析
- 三、项目设计
- 四、项目计划
- 五、项目编码
- 六、项目内存图
- 七、运行结果
- 总结
前言
通过之前学的封装,现在做一个信息管理系统。
软件设计流程
一、系统需求
实现对学生信息的增加、删除、修改和查询。
二、项目分析
界面可能使用控制台,也可能使用Web等等。
- 识别对象:
- 界面视图类
- 逻辑控制类
- 数据模型类
- 分配职责:
- 界面视图类:负责处理界面逻辑,比如显示菜单,获取输入学生信息。
- 逻辑控制类:负责存储学生信息,处理业务逻辑。比如添加学生。
- 数据模型类:定义需要处理的数据类型。比如学生信息。比如学生信息。
- 建立交互。
界面视图对象数据模型对象逻辑控制对象
三、项目设计
- 数据模型类:StudentModel
–数据:编号id,姓名name,年龄age,成绩score - 逻辑控制类:StudentManagerController
–数据:学生列表__stu .list
–行为:获取列表 stu_list,添加学生add_student,删除学生remove_student,修改学生update_student - 界面视图类:StudentManagerView
–数据:逻辑控制对象__manager.
–行为:显示菜单__display_menu,选择菜单项__select_menu,输入学生__input_student,输出学生__output students,根据编号删除学生信息__delete_student,根据编号修改学生信息__modify_student
四、项目计划
- 完成数据模型类StudentModel
- 创建逻辑控制类StudentManagerController
- 完成数据:学生列表__stu .list
- 行为:获取列表 stu_list
- 添加学生add_student
- 根据编号删除学生delete_student
- 根据编号修改学生update_student
- 创建界面视图类StudentManagerView
- 完成数据:逻辑控制对象__manager.
- 显示菜单__display_menu
- 选择菜单项__select_menu
- 输入学生__input_student
- 输出学生__output students
- 根据编号删除学生信息__delete_student
- 根据编号修改学生信息__modify_student
五、项目编码
- 完成数据模型类StudentModel
class StudentModel: """ 学生模型 """ def __init__(self,name="",age=0,score=0,id=0): """ 创建学生对象 :param name::姓名,str类型 :param age:年龄,int类型 :param score:成绩,float类型 :param id: 编号(该学生对象的唯一标识) """ self.name = name self.age =age self.score = score self.id = id
- 创建逻辑控制类StudentManagerController
- 完成数据:学生列表__stu .list
- 行为:获取列表 stu_list
class StudentManagerController: """ 学生管理控制器,负责业务逻辑处理。 """ # 类变量,表示初始编号。 init_id = 1000 def __init__(self): self.__stu_list = [] @property def stu_list(self): """ 学生列表 :return: 存储学生对象的列表 """ return self.__stu_list
- 添加学生add_student
def add_student(self,stu_info): """ 添加一个新学生 :param stu_info:没有编号的学生信息 """ stu_info.id = self.__generate_id() #self.stu_list.append(stu_info) self.__stu_list.append(stu_info) def __generate_id(self): StudentManagerController.init_id += 1 return StudentManagerController.init_id
- 根据编号删除学生remove_student
def remove_student(self,id): """ 根据编号移除学生信息 :param id:编号 :return:是否移除 """ for item in self.__stu_list: if item.id == id: self.__stu_list.remove(item) return True#表示移除成功 return False#表示移除失败
- 修改学生update_student
def update_student(self,stu_info): """ 根据编号修改学生信息 :param id:编号 :return:是否修改 """ for item in self.__stu_list: if item.id == stu_info.id: item.name = stu_info.name item.age = stu_info.age item.score = stu_info.score return True#表示修改成功 return False#表示修改失败
- 创建界面视图类StudentManagerView
- 完成数据:逻辑控制对象__manager
class StudentManagerView: """ 学生管理器视图 """ def __init__(self): self.__manager = StudentManagerController()
- 显示菜单__display_menu
def __display_menu(self): print("1)添加学生") print("2)显示学生") print("3)删除学生") print("4)修改学生")
- 选择菜单项__select_menu
def __select_menu(self): item = input("请输入∶") if item == "1": self.__input_student() elif item == "2": self.__output_students(self.__manager.stu_list) elif item == "3": self.__delete_student() elif item == "4": self.__modify_student()
- 输入学生__input_student
def __input_student(self): name = input("请输入姓名∶") age = int(input("请输入年龄:")) score = float(input("请翰入成绩∶")) stu = StudentModel(name, age, score) self.__manager.add_student(stu)
- 输出学生__output students
def __output_students(self,list_output):for item in list_output: print(item.id,item.name,item.age,item.score)
- 根据编号删除学生信息__delete_student
def __delete_student(self): id = int(input("请输入编号∶")) if self.__manager.remove_student(id): print("删除成功") else: print ("删除失败")
- 根据编号修改学生信息__modify_student
def __modify_student(self): stu = StudentModel() stu.id = int(input("请输入需要修改的学生编号:")) stu.name = input("请物入新的学生名称:") stu.age = int(input("请输入新的学生年龄:")) stu.score = float(input("请输入新的学生成绩∶")) if self.__manager.update_student(stu): print("修改成功") else: print("修改失败")
六、项目内存图
添加学生的内存图:
其他图类似
七、运行结果
-
添加学生
-
显示学生
-
删除学生
-
修改学生
总结
本文设计的是一个简易的学生管理系统,在后期会进行一些功能的添加,初学者可以根据本文的思想将之前的购物车由面向过程改成面向对象。