




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计院系:工程学院姓名:杨文和学号:20051003679班号:05205222指导教师:王老师日期:2007年9月 机房机位预约模拟 一.题目要求20台机器,从早八点到晚八点,每两个小时一个时间段.需要实现的功能:(1) 查询,根据输入的时间,输出机位信息.(2) 机位预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近空机时间段.另:若用户要求在非空时间上机,则将用户信息插入该时间段的等待列表.(3) 退出预定,根据输入的时间,撤消该时间的饿预定.(4) 查询是否有等待信息,若有则按顺序显示联系方式,若无则显示提示信息.二.需求分析根据题目要求,需要提供机位信息和预约信息,应该用链表来存储,应提供指针的操作:在程序中,需要查询是否有空机位和等待者和处理预约和取消预约问题,应提供查询,显示,预定,删除,修改等操作;另外还要提供键盘式选择菜单实现功能选择.三.总体设计现在分析整个一下整个系统,根据上面的需求分析,可以将这个系统的设计分为如下六大模块:查询我的预约状态,查询空位,预约,取消预约,排队,查询等待信息.机房机位模拟系统我的预约状态查询空位预约取消预约排队查询等带信息四.详细设计1宏定义#include#include#include#define LENGTH 6/*总时段数*/#define MAX 2 #define S(r) (r-8)/2/*计算在哪个时段数*/ struct node int locat; char data10;/*学号,假设为联系方式*/ struct node *next;struct node *head;struct cell int CNum;/*连接在该时段头结点的总机器数目*/ struct node *first;/*指向整个队列的开头*/ struct node *middle;/*指向等待预约队列*/ struct node *last;/*指向整个队列的结尾*/TimeQueueLENGTH;2.主函数输入n,判断n是否是0-6显示一系列功能信息主函数一般设计的比较简洁,只提供输入,处理和输出部分的函数调用.其中个功能模块用菜单方式选择。NY根据n的值调用各功能模块函数【程序】 main() /*主函数*/ int i; for(i=0;idata,来判断我的预约状态。 流程图输入要查询的时间n,判断n是否820YNn=s(n)根据的n值和输入的学号来查找链表中是否有该值和其的位置,从而达到查询出我的状态的目的提示:输入错误,请重新输入【程序】void Inquir() int n; int i; char Infor10; struct node *q; struct node *Rem; printf(Please input the time you want to search!(24 xiao shi zhi between8 and 20 oclock,include 8oclock)n); scanf(%d,&n); if(n=8&nnext,i+) if(strcmp(Rem-data,Infor)=0)break; if(Rem-locat!=0) printf(The computer number you have during this period period is %dn,Rem-locat); else printf(Sorry,you are still in the waiting queue!);else printf(Error.Please input again.n)(2)查询空机位模块分析根据输入的时间确定n值,然后根据结构体中TimeQueue中的TimeQueuen-Cnum的值,求出最大值与该值的差即为空机位数。流程图输入要查询的时间n判断n是否820Yns(n)N根据n的值判断TimeQueuen-Cnum的值是否小于最大值MAXYN空机位数=MAXTimeQueuen-CNum输出:没有空机位提示:输入错误,请重新输入【程序】 void inquir() int n; printf(Please input the time you want to search.(24 hours 824 oclock,include 8 clock)n); scanf(%d,&n); if(n=8&n20) n=S(n); if(TimeQueuen.CNumCnum的值是否小于最大值MAX提示:已经没有空机位输入预约者的学号TimeQueuen.first是否为空YN把预约者的信息插入到链表的表尾把预约者信息储存在链表的第一个结点【程序】void booking()/*/ int n; char Infor10; struct node *Rem; struct node *p; printf(Please input the time you want to book!n); scanf(%d,&n); if(n=8&n20) n=S(n); if(TimeQueuen.CNumlocat=1; strcpy(Rem-data,Infor); Rem-next=NULL; TimeQueuen.first=Rem; TimeQueuen.last=Rem; TimeQueuen.CNum+; printf(Succeed to book!n); else Rem=(struct node *)malloc(sizeof(struct node); strcpy(Rem-data,Infor); Rem-next=NULL; p=TimeQueuen.last; Rem-locat=TimeQueuen.CNum+1; printf(%d,Rem-locat); TimeQueuen.last=Rem; p-next=Rem; TimeQueuen.CNum+; printf(Succeed to book!n); else printf(There is no empty computer!n); else printf(Error.Please input again.n); (4)排队模块 分析该模块主要是针对是否要排队和如何排队设计的。当预约者总数小于最大值时提示不用排队。当预约者的总数大于最大值时就需要排队。把排队者的信息储存在由指向结构体的指针指向的动态分配的存储区域,然后连接到TimeQueuen的表尾。用指向等待队列的指针指向排队的第一人,通过指针的移动,用指向表尾的指针指向真个链表的结尾。流程图N输入要查询的时间n判断n是否820Y提示:输入错误请重新输入ns(n)根据n的值判断TimeQueuen-Cnum的值是否小于最大值MAXNYNY提示:还有空机位,不需要排队。Cnum是否MAX把排队者的信息连接到链表的结尾处,即排队的第一个把排队者的信息联接到队尾处。【程序】 void waiting()/*/ int n; char Infor10; struct node *Rem; struct node *p; printf(Please input the time you want to wait!n); scanf(%d,&n); if(n=8&n=MAX) printf(Please input your No!n); scanf(%s,Infor); if(TimeQueuen.CNum)=MAX) Rem=(struct node *)malloc(sizeof(struct node); strcpy(Rem-data,Infor); Rem-next=NULL; Rem-locat=0; p=TimeQueuen.last; TimeQueuen.last=Rem; p-next=Rem; TimeQueuen.middle=Rem; TimeQueuen.CNum+; printf(Succeed to in the queue。n); else Rem=(struct node *)malloc(sizeof(struct node); strcpy(Rem-data,Infor); Rem-next=NULL; Rem-locat=0; p=TimeQueuen.last; TimeQueuen.last=Rem; p-next=Rem; TimeQueuen.CNum+; printf(Succeed to in the queue。n); else printf(There is still have empty computer。No wait!); else printf(Error.Please input again.n); (5)取消预约模块分析 要取消预约,有两种情况,第一是从有机位的人要取消预约,在该种情况下,排队的第一人的位置就插入到该取消者的位置。而指向等待队列首地址的指针就指向原来排队的第二人。第二种情况就是取消预约的人本来就在等待队列中,只需要直接删除该结点即可。流程图N输入要查询的时间n判断n是否820 Y提示:输入错误请重新输入ns(n)输入学号,查找该链表中该信息的位置i,i是否不大于MAXNY退出预约,排队者的第一人插入该预约者的位置。 退出预约【程序】void cancel() int n; int i;/*记载删除点的队列位置*/ char Infor10; struct node *Rem; struct node *q; struct node *p; printf(Please input the time you have booked.n); scanf(%d,&n); if(n=8&nnext,i+) if(strcmp(Rem-data,Infor)=0)break; if(iMAX)/*注意退出预定的情况包括退出在等待队列中预定的情况!*/ if(Rem-next=NULL) q-next=NULL; TimeQueuen.last=q; free(Rem); TimeQueuen.CNum-; printf(“Succeed to out the queue!n); else q-next=Rem-next; free(Rem); TimeQueuen.CNum-; printf(Succeed to out the queue!n); else if(TimeQueuen.CNumMAX) TimeQueuen.middle-locat=Rem-locat; TimeQueuen.middle=TimeQueuen.middle-next; if(i=1) TimeQueuen.first=Rem-next; else q-next=Rem-next; free(Rem); TimeQueuen.CNum-; printf(Succeed to out the queue!n); else printf(Error.Please input again.n); (6)查询等待信息模块分析通过输入的时间,判断储存该时间段的结构体链表,通过比较TimeQueuen中Cnum的值与最大值的大小关系就可以得到是否有等待者的信息。流程图N输入要查询的时间n判断n是否820Yns(n)提示:输入错误请重新输入根据n的值判断TimeQueuen-Cnum的值是否小于最大值MAX YYN有等待者没有等待者【程序】void inquir_waiting() int n; struct node *q; printf(Please input the time you want to search the waiter.n); scanf(%d,&n); if(n=8&nMAX) printf(The waiter are:n); q=TimeQueuen.middle; for(;q-next!=NULL;q=q-next) printf(%sn,q-data); printf(%sn,TimeQueuen.last-data); else printf(There is no waiter during thi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年合同风险隐患排查与规范化整改实施方案
- 2025租房协议书(合同文体)
- 2025年监理工程师《合同管理》重点考点
- 生物尿的形成与排出 教案-2024-2025学年北师大版生物七年级下册
- 《2025年度常务副总经理聘用合同》
- led屏安装合同模板完整版
- 2025年吉林货运从业资格模拟考试题
- 2025年襄阳货车从业资格证考什么
- 海上运输货物遭受海浪保险理赔的真实案例
- 2025年漳州货运员初级考试题库
- 吉林省吉林市2024-2025学年高三下学期3月三模试题 生物 含答案
- 2025年陕西农业发展集团有限公司(陕西省土地工程建设集团)招聘(200人)笔试参考题库附带答案详解
- 2025年03月中央社会工作部所属事业单位公开招聘11人笔试历年参考题库考点剖析附解题思路及答案详解
- 2025年中高端女装市场趋势与前景深度分析
- 2025北京清华附中高三(下)统练一数学(教师版)
- 2025-2030中国孵化器行业市场发展前瞻及投资战略研究报告
- 5.3基本经济制度 课件 2024-2025学年统编版道德与法治八年级下册
- Unit4 Breaking Boundaries 单元教学设计-2024-2025学年高中英语外研版(2019)选择性必修第二册
- T-CCTAS 61-2023 桥梁承重缆索抗火密封综合防护技术规程
- 2025慢性阻塞性肺病(GOLD)指南更新要点解读课件
- 2024年05月湖北中国邮政储蓄银行湖北省分行春季校园招考笔试历年参考题库附带答案详解
评论
0/150
提交评论