|
|
发表于 2023-4-16 15:22:15
|
显示全部楼层
0.通过定义不同的类,类具有相同的方法
1.可以使同一个方法在对不同的类进行操作时达到不同的效果
2.可以
3.当你看到一只鸟走起来像鸭子,游泳起来鸭子,叫起来也像鸭子,那么这只鸟就被称为鸭子
4.降低了耦合
5.不是
0.#定义员工大类
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
self.salary = 0
def get_uid(self):
print(f'工号:{self.uid}')
def get_name(self):
print(f'姓名:{self.name}')
def get_job(self):
print(f'职位:{self.job}')
def get_grade(self):
print(f'级别:{self.grade}')
def get_year(self):
print(f'工龄:{self.year}')
def get_salary(self):
print(f'薪资:{self.salary}')
#定义普通员工类
class Employee(Staff):
def __init__(self, name, job, grade, year, uid):
super().__init__(name, 'E', grade, year, uid)
self.salary = 3000 + 500 * self.grade + 50 * self.year
#定义组长类
class Teamleader(Staff):
def __init__(self, name, job, grade, year, uid):
super().__init__(name, 'T', grade, year, uid)
self.salary = 4000 + (800 * self.grade) + (100 * self.year)
#定义经理类
class Manager(Staff):
def __init__(self, name, job, grade, year, uid):
super().__init__(name, 'M', grade, year, uid)
self.salary = 5000 + 1000 * (self.grade + self.year)
#定义管理类
class Manage:
def __init__(self):
self.staffs = {}
self.uid = 10000
#程序功能入口
def welcome(self):
ins = 0
while ins != '5':
ins = input('\n1.录入;2.查询;3.升级;4.降级;5.退出:')
if ins == '1':
self.creat_staff()
if ins == '2':
self.view()
if ins == '3':
self.upgrade()
if ins == '4':
self.downgrade()
if ins == '5':
print('再见~')
#程序功能:创建新员工
def creat_staff(self):
name = input('姓名:')
job = input('职位(E.普通员工;T.组长;M.经理):')
year = int(input('工龄:'))
grade = int(input('级别:'))
while grade < 1:
grade = int(input('最低级别为1,请重新输入:'))
if job == 'E':
while grade > 10:
grade = int(input('该职位最高级别为10,请重新输入:'))
while grade < 1:
grade = int(input('最低级别为1,请重新输入:'))
staff = Employee(name, 'E', grade, year, self.uid)
if job == 'T':
while grade > 6:
grade = int(input('该职位最高级别为6,请重新输入:'))
while grade < 1:
grade = int(input('最低级别为1,请重新输入:'))
staff = Teamleader(name, 'T', grade, year, self.uid)
if job == 'M':
while grade > 3:
grade = int(input('该职位最高级别为3,请重新输入:'))
while grade < 1:
grade = int(input('最低级别为1,请重新输入:'))
staff = Manager(name, 'M', grade, year, self.uid)
self.staffs[self.uid] = staff
print(f'录入成功!姓名:{name},工号:{self.uid},薪资:{self.staffs[self.uid].salary}')
self.uid += 1
#程序功能:查询
def view(self):
_ = input('1.员工查询;2.职位查询:')
if _ == '1':
ins = int(input('请输入工号:'))
if ins in self.staffs:
print(f'姓名:{self.staffs[ins].name}')
print(f'职位:{self.staffs[ins].job}')
print(f'级别:{self.staffs[ins].grade}')
print(f'工龄:{self.staffs[ins].year}')
print(f'薪资:{self.staffs[ins].salary}')
else:
print('该工号不存在!')
if _ == '2':
ins = input('职位(E.普通员工;T.组长;M.经理):')
while ins != 'E' and ins != 'T' and ins != 'M':
ins = input('请重新输入:')
if ins == 'E':
count = 0
for i in self.staffs.values():
if i.job == 'E':
count += 1
if count == 0:
print('目前公司没有普通员工!')
else:
print(f'目前普通员工共有{count}人')
for j in self.staffs.items():
if j[1].job == 'E':
print(f'{j[0]} - {j[1].name}')
if ins == 'T':
count = 0
for i in self.staffs.values():
if i.job == 'T':
count += 1
if count == 0:
print('目前公司没有组长!')
else:
print(f'目前组长共有{count}人')
for j in self.staffs.items():
if j[1].job == 'T':
print(f'{j[0]} - {j[1].name}')
if ins == 'M':
count = 0
for i in self.staffs.values():
if i.job == 'M':
count += 1
if count == 0:
print('目前公司没有经理!')
else:
print(f'目前普通员工共有{count}人')
for j in self.staffs.items():
if j[1].job == 'M':
print(f'{j[0]} - {j[1].name}')
#程序功能:升级
def upgrade(self):
ins = int(input('请输入工号:'))
if ins in self.staffs:
print(f'{self.staffs[ins].name},工号:{self.staffs[ins].uid},当前职位:{self.staffs[ins].job}{self.staffs[ins].grade},当前薪资:{self.staffs[ins].salary}')
up = int(input('请输入需要增加的级数:'))
while up < 1:
up = int(input('请输入正确的级数:'))
oldsalary = self.staffs[ins].salary
if self.staffs[ins].job == 'E':
self.staffs[ins].grade += up
if self.staffs[ins].grade > 10:
self.staffs[ins] = Teamleader(self.staffs[ins].name, 'T', 1, self.staffs[ins].year, ins)
elif self.staffs[ins].job == 'T':
self.staffs[ins].grade += up
if self.staffs[ins].grade > 6:
self.staffs[ins] = Manager(self.staffs[ins].name, 'M', 1, self.staffs[ins].year, ins)
elif self.staffs[ins].job == 'M':
self.staffs[ins].grade += up
if self.staffs[ins].grade > 3:
print("升至最高级!")
self.staffs[ins].grade = 3
print('升级成功!')
print(f'{self.staffs[ins].name},工号:{self.staffs[ins].uid},升级后职位:{self.staffs[ins].job}{self.staffs[ins].grade},升级后薪资:{self.staffs[ins].salary}({(self.staffs[ins].salary - oldsalary):+})')
else:
print('该工号不存在!')
#程序功能:降级
def downgrade(self):
ins = int(input('请输入工号:'))
if ins in self.staffs:
print(f'{self.staffs[ins].name},工号:{self.staffs[ins].uid},当前职位:{self.staffs[ins].job}{self.staffs[ins].grade},当前薪资:{self.staffs[ins].salary}')
down = int(input('请输入需要减少的级数:'))
while down < 1:
down = int(input('请输入正确的级数:'))
oldsalary = self.staffs[ins].salary
if self.staffs[ins].job == 'M':
self.staffs[ins].grade -= down
if self.staffs[ins].grade < 1:
self.staffs[ins] = Teamleader(self.staffs[ins].name, 'T', 6, self.staffs[ins].year, ins)
elif self.staffs[ins].job == 'T':
self.staffs[ins].grade -= down
if self.staffs[ins].grade < 1:
self.staffs[ins] = Employee(self.staffs[ins].name, 'E', 10, self.staffs[ins].year, ins)
elif self.staffs[ins].job == 'E':
self.staffs[ins].grade -= down
if self.staffs[ins].grade < 1:
print("降至最低级!")
self.staffs[ins].grade = 1
print('降级成功!')
print(f'{self.staffs[ins].name},工号:{self.staffs[ins].uid},降级后职位:{self.staffs[ins].job}{self.staffs[ins].grade},降级后薪资:{self.staffs[ins].salary}({(self.staffs[ins].salary - oldsalary):+})')
else:
print('该工号不存在!')
def main():
m = Manage()
m.welcome()
main()
|
|