机房机位预约模拟系统.docx

上传人:b****1 文档编号:15066413 上传时间:2023-06-30 格式:DOCX 页数:22 大小:76.68KB
下载 相关 举报
机房机位预约模拟系统.docx_第1页
第1页 / 共22页
机房机位预约模拟系统.docx_第2页
第2页 / 共22页
机房机位预约模拟系统.docx_第3页
第3页 / 共22页
机房机位预约模拟系统.docx_第4页
第4页 / 共22页
机房机位预约模拟系统.docx_第5页
第5页 / 共22页
机房机位预约模拟系统.docx_第6页
第6页 / 共22页
机房机位预约模拟系统.docx_第7页
第7页 / 共22页
机房机位预约模拟系统.docx_第8页
第8页 / 共22页
机房机位预约模拟系统.docx_第9页
第9页 / 共22页
机房机位预约模拟系统.docx_第10页
第10页 / 共22页
机房机位预约模拟系统.docx_第11页
第11页 / 共22页
机房机位预约模拟系统.docx_第12页
第12页 / 共22页
机房机位预约模拟系统.docx_第13页
第13页 / 共22页
机房机位预约模拟系统.docx_第14页
第14页 / 共22页
机房机位预约模拟系统.docx_第15页
第15页 / 共22页
机房机位预约模拟系统.docx_第16页
第16页 / 共22页
机房机位预约模拟系统.docx_第17页
第17页 / 共22页
机房机位预约模拟系统.docx_第18页
第18页 / 共22页
机房机位预约模拟系统.docx_第19页
第19页 / 共22页
机房机位预约模拟系统.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

机房机位预约模拟系统.docx

《机房机位预约模拟系统.docx》由会员分享,可在线阅读,更多相关《机房机位预约模拟系统.docx(22页珍藏版)》请在冰点文库上搜索。

机房机位预约模拟系统.docx

机房机位预约模拟系统

C语言程序设计

编程实践是学习C语言程序设计的一重要环节,为提高学生程序设计能力,通过课堂和上机实践练习使学生的程序设计能力上一台阶。

通过前四单元温顾而知新、庖丁解牛、举一反三、熟能生巧等过程的练习设计下面一个完整的程序

1.题目要求

设计“机房机位预约模拟系统〞

要求:

20台机器,从早8点到晚8点,每两个小时一个时间段。

需要实现功能:

1,查询,根据输入时间,输出机位信息。

2,即为预定,根据输入的日期和时间段查询是否有空机位,假设有那么预约,假设无那么提供最近空机时间段。

另:

假设用户要求在非空时间上机,那么将用户信息插入该时间段的等待列表.

3,退出预定,根据输入的时间,撤销该时间的预定。

4,查询是否有等待的信息,假设有那么按顺序显示联系方式,假设无那么显示提示信息。

2需求分析

根据题目要求在程序中需实现查询,预定,排队等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时到达所要目的。

3总体设计

整个系统可分为3个模块查询模块预定模块取消模块

 

详细设计

主函数比拟简洁,只提供输入、功能处理和输出局部的函数调用。

main()

{

inti;

for(i=0;i

TimeQueue[i].CNum=0;

TimeQueue[i].first=NULL;

TimeQueue[i].middle=NULL;

TimeQueue[i].last=NULL;

}

while

(1){

printf("请输入序号!

:

\n");

printf("1.查询预定的机位2.查询空机位3.预定4.取消预定5.等待列表6.查询等待者列表0.退出\n");

scanf("%d",&i);

switch(i)

{

case1:

Inquir();break;

case2:

inquir();break;

case3:

booking();break;

case4:

cancel();break;

case5:

waiting();break;

case6:

inquir_waiting();break;

case0:

exit(0);

default:

printf("error\n");

}

}

}

voidInquir()

{

intn;

charInfor[10];

structnode*Rem;

printf("输入查询时间(24hours8~20o'clock,include8o'clock)\n");

scanf("%d",&n);

if(n>=8&&n<20){

n=S(n);

printf("请输入学号\n");

scanf("%s",Infor);

Rem=TimeQueue[n].first;

for(;Rem->next!

=NULL;Rem=Rem->next)

if(strcmp(Rem->data,Infor)==0)break;

if(Rem->locat!

=0)

printf("Thecomputernumberis%d\n",Rem->locat);

elseprintf("对不起.你依旧在等待列表中或者没有预定");

}

elseprintf("错误,请再次输入.\n");

}

voidinquir()

{

intn;

printf("输入想要查询的时间(24hours8~20o'clock,include8o'clock)\n");

scanf("%d",&n);

if(n>=8&&n<20){

n=S(n);

if(TimeQueue[n].CNum

printf("Thereare%demptycomputer!

\n",MAX-TimeQueue[n].CNum);

elseprintf("对不起.没有空余机位\n");

}

elseprintf("错误,再次输入.\n");

}

预定模块

voidbooking()

{

intn;

charInfor[10];

structnode*Rem;

structnode*p;

printf("输入想要预定的时间\n");

scanf("%d",&n);

if(n>=8&&n<20){

n=S(n);

if(TimeQueue[n].CNum

printf("请输入你的学号\n");

scanf("%s",Infor);

if(TimeQueue[n].first==NULL){

Rem=(structnode*)malloc(sizeof(structnode));

Rem->locat=1;

strcpy(Rem->data,Infor);

Rem->next=NULL;

TimeQueue[n].first=Rem;

TimeQueue[n].last=Rem;

TimeQueue[n].CNum++;

printf("成功预定\n");

}

else{

Rem=(structnode*)malloc(sizeof(structnode));

strcpy(Rem->data,Infor);

Rem->next=NULL;

p=TimeQueue[n].last;

Rem->locat=TimeQueue[n].CNum+1;

printf("%d",Rem->locat);

TimeQueue[n].last=Rem;

p->next=Rem;

TimeQueue[n].CNum++;

printf("成功预定\n");

}

}

elseprintf("没有空余机位!

");

}

elseprintf("错误.请再次输入.\n");

}

voidwaiting()

{

intn;

charInfor[10];

structnode*Rem;

structnode*p;

printf("请输入想要排队的时间\n");

scanf("%d",&n);

if(n>=8&&n<20){

n=S(n);

if(TimeQueue[n].CNum>=MAX){

printf("请输入你的学号\n");

scanf("%s",Infor);

if((TimeQueue[n].CNum)==MAX){

Rem=(structnode*)malloc(sizeof(structnode));

strcpy(Rem->data,Infor);

Rem->next=NULL;

Rem->locat=0;

p=TimeQueue[n].last;

TimeQueue[n].last=Rem;

p->next=Rem;

TimeQueue[n].middle=Rem;

TimeQueue[n].CNum++;

printf("成功排队\n");

}

else{

Rem=(structnode*)malloc(sizeof(structnode));

strcpy(Rem->data,Infor);

Rem->next=NULL;

Rem->locat=0;

p=TimeQueue[n].last;

TimeQueue[n].last=Rem;

p->next=Rem;

TimeQueue[n].CNum++;

printf("成功排队\n");

}

}

elseprintf("有空余机位,无须等待\n");

}

elseprintf("错误.再次输入.\n");

}

 

取消模块

voidcancel()

{

intn;

inti;

charInfor[10];

structnode*Rem;

structnode*q;

structnode*p;

printf("请输入预定的时间\n");

scanf("%d",&n);

if(n>=8&&n<20){

printf("PleaseinputyourNo.!

\n");

scanf("%s",Infor);

n=S(n);

Rem=TimeQueue[n].first;

q=Rem;

for(i=1;;q=Rem,Rem=Rem->next,i++)

if(strcmp(Rem->data,Infor)==0)break;

if(i>MAX){

if(Rem->next==NULL){

q->next=NULL;

TimeQueue[n].last=q;

free(Rem);

TimeQueue[n].CNum--;

printf("Succeedtooutthequeue!

\n");

}

else{

q->next=Rem->next;

free(Rem);

TimeQueue[n].CNum--;

printf("Succeedtooutthequeue!

\n");

}

}

else{

if(TimeQueue[n].CNum>MAX){

TimeQueue[n].middle->locat=Rem->locat;

TimeQueue[n].middle=TimeQueue[n].middle->next;

}

if(i==1)TimeQueue[n].first=Rem->next;

elseq->next=Rem->next;

free(Rem);

TimeQueue[n].CNum--;

printf("成功取消预定!

\n");

 

附录源代码:

#include

#include

#include

#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];

voidInquir()

{

intn;

charInfor[10];

structnode*Rem;

printf("输入查询时间(24hours8~20o'clock,include8o'clock)\n");

scanf("%d",&n);

if(n>=8&&n<20){

n=S(n);

printf("请输入学号\n");

scanf("%s",Infor);

Rem=TimeQueue[n].first;

for(;Rem->next!

=NULL;Rem=Rem->next)

if(strcmp(Rem->data,Infor)==0)break;

if(Rem->locat!

=0)

printf("Thecomputernumberis%d\n",Rem->locat);

elseprintf("对不起.你依旧在等待列表中或者没有预定");

}

elseprintf("错误,请再次输入.\n");

}

voidinquir()

{

intn;

printf("输入想要查询的时间(24hours8~20o'clock,include8o'clock)\n");

scanf("%d",&n);

if(n>=8&&n<20){

n=S(n);

if(TimeQueue[n].CNum

printf("Thereare%demptycomputer!

\n",MAX-TimeQueue[n].CNum);

elseprintf("对不起.没有空余机位\n");

}

elseprintf("错误,再次输入.\n");

}

voidbooking()

{

intn;

charInfor[10];

structnode*Rem;

structnode*p;

printf("输入想要预定的时间\n");

scanf("%d",&n);

if(n>=8&&n<20){

n=S(n);

if(TimeQueue[n].CNum

printf("请输入你的学号\n");

scanf("%s",Infor);

if(TimeQueue[n].first==NULL){

Rem=(structnode*)malloc(sizeof(structnode));

Rem->locat=1;

strcpy(Rem->data,Infor);

Rem->next=NULL;

TimeQueue[n].first=Rem;

TimeQueue[n].last=Rem;

TimeQueue[n].CNum++;

printf("成功预定\n");

}

else{

Rem=(structnode*)malloc(sizeof(structnode));

strcpy(Rem->data,Infor);

Rem->next=NULL;

p=TimeQueue[n].last;

Rem->locat=TimeQueue[n].CNum+1;

printf("%d",Rem->locat);

TimeQueue[n].last=Rem;

p->next=Rem;

TimeQueue[n].CNum++;

printf("成功预定\n");

}

}

elseprintf("没有空余机位!

");

}

elseprintf("错误.请再次输入.\n");

}

voidwaiting()

{

intn;

charInfor[10];

structnode*Rem;

structnode*p;

printf("请输入想要排队的时间\n");

scanf("%d",&n);

if(n>=8&&n<20){

n=S(n);

if(TimeQueue[n].CNum>=MAX){

printf("请输入你的学号\n");

scanf("%s",Infor);

if((TimeQueue[n].CNum)==MAX){

Rem=(structnode*)malloc(sizeof(structnode));

strcpy(Rem->data,Infor);

Rem->next=NULL;

Rem->locat=0;

p=TimeQueue[n].last;

TimeQueue[n].last=Rem;

p->next=Rem;

TimeQueue[n].middle=Rem;

TimeQueue[n].CNum++;

printf("成功排队\n");

}

else{

Rem=(structnode*)malloc(sizeof(structnode));

strcpy(Rem->data,Infor);

Rem->next=NULL;

Rem->locat=0;

p=TimeQueue[n].last;

TimeQueue[n].last=Rem;

p->next=Rem;

TimeQueue[n].CNum++;

printf("成功排队\n");

}

}

elseprintf("有空余机位,无须等待\n");

}

elseprintf("错误.再次输入.\n");

}

 

voidcancel()

{

intn;

inti;

charInfor[10];

structnode*Rem;

structnode*q;

structnode*p;

printf("请输入预定的时间\n");

scanf("%d",&n);

if(n>=8&&n<20){

printf("PleaseinputyourNo.!

\n");

scanf("%s",Infor);

n=S(n);

Rem=TimeQueue[n].first;

q=Rem;

for(i=1;;q=Rem,Rem=Rem->next,i++)

if(strcmp(Rem->data,Infor)==0)break;

if(i>MAX){

if(Rem->next==NULL){

q->next=NULL;

TimeQueue[n].last=q;

free(Rem);

TimeQueue[n].CNum--;

printf("Succeedtooutthequeue!

\n");

}

else{

q->next=Rem->next;

free(Rem);

TimeQueue[n].CNum--;

printf("Succeedtooutthequeue!

\n");

}

}

else{

if(TimeQueue[n].CNum>MAX){

TimeQueue[n].middle->locat=Rem->locat;

TimeQueue[n].middle=TimeQueue[n].middle->next;

}

if(i==1)TimeQueue[n].first=Rem->next;

elseq->next=Rem->next;

free(Rem);

TimeQueue[n].CNum--;

printf("成功取消预定!

\n");

}

}

elseprintf("错误,请再次输入.\n");

}

voidinquir_waiting()

{

intn;

structnode*q;

printf("查询其他等待者的预定时间\n");

scanf("%d",&n);

if(n>=8&&n<20){

n=S(n);

if(TimeQueue[n].CNum>MAX){

printf("等待列表are:

\n");

q=TimeQueue[n].middle;

for(;q->next!

=NULL;q=q->next)printf("%s\n",q->data);

printf("%s\n",TimeQueue[n].last->data);

}

elseprintf("这个时间段没有预定者\n");

}

elseprintf("错误。

请再次输入.\n");

}

main()

{

inti;

for(i=0;i

TimeQueue[i].CNum=0;

TimeQueue[i].first=NULL;

TimeQueue[i].middle=NULL;

TimeQueue[i].last=NULL;

}

while

(1){

printf("请输入序号!

:

\n");

printf("1.查询预定的机位\n2.查询空机位\n3.预定\n4.取消预定\n5.等待列表\n6.查询等待者时间列表0.退出\n");

scanf("%d",&i);

switch(i)

{

case1:

Inquir();break;

case2:

inquir();break;

case3:

booking();break;

case4:

cancel();break;

case5:

waiting();break;

case6:

inquir_waiting();break;

case0:

exit(0);

default:

printf("error\n");

}

}

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2