一个公司有四类人员:经理、技术人员、推销人员、销售经理以及推销人员。员工的共有属性有:姓名、级别、职工工号,月薪总额,员工的个性化属性则根据职务的不同而有所不同。例如,经理还有部门名称、年终奖等属性;技术人员还有技术方向、技术水平等属性;推销人员还有销售额、提成比例等属性;销售经理还有管理的推销人员数量、销售目标等属性。这些个性化属性可以根据具体需求进行扩展和修改。
时间: 2023-07-10 19:06:56 浏览: 112
针对这个公司的员工信息管理,可以设计一个员工类作为基类,经理、技术人员、推销人员和销售经理类分别从员工类继承。员工类可以包括共有属性,如姓名、级别、职工工号、月薪总额等,以及一些基本方法,如计算月薪总额、输出员工信息等。不同的子类可以在基类的基础上添加特定的个性化属性和方法,如经理类可以添加部门名称、年终奖属性和计算年终奖的方法;技术人员类可以添加技术方向、技术水平属性和评估技术水平的方法;推销人员类可以添加销售额、提成比例属性和计算提成的方法;销售经理类可以添加管理的推销人员数量、销售目标属性和评估销售目标完成情况的方法。
继承关系如下图所示:
```
Employee
|
----------------------------
| | | |
Manager Technician Salesman SalesManager
```
这样,我们可以通过创建不同的对象来管理不同类型的员工信息,而且可以根据实际需求对员工类进行扩展和修改。
相关问题
一个公司有四类人员:经理、技术人员、推销人员、销售经理以及推销人员。员工的共有属性有:姓名、级别、职工工号,月薪总额,新增的职工工号,由公司现有的员工工号最大值加1得到,方法有promote(),功能是改变员工的级别
好的,那我们可以定义一个Employee类来表示这些员工,代码如下:
```python
class Employee:
def __init__(self, name, level, id, salary):
self.name = name
self.level = level
self.id = id
self.salary = salary
def promote(self, new_level):
self.level = new_level
def __str__(self):
return f"Name:{self.name}, Level:{self.level}, ID:{self.id}, Salary:{self.salary}"
```
在这个类中,我们定义了一个构造函数来初始化员工的基本信息,包括姓名、级别、职工工号和月薪总额。还定义了一个promote()方法,用来改变员工的级别。最后我们还定义了一个__str__()方法,方便打印输出员工的信息。
接下来,我们可以定义各种不同类型的员工,比如经理、技术人员、推销人员和销售经理。这些员工的属性和方法都可以继承自Employee类,再根据不同的需求进行扩展和修改。例如:
```python
class Manager(Employee):
def __init__(self, name, level, id, salary, department):
super().__init__(name, level, id, salary)
self.department = department
def __str__(self):
return f"{super().__str__()}, Department:{self.department}"
class Technician(Employee):
def __init__(self, name, level, id, salary, skill):
super().__init__(name, level, id, salary)
self.skill = skill
def __str__(self):
return f"{super().__str__()}, Skill:{self.skill}"
class Salesman(Employee):
def __init__(self, name, level, id, salary, region):
super().__init__(name, level, id, salary)
self.region = region
def __str__(self):
return f"{super().__str__()}, Region:{self.region}"
class SalesManager(Salesman):
def __init__(self, name, level, id, salary, region, department):
super().__init__(name, level, id, salary, region)
self.department = department
def __str__(self):
return f"{super().__str__()}, Department:{self.department}"
```
在这些子类中,我们对父类的__init__()方法进行了重写,以便添加新的属性。同时,我们也重写了__str__()方法,方便打印输出员工的信息。例如,Manager类新增了一个department属性,表示所属部门;Technician类新增了一个skill属性,表示技能;Salesman类新增了一个region属性,表示销售区域;SalesManager继承自Salesman并新增了一个department属性,表示所属部门。
现在我们就可以创建各种不同类型的员工,并对他们进行操作,例如:
```python
# 创建一个经理
manager = Manager("Tom", 3, 1001, 10000, "Sales")
# 输出经理的信息
print(manager)
# 将经理的级别提升为4
manager.promote(4)
# 再次输出经理的信息
print(manager)
```
输出结果为:
```
Name:Tom, Level:3, ID:1001, Salary:10000, Department:Sales
Name:Tom, Level:4, ID:1001, Salary:10000, Department:Sales
```
这个例子展示了如何创建一个经理,并对其进行级别调整。其他类型的员工也可以类似地创建和操作。
Python公司有四类人员: 经理、技术人员、 推销人员以及销售经理。 员工的共有属性有:姓名、级别、职工工号,月薪总额;新增的职工的工号,由公司现有的员工工号最大值加1得到:方法有promote(), 功能是改变员工的级别: 经理是固定月薪制:技术人员是时薪制:推销人员按销售额提成:销售经理则是固定月薪加销售额提成。 每种人员的月薪总额计算方法如下: 经理: 8000 元/月;技术人员: 100 元/小时: 推销人员: 4%提成:销售经理: 5000 元/月+5%提成。 请编写程序,创建各类
人员对象,并实现计算月薪总额和改变员工级别的功能。
```python
class Employee:
def __init__(self, name, level):
self.name = name
self.level = level
self.id = self.get_new_id()
self.salary = 0
@staticmethod
def get_new_id():
# 获取新的工号,由公司现有的员工工号最大值加1得到
# 这里用一个静态变量来存储当前最大的工号
if not hasattr(Employee, 'max_id'):
Employee.max_id = 0
Employee.max_id += 1
return Employee.max_id
def promote(self, new_level):
# 改变员工的级别
self.level = new_level
class Manager(Employee):
def __init__(self, name):
super().__init__(name, "Manager")
self.salary = 8000
class Technician(Employee):
def __init__(self, name, hours):
super().__init__(name, "Technician")
self.hours = hours
self.salary = 100 * hours
class Salesman(Employee):
def __init__(self, name, sales):
super().__init__(name, "Salesman")
self.sales = sales
self.salary = 0.04 * sales
class SalesManager(Employee):
def __init__(self, name, sales):
super().__init__(name, "SalesManager")
self.sales = sales
self.salary = 5000 + 0.05 * sales
```
使用示例:
```python
# 创建各个职位的员工对象
manager = Manager("Jack")
technician = Technician("Tom", 80)
salesman = Salesman("Lucy", 50000)
sales_manager = SalesManager("Bob", 80000)
# 查看各个员工的信息
print(manager.name, manager.level, manager.id, manager.salary)
print(technician.name, technician.level, technician.id, technician.salary)
print(salesman.name, salesman.level, salesman.id, salesman.salary)
print(sales_manager.name, sales_manager.level, sales_manager.id, sales_manager.salary)
# 改变员工的级别
manager.promote("Senior Manager")
print(manager.name, manager.level, manager.id, manager.salary)
```
阅读全文