C语言课程设计报告机房机位预约模拟系统.docx
- 文档编号:27936237
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:20
- 大小:73.01KB
C语言课程设计报告机房机位预约模拟系统.docx
《C语言课程设计报告机房机位预约模拟系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告机房机位预约模拟系统.docx(20页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告机房机位预约模拟系统
程序设计报告
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.查询预定的机位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"); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 机房 机位 预约 模拟 系统