停车场管理系统数据结构_第1页
停车场管理系统数据结构_第2页
免费预览已结束,剩余14页可下载查看

下载本文档

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

文档简介

1、数据结构课程设计!学i院信息科学与工程学院i专业计算机科学与技术班:级计1005i1姓11名*学:!号2010*:i指导教师:1i*1i:1ii2012年3月11日一、需求分析1、【问题描述】设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进 出。汽车在停车场内按车辆到达时间的先后顺序, 依次由北门向南排列 (大门在 最南端,最先到达的第一辆车放在车场的最北端) ,若车场内已停满n辆汽车, 则后来的汽车只能在门外的便道上等候, 一旦有车开走, 则排在便道上的第一辆 车即可开入; 当停车场内某辆车要离开时, 在它之后进入的车辆必须先退出车场 为它让路, 待该辆车开出大门外, 其他车

2、辆再按原次序进入车场, 每辆停放在车 场的车在它离开停车场时必须按它停留的时间长短交纳费用。 试为停车场编制按 上述要求进行管理的模拟程序。2、【基本要求】以栈模拟停车场, 以队列模拟车场外的便道, 按照从终端读入的输入数据序 列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信 息、汽车牌照号码以及到达或里去的时刻。 对每一组输入数据进行操作后的输出 信息为:若是车辆到达, 则输出汽车在停车场内或便道上的停车位置; 若是车辆 离去,则输出汽车在听车场内停留的时间和应缴纳的费用 (在便道上停留的时间 不收费)。栈以顺序结构实现,队列以链表结构实现。3、【实现提示】需另设一个栈

3、,临时停放为给要离去的汽车让路二从停车场退出来的汽车, 也用顺序存储结构实现。 输入数据按到达或离去的时刻有序。 栈中每个元素表示 一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。、概要设计1、设计思想此停车场管理系统是在一个狭长的通道上的, 而且只有一个大门可以供车辆进出,并且要实现停车场内某辆车要离开时,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车再依原来的次序进场的功能,就可以设计两个顺序栈,其中一个栈用来模拟停车场,另一个栈用来模拟临时停车场,该临时停车场用来存放当有车辆离开时,原来停车 场内为其让路的车辆。至于当停车场已满时,需要停放车辆的便

4、道可以用一 个链队列来实现。 当停车场内开走一辆车时, 便道上便有一辆车进入停车场, 此时只需要改变便道上车辆结点的连接方式就可以了, 使便道上第一辆车进 入停车场这个栈,并且使便道上原来的第二辆车成为便道上的第一辆车,此 时只需将模拟便道的链队列的头结点连到原来的第二辆车上就可以了。2、实现方法对于此停车场管理系统的实现, 就是用两个顺序栈来分别模拟停车场以 及停车场内车辆为其它车辆让路时退出停车的临时停放地点。 至于便道上车 辆的停放则用一个链队列来实现,此时,便道上车辆的离开或者进入停车场 只需改变此链队列上的结点而已。 对于要对停车场内的车辆根据其停放时间收取相应的停车费用,可以记录下

5、车辆进入以及离开停车场的时间,再用时间差乘以相应的单价并且打印出最后的费用就可以实现了三、详细设计函数功能:1、Status InitStack(Park &P)/初始化停车场P.base=(CarNode*)malloc(SIZE*sizeof(Car1);if(!P.base) exit(OVERFLOW);P.top=P.base;P.stacksize=0;return OK;功能:构造一个栈,并置为空栈。2、Status Push(Park &P,CarNode e)/车进入停车场*P.top+=e;+P.stacksize;return OK;功能:定义入栈函数Pu

6、sh3、Status Pop(Park &P,CarNode &e)/车离开停车场if(P.top=P.base)printf(停车场为空。);elsee=*-P.top;-P.stacksize;return OK;功能:定义出栈函数Pop。4、Status InitQueue(Shortcut &S)/初始化便道S.front=S.rear=(CarPtr)malloc(sizeof(Car2);if(!S.front|!S.rear) exit(OVERFLOW);S.front-next=NULL;S.length=0;return OK;功能:构造一个队列,并

7、置为空队列5、Status EnQueue(Shortcut &S,int number,int ar_time)/CarPtr p;p=(CarPtr)malloc(sizeof(Car2); if(!p) exit(OVERFLOW); p-number=number;p-ar_time=ar_time; p-next=NULL;S.rear-next=p;S.rear=p;+S.length;return OK;功能:定义入队函数EnQueue。6、Status DeQueue(Shortcut &S,CarPtr &w)/if(S.length = 0)prin

8、tf(通道为空。);else车进入便道车离开便道w = S.front-next;S.front-next=S.front-next-next;-S.length;return OK;功能:定义出队函数DeQueue。7、Status Arrival(Park &P,Shortcut &S)/int number,ar_time;printf(请输入车牌号:); scanf(%d,&number);printf(进场的时刻:);scanf(%d,&ar_time);if(P.stacksizeSIZE)CarNode c;c.number=number;c.ar

9、_time=ar_time;Push(P,c);printf(该车应停在第%d号车道。n,P.stacksize);else对进站车辆的处理EnQueue(S,number,ar_time);printf(停车场已满,请暂时停在便道的第%d个位置。n,S.length);return OK;功能:对进站车辆的处理,在P.stacksize=SIZE,即停车场已满时,将车停在便道上,并打印“停车 场已满,请暂时停在便道的第S.length个位置。8、Status Leave(Park &P,Park &P1,Shortcut &S)/对离站车辆的处理int number,

10、le_time,flag=1,money,ar_time;printf(请输入车牌号:);scanf(%d,&number);printf(出场的时刻:);scanf(%d,&le_time);CarNode e,m;CarPtr w;while(P.stacksize) Pop(P,e);if(e.number=number)flag=0;money=(le_time-e.ar_time)*2; ar_time=e.ar_time;break;Push(P1,e);while(P1.stacksize)Pop(P1,e);Push(P,e);/车从停车场中出if (flag

11、= 0)if(S.length!=0)DeQueue(S,w);m.ar_time=le_time;m.number=w-number;Push(P,m);free(w);printf(车牌号为%d的车已由便道进入停车场n,m.number);printf(停车费为%d,占用车位数为%dn,money,P.stacksize);elseprintf(停车场不存在牌号为d的车n, number);return OK;功能:对离站车辆的处理,记录离站车辆的车牌号,当P.stacksize!=0,即栈 不为空时进入while循环,Pop(P,e)让栈顶的车出栈,判断车牌号是不是 和要离站的车的车牌号

12、相等,若相等,则将标志flag赋值为0,且计算 需要交纳的费用,并用break跳出循环;若不相等,则将车停到临时停 车场P1,并继续while循环,直到车牌号与离站车的车牌号相等为止。当P1即临 时停车场不为空时,将车开出临时停车场P1并进入停车场P。如果flag=0,即确定有车离开停车场,当便道不为空时,将队头的车离开便道并进入停车场的第P.stacksize个车位。如果flag!=O,则打印“停车场不存在车牌号为number的车。函数的调用关系图:四、调试分析1、界面2、当停车数量小于等于5时,停在停车场内3、当停车数量大于5时,按顺序停在便道上林进输F沪岀钉(T*n氏车楚车场A4I*P純

13、车歯车场F鮭蓟上-i卞淞R-n”E“ a丐新三翠号=*曬螞的01MI3S- _I (XUwrE Jbgkt珅罰蚁磁曲觑tair D0bugTe)(tl.eKe-I!I!阳疔7 W4、车从停车场离开时,统计费用和占用车位数,且停在便道上的最前边的车进 入停车场。D游岀车折二E总出鮎二赣人年牌号:a髓车己- 工-占用I Ei a目郸詣吿黔*翟S鵠第香时僦便追的鬻F;场芝理崔孑fl (仁12_竺;!ii n占三电车誦E軸崔序fi 再兰许车;丽D岀丰詢F.退出淫序I J ier t.XLH?iKt j*p -13 A 记臭 i 亠::奠*?:Fi Debuq. =:;,理丄=出吒上牌雾车吐:;牌上号S

14、JSJ厝?_;爭_一讨-fifiA A的顷盲洁-8I-T5、停车场中不存在车牌号为*的车 ULifiBrtfti粉 ZT 航t商挟加M8MDefcnjgT*tij五、用户手册这个程序用来实现对停车场内车辆的管理, 整个操作界面为中文, 更加符合 人性化的标准, 使得用户使用方便, 而且每一个操作都有提示, 使得初次接触该 程序的用户也能很快适应程序的操作。这个程序操作简单, 对于车牌号, 只需输入车牌号上的数字就行, 而且对于 进出停车场的时间, 也简化了操作, 只需输入当时的时刻就行, 没有具体到小时 和分钟,但也许这也是该程序不足之处所在。 而且该程序也给用户提供了选择的 机会,当运行该程序后,如果想退出程序,可以输入e或E退出该运行程序。六、测试结果利用此程序可以进行最简单的停车场管理, 可以统计停车的数量以及所需交 纳的费用。但是,该程序也有很多不足的地方。主要表现在车辆的车牌号上,现 实中的车牌号是一串字符,可是,在这个程序中,为了简便起见,就把车牌号定 义

温馨提示

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

评论

0/150

提交评论