毕业设计机房机位预约系统课程设计.docx
《毕业设计机房机位预约系统课程设计.docx》由会员分享,可在线阅读,更多相关《毕业设计机房机位预约系统课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
毕业设计机房机位预约系统课程设计
C语言课程设计
1、题目要求
2、需求分析;
3、整体设计;
4、上机操作;
5、存在的问题与不足及计谋;
6、利用说明(操作手册);
7、学习心得
前言
运算机科学技术的进展,不仅极大地增进了整个科学技术的进展,而且明显地加速了经济信息化和社会信息化的进程。
因此,运算机教育在全国备受重视,运算机知识与能力已成为21世纪人材素养的大体要素之一。
现在,高等教育的运算机教育进展十分迅速。
十连年前,只有部份理工科专业开设运算机课程。
今天,几乎所有高校的所有专业都开设了程度不同的运算机课程。
人们已经熟悉到,运算机知识已成为今世知识分子知识结构中不可缺少的重要组成部份。
而除把握运算机的基础知识和操作的大体能力外,把握一门高级编程语言,并能够熟练运用它,已成为今世大学生综合能力必要组成。
运算机技术进展如此迅猛,运算机应用如此普遍,需要学习的东西愈来愈多,而咱们的总学时是有限的。
一样来讲,运算机课程学习能够分为两部份:
一部份是理论课程学习,一部份是上机应用实习。
依照咱们专业的性质和要求,那么应偏重于上机操作运用。
为此,学校特意在大二上学期最后一礼拜安排了32个学时的上机实习。
现将一礼拜的实习内容及结果分析排列如下:
机房机位预约模拟
一.题目要求
20台机械,从早8点到晚8点,每两个小时一个时段。
需要实现如下功能:
(1)查询。
依照输入时刻输出机位信息。
(2)机位预订。
依照输入的日期和时刻段查询是不是有空机位,假设有那么预约,假设无那么提供最近空机时刻段。
另外,假设用户要求在非空时刻上机,那么将用户信息插入该时刻段的等待列表。
(3)退出预订。
依照输入的时刻撤销该时刻的预定。
(4)查询是不是有等待信息。
假设有那么按顺序显示联系方式,假设无那么显示提示信息。
二.需求分析
依照题目要求,程序需要四个结构体来完成,别离对应四个功能。
另外,那个程序还要依照时刻更新各个列表的信息。
三.整体设计
依照上面的需求分析,那个系统的设计需要四个结构体和四个列表
机械信息结构体:
包括机械编号,是不是被占用,机械其他信息
用户信息结构体:
包括用户姓名,用户其他信息
预定信息结构体:
包括机械编号,预订人姓名,预按时刻段
等待信息结构体:
包括等待者姓名,等待信息添加时刻
再成立四个列表别离以上述四个结构体为节点
对应的问题
第一个,查询机械信息列表,查看机械是不是被占用,再依照预定信息列表中的内容取得机械是不是被预定
第二个,遍历机械列表,查看每一个机械在输入的时刻是不是有预定信息,若是没有那么将预定信息插入第二个列表
第三个,依照用户和预按时刻信息删除第三个列表中的信息
第四个,将等待信息列表的内容显示
程序内容如下:
#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("Pleaseinputthetimeyouwanttosearch!
(24hours8~20o'clock,include8o'clock)\n");
scanf("%d",&n);
if(n>=8&&n<20){
n=S(n);
printf("PleaseinputyourNo.!
\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("Sorry,youarestillinthequeueoryouhaven'tbooked!
");
}
elseprintf("Error!
Pleaseinputagain.\n");
}
voidinquir()
{
intn;
printf("Pleaseinputthetimeyouwanttosearch!
(24hours8~20o'clock,include8o'clock)\n");
scanf("%d",&n);
if(n>=8&&n<20){
n=S(n);
if(TimeQueue[n].CNumprintf("Thereare%demptycomputer!
\n",MAX-TimeQueue[n].CNum);
elseprintf("Sorry,thereisnoemptycomputer!
\n");
}
elseprintf("Error!
Pleaseinputagain.\n");
}
voidbooking()
{
intn;
charInfor[10];
structnode*Rem;
structnode*p;
(第二个功能:
机位预订)
(输入查询时刻)
printf("Pleaseinputthetimeyouwanttobook!
\n");
scanf("%d",&n);
if(n>=8&&n<20){
n=S(n);
if(TimeQueue[n].CNumprintf("PleaseinputyourNo.!
\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("Succeedtobook!
\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("Succeedtobook!
\n");
}
}
elseprintf("Thereinnoemptycomputer!
");
}
elseprintf("Error!
Pleaseinputagain.\n");
}
voidwaiting()
{
intn;
charInfor[10];
structnode*Rem;
structnode*p;
(再次输入查询时刻)
printf("Pleaseinputthetimeyouwanttoqueue!
\n");
scanf("%d",&n);
if(n>=8&&n<20){
n=S(n);
if(TimeQueue[n].CNum>=MAX){
printf("PleaseinputyourNo.!
\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("Succeedtointhequeue!
\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("Succeedtointhequeue!
\n");
}
}
elseprintf("Therehaveemptycomputer!
Nowaiting!
\n");
}
elseprintf("Error!
Pleaseinputagain.\n");
}
voidcancel()
{
intn;
inti;
charInfor[10];
structnode*Rem;
structnode*q;
structnode*p;
(第三个功能:
退出预订)
printf("Pleaseinputthetimeyouhavebooked!
\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("Succeedtoexitbooking!
\n");
}
}
elseprintf("Error!
Pleaseinputagain.\n");
}
voidinquir_waiting()
{
intn;
structnode*q;
(第四个功能:
查询是不是有等待信息)
printf("Pleaseinputthetimeyouwanttosearchiftherearewaiter!
\n");
scanf("%d",&n);
if(n>=8&&n<20){
n=S(n);
if(TimeQueue[n].CNum>MAX){
printf("Thewaitingqueueare:
\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("Therearenowaiterduringthisperiod!
\n");
}
elseprintf("Eroor!
Pleaseinputagain.\n");
}
main()
{
inti;
for(i=0;iTimeQueue[i].CNum=0;
TimeQueue[i].first=NULL;
TimeQueue[i].middle=NULL;
TimeQueue[i].last=NULL;
}
while
(1){
printf("Pleaseinputthenumber!
:
\n");
printf("1.searchmybookingstateemptycomputer4.cancelbookingwainting\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");
}
}
}
四.上机操作
1.主菜单函数
查询功能选择2功能来查询,然后输入正确的时刻:
先输入错误时刻,再更正:
2.
3.机位预订功能选择3功能来运行,截图如下:
4.退出预订功能选择4执行此功能,进程如图示:
预订
退订
5.选择5执行排队命令,图示如下
(有机位,无法退出预订)
6.选择6查看等待信息,如图示:
7.选择0退出主菜单
存在的问题与不足及计谋
这套程序应用起来并非是很方便,总的说来,大致上实现了题目的要求,各个功能有相应的代号来直接挪用,关于第一次进入主函数页面的利用者来讲,显得不大好用。
只是用熟以后,都不是问题。
计谋:
关于c语言编出的程序来讲,利用方式大致上都是一样的,因此想做改良只能从程序方面入手,尽可能把指令编的简单明了,方便易用。
本人对这一程序仍是相当中意的,想弄的更好的话能够尝试一下用其他编辑程序来完成。
操作手册
点击运行进入主菜单函数,然后按数字键选择所需要的效劳。
1查询我的预定状态;2查询空机位;3预订机位;4退出预订,退掉已定的机位;5排队,即利用者假设要在非空时刻上机,就将该用户信息插入到等待列内外;6查询等待列表,看看排队情形。