1、停车场管理系统的设计与实现数据结构课程设计数据结构课程设计题目:停车场管理系统班级:网络工程*学号:E*完成日期:2015年11月15日一需求分析1.停在便道; 2.停在车库;3.从车库移到便道; 4.从便道移到车库; 5.从车库取车;6.从便道取车;综上所述可知,总共有4种停车方式。1.若一直停在便道中,需要在进入便道时以浮点数输入进入时间,当选择6取车时,需要输入在便道中停车的时间。在便道中提车时会显示进入的时间,以及是否需要发票,在计算完停车费用后退出主菜单。2.若一直停在车库中,会在进入时检测车库是否满,若不满,允许进入,同样提示输入到达时间,当选择5取车时,需要输入在车库停车时间。提
2、车时,会显示进入的时间,以及是否需要发票,在计算完停车费用后退到主菜单。3.若先在车库停车后又转到便道停车,则会先检测车库是否满了,这是这个情况满足的最大前提,之后需要输入到达车库时间,其实这也没什么用,因为最后计算费用时,只会加上转移位置的20元费用和在便道停的费用。在提车时会显示有在本停车场转移位置的信息。4.若先在便道上停车,后又到车库停,原理同3,在此不再赘述。二概要设计1.由于栈的特殊出栈入栈顺序,所以所有进入车库的车辆必须遵守“先进后出”的顺序来停车和提车,由于栈是顺序结构,所以在进入车库时需要检测车库是否饱和,在提车时也需要检测车库是否为空;2.同时,队列需要满足“先进先出”的思
3、想,但此次试验用的链式结构,一般来说,不存在饱和情况,但在提车时候需要检测便道是否有车。3.栈的数据域存放进入车库的时间,车牌,队列节点数据域存放进入便道的时间车牌,设置标记是否在停车场内更改停车位置,有更改则置为1,否则为0。4.如果一辆车车库移到便道,除了更换进入便道的时间外,车牌号从链表的数据里得到,从便道移到车库也类似。另外,更改位置前停放费用不计入最后的费用。5.除了要输入进入时间,在更换停车位置时需要输入进入时间,在最后提车时需要输入离开时间,方便计算总费用。三详细设计1.主函数设置两个选择:最外层的选择显示是用户自己选择停车还是系统选择停车位置,最里层的选择为主菜单。2.进入车库
4、(入栈) ( );:进入车库时间;车牌号:显示是否更改过停车位置3.离开车库(出栈) ( );将后面三个形参设置为引用调用是为了得到数据域里的数据,供主函数使用4.进入便道 ( );5.离开便道 ( );将后面三个形参设置为引用调用是为了得到数据域里的数据,供主函数使用。(其实在主函数传地址给调用函数也可以,但是不知道为什么没有试验成功。)6.()和()都是显示菜单函数7.8. ( );函数是计算费用函数,是在最近一个停车位置的停车时间,在主函数已经由离开时间减去进入时间计算好,为标志位,为1,需要多支付20元的管理费用,是需要发票的标志,需要为1,则最后费用为原有费用的基础上增加%15,同时
5、用一个浮点型的返回值返回给主函数使用,同时主函数用%.2f来控制最后只显示小数点最后两位。四源程序/*2015年11月15日21:21:37本次试验主要熟悉栈和队列的存储方式,同时结合顺序表和链表知识具体试验要求见代码底部*/# # # # 车库 ; 到达在车库时间 ; 汽车牌照 ; 标记位置,在车库为1,在便道为0; 1 便道 ; 到达便道上的时间,以小时为单位(下同) ; 汽车牌照 ; 1 * ;1; 顺序栈 *; 栈顶指针 *; 栈底指针 ; 此次代码形参与实参之间是引用调用,故不需要传地址 链式队列 1 * ; 队头指针 1 * ; 队尾指针; ( z); 计算停车费用 ( ); 初始
6、化车库的顺序栈! ( ); ( ); ( ); ( ); ( ); ( ); ( ); (); (); ( ); 计费函数 () ; 在停车场的时间 ; 到达便道上的时间,以小时为单位(下同) ; 离开便道世间 ; 到达在车库时间 ; 离开车库时间 ; 汽车牌照 ; 是否需要发票,需要为1,不需要为0 (0); ; ; ; ; 1; 1; ; (); 初始化车库 ; (); 初始化便道 2; (); (2); (2 Q 2 q) (2) p: P: 1; (); (1); (1 0) (1) 1 : (欢迎您到便道停车,我们将竭诚为您服务!n); (请输入到达时间:n); (); (请输入车牌
7、照(阿拉伯数字)); (); (,0); (恭喜!牌照为的车主在便道停车成功!); ; 2 : (欢迎您到车库停车,我们将竭诚为您服务!n); () (车道已经停满,请选择便道停车!); (请输入到达车库时间:n); (); (请输入车牌照(阿拉伯数字)); (); (,0); (恭喜!牌照为的车主在车库停车成功!); ; 3 : (欢迎您更换到便道停车!n); () (车库里没有车,你的选择有误!); (); (您的爱车到达车库时间是n); (您的爱车牌照是:n); (请输入到达便道的时间:n); (); (,1); (恭喜!您的车辆已经移动到便道!); ; 4 : (欢迎您更换到车库停车!
8、n); ( ) (便道上没有车,您的选择有误!); (11); (您的爱车到达便道时间是n); (您的爱车牌照是:n1); (请输入到达车库的时间:n); (); (1,1); (恭喜!您的车辆已经移动到车库!); ; 5 : (欢迎您到车库取车!n); () (车库里没有车,你的选择有误!); (); (牌照是:的车主您好,您的车到达车库时间是n); ( 1) (您的车在停车场中有更换停放位置!n); (请输入您的爱车的离开时间:); (); = - ; (请选择是否需要发票 1:表示需要发票,0表示不需要发票); (); ( 1) (您好,请缴费%.2f元n(,1); (请保管好您的发票!
9、n); (感谢您使用本系统,祝您一路顺风!n); (您好,请缴费%.2f元n(,0); (感谢您使用本系统,祝您一路顺风!n); ; 6 : (欢迎您到便道取车!n); ( ) (便道上没有车,您的选择有误!); (11); (牌照是:的车主您好,您的车到达便道时间是n1); (1 1) (您的车在停车场中有更换停放位置!n); (请输入您的爱车的离开时间:); (); = - ; (请选择是否需要发票 1:表示需要发票,0表示不需要发票); (); ( 1) (您好,请缴费%.2f元n(,1)/2); (请保管好您的发票!n); (感谢您使用本系统,祝您一路顺风!n); (您好,请缴费%.2
10、f元n(,0)/2); (感谢您使用本系统,祝您一路顺风!n); 结束大括号 (n); (n); (下面是菜单,请继续选择或者按0退出!); (); (1); 结束大括号 ; 自主选择菜单结束 s: S: (您好,已经由系统为您做出了选择!n); 1 = ()%2+1; (1 0) (1) 1 : (欢迎您到便道停车,我们将竭诚为您服务!n); (请输入到达时间:n); (); (请输入车牌照(阿拉伯数字)); (); (,0); (恭喜!牌照为的车主在便道停车成功!); ; 2 : (欢迎您到车库停车,我们将竭诚为您服务!n); () (车道已经停满,请选择便道停车!); (请输入到达车库时
11、间:n); (); (请输入车牌照(阿拉伯数字)); (); (,0); (恭喜!牌照为的车主在车库停车成功!); ; 3 : (欢迎您更换到便道停车!n); () (车库里没有车,你的选择有误!); (); (您的爱车到达车库时间是n); (您的爱车牌照是:n); (请输入到达便道的时间:n); (); (,1); (恭喜!您的车辆已经移动到便道!); ; 4 : (欢迎您更换到车库停车!n); ( ) (便道上没有车,您的选择有误!); (11); (您的爱车到达便道时间是n); (您的爱车牌照是:n1); (请输入到达车库的时间:n); (); (1,1); (恭喜!您的车辆已经移动到车
12、库!); ; 5 : (欢迎您到车库取车!n); () (车库里没有车,你的选择有误!); (); (牌照是:的车主您好,您的车到达车库时间是n); ( 1) (您的车在停车场中有更换停放位置!n); (请输入您的爱车的离开时间:); (); = - ; (请选择是否需要发票 1:表示有发票,0表示不需要发票); (); ( 1) (您好,请缴费%.2f元n(,1); (请保管好您的发票!n); (感谢您使用本系统,祝您一路顺风!n); (您好,请缴费%.2f元n(,0); (感谢您使用本系统,祝您一路顺风!n); ; 6 : (欢迎您到便道取车!n); ( ) (便道上没有车,您的选择有误!
13、); (11); (牌照是:的车主您好,您的车到达便道时间是n1); (1 1) (您的车在停车场中有更换停放位置!n); (请输入您的爱车的离开时间:); (); = - ; (请选择是否需要发票 1:表示有发票,0表示不需要发票); (); ( 1) (您好,请缴费%.2f元n(,1)/2); (请保管好您的发票!n); (感谢您使用本系统,祝您一路顺风!n); (您好,请缴费%.2f元n(,0)/2); (感谢您使用本系统,祝您一路顺风!n); 结束大括号 (n); (n); (下面是菜单,请继续选择或者按0退出!); (); (1); 结束大括号 ; 最外层结束大括号 (2); ();
14、 最外层大括号 0; ( ) 初始化车库的顺序栈! = (*)()*100); ( ) (动态内存分配失败!n); (-1); = ; ( ) ( ) ; 栈空是返回 ; ( ) ( - = 100) ; 栈满是返回 ; ( ) () (车库已满,请退出!); (-1); = ; = ; = ; ; ( ) () (车库已空,您的选择有错误!); (-1); ; = ; = ; = ; ( ) = = (1 *)(1); () (-1); = ; ( ) 1 *p; p = (1*)(1); () (-1); = ; = ; = ; = ; = p; 指向新进入便道的车 = p; ( ) 1
15、*p; ( ) 队列为空,无法出队 (-1); p = ; = ; = ; = ; ( p) = ; (p); () (n); (*n); (*请输入P或S来进行选择(不分大小写)*n); (t.自助选择停车地点n); (t.系统为您选择n); (t.退出系统n); (*n); () (n); (*n); (*请输入06来进行选择*n); (tt1.停在便道n); (tt2.停在车库n); (tt3.从车库移到便道n); (tt4.从便道移到车库n); (tt5.从车库取车n); (tt6.从便道取车n); (tt0.退出系统n); (*n); ( ) ; ( 1) 需要发票,需要在原有基础上
16、加上%15的费用 ( 1) 中途有更改停车地点 ( 0.1) 小于10分钟 = (0 + 20) * 1.15; ( 0.5) = (5 + 20) * 1.15; ( 1) = (8 + 20) * 1.15; ()12) = ()1)*6 + 8 + 20) * 1.15; = () - 12) * 5 + 8 + 11*6 + 20)*1.15; 一直停在车库中 ( 0.1) 小于10分钟 = (0 + 20); ( 0.5) = (5 + 20); ( 1) = (8 + 20); ()12) = ()1)*6 + 8 + 20; = () - 12) * 5 + 8 + 11*6 +
17、 20; 不需要发票,不需要20的管理费 ( 1) 中途有更改停车地点 ( 0.1) 小于10分钟 = 0 * 1.15; ( 0.5) = 5 * 1.15; ( 1) = 8 * 1.15; ()12) = ()1)*6 + 8) * 1.15; = () - 12) * 5 + 8 + 11*6)*1.15; 一直停在车库中 ( 0.1) 小于10分钟 = 0; ( 0.5) = 5; ( 1) = 8; ()12) = ()1)*6 + 8; = () - 12) * 5 + 8 + 11 * 6; ;/* 停车场管理系统的设计与实现 问题描述: 设计一个停车场管理系统,模拟停车场的运
18、作,此程序应具备以下功能: (1) 若车辆到达,则显示汽车在停车场车库内或便道上的停车位置; (2) 若车辆离去,则显示汽车在停车场内停留的时间和应交纳的费用。总费用应为在便道上的费用加上在停车场车库内的费用。 基本要求: (1) 要求以栈模拟停车场车库,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理; (2) a.车主进入停车场后,若车库和便道都有空闲,则由车主选择具体停在车库还是便道上; b.在车库和便道都有空闲的情况下,车辆停放位置也可应车主的要求选择更换(如原先停放在便道中的车辆,车主可以要求停在车库内); c.若车主没有特别要求,则按照栈和队列的顺序由系统自动分配位
19、子。 (3) 要求处理的数据元素包括的数据项为:汽车到达和离去的时间信息(包括在便道上和车库内的时间)、汽车牌号等; (4) 要求栈以顺序结构实现,队列以链表实现。 测试数据: 自行设计一组在停车场车库内停车的数据和在便道上停车的数据。 实现提示: (1) 该停车场车库能容纳车辆的数量,便道上的停车数量。 (2) 车辆到达对应栈或队列的入操作,车辆离去对应栈或队列的出操作。 (3) 费用计算问题: a. 应分等级收取费用,对于停在车库的车辆,十分钟以内免费,半小时内 5 元,第一个小时 8 元,以后每超过一个小时 6 元。 b. 停留 12 小时以上者另加每小时 5 元的托管费(前 12 小时不收托管费)。 d. 对索要发票者,另加总费用 15%的税费。 e. 对车主更换位置的车辆,收取 20 元的系统维护费。 f. 在便道上停留的时间按照半价收取。 */五用户手册 请根据主菜单操作,注意括号内的提示内容即可。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1