|
|
发表于 2025-11-23 23:28:16
|
显示全部楼层
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:同一个函数根据不同的参数返回不同的结果
第 1 题的答案是:调用时不需要区分对象
第 2 题的答案是:可以
第 3 题的答案是:不知道
第 4 题的答案是:降低了耦合度
第 5 题的答案是:不是
-------- 动动手 --------
请将第 0 题的代码写在下方:
#普通员工类
class 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):
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 get_salary(self):
return 3000+500*self.get_grade()+50*self.get_year()
#组长类
class Teamleader(Employee):
def get_salary(self):
return 4000+800*self.get_grade()+100*self.get_year()
#经理类
class Manager(Employee):
def get_salary(self):
return 5000+1000*(self.get_grade()+self.get_year())
#功能组件
class EmployeeMixin:
#检查工号
def is_exist(self,employees):
uid=int(input("请输入工号:"))
if employees.get(uid):
return uid
else:
return False
#职位对应的最高级别
def grade_total(self,job):
if job=='E':
maxlevel=10
if job=='T':
maxlevel=6
if job=='M':
maxlevel=3
return maxlevel
#统计不同职位员工
def type_count(self,employees):
counts=0
result={}
job=input("职位(E.普通员工;T.组长;M.经理):")
t={'E':'普通员工','T':'组长','M':'经理'}
for k,v in employees.items():
if v.job==job:
counts+=1
result[k]=v
if counts==0:
print(f"目前公司没有{t[job]}!")
else:
print(f"目前{t[job]}共有 {counts} 人:")
return result
class Admin(EmployeeMixin):
def __init__(self):
self.employees={}
self.uid=10000
def welcome(self):
ins=0
while ins!='5':
ins=input("1.录入;2.查询;3.升级;4.降级;5.退出:")
if ins=='1':
self.add()
if ins=='2':
self.view()
if ins=='3':
self.upgrade()
if ins=='4':
self.demote()
#实例化不同类型的员工
def employee_type(self,name,job,grade,year,uid):
if job=='E':
return Employee(name,job,grade,year,uid)
if job=='T':
return Teamleader(name,job,grade,year,uid)
if job=='M':
return Manager(name,job,grade,year,uid)
#程序功能:信息录入
def add(self):
name=input("姓名:")
job=input("职位(E.普通员工;T.组长;M.经理):")
year=int(input("工龄:"))
grade=int(input("级别:"))
maxlevel=self.grade_total(job)
while grade>maxlevel:
grade=int(input(f"该职位为高级别为{maxlevel},请重新录入级别:"))
employee=self.employee_type(name,job,grade,year,self.uid)
self.employees[self.uid]=employee
print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{self.employees[self.uid].get_salary()}\n")
self.uid+=1
#程序功能:查询
def view(self):
t=input("1.员工查询;2.职位查询:")
if t=='1':
uid=self.is_exist(self.employees)
if uid:
print("姓名:",self.employees[uid].get_name())
print("职位:",self.employees[uid].get_job())
print("级别:",self.employees[uid].get_grade())
print("工龄:",self.employees[uid].get_year())
print("薪资:",self.employees[uid].get_salary())
print()
else:
print("该工号不存在!\n")
if t=='2':
people=self.type_count(self.employees)
for k,v in people.items():
print(f"{k} - {v.name}")
print()
#程序功能:升级
def upgrade(self):
m=['E','T','M']
uid=self.is_exist(self.employees)
if uid:
name=self.employees[uid].get_name()
job=self.employees[uid].get_job()
grade=self.employees[uid].get_grade()
year=self.employees[uid].get_year()
salary=self.employees[uid].get_salary()
print(f"{name},工号:{uid},当前职位:{job}{grade},当前薪资:{salary}")
t=int(input("请输入需要增加的级数:"))
maxlevel=self.grade_total(job)
if grade+t>maxlevel:
i=m.index(job)
if i!=len(m)-1:
job=m[i+1]
grade=1
employee=self.employee_type(name,job,grade,year,uid)
self.employees[uid]=employee
print("升级成功!")
new_salary=self.employees[uid].get_salary()
print(f"{name},工号:{uid},升级后职位:{job}{grade},升级后薪资:{new_salary}(+{new_salary-salary})\n")
else:
grade=maxlevel
self.employees[uid].grade=grade
print("已是最高级别!\n")
print(f"{name},工号:{uid},增加级数后职位:{job}{grade}")
else:
self.employees[uid].grade=grade
print("未升级\n")
print(f"{name},工号:{uid},增加级数后职位:{job}{grade}")
else:
print("该工号不存在!\n")
#程序功能:降级
def demote(self):
m=['E','T','M']
uid=self.is_exist(self.employees)
if uid:
name=self.employees[uid].get_name()
job=self.employees[uid].get_job()
grade=self.employees[uid].get_grade()
year=self.employees[uid].get_year()
salary=self.employees[uid].get_salary()
print(f"{name},工号:{uid},当前职位:{job}{grade},当前薪资:{salary}")
t=int(input("请输入需要减少的级数:"))
if grade-t<=0:
i=m.index(job)
if i!=0:
job=m[i-1]
grade=self.grade_total(job)
employee=self.employee_type(name,job,grade,year,uid)
self.employees[uid]=employee
print("降级成功!")
new_salary=self.employees[uid].get_salary()
print(f"{name},工号:{uid},降级后职位:{job}{grade},升级后薪资:{new_salary}({new_salary-salary})\n")
else:
grade=1
self.employees[uid].grade=grade
print("已是最低级别!\n")
print(f"{name},工号:{uid},减少级数后职位:{job}{grade-t}")
else:
self.employees[uid].grade=grade-t
print("未降级\n")
print(f"{name},工号:{uid},减少级数后职位:{job}{grade-t}")
else:
print("该工号不存在!\n")
def main():
a=Admin()
a.welcome() |
|