|
|
发表于 2023-5-18 13:28:52
|
显示全部楼层
- class Worker:
- def __init__(self, name, job, grade, year, uid):
- 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):
- if self.job == "E":
- return 3000 + 500 * int(self.grade) + 50 * int(self.year)
- elif self.job == "T":
- return 4000 + 800 * int(self.grade) + 100 * int(self.year)
- elif self.job == "M":
- return 5000 + 1000 * (int(self.grade) + int(self.year))
- class Employee(Worker):
- def __init__(self, name, job, grade, year, uid):
- super().__init__(name, job, grade, year, uid)
- class Teamleader(Worker):
- def __init__(self, name, job, grade, year, uid):
- super().__init__(name, job, grade, year, uid)
- class Manager(Worker):
- def __init__(self, name, job, grade, year, uid):
- super().__init__(name, job, grade, year, uid)
- class Program:
- uid = 10000
- uid_list = {}# uid:iterable
- employee_list = {"E":[], "T":[], "M":[]}# 对录入的员工分类存放
- def register(self):
- name = input("姓名:")
- job = input("职位(E.普通员工;T.组长;M.经理):")
- year = input("工龄:")
- grade = input("级别:")
- # 根据职位对级别进行限制
- if job == "E" and int(grade) > 10:
- grade = input("该职位最高级别为10,请重新录入级别:")
- elif job == "T" and int(grade) > 6:
- grade = input("该职位最高级别为6,请重新录入级别:")
- elif job == "M" and int(grade) > 3:
- grade = input("该职位最高级别为3,请重新录入级别:")
- man = Employee(name, job, grade, year, self.uid)
- self.uid_list[self.uid] = man
- self.employee_list[job].append(man)
- print("录入成功!姓名:{},工号:{},薪资:{}".format(man.name, man.uid, man.salary()))
- self.uid += 1
- def query(self):
- command = input("1.员工查询;2.职位查询:")
- if command == "1":
- # 员工查询
- uid = int(input("请输入工号:"))
- if self.uid_list.get(uid, False):# 判断输入的工号是否存在
- uid_worker = self.uid_list[uid]
- print("姓名:{}\n职位:{}\n级别:{}\n工龄:{}\n薪资:{}\n".format(
- uid_worker.get_name(),
- uid_worker.get_job(),
- uid_worker.get_grade(),
- uid_worker.get_year(),
- uid_worker.salary()))
- else:# 工号不存在时打印提示
- print("该工号不存在!")
- elif command == "2":
- # 职位查询
- job = input("职位(E.普通员工;T.组长;M.经理):")
- if len(self.employee_list[job]):
- # 有该职位的员工
- if job == "E":
- print("目前普通员工共有 {} 人:".format(len(self.employee_list[job])))
- elif job == "T":
- print("目前组长共有 {} 人:".format(len(self.employee_list[job])))
- elif job == "M":
- print("目前经理共有 {} 人:".format(len(self.employee_list[job])))
- for each in self.employee_list[job]:
- print("{} - {}".format(each.get_uid(), each.get_name()))
- print()
- else:
- # 没有该职位的员工
- print("该公司目前没有{}".format(job))
- def level_up(self):
- uid = int(input("请输入工号:"))
- uid_worker = self.uid_list[uid]
- b_salary = uid_worker.salary()
- print("{},工号:{}当前职位:{},当前薪资:{}".format(uid_worker.get_name(), uid_worker.get_uid(), uid_worker.get_job()+uid_worker.get_grade(), b_salary))
- up_level = int(input("请输入需要增加的级数:"))
- uid_worker.job, uid_worker.grade = self.if_grade(uid_worker.get_job(), int(uid_worker.get_grade()), up_level)
- print("升级成功!")
- print("{},工号:{}当前职位:{},升级后薪资:{}(+{})".format(uid_worker.get_name(), uid_worker.get_uid(), uid_worker.get_job()+uid_worker.get_grade(), uid_worker.salary(), uid_worker.salary()-b_salary))
- def level_down(self):
- uid = int(input("请输入工号:"))
- uid_worker = self.uid_list[uid]
- b_salary = uid_worker.salary()
- print("{},工号:{}当前职位:{},当前薪资:{}".format(uid_worker.get_name(), uid_worker.get_uid(), uid_worker.get_job()+uid_worker.get_grade(), b_salary))
- down_level = -int(input("请输入需要降低的级数:"))
- uid_worker.job, uid_worker.grade = self.if_grade(uid_worker.get_job(), int(uid_worker.get_grade()), down_level)
- print("降级成功!")
- print("{},工号:{}当前职位:{},降级后薪资:{}({})".format(uid_worker.get_name(), uid_worker.get_uid(), uid_worker.get_job()+uid_worker.get_grade(), uid_worker.salary(), uid_worker.salary()-b_salary))
- def if_grade(self, job:str, grade:int, down:int)->tuple:
- if job == "E":
- if grade + down > 10:
- return "T", "1"
- elif grade + down <= 0:
- return "E", "1"
- else:
- return "E", str(grade + down)
- elif job == "T":
- if grade + down > 6:
- return "M", "1"
- elif grade + down <= 0:
- return "T", "10"
- else:
- return "T", str(grade + down)
- elif job == "M":
- if grade + down > 3:
- return "M", "3"
- elif grade + down <= 0:
- return "T", "6"
- else:
- return "M", str(grade + down)
- def system(self):
- while True:
- command = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
- if command == "1":
- self.register()
- elif command == "2":
- self.query()
- elif command == "3":
- self.level_up()
- elif command == "4":
- self.level_down()
- elif command == "5":
- break
- p = Program()
- p.system()
复制代码 |
|