收藏 分销(赏)

数据结构课程设计--停车场管理系统.doc

上传人:w****g 文档编号:3992440 上传时间:2024-07-24 格式:DOC 页数:10 大小:47.54KB
下载 相关 举报
数据结构课程设计--停车场管理系统.doc_第1页
第1页 / 共10页
数据结构课程设计--停车场管理系统.doc_第2页
第2页 / 共10页
数据结构课程设计--停车场管理系统.doc_第3页
第3页 / 共10页
数据结构课程设计--停车场管理系统.doc_第4页
第4页 / 共10页
数据结构课程设计--停车场管理系统.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、实验二停车场管理班级:A0712 学号:12 姓名:冷清淼 成绩:_指导教师签名:_一、问题描述设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。在停车场内,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端).若停车场内已停满n辆车,则后来的汽车需在门外的便道上等候,当有车开走时,便道上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出停车场为它让路,待该辆车开出大门后,其他车辆再按原次序返回车场。每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不收费)。设计要求:1模拟上述管理过程。要求以顺序栈模拟停车场,以链队列模拟便道。2从

2、终端读入汽车到达或离去的数据,每组数据包括三项:(1)是“到达还是“离开”;(2)汽车牌照号码;(3)“到达或“离开”的时刻。3与每组输入信息相应的输出信息为:如果是到达的车辆,则输出其在停车场中或便道上的位置;如果是离去的车辆,则输出其在停车场中停留的时间和应交的费用.二、算法说明1数据结构说明(1)用到两个堆栈:一个为车场栈;另一个为临时栈temptypedef struct NODE CarNode stackMAX+1; int top;SeqStackCar; /*模拟车场/(2) 一个队列结构,存储便道车辆信息: typedef struct Node QueueNode *hea

3、d; QueueNode rear; LinkQueueCar; /*模拟便道/2算法说明(1) 功能模块说明:停车场管理系统含有三个模块,即:车辆到达、离开、列表显示 图1 (2)以模块为单位分析算法 1、“到达模块:到达时有两种情况,即车场是否满,未满则直接进入停车场;满时,到便道等待。如图2。 图2 2。“离开”模块:离开时,当车库为空时,提示没有车,结束;否则车辆离开。如图3。 图3 3。 “显示”模块:显示模块有两个显示选项,即:车场与便道.如图4。图4三、测试结果(一)测试用例(说明:测试用例要合理并且足够,既要有正确用例,也要有错误用例,同时检验程序的正确性和强壮性)1第一组测试

4、用例(1)测试输入:停车场的车辆离开,如下表:服务选择车牌号/车位到达/离开时间1QH05815:251AB12318:451EA64223:15220:30210:65(错误)(2)测试目的:测试离开方法时间格式控制以及费用计算是否正确。(3)正确输出:第一次离开的是AB123,应交费3.45元.第二次时,当在输入65时,应该提示输入错误,重输。(4)实际输出:(5)错误原因:第一个错误是在计算时,一个数字错了;第二个是没有对时间格式控制.(6)当前状态:已改正2第二组测试用例(1)测试输入:连续6辆车到达,如下表: 服务选择 车牌号 到达时间1A8828 7:561S22968:251WW

5、6668:451HK45615:501GH99912:301DD55513:40(2) 测试目的:测试到达方法与列表显示方法能否正确完成。(3)正确输出:先到达的五辆车先进入停车场,最后到达的一辆在便道等候。(4)实际输出:(5)错误原因:没有作出时间先后的判断,而是先输入先进入。(6)当前状态:待修改3第三组测试用例(1)测试输入:接上一步输入离开信息,下表:服务选择离开车位离开时间便道车进入时间2313:3013:40(2)测试目的:测试离开方法功能是否成功以及便道进入车场是否正确。(3)正确输出:输出3号车位的车辆离开信息清单,便道1号车进入停车场.(4)实际输出:(5) 错误原因:没有

6、错误。(6)当前状态:通过(二)测试结果分析此停车管理系统基本可能实现一个小的停车场的管理,其“到达”与“离开”方法都相对比较完整,以及结算清单明了。尽管在时间先后上有出现混乱,但当其用到实际应用时,那个时间先后就可以避免了。但在输入数据时,要按照严格的格式输入,否则有可能出现死去或崩溃.若本系统能加上保存功能就更好了,因为一个系统在使用过程中总会关机等,而此系统的缺点却是没有保存功能,关闭之后就要重新建立了。会慢慢完善。附录:源代码/系统说明:本系统适应于小型停车场,且停车时间在一天之内的短期停放停车场./在此系统中,车库容量设置为5,便于测试。在实际使用中可以对容量大小按实际情况设置。in

7、cludeiostream。hincludestdio.hinclude#define MAX 5 /*车库容量,可以根据实际情况改变/define price 0。01 /*一辆车每分钟费用,可变/typedef struct timeint hour; int min;Time; /*时间结点*/typedef struct node char num10; Time reach; Time leave;CarNode; /车辆信息结点/typedef struct NODE CarNode *stackMAX+1; int top;SeqStackCar; /*模拟停车场/typedef

8、 struct car CarNode data; struct car next;QueueNode;typedef struct Node QueueNode head; QueueNode *rear;LinkQueueCar; /*模拟便道*/*方法声明/void InitStack(SeqStackCar ); /初始化栈/ int InitQueue(LinkQueueCar ); /初始化便道/int Arrival(SeqStackCar *,LinkQueueCar *); /车辆到达/ void Leave(SeqStackCar *,SeqStackCar ,LinkQu

9、eueCar ); /车辆离开/void List(SeqStackCar,LinkQueueCar); /显示信息/ void PRINT(CarNode *p,int room); /*输出离开车辆的信息清单*/void main()system(”color F2”); /设置系统颜色,本系统为白底绿字f2/SeqStackCar Enter,Temp; LinkQueueCar Wait; int ch; InitStack(Enter); /初始化车站/ InitStack(Temp); /*初始化让路的临时栈*/ InitQueue(Wait); /初始化通道/ while(1)

10、cout” 欢迎使用本停车管理系统 endl;cout*”endl;cout” 1。 车辆到达 - endl; cout - 2。 车辆离开 - endl; cout - 3。 列表显示 - ”endl; cout - 4。 退出系统 endl; cout”*endl;cout”!说明:请注意正确输入时间,在输入“时后,按“ENTER或者“空格”,再输入“分”.不要为非数字!”endl;cout请选择所需要的服务! (1-4).”=1ch=4)break; else cout输入错误!请选择:(1-4).”stacks-top=NULL;int InitQueue(LinkQueueCar *

11、Q) /初始化便道*/Q-head=(QueueNode )malloc(sizeof(QueueNode); if(Qhead!=NULL)Q-headnext=NULL; Q-rear=Q-head; return(1); else return(1);int Arrival(SeqStackCar Enter,LinkQueueCar *W) /车辆到达*/ CarNode p; QueueNode t; p=(CarNode )malloc(sizeof(CarNode); flushall(); cout请输入车牌号(例:A1234):”num); if(Enter-topMAX)

12、/*车场未满,车进车场/Enter-top+; cout”车辆在车场第”Enter-top ”位置!”endl; cout请输入到达时间:(小时:分钟)preach.hour; while(p-reach。hour0preach。hour23) /控制时间格式正确 cout输入错误!”p-reach。hour;cinpreach。min; while(preach.min0|preach。min59) /控制分钟输入正确 cout”输入错误!”endl; coutp-reach.min; EnterstackEntertop=p; return(1); else /车场已满,车进便道*/ co

13、ut车场已满,请在便道等待!”endl; t=(QueueNode )malloc(sizeof(QueueNode); t-data=p; tnext=NULL; W-rear-next=t; Wrear=t; return(1); void Leave(SeqStackCar Enter,SeqStackCar *Temp,LinkQueueCar *W) /车辆离开*/ int room; CarNode p; QueueNode q; /判断车场内是否有车/ if(Entertop0) /有车/ while(1) /输入离开车辆的信息/ cout”请输入车在车场的位置1-”=1&roo

14、mtop) break; while(Entertoproom) /车辆离开*/Temp-top+; /临时通道栈顶指针*/ Temp-stackTemp-top=EnterstackEntertop; EnterstackEnter-top=NULL; Entertop-; p=EnterstackEntertop; Enter-stackEntertop=NULL; Entertop; while(Temptop=1) /判断临时通道上是否有车/Enter-top+; EnterstackEntertop=Temp-stackTemptop; Temp-stackTemptop=NULL;

15、 Temptop; PRINT(p,room); if((W-head!=Wrear)Enter-topMAX) /车站是未满*/ /*便道的车辆进入车场*/q=Wheadnext; p=qdata; /p指向链队头*/ Entertop+; cout”便道的”pnum号车进入车场第”Entertop”位置!endl; cout请输入现在的时间如(小时:分钟):23) cout”输入错误!endl; coutreach.min59) coutpreach.min;EnterstackEntertop=p; W-headnext=q-next; if(q=W-rear) Wrear=W-head

16、; free(q); /释放q地址/ else cout”便道里没有车!endl; /便道没车/ else cout”车场里没有车!endl; /*车场没车*/void PRINT(CarNode p,int room) /输出离开车辆的信息清单/ int A1,A2,B1,B2; cout”请输入离开的时间:(小时:分钟)”leave。hour0|pleave。hour23)cout输入错误!leave。hour; cinpleave。min;if(pleave。min0|pleave.min59) cout”输入错误!endl; coutp-leave。min; coutendl”离开车辆

17、的车牌号为:”endl; puts(pnum); cout”其到达时间为: preach。hour”:preach。minendl; coutleave。hour”:”pleave.minleave。hour; B2=p-leave。min;cout应交费用为: (B1-A1)60+(B2-A2))+1440)1440*price元!endl; free(p);void List1(SeqStackCar S) /*列表显示车场信息/ cout”您选择的是车场停车情况!”top0) /判断车站内是否有车*/ cout” 位置 到达时间 车牌号”endl; for(i=1;i=S-top;i+)

18、cout” i” ”Sstackireach.hourreach.min stackinumendl; else cout”车场里没有车!”endl;void List2(LinkQueueCar *W) /*列表显示便道信息*/ cout”您选择的是便道停车情况!”next; if(Whead!=W-rear) /*判断通道上是否有车*/cout等待车辆的车牌号码为:”endl; while(p!=NULL) /coutnum);coutj ”next;j+; /开始时显示不正确,没有按照正常输出 else cout”便道里没有车!;void List(SeqStackCar S,LinkQ

19、ueueCar W) /列表界面*/int flag,tag; flag=1; while(flag) /*列表显示循环控制/cout请选择您要显示信息! (13):”endl; cout1。车场”endl;cout”2。便道endl;cout-3.返回-tag; if(tag=1|tag=3) break; else cout”输入错误!请选择 (13):endl;switch(tag)case 1:List1(S);break; /列表显示车场信息/ case 2:List2(&W);break; /列表显示便道信息/ case 3:flag=0;break; default: break; 10

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服