|
|
发表于 2024-9-2 17:43:29
|
显示全部楼层
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:继承和重写
第 1 题的答案是:对不同的对象采取不同的操作
第 2 题的答案是:可以
第 3 题的答案是:
第 4 题的答案是:降低了耦合度
第 5 题的答案是:不是
-------- 动动手 --------
请将第 0 题的代码写在下方:
class Member:
def __init__(self,uid,name,job,year,grade):
self.uid=uid
self.name=name
self.job=job
self.year=year
self.grade=grade
class Employee(Member):
def __init__(self, uid, name, job, year, grade):
super().__init__(uid, name, job, year, grade)
while self.grade>10:
self.grade=int(input('该职位最高级别为10,请重新录入级别:'))
def salary(self):
return 3000+500*self.grade+50*self.year
class Teamleader(Member):
def __init__(self,uid, name, job, year, grade):
super().__init__(uid, name, job, year, grade)
while self.grade>6:
self.grade=int(input('该职位最高级别为6,请重新录入级别:'))
def salary(self):
return 4000+800*self.grade+100*self.year
class Manager(Member):
def __init__(self, uid, name, job, year, grade):
super().__init__(uid, name, job, year, grade)
while self.grade>3:
self.grade=int(input('该职位最高级别为3,请重新录入级别:'))
def salary(self):
return 5000+1000*self.grade+1000*self.year
class Manage:
def __init__(self):
self.code=10000
self.member={}
def operate(self):
order=int(input('1.录入;2.查询;3.升级;4.降级;5.退出'))
while not order==5:
if order==1:
self.creat_member()
if order==2:
self.view()
if order==3:
self.upgrade()
if order==4:
self.demote()
order = int(input('1.录入;2.查询;3.升级;4.降级;5.退出'))
def entering(self,uid,name,job,year,grade):
if job=='E':
self.member[uid]=Employee(uid,name,job,year,grade)
elif job=='T':
self.member[uid]=Teamleader(uid,name,job,year,grade)
elif job=='M':
self.member[uid]=Manager(uid,name,job,year,grade)
def creat_member(self):
name=input('姓名:')
uid=self.code
self.code+=1
job=input('职位(E.普通员工;T.组长;M.经理):')
year=int(input('工龄:'))
grade=int(input('级别:'))
self.entering(uid,name,job,year,grade)
print(f'录入成功!姓名:{name},工号:{uid},薪资:{self.member[uid].salary()}')
def view(self):
order=input('1.员工查询;2.职位查询:')
if order=='1':
num=int(input('请输入工号:'))
if num in self.member:
print(f'姓名:{self.member[num].name}')
print(f'职位:{self.member[num].job}')
print(f'级别:{self.member[num].grade}')
print(f'工龄:{self.member[num].year}')
print(f'薪资:{self.member[num].salary()}')
else:
print('该员工号不存在!')
elif order=='2':
job=input('职位(E.普通员工;T.组长;M.经理):')
count=0
l=[]
for each in self.member:
if self.member[each].job==job:
count+=1
l.append(each)
if job=='E':
jobname='普通员工'
elif job=='T':
jobname = '组长'
elif job=='M':
jobname='经理'
if count>0:
print(f'目前{jobname}共有{count}人')
for each in l:
print(f'{each}-{self.member[each].name}')
else:
print(f'目前公司没有{jobname}!')
def upgrade(self):
num=int(input('请输入工号:'))
if num in self.member:
name=self.member[num].name
job=self.member[num].job
grade=self.member[num].grade
year=self.member[num].year
salary_old=self.member[num].salary()
print(f'{name},工号:{num},当前职位:{job}{grade},当前薪资:{salary_old}')
self.member.pop(num)
grade_up=int(input('请输入需要增加的级数:'))
grade+=grade_up
if job=='E' and grade>10:
job='T'
grade=1
elif job=='T' and grade>6:
job='M'
grade=1
elif job=='M' and grade>3:
print('经理最高职级为3级!')
grade-=grade_up
self.entering(num, name, job, year, grade)
salary_new = self.member[num].salary()
print('升级成功!')
print(f'{name},工号:{num},升级后职位:{job}{grade},升级后薪资:{salary_new}(+{salary_new-salary_old})')
else:
print('该员工号不存在!')
def demote(self):
num = int(input('请输入工号:'))
if num in self.member:
name = self.member[num].name
job = self.member[num].job
grade = self.member[num].grade
year = self.member[num].year
salary_old = self.member[num].salary()
print(f'{name},工号:{num},当前职位:{job}{grade},当前薪资:{salary_old}')
self.member.pop(num)
grade_de = int(input('请输入需要减少的级数:'))
grade -= grade_de
if job == 'T' and grade <0:
job = 'M'
grade = 10
elif job == 'M' and grade <0:
job = 'T'
grade = 6
elif job == 'E' and grade < 0:
print('无法降级!')
grade -= grade_de
self.entering(num, name, job, year, grade)
salary_new = self.member[num].salary()
print('降级成功!')
print(f'{name},工号:{num},降级后职位:{job}{grade},降级后薪资:{salary_new}({salary_new - salary_old})')
else:
print('该员工号不存在!')
m=Manage()
m.operate()
|
|