#include"stdio.h" #include #include"stdlib.h" #include"string.h" #define T (time-8)/2 int sum[6]={0}; int computer[6][20]={{1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1}, {1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1}, {1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1}}; int menu(); int cx(); int yd(); int qxyd(); int searchwaiting(); int detail(int time); struct waitlist { char shijian[2]; char number[3]; char telephonenumber[11]; }wait[20]; int main() { printf("请输入密码!\n"); char MIMA[11]="123456"; char mima[11]; scanf("%s",mima); if(strcmp(mima,MIMA)==0) {menu();} } int menu() { int n,w; do{ printf("\t\t***************机房机位预定系统***************\n"); printf("\t\t ******************菜单******************\n"); printf("\n\n\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("请输入指令(1-5):"); scanf("%d",&n); if(n<1||n>5) w=1; else w=0; }while(w==1); switch(n) { case 1:cx(); break; case 2:yd(); break; case 3:qxyd();break; case 4:searchwaiting();break; case 5:exit(0);break; } } int cx() { system("cls"); int time; printf("输入时间(8-19):"); scanf("%d",&time); if(time<8||time>20) { printf("\t时间输入错误\n"); printf("输入在(8-19)范围内的时间:"); scanf("%d",&time); } detail(time); menu(); } int yd() { system("cls"); int time,i=0,x,y; FILE *fp; char c; printf("在(8-19)时间内输入你想要的预定时间:"); scanf("%d",&time); if(time<8||time>20) { printf("时间输入错误!\n"); printf("在(8-19)时间内输入你想要的预定时间:"); scanf("%d",&time); } detail(time); if(sum[T]>0) { if((fp=fopen("waitlist.txt","a"))==NULL) { printf("\n无法打开文件!\n"); exit(0); } printf("请输入你想要预定的时间,机号并留下你的电话号码!:"); scanf("%s %s %s",wait[i].shijian,wait[i].number,wait[i].telephonenumber); fprintf(fp,"%s %s %s\n",wait[i].shijian,wait[i].number,wait[i].telephonenumber); fclose(fp); printf("再次输入你想要预定的机号!\n"); scanf("%d",&x); sum[T]--; computer[T][x]=1; printf("\n预定成功\n"); menu(); } else { printf("这是在最近时间段内未预定的电脑!\n"); for(i=T+1;i<6;i++) { time=9+2*i; detail(time); if(sum[T]>0) printf("最近的空闲时间段是%d-%d\n",2*i+8,2*i+10);break; } printf("你想要预定吗?:y/n?:"); scanf("%s",&c); if(c=='Y'||c=='y') { printf("请输入您想预定的时间,机号并留下您的联系方式!:\n"); if((fp=fopen("waitlist.txt","a"))==NULL) { printf("\n无法打开文件!\n"); exit(0); } scanf("%s %s %s",wait[i].shijian,wait[i].number,wait[i].telephonenumber); fwrite(&wait[i],sizeof(struct waitlist),1,fp); fclose(fp); printf("再次输入电脑的序号!\n"); scanf("%d",&y); sum[T]--; computer[T][y]=1; printf("预定成功!\n"); menu(); } else menu(); } } int qxyd() { system("cls"); int time,number; printf("在(8-20)时间内输入你已经预定的时间:"); scanf("%d",&time); if(time<8||time>20) { printf("输入时间错误!\n"); printf("在(8-20)时间范围内输入你已经预定的时间:"); scanf("%d",&time); } printf("输入你预定的时间和机号:"); printf("再次输入预定的机号!"); scanf("%d",&number); sum[T]++; computer[T][number]=0; printf("取消成功!\n"); menu(); } int searchwaiting() { int time,i; FILE *fp; printf("在(8-20)之间输入您想要搜索的时间:"); scanf("%d",&time); if(time<8||time>20) { printf("时间输入错误!\n"); printf("在(8-20)之间输入您要搜索的时间:"); scanf("%d",&time); } else if((fp=fopen("waitlist.txt","r"))==NULL) { printf("\n无法打开文件!\n"); exit(0); } else { printf("waitlist:shijian number telephonenumber\n"); for(i=0;!feof(fp);i++) { fscanf(fp,"%s %s %s",&wait[i].shijian,&wait[i].number,&wait[i].telephonenumber); } fclose(fp); } for(i=0;i<10;i++) { printf("\t %s %s %s\n",wait[i].shijian,wait[i].number,wait[i].telephonenumber); } menu(); } int detail(int time) { int i,s=0,j=0; int v[20]; for( i=0;i<20;i++) { if(computer[T][i]==0) { s=s+1; v[j]=i; j++; } } sum[T]=s; printf("空置的电脑数为%d\n",sum[T]); printf("空置的电脑是:\n"); for( i=0;i