- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据结构》课程设计报告
设计课题停车场管理系统
目录
1. 问题描述………………… 2
2. 系统设计 2-3
3. 数据结构和算法描述.................... 3-4
四、测试结果与分析…… 4-7
5. 总结...................................... 7 -8
6. 参考文献..................... 8
附录程序源代码………………… 8-14
停车场管理系统
一、问题描述
有一个狭长的停车场,可以停n辆车,只有一个大门供车辆进出。车辆按照到达停车场的时间从停车场的最里面停到门口(先到的车辆放在停车场的最里面) 。如果停车场已经停满n辆车,后面的车辆只能在停车场大门外的人行道上等候。一旦停车场有车离开,人行道上的第一辆车就会进入停车场。如果一辆车要在停车场开走,(判断是否是第n辆车,再判断是否需要让路),之后进入停车场的车辆必须退出停车场让路它,然后等待它驶出停车场。场后,这些车辆将按原顺序进入场内。 (此时可以再设置一个辅助栈,将编号大于待留车号的车按照退出的顺序放入栈中。车辆开走后,进入的车辅助堆栈依次释放,进入停车场堆栈。)汽车离开停车场时,应按在停车场停留的时间长短付费。 (可以按小时计费)停在人行道上的车辆如必须在进入停车场前离开停车场,不收停车费内容离开,人行道上等候的车辆顺序为仍然保持。 (当人行道上的汽车即将离开时,前面的车辆,即比它小的车辆,也依次进入辅助队列。车辆开走后,辅助中的车辆队列依次出队,进入人行道队列) 下面编写的程序是模拟停车场的管理。
2.系统设计
2.1 设计目标
根据问题描述,设计一个停车场管理系统方案。程序功能:到达时输出每辆车的停车位置,以匹配车辆离开停车场时应支付的费用和在停车场停留的时间。如果不需要支付,则内容离开。此时可能无法输出以上信息,提示可以不付费离开。
2.2 设计思维
类似于现实生活中的管理系统,程序运行时会显示主菜单,根据用户的选择显示不同的信息,提示用户进行相应的操作。从看到程序的需求和提示就知道这个程序用到了栈和队列,这是主线,然后根据编程的具体要求添加其他知识。详细请参见下面的数据结构和算法说明。
2.3 系统模块划分(需给出流程图)
表 2-3 停车信息表
列名
数据类型
长度
可以为空
停车位标志
整数
1
不为空
车号
整数
不为空
汽车到达时间
时钟_t
不为空
汽车发车时间
时钟_t
不为空
应付费用
双倍的
无效的
评论
汽车的到达和离开时间是clock_t的一个对象,应该调用它的函数clock()。
3.数据结构和算法描述
根据问题描述和实现提示,我们知道程序主要使用了数据结构中的栈和队列的知识。这是主线。编程的时候用一个栈CarStack来表示停车场,人行道用一个队列RoadQueue来表示。根据程序要求,当一辆车离开停车场时,首先要判断该车是否是停车场的最后一辆车,然后根据结果判断其他车是否需要为它让路。显然,让路时,需要添加一个辅助栈Sf。当同一人行道上的汽车离开时,根据结果判断是否需要增加辅助队列Qf。
另外,由于需要在汽车离开时判断是否支付费用,因此需要存储每辆汽车的信息。我将序列表 SqList 添加到程序中。并将其元素类型elemtype定义为包含多个数据项的结构类型。停车场是按照车辆停留时间收费的,所以我调用了C++系统函数clock(),通过到达和离开时间的差来计算需要的费用。
进
进 入 系 统
主
主 菜 单
使用说明 退出
使用说明
退
出
离开交费
需要停车
程序自动生成到达车编号bh
程序自动生成到达车编号bh
产生到达时刻t1=clock()
标志位flag
输入离开车的编号ph
调用系统时间t2=clock()
交费total_money
图
图3-1 总体结构设计框图
4、测试结果与分析(可对测试过程进行捕捉和解释)
在编写程序时,会出现许多问题,其中一些是根本性的。例如:当我让程序自动生成车号时,我把数字bh的初始值放在循环中,结果是每辆来车的车号都是0。另外,在程序测试的时候,我将停车场的存储容量设置为1,发现当停车场已满时,并没有提示用户,“停车场已满,需要停在人行道上!”最后发现栈、队列和序列表的初始化操作是在循环外定义的。这是因为每次循环通过时都会重新初始化。
以上都是小问题,自行检查后可以正确纠正。还有下面的问题,不知道怎么解决,无法输出离开信息。
对于上面的问题,我不知道怎么修改,所以把程序给同学看,在她的帮助下,问题解决了。当人行道上的车进入辅助队列时,当车号小于队列中剩余节点数时,while循环条件错误。它是以下代码(彩色部分):
别的
{
cout你的车还没有进停车场
原创力文档


文档评论(0)