|
|
发表于 2023-7-26 15:30:45
|
显示全部楼层
本帖最后由 Qoolies 于 2023-7-26 15:44 编辑
# 简单的员工管理程序
# 具体要求见:https://fishc.com.cn/thread-214231-1-2.html
class Staff:
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
class Employee(Staff):
def __init__(self, name, job, grade, year, uid):
super().__init__(name, job, grade, year, uid)
def salary(self):
return 3000 + 500 * self.grade + 50 * self.year
class TeamLeader(Staff):
def __init__(self, name, job, grade, year, uid):
super().__init__(name, job, grade, year, uid)
def salary(self):
return 4000 + 800 * self.grade + 100 * self.year
class Manager(Staff):
def __init__(self, name, job, grade, year, uid):
super().__init__(name, job, grade, year, uid)
def salary(self):
return 5000 + 1000 * (self.grade + self.year)
class Manage:
def __init__(self):
self.member = dict()
self.uid = 10000
def intro(self):
opt = None
while opt != "5":
opt = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
if opt == "1":
self.record()
elif opt == "2":
self.query()
elif opt == "3":
self.up_grade()
elif opt == "4":
self.down_grade()
elif opt == "5":
print("程序退出!")
def job_check(self):
job = input("职位(E.普通员工;T.组长;M.经理):")
while job not in ("E", "T", "M"):
job = input("请输入正确职位代码!")
return job
def grade_check(self, job):
grade = int(input("级别:"))
while True:
if job == "E" and grade > 10:
grade = int(input("该职位最高级别为10,请重新录入级别:"))
elif job == "T" and grade > 6:
grade = int(input("该职位最高级别为6,请重新录入级别:"))
elif job == "M" and grade > 3:
grade = int(input("该职位最高级别为3,请重新录入级别:"))
else:
break
return grade
def record(self):
name = input("姓名:")
job = self.job_check()
year = int(input("工龄:"))
grade = self.grade_check(job)
if job == "E":
self.member[self.uid] = Employee(name, job, grade, year, self.uid)
elif job == "T":
self.member[self.uid] = TeamLeader(name, job, grade, year, self.uid)
elif job == "M":
self.member[self.uid] = Manager(name, job, grade, year, self.uid)
print(f"录入成功!姓名:{name}, 工号:{self.uid}, 薪资:{self.member[self.uid].salary()}")
self.uid += 1
def query(self):
opt = None
while opt not in ("1", "2"):
opt = input("1.员工查询;2职位查询:")
if opt == "1":
uid = int(input("请输入工号:"))
if uid in self.member:
print(f"姓名:{self.member[uid].name}")
print(f"职位:{self.member[uid].job}")
print(f"级别:{self.member[uid].grade}")
print(f"工龄:{self.member[uid].year}")
print(f"薪资:{self.member[uid].salary()} ")
else:
print("该工号不存在!")
elif opt == "2":
count = 0
job_info = list()
job = self.job_check()
if job == "E":
job_name = "普通员工"
elif job == "T":
job_name = "组长"
elif job == "M":
job_name = "经理"
for each in self.member.values():
if each.job == job:
count += 1
job_info.append(f"{each.uid} - {each.name}")
if count == 0:
print(f"目前公司没有{job_name}。")
else:
print(f"目前{job_name}共有 {count} 人:")
for each in job_info:
print(each)
def up_grade(self):
uid = int(input("请输入工号:"))
if uid in self.member:
c_salary = self.member[uid].salary()
print(
f"{self.member[uid].name}, 工号:{uid}, 当前职位:{self.member[uid].job}{self.member[uid].grade}, 当前薪资:{c_salary}")
self.member[uid].grade += int(input("请输入需要增加的级数:"))
succeed = False
if self.member[uid].job == "E" and self.member[uid].grade > 10:
self.member[uid].job = "T"
self.member[uid] = TeamLeader(self.member[uid].name, self.member[uid].job, 1, self.member[uid].year,
uid)
succeed = True
elif self.member[uid].job == "T" and self.member[uid].grade > 6:
self.member[uid].job = "M"
self.member[uid] = Manager(self.member[uid].name, self.member[uid].job, 1, self.member[uid].year, uid)
succeed = True
elif self.member[uid].job == "M" and self.member[uid].grade > 3:
print("超过规定级别!")
if succeed:
print("升级成功!")
n_salary = self.member[uid].salary() - c_salary
print(
f"{self.member[uid].name}, 工号:{uid}, 当前职位:{self.member[uid].job}{self.member[uid].grade}, 当前薪资:{self.member[uid].salary()}({n_salary:+})")
else:
print("工号不存在")
def down_grade(self):
uid = int(input("请输入工号:"))
if uid in self.member:
c_salary = self.member[uid].salary()
print(f"{self.member[uid].name}, 工号:{uid}, 当前职位:{self.member[uid].job}{self.member[uid].grade}, 当前薪资:{c_salary}")
self.member[uid].grade -= int(input("请输入需要减少的级数:"))
succeed = False
if self.member[uid].job == "E" and self.member[uid].grade < 1:
print("超过最低级别!")
elif self.member[uid].job == "T" and self.member[uid].grade < 1:
self.member[uid].job = "E"
self.member[uid] = Employee(self.member[uid].name, self.member[uid].job, 10, self.member[uid].year, uid)
succeed = True
elif self.member[uid].job == "M" and self.member[uid].grade < 1:
self.member[uid].job = "T"
self.member[uid] = TeamLeader(self.member[uid].name, self.member[uid].job, 6, self.member[uid].year, uid)
succeed = True
if succeed:
print("降级成功!")
n_salary = self.member[uid].salary() - c_salary
print(
f"{self.member[uid].name}, 工号:{uid}, 当前职位:{self.member[uid].job}{self.member[uid].grade}, 当前薪资:{self.member[uid].salary()}({n_salary:+})")
else:
print("工号不存在")
def main():
m = Manage()
m.intro()
main()
|
|