声明部分,define的灵活运用能很好解放双手
#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;
}
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就行了)