写一段c语言代码实现职工管理系统中的职工信息用文件保存
时间: 2023-11-12 19:05:44 浏览: 103
下面是一个简单的职工管理系统代码,其中包括了职工基本信息的录入、查询、修改、删除和文件保存等操作:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_EMPLOYEES 100 // 最大职工数目
#define MAX_NAME_LEN 20 // 姓名最大长度
typedef struct employee {
int id; // 职工编号
char name[MAX_NAME_LEN];// 职工姓名
int age; // 职工年龄
float salary; // 职工工资
} Employee;
int numEmployees = 0; // 职工数目
Employee employees[MAX_EMPLOYEES]; // 职工数组
// 菜单
void menu() {
printf("==========职工管理系统==========\n");
printf(" 1. 录入职工信息\n");
printf(" 2. 查询职工信息\n");
printf(" 3. 修改职工信息\n");
printf(" 4. 删除职工信息\n");
printf(" 5. 显示所有职工信息\n");
printf(" 6. 保存职工信息到文件\n");
printf(" 0. 退出系统\n");
printf("=================================\n");
}
// 录入职工信息
void addEmployee() {
if (numEmployees >= MAX_EMPLOYEES) {
printf("职工数目已达到上限!\n");
return;
}
Employee emp;
printf("请输入职工编号:");
scanf("%d", &emp.id);
printf("请输入职工姓名:");
scanf("%s", emp.name);
printf("请输入职工年龄:");
scanf("%d", &emp.age);
printf("请输入职工工资:");
scanf("%f", &emp.salary);
employees[numEmployees++] = emp;
printf("职工信息录入成功!\n");
}
// 查询职工信息
void findEmployee() {
int id;
printf("请输入要查询的职工编号:");
scanf("%d", &id);
int i;
for (i = 0; i < numEmployees; 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("职工工资:%f\n", employees[i].salary);
return;
}
}
printf("未找到职工编号为 %d 的职工!\n", id);
}
// 修改职工信息
void modifyEmployee() {
int id;
printf("请输入要修改的职工编号:");
scanf("%d", &id);
int i;
for (i = 0; i < numEmployees; i++) {
if (employees[i].id == id) {
printf("请输入新的职工姓名:");
scanf("%s", employees[i].name);
printf("请输入新的职工年龄:");
scanf("%d", &employees[i].age);
printf("请输入新的职工工资:");
scanf("%f", &employees[i].salary);
printf("职工信息修改成功!\n");
return;
}
}
printf("未找到职工编号为 %d 的职工!\n", id);
}
// 删除职工信息
void deleteEmployee() {
int id;
printf("请输入要删除的职工编号:");
scanf("%d", &id);
int i;
for (i = 0; i < numEmployees; i++) {
if (employees[i].id == id) {
// 将该职工从数组中删除
int j;
for (j = i; j < numEmployees - 1; j++) {
employees[j] = employees[j + 1];
}
numEmployees--;
printf("职工信息删除成功!\n");
return;
}
}
printf("未找到职工编号为 %d 的职工!\n", id);
}
// 显示所有职工信息
void showEmployees() {
int i;
printf("职工编号\t职工姓名\t职工年龄\t职工工资\n");
for (i = 0; i < numEmployees; i++) {
printf("%d\t\t%s\t\t%d\t\t%f\n", employees[i].id, employees[i].name,
employees[i].age, employees[i].salary);
}
}
// 将职工信息保存到文件
void saveToFile() {
FILE *fp;
fp = fopen("employees.txt", "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
int i;
for (i = 0; i < numEmployees; i++) {
fprintf(fp, "%d %s %d %f\n", employees[i].id, employees[i].name,
employees[i].age, employees[i].salary);
}
fclose(fp);
printf("职工信息保存成功!\n");
}
int main() {
int choice;
while (1) {
menu();
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 0:
printf("谢谢使用职工管理系统!\n");
return 0;
case 1:
addEmployee();
break;
case 2:
findEmployee();
break;
case 3:
modifyEmployee();
break;
case 4:
deleteEmployee();
break;
case 5:
showEmployees();
break;
case 6:
saveToFile();
break;
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
在上面的代码中,我们使用了 `fopen` 和 `fprintf` 函数将职工信息保存到文件中。在保存文件时,我们将职工编号、姓名、年龄和工资分别以空格隔开的方式写入文件中。当需要从文件中读取职工信息时,我们可以使用 `fscanf` 函数来读取文件中的数据。
阅读全文