- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据结构》课程设计报告
设计题目 停车场管理系统
专 业 X X X X
班 级
姓 名 XXX
学 号 XXXXXX
完成日期 XXXXXXX
目 录
1. 问题描述………………………………………………2
2. 系统设计………………………………………………2-3
3. 数据结构与算法描述…………………………………3-4
4. 测试结果与分析………………………………………4-7
5. 总 结…………………………………………………7-8
6. 参考文献………………………………………………8
附录 程序源代码…………………………………………8-14
停车场管理系统
1. 问题描述
设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,(判断其是否为第n辆车,进而判断是否需要让路)在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。(此时可以另设一个辅助栈,将编号大于要离开车的编号的车按退出次序入栈,待车开走后,再将辅助栈中的车依次出栈并进入停车场栈中)每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。(可以按每时刻价格缴费)如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。(在便道上的车要离开时,同样将其前面的车即编号小于它的车依次入辅助队列,待车开走后,再将辅助队列中的车依次出队并进入便道队列中)以下编制的程序为模拟该停车场的管理。
2. 系统设计
2.1 设计目标
根据问题的描述,来设计一个停车场管理系统的程序。程序功能:输出每辆车到达后的停车位置,以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。如果不需交费,允许其离开,这时可不输出上述信息,提示其可以离开,不需交费即可。
2.2 设计思想
类似于现实生活中的管理系统,程序运行时会显示主菜单,根据用户的选择显示不同的信息,提示用户作相应的操作。 从看到该程序的要求及提示,知道本程序要用到栈和队列,这是主线,再根据编程时的具体要求,在加入其他的知识。具体参见以下数据结构及算法描述。
2.3 系统模块划分(要给出流程图)
表2-3 停车信息表
列名 数据类型 长度 可否为空 停车位置标志 integer 1 Not null 车编号 int Not null 车到达时刻 clock_t Not null 车离开时刻 clock_t Not null 应交纳费用 double Null 备注 车到达、离开时刻均为clock_t的对象,要调用其函数clock()
3. 数据结构与算法描述
根据问题描述及实现提示,知道该程序主要用到数据结构中栈和队列的知识。这是主线,在编程的时候,首先用一个栈CarStack表示停车场,而便道则用队列RoadQueue表示。根据程序的要求,当有车从停车场中离开时,首先需要判断该车是否为停车场最后一辆车,然后根据结果判断是否需要其他车为其让路。显然在让路的时候,需要增加一个辅助栈Sf.同样便道上的车离开时,根据结果,确定是否需要增加辅助队列Qf.
另外,由于在车离开时要判断是否交费,所以需要存储每辆车的信息,我在程序中又加入了顺序表SqList.并将其元素类型elemtype定义为结构体类型,以便包含多个数据项。该停车场是按照车辆的停留时间进行收费的,所以我调用C++系统函数clock(),通过到达和离开时间差值来计算所需收取的费用。
4. 测试结果与分析(可将测试过程抓图说明)
在编写程序时, 出现了很多问题,有些都是基本问题。例如:在让程序自动生成车编号的时候,我将编号bh的初值放在了循环里,结果每进一辆车的编号都是0。另外,在程序进行测试时,我将停车场的存储量设为1,发现当停车场满时,并不提示用户,“停车场已满,需要停在便道上!”最后发现需要将栈、队列和顺序表的初始化操作定义在循环外。这是因为每进行一个循环就会重新初始化一次。
文档评论(0)