C语言员工信息管理系统:结构体、文件读写及链表应用
C语言员工信息管理系统
这段代码是一个简单的员工信息管理系统,使用结构体、文件读写和链表来实现对员工信息的管理。代码主要包含以下几个函数:
函数解析
read()函数用于从文件中读取员工信息并存储到结构体数组中。首先打开名为“职工信息.txt”的文件,文件中第一行是员工数量,接下来每一行是一个员工的信息。通过循环逐行读取文件内容,并使用fscanf()函数将信息存储到结构体数组em中。write()函数用于将员工信息写入文件。首先打开名为“职工信息录入.txt”的文件,文件中第一行是员工数量,接下来每一行是一个员工的信息。通过循环逐行将结构体数组em中的信息写入文件中。
代码示例
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
struct employee{
char number[10]; //编号
char name[10]; //姓名
char sex[10]; //性别
char birthday[10]; //出生年月
char date[10]; //入职年月
char degree[10]; //学历
char position[10]; //职位
char add[10]; //地址
char tel[20]; //电话
struct employee *next;
}em[100], *head;
int n; //全局变量
void read()
{
FILE *fp;
int i;
if ((fp = fopen("职工信息.txt", "r")) == NULL)
{
printf("打开文件失败!请创建一个文本文件,文件名叫职工信息\n\n\n");
system("pause"); // 冻结屏幕
system("cls"); // 清屏
exit(0);
}
fscanf(fp, "%d\n", &n);
for (i = 0; i < n; i++)
{
fscanf(fp, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n", em[i].number, em[i].name, em[i].sex,
em[i].birthday, em[i].date, em[i].degree, em[i].position, em[i].add, em[i].tel);
}
head = &em[0];
fclose(fp);
}
void write()
{
FILE *fp;
int i = 0;
if ((fp = fopen("职工信息录入.txt", "w+")) == NULL)
{
printf("!!!打开文件失败!!!\n");
return;
}
fprintf(fp,"%d\n",n);
while(i < n)
{
fprintf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",em[i].number, em[i].name, em[i].sex,
em[i].birthday, em[i].date, em[i].degree, em[i].position, em[i].add, em[i].tel);
i++;
}
fclose(fp);
}
代码解读
结构体 employee 定义了员工的各个属性,包括编号、姓名、性别、出生年月、入职年月、学历、职位、地址和电话。这里使用了指针 next 来连接不同员工的信息,实现链表结构。
全局变量 n 表示员工数量。
整个代码的主要逻辑是先从文件中读取员工信息,然后进行相应的操作(如添加、删除、修改、查询等),最后将修改后的员工信息写回文件中。
该代码仅是一个简单的示例,可以根据实际需求进行扩展,例如添加更多员工信息属性,实现更丰富的功能,如添加员工信息、删除员工信息、修改员工信息、查询员工信息等。
原文地址: https://www.cveoy.top/t/topic/ptU3 著作权归作者所有。请勿转载和采集!