鱼C论坛

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

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

  [复制链接]
发表于 2023-12-6 11:04:13 | 显示全部楼层
零基础入门学习Python封面
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
問答題:
0. 不同物件可以定義相同名字的方法
1. 減少需要定義的物件數量
2. 可以
3. 一支鳥走起來像鴨子,叫起來像鴨子,牠就是一隻鴨子
4. 低耦合
5. 不是

動手:
class Employee:
    def __init__(self,
                 name,
                 job,
                 grade,
                 year,
                 uid
                 ) -> None:
        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):
        if self.job == "E":
            return 3000 + 500 * self.grade + 50 * self.year
        if self.job == "T":
            return 4000 + 800 * self.grade + 100 * self.year
        if self.job == "M":
            return 5000 + 1000 * (self.grade + self.year)
        
class Interface:
    job_grade = {
        "E":10,
        "T":6,
        "M":3
    }

    job_up = {
        "E":"T",
        "T":"M"
    }

    job_down = {
        "T":"E",
        "M":"T"
    }

    def __init__(self) -> None:
        self.employees = {}
        self.uid = 10000

    def regist(self):
        name = str(input("姓名:"))
        job = str(input("職位(E:普通員工;T:組長;M:經理):"))
        year = int(input("工齡:"))
        grade = int(input("級別:"))
        while grade > Interface.job_grade[job]:
            grade = int(input(f"該職位最高級別為{Interface.job_grade[job]},請重新輸入級別:"))
        self.employees[self.uid] = Employee(name, job, grade, year, self.uid)
        print(f"登入成功! 姓名:{self.employees[self.uid].name},工號:{self.employees[self.uid].uid},薪資:{self.employees[self.uid].salary()}")
        self.uid += 1

    def query_employee(self):
        uid = int(input("請輸入工號:"))
        if not uid in self.employees:
            print("該工號不存在!")
            return
        
        print(f"姓名:{self.employees[uid].name}")
        print(f"職位:{self.employees[uid].job}")
        print(f"級別:{self.employees[uid].grade}")
        print(f"工齡:{self.employees[uid].year}")
        print(f"薪資:{self.employees[uid].salary()}")

    def query_job(self):
        job_name = {
            "E":"普通員工",
            "T":"組長",
            "M":"經理"
        }
        job = str(input("職位(E:普通員工;T:組長;M:經理):"))
        result = [ info for uid, info in self.employees.items() if info.job == job ]
        print(f"目前{job_name[job]}共有{len(result)}人:")
        for each in result:
            print(f"{each.uid} - {each.name}")

    def query_interface(self):
        function_dict = {
            1:self.query_employee,
            2:self.query_job
        }
        query = int(input("1.員工查詢;2.職位查詢:"))

        function_dict[query]()

    def upgrade(self):
        uid = int(input("請輸入工號:"))
        if not uid in self.employees:
            print("該工號不存在!")
            return
        employee = self.employees[uid]
        presalary = employee.salary()
        print(f"{employee.name},工號:{employee.uid},當前職位:{employee.job}{employee.grade},當前薪資:{employee.salary()}")
        up = int(input("請輸入需要增加的級數:"))
        if employee.grade + up > Interface.job_grade[employee.job]:
            employee.job = Interface.job_up[employee.job]
            employee.grade = 1
        else:
            employee.grade += up
        
        print("升級成功!")
        print(f"{employee.name},工號:{employee.uid},升級後職位:{employee.job}{employee.grade},升級後薪資:{employee.salary()}({'+' if employee.salary() - presalary > 0 else ''}{employee.salary() - presalary})")
        
    def downgrade(self):
        uid = int(input("請輸入工號:"))
        if not uid in self.employees:
            print("該工號不存在!")
            return
        employee = self.employees[uid]
        presalary = employee.salary()
        print(f"{employee.name},工號:{employee.uid},當前職位:{employee.job}{employee.grade},當前薪資:{employee.salary()}")
        down = int(input("請輸入需要減少的級數:"))
        if employee.grade - down < 1:
            employee.job = Interface.job_down[employee.job]
            employee.grade = Interface.job_grade[employee.job]
        else:
            employee.grade -= down
        
        print("降級成功!")
        print(f"{employee.name},工號:{employee.uid},降級後職位:{employee.job}{employee.grade},降級後薪資:{employee.salary()}({'+' if employee.salary() - presalary > 0 else ''}{employee.salary() - presalary})")

    def start(self):
        function_dict = {
            1:self.regist,
            2:self.query_interface,
            3:self.upgrade,
            4:self.downgrade,
        }
        while True:
            query = int(input("1.登錄;2.查詢;3.升級;4.降級;5.退出:"))
            if query == 5:
                break

            function_dict[query]()

interface = Interface()
interface.start()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-5 22:05:41 | 显示全部楼层
0.python中的+和*遇到不同的类型会执行不同的运算
1.通过改变不同的场景,用同一种方法、函数、对象来实现不同的效果,可以显著减少代码的复杂程度
2.可以
3.“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”
4.降低了耦合?
5.不是

0.
class Staff:
    def __init__(self,name,grade,year,uid):
        self.name = name
        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):
    member = []
    def __init__(self,name,grade,year,uid):
        self.job = "Employee"
        grade = "E" + str(grade)
        super().__init__(name,grade,year,uid)
        Employee.member += [self.uid]
    def salary(self):
        return 3000 + 500 * int(self.grade[1:]) + 50 * self.year
class Teamleader(Staff):
    member = []
    def __init__(self,name,grade,year,uid):
        self.job = "Teamleader"
        grade = "T" + str(grade)
        super().__init__(name,grade,year,uid)
        Teamleader.member += [self.uid]
    def salary(self):
        return 4000 + 800 * int(self.grade[1:]) + 100 * self.year
class Manager(Staff):
    member = []
    def __init__(self,name,grade,year,uid):
        self.job = "Manager"
        grade = "M" + str(grade)
        super().__init__(name,grade,year,uid)
        Manager.member += [self.uid]
    def salary(self):
        return 5000 + 1000 * (int(self.grade[1:]) + self.year)

class Manage:
    def __init__(self):
        self.staff = dict()
        self.uid = 10000
    def program(self):
        ins = 0
        while ins != '5':
            ins = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
            if ins == '1':
                self.enter()
            elif ins == '2':
                self.search()
            elif ins == '3':
                self.upgrade()
            elif ins == '4':
                self.downgrade()
            elif ins != "5":
                print("请输入正确的指令")

    def confirm_uid(self):
        uid = int(input("请输入工号:"))
        if not self.staff.get(uid):
            print("该工号不存在!")
            return 0
        else:
            return uid
    def confirm_job(self):
        job = input("职位(E.普通员工;T.组长;M.经理):")
        while job not in('E','T','M'):
            print("请输入正确的指令")
            job = input("职位(E.普通员工;T.组长;M.经理):")
        return job
   
    def enter(self):
        name = input("姓名:")
        job = self.confirm_job()
        year = int(input("工龄:"))
        if job == "E":
            grade = int(input("级别:"))
            while grade > 10:
                grade = int(input("该职位最高级别为10,请重新录入级别:"))
            self.staff[self.uid] = Employee(name,grade,year,self.uid)
        elif job == "T":
            grade = int(input("级别:"))
            while grade > 6:
                grade = int(input("该职位最高级别为6,请重新录入级别:"))
            self.staff[self.uid] = Teamleader(name,grade,year,self.uid)
        else:
            grade = int(input("级别:"))
            while grade > 3:
                grade = int(input("该职位最高级别为3,请重新录入级别:"))
            self.staff[self.uid] = Manager(name,grade,year,self.uid)
        print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{self.staff[self.uid].salary()}")
        self.uid += 1

    def search(self):
        ins = input("1.员工查询;2.职位查询:")
        if ins == '1':
            uid = self.confirm_uid()
            if uid:
                print(f"姓名:{self.staff[uid].name}\n职位:{self.staff[uid].job}\n级别:{self.staff[uid].grade}\n工龄:{self.staff[uid].year}\n薪资:{self.staff[uid].salary()}")
        elif ins == '2':
            job = self.confirm_job()
            if job == "E":
                job = "普通员工"
                member = Employee.member
            elif job == "T":
                job = "组长"
                member = Teamleader.member
            else:
                job = "经理"
                member = Manager.member
            if len(member) != 0:
                print(f"目前{job}共有{len(member)}人")
                for each in member:
                    print(f"{each} - {self.staff[each].name}")
            else:
                print(f"目前公司没有{job}!")

    def upgrade(self):
        uid = self.confirm_uid()
        if uid:
            grade = self.staff[uid].grade
            salary = self.staff[uid].salary()
            print(f"{self.staff[uid].name},工号:{uid},当前职位:{grade},当前薪资:{self.staff[uid].salary()}")
            num = int(input("请输入需要增加的级数:"))
            if grade[0] == "E":
                if int(grade[1:]) + num <= 10:
                    self.staff[uid].grade = "E" + str(int(grade[1:])+num)
                else:
                    grade = 1
                    self.staff[uid] = Teamleader(self.staff[uid].name,grade,self.staff[uid].year,uid)
                    Employee.member.remove(uid)
            elif grade[0] == 'T':
                if int(grade[1:]) + num <= 6:
                    self.staff[uid].grade = "T" + str(int(grade[1:])+num)
                else:
                    grade = 1
                    self.staff[uid] = Manager(self.staff[uid].name,grade,self.staff[uid].year,uid)
                    Teamleader.member.remove(uid)
            else:
                if int(grade[1:]) + num <= 3:
                    self.staff[uid].grade = "M" + str(int(grade[1:])+num)
                else:
                    print("请输入正确的级数!")
                    return
            print("升级成功!")
            print(f"{self.staff[uid].name},工号:{uid},升级后职位:{self.staff[uid].grade},升级后薪资:{self.staff[uid].salary()}(+{self.staff[uid].salary()-salary})")

    def downgrade(self):
        uid = self.confirm_uid()
        if uid:
            grade = self.staff[uid].grade
            salary = self.staff[uid].salary()
            print(f"{self.staff[uid].name},工号:{uid},当前职位:{grade},当前薪资:{self.staff[uid].salary()}")
            num = int(input("请输入需要增加的级数:"))
            if grade[0] == "E":
                if int(grade[1:]) - num > 0:
                    self.staff[uid].grade = "E" + str(int(grade[1:])-num)
                else:
                    print("请输入正确的级数!")
                    return
            elif grade[0] == 'T':
                if int(grade[1:]) - num > 0:
                    self.staff[uid].grade = "T" + str(int(grade[1:])-num)
                else:
                    grade = 6
                    self.staff[uid] = Employee(self.staff[uid].name,grade,self.staff[uid].year,uid)
                    Teamleader.member.remove(uid)
            else:
                if int(grade[1:]) - num > 0:
                    self.staff[uid].grade = "E" + str(int(grade[1:])-num)
                else:
                    grade = 6
                    self.staff[uid] = Teamleader(self.staff[uid].name,grade,self.staff[uid].year,uid)
                    Manager.member.remove(uid)
            print("降级成功!")
            print(f"{self.staff[uid].name},工号:{uid},降级后职位:{self.staff[uid].grade},降级后薪资:{self.staff[uid].salary()}(-{salary-self.staff[uid].salary()})")

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

使用道具 举报

发表于 2023-12-4 15:28:32 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-3 17:00:08 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-30 10:46:51 | 显示全部楼层
看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-30 05:41:29 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-29 11:14:00 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-29 05:13:43 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-28 19:16:56 | 显示全部楼层
z
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-27 17:52:10 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-25 19:23:10 | 显示全部楼层
001
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-23 17:21:00 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-22 19:44:19 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-21 21:23:22 | 显示全部楼层
0
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-20 20:16:58 | 显示全部楼层
happy
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-20 15:25:54 | 显示全部楼层
  1. # 企业员工管理程序
  2. # 普通员工Employee 组长Teamleader 经理Manager 分别定义为类

  3. # 基本信息类
  4. class Info:
  5.     def __init__(self, name, grade, year, uid):
  6.         self.name = name
  7.         self.grade = grade
  8.         self.year = year
  9.         self.uid = uid

  10.     def get_uid(self):
  11.         return self.uid
  12.     def get_name(self):
  13.         return self.name
  14.     def get_job(self):
  15.         return self.job
  16.     def get_grade(self):
  17.         return self.grade
  18.     def get_year(self):
  19.         return self.year
  20.    

  21. # 普通员工类
  22. class Employee(Info):
  23.     def __init__(self, name, grade, year, uid):
  24.         self.job = 'E'
  25.         super().__init__(name, grade, year, uid)
  26.    
  27.     def salary(self):
  28.         return 3000 + 500*self.grade + 50*self.year
  29.    

  30. # 组长类
  31. class Teamleader(Info):
  32.     def __init__(self, name, grade, year, uid):
  33.         self.job = 'T'
  34.         super().__init__(name, grade, year, uid)

  35.     def salary(self):
  36.         return 4000 + 800*self.grade + 100*self.year


  37. # 经理类
  38. class Manager(Info):
  39.     def __init__(self, name, grade, year, uid):
  40.         self.job = 'M'
  41.         super().__init__(name, grade, year, uid)

  42.     def salary(self):
  43.         return 5000 + 1000*self.grade + 1000*self.year
  44.    

  45. # 程序功能类
  46. class Manage:
  47.     def __init__(self):
  48.         self.uid = 10000
  49.         self.e = {}
  50.         self.t = {}
  51.         self.m = {}
  52.         self.members = [self.e, self.t, self.m]
  53.         # 职位字典
  54.         self.jobs = {'E1':1, 'E2':2, 'E3':3, 'E4':4, 'E5':5, 'E6':6, 'E7':7, 'E8':8, 'E9':9, 'E10':10,
  55.                      'T1':11, 'T2':12, 'T3':13, 'T4':14, 'T5':15, 'T6':16,
  56.                      'M1':17, 'M2':18, 'M3':19}

  57.     def welcome(self):
  58.         ins = 0
  59.         while ins != '5':
  60.             ins = input("\n1.录入; 2.查询; 3.升级; 4.降级; 5.退出:")
  61.             if ins == '1':
  62.                 self.luru()
  63.             elif ins == '2':
  64.                 self.chaxun()
  65.             elif ins == '3':
  66.                 self.shengji()
  67.             elif ins == '4':
  68.                 self.jiangji()
  69.             elif ins == '5':
  70.                 print("再见~~~")

  71.     # 录入
  72.     def luru(self):
  73.         name = input("姓名:")
  74.         job = input("职位(E.普通员工; T.组长; M.经理):")
  75.         year = int(input("工龄:"))
  76.         if job == "E":
  77.             grade = int(input("级别:"))
  78.             while grade < 1 or grade > 10:
  79.                 grade = int(input("普通员工1~10级,请重新输入:"))
  80.             self.e[self.uid] = Employee(name, grade, year, self.uid)
  81.             print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{self.e[self.uid].salary()}")

  82.         elif job == "T":
  83.             grade = int(input("级别:"))
  84.             while grade < 1 or grade > 6:
  85.                 grade = int(input("组长1~6级,请重新输入:"))
  86.             self.t[self.uid] = Teamleader(name, grade, year, self.uid)
  87.             print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{self.t[self.uid].salary()}")

  88.         elif job == "M":
  89.             grade = int(input("级别:"))
  90.             while grade < 1 or grade > 3:
  91.                 grade = int(input("组长1~3级,请重新输入:"))
  92.             self.m[self.uid] = Manager(name, grade, year, self.uid)
  93.             print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{self.m[self.uid].salary()}")

  94.         self.uid += 1

  95.     # 查询
  96.     def chaxun(self):
  97.         ins = int(input("1.员工查询; 2.职位查询:"))
  98.         while ins != 1 and ins != 2:
  99.             ins = int(input("输入错误,请重新输入。1.员工查询; 2.职位查询:"))
  100.         if ins == 1:
  101.             uid = int(input("请输入工号:"))
  102.             for each in self.members:
  103.                 if each.get(uid):
  104.                     print(f"姓名:{each[uid].name}")
  105.                     print(f"职位:{each[uid].job}")
  106.                     print(f"级别:{each[uid].grade}")
  107.                     print(f"工龄:{each[uid].year}")
  108.                     print(f"薪资:{each[uid].salary()}")
  109.                     break
  110.             else:
  111.                 print("该工号不存在!")

  112.         if ins == 2:
  113.             job = input("职位(E.普通员工; T.组长; M.经理):")
  114.             if job == "E":
  115.                 print(f"目前普通员工共有 {len(self.e)} 人:")
  116.                 for each in self.e.keys():
  117.                     print(f"{each} -> {self.e[each].name}")
  118.             elif job == "T":
  119.                 print(f"目前组长共有 {len(self.t)} 人:")
  120.                 for each in self.t.keys():
  121.                     print(f"{each} -> {self.t[each].name}")
  122.             elif job == "M":
  123.                 print(f"目前经理共有 {len(self.m)} 人:")
  124.                 for each in self.m.keys():
  125.                     print(f"{each} -> {self.m[each].name}")
  126.    
  127.     # 升级
  128.     def shengji(self):
  129.         uid = int(input("请输入工号:"))
  130.         for each in self.members:
  131.             if each.get(uid):
  132.                 old_job = each[uid].job
  133.                 old_salary = each[uid].salary()
  134.                 old_grade = each[uid].grade
  135.                 old_year = each[uid].year
  136.                 old_name = each[uid].name
  137.                 print(f"{old_name},工号:{uid},当前职位:{old_job},当前薪资:{old_salary}")
  138.                 # 删除旧数据
  139.                 each.pop(uid)
  140.                 break
  141.         else:
  142.             print("该工号不存在!")
  143.             return 0
  144.         _grade = int(input("请输入现需要增加的级数:"))
  145.         # 旧职级字母
  146.         old_job_grade = old_job + str(old_grade)
  147.         while self.jobs[old_job_grade] + _grade > 19:
  148.             _grade = int(input("升级后超过最高级,请重新输入现需要增加的级数:"))
  149.         # 职级数字
  150.         _job_grade = self.jobs[old_job_grade] + _grade
  151.         for each in self.jobs.items():
  152.             if each[1] == _job_grade:
  153.                 # 新职级
  154.                 new_job_grade = each[0]
  155.                 break
  156.         new_job = new_job_grade[0]
  157.         new_grade = int(new_job_grade[1:])
  158.         # 增加新数据
  159.         if new_job == 'E':
  160.             self.e[uid] = Employee(old_name, new_grade, old_year, uid)
  161.             new_salary = self.e[uid].salary()
  162.         if new_job == 'T':
  163.             self.t[uid] = Teamleader(old_name, new_grade, old_year, uid)
  164.             new_salary = self.t[uid].salary()
  165.         if new_job == 'M':
  166.             self.m[uid] = Manager(old_name, new_grade, old_year, uid)
  167.             new_salary = self.m[uid].salary()
  168.         print("升级成功!")
  169.         print(f"{old_name},工号:{uid},升级后职位:{new_job_grade},升级后薪资:{new_salary}({new_salary-old_salary:+})")


  170.     # 降级
  171.     def jiangji(self):
  172.         uid = int(input("请输入工号:"))
  173.         for each in self.members:
  174.             if each.get(uid):
  175.                 old_job = each[uid].job
  176.                 old_salary = each[uid].salary()
  177.                 old_grade = each[uid].grade
  178.                 old_year = each[uid].year
  179.                 old_name = each[uid].name
  180.                 print(f"{old_name},工号:{uid},当前职位:{old_job},当前薪资:{old_salary}")
  181.                 # 删除旧数据
  182.                 each.pop(uid)
  183.                 break
  184.         else:
  185.             print("该工号不存在!")
  186.             return 0
  187.         _grade = int(input("请输入现需要减少的级数:"))
  188.         # 旧职级字母
  189.         old_job_grade = old_job + str(old_grade)
  190.         while self.jobs[old_job_grade] - _grade < 1:
  191.             _grade = int(input("降级后超过最低级,请重新输入现需要减少的级数:"))
  192.         # 职级数字
  193.         _job_grade = self.jobs[old_job_grade] - _grade
  194.         for each in self.jobs.items():
  195.             if each[1] == _job_grade:
  196.                 # 新职级
  197.                 new_job_grade = each[0]
  198.                 break
  199.         new_job = new_job_grade[0]
  200.         new_grade = int(new_job_grade[1:])
  201.         # 增加新数据
  202.         if new_job == 'E':
  203.             self.e[uid] = Employee(old_name, new_grade, old_year, uid)
  204.             new_salary = self.e[uid].salary()
  205.         if new_job == 'T':
  206.             self.t[uid] = Teamleader(old_name, new_grade, old_year, uid)
  207.             new_salary = self.t[uid].salary()
  208.         if new_job == 'M':
  209.             self.m[uid] = Manager(old_name, new_grade, old_year, uid)
  210.             new_salary = self.m[uid].salary()
  211.         print("降级成功!")
  212.         print(f"{old_name},工号:{uid},降级后职位:{new_job_grade},降级后薪资:{new_salary}({new_salary-old_salary:+})")



  213. def main():
  214.     m = Manage()
  215.     m.welcome()

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

使用道具 举报

发表于 2023-11-19 23:08:38 | 显示全部楼层
发现思考的方向完全错了,得来抄一遍
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-19 16:46:34 | 显示全部楼层
0.
python不会纠结对象的类别,而是在调用方法和函数的时候注重形似,只要函数和方法的操作能够进行就行

1.
优化了代码的可读性

2.
可以

3.
不知道

4.
增强了内聚,也降低了耦合

5.
不是

have a try
0.
'''企业员工管理程序'''
class stuff0:
    uid=10000

class up_down_MiXin:
    def up(self,z=0):
        if self.position=='普通工人':
            if self.grade+z>10:
                self.grade=1
                self.position='组长'
            else:
                self.grade+=z
        elif self.position=='组长':
            if self.grade+z>6:
                self.grade=1
                self.position='经理'
            else:
                self.grade+=z
        elif self.position=='经理':
            if self.grade+z>3:
                self.grade=3
            else:
                self.grade+=z
    def down(self,z=0):
        if self.position=='经理':
            if self.grade-z<0:
                self.position='组长'
                self.grade=6
            else:
                self.grade-+z
        elif self.position=='组长':
            if self.grade-z<0:
                self.position='普通工人'
                self.grade=10
            else:
                self.grade-=z
        elif self.position=='普通工人':
            if self.grade-z<0:
                self.grade=1
            else:
                self.grade-=z

class get_MiXin:
    def get_uid(self):
        return self.uid
    def get_name(self):
        return self.name
    def get_position(self):
        return self.position
    def get_grade(self):
        return self.grade
    def get_wage(self):
        return self.wage
    def salary(g):
        if g.position == '普通工人':
            pay=3000+500*g.grade+50*g.wage
            return pay

        elif g.position == '组长':
            pay=4000+800*g.grade+100*g.wage
            return pay

        elif g.position == '经理':
            pay=5000+1000*(g.grade+g.wage)
            return pay        

class stuff(stuff0,up_down_MiXin,get_MiXin):
    name='请初始化姓名'
    position='请初始化这位'
    wage=-1
    grade=-1
    uid=-1
    def __init__(self,name,position,wage,grade):
        self.name=name
        self.position=position
        self.wage=wage
        self.grade=grade
        self.uid=stuff0.uid
        stuff0.uid+=1


   
def main():
    stuffs=[]
    while True:
        mod=input('1.录入2.查询3.升级4.降级5.退出')
        if mod=='5':
            break
        elif mod=='1':
            name=input('姓名:')
            position=input('职位:(普通工人/组长/经理)')
            wage=int(input('工龄:'))
            grade=int(input('级别:'))
            stuff1=stuff(name,position,wage,grade)
            stuffs.append(stuff1)
            print(f'录入成功!姓名:{stuff1.name} 工号:{stuff1.uid} 薪资:{stuff1.salary()}')
        elif mod=='2':
            uid=input('请输入工号:')
            uid=int(uid)
            uid_condition=False
            for i in stuffs:
                if i.uid==uid:
                    j=i
                    uid_condition=True
            if uid_condition:
                print(f'姓名:{j.name}')
                print(f'职位:{j.position}')
                print(f'级别:{j.grade}')
                print(f'工龄:{j.wage}')
                print(f'薪资:{j.salary()}')
            else:
                print('该工号不存在')
        elif mod=='3':
            uid=input('请输入工号:')
            uid=int(uid)
            k=int(input('请输入升级的级数:'))
            uid_condition=False
            for i in range(len(stuffs)):
                if stuffs[i].uid==uid:
                    j=i
                    uid_condition=True
            if uid_condition:
                stuffs[j].up(k)
            else:
                print('该工号不存在')
        elif mod=='4':
            uid=input('请输入工号:')
            uid=int(uid)
            k=int(input('请输入降级的级数:'))
            uid_condition=False
            for i in range(len(stuffs)):
                if stuffs[i].uid==uid:
                    j=i
                    uid_condition=True
            if uid_condition:
                stuffs[j].down(k)
            else:
                print('该工号不存在')
            
            


   
   


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-17 15:44:33 | 显示全部楼层
沙发
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-17 15:17:54 | 显示全部楼层
daan
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-21 21:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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