停车场管理系统的设计与实现数据结构课程设计 .pdf
《数据结构》课程设计
题目:停车场管理系统
班级:网络工程
姓名:***
学号:E********
完成日期:2015年11月15日
1/39
一.需求分析
1.停在便道;
2.停在车库;
3.从车库移到便道;
4.从便道移到车库;
5.从车库取车;
6.从便道取车;
综上所述可知,总共有4种停车方式。
1.若一直停在便道中,需要在进入便道时以浮点数输入进入时间,
当选择6取车时,需要输入在便道中停车的时间。在便道中提车
时会显示进入的时间,以及是否需要发票,在计算完停车费用后
退出主菜单。
2/39
2.若一直停在车库中,会在进入时检测车库是否满,若不满,允许
进入,同样提示输入到达时间,当选择5取车时,需要输入在车
库停车时间。提车时,会显示进入的时间,以及是否需要发票,
在计算完停车费用后退到主菜单。
3/39
3.若先在车库停车后又转到便道停车,则会先检测车库是否满了,
这是这个情况满足的最大前提,之后需要输入到达车库时间,其
实这也没什么用,因为最后计算费用时,只会加上转移位置的20
元费用和在便道停的费用。在提车时会显示有在本停车场转移位
置的信息。
4/39
5/39
4.若先在便道上停车,后又到车库停,原理同3,在此不再赘述。
6/39
二.概要设计
1.由于栈的特殊出栈入栈顺序,所以所有进入车库的车辆必
须遵守“先进后出”的顺序来停车和提车,由于栈是顺序结
构,所以在进入车库时需要检测车库是否饱和,在提车时也
需要检测车库是否为空;
2.同时,队列需要满足“先进先出”的思想,但此次试验用
的链式结构,一般来说,不存在饱和情况,但在提车时候需
要检测便道是否有车。
3.栈的数据域存放进入车库的时间,车牌,队列节点数据域
存放进入便道的时间车牌,设置标记是否在停车场内更改停
车位置,有更改则置为1,否则为0。
4.如果一辆车车库移到便道,除了更换进入便道的时间外,
车牌号从链表的数据里得到,从便道移到车库也类似。另
外,更改位置前停放费用不计入最后的费用。
5.除了要输入进入时间,在更换停车位置时需要输入进入时
间,在最后提车时需要输入离开时间,方便计算总费用。
三.详细设计
1.主函数设置两个选择:最外层的选择显示是用户自己选择
停车还是系统选择停车位置,最里层的选择为主菜单。
2.进入车库(入栈)
();
:进入车库时间
;车牌号
7/39
:显示是否更改过停车位置
3.离开车库(出栈)
();
将后面三个形参设置为引用调用是为了得到数据域里的数
据,供主函数使用
4.进入便道
();
5.离开便道
();
将后面三个形参设置为引用调用是为了得到数据域里的数
据,供主函数使用。(其实在主函数传地址给调用函数也可
以,但是不知道为什么没有试验成功。)
6.()和()都是显示菜单函数
7.
8.();
函数是计算费用函数,是在最近一个停车位置的停车时
间,在主函数已经由离开时间减去进入时间计算好,为标
志位,为1,需要多支付20元的管理费用,是需要发票
的标志,需要为1,则最后费用为原有费用的基础上增
加%15,同时用一个浮点型的返回值返回给主函数使用,
同时主函数用%.2f来控制最后只显示小数点最后两位。
四.源程序
8/39
/*
2015年11月15日21:21:37
本次试验主要熟悉栈和队列的存储方式,同时结合顺序表和
链表知识
具体试验要求见代码底部
*/
#
#
#
#
车库
{
;到达在车库时间
;