#include"stdio.h"
#include"string.h"
#define null 0
int t=0;
int menu();//菜单 
void lr();//录入信息 
void xg();//修改 
void cx();//查询 
void cx_sbh();//设备号查询 
void cx_mc();//设备名称查询 
void tj();//统计 
void bf();//报废信息 
void bf_dj();//报废登记 
void bf_tj();//报废统计 
typedef struct shebei
{
  char id[10];           
  char name[15];         
  char kind[15];            
  char over[15];            
  int  yesno;       
  char time[10];            
  char price[10];           
}shebei;
shebei sb[200];

void lr()//录入信息 
{
	while(1)
	{
      printf(">>>>>>>>>>提示:输入0则返回主菜单!\n");
      printf("\n请你输入设备ID号:");      
      scanf("%s",sb[t].id);                
      if(strcmp(sb[t].id,"0")==0) main();                     
      printf("\n请输入设备名称:");
      scanf("%s",sb[t].name);          
      printf("\n请输入设备种类:");
      scanf("%s",sb[t].kind);
      printf("\n请输入报废日期:");
      scanf("%s",sb[t].over);
      printf("\n请输入设备是否报废,1、没报废,0、报废:");
      scanf("%d",&sb[t].yesno);
      printf("\n请输入设备购买时间:");  
      scanf("%s",sb[t].time);
      printf("\n请输入设备价格:");
      scanf("%s",sb[t].price);
      printf(">>>>>>>>>>提示:已经完成一条记录的添加。\n");
      t++;
	}		
} 
void xg()//修改 
{
    char find[20];
	int x;
    t=0;
    printf("请输入要修改的设备ID号:");   
    scanf("%s",find);   
     while(1)   
     {
         if(strcmp(sb[t].id,find)==0) //如果找到的话返回的是符合要求    
        {
	  	   break;
	    }
	     else t++;
     }    
        while(1)
       {
          printf("确认修改请输入任意数字否则输入0重新输入设备原id:");
          scanf("%d",&x);
          if(x==0)  break;
          else  
		  {		
           printf("请输入新设备号(原来是 %s ):",sb[t].id);
           scanf("%s",sb[t].id);
           printf("请输入新设备名称(原来是 %s ):",sb[t].name);
           scanf("%s",sb[t].name);
           printf("请输入新设备设备种类名称(原来是 %s ):",sb[t].kind);
           scanf("%s",sb[t].kind);  
           printf("请输入新设备报废日期名称(原来是 %s ):",sb[t].over);
           scanf("%s",sb[t].over);  
           printf("请输入新设备是否报废,1、没报废,0、报废(原来是 %d):",sb[t].yesno);
           scanf("%d",&sb[t].yesno); 
           printf("请输入新设备购买时间(原来是 %s ):",sb[t].time);
           scanf("%s",sb[t].time); 
           printf("请输入新设备价格(原来是 %s ):",sb[t].price);
           scanf("%s",sb[t].price); 
           printf("\n>>>>>>>>>>提示:该项记录资料已经成功修改!\n");
           printf("退回主菜单请输入0\n");
           printf("继续操作请输入1\n");
           scanf("%d",&x);
              switch(x)
              {
           	   case 0:void main();break;
           	   case 1:xg();break;
           	   default:printf("输入无效,自动返回主菜单\n");main();break;
              }          
		 }
      }
}
void cx()//查询 
{
	    int choice;
	    do
	    {
         printf("\t\t\t----------------------------------\n");
         printf("\t\t\t*    [1]----按设备号查找         *\n");
         printf("\t\t\t*    [2]----按设备名称查找       *\n");
         printf("\t\t\t*    [0]----退出                 *\n");
         printf("\t\t\t*·*·*·*·*·*·*·*·*·*·*·*|\n");
	     scanf("%d",&choice);
  	        getchar();
          	switch(choice)
  	         {
	  	       case 0:menu();break;
	  	       case 1:cx_sbh();break;
	  	       case 2:cx_mc();break;
	  	       default:printf("输入无效请重新输入\n");cx(); break;
 	         }
	    } 
     	while(choice!=0);	
}
 void cx_sbh()//设备号查询 
{
	int choice;
	char find[20];
	int t=0; 
	
	printf("请输入您要查询的设备号\n");
	scanf ("%s",find);
	getchar();
	do 
	{
		if(strcmp(sb[t].id,find)==0&&sb[t].yesno==1) //1表示设备没报废
		{
		 printf("设备号   设备名称   设备种类   报废日期   是否报废   购买时间   价格\n");
         printf("\n%-13s%-11s%-7s%-10s%-13d%-10s%-5s\n",sb[t].id,sb[t].name,sb[t].kind,sb[t].over,sb[t].yesno,sb[t].time,sb[t].price);
	     t++;
		}
		else 
		t++;
	} 
	  while (t<100);
	  printf("键入数字1返回主菜单\n");
	  printf("键入数字任意键返回上层菜单\n");
  	  scanf("%d",&choice);
	  if (choice==1)
	  main();
	  else   cx();
}
void cx_mc()//设备名称查询 
{
	int choice;
	char ming[20];
	t=0; 
    printf("\n输入你要查询的设备名称:");
    scanf("%s",ming);
    do
     {  
     if(strcmp(sb[t].name,ming)==0&&sb[t].yesno==1) //1表示设备没报废
      {
       printf("设备号   设备名称   设备种类   报废日期   是否报废   购买时间   价格\n");
       printf("\n%-13s%-11s%-7s%-10s%-13d%-10s%-5s\n",sb[t].id,sb[t].name,sb[t].kind,sb[t].over,sb[t].yesno,sb[t].time,sb[t].price);
       t++;
      }
       else 
       t++;
    }
    while (t<100);
	  printf("键入数字1返回主菜单\n");
	  printf("键入数字任意键返回上层菜单\n");
  	  scanf("%d",&choice);
	  if (choice==1)
	  main();
	  else   cx();
}  
void tj()//统计
{
	t=0;
	int choice;
	char tong[20];
	printf("\n输入你要统计的设备种类:");
    scanf("%s",tong);
    do
    {  
      if(strcmp(sb[t].kind,tong)==0&&sb[t].yesno==1)  //1表示设备没报废   
	  {  		
  	   printf("设备号   设备名称   设备种类   报废日期   是否报废   购买时间   价格\n");
       printf("\n%-13s%-11s%-7s%-10s%-13d%-10s%-5s\n",sb[t].id,sb[t].name,sb[t].kind,sb[t].over,sb[t].yesno,sb[t].time,sb[t].price);
       t++;
      }
      else 
      t++;	 
    }
   while (t<100);
	  printf("键入数字1返回主菜单\n");
	  printf("键入数字任意键返回上层菜单\n");
  	  scanf("%d",&choice);
	  if (choice==1)
	  main()  ; 
}
void bf() //报废信息 
{     int choice;
	    do
	    {
         printf("\t\t\t----------------------------------\n");
         printf("\t\t\t*    [1]----登记报废信息         *\n");
         printf("\t\t\t*    [2]----报废设备统计         *\n");
         printf("\t\t\t*    [0]----退出                 *\n");
         printf("\t\t\t*·*·*·*·*·*·*·*·*·*·*·*|\n");
         scanf("%d",&choice);
  	        getchar();
          	switch(choice)
  	         {
	  	       case 0:menu();break;
	  	       case 1:bf_dj();break;
	  	       case 2:bf_tj();break;
	  	       default:printf("输入无效请重新输入\n");bf(); break;
 	         }
	    } 
     	while(choice!=0);	
}	
void bf_dj()//报废登记 
{
  char find[20];
  t=0;
  printf("请输入要登记的设备ID号:");   
  scanf("%s",find);   
     while(1)   
     {
       if(strcmp(sb[t].id,find)==0) //如果找到的话返回的是符合要求    
       {
	  	break;
	   }
	   else t++; 
     }
       int x;
       while(1)
       {
          printf("完成登记请输入0否则输入任意数再进行修改:");
          scanf("%d",&x);
          if(x==0) break;
           {
            printf("请输入新设备是否报废1、没报废,0、报废(原来是 %d ):",sb[t].yesno);
            scanf("%d",&sb[t].yesno); 
            printf("\n>>>>>>>>>>提示:该项记录资料已经成功登记!\n");
            scanf("%d",&x);
            switch(x) 
             {
           	  case 0:main();break;
           	  case 1:bf();break;
           	  default:printf("输入无效,自动返回主菜单\n");main();break;
             }
		   } 
      }
}	
void bf_tj()//报废统计	
{
    int choice;
	char find[20];
	t=0;
	printf("\n输入你要统计的报废设备种类:");
    scanf("%s",find);
    do
    {  
     if(strcmp(sb[t].kind,find)==0&&sb[t].yesno==0)  //0表示设备报废   
	  {  		
  	   printf("设备号   设备名称   设备种类   报废日期   是否报废   购买时间   价格\n");
       printf("\n%-13s%-11s%-7s%-10s%-13d%-10s%-5s\n",sb[t].id,sb[t].name,sb[t].kind,sb[t].over,sb[t].yesno,sb[t].time,sb[t].price);
       t++;
      }
      else 
      t++;	 
    }
   while (t<3);
	  printf("键入数字1返回主菜单\n");
	  printf("键入数字任意键返回上层菜单\n");
  	  scanf("%d",&choice);
	  if (choice==1)
	  main();   
} 	
int menu()
{
        int choice;
        printf("\n\n\n");
        printf("\t\t\t--------------------------------\n");
        printf("\t\t\t+        实验设备管理系统      |\n");  
        printf("\t\t\t--------------------------------\n");               
        printf("\t\t\t+    [1]----录入设备信息       |\n");
        printf("\t\t\t+    [2]----修改设备信息       |\n");
        printf("\t\t\t+    [3]----查询设备信息       |\n");
        printf("\t\t\t+    [4]----统计设备信息       |\n");
        printf("\t\t\t+    [5]----报废设备信息       |\n");
        printf("\t\t\t+    [0]----*-EXIT-*           |\n");
        printf("\t\t\t+*·*·*·*·*·*·*·*·*·*·|\n");
        printf("\t\t\t--------------------------------\n");
		printf("请输入你要操作的序号:");
        scanf("%d", &choice);
        return choice; 
}
void main()
{
     int choice;
     choice=-1;
     choice=menu(choice); 
     do{
       switch (choice)
       {
	    case 0:     printf("\n>>>>>>>>>>提示:已经退出系统,ByeBye!\n");  break;
        case 1:     lr();    break; 
        case 2:     xg();    break;
        case 3:     cx();    break;
        case 4:     tj();    break;
        case 5:     bf();    break;
        default:    printf("\n>>>>>>>>>>提示:输入错误!\n"); break;
       }
     }
     while(choice!=0);  
}