停车场车辆管理系统的设计和实现_第1页
停车场车辆管理系统的设计和实现_第2页
停车场车辆管理系统的设计和实现_第3页
停车场车辆管理系统的设计和实现_第4页
停车场车辆管理系统的设计和实现_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、停车场车辆管理系统的设计和实现1、引言随着汽车工业的迅猛发展,我国汽车拥有量急剧增加。停车场作为交通设施的组 成部分,随着交通运输的繁忙和不断发展,人们对其管理的要求也不断提高,都希望 管理能够达到方便、快捷以及安全的效果。运用数据结构的方法,模拟停车场车辆管理系统。2、需求分析设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车 辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆 车放在停车场的最里面)。停车场有一个停车道和一个行车道。如果停车场已放满n 辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则 排在便道上的第一辆车

2、就进入停车场,停在车离开的空位上。每辆车在离开停车场时, 都应根据它在停车场内停留的时间长短交费。3、概要设计(或总体设计)3. 1构造结构描述要实现停车场管理的功能,首先要先建立两个栈P,P1和一个队列S,其中 栈P模拟停车场,另一个栈P1临时存放给要离开的汽车让路而从停车场退出的汽车, 队列S用来模拟停车便道。定义栈和队列的结构体,实现队列和栈的初始化以及栈,压车元素进栈,取 车元素出栈,车元素入列,队头元素出列和取出队列中车元素操作。当车辆到达时,首先检查停车场是否是满的,若不满则放入停车场内,若停 车场是满的,则放在便道上。即若栈是不满的就入栈,否则就入队列。当车辆离开时,首先要寻找到

3、要离开车辆的车牌号,然后在它之后进入的车 辆必须先退出为它让路,待该辆车开出大门外,便道上若有车辆等待,就让第一个等 待的车辆进入,其它车辆再按原次序进入停车场。离开的车辆按其在停车场内停留的时间交费。即当元素在栈P中时,就将在它之后的元素出栈并依序放入栈P1中,此 元素出栈,随后将队列S的首元素放入栈P中,最后栈P1中的元素依次放入P中。若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去, 则输出汽车应交的费用,此时排在它之前的汽车要先开走让路,然后依次排到队尾。3. 2模块设计e ElemSet, i = 1,2, n 0),a 1 a ,a e D,i = 1,2,/!)

4、约定其中i端为队列头,a端为队列尾。3. 3数据结构描述3.3. 1队列的抽象数据类型ADT Queue (数据对象:D = o 11数据关系R1 = 0)数据关系Rl = 1 a ,a e D,i = 1,2,)约定其中u端为成底,a端为栈顶。in基本操作:InitStack(&P)操作结果:构造一个空栈P。Push (&P,e)初始条件:栈P已存在且非空。操作结果:插入元素e为新的栈顶元素。Pop (&P, &e)初始条件:栈P已存在且非空。操作结果:删除P中的栈顶元素,并用e返回其值。ADT Stack4、详细设计及实现4. 1模块1初始化模块表头文件。数据类型、返回状态的定义。设置停车

5、场的车位数,不妨设为3。设置停车场的费用,不妨设为2元/小时。#define SIZE 3构建栈P代表停车场及相关栈函数和数据。Status InitStack(Park &P)Status Push(Park &P,CarNode e)Status Pop(Park &P,CarNode &e)typedef struct Park;构建队列S代表便道及相关队列函数和数据。Status InitQueue(Shortcut &S)Status EnQueue(Shortcut &S,int number,int ar_time)Status DeQueue(Shortcut &S,CarPt

6、r &w)typedef struct *CarPtr;4. 2模块2进入停车场模块车进入停车场,即入栈。要输入、记录进入车辆的信息。int number,ar_time;利用栈的Push函数,使车辆信息进入停车场的栈。用P.stacksize返回栈内车辆所在的位置。4. 3模块3进入便道模块车进入便道,即入队列。要输入、记录进入车辆的信息。int number,ar_time;用队列的EnQueue函数,使车辆信息进入便道的队列。定义车辆元素为p,使p 的下一个指针为空,队列的尾指针指向p。p-next=NULL;S.rear-next=p;S.rear=p;用队列的length性质返回队列

7、内车辆所在的位置。4. 4模块4离开便道模块车离开便道,即出队列。用队列的DeQueue函数,使车辆信息离开便道的队列。队列不空,利用指针,将头指针的值赋给w,再将头指针指向头指针的下一个位 置。w = S.front-next;S .front-next=S .front-next-next;用队列的length性质返回队列内车辆所在的位置。5模块5离开停车场模块车离开停车场,即出栈。输入、记录出停车场车辆的信息,定义一个备用栈P1盛放停车场内未选中的车 辆。当停车场非空时,取P的栈顶元素,放入P1中,直到取到出停车场的车辆的车 牌号与所输入的车辆号码一致的,因为新进入的车辆要占用出去车辆的

8、位置,所以所 选元素之前的元素不能移出,循环用dowhile语句实现。do Pop(P,e);Push(Pl,e); while(e.number! number);离开车辆的离开费用 money=(le_time-e.ar_time)*2;循环结束后,所选元素和其之前的元素都依次序进入备用栈Pl。删除栈Pl的栈 顶元素即所选元素,使栈P1中依次是离开车辆之前进入的车辆。Pop(Pl,e);当便道内有车,即队列非空时,队列的队头元素进入栈P,即便道第一个位置的 车辆进入停车场。离开车辆的离开时间即为由便道进入车辆的进入时间,为便道进入 的车辆记录信息if(S .length !=0) DeQu

9、eue(S,w);m. ar_time=le_time;m.number=w-number;Push(P,m);free(w);栈Pl中元素依次出栈再进入栈Powhile(P.top-P.base) next=NULL;S.length=O;return OK;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_ti

10、me;p-next=NULL;S.rear-next=p;S.rear=p;+S .length;return OK;Status DeQueue(Shortcut &S,CarPtr &w)车离开便道(删除队头元素,用w返回其值) if(S.length 二二 0)printfC道为空。);elsew = S.front-next;S .front-next=S .front-next-next;S.length;return OK;Status Arrival (Park &P, Shortcut &S)/M 进站车辆的处理int number, ar_time;printf(”请输入车牌

11、号:,scanf( %d,&number);printf(进场的时刻:);scanf( %d,&ar_time);if(P.stacksizenumber;Push(P,m);free(w);printf(车牌号为(1的车已由便道进入停车场,m.number);printf(停在d 号车道rT,P.stacksize);printf(离开车辆的停车费为d n,money);elseprintf(停车场不存在牌号为(1的车n, number);/Pl中元素出栈依次进入停车场Pwhile(P.top-P.base) SIZE)Pop(Pl,e);Push(P,e);printf(当前停车场车位占用数为 dn ,P. stacksize);return OK;int main()int m=l;char flag;/选项Park P,Q;Shortcut S;InitStack(P);InitStack(Q);InitQueue(S);while(m)printf(A:进入停车场D:离开停车场E:推出程序,printf(W选择(A,D,E):);scanf(%c,&fla

温馨提示

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

评论

0/150

提交评论