用C语言写一个企业员工信息管理系统,采用结构体作为基本数据结构,学生的最终数据-定要保存到文件上。 主函数通过switch语句来根据用户的需求跳转到各个模块,以实现用户的需要。 系统要求能实现以下基本功能:录入员工信息、更新员工信息、查询员工信息、排列员工信息、统计员工信息和输出员工信息。
时间: 2023-07-14 17:14:19 浏览: 127
好的,我可以给您提供一个基本的企业员工信息管理系统的代码,如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_EMPLOYEE_NUM 100 // 最大员工数
#define MAX_NAME_LENGTH 20 // 最大姓名长度
#define MAX_DEPT_LENGTH 10 // 最大部门名称长度
// 员工信息结构体
typedef struct {
char name[MAX_NAME_LENGTH];
int age;
char department[MAX_DEPT_LENGTH];
double salary;
} Employee;
// 全局变量
Employee employees[MAX_EMPLOYEE_NUM];
int employeeNum = 0;
// 函数声明
void addEmployee();
void updateEmployee();
void queryEmployee();
void sortEmployee();
void statEmployee();
void outputEmployee();
void saveToFile();
int main() {
int option;
while (1) {
printf("\n");
printf("===============企业员工信息管理系统===============\n");
printf("1. 录入员工信息\n");
printf("2. 更新员工信息\n");
printf("3. 查询员工信息\n");
printf("4. 排列员工信息\n");
printf("5. 统计员工信息\n");
printf("6. 输出员工信息\n");
printf("7. 保存员工信息到文件\n");
printf("8. 退出系统\n");
printf("请选择你需要的功能:");
scanf("%d", &option);
switch (option) {
case 1:
addEmployee();
break;
case 2:
updateEmployee();
break;
case 3:
queryEmployee();
break;
case 4:
sortEmployee();
break;
case 5:
statEmployee();
break;
case 6:
outputEmployee();
break;
case 7:
saveToFile();
break;
case 8:
printf("谢谢使用,再见!\n");
exit(0);
default:
printf("输入有误,请重新输入!\n");
}
}
return 0;
}
// 录入员工信息
void addEmployee() {
if (employeeNum >= MAX_EMPLOYEE_NUM) {
printf("员工信息已满,无法录入新员工!\n");
return;
}
Employee employee;
printf("请输入员工姓名:");
scanf("%s", employee.name);
printf("请输入员工年龄:");
scanf("%d", &employee.age);
printf("请输入员工部门:");
scanf("%s", employee.department);
printf("请输入员工工资:");
scanf("%lf", &employee.salary);
employees[employeeNum++] = employee;
printf("员工信息录入成功!\n");
}
// 更新员工信息
void updateEmployee() {
if (employeeNum == 0) {
printf("员工信息为空,无法更新员工信息!\n");
return;
}
char name[MAX_NAME_LENGTH];
printf("请输入要更新的员工姓名:");
scanf("%s", name);
int i;
for (i = 0; i < employeeNum; i++) {
if (strcmp(name, employees[i].name) == 0) {
printf("请输入员工年龄:");
scanf("%d", &employees[i].age);
printf("请输入员工部门:");
scanf("%s", employees[i].department);
printf("请输入员工工资:");
scanf("%lf", &employees[i].salary);
printf("员工信息更新成功!\n");
return;
}
}
printf("未找到要更新的员工信息!\n");
}
// 查询员工信息
void queryEmployee() {
if (employeeNum == 0) {
printf("员工信息为空,无法查询员工信息!\n");
return;
}
char name[MAX_NAME_LENGTH];
printf("请输入要查询的员工姓名:");
scanf("%s", name);
int i;
for (i = 0; i < employeeNum; i++) {
if (strcmp(name, employees[i].name) == 0) {
printf("姓名:%s,年龄:%d,部门:%s,工资:%.2lf\n", employees[i].name, employees[i].age, employees[i].department, employees[i].salary);
return;
}
}
printf("未找到要查询的员工信息!\n");
}
// 排列员工信息
void sortEmployee() {
if (employeeNum == 0) {
printf("员工信息为空,无法排列员工信息!\n");
return;
}
int option;
printf("请选择排序方式(1.按姓名升序 2.按年龄降序 3.按工资升序):");
scanf("%d", &option);
switch (option) {
case 1:
qsort(employees, employeeNum, sizeof(Employee), [](const void* a, const void* b) -> int {
return strcmp(((Employee*)a)->name, ((Employee*)b)->name);
});
printf("员工信息按姓名升序排列成功!\n");
break;
case 2:
qsort(employees, employeeNum, sizeof(Employee), [](const void* a, const void* b) -> int {
return ((Employee*)b)->age - ((Employee*)a)->age;
});
printf("员工信息按年龄降序排列成功!\n");
break;
case 3:
qsort(employees, employeeNum, sizeof(Employee), [](const void* a, const void* b) -> int {
return ((Employee*)a)->salary - ((Employee*)b)->salary;
});
printf("员工信息按工资升序排列成功!\n");
break;
default:
printf("输入有误,请重新输入!\n");
}
}
// 统计员工信息
void statEmployee() {
if (employeeNum == 0) {
printf("员工信息为空,无法统计员工信息!\n");
return;
}
double totalSalary = 0;
int i;
for (i = 0; i < employeeNum; i++) {
totalSalary += employees[i].salary;
}
printf("员工总数:%d,平均工资:%.2lf\n", employeeNum, totalSalary / employeeNum);
}
// 输出员工信息
void outputEmployee() {
if (employeeNum == 0) {
printf("员工信息为空,无法输出员工信息!\n");
return;
}
int i;
for (i = 0; i < employeeNum; i++) {
printf("姓名:%s,年龄:%d,部门:%s,工资:%.2lf\n", employees[i].name, employees[i].age, employees[i].department, employees[i].salary);
}
}
// 保存员工信息到文件
void saveToFile() {
if (employeeNum == 0) {
printf("员工信息为空,无法保存员工信息到文件!\n");
return;
}
FILE* fp = fopen("employees.txt", "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
int i;
for (i = 0; i < employeeNum; i++) {
fprintf(fp, "%s %d %s %.2lf\n", employees[i].name, employees[i].age, employees[i].department, employees[i].salary);
}
fclose(fp);
printf("员工信息保存到文件成功!\n");
}
```
该代码实现了企业员工信息管理系统的基本功能,包括录入员工信息、更新员工信息、查询员工信息、排列员工信息、统计员工信息和输出员工信息,并且可以将员工信息保存到文件中。
阅读全文