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

上传人:b****2 文档编号:380115 上传时间:2022-10-09 格式:DOC 页数:14 大小:51.50KB
下载 相关 举报
机房机位预约模拟系统.doc_第1页
第1页 / 共14页
机房机位预约模拟系统.doc_第2页
第2页 / 共14页
机房机位预约模拟系统.doc_第3页
第3页 / 共14页
机房机位预约模拟系统.doc_第4页
第4页 / 共14页
机房机位预约模拟系统.doc_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

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

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

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

C语言程序设计

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

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

1.题目要求

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

要求:

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

需要实现功能:

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

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

另:

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

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

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

2需求分析

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

3总体设计

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

机房机位预约模拟系统

查询模块

预定模块

取消模块

详细设计

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

显示一系列功能选择

输入n,判断m

是否是0到6?

根据n值调用各

功能模块函数

结束

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.查询预定的机位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");

}

}

}

开始

输入查询序号或查询时间

判断是否预定,是否有空余机位?

显示数据

结束

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()开始

输入预定时间

判断时间属于8~20o'clock与空机位

输入学号预定成功,排队成功

结束iongyudin

N

选择排队

{

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");

}

取消模块开始

输入预定时间

判断是否预定与排队

成功取消预定

结束

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

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

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1