📄 shebeiguanli.c
字号:
case 4 : scanf("%s",repairmen); strcpy(infor[j-1].repairmen,repairmen);break;
case 5 : scanf("%s",lab); strcpy(infor[j-1].lab,lab); break;
case 6 : scanf("%s",discount); strcpy(infor[j-1].discount,discount); break;
case 7 : scanf("%s",factory); strcpy(infor[j-1].factory,factory); break;
}
for(i=0;i<n;i++)
fwrite(&infor[i],sizeof(struct eq_infor),1,fp);
fclose(fp);
printf("您还要继续吗(Y/N)?");getchar();c=getchar();
if(c=='N'||c=='n') flag=0;
}
jiemian(); //回到界面
}
void print_infor(int m) //打印用户提定的设备信息
{
printf("*****@@@@@ 设 备 信 息 @@@@@*****\n\n");
printf("----编号: %ld\n",infor[m].num);
printf("----名称: %s\n",infor[m].name);
printf("----类别: %s\n",infor[m].sort);
printf("----购买日期: %s\n",infor[m].date);
printf("----维护人: %s\n",infor[m].repairmen);
printf("----实验室: %s\n",infor[m].lab);
printf("----折旧率: %s\n",infor[m].discount);
printf("----生产商: %s\n",infor[m].factory);
printf("----故障维护电话: %s\n",infor[m].tel);
printf("----破损耙费: %s\n",infor[m].posun);
printf("----遗损处理: %s\n",infor[m].yisun);
printf("*****@@@@@ 设 备 信 息 @@@@@*****\n\n");
}
void search() //查询函数
{
int i,m,j,n=0;
FILE*fp;
long num;
char name[20], sort[20], date[20], repairmen[20];
char factory[20], tel[20], lab[20];
printf("----请您选择查询的方法:\n\n"); //按关键字的查询方法
printf("----1设备编号 ----2设备名称\n\n");
printf("----3设备类别 ----4设备购买日期\n\n");
printf("----5设备维护人 ----6设备所在实验室\n\n");
printf("----7设备生产厂商 ----8设备故障维护电话\n\n");
scanf("%d",&j); //选择查询方法
if(j<=0||j>8)
{
printf("您的输入有误,请重新选择查询方法!\n\n");
scanf("%d",&j);
}
switch(j)
{
case 1: //按设备编号查询
if((fp=fopen("eq_infor.txt","rb"))==NULL) //打开存放设备信息的文件
{
printf("----不能打开文件!\n\n");
return;
}
printf("----请输入您要查询的设备编号:\n\n");
scanf("%ld",&num);
for(i=0;!feof(fp);i++)
{
fread(&infor[i],sizeof(struct eq_infor),1,fp);//读文件
if(num==infor[i].num) //对比编号
{
n++;
m=i;
print_infor(m); //打印查询到的信息
printf("\n----查询完毕,按任意键返回!\n\n");
getch();
system("cls");jiemian(); //回到界面系统
}
}
if(n=0) //查不到指定的编号
printf("----您输入的内容有误,请核对后重新输入!\n\n");
break;
case 2: //按设备名称查询
if((fp=fopen("eq_infor.txt","r"))==NULL)
{
printf("----不能打开文件!\n\n");
return;
}
printf("----请输入您要查询的设备名称:\n\n");
scanf("%s",name); //对比名称
for(i=0;i<100;i++)
{
fread(&infor[i],sizeof(struct eq_infor),1,fp);
if(strcmp(name,infor[i].name)==0)
{
n++; //查询到后,n+1
m=i;
print_infor(m); //打印查询到的信息
printf("\n----查询完毕,按任意键返回!\n\n");
getch();
system("cls");jiemian(); //查询完毕,回到界面
}
}
if(n=0) //查询不到指定的设备名称
printf("----您输入的内容有误,请核对后重新输入!\n\n");
break;
case 3: //按设备类别查询
if((fp=fopen("eq_infor.txt","r"))==NULL)
{
printf("----不能打开文件!\n\n");
return;
}
printf("----请输入您要查询的设备类别 :\n\n");
scanf("%s",sort);
for(i=0;i<100;i++)
{
fread(&infor[i],sizeof(struct eq_infor),1,fp);
if(strcmp(sort,infor[i].sort)==0) //对比类别
{
n++; //查询到后,n+1
m=i;
print_infor(m); //打印查询到的信息
printf("\n----查询完毕,按任意键返回!\n\n");
getch();
system("cls");jiemian();
}
}
if(n=0) //查询不到指定的设备类型
printf("----您输入的内容有误,请核对后重新输入!\n\n");
break;
case 4:
if((fp=fopen("eq_infor.txt","r"))==NULL) //按购买日期查询
{
printf("----不能打开文件!\n\n");
return;
}
printf("----请输入您要查询的设备购买日期:\n\n");
scanf("%s",date);
for(i=0;i<100;i++)
{
fread(&infor[i],sizeof(struct eq_infor),1,fp);
if(strcmp(date,infor[i].date)==0)
{
n++;
m=i;
print_infor(m);
printf("\n----查询完毕,按任意键返回!\n\n");
getch();
system("cls");jiemian();
}
}
if(n=0)
printf("----您输入的内容有误,请核对后重新输入!\n\n");
break;
case 5:
if((fp=fopen("eq_infor.txt","r"))==NULL) //按设备维护人查询
{
printf("----不能打开文件!\n\n");
return;
}
printf("----请输入您要查询的设备维护人 :\n\n");
scanf("%s",repairmen);
for(i=0;i<100;i++)
{
fread(&infor[i],sizeof(struct eq_infor),1,fp);
if(strcmp(repairmen,infor[i].repairmen)==0)
{
n++;
m=i;
print_infor(m);
printf("\n----查询完毕,按任意键返回!\n\n");
getch();
system("cls");jiemian();
}
}
if(n=0)
printf("----您输入的内容有误,请核对后重新输入!\n\n");
break;
case 6: //按设备所在实验室查询
if((fp=fopen("eq_infor.txt","r"))==NULL)
{
printf("----不能打开文件!\n\n");
return;
}
printf("----请输入您要查询的设备所在实验室:\n\n");
scanf("%s",lab);
for(i=0;i<100;i++)
{
fread(&infor[i],sizeof(struct eq_infor),1,fp);
if(strcmp(lab,infor[i].lab)==0)
{
n++;
m=i;
print_infor(m);
printf("\n----查询完毕,按任意键返回!\n\n");
getch();
system("cls");jiemian();
}
}
if(n=0)
printf("----您输入的内容有误,请核对后重新输入!\n\n");
break;
case 7: //按设备生产厂商查询
if((fp=fopen("eq_infor.txt","r"))==NULL)
{
printf("----不能打开文件!\n\n");
return;
}
printf("----请输入您要查询的设备生产厂商 :\n\n");
scanf("%s",factory);
for(i=0;i<100;i++)
{
fread(&infor[i],sizeof(struct eq_infor),1,fp);
if(strcmp(factory,infor[i].factory)==0)
{
n++;
m=i;
print_infor(m);
printf("\n----查询完毕,按任意键返回!\n\n");
getch();
system("cls");jiemian();
}
}
if(n=0)
printf("----您输入的内容有误,请核对后重新输入!\n\n");
break;
case 8: //按设备故障维护电话查询
if((fp=fopen("eq_infor.txt","r"))==NULL)
{
printf("----不能打开文件!\n\n");
return;
}
printf("----请输入您要查询的设备故障维护电话:\n\n");
scanf("%s",tel);
for(i=0;i<100;i++)
{
fread(&infor[i],sizeof(struct eq_infor),1,fp);
if(strcmp(tel,infor[i].tel)==0)
{
n++;
m=i;
print_infor(m);
printf("\n----查询完毕,按任意键返回!\n\n");
getch();
system("cls");jiemian();
}
}
if(n=0)
printf("----您输入的内容有误,请核对后重新输入!\n\n");
break;
}
}
void print_all() //打印所有设备的信息
{
FILE*fp; //定义指针
int i,j;
if((fp=fopen("eq_infor.txt","rb"))==NULL) //文件为空,不能打开
{
printf("不能打开文件!\n");
return;
}
for(i=0;fread(&infor[i],sizeof(struct eq_infor),1,fp)!=0;i++)
{
fseek(fp,i*sizeof(struct eq_infor),0);
fread(&infor[i],sizeof(struct eq_infor),1,fp); //读存放设备信息的文件
printf("*****@@@@@ 设 备 信 息 @@@@@*****\n\n\n");
printf("----编号: %ld\n",infor[i].num);
printf("----名称: %s\n",infor[i].name);
printf("----类别: %s\n",infor[i].sort);
printf("----购买日期: %s\n",infor[i].date);
printf("----维护人: %s\n",infor[i].repairmen);
printf("----实验室: %s\n",infor[i].lab);
printf("----折旧率: %s\n",infor[i].discount);
printf("----生产商: %s\n",infor[i].factory);
printf("----故障维护电话: %s\n",infor[i].tel);
printf("----破损耙费: %s\n",infor[i].posun);
printf("----遗损处理: %s\n",infor[i].yisun);
printf("*****@@@@@ 设 备 信 息 @@@@@*****\n\n\n");
}
printf("\n请选择需要服务的序号: 1:查询 2:返回管理页面\n");
scanf("%d",&j); //打印后,提供修改和查询信息
getchar();
while(j>2)
{
printf("\n你输入有误 请重新输入:");
scanf("%d",&j);
getchar();
}
switch(j)
{
case 1: system("cls");search();break; //查询信息
case 2: system("cls");jiemian();break; //回到界面
}
fclose(fp); //关闭文件
}
void tongji() //分类统计设备的信息
{
FILE * fp;
char k1[3]="A"; //假设存在A,B,C,D,E,F六种类型
char k2[3]="B";
char k3[3]="C";
char k4[3]="D";
char k5[3]="E";
char k6[3]="F";
int a, b, c, d,e,f,i; //a,b,c,d,e,f分别为A,B,C,D,E,F六种类型的数量
a=0; b=0; c=0; //它们的初值为0
d=0; e=0;f=0;
if((fp=fopen("eq_infor.txt","rn"))==NULL) //文件为空,不能打开
{
printf("不能打开文件\n");
return;
}
for(i=0;!feof(fp);i++)
{
fread(&infor[i],sizeof(struct eq_infor),1,fp);
if(strcmp(infor[i].sort,k1)==0) a=a+1;
if(strcmp(infor[i].sort,k2)==0) b=b+1;
if(strcmp(infor[i].sort,k3)==0) c=c+1;
if(strcmp(infor[i].sort,k4)==0) d=d+1;
if(strcmp(infor[i].sort,k5)==0) e=e+1;
if(strcmp(infor[i].sort,k6)==0) f=f+1;
}
printf("\n其中A类设备有%d\n",a); //输出各类型的数量
printf("其中B类设备有%d\n",b);
printf("其中C类设备有%d\n",c);
printf("其中D类设备有%d\n",d);
printf("其中E类设备有%d\n",e);
printf("其中F类设备有%d\n\n\n",f);
fclose(fp); //关闭文件
printf("输出分类信息完毕,任意键返回\n");
getch();
system("cls");
jiemian(); //回到界面
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -