|
|
发表于 2023-9-30 13:53:53
|
显示全部楼层
0, 同一个函数在面对不同类型的对象能体现出相似但不同的功能
1, 我认为主要是提高代码的简洁性,降低学习的难度
2. 可以
3.
4. 我认为是增强了内聚
5. 不是,他只不过是利用了函数的基本特性
0. 就这样吧
- class PubInfoMixin: # 公共信息库
- uid = 10000
- pi_dict = {}
- class Employee(PubInfoMixin): # 普通员工类
-
- iic = 0 #类的实例化次数
- def __init__(self, name, job, grade, year, uid):
- self.name = name
- self.job = job
- self.grade = grade
- self.year = year
- self.uid = uid
- Employee.iic += 1
-
- def __del__(self):
- Employee.iic -= 1
-
- 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):
- return 3000 + 500*self.grade +50*self.year
-
- class Teamleader(PubInfoMixin):
-
- iic = 0
- def __init__(self, name, job, grade, year, uid):
- self.name = name
- self.job = job
- self.grade = grade
- self.year = year
- self.uid = uid
- Teamleader.iic += 1
-
- def __del__(self):
- Teamleader.iic -= 1
- 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):
- return 4000 + 800*self.grade + 100*self.year
- class Manager(PubInfoMixin):
- iic = 0
- def __init__(self, name, job, grade, year, uid):
- self.name = name
- self.job = job
- self.grade = grade
- self.year = year
- self.uid = uid
- Manager.iic += 1
-
- def __del__(self):
- Manager.iic -= 1
-
- 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):
- return 5000 + 1000*(self.grade + self.year)
- def luru():
- name = input("姓名")
- job = input("职位(E.普通职员;T.组长;M.经理):")
- year = int(input("工龄"))
- grade = int(input("级别"))
- while job :
- if job == 'E':
- PubInfoMixin.pi_dict[PubInfoMixin.uid] = Employee(name, job, grade, year, PubInfoMixin.uid)
- PubInfoMixin.uid += 1
- break
- elif job == 'T':
- PubInfoMixin.pi_dict[PubInfoMixin.uid] = Teamleader(name, job, grade, year, PubInfoMixin.uid)
- PubInfoMixin.uid += 1
- break
- elif job == 'M':
- PubInfoMixin.pi_dict[PubInfoMixin.uid] = Manager(name, job, grade, year, PubInfoMixin.uid)
- PubInfoMixin.uid += 1
- break
- else:
- job = input("指令错误,请重新输入\n职位(E.普通职员;T.组长;M.经理):")
- def chaxun():
- ins = input("1.员工查询;2.职位查询")
- if ins == '1':
- uid = int(input("请输入工号:"))
- ygdx = PubInfoMixin.pi_dict.get(uid)
- if ygdx:
- print("姓名:",ygdx.name)
- print("职位:",ygdx.job)
- print("级别:",ygdx.grade)
- print("工龄:",ygdx.year)
- print("薪资:",ygdx.salary())
- else:
- print("该工号不存在!")
-
- elif ins == '2':
- job_ = input("职位(E.普通职员;T.组长;M.经理):")
- if job_ == 'E':
- print('目前普通职员共有',Employee.iic,'人', sep='')
- elif job_ == 'T':
- print('目前组长共有',Teamleader.iic,'人', sep='')
- elif job_ == 'M':
- print('目前经理共有',Manager.iic,'人', sep='')
- else:
- print("指令错误,请重新输入指令")
- else:
- print("指令错误,请重新输入指令")
- def shengji():
- _id = int(input("请输入工号"))
- dx = PubInfoMixin.pi_dict.get(_id)
- if dx:
- xz_1 = dx.salary()
- print(dx.name, "工号:", dx.uid, "当前职位:", dx.job, dx.grade, "当前薪资", xz_1, sep='')
- _ = int(input("请输入要增加的级数:"))
- dx.grade += _
- print("升级成功!")
- print(dx.name, "工号:", dx.uid, "升级后职位:", dx.job, dx.grade, "升级后薪资", dx.salary(), '(',dx.salary()-xz_1 , ')', sep='')
- else:
- print("无此工号!")
- def jiangji():
- _id = int(input("请输入工号"))
- dx = PubInfoMixin.pi_dict.get(_id)
- if dx:
- xz_1 = dx.salary()
- print(dx.name, "工号:", dx.uid, "当前职位:", dx.job, dx.grade, "当前薪资", xz_1, sep='')
- _ = int(input("请输入要减少的级数:"))
- dx.grade += _
- print("降级成功!")
- print(dx.name, "工号:", dx.uid, "降级后职位:", dx.job, dx.grade, "降级后薪资", dx.salary(), '(', xz_1-dx.salary(), ')', sep='')
- else:
- print("无此工号!")
- def main():
- ins = input('1.录入;2.查询;3.升级;4.降级;5.退出:')
- while ins != '5':
- if ins == '1':
- luru()
- elif ins == '2':
- chaxun()
- elif ins == '3':
- shengji()
- elif ins == '4':
- jiangji()
- else:
- ins = input("请重新输入指令:")
- ins = input('1.录入;2.查询;3.升级;4.降级;5.退出:')
- main()
复制代码 |
|