python习题练习

ops/2024/11/18 0:12:03/

python_0">python习题

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

解法一

python">class Person:def __init__(self,no,name,salary):self.no =noself.name=nameself.salary =salarydef __str__(self):msg = '工号:{}名字:{}薪水:{}'.format(self.no,self.name,self.salary)return msgdef getSalary(self):return self.salary
class Worker(Person):def __init__(self,no,name,salary,hours,per_hour):super().__init__(no,name,salary)self.hours =hoursself.per_hour=per_hourdef getSalary(self):money = self.hours*self.per_hourself.salary+=moneyreturn self.salary
class Salman(Person):def __init__(self,no,name,salary,salemoney,percent):super().__init__(no,name,salary)self.salemoney =salemoneyself.percent =percentdef getSalary(self):money =self.salemoney*self.percentself.salary+=moneyreturn  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_amountself.commission_rate = commission_rateself.fixed_monthly_salary = fixed_monthly_salarydef calculate_salary(self):return self.sales_amount * self.commission_rate + self.fixed_monthly_salaryclass 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_salaryclass Salemanager(Person):def __init__(self, no, name, fixed_monthly_salary, salemoney, percent):super().__init__(no, name, fixed_monthly_salary)self.salemoney = salemoneyself.percent = percentdef getSalary(self):money = self.salemoney * self.percent + self.fixed_monthly_salaryself.salary += moneyreturn 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('月薪')

解法二

python">class Employee:def __init__(self, employee_number):self.employee_number = employee_numberself.name = ""self.salary = 0def set_name(self, name):self.name = namedef get_name(self):return self.namedef get_employee_number(self):return self.employee_numberdef calculate_salary(self):passclass Worker(Employee):def __init__(self, employee_number, working_hours, hourly_rate):super().__init__(employee_number)self.working_hours = working_hoursself.hourly_rate = hourly_ratedef calculate_salary(self):return self.working_hours * self.hourly_rateclass Salesman(Employee):def __init__(self, employee_number, sales_amount, commission_rate):super().__init__(employee_number)self.sales_amount = sales_amountself.commission_rate = commission_ratedef calculate_salary(self):return self.sales_amount * self.commission_rateclass Manager(Employee):def __init__(self, employee_number, fixed_monthly_salary):super().__init__(employee_number)self.fixed_monthly_salary = fixed_monthly_salarydef calculate_salary(self):return self.fixed_monthly_salaryclass SaleManager(Employee):def __init__(self, employee_number, sales_amount, commission_rate, fixed_monthly_salary):super().__init__(employee_number)self.sales_amount = sales_amountself.commission_rate = commission_rateself.fixed_monthly_salary = fixed_monthly_salarydef 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 = argsself.employees.append(Worker(employee_number, working_hours, hourly_rate))elif employee_type == "salesman":sales_amount, commission_rate = argsself.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 = argsself.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()

http://www.ppmy.cn/ops/134570.html

相关文章

Spring Boot编程训练系统:性能优化实践

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了编程训练系统的开发全过程。通过分析编程训练系统管理的不足,创建了一个计算机管理编程训练系统的方案。文章介绍了编程训练系统的系统分析部分&…

软件测试项目实战

软件测试是使用人工或者自动的手段来运行或者测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。 在软件投入使用前,要经过一系列的严格测试,才能保证交付质量。 一、引言 1.编写目的 本文档…

python实现十进制转换二进制,tkinter界面

目录 需求 效果 代码实现 代码解释 需求 python实现十进制转换二进制 效果 代码实现 import tkinter as tk from tkinter import messageboxdef convert_to_binary():try:# 获取输入框中的十进制数decimal_number int(entry.get())# 转换为二进制binary_number bin(de…

API架构解说

API(应用程序编程接口,Application Programming Interface) 是一种定义软件组件之间交互方式的规范。 它允许不同的软件系统之间进行通信和数据交换,而无需了解彼此的内部实现细节。 API 充当了不同软件组件之间的桥梁&#xff…

用WordPress需要学习哪些编程知识

要使用WordPress搭建和管理网站,您需要掌握一些基本的编程知识。以下是一些关键的技能和概念: 基本编程知识 – HTML:用于构建网页的结构。 – CSS:用于设计和布局网页。 – PHP:WordPress是基于PHP的,…

Python版Spark Structured Streaming编程指南

Structured Streaming中文参考指南 一、概述 Structured Streaming是构建在Spark SQL引擎之上的可扩展且容错的流处理引擎。用户可以像处理静态数据的批处理计算一样表达流计算,Spark SQL引擎会持续增量地运行计算,并在流数据不断到达时更新最终结果。…

Maven 构建项目

Maven 是一个项目管理和构建工具,主要用于 Java 项目。它简化了项目的构建、依赖管理、报告生成、发布等一系列工作。 构建自动化:Maven 提供了一套标准化的构建生命周期,包括编译、测试、打包、部署等步骤,通过简单的命令就可以执…

多线程-阻塞队列

目录 阻塞队列 消息队列 阻塞队列用于生产者消费者模型 概念 实现原理 生产者消费者主要优势 缺陷 阻塞队列的实现 1.写一个普通队列 2.加上线程安全和阻塞等待 3.解决代码中的问题 阻塞队列 阻塞队列,是带有线程安全功能的队列,拥有队列先进…