|
|
发表于 2025-3-11 20:43:28
|
显示全部楼层
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
第 1 题的答案是:
第 2 题的答案是:
第 3 题的答案是:
第 4 题的答案是:
第 5 题的答案是:
-------- 动动手 --------
请将第 0 题的代码写在下方:class Employee: #先设置总类Employee,再设置分类各种员工类型
"""员工基类"""
def __init__(self, name, job, grade, year, uid):
self.name = name
self.job = job
self.grade = grade
self.year = year
self.uid = uid
def get_uid(self): #在员工基类上先把各种def get函数设置好
return self.uid
def get_name(self):
return self.name
def get_job(self):
return self.job
def get_grade(self):
return self.grade
def get_year(self):
return self.year
def salary(self):
"""工资计算方法(由子类实现)"""
pass
class CommonEmployee(Employee): #再设置分类,各种员工类别
"""普通员工类"""
def __init__(self, name, grade, year, uid):
super().__init__(name, 'E', grade, year, uid)
def salary(self): #工资这种分情况的在分类中设置
return 3000 + 500 * self.grade + 50 * self.year
class Teamleader(Employee):
"""组长类"""
def __init__(self, name, grade, year, uid):
super().__init__(name, 'T', grade, year, uid)
def salary(self):
return 4000 + 800 * self.grade + 100 * self.year
class Manager(Employee):
"""经理类"""
def __init__(self, name, grade, year, uid):
super().__init__(name, 'M', grade, year, uid)
def salary(self):
return 5000 + 1000 * (self.grade + self.year)
class EmployeeManage:
"""员工管理类"""
def __init__(self):
self.employees = {} # 存储员工信息
self.current_uid = 10000 # 起始工号
def add_employee(self):
"""录入员工数据"""
name = input("姓名:")
job = input("职位(E.普通员工;T.组长;M.经理):").strip()
year = int(input("工龄:"))
grade = int(input("级别:"))
# 职位对应的类和最高级别
job_class = {'E': CommonEmployee, 'T': Teamleader, 'M': Manager}
max_grade = {'E': 10, 'T': 6, 'M': 3}
if grade > max_grade[job]:
grade = int(input(f"该职位最高级别为{max_grade[job]},请重新录入级别:"))
# 创建员工实例并存储
employee = job_class[job](name, grade, year, self.current_uid)
self.employees[self.current_uid] = employee
print(f"录入成功!姓名:{name},工号:{self.current_uid},薪资:{employee.salary()}")
self.current_uid += 1
def search_employee(self):
"""查询员工信息"""
choice = input("1.员工查询;2.职位查询:")
if choice == '1':
uid = int(input("请输入工号:"))
employee = self.employees.get(uid)
if employee:
print(f"姓名:{employee.get_name()}")
print(f"职位:{employee.get_job()}")
print(f"级别:{employee.get_grade()}")
print(f"工龄:{employee.get_year()}")
print(f"薪资:{employee.salary()}")
else:
print("该工号不存在!")
elif choice == '2':
job = input("职位(E.普通员工;T.组长;M.经理):").strip()
count = 0
result = []
for emp in self.employees.values():
if emp.get_job() == job:
count += 1
result.append(f"{emp.get_uid()} - {emp.get_name()}")
if count == 0:
print(f"目前公司没有{job}!")
else:
print(f"目前{job}共有 {count} 人:")
for r in result:
print(r)
def promote_employee(self):
"""员工升级"""
uid = int(input("请输入工号:"))
employee = self.employees.get(uid)
if not employee:
print("工号不存在")
return
print(f"{employee.get_name()},工号:{employee.get_uid()},当前职位:{employee.get_job()}{employee.get_grade()},当前薪资:{employee.salary()}")
add_grade = int(input("请输入需要增加的级数:"))
job_grade = {'E': 10, 'T': 6, 'M': 3}
current_max = job_grade[employee.get_job()]
new_grade = employee.get_grade() + add_grade
# 处理升职逻辑
if new_grade > current_max:
job_map = {'E': 'T', 'T': 'M'}
if employee.get_job() in job_map:
new_job = job_map[employee.get_job()]
new_grade = 1
else: # 已是经理,不能再升
new_grade = current_max
new_job = employee.get_job()
else:
new_job = employee.get_job()
# 更新员工信息
new_emp = {'E': CommonEmployee, 'T': Teamleader, 'M': Manager}[new_job](
employee.get_name(), new_grade, employee.get_year(), uid)
self.employees[uid] = new_emp
print(f"升级成功!{employee.get_name()},工号:{uid},升级后职位:{new_job}{new_grade},升级后薪资:{new_emp.salary()}(+{new_emp.salary() - employee.salary()})")
def demote_employee(self):
"""员工降级"""
uid = int(input("请输入工号:"))
employee = self.employees.get(uid)
if not employee:
print("工号不存在")
return
print(f"{employee.get_name()},工号:{employee.get_uid()},当前职位:{employee.get_job()}{employee.get_grade()},当前薪资:{employee.salary()}")
reduce_grade = int(input("请输入需要减少的级数:"))
job_grade = {'E': 10, 'T': 6, 'M': 3}
current_grade = employee.get_grade()
new_grade = current_grade - reduce_grade
current_job = employee.get_job()
# 处理降职逻辑
if new_grade < 1:
job_map = {'T': 'E', 'M': 'T'}
if current_job in job_map:
new_job = job_map[current_job]
new_grade = job_grade[new_job]
else: # 已是普通员工,不能再降
new_grade = 1
new_job = current_job
else:
new_job = current_job
# 更新员工信息
new_emp = {'E': CommonEmployee, 'T': Teamleader, 'M': Manager}[new_job](
employee.get_name(), new_grade, employee.get_year(), uid)
self.employees[uid] = new_emp
print(f"降级成功!{employee.get_name()},工号:{uid},降级后职位:{new_job}{new_grade},降级后薪资:{new_emp.salary()}(+{new_emp.salary() - employee.salary()})")
def main():
manage = EmployeeManage() #main函数调用程序管理总类
while True:
print("1.录入;2.查询;3.升级;4.降级;5.退出:", end="")
choice = input().strip()
if choice == '1':
manage.add_employee()
elif choice == '2':
manage.search_employee()
elif choice == '3':
manage.promote_employee()
elif choice == '4':
manage.demote_employee()
elif choice == '5':
print("退出程序")
break
else:
print("无效选择,请重新输入")
if __name__ == "__main__":
main() |
|