数据结构 课程设计 员工管理系统(C语言)

1、添加员工模块:输入员工的姓名、年龄、职位、工龄以,通过自己定义的void  add()函数来实现。将录入的信息写入到“data.dat”中。

2、删除员工模块:删除需要删除的员工的所有信息,通过自己定义的void del( )函数来实现。先通过查找找到需要删除的信息,将文件中除要删除的信息之外全部读入内存,删除原文件,将创建一个同名文件。

3、修改模块:可以修改该员工的部分信息,通过自己定义的void change()。根据选择修改具体部分。

4、查询员工信息模块:可以按员工职务来查询员工的相关信息,通过自己定义的void search( )函数来实现。根据名字查询。

5、员工信息排序模块:可以按照规定要求对员工信息排序,通过自己定义的void sort()函数来实现。分为按工龄和按专业降序排列,排序后将写入文件。

6、员工信息输出模块:可以输出所有员工的信息,通过自己定义的void  display()函数实现。

#include
#include
#include
#include
#define len sizeof(worker)
typedef struct
{
	char name[20];//姓名
	char sex;
	int age;//年龄
	int work_age;//工龄
	char duty[20];
	char education[20];
	char address[40];
	char phone[20];
} worker;

static int total;
void add()    //添加
{
	FILE *fp;
	worker b,b1;
	fp=fopen("data.dat","ab+");
	printf(" \n请输入职工姓名:   ");
	scanf("%s",&b.name);
	fflush(stdin);
	printf(" \n请输入职工性别(f或m):    ");
	scanf("%c",&b.sex);
	while((b.sex!='f'&&b.sex!='m')||(b.sex!='m'&&b.sex!='f'))
		{
			fflush(stdin);
			printf(" \n输入有误,请重新输入员工性别(f或m)注意f 或 m :    ");
			scanf("%c",&b.sex);
		}
	printf(" \n请输入职工的年龄:   ");
	scanf("%ld",&b.age);

	printf(" \n请输入职工的工龄:   ");
	scanf("%ld",&b.work_age);
	printf(" \n请输入职工的职务 :   ");
	scanf("%s",b.duty);
	printf(" \n 请输入职工的学历(博士、硕士、本科、大专、高中、初中及以下)  : ");
	scanf("%s",b.education);
	printf(" \n请输入职工的居住地址 :   ");
	scanf("%s",b.address);
	printf(" \n请输入职工的电话:   ");
	scanf("%s",b.phone);
	fseek(fp,0,SEEK_SET);
	while (fread(&b1,len,1,fp))
		{
			if((strcmp(b.name,b1.name)==0)&&(strcmp(b.address,b1.address)==0))
				{
					fclose(fp);
					printf("\n信息库中已有同的信息,无法加入");
					Sleep(2000);
					system("cls");
					return;
				}
		}
	fseek(fp,0,SEEK_END);
	fwrite(&b,len,1,fp);
	fclose(fp);
	printf("\t\t\t 添加成功!\n");
	system("pause");

}
int record()
{
	worker b;
	FILE *fp;
	int i = -1;
	if((fp=fopen("data.dat","rb+"))==NULL)
		{
			printf("文件打开错误");
			exit(0);
		}
	fseek(fp,0,SEEK_SET);
	while(!feof(fp))
		{
			i++;
			fread(&b,len,1,fp);
		}
	return  i;
}
void display()
{
	if(record()==0)
		{
			printf("文件没有信息,去添加吧");
		     system("pause");
		}
	else
		{
			worker sta;
			FILE *fp;
			fp=fopen("data.dat","rb");
			fseek(fp,0,SEEK_SET);
			fread(&sta,len,1,fp);
			printf("姓名    性别  年龄   工龄    学历   职务   地址              电话\n");
			printf("-----------------------------------------------------------------------------\n");
			while(!feof(fp))
				{
					printf("%-10s %-4c %-4ld %-4ld   %-6s %-6s %-20s%-s\n",
					       sta.name,sta.sex,sta.age, sta.work_age,sta.education,sta.duty,
					       sta.address,sta.phone);
					fread(&sta,len,1,fp);
				}
			system("pause");
			fclose(fp);
		}
}
void del()

{
	worker b,b1;
	int flag=0,i=0;   //flag用于判断职工是否存在
	total= record();
	worker temp[total];
	FILE *fp,*fp1;
	char a[20];
	if ((fp=fopen("data.dat","rb+"))==NULL)

		{
			printf("打开文件错误!!!\n");
			Sleep(1000);
			exit(1);
		}
	printf("\n请输入职工名字:");
	scanf("%s",a);
	system("cls");
	fseek(fp,0,SEEK_SET);
	while (fread(&b,len,1,fp))   //遍历文件所有结构体
		{
			if(!strcmp(a,b.name))
				flag=1;           //判断有无此职工
		}

	if(flag==0)   //没有此职工退出函数

		{
			printf("\n\t\t\t没这人");
			Sleep(2000);
			system("cls");
			return;
		}

	fseek(fp,0,SEEK_SET);
	while((!feof(fp))&&(i=0&&temp.work_age>a[j].work_age)
						{
							a[j+1] = a[j];
							j--;
						}
					a[j+1]=temp;
				}

			fseek(fp,0,SEEK_SET);
			for(i=0; i

你可能感兴趣的:(数据结构 课程设计 员工管理系统(C语言))