




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
. 实习报告题目:停车场管理一 需求分析1 用栈来表示停车场,用队列来表示停车道。2 用户需输入车辆的必要信息,如车辆的到达或离开,汽车牌号以及到达或离去的时刻。停车场的容量及单位时间的停车费由编程序者自行设置,结构需输出车辆停车所需缴纳的费用。3 本程序要求对车辆的动态能够输出具体的信息内容,包括停车或离开的时间,位置,及所需缴纳的停车费。4 测试数据为:N=2,输入数据为:(A,1,5),(A,2.,10), (D,1,15), (A,3,20), (A,4,25), (A,5,30), (D,2,35), (D,4,40), (E,0,0). 其中:A表示到达,D表示离去,E表示输入结束。5. 程序执行的命令为:1. 创建栈和队列。 2.对车辆的行为进行相应的处理。 3.输出车辆的信息。二 概要设计1. 设定栈的抽象数据类型定义:ADT Stack 数据对象:D=ai|ai属于Elem,i=1,2,n, n=0 数据关系:R1=| ai-1,ai属于D,i=2,,n 基本操作: initStack(&S) 操作结果:构造一个空栈S. pop(&S,&e) 初始条件:栈S已存在。 操作结果:删除S的栈顶元素,并以e返回其值。 push(&S,&e ) 初始条件:栈S已存在。 操作结果:在栈S的栈顶插入新的栈顶元素e。 lengthstack(S) 初始条件:栈S已存在。 操作结果:返回S中的元素个数,即栈的长度。ADT Stack;2. 设定队列的抽象数据类型定义:ADT Queue 数据对象:D=ai| ai属于Elem, i=1,2,,n, n=0 数据关系:R1=| ai-1,ai 属于D,i=2,n 基本操作: initqueue(&Q) 操作结果:构造一个空队列Q. enqueue(&Q, e) 初始条件:队列Q已存在。操作结果:插入元素e为Q的新的队尾元素。 dequeue(&Q, &e)初始条件:Q为非空队列。操作结果:删除Q的对头元素,并用e返回其值。 Lengthqueue(Q) 初始条件:队列Q已存在。操作结果:返回Q的元素个数,即队列的长度。ADT Queue3. 本程序主要包括三个模块1. 主程序模块;int main() 初始化; do接受命令;处理命令; while(命令!=退出);2. 处理车辆到达模块;3. 处理车辆离开模块;各模块之间的调用关系如下: 处理车辆到达模块主程序模块处理车辆离开模块三 详细设计 设计程序如下:#include#define n 2 /将停车场的容量设为2;#define cost 10/将单位时间的停车费设为10,车道里不收费; #define OVERFLOW -2 #define ERROR 0/分配栈的存储空间失败;using namespace std;typedef struct Elem/定义元素数据结构类型 int carnum; int time;Elem;typedef struct QNode/队列 struct QNode *next; Elem Qelem;QNode,*QueuePtr;typedef struct QueuePtr front;/队头指针 QueuePtr rear;/队尾指针LinkQueue;void initqueue(LinkQueue &Q)/构造一个空队列 Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode); if(!Q.front)exit(OVERFLOW); Q.front-next=Q.rear-next=NULL;void enqueue(LinkQueue &Q,int carnum,int time)/入队操作 QueuePtr p=(QueuePtr)malloc(sizeof(QNode); p-Qelem.carnum=carnum; p-Qelem.time=time; p-next=NULL; Q.rear-next=p; Q.rear=p;int lengthqueue(LinkQueue Q)int i=0;QueuePtr p;p=Q.front-next;while(p!=Q.rear)i+;p=p-next;i+;return i;void dequeue(LinkQueue &Q,Elem &e)/从对头离队操作,并返回其值 QueuePtr p=(QueuePtr)malloc(sizeof(QNode); if(Q.front=Q.rear) cout车道中没有车辆!next; e=p-Qelem; Q.front-next=p-next; if(Q.rear=p) Q.rear=Q.front; free(p); typedef structElem *base;Elem *top;int stacksize;Sqstack;void initStack(Sqstack &S)/创建一个空栈S.base=(Elem*)malloc(n*sizeof(Elem);if(!S.base) exit(OVERFLOW);S.top=S.base;S.stacksize=n;int push(Sqstack &S,Elem &e)/插入新的元素Elem *temp;if(S.top-S.base=S.stacksize) return 1;elsetemp=S.top; temp-carnum=e.carnum;temp-time=e.time;S.top+;return 0;int lengthstack(Sqstack S)/当前栈的长度return S.top-S.base;int pop(Sqstack &S,Elem &e) /删除栈顶元素,并返回其值if(S.top=S.base) return ERROR;e=*-S.top;return 1;void carin(Sqstack &S,LinkQueue &Q,Elem car)int k=0;/输入数据正确QueuePtr r;Elem *temp;temp=S.base;while(temp!=S.top)/在栈中寻找是否有同一编号的车;if(temp-carnum=car.carnum)cout该车号在停车场中已存在,请重新输入!next; /队头 while(r&r-Qelem.carnum!=car.carnum)r=r-next;if(r&r-Qelem.carnum=car.carnum) cout该车号在车道中已存在,请重新输入!carnum=car.carnum;S.top-time=car.time;S.top+;cout请进入停车场lengthstack(S)号车位!endl;elseenqueue(Q,car.carnum,car.time);cout请便车道lengthqueue(Q)稍等!carnum=car.carnum) int temp_cost; temp_cost=(car.time-temp-time)*cost; ture=1;/在栈中找到 cout您的停车时间为time小时,请交纳费用!temp_costcarnum=e.carnum;S.top-time=car.time;S.top+;coutendl请便道的第一辆车牌号是:e.carnum转入停车场,停车起始时刻是:car.time! 停车位置为lengthstack(S)号!next; /队头while(r&r-Qelem.carnum!=car.carnum)p=r;r=r-next;if(r&r-Qelem.carnum=car.carnum)ture=2; /在队列中找到要离开的车 if(r&r-Qelem.carnum=car.carnum)ture=2;cout便道Qelem.carnum号车离开,不收取费用!next=r-next;free(r);/直接从队列离开 if(ture=0)cout没有该辆车!endl;int main() char c; int j=0,temp_time,i=1;/i=0,判断临时记录时间的temp_time应该去该次的值,还是上次的值。j=0,表示第一次输入数据,不需要检测数据是否正确 LinkQueue Q; Sqstack S; Elem car; initqueue (Q); initStack(S); cout请输入车辆信息(到达离开或退出标志A D E,车牌号,当前时间)ccar.carnumcar.time) if(j=1) if(S.top=S.base)cout停车场中没有车!endl; else if(car.timetemp_time&c!=E) cout您输入的时间有误,请重新输入!endl; i=0;/temp_time还是记录上次的值 else temp_time=car.time; i=1; if(i=1) /正确的数据 if(c=A)/到达 carin(S,Q,car); else if(c=D) if(S.top=S.base) ; else carleave(S,Q,car); j=1; if(j=0)/第一次输入数据不需要检测 if(c=A)/到达 carin(S,Q,car); else if(c=D) if(S.top=S.base)cout停车场中没有车!endl; else carleave(S,Q,car); j=1; temp_time=car.time; if(c=E) cout输入结束!endl; break; return 0;四 调试分析 1. 本次作业
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 1 I'm hungry教学设计-2025-2026学年小学英语三年级下册教科版(EEC)
- 跨学科实践活动8 空间站中“再生生保系统”方案设计说课稿-2025-2026学年初中化学鲁教版2024九年级下册-鲁教版2024
- 2025年新能源汽车动力电池行业企业数字化升级与供应链整合分析报告
- 2025年中国太阳能硅片硅碇行业市场发展趋势与投资机会研究报告
- 新能源光伏发电组件技术创新与知识产权保护策略分析报告
- 2025年电商知识产权保护与网络版权法律法规解读报告
- 第五课 校园文化报-图文混排教学设计-2025-2026学年初中信息技术(信息科技)七年级上册长春版
- 复绿喷灌系统施工方案
- 展览馆改造施工方案
- 温州水平钢支撑施工方案
- 2025既有办公建筑体检评价标准
- 买卖山岭合同标准文本
- 生产型企业工人的薪酬设计方案
- 高考化学复习清单
- 初中数学考试中常用的70条二级结论
- 【MOOC】英汉交替传译-东北大学 中国大学慕课MOOC答案
- 音乐情感及情绪 课件-2024-2025学年高中音乐人音版(2019)必修 音乐鉴赏
- DB14T 2922-2023 公路机电工程标准工程量清单及计量规范
- 新苏教版科学五年级上册《热对流》课件
- 2024年03月黑龙江省绥化市2024年度“市委书记进校园”引才活动引进1523名人才(第一阶段)笔试历年典型考题及考点研判与答案解析
- 喉癌“一病一品”
评论
0/150
提交评论