职工信息管理模块实现(c语言)

功能要求:设计一个职工类Employee。数据成员包括字符串型的name(姓名)、street(街道地址)、city(市)、province(省)、zipcode(邮政编码)。要求用成员函数实现以下功能:
(1)创建职工对象时,初始化职工信息。
(2)设置职工对象信息。
(3)在屏幕上输出职工信息。
(4)在主函数中创建能够容纳100个该类对象的数组,并通过数组元素访问对象的各方法。

#include <stdio.h>
#include <string.h>
#include <conio.h> 
#include <windows.h>
struct Employee
{
	char name[20];
	char street[20];
	char city[20];
	char province[20];
	char zipCode[20];
}employee[105];
int n;//员工总数 
void mainFrame();//主功能界面 
void create();//新建职工对象 
void scan();//浏览所有职工信息 
void update();//修改职工信息 
void get_n();//得到共有多少个员工 
void create()
{
	system("cls");
	FILE *fp=fopen("E:\\职工信息.txt","a");
	printf("请输入职工的 姓名 省 市 街道地址 邮政编码 (必须全部填写并用空格分开)\n");
	scanf("%s %s %s %s %s",employee[n].name,employee[n].province,employee[n].city,employee[n].street,employee[n].zipCode);
	if(employee[n].name==NULL||employee[n].province==NULL||employee[n].city==NULL||employee[n].street==NULL||employee[n].zipCode==NULL)
	{ 
		printf("添加错误!请重新添加\n");
		create();
	}
	else
	{
		if(fwrite(&employee[n],sizeof(struct Employee),1,fp)==1) 
		{
			printf("添加成功!\n");
			n++;
		}
		else
		{
			printf("添加失败!\n");
		}
		fclose(fp);
		printf("是否继续添加?(y或者n)\n");
		char ch=getch();
		if(ch=='y'||ch=='Y')
		create();
		else
		mainFrame();
	}
	
}
//修改职工信息的原理  先在文件中找到这个职工 记录下这个职工的编号
//然后删除这个文件 重新创建一个文件并写入修改后的信息 
void update()
{
	system("cls");
	FILE *fp=fopen("E:\\职工信息.txt","r");
	char name1[20]; 
	int mark=-1;
	printf("请输入你要修改的职工的姓名\n");
	scanf("%s",name1);
	for(int i=0;i<n;i++)
	{
		if(strcmp(employee[i].name,name1)==0)
		mark=i;
	}
	if(mark==-1)
	{
		printf("找不到这个人,请重新输入\n");
		update();
	}
	else
	{
		remove("E:\\职工信息.txt");
		FILE *fp=fopen("E:\\职工信息.txt","w");
		printf("找到了!请输入这个员工的 省 市 街道地址  邮政编码 (必须全部填写并用空格分开)\n");
		scanf("%s %s %s %s",employee[mark].province,employee[mark].city,employee[mark].street,employee[mark].zipCode);
		if(employee[mark].name==NULL||employee[mark].province==NULL||employee[mark].city==NULL||
		employee[mark].street==NULL||employee[mark].zipCode==NULL)
		{ 
			printf("修改错误!请重新修改\n");
			create();
		}
		else
		{
			for(int i=0;i<n;i++)
			fwrite(&employee[i],sizeof(struct Employee),1,fp); 
			fclose(fp);
			printf("是否继续修改?(y或者n)\n");
			char ch=getch();
			if(ch=='y'||ch=='Y')
			update();
			else
			mainFrame();
		}
	}
}
void mainFrame()
{
	int x; 
	system("cls");
	printf("**********************************************\n");
	printf("*         请输入序号执行对应的操作           *\n");
    printf("*        (1)创建职工对象。                 *\n");
	printf("*        (2)设置职工对象信息。             *\n");
	printf("*        (3)在屏幕上输出职工信息。         *\n");
	printf("*        (4)退出程序。                     *\n");
	printf("**********************************************\n");
	scanf("%d",&x);
	if(x==1)
	{
		create();
	} 
	else if(x==2)
	{
		update();
	}
	else if(x==3)
	{
		scan();
	}
	else
	{
		exit(0);
	}
}
void get_n()
{
	FILE *fp=fopen("E:\\职工信息.txt","r");
    for(n=0;;n++)  
    {  
        if(fread(&employee[n],sizeof(struct Employee),1,fp)==1)  
        continue;  
        else  
        break;  
    }  
    fclose(fp);  
}
void scan()
{
	system("cls"); 
	printf("姓名\t省\t市\t街道\t邮政编码\n");
	for(int i=0;i<n;i++)
	printf("%s\t%s\t%s\t%s\t%s\n",employee[i].name,employee[i].province,employee[i].city,employee[i].street,employee[i].zipCode);
	printf("按任意键回到主界面\n"); 
	getch();
	mainFrame(); 
}
int main()
{
	get_n();
	mainFrame();
}


你可能感兴趣的:(管理模块,职工信息)