版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验二停车场管理班级:A0712学号:12姓名:冷清淼成绩:指导教师签名:一、问题描述设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。在停车场内,汽车按到达的先后次序,由北向南依次排歹0(假设大门在最南端)若停车场内已停满n辆车,则后来的汽车需在门外的便道上等候,当有车开走时,便道上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出停车场为它让路,待该辆车开出大门后,其他车辆再按原次序返回车场。每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不收费)。设计要求:1. 模拟上述管理过程。要求以顺序栈模拟停车场,以链队列模拟便道。2. 从终
2、端读入汽车到达或离去的数据,每组数据包括三项:(1) 是“到达”还是“离开”;汽车牌照号码;“到达”或“离开”的时刻。3. 与每组输入信息相应的输出信息为:如果是到达的车辆,则输出其在停车场中或便道上的位置;如果是离去的车辆,则输出其在停车场中停留的时间和应交的费用。二、算法说明1. 数据结构说明(1) 用到两个堆栈:一个为车场栈;另一个为临时栈temptypedefstructNODE(CarNode*stackMAX+1;inttop;SeqStackCar;/*模拟车场*/(2) 一个队列结构,存储便道车辆信息:typedefstructNode(QueueNode*head;Queue
3、Node*rear;LinkQueueCar;/*模拟便道*/算法说明功能模块说明:停车场管理系统含有三个模块,即:车辆到达、离开、列表显示(2)图1以模块为单位分析算法“到达”模块:到达时有两种情况,即车场是否满,未满则直接进入停车场;满时,到便道等待。如图2。车辆到达V:停车场是否满nr否进入便道进入停车场2.“离开”模块:离开时,当车库为空时,提示没有车,结束;否则车辆离开。如图3。3.车辆离开图3“显示”模块:显示模块有两个显示选项,即:车场与便道。如图4。图4三、测试结果(一)测试用例(说明:测试用例要合理并且足够,既要有正确用例,也要有错误用例,同时检验程序的正确性和强壮性)第一组
4、测试用例(1)测试输入:停车场的车辆离开,如下表:服务选择车牌号/车位到达/离开时间1QH05815:251AB12318:451EA64223:15220:30210:65(错误)(2) 测试目的:测试离开方法时间格式控制以及费用计算是否正确。(3) 正确输出:第一次离开的是AB123,应交费3.45元。第二次时,当在输入65时,应该提示输入错误,重输。(4) 实际输出:八D八课程学习集、程序设计实习、停车场何果辆时间段车3达隼1升12到离IAB其离B一一ts:4间为为0S3003为-:.二-D:课程学习集程序设计实习停车场何开65到开畜525:5元164S为.;间为为时间用S(5)错误原因
5、:第个错误是在计算时,一个数字错了;第二个是没有对时间格式控制。(6)当前状态:已改正1. 第二组测试用例(1) 测试输入:连续6辆车到达,如下表:服务选择车牌号到达时间1A88287:561S22968:251WW6668:451HK45615:501GH99912:301DD55513:40(2) 测试目的:测试到达方法与列表显示方法能否正确完成。(3) 正确输出:先到达的五辆车先进入停车场,最后到达的一辆在便道等候。(4) 实际输出:(5)错误原因:没有作出时间先后的判断,而是先输入先进入。(6)当前状态:待修改2. 第三组测试用例(1) 测试输入:接上一步输入离开信息,下表:服务选择离
6、开车位离开时间便道车进入时间2313:3013:40(2) 测试目的:测试离开方法功能是否成功以及便道进入车场是否正确。(3) 正确输出:输出3号车位的车辆离开信息清单,便道1号车进入停车场。(4) 实际输出:m,庆课程学习集程序设计实习停车场问题代码表单代玛夫DehuN.W666到达时间为=8=45鸟开时间为,13=30用为=2_857Et晅碰D5SS号车述车场第S位置,输入现在的时间如小时:分钟=340浪欢迎使用本停车管理系统一1.车楚到这一浓一采2.辅|盲矛采一.米必3.列表显示束一洪淤一4一退出系统一瞬明,请荏意正确输入时间,在输入“时”后按EMTEB”或者“空格”。不套为韭薮字?请选
7、择所蕾要的服务,显一二酒车费如-斗VK123选二.修7:5fi8:2515:5012:3013:40234显示信息,1-3:AS82SS2296HK456GH999DD555(5) 错误原因:没有错误。(6) 当前状态:通过(二)测试结果分析此停车管理系统基本可能实现一个小的停车场的管理,其“到达”与“离开”方法都相对比较完整,以及结算清单明了。尽管在时间先后上有出现混乱,但当其用到实际应用时,那个时间先后就可以避免了。但在输入数据时,要按照严格的格式输入,否则有可能出现死去或崩溃。若本系统能加上保存功能就更好了,因为一个系统在使用过程中总会关机等,而此系统的缺点却是没有保存功能,关闭之后就要
8、重新建立了。会慢慢完善。附录:源代码/系统说明:本系统适应于小型停车场,且停车时间在一天之内的短期停放停车场。/在此系统中,车库容量设置为5,便于测试。在实际使用中可以对容量大小按实际情况设置。#include#include#include#include#defineMAX5/*车库容量,可以根据实际情况改变*/#defineprice0.01/*一辆车每分钟费用,可变*/typedefstructtimeinthour;intmin;Time;/*时间结点*/typedefstructnodecharnum10;Timereach;Timeleave;CarNode;/*车辆信息结点*/
9、typedefstructNODECarNode*stackMAX+1;inttop;SeqStackCar;/*模拟停车场*/typedefstructcarCarNode*data;structcar*next;QueueNode;typedefstructNodeQueueNode*head;QueueNode*rear;LinkQueueCar;/*模拟便道*/*方法声明*/voidInitStack(SeqStackCar*);/*初始化栈*/intInitQueue(LinkQueueCar*);/*初始化便道*/intArrival(SeqStackCar*,LinkQueueC
10、ar*);/*车辆到达*/voidLeave(SeqStackCar*,SeqStackCar*,LinkQueueCar*);/*车辆离开*/voidList(SeqStackCar,LinkQueueCar);/*显示信息*/voidPRINT(CarNode*p,introom);/*输出离开车辆的信息清单*/voidmain()(system(colorF2);/*设置系统颜色,本系统为白底绿字f2*/SeqStackCarEnter,Temp;LinkQueueCarWait;intch;初始化车站*/初始化让路的临时栈*/初始化通道*/InitStack(&Enter);/*Ini
11、tStack(&Temp);/*InitQueue(&Wait);/*while(1)(淤欢迎使用本停车管理系统淤endl;coutcout*endl;cout淤-淤1.车辆到达-淤endl;cout淤-淤2.车辆离开-淤endl;cout淤-淤3.列表显不-淤endl;cout淤-淤4.退出系统-endl;cout*endl;cout!说明:请注意正确输入时间,在输入“时”后,按“ENTER或者“空格”,再输入“分”。不要为非数字!endl;cout请选择所需要的服务!(1-4).ch;if(ch=1&ch=4)break;elsecout输入错误!请选择:(1-4).top=0;for(i
12、=0;istacks-top=NULL;intInitQueue(LinkQueueCar*Q)/*初始化便道*/(Q-head=(QueueNode*)malloc(sizeof(QueueNode);if(Q-head!=NULL)(Q-head-next=NULL;Q-rear=Q-head;return(1);elsereturn(-1);intArrival(SeqStackCar*Enter,LinkQueueCar*W)/*车辆到达*/(CarNode*p;QueueNode*t;p=(CarNode*)malloc(sizeof(CarNode);flushall();cout
13、请输入车牌号(例:A1234):num);if(Enter-toptop+;cout车辆在车场第”top位置!endl;cout请输入到达时间:(小时:分钟)p-reach.hour;while(p-reach.hourreach.hour23)/控制时间格式正确(cout输入错误!endl;cout请重输入到达时间的时(0-23)!”p-reach.hour;cinp-reach.min;while(p-reach.minreach.min59)/控制分钟输入正确(cout输入错误!endl;cout请重输入到达时间的分(0-59)!”p-reach.min;Enter-stackEnter
14、-top=p;return(1);else/*车场已满,车进便道*/(cout车场已满,请在便道等待!data=p;t-next=NULL;W-rear-next=t;W-rear=t;return(1);voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W)/*车辆离开*/(introom;CarNode*p;QueueNode*q;/*判断车场内是否有车*/if(Enter-top0)/*有车*/(while(1)/*输入离开车辆的信息*/(cout请输入车在车场的位置1-toproom;if(room=1&roomtop)
15、break;while(Enter-toproom)/*车辆离开*/(Temp-top+;/*临时通道栈顶指针*/Temp-stackTemp-top=Enter-stackEnter-top;Enter-stackEnter-top=NULL;Enter-top-;p=Enter-stackEnter-top;Enter-stackEnter-top=NULL;Enter-top-;while(Temp-top=1)/*判断临时通道上是否有车*/(Enter-top+;Enter-stackEnter-top=Temp-stackTemp-top;Temp-stackTemp-top=NUL
16、L;Temp-top-;PRINT(p,room);if(W-head!=W-rear)&Enter-tophead-next;p=q-data;/*p指向链队头*/Enter-top+;cout便道的num”号车进入车场第top”位置!”endl;cout请输入现在的时间如(小时:分钟):p-reach.hour;if(p-reach.hourreach.hour23)(cout输入错误!endl;cout请重输入到达时间的时(0-23)!”p-reach.hour;cinp-reach.min;if(p-reach.minreach.min59)(cout输入错误!endl;cout请重输
17、入到达时间的分(0-59)!p-reach.min;Enter-stackEnter-top=p;W-head-next=q-next;if(q=W-rear)W-rear=W-head;free(q);/*释放q地址*/elsecout便道里没有车!endl;/*便道没车*/elsecout车场里没有车!endl;/*车场没车*/voidPRINT(CarNode*p,introom)/*输出离开车辆的信息清单*/(intA1,A2,B1,B2;cout请输入离开的时间:(小时:分钟)p-leave.hour;while(p-leave.hourleave.hour23)(cout输入错误!
18、endl;cout请重输入离开的时间的时(0-23)p-leave.hour;B1=p-leave.hour;cinp-leave.min;if(p-leave.minleave.min59)cout输入错误!endl;cout请重输入到达时间的分(0-59)!p-leave.min;coutendl离开车辆的车牌号为:num);cout其至U达时间为:reach.hour:reach.minendl;cout离开时间为:leave.hour:leave.minreach.hour;A2=p-reach.min;B1=p-leave.hour;B2=p-leave.min;cout应交费用为:(B1-A1)*60+(B2-A2)+1440)%1440*price元!endl;free(p);voidList1(SeqStackCar*S)/*列表显示车场信息*/cout您选择的是车场停车情况!top0)/*判断车站内是否有车*/cout位置到达时间车牌号endl;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论