鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[课后作业] 第063讲:类和对象(VI)| 课后测试题及答案

  [复制链接]
发表于 2024-8-6 11:50:13 | 显示全部楼层
零基础入门学习Python封面
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-6 09:30:06 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-4 10:12:12 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-2 15:58:46 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-1 09:11:33 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-30 19:46:19 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:同一个类,它可以通过继承表现出不同的属性,使用不同的方法

第 1 题的答案是:多态可以使用同样的类实现多种功能,方便编程的时候根据具体情况做变化

第 2 题的答案是:可以

第 3 题的答案是:不知道

第 4 题的答案是:低耦合

第 5 题的答案是:不是

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-30 17:08:16 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:同一个对象,在不同的场景下有不同的效果;重写就是实现类继承的多态

第 1 题的答案是:以较为直觉的方式处理不同对象之间的逻辑运算问题

第 2 题的答案是:可以

第 3 题的答案是:“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

第 4 题的答案是:降低了耦合度

第 5 题的答案是:不属于

-------- 动动手 --------

请将第 0 题的代码写在下方:
# 员工类:记录员工的关键信息
class Member:
    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(year):
        return self.uid

    def salary(self):
        if self.job == 'E':
            return 3000 + 500 * self.grade + 50 * self.year
        elif self.job == 'T':
            return 4000 + 800 * self.grade + 100 * self.year
        else:
            return 5000 + 1000 * self.grade + 1000 * self.year

# 管理类:所有功能的实现
##class Manage(PswMixin, LoggerMixin):
class Manage:
    # 程序功能:录入
    def Create(self, member):
        uid = 10000
        while uid in [each.uid for each in member]:
            uid += 1
        name = input('姓名:').strip()
        
        job = input('职位(E.普通员工; T.组长; M.经理):').strip()
        while job not in ['E', 'T', 'M']:
            job = input('请重新输入员工分类(E、T、M):').strip()
        
        year = int(input('工龄:').strip())
        while year > 50 or year < 0:
            year = int(input('请重新输入工龄:').strip())
      
        grade = int(input('级别:').strip())
        if job == 'E':
            while grade > 10 or grade < 0:
                grade = int(input('请重新输入级别:').strip())
        elif job == 'T':
            while grade > 6 or grade < 0:
                grade = int(input('请重新输入级别:').strip())
        else:
            while grade > 3 or grade < 0:
                grade = int(input('请重新输入级别:').strip())
               
        member.append(Member(name, job, grade, year, uid))
        print(f"录入成功!姓名: {member[-1].name},工号: {member[-1].uid},薪资:{member[-1].salary()}")

##        self.log(f"开卡成功:{num} -> {uid},时间:{rtime}\n")
   
    # 程序功能:查询
    def Lookup(self, member):
        jobs = {'E':'普通员工', 'T':'组长', 'M':'经理'}
        ins = input('1.员工查询;2.职位查询:').strip()
        if ins == '1':
            uid = int(input('请输入工号:').strip())
            if uid in [each.uid for each in member]:
                print(f'姓名:{member[uid-10000].name}')
                print(f'职位:{member[uid-10000].job}')
                print(f'级别:{member[uid-10000].grade}')
                print(f'工龄:{member[uid-10000].year}')
                print(f'薪资:{member[uid-10000].salary()}')
            else:
                print('该工号不存在!')
        elif ins == '2':
            job = input('职位(E.普通员工; T.组长; M.经理):').strip()
            job_reg = [each for each in member if each.job == job]
            print(f'目前{jobs[job]}共有{len(job_reg)}人:')
            for each in job_reg:
                print(f'{each.uid} - {each.name}')
        else:
            print('查询指令错误!')
        
        
    # 程序功能:升级
    def Upgrade(self, member):
        uid = int(input('请输入工号:').strip())
        while uid not in [each.uid for each in member]:
            uid = int(input('该工号不存在,请重新输入:').strip())
        member_reg = member[uid-10000]
        print(f"{member_reg.name},工号:{member_reg.uid},当前职位:{member_reg.job + str(member_reg.grade)},当前薪资:{member_reg.salary()}")
        suma = member_reg.grade + int(input('请输入需要增加的级数:').strip())
        if member_reg.job == 'E':
            if suma > 10:
                member_reg.job = 'T'
                member_reg.grade = 1
            else:
                member_reg.grade = suma
        elif member_reg.job == 'T':
            if suma > 5:
                member_reg.job = 'M'
                member_reg.grade = 1
            else:
                member_reg.grade = suma
        else:
            if suma > 3:
                member_reg.grade = 3
            else:
                member_reg.grade = suma
        print('升级成功!')
        print(f"{member_reg.name},工号:{member_reg.uid},升级后职位:{member_reg.job + str(member_reg.grade)},升级后薪资:{member_reg.salary()}{}")
        member[uid-10000] = member_reg
        
        
    # 程序功能:降级
    def Downgrade(self, member):
        uid = int(input('请输入工号:').strip())
        while uid not in [each.uid for each in member]:
            uid = int(input('该工号不存在,请重新输入:').strip())
        member_reg = member[uid-10000]
        print(f"{member_reg.name},工号:{member_reg.uid},当前职位:{member_reg.job + str(member_reg.grade)},当前薪资:{member_reg.salary()}")
        suma = member_reg.grade - int(input('请输入需要减少的级数:').strip())
        if member_reg.job == 'E':
            if suma < 1:
                member_reg.grade = 1
            else:
                member_reg.grade = suma
        elif member_reg.job == 'T':
            if suma < 1:
                member_reg.job = 'E'
                member_reg.grade = 10
            else:
                member_reg.grade = suma
        else:
            if suma < 1:
                member_reg.job = 'T'
                member_reg.grade = 6
            else:
                member_reg.grade = suma
        print('降级成功!')
        print(f"{member_reg.name},工号:{member_reg.uid},降级后职位:{member_reg.job + str(member_reg.grade)},降级后薪资:{member_reg.salary()}")
        member[uid-10000] = member_reg

        
###主程序
##def main():
##member = [Member(1, '1', '1', 0, '2024-03-16 15:44:42')]
##member = []
##manage = Manage()
member = []
manage = Manage()

def main():
##    member = []
##    manage = Manage()
    print('欢迎使用企业员工管理程序')
    while True:
        ins = input('\n1.录入;2.查询;3.升级;4.降级;5.退出:').strip()
        if ins == '1':
            manage.Create(member)
        elif ins == '2':
            manage.Lookup(member)
        elif ins == '3':
            manage.Upgrade(member)
        elif ins == '4':
            manage.Downgrade(member)
        elif ins == '5':
            print('感谢使用企业员工管理程序')
            break
        else:
            print('请输入正确指令!')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-29 21:31:14 | 显示全部楼层
请回复1您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-29 16:07:52 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-29 10:00:55 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-28 16:21:14 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-27 21:14:36 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-27 11:56:11 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
  1. ## 企业员工管理程序
  2. #员工总类
  3. class Workers:
  4.     def __init__(self,uid,name,job,year):
  5.         self.uid = uid
  6.         self.name = name
  7.         self.job = job
  8.         self.year = year
  9.         
  10.     def set_grade(self):
  11.         pass
  12.    
  13.     def get_uid(self):
  14.         return self.uid
  15.    
  16.     def get_name(self):
  17.         return self.name
  18.    
  19.     def get_job(self):
  20.         return self.job
  21.    
  22.     def get_grade(self):
  23.         return self.grade
  24.    
  25.     def get_year(self):
  26.         return self.year
  27.    
  28.     def salary(self):
  29.         pass
  30.    
  31.    
  32. #普通员工
  33. class Employee(Workers):
  34.         
  35.     def set_grade(self,grade):
  36.         while grade > 10:
  37.             grade = int(input('该级别最高为10,请重新录入:'))
  38.         self.grade = grade
  39.         return self.grade
  40.             
  41.     def salary(self):
  42.         self.payroll = 3000 + 500 * self.grade + 50 * self.year
  43.         return self.payroll
  44.    
  45. #组长
  46. class Teamleader(Workers):
  47.     def set_grade(self,grade):
  48.         while grade > 6:
  49.             grade = int(input('该级别最高为6,请重新录入:'))
  50.         self.grade = grade
  51.         return self.grade
  52.         
  53.     def salary(self):
  54.         self.payroll = 4000 + 800 * self.grade + 100 * self.year
  55.         return self.payroll

  56. #经理
  57. class Manager(Workers):
  58.     def set_grade(self,grade):
  59.         while grade > 3:
  60.             grade = int(input('该级别最高为3,请重新录入:'))
  61.         self.grade = grade
  62.         return self.grade
  63.             
  64.     def salary(self):
  65.         self.payroll = 5000 + 1000 * (self.grade + self.year)
  66.         return self.payroll

  67.         
  68. #运行主程序
  69. class Manage:
  70.     def __init__(self,data={},topuid=10000):
  71.         self.data = data
  72.         self.topuid = topuid
  73.         self.wellcom()
  74.    
  75.     #导入程序
  76.     def wellcom(self):
  77.         print('欢迎使用企业员工管理程序')
  78.         while True:
  79.             ans = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
  80.             if ans == '1':
  81.                 self.create()
  82.             if ans == '2':
  83.                 self.search()
  84.             if ans == '3':
  85.                 self.up_grade()
  86.             if ans == '4':
  87.                 self.lower_grade()
  88.             if ans == '5':
  89.                 print('感谢使用企业员工管理程序')
  90.                 break
  91.    
  92.     #创建程序
  93.     def create(self):
  94.         uid = self.topuid
  95.         self.topuid += 1
  96.         name = input('姓名:')
  97.         job = input('职位(E.普通员工;T.组长;M.经理):')
  98.         year = int(input('工龄:'))
  99.         if job == 'E':
  100.             worker = Employee(uid,name,'E',year)
  101.         if job == 'T':
  102.             worker = Teamleader(uid,name,'T',year)
  103.         if job == 'M':
  104.             worker = Manager(uid,name,'M',year)
  105.         worker.set_grade(int(input('级别:')))
  106.         self.data[str(worker.uid)] = worker
  107.         print(f'录入成功!姓名:{worker.name},工号{worker.uid},薪资:{worker.salary()}')
  108.         
  109.         
  110.     #查询程序
  111.     def search(self):
  112.         worker_list = []
  113.         ans = input('1.员工查询;2.职位查询:')
  114.         
  115.         #员工查询
  116.         if ans == '1':
  117.             uid = input('请输入工号:')
  118.             if not self.data.get(uid,False):
  119.                 print('该工号不存在!')
  120.             else:
  121.                 worker = self.data[uid]
  122.                 print(f'姓名:{worker.name}')
  123.                 print(f'职位:{worker.job}')
  124.                 print(f'级别:{worker.grade}')
  125.                 print(f'工龄:{worker.year}')
  126.                 print(f'薪资:{worker.payroll}')
  127.                
  128.         #职位查询        
  129.         if ans == '2':
  130.             job = input('职位(E.普通员工;T.组长;M.经理):')
  131.             job_name = ('普通员工' if job == 'E' else
  132.                         '组长' if job == 'T' else
  133.                         '经理' if job == 'M' else None)
  134.             for i in self.data:
  135.                 if self.data[i].job == job:
  136.                     worker_list.append(self.data[i])
  137.             if worker_list == []:
  138.                 print(f'目前公司没有{job_name}')
  139.             else:
  140.                 print(f'目前{job_name}共有{len(worker_list)}人:')
  141.                 for i in worker_list:
  142.                     print(f'{i.uid} - {i.name}')

  143.     #升降级判断
  144.     def re_grade(self,worker,num):
  145.         grade = worker.grade
  146.         if worker.job == 'T':
  147.             grade += 10
  148.         if worker.job == 'M':
  149.             grade += 16
  150.         while grade + num > 19:
  151.             num = int(input('超过最高级别,请重新输入:'))
  152.         while grade + num < 0:
  153.             num = int(input('低于最低级别,请重新输入:'))
  154.         grade = grade + num
  155.         if 0 < grade <= 10:
  156.             new_worker = Employee(worker.uid,worker.name,'E',worker.year)
  157.             new_worker.set_grade(grade)
  158.         if 10 < grade <= 16:
  159.             new_worker = Teamleader(worker.uid,worker.name,'T',worker.year)
  160.             new_worker.set_grade(grade - 10)
  161.         if 16 < grade <= 19:
  162.             new_worker = Manager(worker.uid,worker.name,'M',worker.year)
  163.             new_worker.set_grade(grade - 16)
  164.         return new_worker
  165.                     
  166.     #升级程序
  167.     def up_grade(self):
  168.         uid = input('请输入工号:')
  169.         if not self.data.get(uid,False):
  170.                 print('该工号不存在!')
  171.         else:
  172.             worker = self.data[uid]
  173.             print(f'{worker.name},工号:{uid},当前职位:{worker.job + str(worker.grade)},当前薪资{worker.payroll}')
  174.             num = int(input('请输入需要增加的级数:'))
  175.             new_worker = self.re_grade(worker,num)
  176.             self.data[uid] = new_worker
  177.             print('升级成功!')
  178.             print(f'{new_worker.name},工号:{new_worker.uid},升级后职位:{new_worker.job+str(new_worker.grade)},升级后薪资:{new_worker.salary()}(+{str(new_worker.payroll - worker.payroll)})')
  179.             
  180.     #降级程序
  181.     def lower_grade(self):
  182.         uid = input('请输入工号:')
  183.         if not self.data.get(uid,False):
  184.                 print('该工号不存在!')
  185.         else:
  186.             worker = self.data[uid]
  187.             print(f'{worker.name},工号:{uid},当前职位:{worker.job + str(worker.grade)},当前薪资{worker.payroll}')
  188.             num = - int(input('请输入需要降低的级数:'))
  189.             new_worker = self.re_grade(worker,num)
  190.             self.data[uid] = new_worker
  191.             print('降级成功!')
  192.             print(f'{new_worker.name},工号:{new_worker.uid},降级级后职位:{new_worker.job+str(new_worker.grade)},降级后薪资:{new_worker.salary()}({str(new_worker.payroll - worker.payroll)})')

  193. m = Manage()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-27 11:34:44 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:
根据传入对象的不同,返回相对应的结果
第 1 题的答案是:
简洁明了,方便快捷
第 2 题的答案是:
可以
第 3 题的答案是:
不知道
第 4 题的答案是:
增强内聚
第 5 题的答案是:
不属于
-------- 动动手 --------

请将第 0 题的代码写在下方:
  1. ## 企业员工管理程序
  2. #员工总类
  3. class Workers:
  4.     def __init__(self,uid,name,job,year):
  5.         self.uid = uid
  6.         self.name = name
  7.         self.job = job
  8.         self.year = year
  9.         
  10.     def set_grade(self):
  11.         pass
  12.    
  13.     def get_uid(self):
  14.         return self.uid
  15.    
  16.     def get_name(self):
  17.         return self.name
  18.    
  19.     def get_job(self):
  20.         return self.job
  21.    
  22.     def get_grade(self):
  23.         return self.grade
  24.    
  25.     def get_year(self):
  26.         return self.year
  27.    
  28.     def salary(self):
  29.         pass
  30.    
  31.    
  32. #普通员工
  33. class Employee(Workers):
  34.         
  35.     def set_grade(self,grade):
  36.         while grade > 10:
  37.             grade = int(input('该级别最高为10,请重新录入:'))
  38.         self.grade = grade
  39.         return self.grade
  40.             
  41.     def salary(self):
  42.         self.payroll = 3000 + 500 * self.grade + 50 * self.year
  43.         return self.payroll
  44.    
  45. #组长
  46. class Teamleader(Workers):
  47.     def set_grade(self,grade):
  48.         while grade > 6:
  49.             grade = int(input('该级别最高为6,请重新录入:'))
  50.         self.grade = grade
  51.         return self.grade
  52.         
  53.     def salary(self):
  54.         self.payroll = 4000 + 800 * self.grade + 100 * self.year
  55.         return self.payroll

  56. #经理
  57. class Manager(Workers):
  58.     def set_grade(self,grade):
  59.         while grade > 3:
  60.             grade = int(input('该级别最高为3,请重新录入:'))
  61.         self.grade = grade
  62.         return self.grade
  63.             
  64.     def salary(self):
  65.         self.payroll = 5000 + 1000 * (self.grade + self.year)
  66.         return self.payroll

  67.         
  68. #运行主程序
  69. class Manage:
  70.     def __init__(self,data={},topuid=10000):
  71.         self.data = data
  72.         self.topuid = topuid
  73.         self.wellcom()
  74.    
  75.     #导入程序
  76.     def wellcom(self):
  77.         print('欢迎使用企业员工管理程序')
  78.         while True:
  79.             ans = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
  80.             if ans == '1':
  81.                 self.create()
  82.             if ans == '2':
  83.                 self.search()
  84.             if ans == '3':
  85.                 self.up_grade()
  86.             if ans == '4':
  87.                 self.lower_grade()
  88.             if ans == '5':
  89.                 print('感谢使用企业员工管理程序')
  90.                 break
  91.    
  92.     #创建程序
  93.     def create(self):
  94.         uid = self.topuid
  95.         self.topuid += 1
  96.         name = input('姓名:')
  97.         job = input('职位(E.普通员工;T.组长;M.经理):')
  98.         year = int(input('工龄:'))
  99.         if job == 'E':
  100.             worker = Employee(uid,name,'E',year)
  101.         if job == 'T':
  102.             worker = Teamleader(uid,name,'T',year)
  103.         if job == 'M':
  104.             worker = Manager(uid,name,'M',year)
  105.         worker.set_grade(int(input('级别:')))
  106.         self.data[str(worker.uid)] = worker
  107.         print(f'录入成功!姓名:{worker.name},工号{worker.uid},薪资:{worker.salary()}')
  108.         
  109.         
  110.     #查询程序
  111.     def search(self):
  112.         worker_list = []
  113.         ans = input('1.员工查询;2.职位查询:')
  114.         
  115.         #员工查询
  116.         if ans == '1':
  117.             uid = input('请输入工号:')
  118.             if not self.data.get(uid,False):
  119.                 print('该工号不存在!')
  120.             else:
  121.                 worker = self.data[uid]
  122.                 print(f'姓名:{worker.name}')
  123.                 print(f'职位:{worker.job}')
  124.                 print(f'级别:{worker.grade}')
  125.                 print(f'工龄:{worker.year}')
  126.                 print(f'薪资:{worker.payroll}')
  127.                
  128.         #职位查询        
  129.         if ans == '2':
  130.             job = input('职位(E.普通员工;T.组长;M.经理):')
  131.             job_name = ('普通员工' if job == 'E' else
  132.                         '组长' if job == 'T' else
  133.                         '经理' if job == 'M' else None)
  134.             for i in self.data:
  135.                 if self.data[i].job == job:
  136.                     worker_list.append(self.data[i])
  137.             if worker_list == []:
  138.                 print(f'目前公司没有{job_name}')
  139.             else:
  140.                 print(f'目前{job_name}共有{len(worker_list)}人:')
  141.                 for i in worker_list:
  142.                     print(f'{i.uid} - {i.name}')

  143.     #升降级判断
  144.     def re_grade(self,worker,num):
  145.         grade = worker.grade
  146.         if worker.job == 'T':
  147.             grade += 10
  148.         if worker.job == 'M':
  149.             grade += 16
  150.         while grade + num > 19:
  151.             num = int(input('超过最高级别,请重新输入:'))
  152.         while grade + num < 0:
  153.             num = int(input('低于最低级别,请重新输入:'))
  154.         grade = grade + num
  155.         if 0 < grade <= 10:
  156.             new_worker = Employee(worker.uid,worker.name,'E',worker.year)
  157.             new_worker.set_grade(grade)
  158.         if 10 < grade <= 16:
  159.             new_worker = Teamleader(worker.uid,worker.name,'T',worker.year)
  160.             new_worker.set_grade(grade - 10)
  161.         if 16 < grade <= 19:
  162.             new_worker = Manager(worker.uid,worker.name,'M',worker.year)
  163.             new_worker.set_grade(grade - 16)
  164.                     
  165.     #升级程序
  166.     def up_grade(self):
  167.         uid = input('请输入工号:')
  168.         if not self.data.get(uid,False):
  169.                 print('该工号不存在!')
  170.         else:
  171.             worker = self.data[uid]
  172.             print(f'{worker.name},工号:{uid},当前职位:{worker.job + str(worker.grade)},当前薪资{worker.payroll}')
  173.             num = int(input('请输入需要增加的级数'))
  174.             new_worker = self.re_grade(worker,num)
  175.             self.data[uid] = new_worker
  176.             print('升级成功!')
  177.             print(f'{new_worker.name},工号:{new_worker.uid},升级后职位:{new_worker.job+str(new_worker.grade)},升级后薪资:{new_worker.salary()}(+{str(new_worker.payroll - worker.payroll)})')
  178.             
  179.     #降级程序
  180.     def lower_grade(self):
  181.         uid = input('请输入工号:')
  182.         if not self.data.get(uid,False):
  183.                 print('该工号不存在!')
  184.         else:
  185.             worker = self.data[uid]
  186.             print(f'{worker.name},工号:{uid},当前职位:{worker.job + str(worker.grade)},当前薪资{worker.payroll}')
  187.             num = - int(input('请输入需要降低的级数'))
  188.             new_worker = self.re_grade(worker,num)
  189.             self.data[uid] = new_worker
  190.             print('降级成功!')
  191.             print(f'{new_worker.name},工号:{new_worker.uid},降级级后职位:{new_worker.job+str(new_worker.grade)},降级后薪资:{new_worker.salary()}({str(new_worker.payroll - worker.payroll)})')

  192. m = Manage()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-21 14:15:47 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 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 题的代码写在下方:
# 63_企业员工管理程序 #



# 员工属性
class Staff:
    def __init__(self, name, job, grade, year, uid, salary):
        self.name = name
        self.job = job
        self.grade = grade
        self.year = year
        self.uid = uid
        self.salary = salary


# 程序功能

class Function:
    def __init__(self):
        self.staffs = {}
        self.staffs_E = {}
        self.staffs_T = {}
        self.staffs_M = {}
        self.uid = 10000

    # 选择功能
    def select_function(self):
        ins = ''
        while ins != '5':
            ins = input('1.录入;2.查询;3.升级;4.降级;5.退出:')
            if ins == '1':
                self.enter_information()
            elif ins == '2':
                self.search_information()
            elif ins == '3':
                self.upgrade_level()
            elif ins == '4':
                self.downgrade_level()
            print()

    # 职位判断
    def job_isright(self):
        job = input('职位(E.普通员工; T.组长;M.经理):')
        while job == 'E' or job == 'T' or job == 'M':
            return job
        else:
            job = input('职位输入错误,请重新输入(E.普通员工; T.组长;M.经理):')

    # 级别判断
    def grade_judgment(self, job):
        grade = int(input('级别:'))
        while True:
            if job == 'E':
                if 0 < grade <= 10 :
                    return grade
                else:
                    grade = int(input('该职位最高级别为10,请重新录入级别:'))
                continue
            if job == 'T':
                if 0 < grade <= 6:
                    return grade
                else:
                    grade = int(input('该职位最高级别为6,请重新录入级别:'))
                continue
            if job == 'M':
                if 0 < grade <= 3:
                    return grade
                else:
                    grade = int(input('该职位最高级别为3,请重新录入级别:'))

    # 工号判断
    def uid_judgment(self):
        uid = int(input('请输入工号:'))
        if self.staffs.get(uid):
            return uid
        else:
            return False
                    
    # 统计工资
    def salary_calculation(self, job, grade, year):
        if job == 'E':
            salary = 3000 + 500 * grade + 50 * year
        elif job == 'T':
            salary = 4000 + 800 * grade + 100 * year
        elif job == "M":
            salary = 5000 + 1000 * (grade + year)
        return salary

    # 员工分职位录入
    def enter_information_job(self, job, staff):
        if job == "E":
            self.staffs_E[self.uid] = staff
        elif job == "T":
            self.staffs_T[self.uid] = staff
        elif job == "M":
            self.staffs_M[self.uid] = staff
            
    # 录入信息
    def enter_information(self):
        name = input("姓名:")
        job = self.job_isright()
        year = int(input('工龄:'))
        grade = self.grade_judgment(job)
        salary = self.salary_calculation(job, grade, year)
        staff = Staff(name, job, grade, year, self.uid, salary)
        self.staffs[self.uid] = staff
        self.enter_information_job(job, staff)
        print(f'录入成功!姓名:{name},工号:{self.uid}, 薪资:{salary}')
        self.uid += 1


    # 查询信息
    def search_information(self):
        search = input('1.员工查询; 2.职位查询:')
        if search == "1":
            self.search_information_staff()
        elif search == '2':
            self.search_information_job()
        else:
            print('输入错误!,请重新输入')
            self.search_information()

    # 查询信息_员工查询
    def search_information_staff(self):
        uid = self.uid_judgment()
        if uid:
            print(f'姓名:{self.staffs[uid].name}')
            print(f'职位:{self.staffs[uid].job}')
            print(f'级别:{self.staffs[uid].grade}')
            print(f'工龄:{self.staffs[uid].year}')
            print(f'薪资:{self.staffs[uid].salary}')      
        else:
            print('该工号不存在')

    # 查询信息_职位查询
    def search_information_job(self):
        job = input('职位(E.普通员工;T.组长;M.经理):')
        if job == "E":
            self.search_information_job_enumeration(self.staffs_E, "普通员工")
        elif job == "T":
            self.search_information_job_enumeration(self.staffs_T, "组长")
        elif job == "M":
            self.search_information_job_enumeration(self.staffs_M, "经理")
        else:
            print('输入错误!')
            self.search_information_job()

    # 职位职员枚举
    def search_information_job_enumeration(self, staffs, k):
        if len(staffs) == 0:
            print(f"目前公司没有{k}")
        else:
            print(f"目前{k}共有{len(staffs)}人:")
            for i in staffs.values():
                print(f'{i.uid} - {i.name}')        
         


    # 获取信息_服务升降级
    def get_information_grade(self):
        uid = self.uid_judgment()
        p = self.staffs[uid]
        print(f'{p.name}, 工号:{p.uid}, 当前职位:{p.job}{p.grade}, 当前薪资:{p.salary}')
        return p


    # 升级
    def upgrade_level(self):
        p = self.get_information_grade()
        add_grade = int(input('请输入需要增加的级数:'))
        p.grade = self.up_level(p, add_grade)
        new_salary = self.salary_calculation(p.job, p.grade, p.year)
        print('升级成功!')
        print(f'{p.name}, 工号:{p.uid}, 当前职位:{p.job}{p.grade}, 升级后薪资:{new_salary}(+{new_salary-p.salary})')
        p.salary = new_salary


    # 判断升阶
    def up_level(self, p, grade):
        new_grade = p.grade + grade
        if p.job == "E" and 1 <= new_grade <= 10 or p.job == "T" and 1 <= new_grade <= 6 or p.job == "M" and 1 <= new_grade <= 3:
            return new_grade
        elif p.job == "M" and new_grade > 3:
            print("升级超过最高等级!")
            new_add_grade = input('请输入需要增加的级数:')
            self.up_level(p, new_add_grade)   
        else:
            return self.up_adjust_job(p)
            
    # 升阶后调整职位
    def up_adjust_job(self, p):
        if p.job == 'E':
            p.job = "T"
            self.staffs_T[p.uid] = self.staffs_E.pop(p.uid)
        elif p.job == 'T':
            p.job = "M"
            self.staffs_M[p.uid] = self.staffs_T.pop(p.uid)
        return 1
   

    # 降级
    def downgrade_level(self):
        p = self.get_information_grade()
        reduce_grade = int(input('请输入需要减少的级数:'))
        p.grade = self.down_level(p, reduce_grade)
        new_salary = self.salary_calculation(p.job, p.grade, p.year)
        print('降级成功!')
        print(f'{p.name}, 工号:{p.uid}, 当前职位:{p.job}{p.grade}, 降级后薪资:{new_salary}(-{p.salary-new_salary})')
        p.salary = new_salary        
        
    # 判断降阶
    def down_level(self, p, grade):
        new_grade = p.grade - grade
        if p.job == "E" and 1 <= new_grade <= 10 or p.job == "T" and 1 <= new_grade <= 6 or p.job == "M" and 1 <= new_grade <= 3:
            return new_grade
        elif p.job == "E" and new_grade < 1:
            print("降级超过最低等级!")
            new_reduce_grade = input('请输入需要减少的级数:')
            self.down_level(p, new_reduce_grade)   
        else:
            return self.down_adjust_job(p)
        
    # 降级后调整职位
    def down_adjust_job(self, p):
        if p.job == 'M':
            p.job = "T"
            self.staffs_T[p.uid] = self.staffs_M.pop(p.uid)
            return 6
        elif p.job == 'T':
            p.job = "E"
            self.staffs_E[p.uid] = self.staffs_T.pop(p.uid)
            return 10

        
def main():
    st = Function()
    st.select_function()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-20 21:16:49 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-20 13:29:17 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:可以

第 3 题的答案是:

第 4 题的答案是:降低耦合

第 5 题的答案是:不属于

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-14 22:27:03 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:
方法可以对不同实例使用
第 1 题的答案是:
简化代码编写,便利
第 2 题的答案是:
可以
第 3 题的答案是:
如果它走起路来像鸭子、&#8204;叫起来也像鸭子,&#8204;那么它就是鸭子
第 4 题的答案是:
增强了内聚也降低了耦合度
第 5 题的答案是:
不属于
-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-14 16:54:54 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:
可以,‘+’ 运算符面对不同的对象表现出不同的运算规则
第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:
不属于
-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-10 18:49:54 | 显示全部楼层
1请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-8-23 15:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表