2025年6月4日 星期三 乙巳(蛇)年 三月初八 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

python精选18集(综合实例:学生管理系统实现)

时间:04-25来源:作者:点击数:63

Python 学生管理系统

  • 目的:通过案例熟悉面向对象的设计思想,掌握Python面向对象编程的语法
  • 需求:实现对学生信息的增加、删除、修改和查询。

架构设计:

  • 界面选择使用控制台(也可以使用Web等等)。
  • 识别对象(MVC三大类):界面视图类(V) 逻辑控制类(C) 数据模型类(M)
  • Model:描述需要处理的数据的模型(类)
  • View:负责处理界面逻辑
  • Controller:负责处理业务逻辑
在这里插入图片描述

完整代码

main.py

  • """
  • mian 启动类
  • """
  • from studentsys.view import StudentView
  • # 调用视图函数
  • view = StudentView()
  • view.main()

model.py

  • """
  • StudentModel类 学生信息模型
  • """
  • class StudentModel:
  • # 初始化学生信息数据对象
  • def __init__(self, name="", age=0, sex="", score=0.0, sid=0):
  • '''
  • 创建学生对象
  • :param id: 编号 该学生的唯一标识
  • :param name: 姓名 str
  • :param age: 年龄 int
  • :param score: 成绩 int
  • '''
  • self.name = name
  • self.age = age
  • self.sex = sex
  • self.score = score
  • # 学号 自增
  • self.sid = sid
  • # 返回学生对象的描述信息
  • def __str__(self):
  • return "%s的学号是%d,年龄是%d,性别是%s,成绩是%.2f" % (self.name, self.sid, self.age, self.sex, self.score)

controller.py

  • """
  • StudentController类 学生控制器:处理增删查业务
  • """
  • from studentsys.model import StudentModel
  • class StudentController:
  • def __init__(self):
  • # 学号从1开始
  • self.__start_sid = 1
  • self.__all_students = []
  • # 将所有学生方法私有化
  • @property
  • def all_students(self):
  • return self.__all_students
  • # 添加学生
  • def add_student(self,stu:StudentModel):
  • """
  • 添加学生
  • :param stu: StudentModel类型的学生对象,但是没有sid.
  • """
  • stu.sid = self.__start_sid
  • self.__start_sid += 1
  • self.__all_students.append(stu)
  • # 删除学生
  • # 定义返回的类型 函数删除数据,描述函数的返回类型为布尔值
  • def remove_student(self,sid)->bool:
  • for item in self.__all_students:
  • if item.sid == sid:
  • self.__all_students.remove(item)
  • return True
  • return False

view.py

  • """
  • StudentView类 系统界面视图 处理界面逻辑,负责获取和显示信息
  • """
  • from studentsys.controller import StudentController
  • from studentsys.model import StudentModel
  • class StudentView:
  • # 初始化学生控制器
  • def __init__(self):
  • self.__controller = StudentController()
  • # 处理输入的学生信息
  • def __input_student(self):
  • stu = StudentModel()
  • stu.name = input("请输入学生姓名:")
  • stu.age = self.__get_number("请输入学生年龄:")
  • stu.sex = input("请输入学生性别:")
  • stu.score = self.__get_number("请输入学生成绩:")
  • self.__controller.add_student(stu)
  • # 过滤输入的数字输入是否正确
  • def __get_number(self,message):
  • while True:
  • try:
  • data = int(input(message))
  • return data
  • except:
  • print("输入有误")
  • # 遍历学生信息
  • def __display_students(self):
  • for item in self.__controller.all_students:
  • print(item)
  • # 展示菜单
  • def __display_nemu(self):
  • print('+---------------------+')
  • print('| 1)添加学生信息 |')
  • print('| 2)显示学生信息 |')
  • print('| 3)删除学生信息 |')
  • print('+---------------------+')
  • # 选择菜单选项
  • def __select_menu(self):
  • item = input("请输入您的选项:")
  • if item == "1":
  • self.__input_student()
  • elif item == "2":
  • self.__display_students()
  • elif item == "3":
  • self.__delete_student()
  • # 删除学生信息
  • # 根据id删除学生
  • # 删除后返回结果 成功True/失败False
  • def __delete_student(self):
  • sid = self.__get_number("请输入需要删除的学生编号")
  • if self.__controller.remove_student(sid):
  • print("成功删除学生信息")
  • else:
  • print("输入有误,无法删除")
  • def main(self):
  • '''
  • 界面入口
  • :return:
  • '''
  • while True:
  • self.__display_nemu()
  • self.__select_menu()
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门