|
|
发表于 2024-6-29 20:01:40
|
显示全部楼层
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:+ * len
第 1 题的答案是:可以处理不同的场景
第 2 题的答案是:可以
第 3 题的答案是:一只鸟走起来像鸭子,叫起来像鸭子,那他就是鸭子
第 4 题的答案是:降低了耦合度
第 5 题的答案是:不属于
-------- 动动手 --------
请将第 0 题的代码写在下方:
#基类员工
class Staff:
def __init__(self,uid,name,job,grade,year):
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 salary(self):
#抽象方法,在子类中实现
raise NotImplementedError("Subclass must implement abstract method")
#普通员工
class Employee(Staff):
def __init__(self,uid,name,grade,year):
super().__init__(uid,name,'普通员工',grade,year)
def salary(self):
#统计并返回工资
return 3000 + 500 * self.grade + 50 * self.year
#组长
class Teamleader(Staff):
def __init__(self,uid,name,grade,year):
super().__init__(uid,name,'组长',grade,year)
def salary(self):
#统计并返回工资
return 4000 + 800 * self.grade + 100 * self.year
#经理
class Manager(Staff):
def __init__(self,uid,name,grade,year):
super().__init__(uid,name,'经理',grade,year)
def salary(self):
#统计并返回工资
return 5000 + 1000 * (self.grade + self.year)
#管理类:所有功能的实现
class Manage:
def __init__(self):
self.staff = {}
self.uid = 10000
def welcome(self):
#程序功能入口
ins = 0
while True:
ins = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
if ins == '1':
self.typein()
elif ins == '2':
self.inquire()
elif ins == '3':
self.upgrade()
elif ins == '4':
self.degrade()
elif ins == '5':
break
else:
print('输入错误,请重新输入!')
def typein(self):
#录入功能
name = input('姓名:')
job = input('职位(E.普通员工;T.组长;M.经理):')
year = int(input('工龄:'))
grade = int(input('级别:'))
if job == 'E':
while grade > 10:
grade = int(input('该职位最高级别为10,请重新录入级别:'))
self.staff[self.uid] = Employee(self.uid,name,grade,year)
elif job == 'T':
while grade > 6:
grade = int(input('该职位最高级别为6,请重新录入级别:'))
self.staff[self.uid] = Teamleader(self.uid,name,grade,year)
elif job == 'M':
while grade > 3:
grade = int(input('该职位最高级别为3,请重新录入级别:'))
self.staff[self.uid] = Manager(self.uid,name,grade,year)
else:
print('职位输入错误,请重新输入!')
return
print(f'录入成功!姓名:{name}, 工号:{self.uid}, 薪资 {self.staff[self.uid].salary()}')
self.uid += 1
def inquire(self):
#查询功能
num = input('1.员工查询;2.职位查询:')
if num == '1':
#员工查询
uid = int(input('请输入工号:'))
if not self.staff.get(uid):
print('该工号不存在!')
else:
print(f'姓名:{self.staff[uid].name}\n'
f'职位:{self.staff[uid].job}\n'
f'级别:{self.staff[uid].grade}\n'
f'工龄:{self.staff[uid].year}\n'
f'薪资:{self.staff[uid].salary()}')
if num == '2':
#职位查询
job_2 = input('职位(E.普通员工;T.组长;M.经理):')
job_dict = {'E':'普通员工','T':'组长','M':'经理'}
job_title = job_dict.get(job_2)
if not job_title:
print('职位输入错误,请重新输入!')
return
count = sum(1 for staff in self.staff.values() if staff.get_job() == job_title)
if count == 0:
print(f'目前公司没有{job_title}!')
else:
print(f'当前{job_title}共有{count}人:')
for staff in self.staff.values():
if staff.get_job() == job_title:
print(f'{staff.get_uid()} - {staff.get_name()}')
def upgrade(self):
#升级功能
uid = int(input('请输入工号:'))
if not self.staff.get(uid):
print('该工号不存在!')
return
staff = self.staff[uid]
print(f'{staff.get_name()}, 工号:{uid}, 当前职位:{staff.get_job()}{staff.get_grade()}, 当前薪资:{staff.salary()}')
grade_num = int(input('请输入需要增加的级数:'))
print('升级成功!')
old_salary = staff.salary()
new_grade = staff.get_grade() + grade_num
if staff.get_job() == '普通员工' and new_grade > 10:
self.staff[uid] = Teamleader(uid,staff.get_name(),1,staff.get_year())
staff = self.staff[uid]
elif staff.get_job() == '组长' and new_grade > 6:
self.staff[uid] = Manager(uid,staff.get_name(),1,staff.get_year())
staff = self.staff[uid]
elif staff.get_job() == '经理' and new_grade > 3:
print('经理职位最高级别为3,无法再升级')
return
else:
staff.grade = new_grade
change_salary = staff.salary() - old_salary
print(f'{staff.name}, 工号:{uid}, 升级后职位:{staff.job}{staff.grade}, 升级后薪资:{staff.salary()}(+{change_salary})')
def degrade(self):
#降级功能
uid = int(input('请输入工号:'))
if not self.staff.get(uid):
print('该工号不存在!')
return
staff = self.staff[uid]
print(f'{staff.get_name()}, 工号:{uid}, 当前职位:{staff.get_job()}{staff.get_grade()}, 当前薪资:{staff.salary()}')
grade_denum = int(input('请输入需要减少的级数:'))
print('降级成功!')
old_salary = staff.salary()
new_grade = staff.get_grade() - grade_denum
if staff.get_job() == '普通员工' and new_grade < 1:
print('普通员工最低级别为1,不能再降低!')
elif staff.get_job() == '组长' and new_grade < 1:
self.staff[uid] = Employee(uid,staff.get_name(),10,staff.get_year())
staff = self.staff[uid]
elif staff.get_job() == '经理' and new_grade < 1:
self.staff[uid] = Teamleader(uid,staff.get_name(),6,staff.get_year())
staff = self.staff[uid]
else:
staff.grade = new_grade
change_salary = staff.salary() - old_salary
print(f'{staff.name}, 工号:{uid}, 降级后职位:{staff.job}{staff.grade}, 降级后薪资:{staff.salary()}({change_salary})')
def main():
m = Manage()
m.welcome()
#程序主体
main()
|
|