|
|
发表于 2024-4-22 23:49:49
|
显示全部楼层
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:同一个运算符、函数或对象在不同的场景下有不同的作用
第 1 题的答案是:可以应用于不同的场景
第 2 题的答案是:可以
第 3 题的答案是:一个鸟,走起来像鸭子,游起泳来像鸭子,叫起来也像鸭子,那么这个鸟就可以称之为鸭子。
第 4 题的答案是:低耦合
第 5 题的答案是:是
-------- 动动手 --------
请将第 0 题的代码写在下方:
class Arbeiter:
def __init__(self, name, job, grade, year, uid, salary):
self.name = name
self.job = job
self.grade = grade
self.year = year
self.uid = uid
self.salary = salary
def get_uid(self, serial):
uid = serial
return uid
def get_name(self):
name = input("姓名:")
return name
def get_job(self):
job = input("职位(E.普通员工;T.组长;M.经理):")
while True:
if job == 'E' or job == 'T' or job == 'M':
break
else:
job = input("该职位不存在,请重新输入(E.普通员工;T.组长;M.经理):")
return job
def get_grade(self, job):
grade = int(input("级别:"))
if job == 'E':
stufe = EmployeeMaxin.set_grade(self, grade)
if job == 'T':
stufe = TeamleaderMaxin.set_grade(self, grade)
if job == 'M':
stufe = ManagerMaxin.set_grade(self, grade)
return stufe
def get_year(self):
year = int(input("工龄:"))
while year < 0:
year = int(input("输入错误,请重新输入工龄:"))
return year
def get_salary(self, job, grade, year):
if job == 'E':
salary = EmployeeMaxin.salary(self, grade, year)
if job == 'T':
salary = TeamleaderMaxin.salary(self, grade, year)
if job == 'M':
salary = ManagerMaxin.salary(self, grade, year)
return salary
class EmployeeMaxin:
def set_grade(self, grade, grenze = 10):
while grade > grenze:
grade = int(input(f"该职位最高级别为{grenze},请重新录入级别:"))
return grade
def salary(self, grade, year):
lohn = 3000 + 500 * grade + 50 * year
return lohn
class TeamleaderMaxin:
def set_grade(self, grade, grenze = 6):
while grade > grenze:
grade = int(input(f"该职位最高级别为{grenze},请重新录入级别:"))
return grade
def salary(self, grade, year):
lohn = 4000 + 800 * grade + 100 * year
return lohn
class ManagerMaxin:
def set_grade(self, grade, grenze = 3):
while grade > grenze:
grade = int(input(f"该职位最高级别为{grenze},请重新录入级别:"))
return grade
def salary(self, grade, year):
lohn = 5000 + 1000 * (grade + year)
return lohn
class Management(Arbeiter, EmployeeMaxin, TeamleaderMaxin, ManagerMaxin):
def __init__(self):
self.members = {}
self.serial = 10000
def eingeben(self):
name = self.get_name()
job = self.get_job()
year = self.get_year()
grade = self.get_grade(job)
salary = self.get_salary(job, grade, year)
uid = self.get_uid(self.serial)
arbeiter = Arbeiter(name, job, grade, year, uid, salary)
self.members[uid] = arbeiter
self.serial += 1
print(f"录入成功!姓名:{name},工号:{uid},薪资:{salary}")
def suchen(self):
n = input("1.员工查询;2.职位查询:")
while n != '1' and n != '2':
n = input("指令错误,请重新输入(1.员工查询;2.职位查询):")
if n == '1':
UID = int(input("请输入工号:"))
if UID in self.members:
arbeiter = self.members[UID]
print(f"姓名:{arbeiter.name}")
print(f"职位:{arbeiter.job}")
print(f"级别:{arbeiter.grade}")
print(f"工龄:{arbeiter.year}")
print(f"薪资:{arbeiter.salary}")
else:
print("该工号不存在!")
if n == '2':
j = input("职位(E.普通员工;T.组长;M.经理):")
while True:
if j == 'E':
i = 0
M = []
for each in self.members.values():
if each.job == 'E':
i += 1
M.append(each)
if i > 0:
print(f"目前普通员工共有 {i} 人:")
for jede in M:
print(f"{jede.uid} - {jede.name}")
else:
print("目前公司没有普通员工!")
break
if j == 'T':
i = 0
M = []
for each in self.members.values():
if each.job == 'T':
i += 1
M.append(each)
if i > 0:
print(f"目前组长共有 {i} 人:")
for jede in M:
print(f"{jede.uid} - {jede.name}")
else:
print("目前公司没有组长!")
break
if j == 'M':
i = 0
M = []
for each in self.members.values():
if each.job == 'M':
i += 1
M.append(each)
if i > 0:
print(f"目前经理共有 {i} 人:")
for jede in M:
print(f"{jede.uid} - {jede.name}")
else:
print("目前公司没有经理!")
break
else:
j = input("指令错误,请重新输入(E.普通员工;T.组长;M.经理):")
def upgrade(self):
UID = int(input("请输入工号:"))
while UID not in self.members:
UID = int(input("该工号不存在,请输入工号:"))
arbeiter = self.members[UID]
print(f"{arbeiter.name},工号{arbeiter.uid},当前职位{arbeiter.job}{arbeiter.grade},当前薪资:{arbeiter.salary}")
level = int(input("请输入需要增加的级数:"))
new_grade = arbeiter.grade + level
while True:
if arbeiter.job == 'E' and new_grade > 10:
arbeiter.job = 'T'
arbeiter.grade = 1
break
if arbeiter.job == 'T' and new_grade > 6:
arbeiter.job = 'M'
arbeiter.grade = 1
break
else:
arbeiter.grade = new_grade
break
old_salary = arbeiter.salary
new_salary = self.get_salary(arbeiter.job, arbeiter.grade, arbeiter.year)
arbeiter.salary = new_salary
print("升级成功!")
diff = new_salary - old_salary
if diff >= 0:
print(f"{arbeiter.name},工号:{arbeiter.uid},升级后职位:{arbeiter.job}{arbeiter.grade},升级后薪资:{arbeiter.salary}(+{diff})")
if diff < 0:
print(f"{arbeiter.name},工号:{arbeiter.uid},升级后职位:{arbeiter.job}{arbeiter.grade},升级后薪资:{arbeiter.salary}({diff})")
def degrade(self):
UID = int(input("请输入工号:"))
while UID not in self.members:
UID = int(input("该工号不存在,请输入工号:"))
arbeiter = self.members[UID]
print(f"{arbeiter.name},工号:{arbeiter.uid},当前职位:{arbeiter.job}{arbeiter.grade},当前薪资:{arbeiter.salary}")
level = int(input("请输入需要减少的级数:"))
new_grade = arbeiter.grade - level
while True:
if arbeiter.job == 'M' and new_grade < 1:
arbeiter.job = 'T'
arbeiter.grade = 6
break
if arbeiter.job == 'T' and new_grade < 1:
arbeiter.job = 'E'
arbeiter.grade = 10
break
else:
arbeiter.grade = new_grade
break
old_salary = arbeiter.salary
new_salary = self.get_salary(arbeiter.job, arbeiter.grade, arbeiter.year)
arbeiter.salary = new_salary
print("降级成功!")
diff = new_salary - old_salary
if diff >= 0:
print(f"{arbeiter.name},工号:{arbeiter.uid},降级后职位:{arbeiter.job}{arbeiter.grade},降级后薪资:{arbeiter.salary}(+{diff})")
if diff < 0:
print(f"{arbeiter.name},工号:{arbeiter.uid},降级后职位:{arbeiter.job}{arbeiter.grade},降级后薪资:{arbeiter.salary}({diff})")
def main():
m = Management()
while True:
order = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
while order not in ['1', '2', '3', '4', '5']:
order = input("指令错误,请重新输入。1.录入;2.查询;3.升级;4.降级;5.退出:")
if order == '1':
m.eingeben()
continue
if order == '2':
m.suchen()
continue
if order == '3':
m.upgrade()
continue
if order == '4':
m.degrade()
continue
if order == '5':
break
return |
|