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
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍如何使用 Python 制作一个简易的学生信息管理系统。这个系统将使用面向对象编程的方式实现,可以方便地添加、删除和修改学生信息。 首先,我们需要定义一个 `Student` 类,用来表示学生信息。每个学生都有姓名、学号、年龄等基本信息,可以使用类的属性来表示: ```python class Student: def __init__(self, name, student_id, age): self.name = name self.student_id = student_id self.age = age ``` 在 `__init__` 方法中,我们定义了三个属性,分别对应学生的姓名、学号和年龄。接下来,我们需要添加一些方法,来实现学生信息的添加、删除和修改: ```python class Student: def __init__(self, name, student_id, age): self.name = name self.student_id = student_id self.age = age def get_name(self): return self.name def set_name(self, name): self.name = name def get_student_id(self): return self.student_id def set_student_id(self, student_id): self.student_id = student_id def get_age(self): return self.age def set_age(self, age): self.age = age ``` 在上面的代码中,我们定义了六个方法,分别对应获取和设置学生的姓名、学号和年龄。这些方法可以方便地对学生信息进行修改。 接下来,我们可以创建一个 `StudentManager` 类,用来管理所有的学生信息。这个类包含了一个学生列表,可以添加、删除和修改学生信息: ```python class StudentManager: def __init__(self): self.students = [] def add_student(self, student): self.students.append(student) def remove_student(self, student): self.students.remove(student) def get_all_students(self): return self.students def search_student_by_id(self, student_id): for student in self.students: if student.get_student_id() == student_id: return student return None ``` 在上面的代码中,我们定义了四个方法,分别对应添加、删除、获取所有学生和根据学号查找学生。这些方法可以方便地对学生信息进行管理。 现在,我们可以创建一个 `main` 函数,来实现学生信息管理系统的基本功能: ```python def main(): manager = StudentManager() # 添加学生 student1 = Student('张三', '001', 18) manager.add_student(student1) student2 = Student('李四', '002', 19) manager.add_student(student2) student3 = Student('王五', '003', 20) manager.add_student(student3) # 查找学生 s = manager.search_student_by_id('001') print(s.get_name(), s.get_student_id(), s.get_age()) # 修改学生信息 s.set_name('赵六') s.set_age(21) # 删除学生 manager.remove_student(student3) # 打印所有学生信息 students = manager.get_all_students() for student in students: print(student.get_name(), student.get_student_id(), student.get_age()) ``` 在上面的代码中,我们首先创建了一个 `StudentManager` 对象,并添加了三个学生。然后,我们使用 `search_student_by_id` 方法查找学号为 '001' 的学生,并打印出其姓名、学号和年龄。接着,我们使用 `set_name` 和 `set_age` 方法修改了该学生的姓名和年龄。然后,我们使用 `remove_student` 方法删除了一个学生。最后,我们使用 `get_all_students` 方法获取所有学生信息,并打印出来。 这样,一个简易的学生信息管理系统就完成了。您可以根据自己的需求,继续添加其他功能,如文件读写、GUI 界面等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值