python习题练习

python习题

  编写一个简单的工资管理程序
  系统可以管理以下四类人:工人(worker)、销售员(salesman)、经理(manager)、销售经理(salemanger)
  所有的员工都具有员工号,
  工资等属性,有设置姓名,获取姓名,获取员工号,计算工资等方法。
  1)工人:工人具有工作小时数和时薪的属性,工资计算法方法为工作小时数*时薪。
  2)销售员:具有销售额和提成比例的属性,工资计算方法为销售额*提成比例。
  3)经理:具有固定月薪的属性,工资计算方法为固定月薪。
  4)销售经理:工资计算方法为销售额*提成比例+固定月薪。
  请根据以上要求设计合理的类,完成以下功能:
  1)添加所有类型的人员
  2)计算月薪
  3)显示所有人工资情况

解法一

class Person:
    def __init__(self,no,name,salary):
        self.no =no
        self.name=name
        self.salary =salary
    def __str__(self):
        msg = '工号:{}名字:{}薪水:{}'.format(self.no,self.name,self.salary)
        return msg
    def getSalary(self):
        return self.salary
class Worker(Person):
    def __init__(self,no,name,salary,hours,per_hour):
        super().__init__(no,name,salary)
        self.hours =hours
        self.per_hour=per_hour
    def getSalary(self):
        money = self.hours*self.per_hour
        self.salary+=money
        return self.salary
class Salman(Person):
    def __init__(self,no,name,salary,salemoney,percent):
        super().__init__(no,name,salary)
        self.salemoney =salemoney
        self.percent =percent
    def getSalary(self):
        money =self.salemoney*self.percent
        self.salary+=money
        return  self.salary
class Manager(Person):
    def __init__(self,no,name,fixed_monthly_salary):
        super().__init__(no,name,fixed_monthly_salary)
        
    def calculate_salary(self):
        return self.fixed_monthly_salary
class SaleManager(Person):
    def __init__(self, no, sales_amount, commission_rate, fixed_monthly_salary):
        super().__init__(no,sales_amount, commission_rate, fixed_monthly_salary)
        self.sales_amount = sales_amount
        self.commission_rate = commission_rate
        self.fixed_monthly_salary = fixed_monthly_salary

    def calculate_salary(self):
        return self.sales_amount * self.commission_rate + self.fixed_monthly_salary
    
class Manager(Person):
    def __init__(self, no, name, fixed_monthly_salary):
        super().__init__(no, name, fixed_monthly_salary)

    def calculate_salary(self):
        return self.fixed_monthly_salary

class Salemanager(Person):
    def __init__(self, no, name, fixed_monthly_salary, salemoney, percent):
        super().__init__(no, name, fixed_monthly_salary)
        self.salemoney = salemoney
        self.percent = percent

    def getSalary(self):
        money = self.salemoney * self.percent + self.fixed_monthly_salary
        self.salary += money
        return self.salary


# 添加所有类型的人员
workers = [
    Worker(1, '工人 1', 0, 160, 50),
    Worker(2, '工人 2', 0, 180, 60)
]

salesmans = [
    Salman(3, '销售员 1', 0, 100000, 0.1),
    Salman(4, '销售员 2', 0, 120000, 0.12)
]

managers = [
    Manager(5, '经理 1', 10000),
    Manager(6, '经理 2', 12000)
]

salemanagers = [
    Salemanager(7, '销售经理 1', 15000, 150000, 0.15),
    Salemanager(8, '销售经理 2', 18000, 180000, 0.18)
]

all_people = workers + salesmans + managers + salemanagers

# 计算月薪并显示所有人工资情况
for person in all_people:
    print(person)
    print('月薪:', person.getSalary())

# 创建子类
w =Worker('001','king',100,160,100)
s =w.getSalary()
print('月薪')

解法二

class Employee:
    def __init__(self, employee_number):
        self.employee_number = employee_number
        self.name = ""
        self.salary = 0

    def set_name(self, name):
        self.name = name

    def get_name(self):
        return self.name

    def get_employee_number(self):
        return self.employee_number

    def calculate_salary(self):
        pass


class Worker(Employee):
    def __init__(self, employee_number, working_hours, hourly_rate):
        super().__init__(employee_number)
        self.working_hours = working_hours
        self.hourly_rate = hourly_rate

    def calculate_salary(self):
        return self.working_hours * self.hourly_rate


class Salesman(Employee):
    def __init__(self, employee_number, sales_amount, commission_rate):
        super().__init__(employee_number)
        self.sales_amount = sales_amount
        self.commission_rate = commission_rate

    def calculate_salary(self):
        return self.sales_amount * self.commission_rate


class Manager(Employee):
    def __init__(self, employee_number, fixed_monthly_salary):
        super().__init__(employee_number)
        self.fixed_monthly_salary = fixed_monthly_salary

    def calculate_salary(self):
        return self.fixed_monthly_salary


class SaleManager(Employee):
    def __init__(self, employee_number, sales_amount, commission_rate, fixed_monthly_salary):
        super().__init__(employee_number)
        self.sales_amount = sales_amount
        self.commission_rate = commission_rate
        self.fixed_monthly_salary = fixed_monthly_salary

    def calculate_salary(self):
        return self.sales_amount * self.commission_rate + self.fixed_monthly_salary


# 工资管理系统类
class SalaryManagementSystem:
    def __init__(self):
        self.employees = []

    def add_employee(self, employee_type, employee_number, *args):
        if employee_type == "worker":
            working_hours, hourly_rate = args
            self.employees.append(Worker(employee_number, working_hours, hourly_rate))
        elif employee_type == "salesman":
            sales_amount, commission_rate = args
            self.employees.append(Salesman(employee_number, sales_amount, commission_rate))
        elif employee_type == "manager":
            fixed_monthly_salary = args[0]
            self.employees.append(Manager(employee_number, fixed_monthly_salary))
        elif employee_type == "salemanger":
            sales_amount, commission_rate, fixed_monthly_salary = args
            self.employees.append(SaleManager(employee_number, sales_amount, commission_rate, fixed_monthly_salary))

    def calculate_monthly_salary(self):
        for employee in self.employees:
            salary = employee.calculate_salary()
            print(f"{employee.get_name()} 的月薪为: {salary}")


# 测试代码
salary_system = SalaryManagementSystem()

salary_system.add_employee("worker", 1, 160, 50)
salary_system.add_employee("salesman", 2, 10000, 0.1)
salary_system.add_employee("manager", 3, 10000)
salary_system.add_employee("salemanger", 4, 20000, 0.2, 8000)

salary_system.calculate_monthly_salary()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/916369.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式-参考的雷丰阳老师直播课

一般开发中使用的模式为模版模式策略模式组合,模版用来定义骨架,策略用来实现细节。 模版模式 策略模式 与模版模式特别像,模版模式会定义好步骤定义好框架,策略模式定义小细节 入口类 使用模版模式策略模式开发支付 以上使用…

Vue3打包自动生成版本JSON文件,添加系统版本检查,实现系统自动更新提示

实现该功能一共有三步。废话不多说,直接上代码!!! 第一步:打包时自动生成版本信息的js文件,versionUpdate.js import fs from fs; import path from path; import { ElMessageBox } from element-plus; i…

华为云前台展示公网访问需要购买EIP,EIP流量走向

华为云前台网络(VPC,安全组,EIP) 1.EIP网段是从哪里划分的? 管理员在后台Service_OM已设置 Service_OM-网络资源-外部网络-创建外部网络基本信息:配置参数:*名称 public*网络类型 LOCAL 不带标签 类似开…

[Mysql基础] 表的操作

一、创建表 1.1 语法 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; 说明: field 表示列名 datatype 表示列的类型 character set 字符集,如果没有指定字符集…

ASP.NET MVC宠物商城系统

该系统采用B/S架构,使用C#编程语言进行开发,以ASP.NET MVC框架为基础,以Visual Studio 2019为开发工具,数据库采用SQL Server进行保存数据。系统主要功能包括登录注册、宠物展示、个人中心、我的订单、购物车、用户管理、宠物类别…

ArkTS学习笔记:ArkTS起步

ArkTS是HarmonyOS的主力应用开发语言,基于TypeScript扩展,强化了静态检查和分析,旨在提升程序稳定性和性能。它采用静态类型,禁止运行时改变对象布局,并对UI开发框架能力进行扩展,支持声明式UI描述和自定义…

Tofu AI视频处理模块视频输入配置方法

应用Tofu产品对网络视频进行获取做视频处理时,首先需要配置Tofu产品的硬件连接关系与设备IP地址、视频拉流地址。 步骤1 Tofu设备点对点直连或者通过交换机连接到电脑,电脑IP配置到与Tofu默认IP地址同一个网段。 打开软件 点击右上角系统设置 单击左侧…

stream学习

Stream流 定义 Steam流&#xff0c;用于操作集合或者数组中的数据&#xff0c;大量结合了Lamda表达式的语法风格&#xff0c;代码简洁。 重点&#xff1a; 流只能收集一次 ​ 获取Stream流 Stream流要与数据源建立连接。 1.list ​ 直接调用steam()即可 // list List<Stri…

鸿蒙动画开发06——打断动画

1、前 言 UI界面除了运行动画之外&#xff0c;还承载着与用户进行实时交互的功能。当用户行为根据意图变化发生改变时&#xff0c;UI界面应做到即时响应。 例如用户在应用启动过程中&#xff0c;上滑退出&#xff0c;那么启动动画应该立即过渡到退出动画&#xff0c;而不应该…

运算放大器的学习(一)输入阻抗

输入阻抗 最近需要对运算放大器进行学习&#xff0c;我们后面逐一对其参数进行了解。 首先了解下输入阻抗。 放大电路技术指标测试示意图&#xff1a; 输入电阻&#xff1a; 从放大电路的输入端看进去的等效电阻称为放大电路的输入电阻&#xff0c;如上图&#xff0c;此处考虑…

【测试框架篇】单元测试框架pytest(1):环境安装和配置

一、pytest简介 Pytest是Python的一种单元测试框架&#xff0c;与Python自带的unittest测试框架类似&#xff0c;但是比 unittest框架使用起来更简洁&#xff0c;效率更高。 二、pytest特点 Pytest是一个非常成熟的Python测试框架,主要特点有以下几点&#xff1a; 非常容易…

蓝桥杯竞赛单片机组备赛【经验帖】

本人获奖情况说明 笔者本人曾参加过两次蓝桥杯电子赛&#xff0c;在第十二届蓝桥杯大赛单片机设计与开发组获得省级一等奖和国家级二等奖&#xff0c;在第十五届嵌入式设计开发组获得省级二等奖。如果跟着本帖的流程备赛&#xff0c;只要认真勤奋&#xff0c;拿个省二绝对没问…

力扣 LeetCode 541. 反转字符串II(Day4:字符串)

解题思路&#xff1a; i可以成段成段的跳&#xff0c;而不是简单的i class Solution {public String reverseStr(String s, int k) {char[] ch s.toCharArray();// 1. 每隔 2k 个字符的前 k 个字符进行反转for (int i 0; i < ch.length; i 2 * k) {// 2. 剩余字符小于 …

密码学知识点整理二:常见的加密算法

常用的加密算法包括对称加密算法、非对称加密算法和散列算法。 对称加密算法 AES&#xff1a;高级加密标准&#xff0c;是目前使用最广泛的对称加密算法之一&#xff0c;支持多种密钥长度&#xff08;128位、192位、256位&#xff09;&#xff0c;安全性高&#xff0c;加密效率…

css:修改盒子样式

圆角边框 在css3中新增了圆角边框样式&#xff0c;这样我们的盒子就可以长得奇形怪状了 像csdn上的发布就是圆角边框 还有这些 .x,.y {background-color: cornflowerblue;width: 200px;height: 200px;margin: 0 auto;text-align: center;border-radius: 10px;} 10px是什么意思…

连续九届EI稳定|江苏科技大学主办

【九届EI检索稳定|江苏科技大学主办 | IEEE出版 】 &#x1f388;【截稿倒计时】&#xff01;&#xff01;&#xff01; ✨徐秘书&#xff1a;gsra_huang ✨往届均已检索&#xff0c;已上线IEEE官网 &#x1f38a;第九届清洁能源与发电技术国际学术会议&#xff08;CEPGT 2…

机器学习 - 为 Jupyter Notebook 安装新的 Kernel

https://ipython.readthedocs.io/en/latest/install/kernel_install.html 当使用jupyter-notebook --no-browser 启动一个 notebook 时&#xff0c;默认使用了该 jupyter module 所在的 Python 环境作为 kernel&#xff0c;比如 C:\devel\Python\Python311。 如果&#xff0c…

DVWA靶场通关——SQL Injection篇

一&#xff0c;Low难度下unionget字符串select注入 1&#xff0c;首先手工注入判断是否存在SQL注入漏洞&#xff0c;输入1 这是正常回显的结果&#xff0c;再键入1 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for…

无人机飞手执照处处需要,森林、石油管道、电力巡检等各行业都需要

无人机飞手执照在多个行业中确实具有广泛的应用需求&#xff0c;包括森林、石油管道、电力巡检等领域。以下是对这些领域无人机飞手执照需求的具体分析&#xff1a; 一、森林领域 在森林领域&#xff0c;无人机飞手执照对于进行高效、准确的森林资源管理和监测至关重要。无人机…

基于YOLO11/v10/v8/v5深度学习的水面垃圾智能检测识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…