每日打卡
1
0.在不同场景有不同的作用
1.方便,可以对父类的函数的重写
2.可以,一个是数值的相加,一个是字符串的拼接
3.长得像就可以
4.降低了耦合
5.不是
动动手
0.
1
1
# 第0题
# 就是传入的对象不同,则执行的功能效果也不同
# 第1题
# 灵活。针对不同对象有不同的功能效果
# 第2题
# 可以
# 第3题
# 不知道
# 第4题
# 降低了耦合度
# 第5题
# 不属于
{:5_90:}
11
0.根据传入的参数类型不同执行不同的运算
1.灵活处理不同类型的数据
2.可以
3.When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.
4.降低内聚
5.这不是我们C艹的重载吗,下次记得说明来源
0
本帖最后由 Qoolies 于 2023-7-26 15:44 编辑
# 简单的员工管理程序
# 具体要求见:https://fishc.com.cn/thread-214231-1-2.html
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
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
class Employee(Staff):
def __init__(self, name, job, grade, year, uid):
super().__init__(name, job, grade, year, uid)
def salary(self):
return 3000 + 500 * self.grade + 50 * self.year
class TeamLeader(Staff):
def __init__(self, name, job, grade, year, uid):
super().__init__(name, job, grade, year, uid)
def salary(self):
return 4000 + 800 * self.grade + 100 * self.year
class Manager(Staff):
def __init__(self, name, job, grade, year, uid):
super().__init__(name, job, grade, year, uid)
def salary(self):
return 5000 + 1000 * (self.grade + self.year)
class Manage:
def __init__(self):
self.member = dict()
self.uid = 10000
def intro(self):
opt = None
while opt != "5":
opt = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
if opt == "1":
self.record()
elif opt == "2":
self.query()
elif opt == "3":
self.up_grade()
elif opt == "4":
self.down_grade()
elif opt == "5":
print("程序退出!")
def job_check(self):
job = input("职位(E.普通员工;T.组长;M.经理):")
while job not in ("E", "T", "M"):
job = input("请输入正确职位代码!")
return job
def grade_check(self, job):
grade = int(input("级别:"))
while True:
if job == "E" and grade > 10:
grade = int(input("该职位最高级别为10,请重新录入级别:"))
elif job == "T" and grade > 6:
grade = int(input("该职位最高级别为6,请重新录入级别:"))
elif job == "M" and grade > 3:
grade = int(input("该职位最高级别为3,请重新录入级别:"))
else:
break
return grade
def record(self):
name = input("姓名:")
job = self.job_check()
year = int(input("工龄:"))
grade = self.grade_check(job)
if job == "E":
self.member = Employee(name, job, grade, year, self.uid)
elif job == "T":
self.member = TeamLeader(name, job, grade, year, self.uid)
elif job == "M":
self.member = Manager(name, job, grade, year, self.uid)
print(f"录入成功!姓名:{name}, 工号:{self.uid}, 薪资:{self.member.salary()}")
self.uid += 1
def query(self):
opt = None
while opt not in ("1", "2"):
opt = input("1.员工查询;2职位查询:")
if opt == "1":
uid = int(input("请输入工号:"))
if uid in self.member:
print(f"姓名:{self.member.name}")
print(f"职位:{self.member.job}")
print(f"级别:{self.member.grade}")
print(f"工龄:{self.member.year}")
print(f"薪资:{self.member.salary()} ")
else:
print("该工号不存在!")
elif opt == "2":
count = 0
job_info = list()
job = self.job_check()
if job == "E":
job_name = "普通员工"
elif job == "T":
job_name = "组长"
elif job == "M":
job_name = "经理"
for each in self.member.values():
if each.job == job:
count += 1
job_info.append(f"{each.uid} - {each.name}")
if count == 0:
print(f"目前公司没有{job_name}。")
else:
print(f"目前{job_name}共有 {count} 人:")
for each in job_info:
print(each)
def up_grade(self):
uid = int(input("请输入工号:"))
if uid in self.member:
c_salary = self.member.salary()
print(
f"{self.member.name}, 工号:{uid}, 当前职位:{self.member.job}{self.member.grade}, 当前薪资:{c_salary}")
self.member.grade += int(input("请输入需要增加的级数:"))
succeed = False
if self.member.job == "E" and self.member.grade > 10:
self.member.job = "T"
self.member = TeamLeader(self.member.name, self.member.job, 1, self.member.year,
uid)
succeed = True
elif self.member.job == "T" and self.member.grade > 6:
self.member.job = "M"
self.member = Manager(self.member.name, self.member.job, 1, self.member.year, uid)
succeed = True
elif self.member.job == "M" and self.member.grade > 3:
print("超过规定级别!")
if succeed:
print("升级成功!")
n_salary = self.member.salary() - c_salary
print(
f"{self.member.name}, 工号:{uid}, 当前职位:{self.member.job}{self.member.grade}, 当前薪资:{self.member.salary()}({n_salary:+})")
else:
print("工号不存在")
def down_grade(self):
uid = int(input("请输入工号:"))
if uid in self.member:
c_salary = self.member.salary()
print(f"{self.member.name}, 工号:{uid}, 当前职位:{self.member.job}{self.member.grade}, 当前薪资:{c_salary}")
self.member.grade -= int(input("请输入需要减少的级数:"))
succeed = False
if self.member.job == "E" and self.member.grade < 1:
print("超过最低级别!")
elif self.member.job == "T" and self.member.grade < 1:
self.member.job = "E"
self.member = Employee(self.member.name, self.member.job, 10, self.member.year, uid)
succeed = True
elif self.member.job == "M" and self.member.grade < 1:
self.member.job = "T"
self.member = TeamLeader(self.member.name, self.member.job, 6, self.member.year, uid)
succeed = True
if succeed:
print("降级成功!")
n_salary = self.member.salary() - c_salary
print(
f"{self.member.name}, 工号:{uid}, 当前职位:{self.member.job}{self.member.grade}, 当前薪资:{self.member.salary()}({n_salary:+})")
else:
print("工号不存在")
def main():
m = Manage()
m.intro()
main()
+1
0.面对不同对象体现不同的作用
1.一个方法可以应用于各种对象
2.可以
3.春江水暖鸭先知
4.高内聚
5.是
0.
class Employee_cl:
def Employee_job(self,job):
state=['E.普通员工','T.组长','M.经理']
while True:
if job=='E':
job=state
break
elif job=='T':
job=state
break
elif job=='M':
job=state
break
else:
job=input('该职位简写不存在,请重新填写您的职位:')
return job
def Employee_grade(self,grade):
if self.job=='E':
while grade>10:
grade=int(input('该职位最高级别为10,请重新录入级别:'))
elif self.job=='T':
while grade>6:
grade=int(input('该职位最高级别为6,请重新录入级别:'))
elif self.job=='M':
while grade>3:
grade=int(input('该职位最高级别为3,请重新录入级别:'))
return grade
def Employee_money(self,job,grade,year):
if job=='E':
money=3000+500*grade+50*year
elif job=='T':
money=4000+800*grade+100*year
elif job=='M':
money=5000+1000*(grade+year)
return money
def Confirm_uid(self,uid):
if not self.record.get(uid):
print('该工号不存在!')
else:
employee=self.record
print(f'姓名:{employee}',f'职位:{employee}',f'级别:{employee}',f'工龄:{employee}',f'薪资:{employee}',sep='\n')
def Confirm_job(self,job):
count=0
infor=[]
state=['E.普通员工','T.组长','M.经理']
if job=='E' or job=='T' or job=='M':
if job=='E':
zc=state
elif job=='T':
zc=state
else:
zc=state
for k in self.record:
if self.record==job:
count+=1
infor.append(])
if count>0:
print(f'目前{zc}共有{count}人')
for i in infor:
print(f'{i} - {i}')
else:
print(f'目前公司没有{zc}!')
else:
print('该职位不存在。')
def increase(self,uid):
if not self.record.get(uid):
print('该工号不存在!')
else:
employee=self.record
print(f'{employee},',f'工号:{uid},',f'当前职位:{employee+str(employee)},',f'当前薪资:{employee}')
t=employee
state=['E.普通员工','T.组长','M.经理']
on=int(input('请输入需要增加的级数:'))
employee=on+employee
if employee=='E':
if employee>10:
employee=1
employee=state
elif employee=='T':
if employee>6:
employee=1
employee=state
elif employee=='M':
if employee>3:
employee=3
print('升级成功!')
employee=self.Employee_money(employee,employee,employee)
if employee-t>0:
print(f'{employee},',f'工号:{uid},',f'升级后职位:{employee+str(employee)},',f'升级后薪资:{employee}(+{employee-t})')
else:
print(f'{employee},',f'工号:{uid},',f'升级后职位:{employee+str(employee)},',f'升级后薪资:{employee}({employee-t})')
def decrease(self,uid):
if not self.record.get(uid):
print('该工号不存在!')
else:
employee=self.record
print(f'{employee},',f'工号:{uid},',f'当前职位:{employee+str(employee)},',f'当前薪资:{employee}')
t=employee
state=['E.普通员工','T.组长','M.经理']
on=int(input('请输入需要减少的级数:'))
employee=employee-on
if employee=='E':
if employee<1:
employee=1
elif employee=='T':
if employee<1:
employee=10
employee=state
elif employee=='M':
if employee<1:
employee=6
employee=state
print('降级成功!')
employee=self.Employee_money(employee,employee,employee)
if employee-t>0:
print(f'{employee},',f'工号:{uid},',f'降级后职位:{employee+str(employee)},',f'降级后薪资:{employee}(+{employee-t})')
else:
print(f'{employee},',f'工号:{uid},',f'降级后职位:{employee+str(employee)},',f'降级后薪资:{employee}({employee-t})')
def get_uid(self):
self.uid=self.js
return self.uid
def get_name(self):
self.name=input('姓名:')
return self.name
def get_job(self):
job=input('职位(E.普通员工;T.组长;M.经理):')
self.job=self.Employee_job(job)
return self.job
def get_grade(self):
grade=int(input('级别:'))
self.grade=self.Employee_grade(grade)
return self.grade
def get_year(self):
self.year=int(input('工龄:'))
return self.year
def salary(self):
self.money=self.Employee_money(self.job,self.grade,self.year)
return self.money
class Welcome(Employee_cl):
def __init__(self):
print()
self.record={}
self.js=10000
def cl(self):
ope=input('1.录入;2.查询;3.升级;4.降级;5.退出:')
while ope!='5':
if ope=='1':
data=
self.record=data
self.js+=1
print(f'录入成功!姓名:{self.name},工号:{self.uid},薪资:{self.money}')
print(self.record)
elif ope=='2':
choice=input('1.员工查询;2.职位查询:')
if choice=='1':
uid=int(input('请输入工号:'))
self.Confirm_uid(uid)
elif choice=='2':
job=input('职位(E.普通员工;T.组长;M.经理):')
self.Confirm_job(job)
elif ope=='3':
uid=int(input('请输入工号:'))
self.increase(uid)
elif ope=='4':
uid=int(input('请输入工号:'))
self.decrease(uid)
print()
ope=input('1.录入;2.查询;3.升级;4.降级;5.退出:')
def main():
user=Welcome()
user.cl()
1
10
问答题:
0:在子类中重新定义一个同名的方法进行覆盖,这种做法我们称为重写
1:接口是不变的,但它却可以根据不同的对象执行不同的操作。
2:可以
3:When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.
4:降低了耦合度
5:不属于,对象是一致的
看看
0.
1.方便
2.可以
3.When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.
4.降低了耦合度
5.属于
0.
1
class Worker:
def __init__(self, uid, name, job, grade, year):
self.uid = uid
self.name = name
self.job = job
self.grade = grade
self.year = year
def sal(self):
if self.job == "E":
salary = 3000 + 500 * self.grade + 50 * self.year
if self.job == "T":
salary = 4000 + 800 * self.grade + 100 * self.year
if self.job == "M":
salary = 5000 + 1000 * self.grade + 1000 * self.year
return salary
class Manage():
def __init__(self):
self._uid = {}
self.counts = 10000
n = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
while n != "5":
if n == "1":
self.new_worker()
if n == "2":
self.lookup()
if n == "3":
self.upgrade()
if n == "4":
self.downgrade()
print()
n = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
def new_worker(self):
uid = self.counts
name = input("姓名:")
job =input("职位(E.普通员工;T.组长;M.经理):")
year = int(input("工龄:"))
grade = int(input("级别:"))
while job == "E" and grade > 10:
grade = int(input("该职位最高级别为10,请重新录入级别:"))
while job == "T" and grade > 6:
grade = int(input("该职位最高级别为6,请重新录入级别:"))
while job == "M" and grade > 3:
grade = int(input("该职位最高级别为3,请重新录入级别:"))
new = Worker(uid, name, job, grade, year)
self._uid = new
self.counts += 1
salary = new.sal()
print(f"录入成功!姓名:{name},工号:{uid},薪资:{salary}")
def lookup(self):
n = input("1.员工查询;2.职位查询:")
if n == "1":
uid = int(input("请输入工号:"))
if not self._uid.get(uid):
print("该工号不存在!")
else:
print(f"姓名:{self._uid.name}")
print(f"职位:{self._uid.job}")
print(f"级别:{self._uid.grade}")
print(f"工龄:{self._uid.year}")
print(f"薪资:{self._uid.sal()}")
print()
if n == "2":
j = input("职位(E.普通员工;T.组长;M.经理):")
c = 0
l = []
for each in self._uid:
if self._uid.job == j:
l.append(f"{self._uid.uid} - {self._uid.name}")
c += 1
if j == "E":
if c == 0:
print("目前公司没有普通员工!")
else:
print(f"目前普通员工共有{len(l)}人:")
for x in l:
print(x)
if j == "T":
if c == 0:
print("目前公司没有组长!")
else:
print(f"目前组长共有{len(l)}人:")
for x in l:
print(x)
if j == "M":
if c == 0:
print("目前公司没有经理!")
else:
print(f"目前经理共有{len(l)}人:")
for x in l:
print(x)
def upgrade(self):
uid = int(input("请输入工号:"))
sal1 = self._uid.sal()
print(f"{self._uid.name},工号:{uid},当前职位:{self._uid.job}{self._uid.grade},当前薪资:{sal1}")
lup = int(input("请输入需要增加的级数:"))
if self._uid.job == "E":
if self._uid.grade + lup > 10:
self._uid.job = "T"
self._uid.grade = 1
else:
self._uid.grade = self._uid.grade + lup
if self._uid.job == "T":
if self._uid.grade + lup > 6:
self._uid.job = "M"
self._uid.grade = 1
else:
self._uid.grade = self._uid.grade + lup
if self._uid.job == "M":
self._uid.grade = self._uid.grade + lup
sal2 = self._uid.sal()
print("升级成功!")
print(f"{self._uid.name},工号:{uid},升级后职位:{self._uid.job}{self._uid.grade},升级后薪资:{sal2}({sal2 - sal1})")
def downgrade(self):
uid = int(input("请输入工号:"))
sal1 = self._uid.sal()
print(f"{self._uid.name},工号:{uid},当前职位:{self._uid.job}{self._uid.grade},当前薪资:{sal1}")
ldown = int(input("请输入需要减少的级数:"))
if self._uid.job == "E":
self._uid.grade = self._uid.grade - ldown
if self._uid.job == "T":
if self._uid.grade - ldown < 1:
self._uid.job = "E"
self._uid.grade = 10
else:
self._uid.grade = self._uid.grade - ldown
if self._uid.job == "M":
if self._uid.grade - ldown < 1:
self._uid.job = "T"
self._uid.grade = 6
else:
self._uid.grade = self._uid.grade - ldown
sal2 = self._uid.sal()
print("降级成功!")
print(f"{self._uid.name},工号:{uid},降级后职位:{self._uid.job}{self._uid.grade},降级后薪资:{sal2}({sal2 - sal1})")