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()
12-31
2979
02-08
1367
12-30
1741