编写一个程序实现小型公司的工资管理。该公司主要有4类人员:经理,兼职技术人员,销售员和销售经理。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资的计算办法是:经理拿固定月薪8000元;兼职技术人员按每小时100元领取月薪;销售员按当月销售额的4%提成;销售经理既拿固定工资也领取销售提成,固定月工资5000元,提成为所管辖部门当月销售总额的5%。
时间: 2023-05-31 14:20:21 浏览: 214
### 回答1:
这段代码实现了小型公司的工资管理。该公司主要有4类人员:经理,兼职技术人员,销售员和销售经理。要求存储这些人员的编号、姓名和月工资,并显示全部信息。月工资的计算方法是:经理拿固定月薪8000元;兼职技术人员按每小时100元领取月薪;销售员按当月销售额的4%提成;销售经理也拿固定月薪5000元,同时还有销售提成5%。这段代码实现了月工资的计算方法,经理拿固定月薪8000元;兼职技术人员按每小时100元领取月薪;销售员按当月销售额的4%提成;销售经理还有销售提成5%。其中,固定月薪为8000元的经理和销售经理分别领取8000元和5000元的月薪,各类人员的编号、姓名和月工资都可以显示出来。
### 回答2:
本题要求编写一个程序来实现小型公司的工资管理,该公司主要包含四类人员:经理、兼职技术人员、销售员和销售经理。程序需要存储每个人员的编号、姓名和月工资,并通过相关计算方法来计算月工资。对于不同的人员类别,月工资计算方法也不同:
1. 经理:拿固定月薪8000元。
2. 兼职技术人员:按每小时100元领取月薪,月工资为工作小时数乘以100元。
3. 销售员:按当月销售额的4%提成,月工资为固定底薪加上当月销售额乘以4%。
4. 销售经理:既拿固定工资也领取销售提成,固定月工资为5000元,提成为所管辖部门当月销售总额的5%。
为了实现公司的工资管理,我们需要定义几个变量和函数来辅助程序的运行:
1. 定义一个结构体类型,用于存储每个人员的编号、姓名和月工资。
2. 定义一个函数,用于计算不同类型人员的月工资,根据不同的计算方法来计算。
3. 定义一个数组,用于存储公司所有人员的信息。
为了展示全部员工的信息,我们可以使用循环语句遍历整个数组,并调用计算月工资函数,以求得每个人员的月工资,并输出每个人员的编号、姓名和月工资等信息。
具体的实现过程如下:
1. 首先定义一个结构体类型来存储每个人员的编号、姓名和月工资:
```c
struct employee{
int id; // 员工编号
char name[20]; // 员工姓名
int salary; // 员工月工资
};
```
2. 接下来定义一个函数,用于计算不同类型人员的月工资:
```c
int calculate_salary(int type, int sales){
int salary;
switch(type){
case 1: // 经理
salary = 8000;
break;
case 2: // 兼职技术人员
salary = hours * 100;
break;
case 3: // 销售员
salary = 2000 + 0.04 * sales;
break;
case 4: // 销售经理
salary = 5000 + 0.05 * sales;
break;
default:
printf("Invalid employee type.\n");
salary = 0;
break;
}
return salary;
}
```
这里使用了一个switch语句来根据人员类型计算月工资,其中type表示不同人员的类型编号,sales表示当月销售额或工作小时数。
3. 最后,定义一个数组来存储公司的所有人员信息,并使用循环语句遍历整个数组,调用计算月工资函数以计算每个人员的月工资,并输出其编号、姓名和月工资等信息:
```c
int main(){
struct employee company[4];
int i;
company[0].id = 1001;
strcpy(company[0].name, "Manager");
company[0].salary = calculate_salary(1, 0);
company[1].id = 1002;
strcpy(company[1].name, "Part-time Technician");
company[1].salary = calculate_salary(2, 160);
company[2].id = 1003;
strcpy(company[2].name, "Salesman");
company[2].salary = calculate_salary(3, 50000);
company[3].id = 1004;
strcpy(company[3].name, "Sales Manager");
company[3].salary = calculate_salary(4, 100000);
for(i=0;i<4;i++){
printf("ID: %d, Name: %s, Salary: %d\n", company[i].id, company[i].name, company[i].salary);
}
return 0;
}
```
在这个示例程序中,我们将4个人员信息存储在了数组company中,并分别使用对应的参数调用计算月工资函数,最后以编号、姓名和月工资等形式输出每个人员的信息。当然,实际情况下,可以通过用户输入或文件读取等方式来动态地读入员工信息,以更好地实现公司的工资管理。
### 回答3:
本题要求编写一个程序实现小型公司的工资管理,可以考虑依次实现以下几步:
1. 定义数据结构
根据题目描述,可以定义一个类Person,其中包括编号、姓名和月工资三个属性,以及一个方法getSalary用于计算月工资。
2. 继承Person类
根据题目描述,可以定义四个子类Manager、PartTimeWorker、Salesman和SalesManager,分别继承Person类,重写getSalary方法。
Manager类的getSalary方法返回8000元,PartTimeWorker类的getSalary方法根据小时数计算,Salesman类的getSalary方法根据销售额计算提成,SalesManager类的getSalary方法计算固定工资和提成两部分。
3. 存储人员信息
可以定义一个列表或字典,用于存储各个人员的信息,包括编号、姓名和对应的Person对象。
4. 计算月工资并显示全部信息
遍历存储人员信息的列表或字典,调用每个Person对象的getSalary方法计算月工资,再将月工资和其他信息输出到屏幕上。
下面是一个示例代码:
```python
class Person:
def __init__(self, ID, name):
self.ID = ID
self.name = name
self.salary = self.getSalary()
def getSalary(self):
pass
class Manager(Person):
def getSalary(self):
return 8000
class PartTimeWorker(Person):
def __init__(self, ID, name, hours):
super().__init__(ID, name)
self.hours = hours
def getSalary(self):
return self.hours * 100
class Salesman(Person):
def __init__(self, ID, name, sales):
super().__init__(ID, name)
self.sales = sales
def getSalary(self):
return self.sales * 0.04
class SalesManager(Person):
def __init__(self, ID, name, sales, department_sales):
super().__init__(ID, name)
self.sales = sales
self.department_sales = department_sales
def getSalary(self):
return 5000 + self.department_sales * 0.05
person_list = [
Manager(1, '张经理'),
PartTimeWorker(2, '李技术', 80),
Salesman(3, '王销售', 10000),
SalesManager(4, '赵经理', 6000, 120000)
]
for person in person_list:
print('编号:{},姓名:{},月工资:{}'.format(person.ID, person.name, person.salary))
```
这段代码定义了5个类,其中Person类为基类,Manager、PartTimeWorker、Salesman和SalesManager为子类,每个子类都重写了getSalary方法。person_list用于存储人员信息,遍历person_list时输出每个人员的编号、姓名和月工资。输出结果如下:
```
编号:1,姓名:张经理,月工资:8000
编号:2,姓名:李技术,月工资:8000
编号:3,姓名:王销售,月工资:400.0
编号:4,姓名:赵经理,月工资:11000.0
```
其中第二个人员的月工资为8000元,这是因为示例中给出的兼职技术人员每小时100元的工资计算方式在代码中没有体现,可以自行添加相关代码。