下面是一个简单的C语言职工信息管理系统的实现。这个系统基于结构体数组来存储职工数据,并使用函数来实现各种功能。请注意,为了简化,这个程序不包含动态内存分配、错误处理或持久化存储(如文件操作)。它仅用于演示目的。
```c
#include
#include
#include
#define MAX_EMPLOYEES 100
#define MAX_NAME_LENGTH 50
#define MAX_DEPT_NAME_LENGTH 20
#define MAX_TITLE_LENGTH 20
// 定义职工结构体
typedef struct {
int id;
char name[MAX_NAME_LENGTH];
char department[MAX_DEPT_NAME_LENGTH];
char title[MAX_TITLE_LENGTH];
float basicSalary;
float overtimeSalary;
float bonus;
float totalSalary;
} Employee;
// 职工列表
Employee employees[MAX_EMPLOYEES];
int employeeCount = 0;
// 函数声明
void addEmployee();
void queryEmployeeById();
void queryEmployeeByName();
void sortEmployeesByTotalSalary();
void sortEmployeesByBasicSalary();
void deleteEmployee();
void updateEmployee();
void analyzeDepartment();
void printEmployees();
int main() {
int choice;
do {
printf("\n职工信息管理系统\n");
printf("1. 添加职工记录\n");
printf("2. 查询职工\n");
printf("3. 排序职工数据\n");
printf("4. 删除职工记录\n");
printf("5. 修改职工记录\n");
printf("6. 部门职工分析\n");
printf("7. 输出职工信息表\n");
printf("0. 退出\n");
printf("请选择操作: ");
scanf("%d", &choice);
switch (choice) {
case 1:
addEmployee();
break;
case 2:
printf("按编号查询(1) 或 按姓名查询(2): ");
scanf("%d", &choice);
if (choice == 1) {
queryEmployeeById();
} else if (choice == 2) {
queryEmployeeByName();
} else {
printf("无效的选择,请重新输入。\n");
}
break;
case 3:
printf("按总工资排序(1) 或 按基本工资排序(2): ");
scanf("%d", &choice);
if (choice == 1) {
sortEmployeesByTotalSalary();
} else if (choice == 2) {
sortEmployeesByBasicSalary();
} else {
printf("无效的选择,请重新输入。\n");
}
break;
case 4:
deleteEmployee();
break;
case 5:
updateEmployee();
break;
case 6:
analyzeDepartment();
break;
case 7:
printEmployees();
break;
case 0:
printf("退出系统。\n");
break;
default:
printf("无效的选择,请重新输入。\n");
}
} while (choice != 0);
return 0;
}
// 添加职工记录
void addEmployee() {
if (employeeCount >= MAX_EMPLOYEES) {
printf("职工信息已满,无法添加新记录。\n");
return;
}
printf("请输入职工编号: ");
scanf("%d", &employees[employeeCount].id);
printf("请输入职工姓名: ");
scanf("%s", employees[employeeCount].name);
printf("请输入职工部门: ");
scanf("%s", employees[employeeCount].department);
printf("请输入职工职称: ");
scanf("%s", employees[employeeCount].title);
printf("请输入职工基本工资: ");
scanf("%f", &employees[employeeCount].basicSalary);
printf("请输入职工加班工资: ");
scanf("%f", &employees[employeeCount].overtimeSalary);
printf("请输入职工奖金: ");
scanf("%f", &employees[employeeCount].bonus);
employees[employeeCount].totalSalary = employees[employeeCount].basicSalary + employees[employeeCount].overtimeSalary + employees[employeeCount].bonus;
employeeCount++;
printf("职工添加成功。\n");