Python面向对象——员工信息管理系统【简陋版】

class EmployModel:
    """
        数据模型:打包不同对象的多维度数据
    """
    def __init__(self,eid=0, did=0, name="", salary=0):
        self.eid = eid # ID
        self.did = did # 部门编号
        self.name = name # 姓名
        self.salary = salary # 薪资


class EmployeeView:
    # 创建View对象,就为其创建一个伴随的Controller
    def __init__(self):
        self.controller = EmployeeController()

    def display_menu(self):
        print("++++++++++++++++")
        print("1.添加员工信息")
        print("2.删除员工信息")
        print("3.修改员工信息")
        print("4.查看员工信息")
        print("5.退出")
        print("++++++++++++++++")
    
    def select_option(self):
        option = input("请输入您的选项:")
        if option == "1": # 添加员工信息【要获取信息、存入信息 ——> M+V+C】
            self.get_employee_info()
        elif option == "2": # 删除员工信息【仅获取ID、删除信息 ——> V+C】
            self.delete_employee_info()
        elif option == "3": # 修改员工信息【要获取新信息、修改信息 ——> M+V+C】
            self.modify_employee_info()
        elif option == "4": # 查看员工信息 【仅展示信息 ——> V】
            self.show_employee_info()
        elif option == "5": # 退出 【单纯结束程序 ——> V】
            exit()

    def get_employee_info(self):
        emp = EmployModel()
        emp.did = int(input("请输入部门编号:"))
        emp.name = input("请输入员工姓名:")
        emp.salary = int(input("请输入员工薪资:"))
        if self.controller.add_employee(emp):
            print("添加成功")
        else:
            print("添加失败")

    def delete_employee_info(self):
        del_id = int(input("请输入要删除员工的ID:"))
        if self.controller.delete_employee(del_id):
            print("删除成功")
        else:
            print("删除失败")

    def modify_employee_info(self):
        employee_new_info = EmployModel()
        employee_new_info.eid = int(input("输入要修改员工的ID:"))
        employee_new_info.did = int(input("请输入部门编号:"))
        employee_new_info.name = input("请输入部门姓名:")
        employee_new_info.salary = int(input("请输入部门薪资:"))
        if self.controller.update_emp_info(employee_new_info):
            print("修改成功")
        else:
            print("修改失败")

    def show_employee_info(self):
        if self.controller.list_employee == []:
            print("暂无员工信息!")
        else:
            for item in self.controller.list_employee: # 语义:我的后台的员工列表
                print(f"{item.name}的员工编号为{item.eid}, 部门编号为:{item.did},薪资为:{item.salary}")


# 一个 V 对应一个 C,类似于开多个文件管理器【V】,改动【C】其中一个,则其余的视图呈现内容样式不受影响
class EmployeeController: 
    start_id = 1001

    @classmethod
    def set_id(cls,new_emp):
        new_emp.eid = cls.start_id
        cls.start_id += 1

    # 初始化一个列表,来存储数据。初始化一个ID,标识员工
    def __init__(self):
        self.list_employee = []
        # self.start_id = 1001# start_id 不能做成实例变量,要做成类变量
        # 因为:
        # View1     View2     View3
        #  C1        C2        C3 
        # 1001      1001      1001
        # 每个Controller都会有个1001,但是尽管开多份视图,数据都是一样的
        # 若做成实例变量,就会有三个员工的编号是1001,就不是唯一标识符了       
    
    def add_employee(self,new_emp):
        EmployeeController.set_id(new_emp)
        self.list_employee.append(new_emp)
        return True

    def delete_employee(self,del_id):
        for i in range(len(self.list_employee)):
            if self.list_employee[i].eid == del_id:
                del self.list_employee[i]
                return True
        return False
        # 错误写法:这种写法仅删除item这一局部变量,而没有删除列表中数据
        # for item in self.list_employee:
        #     if item.eid == del_id:
        #         del item
        #         return True
        # return False
    
    def update_emp_info(self,new_emp_info):
        for item in self.list_employee:
            if item.eid == new_emp_info.eid:
                item.__dict__ = new_emp_info.__dict__
                return True
        return False
    

view = EmployeeView()
while True:
    view.display_menu()
    view.select_option()

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python面向对象学生信息管理系统是一个用于管理学生信息的程序。它可以完成添加学生、删除学生、修改学生信息、查询学生信息、显示所有学生信息、保存学生信息以及退出系统等功能。该系统使用面向对象编程思想进行开发,主要由两个角色组成:学生和管理系统。 首先,你需要新建一个Python项目来实现这个学生信息管理系统。在项目中,你可以创建一个名为managerSystem的模块。 接下来,你可以导入managerSystem模块,并在main.py文件中启动学生管理系统。你可以通过创建一个名为student_manager的学生管理器的实例,并调用run()方法来启动系统。 在managerSystem模块中,你可以定义一个名为StudentManager的类。这个类将用于处理学生信息的增删改查操作。你可以在这个类中定义相应的方法来实现系统的各个功能。 总结起来,你可以按照以下步骤来编写这个Python面向对象学生信息管理系统: 1. 新建一个Python项目。 2. 创建managerSystem模块。 3. 导入managerSystem模块,并在main.py文件中启动学生管理系统。 4. 在managerSystem模块中定义一个StudentManager类。 5. 在StudentManager类中定义方法来实现学生信息的添加、删除、修改、查询、显示和保存等功能。 6. 运行程序,测试学生信息管理系统的各个功能。 这样,你就可以通过这个Python面向对象学生信息管理系统来管理学生的信息了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值