制作一个简单的职员工资表,输人如下信息,将其保存在结构体数组中;通过输入姓名,可查询到某个人的实发工资(基本工资+浮动工资-扣除部分);如果姓名为”#”则列出所有人的实发工资。 姓名 基本工资 浮动工资 扣除部分 张三 2400.00 800.00 160.00 李四 3600.00 620.00 50.00 王五 5600.00 0.00 80.00 赵六 2400.00 300.00 20.00 钱七 4300.00 1300.00 300.00
时间: 2024-02-10 16:14:21 浏览: 26
好的,以下是实现该需求的代码:
```
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 5
struct Employee {
char name[20];
float basic_salary;
float floating_salary;
float deduction;
float net_salary;
};
void calculate_salary(struct Employee* emp) {
emp->net_salary = emp->basic_salary + emp->floating_salary - emp->deduction;
}
int main() {
struct Employee employees[MAX_SIZE];
int i, j;
char query_name[20];
// 输入员工信息
printf("请输入%d个员工的信息:\n", MAX_SIZE);
for (i = 0; i < MAX_SIZE; i++) {
printf("请输入第%d个员工的姓名:", i + 1);
scanf("%s", employees[i].name);
printf("请输入该员工的基本工资:");
scanf("%f", &employees[i].basic_salary);
printf("请输入该员工的浮动工资:");
scanf("%f", &employees[i].floating_salary);
printf("请输入该员工的扣除部分:");
scanf("%f", &employees[i].deduction);
calculate_salary(&employees[i]); // 计算实发工资
}
// 查询员工实发工资
printf("\n请输入要查询的员工姓名(输入 # 列出所有员工):");
scanf("%s", query_name);
if (strcmp(query_name, "#") == 0) {
// 列出所有员工的实发工资
printf("\n姓名\t实发工资\n");
for (j = 0; j < MAX_SIZE; j++) {
printf("%s\t%.2f\n", employees[j].name, employees[j].net_salary);
}
} else {
// 查询某个员工的实发工资
for (j = 0; j < MAX_SIZE; j++) {
if (strcmp(query_name, employees[j].name) == 0) {
printf("\n%s的实发工资是:%.2f\n", employees[j].name, employees[j].net_salary);
break;
}
}
if (j == MAX_SIZE) {
printf("\n未找到名为%s的员工\n", query_name);
}
}
return 0;
}
```
运行结果:
```
请输入5个员工的信息:
请输入第1个员工的姓名:张三
请输入该员工的基本工资:2400
请输入该员工的浮动工资:800
请输入该员工的扣除部分:160
请输入第2个员工的姓名:李四
请输入该员工的基本工资:3600
请输入该员工的浮动工资:620
请输入该员工的扣除部分:50
请输入第3个员工的姓名:王五
请输入该员工的基本工资:5600
请输入该员工的浮动工资:0
请输入该员工的扣除部分:80
请输入第4个员工的姓名:赵六
请输入该员工的基本工资:2400
请输入该员工的浮动工资:300
请输入该员工的扣除部分:20
请输入第5个员工的姓名:钱七
请输入该员工的基本工资:4300
请输入该员工的浮动工资:1300
请输入该员工的扣除部分:300
请输入要查询的员工姓名(输入 # 列出所有员工):张三
张三的实发工资是:3040.00
```
如果输入`#`,则会列出所有员工的实发工资:
```
请输入要查询的员工姓名(输入 # 列出所有员工):#
姓名 实发工资
张三 3040.00
李四 4170.00
王五 5520.00
赵六 2680.00
钱七 5300.00
```