存包练习
要求:根据提示存取包裹,并可随时退回主菜单。
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 #define N 28 5 void menu(); 6 void insert(); 7 void del(); 8 void password(int id); 9 int box[N]={0},sum=0; 10 int main() 11 { 12 int x; 13 while(1) 14 { 15 menu(); 16 scanf("%d",&x); 17 fflush(stdin);//清理内存 18 switch(x) 19 { 20 case 1:insert();break; 21 case 2:del();break; 22 case 0:exit(0); 23 } 24 } 25 return 0; 26 } 27 void del() 28 { 29 int id,pa; 30 while(1) 31 { 32 printf("取箱号:"); 33 scanf("%d",&id); 34 fflush(stdin); 35 if(id==0) return; 36 if(box[id-1]==0) printf("箱子为空,重找!\n"); 37 else break; 38 } 39 while(1) 40 { 41 printf("您的密码:"); 42 scanf("%d",&pa); 43 fflush(stdin); 44 if(pa==0) return; 45 if(pa!=box[id-1]) printf("密码错误,重输,必要时联系管理员!\n"); 46 else break; 47 } 48 box[id-1]=0; 49 sum--; 50 } 51 void insert() 52 { 53 int id; 54 srand((unsigned)time(NULL)); 55 while(1) 56 { 57 printf("箱号:"); 58 scanf("%d",&id); 59 fflush(stdin); 60 if(id==0) return; 61 //查找id是否已存在 62 if(box[id-1]!=0) printf("该箱已满,重选!\n"); 63 else break; 64 } 65 sum++; 66 do 67 { 68 box[id-1]=rand(); 69 }while(box[id-1]<10000);//得到5位密码 70 password(id); 71 printf("密码:%d\n",box[id-1]); 72 system("pause"); 73 } 74 void password(int id) 75 { 76 FILE *fp; 77 //取当前系统时间 78 time_t t=time(NULL); 79 char *time=ctime(&t); 80 fp=fopen("password.txt","a"); 81 fprintf(fp,"id=%d,password=%d,time=%s",id,box[id-1],time); 82 fclose(fp); 83 } 84 void menu() 85 { 86 system("cls"); 87 int i,j,count=0; 88 printf("\t\t\t┌──────────────┐\n"); 89 printf("\t\t\t│ 超市存=★=包系统 │\n"); 90 printf("\t\t\t├──────────────┤\n"); 91 for(j=0;j<N/7;j++) 92 { 93 //箱子 94 printf("\t\t\t│"); 95 for(i=j*7;i<j*7+7;i++) 96 { 97 if(box[i]==0) printf(" □ "); 98 else printf(" ■ "); 99 } 100 printf("│\n"); 101 //箱号 102 printf("\t\t\t│"); 103 for(i=j*7;i<j*7+7;i++) 104 { 105 printf(" %2d ",i+1); 106 } 107 printf("│\n"); 108 } 109 printf("\t\t\t├──────────────┤\n"); 110 printf("\t\t\t│【1】存包【2】取包【0】退出 │\n"); 111 printf("\t\t\t│ 请按照相应提示操作 │\n"); 112 printf("\t\t\t│ 并记住密码 │\n"); 113 printf("\t\t\t│ 忘记密码与管理员联系 │\n"); 114 printf("\t\t\t└──────────────┘\n"); 115 printf(" 已经存包:%d\n",sum); 116 printf(" 剩余数:%d\n",28-sum); 117 printf("按相应数字键,回车确认:"); 118 }