Python员工信息管理系统V2(python系列21)

2023-12-14 18:27:52

前言:在python系列19,我们使用MVC架构初步完成员工信息管理系统,今天我们使用封装,继承,多态让我们的程序有隐藏的魅力,更加灵活,有扩展性。

实现的功能和python系列19一模一样,所以这里就不再展示功能与需求了,直接使用模块化,私有化,多态来更好的实现员工信息管理系统。

1.设计模型

员工信息管理系统设计模型
usl模块->StaffView类
? ? __display_menu() 显示菜单
? ? __select_menu() 选择菜单
? ? __input_staff() 录入员工信息 -> 调用StaffController类add_staff()
? ? __display_staff() 显示员工信息 -> 调用StaffModel类__str__方法
? ? __delete_staff() 删除员工信息 -> 调用StaffController类delete_staff()
? ? __modify_staff() 修改员工信息 -> 调用StaffController类modify_staff()
? ? main() 程序入口

bll模块->StaffController类
? ? __init__() 容器初始化
? ? add_staff() 添加员工 返回值:bool
? ? delete_staff() 删除员工 返回值:bool
? ? modify_staff() 修改员工 返回值:bool
dtl模块->StaffModel类
? ? __init__() 初始化,员工编号->staff_number、员工名称name、部门编号number、薪资wages
? ? __str__() 打印员工信息
? ? __eq__() 重写__eq__方法,通过名字判断两个员工是否相等,为了实现list.remove()方法

1.dtl

class StaffModel:
    def __init__(self, name="", staff_number=0, number=0, wages=0.0):
        self.name = name
        self.staff_number = staff_number
        self.number = number
        self.wages = wages

    def __str__(self):
        return f"name:{self.name}, staff_number:{self.staff_number}, number:{self.number}, wages:{self.wages}"

    def __lt__(self, other):
        return self.name < other.name

    def __eq__(self, other):
        return self.name == other.name

2.bll

from dtl import StaffModel


class StaffController:
    def __init__(self):
        self.list_staff = []

    def add_staff(self, staff: StaffModel):
        self.list_staff.append(staff)
        return True

    def delete_staff(self, staff_name):
        staff = StaffModel(staff_name)
        if staff in self.list_staff:
            self.list_staff.remove(staff)
            return True
        return False

    def modifying_staff(self, staff: StaffModel):
        for item in self.list_staff:
            if item.name == staff.name:
                item.__dict__ = staff.__dict__
                return True
        return False

3.usl

from bll import StaffController
from dtl import StaffModel


class StaffView:
    def __init__(self):
        self.__staffController = StaffController()

    @staticmethod
    def __display_menu():
        print("1. 录入员工信息")
        print("2. 显示员工信息")
        print("3. 修改员工信息")
        print("4. 删除员工信息")

    def __select_menu(self):
        num = input("请选择操作:")
        if num == "1":
            self.__input_staff()
        elif num == "2":
            self.__show_staff()
        elif num == "3":
            self.__modify_staff()
        elif num == "4":
            self.__delete_staff()
        else:
            print("输入错误,请重新输入!")

    def __input_staff(self):
        staff = StaffModel(
            input("请输入员工姓名:"),
            input("请输入员工工号:"),
            input("请输入员工职位:"),
            input("请输入员工薪资:")
        )
        print("添加成功!") if self.__staffController.add_staff(staff) else print("添加失败!")

    def __show_staff(self):
        for item in self.__staffController.list_staff:
            print(item)

    def __modify_staff(self):
        staff = StaffModel(
            input("请输入员工姓名:"),
            input("请输入员工新工号:"),
            input("请输入员工新职位:"),
            input("请输入员工新薪资:")
        )
        print("修改成功!") if self.__staffController.modifying_staff(staff) else print("修改失败!")

    def __delete_staff(self):
        print("修改成功!") if self.__staffController.delete_staff(input("请输入员工姓名:")) else print("修改失败!")

    def main(self):
        while True:
            self.__display_menu()
            self.__select_menu()

4.main

from usl import StaffView

if __name__ == '__main__':
    view = StaffView()
    view.main()

文章来源:https://blog.csdn.net/a12345dfsdf/article/details/134957308
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。