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

python学习目录传送门

Python 学生管理系统

目的:通过案例熟悉面向对象的设计思想,掌握Python面向对象编程的语法

需求:实现对学生信息的增加、删除、修改和查询。

架构设计:

界面选择使用控制台(也可以使用Web等等)。

识别对象(MVC三大类):界面视图类(V) 逻辑控制类(C) 数据模型类(M)

    Model:描述需要处理的数据的模型(类)

    View:负责处理界面逻辑

    Controller:负责处理业务逻辑

python精选18集(综合实例:学生管理系统实现)_第1张图片

完整代码

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()

你可能感兴趣的:(Python学习)