停车场管理实验报告.doc_第1页
停车场管理实验报告.doc_第2页
停车场管理实验报告.doc_第3页
停车场管理实验报告.doc_第4页
停车场管理实验报告.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

问题需求分析问题描述设停车场是一个可以停放n辆汽车的狭长通道,且 只有一个大门可以供车辆进出。车辆按到达停车场时间的早、晚依次从停车场最里向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,那么,后面进入停车场的车只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且在便道上等待的车辆依然保持原有次序不变。设计一个程序,模拟此停车场管理。需求分析停车场采用栈式结构,停车场外的便道采用队列结构(即便道就是等候队列)。停车场的管理流程如下:当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进栈(车辆进入停车场);如果停车场已满,则车辆进入等候队列(车辆进入便道等候)。当车辆要求出栈时,该车到栈顶的那些车辆先进入辅助栈(在它之后进入的车辆必须先退出车场为它让路),再让该车出栈,其他车辆再按原次序进栈(进入车场)。当车辆出栈完毕后,检查等候队列(便道)中是否有车,有车则从队头取出一辆车压入栈中。用栈模拟停车场,用队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车到达或离去的信息,汽车牌照号码以及到达或离去的时刻。每次输入完,进行输出操作:若是车辆到达,输出汽车在停车场内或便道上的停车位置;若是车辆离去,输出停留时间和应缴纳的费用(在便道上停留的时间不收费)。其中栈以顺序结构实现,队列以链表结构实现。算法与数据结构的设计算法设计 开始 推出本程序查找车的位置车离开停车场进入停车场流程输入A 输入E输入F输入L 输出提示信息进入选项停车 调用队列函数栈已满false调用车入栈函数输入停车场信息turetop!=top-1开始 车离开停车场 算法的精华与程序的实现(程序实现的核心算法) 停车函数void car_come(PSTOPPING stop,PPAVEMENT pave,char *plate,char *in_time) /*来车函数*/if(stop-top!=MAX_STOP-1)stop-top+;stop-STOPstop-top.license_plate=plate;stop-STOPstop-top.in_time=in_time; stop-STOPstop-top.state=S;printf(请您停放在%d号车位!您的入场时间为:%sn,stop-top+1,stop-STOPstop-top.in_time);elsepave-PAVEpave-rear.license_plate=plate;pave-PAVEpave-rear.in_time=in_time; pave-PAVEpave-rear.state=P; printf(停车位已满!请在便道等待!您的入场时间为:%sn,pave-PAVEpave-rear.in_time); pave-rear=(pave-rear+1)%MAX_PAVE;离开函数void stop_to_buff(PSTOPPING stop,PBUFFER buff,int pos) /*暂入辅助栈函数*/ buff-top+;buff-BUFFbuff-top.license_plate=stop-STOPpos.license_plate;buff-BUFFbuff-top.in_time=stop-STOPpos.in_time;stop-top-;printf(牌照为%s的汽车暂时退出停车位!n,stop-STOPpos.license_plate);void buff_to_stop(PSTOPPING stop,PBUFFER buff,int pos) /*由辅助栈返回停车位函数*/stop-top+; stop-STOPpos.license_plate=buff-BUFFbuff-top.license_plate;stop-STOPpos.in_time=buff-BUFFbuff-top.in_time; stop-STOPpos.state=S; buff-top-;printf(牌照为%s的汽车停回停车位的%d车位!n,stop-STOPpos.license_plate,pos+1);void pave_to_stop(PSTOPPING stop,PPAVEMENT pave) /*由便道进入停车位函数*/ stop-top+; stop-STOPstop-top.license_plate=pave-PAVEpave-front.license_plate;stop-STOPstop-top.in_time=pave-PAVEpave-front.in_time; stop-STOPstop-top.state=S; printf(牌照为%s的汽车从便道上进入停车位的%d车位!n,pave-PAVEpave-front.license_plate,MAX_STOP); pave-front=(pave-front+1)%MAX_PAVE;查找函数void show_car(PSTOPPING stop,PPAVEMENT pave,char *plate) /*查找并显示信息函数*/int i,j;for(i=0;itop;i+)if(!strcmp(stop-STOPi.license_plate,plate) break;/栈内假如得到寻找的车牌号就跳出if(i=stop-top+1)for(j=(pave-front)%MAX_PAVE;jrear;j+)if(!strcmp(pave-PAVEj.license_plate,plate) break;if(itop+1)printf(您的汽车%s位于停车位的%d车位!nn,plate,i+1);elseif(jrear)printf(您的汽车位于便道的%d位置!nn,j-(pave-front)%MAX_PAVE+1);elseprintf(对不起,停车场中无此车!nn);程序的调试与计算的结果分析 调试情况 进入停车场停车场已满车离开停车场查找车与退出系统结果分析 本程序能够实现编写的各个函数时间代价分析定义数据类型的的时间代价为2O(5),车进入停车场得函数的时间代价函数为O(5),车离开停车内函数的时间代价为5O(5).,离车函数的时间代价为2O(c)+O(5),显示停车场情况函数的时间代价为O(i)+O(j)O(k), 查找并显示信息函数的时间代价为O(i)+O(j).有待改进的问题和收获体会有待改进的问题 :程序不能实现停车场

温馨提示

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

评论

0/150

提交评论