|
|
发表于 2023-2-24 12:13:24
|
显示全部楼层
import sys
class Person:
uid = 10000
person_list = []
def __init__(self, name, job, grade, year, uid):
self.name = name
self.job = job
self.grade = grade
self.year = year
self.uid = uid
self.money = None
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':
self.money = 3000 + 500 * self.grade + 50 * self.year
elif self.job == 'T':
self.money = 4000 + 800 * self.grade + 100 * self.year
elif self.job == 'M':
self.money = 5000 + 1000 * (self.grade + self.year)
class Employee(Person):
def __init__(self,name, job, grade, year, uid):
super().__init__(name, job, grade, year, uid)
self.job = 'E'
self.grade_max = 10
def salary(self):
self.money = 3000 + 500 * self.grade + 50 * self.year
return self.money
class Teamleader(Person):
def __init__(self,name, job, grade, year, uid):
super().__init__(name, job, grade, year, uid)
self.job = 'T'
self.grade_max = 6
def salary(self):
self.money = 4000 + 800 * self.grade + 100 * self.year
return self.money
class Manager(Person):
def __init__(self,name, job, grade, year, uid):
super().__init__(name, job, grade, year, uid)
self.job = 'M'
self.grade_max = 3
def salary(self):
self.money = 5000 + 1000 * (self.grade + self.year)
return self.money
def add():
name = input('姓名:')
job = input('职位(E.普通员工;T.组长;M.经理):')
year = int(input('工龄:'))
grade = int(input('级别:'))
if job == 'E':
p = Employee(name, job, grade, year, Person.uid)
if p.grade > p.grade_max:
p.grade = int(input(f'该职位最高级别为{p.grade_max},请重新输入级别:'))
p.salary()
elif job == 'T':
p = Teamleader(name, job, grade, year, Person.uid)
if p.grade > p.grade_max:
p.grade = int(input(f'该职位最高级别为{p.grade_max},请重新输入级别:'))
p.salary()
elif job == 'M':
p = Manager(name, job, grade, year, Person.uid)
if p.grade > p.grade_max:
p.grade = int(input(f'该职位最高级别为{p.grade_max},请重新输入级别:'))
p.money = p.salary()
Person.person_list.append(p)
print(f'录入成功!姓名:{p.name},工号:{Person.uid},薪资:{p.money}')
Person.uid += 1
def search():
res = int(input('1.员工查询;2.职位查询:'))
if res == 1:
uid = int(input('请输入工号:'))
for p in Person.person_list:
if uid == p.uid:
print(f'姓名: {p.name}')
print(f'职位: {p.job}')
print(f'级别: {p.grade}')
print(f'工龄: {p.year}')
print(f'薪资: {p.money}')
break
else:
print('该工号不存在!')
elif res == 2:
res = input('职位(E.普通员工;T.组长;M.经理):')
if res == "E":
p_lst = []
for p in Person.person_list:
if p.job == res:
p_lst.append(p)
print(f'目前普通员工共有 {len(p_lst)} 人')
for p in p_lst:
print(f'{p.uid} - {p.name}')
if len(p_lst) == 0:
print('目前公司没有普通员工!')
elif res == 'T':
p_lst = []
for p in Person.person_list:
if p.job == res:
p_lst.append(p)
print(f'目前组长共有 {len(p_lst)} 人')
for p in p_lst:
print(f'{p.uid} - {p.name}')
if len(p_lst) == 0:
print('目前公司没有组长!')
elif res == 'M':
p_lst = []
for p in Person.person_list:
if p.job == res:
p_lst.append(p)
print(f'目前经理共有 {len(p_lst)} 人')
for p in p_lst:
print(f'{p.uid} - {p.name}')
if len(p_lst) == 0:
print('目前公司没有经理!')
def upgrade():
uid = int(input('请输入工号:'))
for p in Person.person_list:
if p.name == uid:
m1 = int(p.money)
print(f'{p.name},工号: {uid},当前职位:{p.job}{p.grade},当前薪资:{p.money}')
grade = int(input('请输入需要增加的级数:'))
p.grade = p.grade + grade
if p.grade > p.grade_max:
if p.job == 'E':
p.job = 'T'
p.grade = p.grade - p.grade_max
elif p.job == 'T':
p.job = 'M'
p.grade = p.grade - p.grade_max
p.salary()
m2 = int(p.money)
print('升级成功')
print(f'{p.name},工号: {uid},升级后职位职位:{p.job}{p.grade},升级后薪资:{p.money}(+{m2-m1})')
def downgrade():
uid = int(input('请输入工号:'))
for p in Person.person_list:
if p.name == uid:
m1 = int(p.money)
print(f'{p.name},工号: {uid},当前职位:{p.job}{p.grade},当前薪资:{p.money}')
grade = int(input('请输入需要减少的级数:'))
p.grade = p.grade - grade
if p.grade < 0:
if p.job == 'T':
p.job = 'E'
p.grade = p.grade_max - p.grade
elif p.job == 'M':
p.job = 'T'
p.grade = p.grade_max - p.grade
p.salary()
m2 = int(p.money)
print('降级成功')
print(f'{p.name},工号: {uid},降级后职位:{p.job}{p.grade},降级后薪资:{p.money}(-{m2 - m1})')
break
def main():
while True:
res = int(input('\n1.录入;2.查询;3.升级;4.降级;5.退出:'))
if res == 1:
add()
elif res == 2:
search()
elif res == 3:
upgrade()
elif res == 4:
downgrade()
elif res == 5:
break
if __name__ == '__main__':
main()
|
|