用C语言写一个企业员工信息管理系统,采用结构体作为基本数据结构,学生的最终数据-定要保存到文件上。 主函数通过switch语句来根据用户的需求跳转到各个模块,以实现用户的需要。 系统要求能实现以下基本功能:录入员工信息、更新员工信息、查询员工信息、排列员工信息、统计员工信息和输出员工信息。
时间: 2023-06-27 19:06:43 浏览: 191
好的,我可以为您提供一个简单的企业员工信息管理系统的实现,您可以参考下面的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义员工信息结构体
struct Employee {
int id; // 员工编号
char name[20]; // 员工姓名
int age; // 员工年龄
char gender[5]; // 员工性别
float salary; // 员工薪水
};
// 定义员工信息数组
struct Employee employees[100];
// 定义员工信息数量
int count = 0;
// 保存员工信息到文件
void saveEmployeesToFile() {
FILE *fp;
fp = fopen("employees.dat", "wb");
fwrite(&count, sizeof(int), 1, fp);
fwrite(employees, sizeof(struct Employee), count, fp);
fclose(fp);
}
// 从文件中读取员工信息
void loadEmployeesFromFile() {
FILE *fp;
fp = fopen("employees.dat", "rb");
if (fp == NULL) {
return;
}
fread(&count, sizeof(int), 1, fp);
fread(employees, sizeof(struct Employee), count, fp);
fclose(fp);
}
// 录入员工信息
void addEmployee() {
printf("请输入员工编号:");
scanf("%d", &employees[count].id);
printf("请输入员工姓名:");
scanf("%s", employees[count].name);
printf("请输入员工年龄:");
scanf("%d", &employees[count].age);
printf("请输入员工性别:");
scanf("%s", employees[count].gender);
printf("请输入员工薪水:");
scanf("%f", &employees[count].salary);
count++;
saveEmployeesToFile();
printf("员工信息已保存\n");
}
// 更新员工信息
void updateEmployee() {
int id;
printf("请输入要修改的员工编号:");
scanf("%d", &id);
for (int i = 0; i < count; i++) {
if (employees[i].id == id) {
printf("请输入员工姓名:");
scanf("%s", employees[i].name);
printf("请输入员工年龄:");
scanf("%d", &employees[i].age);
printf("请输入员工性别:");
scanf("%s", employees[i].gender);
printf("请输入员工薪水:");
scanf("%f", &employees[i].salary);
saveEmployeesToFile();
printf("员工信息已更新\n");
return;
}
}
printf("未找到该员工信息\n");
}
// 查询员工信息
void queryEmployee() {
int id;
printf("请输入要查询的员工编号:");
scanf("%d", &id);
for (int i = 0; i < count; i++) {
if (employees[i].id == id) {
printf("员工编号:%d\n", employees[i].id);
printf("员工姓名:%s\n", employees[i].name);
printf("员工年龄:%d\n", employees[i].age);
printf("员工性别:%s\n", employees[i].gender);
printf("员工薪水:%.2f\n", employees[i].salary);
return;
}
}
printf("未找到该员工信息\n");
}
// 排列员工信息
void sortEmployee() {
for (int i = 0; i < count; i++) {
for (int j = i + 1; j < count; j++) {
if (employees[i].id > employees[j].id) {
struct Employee temp = employees[i];
employees[i] = employees[j];
employees[j] = temp;
}
}
}
saveEmployeesToFile();
printf("员工信息已排列\n");
}
// 统计员工信息
void countEmployee() {
int totalAge = 0;
float totalSalary = 0;
for (int i = 0; i < count; i++) {
totalAge += employees[i].age;
totalSalary += employees[i].salary;
}
printf("员工平均年龄:%.2f\n", (float)totalAge / count);
printf("员工平均薪水:%.2f\n", totalSalary / count);
}
// 输出员工信息
void printEmployee() {
printf("员工编号\t员工姓名\t员工年龄\t员工性别\t员工薪水\n");
for (int i = 0; i < count; i++) {
printf("%d\t\t%s\t\t%d\t\t%s\t\t%.2f\n", employees[i].id, employees[i].name, employees[i].age, employees[i].gender, employees[i].salary);
}
}
int main() {
loadEmployeesFromFile();
while (1) {
printf("请选择操作:\n");
printf("1. 录入员工信息\n");
printf("2. 更新员工信息\n");
printf("3. 查询员工信息\n");
printf("4. 排列员工信息\n");
printf("5. 统计员工信息\n");
printf("6. 输出员工信息\n");
printf("0. 退出\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
addEmployee();
break;
case 2:
updateEmployee();
break;
case 3:
queryEmployee();
break;
case 4:
sortEmployee();
break;
case 5:
countEmployee();
break;
case 6:
printEmployee();
break;
case 0:
exit(0);
default:
printf("无效的操作\n");
break;
}
}
return 0;
}
```
这个程序使用结构体作为基本数据结构,保存了员工的编号、姓名、年龄、性别和薪水等信息。主函数通过 switch 语句来根据用户的需求跳转到各个模块,以实现用户的需要。系统能够实现录入员工信息、更新员工信息、查询员工信息、排列员工信息、统计员工信息和输出员工信息等基本功能,并且将员工信息保存到文件中,下次程序运行时可以从文件中加载员工信息。
阅读全文