C语言员工管理系统,包括,编号,姓名,性别,出生年月,电话,地址,完成查询,更新,插入,删除
时间: 2024-03-15 16:46:30 浏览: 68
C语言员工管理系统 通过动态链表的创建,插入,删除,更新,查询
好的,我听懂了你的问题。你需要一个C语言员工管理系统,包括编号、姓名、性别、出生年月、电话、地址,并能够完成查询、更新、插入、删除的功能。
首先,你需要定义一个员工结构体来存储每个员工的信息,结构体中应该包括编号、姓名、性别、出生年月、电话、地址等信息。例如:
```
struct employee {
int id; // 员工编号
char name[20]; // 员工姓名
char gender[10]; // 员工性别
char birth[20]; // 员工出生年月
char phone[20]; // 员工电话
char address[50]; // 员工地址
};
```
接下来,你需要实现查询、更新、插入、删除等功能。以下是一个简单的实现示例:
查询功能:
```
void search_employee(int id) {
// 将员工信息从文件中读取出来
struct employee emp;
FILE *fp = fopen("employee.dat", "rb");
while (fread(&emp, sizeof(struct employee), 1, fp) == 1) {
if (emp.id == id) { // 找到了对应的员工
printf("编号:%d\n", emp.id);
printf("姓名:%s\n", emp.name);
printf("性别:%s\n", emp.gender);
printf("出生年月:%s\n", emp.birth);
printf("电话:%s\n", emp.phone);
printf("地址:%s\n", emp.address);
fclose(fp);
return;
}
}
// 没有找到对应的员工
printf("未找到编号为%d的员工\n", id);
fclose(fp);
}
```
更新功能:
```
void update_employee(int id) {
// 将员工信息从文件中读取出来
struct employee emp;
FILE *fp = fopen("employee.dat", "rb+");
while (fread(&emp, sizeof(struct employee), 1, fp) == 1) {
if (emp.id == id) { // 找到了对应的员工
printf("请输入新员工姓名:");
scanf("%s", emp.name);
printf("请输入新员工性别:");
scanf("%s", emp.gender);
printf("请输入新员工出生年月:");
scanf("%s", emp.birth);
printf("请输入新员工电话:");
scanf("%s", emp.phone);
printf("请输入新员工地址:");
scanf("%s", emp.address);
fseek(fp, -sizeof(struct employee), SEEK_CUR); // 将文件指针移回到当前位置
fwrite(&emp, sizeof(struct employee), 1, fp); // 将更新后的员工信息写回文件
printf("更新成功!\n");
fclose(fp);
return;
}
}
// 没有找到对应的员工
printf("未找到编号为%d的员工\n", id);
fclose(fp);
}
```
插入功能:
```
void insert_employee() {
// 输入新员工信息
struct employee emp;
printf("请输入新员工编号:");
scanf("%d", &emp.id);
printf("请输入新员工姓名:");
scanf("%s", emp.name);
printf("请输入新员工性别:");
scanf("%s", emp.gender);
printf("请输入新员工出生年月:");
scanf("%s", emp.birth);
printf("请输入新员工电话:");
scanf("%s", emp.phone);
printf("请输入新员工地址:");
scanf("%s", emp.address);
// 将新员工信息写入文件
FILE *fp = fopen("employee.dat", "ab");
fwrite(&emp, sizeof(struct employee), 1, fp);
fclose(fp);
printf("插入成功!\n");
}
```
删除功能:
```
void delete_employee(int id) {
// 将员工信息从文件中读取出来并删除对应的员工
struct employee emp;
FILE *fp = fopen("employee.dat", "rb");
FILE *temp = fopen("temp.dat", "wb"); // 用于临时存放未删除的员工信息
int found = 0; // 标记是否找到对应的员工
while (fread(&emp, sizeof(struct employee), 1, fp) == 1) {
if (emp.id != id) { // 如果不是要删除的员工,就将其写入临时文件中
fwrite(&emp, sizeof(struct employee), 1, temp);
} else { // 找到了要删除的员工
found = 1;
}
}
fclose(fp);
fclose(temp);
// 将临时文件中的员工信息写回原文件
remove("employee.dat"); // 删除原文件
rename("temp.dat", "employee.dat"); // 将临时文件重命名为原文件名
if (found) {
printf("删除成功!\n");
} else {
printf("未找到编号为%d的员工\n", id);
}
}
```
以上是一个简单的C语言员工管理系统的实现示例,你可以根据自己的需求进行修改和完善。
阅读全文