|
|
发表于 2023-3-19 16:59:48
|
显示全部楼层
class Employee():
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):
salary = 3000 + 500 * self.grade + 50 * self.year
return salary
class Teamleader(Employee):
def salary(self):
salary = 4000 + 800 * self.grade + 100 * self.year
return salary
class Manager(Employee):
def salary(self):
salary = 5000 + 1000 * (self.grade + self.year)
return salary
#正文
def main():
uid = 10000
employee_list = {}
jobs = {'E':[],'T':[],'M':[]}
e_max_grade = 10
t_max_grade = 6
m_max_grade = 3
while True:
select = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
if select == '1':
name = input("姓名:")
job = input("职位(E.普通员工;T.组长;M.经理):")
year = int(input("工龄:"))
grade = int(input("级别:"))
if job == 'E':
if grade > e_max_grade:
grade = int(input(("该职位最高级别职位为%d,请重新录入级别:" % e_max_grade)))
e = Employee(name, job, grade, year, uid)
employee_list[uid] = e
jobs['E'].append(e.get_uid())
print("录入成功!姓名:%s,工号:%d,薪资:%d" % (e.get_name(), e.get_uid(), e.salary()) )
uid = uid + 1
if job == 'T':
if grade > t_max_grade:
grade = int(input(("该职位最高级别职位为%d,请重新录入级别:" % t_max_grade)))
t = Teamleader(name, job, grade, year, uid)
employee_list[uid] = t
jobs['T'].append(t.get_uid())
print("录入成功!姓名:%s,工号:%d,薪资:%d" % (t.get_name(), t.get_uid(), t.salary()) )
uid = uid + 1
if job == 'M':
if grade > m_max_grade:
grade = int(input(("该职位最高级别职位为%d,请重新录入级别:" % m_max_grade)))
m = Manager(name, job, grade, year, uid)
employee_list[uid] = m
jobs['M'].append(m.get_uid())
print("录入成功!姓名:%s,工号:%d,薪资:%d" % (m.get_name(), m.get_uid(), m.salary()) )
uid = uid + 1
if select == '2':
stype = int(input("1.员工查询;2.职位查询:"))
if stype == 1:
suid = int(input("请输入工号:"))
try:
result = employee_list[suid]
except KeyError:
print("该工号不存在!")
continue
print("姓名:%s" % result.get_name())
print("职位:%s" % result.get_job())
print("级别:%d" % result.get_grade())
print("工龄:%d" % result.get_year())
print("薪资:%d" % result.salary())
if stype == 2:
sjob = input("职位(E.普通员工;T.组长;M.经理):")
scnt = len(jobs[sjob])
if sjob == 'E':
print("目前普通员工共有%d人:" % scnt)
if sjob == 'T':
print("目前组长共有%d人:" % scnt)
if sjob == 'M':
print("目前经理共有%d人:" % scnt)
for iuid in jobs[sjob]:
#print(iuid)
#print(jobs)
ie = employee_list[iuid]
print("%d - %s" % (ie.get_uid(), ie.get_name()))
if select == '3':
suid = int(input("请输入工号:"))
e = employee_list[suid]
print("%s ,工号:%d ,当前职位:%s,当前薪资:%d" % (e.get_name(), e.get_uid(),e.get_job() + str(e.get_grade()), e.salary() ))
sgrade = int(input("请输入需要增加的级数:"))
n_salsry = e.salary() #目前的薪资
if e.get_job() == 'E':
if e.get_grade() + sgrade > e_max_grade :
e.grade = 1
e.job = 'T'
#更新数据库
#移出E类别,加入T类别
jobs['E'].remove(suid)
jobs['T'].append(suid)
#原来存的是Emloyee类,升级后变成Teamleader类
ne = Teamleader(e.name, e.job, e.grade, e.year, e.uid)
employee_list[suid] = ne
else:
e.grade = e.get_grade() + sgrade
if e.get_job() == 'T':
if e.get_grade() + sgrade > t_max_grade :
e.grade = 1
e.job = 'M'
#更新数据库
#移出T类别,加入M类别
jobs['T'].remove(suid)
jobs['M'].append(suid)
#原来存的是Teamleader类,升级后变成Manager类
ne = Manager(e.name, e.job, e.grade, e.year, e.uid)
employee_list[suid] = ne
else:
e.grade = e.get_grade() + sgrade
if e.get_job() == 'M':
if e.get_grade() + sgrade > m_max_grade :
print("已超经理最高级别,按最高级处理%d级" % m_max_grade)
e.grade = m_max_grade
else:
e.grade = e.get_grade() + sgrade
s_salary = ne.salary() #升级后的薪资
gap_salary = s_salary - n_salsry
#更新数据库(字典表)
#上面直接修改了实例对象的属性值,不用在更新字典表了
print("升级成功!")
print("%s ,工号:%d ,当前职位:%s,升级后薪资:%d (+ %d )" % (ne.get_name(), ne.get_uid(),ne.get_job() + str(ne.get_grade()), ne.salary(), gap_salary))
if select == '4':
suid = int(input("请输入工号:"))
e = employee_list[suid]
print("%s ,工号:%d ,当前职位:%s,当前薪资:%d" % (e.get_name(), e.get_uid(),e.get_job() + str(e.get_grade()), e.salary() ))
sgrade = int(input("请输入需要减少的级数:"))
n_salsry = e.salary() #目前的薪资
if e.get_job() == 'E':
if e.get_grade() - sgrade<=0:
print("已超普通员工最低级别,按最低级处理1级")
e.grade = 1
else:
e.grade = e.get_grade() - sgrade
if e.get_job() == 'T':
if e.get_grade() - sgrade<=0:
e.grade = e_max_grade
e.job = 'E'
#更新数据库
#移出T类别,加入E类别
jobs['T'].remove(suid)
jobs['E'].append(suid)
#原来存的是Teamleader类,降级后变成Employee类
ne = Employee(e.name, e.job, e.grade, e.year, e.uid)
employee_list[suid] = ne
else:
e.grade = e.get_grade() - sgrade
if e.get_job() == 'M':
if e.get_grade() - sgrade<=0:
e.grade = t_max_grade
e.job = 'T'
#更新数据库
#移出M类别,加入T类别
jobs['M'].remove(suid)
jobs['T'].append(suid)
#原来存的是Manager类,降级后变成Teamleader类
ne = Teamleader(e.name, e.job, e.grade, e.year, e.uid)
employee_list[suid] = ne
else:
e.grade = e.get_grade() - sgrade
s_salary = ne.salary() #升级后的薪资
gap_salary = n_salsry -s_salary
#更新数据库(字典表)
#上面直接修改了实例对象的属性值,不用在更新字典表了
print("升级成功!")
print("%s ,工号:%d ,当前职位:%s,升级后薪资:%d (- %d )" % (ne.get_name(), ne.get_uid(),ne.get_job() + str(ne.get_grade()), ne.salary(), gap_salary))
if select == '5':
break
main()
|
|