资源描述:
《中南民族大学数据结构课程设计停车场管理系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、停车场管理模拟一.需求分析1.总体要求设停车场是一个可停放N辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在南端,最先到达的第一辆车停放在停车场的最北端),若停车场内已停了n辆汽车,则后来的汽车只能在门外的通道上等候,一旦有车开走,则排在通道上的第一辆车即可开入;当停车场内每辆车要离开时,在它之后进入的车辆必须先退出停车场为其让路,待该辆车开出大门,其他车辆再按原次序进入停车场。请为停车场编写按上述要求进行管理的模拟程序。2.分析1.用栈来表示停车场,用队列来表示停车道。2.用户需输入车辆的必要信息,如车辆的到达或离开,汽车牌号以及
2、到达或离去的时刻。停车场的容量及单位时间的停车费由编程序者自行设置,结构需输出车辆停车所需缴纳的费用。3.本程序要求对车辆的动态能够输出具体的信息内容,包括停车或离开的时间,位置,及所需缴纳的停车费。4.测试数据为:N=2,输入数据为:(’A’,1,5),(‘A’,2.,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0).其中:’A’表示到达,’D’表示离去,’E’表示输入结束。5.程序执行的命令为:1.创建栈和队列。2.对车辆的行为进行相应的处理。3.输出车辆的信息。三概要设计1、本程
3、序基本模块(1)主程序部分:intmain(){//读入文件数据//文件读入判断//第一次输入数据不需要检测//处理车辆到达模块;//处理车辆离开模块;}}2.停车场模拟的抽象数据类型定义typedefstructElem//定义车辆数据结构类型{intcarnum;//车牌号inttime;//停车时刻}Elem;typedefstruct{Elem*base;Elem*top;intstacksize;//栈大小}Sqstack;voidinitStack(Sqstack&S)//建一个停车场空栈{/传入参数:stack栈结构//传出参数:分配有内存空间的栈结构//初始化栈}intpush
4、(Sqstack&S,Elem&e)//插入元素{//输入参数:S栈结构,e要入栈的节点//完成入栈操作}intlengthstack(SqstackS)//求栈的长度{//返回栈的长度}intpop(Sqstack&S,Elem&e){//输入参数S栈结构,e要出栈的节点//完成出栈操作}voidinitqueue(LinkQueue&Q)//构造一个车道空队列{//传入参数Q要初始化的队列//传出参数:Q带有头结点的队列//初始化队列}voidenqueue(LinkQueue&Q,intcarnum,inttime)//车道入队操作{/传入参数:Q队列,carnumber,time要入队
5、的数据//完成入栈操作}intlengthqueue(LinkQueueQ)//求车道队列长度{//返回队的长度}voiddequeue(LinkQueue&Q,Elem&e)//从对头离队操作,并返回其值{//传入参数:Q队列结构,e的节点数据//删除队头}voidcarin(Sqstack&S,LinkQueue&Q,Elemcar)//进场函数{//传入参数:S栈结构,Q队列结构,car的节点数据intk=0;//检测信号,当值为k=0时表示栈和队中都找不到该车牌号//赋值为栈底//在栈中寻找是否有同一编号的车//找到了有同一编号的车//如果在栈中未找到,在队列中查找//队头//找不到继
6、续找//栈和队列中都找不到相同车牌号,执行入栈操作;//栈未满}voidcarleave(Sqstack&S,LinkQueue&Q,Elemcar)//车辆退出函数{//传入参数:S栈结构,Q队列结构,car的节点数据//在栈中没有找到与要离开的车//先在栈中寻找;//在栈中找到//备用栈//先在栈中寻找;//其他车退出停车场暂存在零时栈//栈中有车离开,将队列中的车进入栈中//离队,并返回数据e//栈中没找到要离开的车//在队列中找到要离开的车}四详细设计1、程序整体流程2、程序函数调用关系1、汽车离开,到达流程图5.源代码#include#include
7、#include#defineOVERFLOW-2#defineERROR0#defineN2//停车场的容量设为2#defineprice5//将单位时间的停车费设为5usingnamespacestd;typedefstructElem//定义车辆数据结构类型{intcarnum;//车牌号inttime;//停车时刻}Elem;typedefstruct{Elem*bas