⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shebeiguanli.c

📁 它是大一时用C语言编写的一个设备管理系统。实现的功能从注册新用户
💻 C
📖 第 1 页 / 共 2 页
字号:
           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 + -