c语言:定义一个员工结构(包含员工号、姓名、性别),输入4个员工的数据,将这些员工数据保存到文件employer.dat中,最后按照员工号从大到小排序在屏幕上输出。
时间: 2024-03-16 14:41:30 浏览: 166
员工管理系统 C语言
5星 · 资源好评率100%
好的,以下是 C 语言的实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义员工结构体
struct employee {
int empno;
char name[11];
char gender;
};
int main() {
FILE *fp;
struct employee emp, emps[4];
int i, j;
// 输入员工数据
for (i = 0; i < 4; i++) {
printf("请输入员工号:");
scanf("%d", &emps[i].empno);
printf("请输入姓名:");
scanf("%s", emps[i].name);
printf("请输入性别:");
getchar(); // 消耗掉换行符
scanf("%c", &emps[i].gender);
}
// 保存员工数据到文件
fp = fopen("employer.dat", "wb");
if (fp == NULL) {
printf("无法打开文件!\n");
exit(1);
}
for (i = 0; i < 4; i++) {
fwrite(&emps[i], sizeof(struct employee), 1, fp);
}
fclose(fp);
// 从文件读取员工数据并排序输出
fp = fopen("employer.dat", "rb");
if (fp == NULL) {
printf("无法打开文件!\n");
exit(1);
}
for (i = 0; i < 4; i++) {
fread(&emp, sizeof(struct employee), 1, fp);
emps[i] = emp;
}
fclose(fp);
for (i = 0; i < 3; i++) {
for (j = i + 1; j < 4; j++) {
if (emps[i].empno < emps[j].empno) {
emp = emps[i];
emps[i] = emps[j];
emps[j] = emp;
}
}
}
for (i = 0; i < 4; i++) {
printf("员工号:%d,姓名:%s,性别:%c\n", emps[i].empno, emps[i].name, emps[i].gender);
}
return 0;
}
```
该代码中,我们定义了一个 `struct employee` 结构体来表示员工,然后通过循环输入 4 个员工的信息,并将这些员工数据保存到文件 `employer.dat` 中。在保存数据时,我们使用了 `fwrite()` 函数将每个员工的雇员号、姓名和性别写入文件中。
接着,我们打开文件 `employer.dat`,使用 `fread()` 函数读取每个员工的数据,并将它们存储到数组 `emps` 中。最后,我们使用冒泡排序法按照员工号从大到小排序,并在屏幕上输出排序后的员工数据。
阅读全文