机房机位预约模拟管理系统设计源代码.docx
- 文档编号:4754718
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:11
- 大小:17.52KB
机房机位预约模拟管理系统设计源代码.docx
《机房机位预约模拟管理系统设计源代码.docx》由会员分享,可在线阅读,更多相关《机房机位预约模拟管理系统设计源代码.docx(11页珍藏版)》请在冰豆网上搜索。
机房机位预约模拟管理系统设计源代码
.
#include
#include
#include
#defineSJD6/*宏定义定义SJDZNULLD(r)*/
#defineZ20
#defineD(s)(s-8)/2/*将输入的时间划分时间段;分别为0,1,2,3,4,5时间段*/
#defineNULL0
structxinxi{
intjihao;
charxuehao[20];
structxinxi*next;
};/*结构函数包含学生信息:
机位,学号,还有下名学生信息*/
structcell{
intRS;/*RS表示总人数*/
structxinxi*first;/*第一个预订者记录*/
structxinxi*middle;/*等待队列列表*/
structxinxi*last;/*最后预订者记录*/
}DUILEI[SJD];/*学生时间(SJD)段顺序:
人数,第一名学生,排队的学生,最后一名学生*/
/***************************预定模块******************************/
voidyuding()
{
.
.
intn;
charm[20];/*学号*/
structxinxi*R;
structxinxi*p;
牰湩晴尨输入想要预定的时间\n);
scanf(%d,&n);
if(n>=8&&n<20){
n=D(n);/*将输入的时间划分时间段*/
if(DUILEI[n].RS { 牰湩晴尨请输入你的学号\n); scanf(%s,m); if(DUILEI[n].first==NULL)/*还没有人预订*/ { R=(structxinxi*)malloc(sizeof(structxinxi));/*给R划分适当的存*/ R->jihao=1; strcpy(R->xuehao,m);/*将输入的学号复制到R->xuehao*/ R->next=NULL; DUILEI[n].first=R; DUILEI[n].last=R; DUILEI[n].RS++; 牰湩晴尨成功预定\n); 专业资料word . } else { R=(structxinxi*)malloc(sizeof(structxinxi)); strcpy(R->xuehao,m);/*将输入的学号复制到R->xuehao*/ R->next=NULL; p=DUILEI[n].last;/*将最后预订记录赋值给p*/ R->jihao=DUILEI[n].RS+1; printf(%d,R->jihao);/*表示该时间段第几位预订*/ DUILEI[n].last=R;/*将当前的记录做为最后记录以便形成链表形式指向下一个*/ p->next=R; DUILEI[n].RS++;/*记录人数*/ 牰湩晴尨预定成功\n); } } 汥敳瀠楲瑮? 没有空余机位! \n); } 汥敳瀠楲瑮? 错误.请输入8~19,再次输入.\n); } /*********************************查询空位模块***********************************/ 专业资料word . voidchaxunkongwei() { intn; 牰湩晴尨输入想要查询的时间(8~19点,包括8点)\n); scanf(%d,&n); if(n>=8&&n<20) { n=D(n); if(DUILEI[n].RS 牰湩晴尨这里还有%d台空电脑! \n,Z-DUILEI[n].RS); 汥敳瀠楲瑮? 对不起.没有空余机位! \n); } 汥敳瀠楲瑮? 错误,请输入8~19,再次输入.\n); } /*********************查询预定机位模块*************************************/ voidchaxunyuding() { intn; charm[20]; structxinxi*R; 牰湩晴尨输入查询时间(8~19点,包括8点)\n); scanf(%d,&n); 专业资料word . if(n>=8&&n<20) { n=D(n); 牰湩晴尨请输入学号\n); scanf(%s,m); R=DUILEI[n].first;/*将第一名学生的信息赋予R*/ if(DUILEI[n].first==0)printf(还没有人预定\n);/*判断有没有人预订,如果还没有人预订,则输出还没有人预定*/ else{ for(;R->next! =NULL;R=R->next)/*从第一名学生开始查询直到找到符合的学号,以便确认是否预订*/ if(strcmp(R->xuehao,m)==0)break; if(R->jihao! =0)/*已预订,输出相应的信息*/ 牰湩晴尨你的机位是%d\n,R->jihao); 汥敳瀠楲瑮? 对不起.你依旧在等待列表中或者没有预定); } } 汥敳瀠楲瑮? 错误,请再次输入.\n); } /*****************************排队系统模块**************************************/ voidpaiduixitong() { 专业资料word . intn; charm[20]; structxinxi*R;structxinxi*p; 牰湩晴尨请输入想要排队的时间\n); scanf(%d,&n); if(n>=8&&n<20) { n=D(n); if(DUILEI[n].RS>=Z)/*该时间段没有空位机,需要预订等待*/ { 牰湩晴尨请输入你的学号\n);scanf(%s,m); if((DUILEI[n].RS)==Z) { R=(structxinxi*)malloc(sizeof(structxinxi)); strcpy(R->xuehao,m); R->next=NULL; R->jihao=0; p=DUILEI[n].last; DUILEI[n].last=R; p->next=R; DUILEI[n].middle=R;/*等待预订列表*/ DUILEI[n].RS++; 专业资料word . 牰湩晴尨成功排队\n); }/*将刚输入学生信息拍到最后一名后,成最后一名*/ else { R=(structxinxi*)malloc(sizeof(structxinxi)); strcpy(R->xuehao,m); R->next=NULL; R->jihao=0; p=DUILEI[n].last; DUILEI[n].last=R; p->next=R; DUILEI[n].RS++; 牰湩晴尨成功排队\n); } } 汥敳瀠楲瑮? 有空余机位,无须等待\n); } 汥敳瀠楲瑮? 错误.再次输入.\n); } /******************************取消预订模块****************************************/ voidcancel() { 专业资料word . intn; inti; charm[20]; structxinxi*R; structxinxi*q; structxinxi*p; 牰湩晴尨请输入预定的时间\n); scanf(%d,&n); if(n>=8&&n<20) { 牰湩晴尨请输入你的学号! \n); scanf(%s,m); n=D(n); R=DUILEI[n].first; q=R; for(i=1;;q=R,R=R->next,i++)/*查找符合信息*/ if(strcmp(R->xuehao,m)==0)break; if(i>Z)/*i>z表示在等待列表中*/ { if(R->next==NULL) { q->next=NULL; 专业资料word . DUILEI[n].last=q; free(R); DUILEI[n].RS--; 牰湩晴尨取消成功! \n);/*如果是排在20名后,且是最后一名*/ } else{ q->next=R->next; free(R); DUILEI[n].RS--; 牰湩晴尨取消成功! \n);/*如果排在20名后,但不是最后*/ } } else/*正在上机者取消预订*/ { if(DUILEI[n].RS>Z) { DUILEI[n].middle->jihao=R->jihao; DUILEI[n].middle=DUILEI[n].middle->next; }/*如果排在20名,但总人数(包括等待列表人数)大于20*/ if(i==1)DUILEI[n].first=R->next; elseq->next=R->next; free(R); 专业资料word . DUILEI[n].RS--; 牰湩晴尨成功取消预定! \n); } } 汥敳瀠楲瑮? 错误,请再次输入.\n); } /********************************待机者列表模块****************************/ voiddaijizheliebiao() { intn; structxinxi*q; 牰湩晴尨查询其他等待者的预定时间\n); scanf(%d,&n); if(n>=8&&n<20) { n=D(n); if(DUILEI[n].RS>Z)/*表示有等待上机者*/ { 牰湩晴尨等待列表: \n); q=DUILEI[n].middle; for(;q->next! =NULL;q=q->next)printf(%s\n,q->xuehao);/*逐个输出等待列表者信息*/ 专业资料word . printf(%s\n,DUILEI[n].last->xuehao); } 汥敳瀠楲瑮? 这个时间段没有预定者\n); } 汥敳瀠楲瑮? 错误。 请再次输入.\n); } intmain() { inti; for(i=0;i DUILEI[i].RS=0; DUILEI[i].first=NULL; DUILEI[i].middle=NULL; DUILEI[i].last=NULL; } while (1){ printf(**************************************\n); printf(*机房机位预定系统*\n); printf(**\n); printf(*1查询空机位2预定系统*\n); printf(*3取消预定4查询所预定机位*\n); printf(*5排队系统6等机者列表*\n); 专业资料word . printf(*0退出系统*\n); printf(**\n); printf(*请输入序号(0--6): *\n); printf(**************************************\n); 牰湩晴尨请输入序号! : \n); scanf(%d,&i); switch(i) { case1: chaxunkongwei();break; case2: yuding();break; case3: cancel();break; case4: chaxunyuding();break; case5: paiduixitong();break; case6: daijizheliebiao();break; case0: exit(0); 敤慦汵? 牰湩晴尨错误\n); } } return0; } 专业资料word
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机房 机位 预约 模拟 管理 系统 设计 源代码
![提示](https://static.bdocx.com/images/bang_tan.gif)