|
|
发表于 2025-2-11 13:53:56
|
显示全部楼层
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:Python通过方法重写和鸭子类型实现多态,允许不同类的对象对同一方法做出不同的响应,而不需要显式继承或类型检查。
第 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 salary(self):
return 3000+500*self.grade+50*self.year
class Teamleader(Employee):
def salary(self):
return 4000+800*self.grade+100*self.year
class Manager(Employee):
def salary(self):
return 5000+1000*(self.grade+self.year)
class Manage:
def __init__(self):
self.uid=10000
self.all_Employee={}
self.E={}
self.T={}
self.M={}
def func(self):
a=0
while a!='5':
a=input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
if a=="1":
self.create()
if a=='2':
self.search()
if a in ("3","4"):
self.change_grade(a)
if a=="5":
break
def create(self):
name=input("姓名:")
job=input("职位(E.普通员工;T.组长;M.经理):")
year=int(input("工龄:"))
grade=int(input("级别:"))
if job=="E":
while grade>10:
grade=int(input("该职位最高级别为10,请重新录入级别:"))
e=Employee(name,job,grade,year,self.uid)
s=e.salary()
self.E[self.uid]=e
if job=="T":
while grade>6:
grade=int(input("该职位最高级别为6,请重新录入级别:"))
e=Teamleader(name,job,grade,year,self.uid)
s=e.salary()
self.T[self.uid]=e
if job=="M":
while grade>3:
grade=int(input("该职位最高级别为3,请重新录入级别:"))
e=Manager(name,job,grade,year,self.uid)
s=e.salary()
self.M[self.uid]=e
self.all_Employee[self.uid]=e
print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{s}")
self.uid+=1
def search(self):
b=input("1.员工查询;2.职位查询:")
if b=='1':
uid=int(input("请输入工号"))
if uid not in self.all_Employee:
print("该工号不存在!")
else:
x=self.all_Employee[uid]
print(f"姓名:{x.name}\n职位:{x.job}\n级别:{x.grade}\n工龄:{x.year}\n薪资:{x.salary()}")
if b=='2':
c=input("职位(E.普通员工;T.组长;M.经理):")
if c=="E":
num=len(self.E)
if num==0:
print("目前公司没有普通员工!")
else:
print(f"目前普通员工有{num}人:")
for i in self.E:
print(f"{i} - {self.E[i].name}")
if c=="T":
num=len(self.T)
if num==0:
print("目前公司没有组长!")
else:
print(f"目前普通员工有{num}人:")
for i in self.T:
print(f"{i} - {self.T[i].name}")
if c=="M":
num=len(self.M)
if num==0:
print("目前公司没有经理!")
else:
print(f"目前普通员工有{num}人:")
for i in self.M:
print(f"{i} - {self.M[i].name}")
def change_grade(self,a):
uid=int(input("请输入工号:"))
if uid not in self.all_Employee:
print("该工号不存在!")
info=self.all_Employee[uid]
print(f"{info.name},工号:{uid},当前职位:{info.job}{info.grade},当前薪资{info.salary()}")
rs=info.salary()
if a=='4':
dgrade=int(input("请输入需要减少的级数:"))
if info.job=="E":
if (info.grade-dgrade)<0:
ngrade=1
e=Employee(info.name,"E",ngrade,info.year,uid)
self.E[uid]=e
else:
ngrade=(info.grade-dgrade)
e=Employee(info.name,"E",ngrade,info.year,uid)
self.E[uid]=e
if info.job=="T":
if (info.grade-dgrade)<0:
ngrade=10
e=Employee(info.name,"E",ngrade,info.year,uid)
self.E[uid]=e
del self.T[uid]
else:
ngrade=(info.grade-dgrade)
e=Teamleader(info.name,"T",ngrade,info.year,uid)
self.T[uid]=e
if info.job=="M":
if (info.grade-dgrade)<0:
ngrade=6
e=Teamleader(info.name,"T",ngrade,info.year,uid)
self.T[uid]=e
del self.M[uid]
else:
ngrade=(info.grade-dgrade)
e=Manager(info.name,"M",ngrade,info.year,uid)
self.M[uid]=e
self.all_Employee[uid]=e
s=e.salary()
print("降级成功!")
print(f"{e.name},工号:{uid},降级后的职位:{e.job}{str(e.grade)},降级后的薪资:{s}({s-rs})")
if a=='3':
igrade=int(input("请输入需要增加的级数:"))
if info.job=="E":
if info.grade+igrade>10:
ngrade=1
e=Teamleader(info.name,"T",ngrade,info.year,uid)
self.T[uid]=e
del self.E[uid]
else:
ngrade=info.grade+igrade
e=Employee(info.name,info.job,ngrade,info.year,uid)
self.E[uid]=e
if info.job=="T":
if info.grade+igrade>6:
ngrade=1
e=Manager(info.name,"M",ngrade,info.year,uid)
self.M[uid]=e
del self.T[uid]
else:
ngrade=info.grade+igrade
e=Teamleader(info.name,info.job,ngrade,info.year,uid)
self.T[uid]=e
if info.job=="M":
if info.grade+igrade>3:
ngrade=3
e=Manger(info.name,"M",ngrade,info.year,uid)
self.M[uid]=e
else:
ngrade=info.grade+igrade
e=Manager(info.name,"M",ngrade,info.year,uid)
self.M[uid]=e
self.all_Employee[uid]=e
s=e.salary()
print("升级成功!")
print(f"{e.name},工号:{uid},升级后的职位:{e.job}{str(e.grade)},升级后的薪资:{s}(+{s-rs})")
def main():
m=Manage()
m.func()
|
|