机房机位预约模拟管理系统设计源代码.docx
- 文档编号:2437666
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:9
- 大小:16.20KB
机房机位预约模拟管理系统设计源代码.docx
《机房机位预约模拟管理系统设计源代码.docx》由会员分享,可在线阅读,更多相关《机房机位预约模拟管理系统设计源代码.docx(9页珍藏版)》请在冰豆网上搜索。
机房机位预约模拟管理系统设计源代码
#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;
printf("输入想要预定的时间\n");
scanf("%d",&n);
if(n>=8&&n<20){
n=D(n);/*将输入的时间划分时间段*/
if(DUILEI[n].RS { printf("请输入你的学号\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++; printf("成功预定\n"); } 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++;/*记录人数*/ printf("预定成功\n"); } } elseprintf("没有空余机位! \n"); } elseprintf("错误.请输入8~19,再次输入.\n"); } /*********************************查询空位模块***********************************/ voidchaxunkongwei() { intn; printf("输入想要查询的时间(8~19点,包括8点)\n"); scanf("%d",&n); if(n>=8&&n<20) { n=D(n); if(DUILEI[n].RS printf("这里还有%d台空电脑! \n",Z-DUILEI[n].RS); elseprintf("对不起.没有空余机位! \n"); } elseprintf("错误,请输入8~19,再次输入.\n"); } /*********************查询预定机位模块*************************************/ voidchaxunyuding() { intn; charm[20]; structxinxi*R; printf("输入查询时间(8~19点,包括8点)\n"); scanf("%d",&n); if(n>=8&&n<20) { n=D(n); printf("请输入学号\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)/*已预订,输出相应的信息*/ printf("你的机位是%d\n",R->jihao); elseprintf("对不起.你依旧在等待列表中或者没有预定"); } } elseprintf("错误,请再次输入.\n"); } /*****************************排队系统模块**************************************/ voidpaiduixitong() { intn; charm[20]; structxinxi*R;structxinxi*p; printf("请输入想要排队的时间\n"); scanf("%d",&n); if(n>=8&&n<20) { n=D(n); if(DUILEI[n].RS>=Z)/*该时间段没有空位机,需要预订等待*/ { printf("请输入你的学号\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++; printf("成功排队\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++; printf("成功排队\n"); } } elseprintf("有空余机位,无须等待\n"); } elseprintf("错误.再次输入.\n"); } /******************************取消预订模块****************************************/ voidcancel() { intn; inti; charm[20]; structxinxi*R; structxinxi*q; structxinxi*p; printf("请输入预定的时间\n"); scanf("%d",&n); if(n>=8&&n<20) { printf("请输入你的学号! \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; DUILEI[n].last=q; free(R); DUILEI[n].RS--; printf("取消成功! \n");/*如果是排在20名后,且是最后一名*/ } else{ q->next=R->next; free(R); DUILEI[n].RS--; printf("取消成功! \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); DUILEI[n].RS--; printf("成功取消预定! \n"); } } elseprintf("错误,请再次输入.\n"); } /********************************待机者列表模块****************************/ voiddaijizheliebiao() { intn; structxinxi*q; printf("查询其他等待者的预定时间\n"); scanf("%d",&n); if(n>=8&&n<20) { n=D(n); if(DUILEI[n].RS>Z)/*表示有等待上机者*/ { printf("等待列表: \n"); q=DUILEI[n].middle; for(;q->next! =NULL;q=q->next)printf("%s\n",q->xuehao);/*逐个输出等待列表者信息*/ printf("%s\n",DUILEI[n].last->xuehao); } elseprintf("这个时间段没有预定者\n"); } elseprintf("错误。 请再次输入.\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("**********
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机房 机位 预约 模拟 管理 系统 设计 源代码