重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
根据输入时间,输出机位信息
根据输入的日期和时间段查询是否有空机位,若有,则预约;若无,则提供最近空机时间段
另: 若用户要求在非空时间上机, 则将用户信息插入该时间段的等待列表
根据输入的时间, 撤销该时间的预订;查询是否有等待信息,若有,则按顺序显示联系方式。
1.系统功能模块图:
2.函数模块图
1 void Fx();
菜单页面函数,主函数
2 void f1();
查询机位是否空置的函数
3 void f2();
预定机位函数
4 void f3();
取消预定机位函数
5 void f4();
查看预定情况函数
6 void detail(int t);
对应时间空置机位的情况函数
7 void prione(int i);
输出等待列表到屏幕
#include#include#include#define N 20 //wait结构体中代表的20个结构体
#define T (t-8)/2 //
int sum[6]={0};//有18个小时,用六个元素进行三个时间段循环,每个元素对应下面结构体电脑状态
int computer[6][20]{{1,0,1,0,1,1,0,0,0,0,0,0,1,1,1,1,0,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,0,1,1,1,1,1,0,1,1,0,1,0,1,1,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,0,1,1,1,0,0,0,0,0,0,1,1,0,1,1,1,1,0},
{1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1}};//模拟20台电脑状态,0代表空置,18个小时3个循环 ,每个时间机位空置模拟
void Fx(); //菜单页面函数,主函数
void f1();//查询机位是否空置的函数
void f2();//预定机位函数
void f3();//取消预定机位函数
void f4();//查看预定情况函数
void detail(int t);//对应时间空置机位的情况函数
void prione(int i);//输出等待列表到屏幕
struct waitlist//等待列表结构体
{char num[3];//存预约机位号
char phone[11]; //存电话号码
}wait[N];//20个结构体
int main()
{Fx();
}
void Fx()// 菜单函数
{int a,b;
do
{printf("\t\t\t机房机位预定系统\n");
printf("\t\t\t\t菜单\n");
printf("\t\t\t1.查询机位状态\n");
printf("\t\t\t2.预定空机位\n");
printf("\t\t\t3.取消预订\n");
printf("\t\t\t4.查询等待信息\n");
printf("\t\t\t5.退出\n");
printf("\t\t请输入选择项目(1-5):");
scanf("%d",&a);
if(a<1||a>5)//不是菜单5个选项,重新输入,令b==1,继续循环
{b=1;
}
else b=0;//b=0,跳出循环
}while(b==1);
switch(a)//主菜单的5个选项
{case 1:f1();break;//查询空置机位
case 2:f2();break;//预约空置机位
case 3:f3();break; //取消预订
case 4:f4();break;//查询预约信息
case 5:exit(0);break;//返回
}
}
void f1()//查询机位是否空置
{int t;
printf(" 输入在(8-20)的时间:");
scanf("%d",&t);
if(t<8||t>20)// 不在对应时间,时间错误
{printf("\t时间输入错误!\n");
printf(" 输入在(8-20)的时间:");
scanf("%d",&t);//重新输入时间
}
detail(t);//输入时间,查找该时间机位空置情况
Fx(); // 查询后回到主菜单
}
void f2() // 预约机位函数
{int t,i=0,x,y;
FILE *fp;
char c;
printf(" 请输入你想要预定的时间(8-20):");
scanf("%d",&t);
if(t<8||t>20)//不在时间内显示时间错误
{printf("\t 输入时间错误,请重新输入:\n");
scanf("%d",&t);
}
detail(t);//在时间内查询,输出空机位
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].num,wait[i].phone); //对照输出的空机位,输入你想要遇定的号数和你的电话号码
for(i=0;i<1;i++)
fwrite(&wait[i],sizeof(struct waitlist),1,fp);
fclose(fp);//向文本添加你的信息
printf("\t再次输入你想要预定的时间: \n");
scanf("%d",&x);//再次确定
sum[T]--;// 预定后空机位少一个
computer[T][x]=1;//机位状态变为不是空置 为1
printf("\t预定成功\t\n");
Fx();
}
else
{printf("这是在这个时间段未预定的电脑!\n");
for(i=T+1;i<6;i++)//由三个循环重新确定机位空置情况
{ t=9+2*i;
detail(t);
if(sum[T]>0)
printf("\t最近空闲的时间是:%d,%d\n",2*i+8,2*i+10);//输出对应空闲的时间
break;
}
printf("\t你想要预定吗?:Y\N");
scanf("%s",&c);//输入你是否想要预定
if(c=='Y')
{ if((fp=fopen("waitlist.txt","r"))==NULL)
{ printf("\n打开文件错误!\n");
exit(0);
}
else
{ printf("等待列表:机位号,电话\n");//输出已经预定的机位和他们的电话号码
for(i=0;!feof(fp);i++)
{ fscanf(fp,"%s %s",&wait[i].num,wait[i].phone);
}
fclose(fp);//读出他们的信息
}
for(i=0;i<10;i++)
{ prione(i);//输出预定信息
}
printf("\n\t 请输入你想预定的机位号并留下电话号码!:\n");
if((fp=fopen("waitlist.txt","a"))==NULL)
{ printf("\n打开文件错误!\n");
exit(0);
}
scanf("%s %s",wait[i].num,wait[i].phone);
for(i=0;i<1;i++)
fwrite(&wait[i],sizeof(struct waitlist),1,fp);
fclose(fp);//写入你的信息,一个结构体单元
printf("\t再次输入电脑序号:\n");
scanf("%d",&y);
sum[T]--;//空置数和机位状态依次变化
computer[T][y]=1;
printf("\t好了,等待我们电话!\n");
Fx();
}
else Fx();
}
}
void f3()//取消预定函数
{int t,x;
printf("输入你已经预定的时间(8-20):");
scanf("%d",&t);//输入你预定的时间
if(t>20||t<8)//输入错误
{printf("\t输入时间错误!\n");
printf("\t再次输入你已经预定的时间!:");
scanf("%d",&t);//再次输入
}
else
{printf("\t你已经预定的机位号!:");
scanf("%d",&x);
}
detail(t);
sum[T]++; //取消空机位加1,对应机位状态为空置
computer[T][x]=0;
printf("\t取消成功!\n");
Fx();
}
void f4()//查询预定信息
{int t,i;
FILE *fp;
printf("\t请输入你要搜索的时间:");
scanf("%d",&t);
if(t<8||t>20) //输入时间错误
{printf("\t 输入时间错误!\n");
printf("\t 输入你要搜索的时间:");
scanf("%d",&t);
}
else
if((fp=fopen("waitlist.txt","r"))==NULL)
{ printf("\n打开文件错误!\n");
exit(0);
}
else
{printf("等待列表:机位号,电话\n");
for(i=0;!feof(fp);i++)
{ fscanf(fp,"%s %s",&wait[i].num,&wait[i].phone);
}
fclose(fp);//打开列表
}
for(i=0;i<10;i++)
{prione(i);
}
Fx();
}
void detail(int t)//查找空机位数和对应机位号数
{int i,j=0,k,s=0;
int v[30];
for(i=0;i<20;i++)
{if(computer[T][i]==0) //为0时机位空置
{ s++;//空置电脑数加1
v[j++]=i;//空置电脑序号
}
}
sum[t]=s;//由三个循环输出空置的电脑
printf("\t目前空置的电脑:%d\n",sum[T]);
for(k=0;kprintf("\t\t%s %s \n",wait[i].num,wait[i].phone);
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧