机房机位预约模拟管理系统设计_第1页
机房机位预约模拟管理系统设计_第2页
机房机位预约模拟管理系统设计_第3页
机房机位预约模拟管理系统设计_第4页
机房机位预约模拟管理系统设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、高级语言程序设计课程设计说明书设计题目:机房机位预约模拟管理系统设计目录课程设计题目*3需求分析*5详细设计*5用户使用说明*12测试结果*13设计小结*17参考文献*18附录(源程序)*18一机房机位预约模拟管理系统设计1、数据结构 顾客信息结构体: Struct CusInfo Char name20;/顾客姓名 Int sex; /性别 Char tel11; /电话 CInfo; 机位信息结构体: Struct Int State6; /机位状态,每 2 个小时为一个时间段,08:00-20:00 共 6 个时间段。0 表示有空机位,1 表示没有空机位 CInfo waitlist6;

2、 /各个时间段的运行客户 Int year; Int month; Int day; /日期 PCInfo; PCInfo info100; /存放 100 天的机位信息 2、具体实现 (1)查询 输入时间,则遍历 info 数组,查看日期(year/month/day),如果日期匹配,则把机位信息输出。 (2)机位预订 输入日期(或时间段)查询机位信息文件,如果日期符合,再查看状态字段,若相应字段为0,则预约(即把该用户信息加入写入机位 waitlist 相应时间段中) ;若相应字段为 1,则查看本天其他时间段,寻找最近空时间段。如果用户要求在非空时间上机,则查找 info 数组中该时间段为

3、空的元素,把该时间段的状态字段设为 1,把用户信息加入机位当天 waitlist 相应时间段中。 (3)退出预订 根据预订日期和客户信息找到预订信息,把客户信息删除,并把该时间段的状态置为 0。 (4)查询 输入日期和时间段,查看该时间段的状态如为 1,则把相应时间段的运行客户信息打 印输出。如为 0,则显示“该时间段空闲!。”二 需求分析根据题目要求,程序需要四个结构体来完成,分别对应四个功能。另外,这个程序还要根据时间更新各个列表的信息。机房机位预约模拟系统查询模块排队模块预定模块取消模块查询空位模块查询预订机模块三详细设计 主函数比较简洁,只提供输入、功能处理和输出部分的函数调用。显示一

4、系列功能选择输入n,判断m 是否是0到6?根据n值调用各功能模块函数结束N开始#include #include #include #define SJD 6 /*宏定义定义SJD Z NULL D(r)*/#define Z 20 #define D(s) (s-8)/2 /*将输入的时间划分时间段;分别为0,1,2,3,4,5时间段*/ #define NULL 0 struct xinxiint jihao; char xuehao20;struct xinxi *next; ; /*结构函数包含学生信息:机位,学号,还有下名学生信息*/struct cellint RS; /*RS表示

5、总人数*/struct xinxi *first; /*第一个预订者记录*/struct xinxi *middle; /*等待队列列表*/struct xinxi *last; /*最后预订者记录*/ DUILEISJD; /*学生时间(SJD)段顺序:人数,第一名学生,排队的学生,最后一名学生*/预定模块开始输入预定时间判断时间属于820 oclock与空机位输入学号预定成功,排队成功结束iongyudinN选择排队/*预定模块*/void yuding() int n; char m20; /*学号*/struct xinxi *R; struct xinxi *p; printf(输入

6、想要预定的时间n); scanf(%d,&n); if(n=8&n20) n=D(n); /*将输入的时间划分时间段*/ if(DUILEIn.RSjihao=1; strcpy(R-xuehao,m); /*将输入的学号复制到R-xuehao */R-next=NULL; DUILEIn.first=R; DUILEIn.last=R; DUILEIn.RS+; printf(成功预定n); else R=(struct xinxi *)malloc(sizeof(struct xinxi); strcpy(R-xuehao,m); /*将输入的学号复制到R-xuehao */R-next=

7、NULL; p= DUILEIn.last; /*将最后预订记录赋值给p*/R-jihao= DUILEIn.RS+1; printf(%d,R-jihao); /*表示该时间段第几位预订*/DUILEIn.last=R; /*将当前的记录做为最后记录以便形成链表形式指向下一个*/p-next=R; DUILEIn.RS+; /*记录人数*/printf(预定成功n); else printf(没有空余机位!n); else printf(错误.请输入819,再次输入.n); 取消查询模块开始输入查询序号或查询时间判断是否预定,是否有空余机位?显示数据结束N/*查询空位*/void chaxu

8、nkongwei() int n; printf(输入想要查询的时间(819点,包括8点)n); scanf(%d,&n); if(n=8&n20)n=D(n); if(DUILEIn.RS=8&nnext!=NULL;R=R-next) /*从第一名学生开始查询直到找到符合的学号,以便确认是否预订*/if(strcmp(R-xuehao,m)=0)break;if(R-jihao!=0) /*已预订,输出相应的信息*/printf(你的机位是%dn,R-jihao); else printf(对不起.你依旧在等待列表中或者没有预定);else printf(错误,请再次输入.n); /*排队

9、系统模块*/void paiduixitong() int n; char m20; struct xinxi *R; struct xinxi *p; printf(请输入想要排队的时间n); scanf(%d,&n); if(n=8&n=Z) /*该时间段没有空位机,需要预订等待*/ printf(请输入你的学号n); scanf(%s,m); if(DUILEIn.RS)=Z) R=(struct xinxi *)malloc(sizeof(struct xinxi); strcpy(R-xuehao,m); R-next=NULL; R-jihao=0; p= DUILEIn.last

10、; DUILEIn.last=R; p-next=R; DUILEIn.middle=R; /*等待预订列表*/DUILEIn.RS+; printf(成功排队n); /*将刚输入学生信息拍到最后一名后,成最后一名*/else R=(struct xinxi *)malloc(sizeof(struct xinxi); strcpy(R-xuehao,m); R-next=NULL; R-jihao=0; p= DUILEIn.last; DUILEIn.last=R; p-next=R; DUILEIn.RS+; printf(成功排队n); else printf(有空余机位,无须等待n)

11、; else printf(错误.再次输入.n); 取消模块 开始输入预定时间 判断是否预定与排队成功取消预定结束N/*取消预订模块*/void cancel() int n; int i; char m20; struct xinxi *R; struct xinxi *q; struct xinxi *p; printf(请输入预定的时间n); scanf(%d,&n); if(n=8&nnext,i+) /*查找符合信息*/if(strcmp(R-xuehao,m)=0)break; if(iZ) /*iz表示在等待列表中*/ if(R-next=NULL) q-next=NULL; D

12、UILEIn.last=q; free(R); DUILEIn.RS-; printf(取消成功!n); /*如果是排在20名后,且是最后一名*/ else q-next=R-next; free(R); DUILEIn.RS-; printf(取消成功!n); /*如果排在20名后,但不是最后*/ else /*正在上机者取消预订*/ if(DUILEIn.RSZ) DUILEIn.middle-jihao=R-jihao; DUILEIn.middle= DUILEIn.middle-next; /*如果排在20名内,但总人数(包括等待列表人数)大于20 */if(i=1) DUILEIn

13、.first=R-next; else q-next=R-next; free(R); DUILEIn.RS-; printf(成功取消预定!n); else printf(错误,请再次输入.n); 四用户使用说明点击运行进入主菜单函数,然后按数字键选择所需要的服务。1查询空机位。2预订系统3取消预订,取消已预订机位4查询所预订机位5排队系统,查看所需上机时间排队情况6等机者列表,查询其他等待者的预定时间0退出系统五测试结果1主界面函数2查询空机位3预订系统4取消预订5查询所预订机位6排队系统7等机者列表8退出系统六设计小结这套程序应用起来并不是很方便,总的说来,大致上实现了题目的要求,各个功

14、能有相应的代号来直接调用,对于初次进入主函数页面的使用者来说,显得不大好用。不过用熟之后,都不是问题。对策:对于c语言编出的程序来说,使用方法大致上都是一样的,所以想做改进只能从程序方面入手,尽量把指令编的简单明了,方便易用。本人对这一程序还是相当满意的,想弄的更好的话可以尝试一下用其他编辑程序来完成。短短的一个星期的上机实习结束了。复习理论知识、编程、调试、改错,直至存盘,同样的环节、同样的工作步骤,重复又重复,枯燥而乏味;看似简单的程序题,编写后调试却屡屡出错。如何改如何错,怎么编写怎么调试失败,心烦而意乱。但奇怪的是,越是如此,我越是不甘失败。不断地调试,反复地编写。一旦在黑屏幕的左下角

15、意外地发现所输出的信息正是自己意想中的结果,那份惊喜,那份满足感,真是令人难以形容。好比幼儿经过长时间堆积不断倒塌的积木后,终于垒起了一座“大楼”。那份心底里的成就感,可以让你顿时忘记了所有的烦躁,因为那一切付出都是值得的。在实习的过程中,我得到的不仅仅是将理论与实践结合在一起的技巧与方法,而更可贵的是做事情的态度缓和懂得与人相处的重要性。上学期在学习C语言程序设计理论时,总觉得这一切都太简单了,原来什神秘的IT领域是那么的简单易懂,只要掌握了其中的方法,上机并不成问题。结果却是大大出乎我的意料。编写的程序从理论上来说并未出错,但一到上机调试时却无法运行;即算是课本的问题原封不动地照搬,也可能

16、回得到截然不同的结果这让我对于毛泽东同志所提倡的做事态度“解放思想,实事求是”顿时有了一种清晰的认识。正因为编程的困难与复杂,同学间的合作与互助就显得尤为有效。对于同一道程序题,合作互助让我们掌握更多种方法;对于复杂乏味的调试,合作互助让我们更容易找到错误所在,从而提高编程效率。合作互助更增进了同学之间(不管之前认识与否)的感情与友谊,拉近了彼此的距离。在这次实习过程中,我尤其要感谢刘远兴老师对我的悉心指导和耐心讲解。他扎实的计算机基础知识和熟练的上机技巧,及通俗易懂的讲解,都让我受益匪浅。更令我高兴的是,对于以前一些基本的、经常出现的,但又无法理解的计算机问题,经过刘老师的指点,顿时茅塞顿开

17、。真心希望学校以后还有更的多上机实习机会。七参考文献1谭浩强.C程序设计(第二版).北京:清华大学出版社,19992刘瑞挺.计算机二级教程.南开大学出版社,19963陈朔鹰等.C语言程序设计基础教程.兵器工业出版社,19944姜仲秋等.C语言程序设计.南京大学出版社,1998八附录(源程序)#include #include #include #define SJD 6 /*宏定义定义SJD Z NULL D(r)*/#define Z 20 #define D(s) (s-8)/2 /*将输入的时间划分时间段;分别为0,1,2,3,4,5时间段*/ #define NULL 0 struct

18、 xinxiint jihao; char xuehao20;struct xinxi *next; ; /*结构函数包含学生信息:机位,学号,还有下名学生信息*/struct cellint RS; /*RS表示总人数*/struct xinxi *first; /*第一个预订者记录*/struct xinxi *middle; /*等待队列列表*/struct xinxi *last; /*最后预订者记录*/ DUILEISJD; /*学生时间(SJD)段顺序:人数,第一名学生,排队的学生,最后一名学生*/*预定模块*/void yuding() int n; char m20; /*学号

19、*/struct xinxi *R; struct xinxi *p; printf(输入想要预定的时间n); scanf(%d,&n); if(n=8&n20) n=D(n); /*将输入的时间划分时间段*/ if(DUILEIn.RSjihao=1; strcpy(R-xuehao,m); /*将输入的学号复制到R-xuehao */ R-next=NULL; DUILEIn.first=R; DUILEIn.last=R; DUILEIn.RS+; printf(成功预定n); else R=(struct xinxi *)malloc(sizeof(struct xinxi); str

20、cpy(R-xuehao,m); /*将输入的学号复制到R-xuehao */ R-next=NULL; p= DUILEIn.last; /*将最后预订记录赋值给p*/ R-jihao= DUILEIn.RS+1; printf(%d,R-jihao); /*表示该时间段第几位预订*/ DUILEIn.last=R; /*将当前的记录做为最后记录以便形成链表形式指向下一个*/ p-next=R; DUILEIn.RS+; /*记录人数*/ printf(预定成功n); else printf(没有空余机位!n); else printf(错误.请输入819,再次输入.n); /*查询空位模块

21、*/void chaxunkongwei() int n; printf(输入想要查询的时间(819点,包括8点)n); scanf(%d,&n); if(n=8&n20) n=D(n); if(DUILEIn.RS=8&nnext!=NULL;R=R-next) /*从第一名学生开始查询直到找到符合的学号,以便确认是否预订*/if(strcmp(R-xuehao,m)=0)break;if(R-jihao!=0) /*已预订,输出相应的信息*/printf(你的机位是%dn,R-jihao); else printf(对不起.你依旧在等待列表中或者没有预定); else printf(错误,

22、请再次输入.n); /*排队系统模块*/void paiduixitong() int n; char m20; struct xinxi *R; struct xinxi *p; printf(请输入想要排队的时间n); scanf(%d,&n); if(n=8&n=Z) /*该时间段没有空位机,需要预订等待*/ printf(请输入你的学号n); scanf(%s,m); if(DUILEIn.RS)=Z) R=(struct xinxi *)malloc(sizeof(struct xinxi); strcpy(R-xuehao,m); R-next=NULL; R-jihao=0; p

23、= DUILEIn.last; DUILEIn.last=R; p-next=R; DUILEIn.middle=R; /*等待预订列表*/DUILEIn.RS+; printf(成功排队n); /*将刚输入学生信息拍到最后一名后,成最后一名*/else R=(struct xinxi *)malloc(sizeof(struct xinxi); strcpy(R-xuehao,m); R-next=NULL; R-jihao=0; p= DUILEIn.last; DUILEIn.last=R; p-next=R; DUILEIn.RS+; printf(成功排队n); else print

24、f(有空余机位,无须等待n); else printf(错误.再次输入.n); /*取消预订模块*/void cancel() int n; int i; char m20; struct xinxi *R; struct xinxi *q; struct xinxi *p; printf(请输入预定的时间n); scanf(%d,&n); if(n=8&nnext,i+) /*查找符合信息*/if(strcmp(R-xuehao,m)=0)break; if(iZ) /*iz表示在等待列表中*/ if(R-next=NULL) q-next=NULL; DUILEIn.last=q; fre

25、e(R); DUILEIn.RS-; printf(取消成功!n); /*如果是排在20名后,且是最后一名*/ else q-next=R-next; free(R); DUILEIn.RS-; printf(取消成功!n); /*如果排在20名后,但不是最后*/ else /*正在上机者取消预订*/ if(DUILEIn.RSZ) DUILEIn.middle-jihao=R-jihao; DUILEIn.middle= DUILEIn.middle-next; /*如果排在20名内,但总人数(包括等待列表人数)大于20 */if(i=1) DUILEIn.first=R-next; else q-next=R-next; free(R); DUILEIn.RS-; printf(成功取消预定!n); else printf(错误,请再次输入.n); /*待机者列表模块*/void daijizheliebiao() int n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论