机房机位预约模拟系统Word文档下载推荐.doc
《机房机位预约模拟系统Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《机房机位预约模拟系统Word文档下载推荐.doc(14页珍藏版)》请在冰点文库上搜索。
预定模块
取消模块
详细设计
主函数比较简洁,只提供输入、功能处理和输出部分的函数调用。
显示一系列功能选择
输入n,判断m
是否是0到6?
根据n值调用各
功能模块函数
结束
N
开始
main()
{
inti;
for(i=0;
i<
LENGTH;
i++){
TimeQueue[i].CNum=0;
TimeQueue[i].first=NULL;
TimeQueue[i].middle=NULL;
TimeQueue[i].last=NULL;
}
while
(1){
printf("
请输入序号!
:
\n"
);
1.查询预定的机位2.查询空机位3.预定4.取消预定5.等待列表6.查询等待者列表0.退出\n"
scanf("
%d"
&
i);
switch(i)
case1:
Inquir();
break;
case2:
inquir();
case3:
booking();
case4:
cancel();
case5:
waiting();
case6:
inquir_waiting();
case0:
exit(0);
default:
error\n"
}
输入查询序号或查询时间
判断是否预定,是否有空余机位?
显示数据
voidInquir()
intn;
charInfor[10];
structnode*Rem;
输入查询时间(24hours8~20o'
clock,include8o'
clock)\n"
n);
if(n>
=8&
&
n<
20){
n=S(n);
请输入学号\n"
%s"
Infor);
Rem=TimeQueue[n].first;
for(;
Rem->
next!
=NULL;
Rem=Rem->
next)
if(strcmp(Rem->
data,Infor)==0)break;
if(Rem->
locat!
=0)
Thecomputernumberis%d\n"
Rem->
locat);
elseprintf("
对不起.你依旧在等待列表中或者没有预定"
错误,请再次输入.\n"
voidinquir()
输入想要查询的时间(24hours8~20o'
clock,include8o'
if(TimeQueue[n].CNum<
MAX)
Thereare%demptycomputer!
MAX-TimeQueue[n].CNum);
对不起.没有空余机位\n"
错误,再次输入.\n"
预定模块
voidbooking()开始
输入预定时间
判断时间属于8~20o'
clock与空机位
输入学号预定成功,排队成功
结束iongyudin
选择排队
structnode*p;
输入想要预定的时间\n"
MAX){
请输入你的学号\n"
if(TimeQueue[n].first==NULL){
Rem=(structnode*)malloc(sizeof(structnode));
locat=1;
strcpy(Rem->
data,Infor);
next=NULL;
TimeQueue[n].first=Rem;
TimeQueue[n].last=Rem;
TimeQueue[n].CNum++;
成功预定\n"
else{
p=TimeQueue[n].last;
locat=TimeQueue[n].CNum+1;
p->
next=Rem;
没有空余机位!
"
错误.请再次输入.\n"
voidwaiting()
请输入想要排队的时间\n"
if(TimeQueue[n].CNum>
=MAX){
if((TimeQueue[n].CNum)==MAX){
locat=0;
TimeQueue[n].middle=Rem;
成功排队\n"
有空余机位,无须等待\n"
错误.再次输入.\n"
取消模块开始
判断是否预定与排队
成功取消预定
voidcancel()
structnode*q;
请输入预定的时间\n"
PleaseinputyourNo.!
q=Rem;
for(i=1;
;
q=Rem,Rem=Rem->
next,i++)
if(i>
next==NULL){
q->
TimeQueue[n].last=q;
free(Rem);
TimeQueue[n].CNum--;
Succeedtooutthequeue!
next=Rem->
next;
TimeQueue[n].middle->
locat=Rem->
locat;
TimeQueue[n].middle=TimeQueue[n].middle->
if(i==1)TimeQueue[n].first=Rem->
elseq->
成功取消预定!
附录源代码:
#include<
stdio.h>
stdlib.h>
string.h>
#defineLENGTH6
#defineMAX20
#defineS(r)(r-8)/2
#defineNULL0
structnode{
intlocat;
chardata[10];
structnode*next;
};
structnode*head;
structcell{
intCNum;
structnode*first;
structnode*middle;
structnode*last;
}TimeQueue[LENGTH];
voidbooking()
voidinquir_waiting()
查询其他等待者的预定时间\n"
等待列表are:
q=TimeQueue[n].middle;
q=q->
next)printf("
%s\n"
q->
data);
TimeQueue[n].last->
这个时间段没有预定者\n"
错误。
请再次输入.\n"
1.查询预定的机位\n2.查询空机位\n3.预定\n4.取消预定\n5.等待列表\n6.查询等待者时间列表0.退出\n"