|
|
发表于 2023-2-11 21:59:18
|
显示全部楼层
class People:
num = 0
count = 10000
l = ["E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "T1", "T2", "T3", "T4", "T5", "T6", "M1", "M2", "M3"]
d = {"E":"普通员工", "T":"组长", "M":"经理"}
def __init__(self, uid, name, job, grade, year, salary, num):
self.uid = uid
self.name = name
self.job = job
self.grade = grade
self.year =year
self.salary = salary
self.num = num
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 get_salary(self):
return self.salary
def get_num(self):
return self.num
def main():
inf = []
while True:
x = int(input("1.录入;2.查询;3.升级;4.降级;5.退出:"))
if x == 1:
inf.append(write())
continue
elif x == 2:
find(inf)
continue
elif x == 3:
upgrade(inf)
continue
elif x == 4:
downgrade(inf)
continue
else:
break
def write():
name = input("姓名:")
job = input("职位(E.普通员工;T.组长;M.经理):")
if job != "E" and job != "T" and job != "M":
print(f"本公司没有{job}职务哦~")
print()
return
year = int(input("工龄:"))
grade = get_grade(job)
s = salary(job, grade, year)
print(f"录入成功!姓名:{name}, 工号:{People.count}, 薪资:{s}")
People.count += 1
People.num += 1
print()
return People(People.count-1, name, job, grade, year, s, People.num-1)
def find(inf):
f = int(input("1.员工查询;2.职位查询:"))
if f == 1:
count = 0
uid = int(input("请输入工号:"))
for each in inf:
if uid == each.get_uid():
count += 1
print(f"姓名:{each.name}")
print(f"职位:{each.job}")
print(f"级别:{each.grade}")
print(f"工龄:{each.year}")
print(f"薪资:{each.salary}")
if count == 0:
print("该工号不存在!")
print()
elif f == 2:
count = 0
jobb = input("职位(E.普通员工;T.组长;M.经理):")
if jobb != "E" and jobb != "T" and jobb != "M":
print(f"本公司没有{jobb}职务哦~")
print()
return
for each in inf:
if jobb in each.job:
count += 1
print(f"第{count}位:{each.uid} - {each.name}")
if count == 0:
print(f"目前公司没有{each.d[jobb]}!")
else:
print(f"目前{each.d[jobb]}共有{count}人。")
print()
else:
print("请输入正确的查询方式~")
print()
return
def upgrade(inf):
uid = int(input("请输入工号:"))
count = 0
i = 0
for each in inf:
if uid == each.get_uid():
count += 1
now_grade_letter = each.get_job()
now_grade_number = each.get_grade()
list_num = each.get_num()
print(f"{each.get_name()},工号:{each.get_uid()}, 当前职位:{each.get_job()}{each.get_grade()}, 当前薪资:{each.get_salary()}")
if count == 0:
print("该工号不存在!")
return
num = int(input("请输入需要增加的级数:"))
now_grade = now_grade_letter + str(now_grade_number)
while i < len(People.l):
if People.l[i] == now_grade:
if i + num >= len(People.l):
print("升级失败!已超出本公司职位的最大等级!")
return
else:
print("升级成功!")
x = list(People.l[i+num])
inf[list_num].job = x[0]
inf[list_num].grade = int(x[1])
s = inf[list_num].salary
inf[list_num].salary = salary(x[0], int(x[1]), inf[list_num].get_year())
print(f"{inf[list_num].get_name()},工号:{inf[list_num].get_uid()}, 升级后职位:{People.l[i+num]}, 升级后薪资:{inf[list_num].get_salary()}(+{inf[list_num].get_salary()-s})")
print()
i += 1
return
def downgrade(inf):
uid = int(input("请输入工号:"))
count = 0
i = 0
for each in inf:
if uid == each.get_uid():
count += 1
now_grade_letter = each.get_job()
now_grade_number = each.get_grade()
list_num = each.get_num()
print(f"{each.get_name()},工号:{each.get_uid()}, 当前职位:{each.get_job()}{each.get_grade()}, 当前薪资:{each.get_salary()}")
if count == 0:
print("该工号不存在!")
return
num = int(input("请输入需要减少的级数:"))
now_grade = now_grade_letter + str(now_grade_number)
while i < len(People.l):
if People.l[i] == now_grade:
if i - num <= 0:
print("降级失败!已超出本公司职位的最小等级!")
print()
return
else:
print("降级成功!")
x = list(People.l[i-num])
inf[list_num].job = x[0]
inf[list_num].grade = int(x[1])
s = inf[list_num].salary
inf[list_num].salary = salary(x[0], int(x[1]), inf[list_num].get_year())
print(f"{inf[list_num].get_name()},工号:{inf[list_num].get_uid()}, 降级后职位:{People.l[i-num]}, 降级后薪资:{inf[list_num].get_salary()}(-{s-inf[list_num].get_salary()})")
print()
i += 1
return
def get_grade(job,):
while True:
grade = int(input("级别:"))
if job == "E":
if grade <= 10 and grade > 0:
return grade
else:
print("该职位最高级别为10,请重新录入级别:")
continue
if job == "T":
if grade <= 6 and grade > 0:
return grade
else:
print("该职位最高级别为6,请重新录入级别:")
continue
if job == "M":
if grade <= 3 and grade > 0:
return grade
else:
print("该职位最高级别为3,请重新录入级别:")
continue
def salary(job, grade, year):
if job == "E":
return 3000 + 500 * grade + 50 * year
elif job == "T":
return 4000 + 800 * grade + 100 *year
else:
return 5000 + 1000 * (grade + year)
main()
|
|