应用背景:某公司的员工信息保存在data.txt文件中,可以随时根据关键信息查询,一段时间后需要对已离职的员工进行统计,将离职员工的信息归档。
程序功能:程序读取data.txt文件中所有信息,根据指定信息查找员工,按员工编号顺序输出所有相关纪录;将已离职的员工信息保存在achieve.txt文件中。
(1) 设计 readfile 函数(说明如下),函数从文件名为filename字符串的文件中读取所有员工信息,保存到staff结构体数组中,返回员工的人数。
函数声明:int readfile(char *filename, Staff staff[]);
参数说明:filename为文件名,staff[]为员工信息结构体数组。
返回值:函数返回读入的员工人数,文件打开失败时返回-1。
(2) 设计 search 函数(说明如下),查找构体数组a中岗位编号为B的员工,统计人数显示在屏幕上,然后按员工编号升序排序输出在屏幕上。
函数声明:void search(Staff a[], int n);
参数说明:a[]为员工信息结构体数组, n为结构体数组a[]的元素个数。
(3) 设计 achieve 函数 (说明如下),将数组a中离职的员工信息添加到achieve.txt文件中,并在屏幕上显示离职员工人数。
函数声明:int achieve(Staff a[], int n);
参数说明:a[]为员工信息结构体数组,n为结构体数组a[]的元素个数。
返回值:函数返回离职的员工人数,文件写入失败时返回-2。
(4) 修改main()函数,通过调用函数方式,实现程序功能。
提供的源程序部分代码:
#define MAX_Staff_NUM 1000 //最大员工人数
struct stStaff
{
char id[5]; //员工编号
char gender; //性别
char role; //岗位编号
char dim; //是否离职,y表示已经离职,
};
typedef struct stStaff Staff;
int main(void)
{
int n; //员工数量
char filename[] = "data.txt"; //保存员工信息的文件名字符串
Staff staff[MAX_Staff_NUM]; //员工列表结构体数组
n =readfile(filename, staff);
search(staff, n);
printf("离职员工人数为:%d\n", achieve(staff, n));
return 0;