|
|
发表于 2025-10-7 17:47:36
|
显示全部楼层
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
第 1 题的答案是:
第 2 题的答案是:
第 3 题的答案是:
第 4 题的答案是:
第 5 题的答案是:
-------- 动动手 --------
请将第 0 题的代码写在下方:
## 0. 请按要求编写一个企业员工管理程序
class Staff_Init:
def __init__(self,name,uid,job,year,grade):
self.name = name
self.uid = uid
self.job = job
self.year = year
self.grade = grade
def get_name(self):
return self.name
def get_uid(self):
return self.uid
def get_job(self):
return self.job
def get_year(self):
return self.year
def get_grade(self):
return self.grade
def get_salary(self):
if self.job == 'E':
self.salary = 3000 + 500*self.grade + 50*self.year
elif self.job == 'T':
self.salary = 4000 + 800*self.grade + 100*self.year
elif self.job == 'M':
self.salary = 5000 + 1000*(self.grade + self.year)
return self.salary
class Employee(Staff_Init):
def __init__(self,name,uid,job,year,grade):
super().__init__(name,uid,job,year,grade)
class Teamleader(Staff_Init):
def __init__(self,name,uid,job,year,grade):
super().__init__(name,uid,job,year,grade)
class Manager(Staff_Init):
def __init__(self,name,uid,job,year,grade):
super().__init__(name,uid,job,year,grade)
class checkMixin:
def check_job(self,job):
while job != 'E' and job != 'T' and job != 'M':
job = input('请输入正确的职位代号(E.普通员工;T.组长;M.经理):')
return job
def check_grade(self,grade,job):
while True:
if grade.isnumeric():
grade = int(grade)
if job == 'E':
if grade <= 10:
break
else:
grade = input('最高级别为10,请重新录入级别:')
elif job == 'T':
if grade <= 6:
break
else:
grade = input('最高级别为6,请重新录入级别:')
else:
if grade <= 3:
break
else:
grade = input('最高级别为3,请重新录入级别:')
else:
grade = input('请输入数字:')
return grade
def check_number(self,string):
while not string.isnumeric():
string = input('请输入数字:')
return int(string)
class changeMixin:
def change_upgrade(self,job,grade,upgrade):
if job == 'E':
grade_new = grade + upgrade
if grade_new>10:
return 'T', 1
else:
return 'E', grade_new
if job == 'T':
grade_new = grade + upgrade
if grade_new>6:
return 'M', 1
else:
return 'T', grade_new
if job == 'M':
grade_new = grade + upgrade
if grade_new>3:
return 'M', 3
else:
return 'M', grade_new
def change_downgrade(self,job,grade,downgrade):
if job == 'E':
grade_new = grade - downgrade
if grade_new<=0:
return 'E', 1
else:
return 'E', grade_new
if job == 'T':
grade_new = grade - downgrade
if grade_new<=0:
return 'E', 10
else:
return 'T', grade_new
if job == 'M':
grade_new = grade - downgrade
if grade_new<=0:
return 'T', 6
else:
return 'M', grade_new
class Mune(checkMixin,changeMixin):
number = 10000
staffs = {}
def welcome(self):
ins = 0
while ins != '5':
ins = input('\n1.录入;2.查询;3.升级;4.降级;5.退出:')
if ins == '1':
self.creat_staff()
if ins == '2':
self.check_staff()
if ins == '3':
self.upgrade_staff()
if ins == '4':
self.downgrade_staff()
def creat_staff(self):
name = input('姓名:')
uid = Mune.number
Mune.number += 1
job = self.check_job(input('职位(E.普通员工;T.组长;M.经理):'))
grade = self.check_grade(input('级别:'),job)
year = self.check_number(input('工龄:'))
if job == 'E':
self.staffs[uid] = Employee(name,uid,job,year,grade)
elif job == 'T':
self.staffs[uid] = Teamleader(name,uid,job,year,grade)
elif job == 'M':
self.staffs[uid] = Manager(name,uid,job,year,grade)
print(f'录入成功!姓名:{name},工号:{uid},薪资:{self.staffs[uid].get_salary()}')
def check_staff(self):
ins = input('1.员工查询;2.职位查询;输入其他退出:')
if ins == '1':
uid = self.check_number(input('卡号:'))
if uid>9999 and uid<Mune.number:
print(f'姓名:{self.staffs[uid].name}')
print(f'职位:{self.staffs[uid].job}')
print(f'级别:{self.staffs[uid].grade}')
print(f'工龄:{self.staffs[uid].year}')
print(f'薪资:{self.staffs[uid].get_salary()}')
else:
print('改工号不存在!')
elif ins == '2':
job = self.check_job(input('职位(E.普通员工;T.组长;M.经理):'))
count_staffs = [i for i in self.staffs.values() if i.job == job]
if job == 'E':
print(f'目前普通员工共有{len(count_staffs)}人')
elif job == 'T':
print(f'目前组长共有{len(count_staffs)}人')
elif job == 'M':
print(f'目前经理共有{len(count_staffs)}人')
for i in count_staffs:
print(f'{i.uid} - {i.name}')
def upgrade_staff(self):
uid = self.check_number(input('卡号:'))
if uid < Mune.number and uid > 9999:
name = self.staffs[uid].name
job, grade = self.staffs[uid].job, self.staffs[uid].grade
year = self.staffs[uid].year
salary1 = self.staffs[uid].get_salary()
print(f'{name},工号:{uid},当前职位:{job}{grade},当前薪资:{salary1}')
upgrade = self.check_number(input('请输入需要增加的级数:'))
job, grade = self.change_upgrade(job,grade,upgrade)
if job == 'E':
self.staffs[uid] = Employee(name,uid,job,year,grade)
elif job == 'T':
self.staffs[uid] = Teamleader(name,uid,job,year,grade)
elif job == 'M':
self.staffs[uid] = Manager(name,uid,job,year,grade)
salary2 = self.staffs[uid].get_salary()
print('升级成功!')
print(f'{name},工号:{uid},升级后职位{job}{grade},升级后薪资{salary2}(增加{salary2-salary1})')
else:
print('卡号不存在!')
def downgrade_staff(self):
uid = self.check_number(input('卡号:'))
if uid < Mune.number and uid > 9999:
name = self.staffs[uid].name
job, grade = self.staffs[uid].job, self.staffs[uid].grade
year = self.staffs[uid].year
salary1 = self.staffs[uid].get_salary()
print(f'{name},工号:{uid},当前职位:{job}{grade},当前薪资:{salary1}')
downgrade = self.check_number(input('请输入需要减少的级数:'))
job, grade = self.change_downgrade(job,grade,downgrade)
if job == 'E':
self.staffs[uid] = Employee(name,uid,job,year,grade)
elif job == 'T':
self.staffs[uid] = Teamleader(name,uid,job,year,grade)
elif job == 'M':
self.staffs[uid] = Manager(name,uid,job,year,grade)
salary2 = self.staffs[uid].get_salary()
print('降级成功!')
print(f'{name},工号:{uid},降级后职位{job}{grade},降级后薪资{salary2}(减少{salary1-salary2})')
else:
print('卡号不存在!')
def main():
mune = Mune()
mune.welcome()
main() |
|