Python创建一个名为 Employee 的类,其中包含关于员工的以下数据:姓名、工号、部门和职位。完成 Employee 类定义后,从键盘输入5个员工的数据并存入对象中,并将5个对象以工号作为 key 存入字典中。提供简单菜单,完成以下功能: ●在字典中查找雇员;●将新员工添加到字典; ●更改字典中现有员工的姓名、部门和职位;●从字典中删除一名员工; ●退出程序。 程序结束时,它应该序列化字典并将其保存到文件中。每次程序启动时,都应该尝试从文件中加载序列化的字典。如果文件不存在,则程序应该以空字典开始。每一行加上注释
时间: 2024-02-05 17:12:35 浏览: 159
以下是实现上述要求的代码:
``` python
import pickle # 导入 pickle 模块,用于序列化和反序列化数据
class Employee:
def __init__(self, name, emp_id, department, position):
self.name = name
self.emp_id = emp_id
self.department = department
self.position = position
employees_dict = {} # 创建一个空字典来存储员工信息
try:
with open('employees.pickle', 'rb') as f:
employees_dict = pickle.load(f) # 尝试从文件中加载序列化的字典
except FileNotFoundError:
pass # 如果文件不存在,则程序以空字典开始
while True:
# 输出简单菜单
print("\n1. 查找雇员\n2. 添加新雇员\n3. 更改雇员信息\n4. 删除雇员\n5. 退出程序")
choice = input("请输入您的选择:")
if choice == "1": # 查找雇员
emp_id = input("请输入要查找的工号:")
if emp_id in employees_dict:
emp_info = employees_dict[emp_id]
print("姓名:{}\n工号:{}\n部门:{}\n职位:{}".format(emp_info.name, emp_info.emp_id, emp_info.department, emp_info.position))
else:
print("没有找到该员工!")
elif choice == "2": # 添加新雇员
name = input("请输入姓名:")
emp_id = input("请输入工号:")
department = input("请输入部门:")
position = input("请输入职位:")
new_emp = Employee(name, emp_id, department, position)
employees_dict[emp_id] = new_emp
print("新员工添加成功!")
elif choice == "3": # 更改雇员信息
emp_id = input("请输入要更改信息的员工工号:")
if emp_id in employees_dict:
emp_info = employees_dict[emp_id]
name = input("请输入新姓名(原姓名为{}):".format(emp_info.name))
department = input("请输入新部门(原部门为{}):".format(emp_info.department))
position = input("请输入新职位(原职位为{}):".format(emp_info.position))
emp_info.name = name if name else emp_info.name
emp_info.department = department if department else emp_info.department
emp_info.position = position if position else emp_info.position
employees_dict[emp_id] = emp_info
print("员工信息更新成功!")
else:
print("没有找到该员工!")
elif choice == "4": # 删除雇员
emp_id = input("请输入要删除的员工工号:")
if emp_id in employees_dict:
del employees_dict[emp_id]
print("员工删除成功!")
else:
print("没有找到该员工!")
elif choice == "5": # 退出程序
with open('employees.pickle', 'wb') as f:
pickle.dump(employees_dict, f) # 序列化字典并保存到文件
print("程序已退出。")
break
else:
print("输入无效,请重新输入!")
```
注释已加在代码中,希望能对你有所帮助。
阅读全文