You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
liqiuping/机房机位预定系统.cpp

263 lines
5.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 20
#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,1,1,1,1,0},
{1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1}};
void Menu();
void Situation();
void Book();
void Cancel ();
void SearchWaiting ();
void Exit();
void detail(int time);
void printf_one(int i);
struct waitlist
{
char number[3];
char telephonenumber[11];
}wait[N];
int main()
{
Menu();
}
void Menu()
{
char a;
system ("cls");
system ("color f4");
printf ("\n\n\n\n\n\n\n");
printf ("\t\t\t 【机房机位预定系统】\n");
printf ("================================================================================\n");
printf ("\t\t\t\t**************\n");
printf ("\t\t\t\t*1.查询某时间段机位状态*\n");
printf ("\t\t\t\t*2.预定空机位*\n");
printf ("\t\t\t\t*3.取消预定*\n");
printf ("\t\t\t\t*4.查询等待结果*\n");
printf ("\t\t\t\t*5.退出*\n");
printf ("\t\t\t\t**************\n");
printf ("================================================================================\n");
printf("选择菜单号1-5[ ]\b\b");
scanf ("%d",&a);
system("cls");
switch (a)
{
case 5: break;
case 1:
{
Situation();
break;
}
case 2:
{
Book ();
break;
}
case 3:
{
Cancel ();
break;
}
case 4:
{
SearchWaiting ();
break;
}
}
getchar();
}
void Situation()
{
int time,k;
printf("输出8-20范围内的时间");
scanf("%d",&time);
if(time<8||time>20)
{
printf("\t时间输入错误!\n");
printf("输入在8-20)范围内的时间:");
scanf("%d",&time);
}
detail(time);
getchar();
printf ("按任意数字键再点击回车键返回主菜单");
scanf ("%s",&k);
Menu();
}
void Book()
{
int time,i=0,x,y,k;
FILE *fp;
char c;
printf("8-20时间范围内输入你想要的时间");
scanf("%d",&time);
if(time<8||time>20)
{
printf("\t时间输入错误!\n");
printf("输入在8-20)范围内的时间:");
scanf("%d",&time);
}
detail(time);
if(sum[T]>0)
{
if((fp=fopen("waitlist.txt","a"))==NULL)
{
printf("\n无法打开文件!\n");
exit(0);
}
printf("\n\t请输入你想要预定的机号,并且留下你的手机号码!:\n");
scanf("%s %s",wait[i].number,wait[i].telephonenumber);
fclose(fp);
for(i=0;i<i;i++)
fwrite(&wait[i],sizeof(struct waitlist),1,fp);
printf("\t请输入你想要的预定的机位!\n");
scanf("%d",&x);
sum[T]--;
computer[T][x]=1;
printf("\t预定成功!\n");
getchar();
printf ("按任意数字键再点击回车键返回主菜单");
scanf ("%s",&k);
Menu();
}
else
{
printf("这是在这个时间段内未预定的电脑!\n");
for(i=T+1;i<6;i++)
{
time=9+2*i;
detail(time);
if(sum[T]>0)
printf("\tThe latest free time is %d,%d\n",2*i+8,2*i+10);
break;
}
printf("\t 你想要预定吗?:y/n");
scanf("%s",&c);
getchar();
if(c=='Y'||c=='y')
{
if((fp=fopen("waitlist.txt","r"))==NULL)
{
printf("\n 无法打开文件!\n");
exit(0);
}
else
{
printf("waitlist: number telephonenumber\n");
for(i=0;!feof(fp);i++)
{
fscanf(fp,"%s %s",&wait[i].number,&wait[i].telephonenumber);
}
fclose(fp);
}
for(i=0;i<10;i++)
{
printf_one(i);
}
printf("\n\t 请输入你想要预定的机号,并且留下你的电话号码!:\n");
if((fp=fopen("waitlist.txt","a"))==NULL)
{
printf("\n 无法打开文件!\n");
exit(0);
}
scanf("%s %s",wait[i].number,wait[i].telephonenumber);
for(i=0;i<1;i++)
fwrite(&wait[i],sizeof(struct waitlist),1,fp);
fclose(fp);
printf("请再次输入电脑的序号!\n");
scanf("%d",&y);
sum[T]--;
computer[T][y]=1;
printf("\t 好了,请等待我们的电话!\n");
Menu();
}
else Menu();
}
}
void Cancel()
{
int time,number,k;
printf("8-20时间范围内输入你已经预定的时间");
scanf("%d",&time);
if(time<8||time>20)
{
printf("\t 输入时间错误!\n");
printf("8-20时间范围内输入你已经预定的时间");
scanf("%d",&time);
}
else
{
printf("\t 输入你预定的机号 ");
scanf("%d",&number);
}
detail(time);
sum[T]++;
computer[T][number]=0;
printf("\t取消成功!\n");
getchar();
printf ("按任意数字键再点击回车键返回主菜单");
scanf ("%s",&k);
Menu();
}
void SearchWaiting()
{
int time,i,k;
FILE *fp;
printf("\tlnput time you want to search between(8-20):");
scanf("%d",&time);
if(time<8||time>20)
{
printf("\tWrong time!\n");
printf("\tlnput time you want to search between(8-20):");
scanf("%d",&time);
}
else
if((fp=fopen("waitlist.txt","r"))==NULL)
{
printf("\nCannot open file!\n");
exit(0);
}
else
{
printf("waitlist: number telephonenumber\n");
for(i=0;feof(fp);i++)
{
fscanf(fp,"%s %s",&wait[i].number,&wait[i].telephonenumber);
}
fclose(fp);
}
for(i=0;i<10;i++)
{
printf_one(i);
}
printf ("按任意数字键再点击回车键返回主菜单");
scanf ("%s",&k);
Menu();
}
void detail(int time)
{
int i,j=0,k,s=0;
int v[30];
for(i=0;i<20;i++)
{
if(computer[T][i]==0)
{
s++;
v[j++]=i;
}
}
sum[T]=s;
printf("\t空置的电脑有:%d台\n",sum[T]);
for(k=0;k<j;k++)
printf("\t空置的电脑是:%d\n",v[k]);
}
void printf_one(int i)
{
printf("\t\t%s %s \n",wait[i].number,wait[i].telephonenumber);
}