职工信息管理系统

题目如下图(本人严格按照要求+人性化)

职工信息管理系统_第1张图片
话不多说.

我多次用到了pause指令(人性化)

还有cls(清屏功能)(clean screen)

声明部分,define的灵活运用能很好解放双手

注意第二个define中是n!

#include//职工信息管理系统
#include
#include
#define FORMAT "%-11d %-7s %-3s %-3d %-5s %-.2f %s %ld\n"
//职工号 姓名 性别 年龄 学历 工资 住址 电话
#define STF stf[n].num,stf[n].name,stf[n].sex,stf[n].age,stf[n].qua,stf[n].sal,stf[n].ads,stf[n].phone
#define LEN sizeof(struct staff)
struct staff{
     
	int num;
	char name[9];
	char sex[3];
	int age;
	char qua[7];//qualification学历
	float sal;//salary
	char ads[99];//address
	long phone;
}stf[12];
void menu();//菜单
void in();//输入
void browse();//浏览
void search();//查询
void _delete();//删除
void modify();//修改

主函数和菜单(没啥亮点)↓

void main()
{
     
	int select;
	while(1)
	{
     
		menu();
		scanf("%d",&select);
		switch(select)
		{
     
		case 1:in();break;
		case 2:browse();break;
		case 3:search();break;
		case 4:_delete();break;
		case 5:modify();break;
		case 0:exit(0);
		}
	}
}
void menu()
{
     
	system("cls");
	puts("\t职工信息管理系统");
	puts("\n");
	puts("\t1.信息录入");
	puts("\t2.信息浏览");
	puts("\t3.信息查询");
	puts("\t4.信息删除");
	puts("\t5.信息修改");
	puts("\t0.退出");
}

对文件操作注意及时关闭文件(有时候会有影响)

ps:&(取址符)别漏了 || 不用时用了

void in()//输入
{
     
	FILE*fp;
	int n=0,i;
	if((fp=fopen("A.txt","a+"))==NULL)
	{
     
		puts("error");fclose(fp);return;
	}
	while(!feof(fp))
	{
     
		if(fread(&stf[n],LEN,1,fp)!=0)
			n++;
	}
	fclose(fp);
	system("cls");
	puts("请输入职工信息:");
	puts("职工号");
	scanf("%d",&stf[n].num);
	for(i=0;i<n;i++)
	{
     
		if(stf[n].num==stf[i].num && n!=i)
		{
     
			puts("该职工号已存在!");
			system("pause");return;
		}
	}
	puts("姓名");
	scanf("%s",stf[n].name);
	puts("性别");
	scanf("%s",stf[n].sex);
	puts("年龄");
	scanf("%d",&stf[n].age);
	puts("学历");
	scanf("%s",stf[n].qua);
	puts("工资");
	scanf("%f",&stf[n].sal);
	puts("住址");
	scanf("%s",stf[n].ads);
	puts("电话");
	scanf("%ld",&stf[n].phone);
	if((fp=fopen("A.txt","a+"))==NULL)
	{
     
		puts("error");fclose(fp);return;
	}
	fwrite(&stf[n],LEN,1,fp);
	fclose(fp);
	return;
}

这里最后一个for循环一定用n(因为声明部分,当然你都改了也行)

void browse()//浏览
{
     
	FILE*fp;
	int i=0,n;
	if((fp=fopen("A.txt","r"))==NULL)
	{
     
		printf("error");fclose(fp);return;
	}
	while(!feof(fp))
	{
     
		if(fread(&stf[i],LEN,1,fp)!=0)
			i++;
	}
	system("cls");
	printf("当前有%d条职工信息\n",i);
	fclose(fp);
	puts("职工号 姓名 性别 年龄 学历 工资 住址 电话");
	for(n=0;n<i;n++)
		printf(FORMAT,STF);
	system("pause");
}

这里atoi()函数将字符串化数字(可能很多人不知道,说明一下)

void search()
{
     
	int i=0,n;
	char sc[99];
	FILE*fp;
	if((fp=fopen("A.txt","a+"))==NULL)
	{
     
		printf("error");fclose(fp);return;
	}
	while(!feof(fp))
	{
     
		if(fread(&stf[i],LEN,1,fp)!=0)
			i++;
	}
	fclose(fp);
	puts("请输入查找职工号或姓名:");
	scanf("%s",sc);
	for(n=0;n<i;n++)
		if(stf[n].num==atoi(sc) || strcmp(sc,stf[n].name)==0)
		{
     
			printf(FORMAT,STF);
			system("pause");return;
		}
		else
			puts("error");
		system("pause");
}

该说的都说了

void _delete()
{
     
	FILE*fp;
	int i=0,n;
	char dl[99];
	if((fp=fopen("A.txt","a+"))==NULL)
	{
     
		printf("error");fclose(fp);return;
	}
	while(!feof(fp))
	{
     
		if(fread(&stf[i],LEN,1,fp)!=0)
			i++;
	}
	puts("请输入删除职工号或姓名:");
	scanf("%s",dl);
	for(n=0;n<i;n++)
	{
     
		if(stf[n].num==atoi(dl) || strcmp(dl,stf[n].name)==0)
		{
     
			int t=n;
			for(;t<i-1;t++)
				stf[t]=stf[t+1];
			i--;
			puts("删除成功!");
			break;
		}
		printf("删除失败!\n");
	}
	fclose(fp);
	fp=fopen("A.txt","w");
	for(n=0;n<i;n++)
		fwrite(&stf[n],LEN,1,fp);
	fclose(fp);
	system("pause");
}
void modify()//修改
{
     
	FILE*fp;
	int zgh,i=0,j;
	system("cls");
	if((fp=fopen("A.txt","r"))==NULL)
	{
     
		printf("error");fclose(fp);return;
	}
	while(!feof(fp))
	{
     
		if(fread(&stf[i],LEN,1,fp)!=0)
			i++;
	}
	fclose(fp);
	puts("请输入您要修改的职工号:");
	scanf("%d",&zgh);
	for(j=0;j<i;j++)
	{
     
		if(zgh==stf[j].num)
		{
     
			getchar();
			while(1)
			{
     
				char t[99];
				puts("请输入你要修改的内容:");
				puts("职工号 姓名 性别 年龄 学历 工资 住址 电话");
				scanf("%s",t);
				if(strcmp(t,"职工号")==0)
				{
     	scanf("%d",&stf[j].num);break;}
				if(strcmp(t,"姓名")==0)
				{
     	scanf("%s",stf[j].name);break;}
				if(strcmp(t,"性别")==0)
				{
     	scanf("%s",stf[j].sex);break;}
				if(strcmp(t,"年龄")==0)
				{
     	scanf("%d",&stf[j].age);break;}
				if(strcmp(t,"学历")==0)
				{
     	scanf("%s",stf[j].qua);break;}
				if(strcmp(t,"工资")==0)
				{
     	scanf("%f",&stf[j].sal);break;}
				if(strcmp(t,"住址")==0)
				{
     	scanf("%s",stf[j].ads);break;}
				if(strcmp(t,"电话")==0)
				{
     	scanf("%ld",&stf[j].phone);break;}
			}
		}
		else
		{
     
			puts("error");
			system("pause");return;
		}
	}
	puts("ok!");
	fp=fopen("A.txt","w");
	for(j=0;j<i;j++)
		fwrite(&stf[j],LEN,1,fp);
	fclose(fp);
	system("pause");
}

全部代码就是上面这些了(自上而下copy就行了)

你可能感兴趣的:(C语言,c语言)