数据结构停车场管理系统设计方案

上传人:新** 文档编号:508646134 上传时间:2023-01-01 格式:DOC 页数:12 大小:97KB
返回 下载 相关 举报
数据结构停车场管理系统设计方案_第1页
第1页 / 共12页
数据结构停车场管理系统设计方案_第2页
第2页 / 共12页
数据结构停车场管理系统设计方案_第3页
第3页 / 共12页
数据结构停车场管理系统设计方案_第4页
第4页 / 共12页
数据结构停车场管理系统设计方案_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《数据结构停车场管理系统设计方案》由会员分享,可在线阅读,更多相关《数据结构停车场管理系统设计方案(12页珍藏版)》请在金锄头文库上搜索。

1、一、设计目的1了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。二、设计容设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场已停满n辆汽车,则后来的汽车只能在门外的便道上等待,一旦有车开走,则排在便道上的第一辆车即

2、可开入;当停车场某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。三、设计要求按照从终端读入的输入数据进行模拟管理,每一组输入数据包括三个数据项:汽车“进站”或“出站”信息、汽车牌照以及进站或出站的时刻,对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场或便道上的停车位置;若是车辆离去,则输出汽车在停车场逗留的时间和应交纳的费用(在便道上停留不收费),按以顺序结构实现,队列以链表结构实现。四、设计过程1、算法

3、思想分析由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车场按车辆到达时间的先后顺序,依次由北向南排列。由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,又因为每个汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素我设计成汽车的车牌号。当停车场某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车车牌号。当停车场满后,继续进来的汽车需要停

4、放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车的车牌号。另外,停车场根据汽车在停车场停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间,车辆离开停车场时的时间不需要记录,当从终端输入时可直接使用。由于时间不像汽车一样需要让道,我设计了一个顺序表来存放时间。又用顺序表用派生法设计了一个堆栈,恰好满足上面模拟停车场的需要。2、算法描述与实现(1)时间结点类型typedef struct time int hour; i

5、nt min; Time; /*时间结点*/ (2)车辆进出站信息类型typedef struct node char num10;Time reach; Time leave; CarNode; /*车辆信息结点*/ (3)停车场和便道信息类型typedef struct NODE CarNode *stackMax+1;int top; SeqStackCar; /*模拟车站*/typedef struct car CarNode *data;struct car *next; QueueNode; typedef struct Node QueueNode *head; QueueNod

6、e *rear; LinkQueueCar; /*模拟通道*/ void InitStack(SeqStackCar *,int n); /*声明栈*/初始化,创建一个新栈S用于停车场int InitQueue(LinkQueueCar *); /*声明便道*/初始化,创建一个队列Q用于便道int Arrival(SeqStackCar *,LinkQueueCar *,int n); /*车辆进站*/ CarNode *p; QueueNode *t; p=(CarNode *)malloc(sizeof(CarNode); flushall(); printf(n请输入车牌号(例如:吉A1

7、234):); gets(p-num); if(Enter-toptop+; printf(n车辆在车场第%d位置.,Enter-top); printf(n请输入到达时间:/*:*/); scanf(%d:%d,&(p-reach.hour),&(p-reach.min); Enter-stackEnter-top=p; return(1); else /*车场已满,车进便道等待*/ printf(n该车须在便道等待!); t=(QueueNode *)malloc(sizeof(QueueNode); t-data=p; t-next=NULL; W-rear-next=t; W-rear

8、=t; return(1); void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *,int n); /*车辆出站*/(4)主函数和其它函数的伪码算法void main() SeqStackCar Enter,Temp; LinkQueueCar Wait;int ch;int n; n=getn();InitStack(&Enter,n); /*初始化车场*/InitStack(&Temp,n); /*初始化让路的临时栈*/InitQueue(&Wait); /*初始化便道*/while(1) printf(n1. 车辆进站);printf

9、( 2. 车辆出站);printf( 3. 存车信息);printf( 4. 退出系统n); while(1) printf(请选择: 1|2|3|4.n);scanf(%d,&ch);fflush(stdin);doif(ch4 | ch4 | ch1);break;switch(ch) case 1:Arrival(&Enter,&Wait,n);break; /*车辆进站*/case 2:Leave(&Enter,&Temp,&Wait,n);break; /*车辆出站*/case 3:List(Enter,Wait);break; /*存车信息*/case 4:exit(0); /*退

10、出系统*/default:break; 系统测试程序初始界面:车辆进站:停车场存车信息:车辆进入便道:车辆出站:便道上的车出站:五、设计总结参考文献:数据结构程序设计题典春葆等编 清华大学数据结构(C语言版) 黄国瑜 叶乃菁编 清华大学数据结构课程设计仕华 等编 机械工业附录:#include#include #include#include/*-*/ #define Max 10int getn()int n;printf(欢迎您光临吉吉停车场,);printf(本停车场管理实行24小时制,停车每分钟0.1元.n);printf(请输入停车场可容纳的车(最多10辆):);scanf(%d,&

11、n);fflush(stdin);doif(n10)printf(输入的车辆数不在要求围,请重新输入!);scanf(%d,&n);fflush(stdin);else break;while(n10);return n;typedef struct time int hour; int min; Time; /*时间结点*/ typedef struct node char num10;Time reach; Time leave; CarNode; /*车辆信息结点*/ typedef struct NODE CarNode *stackMax+1;int top; SeqStackCar

12、; /*模拟车站*/typedef struct car CarNode *data;struct car *next; QueueNode; typedef struct Node QueueNode *head; QueueNode *rear; LinkQueueCar; /*模拟通道*/ void InitStack(SeqStackCar *,int n); /*声明栈*/int InitQueue(LinkQueueCar *); /*声明便道*/int Arrival(SeqStackCar *,LinkQueueCar *,int n); /*车辆进站*/void Leave(

13、SeqStackCar *,SeqStackCar *,LinkQueueCar *,int n); /*车辆出站*/void List(SeqStackCar,LinkQueueCar); /*显示存车信息*/ void InitStack(SeqStackCar *s,int n) /*初始化栈*/ int i; s-top=0; for(i=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); else return(-1); voidPRINT(CarNode *p) /*打印出

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号