1、 数据结构数据结构 课程设计报告课程设计报告 设计题目 停车场管理系统 班 级 网络 1102 姓 名 学 号 指导教师 日 期 2012 年 6 月 25 日 计算机与信息工程系 数据结构数据结构课程设计评阅表课程设计评阅表 设计题目 停车场管理系统 班级 网络 1102 姓名 翟瑜璇 学号 40 答辩评语: 总结报告评语: 功能实现 答辩效果 设计报告 创 新 总 分 一、一、 引言引言 设停车场是一个可停放 n 辆汽车的狭长通道, 且只有一个大门可供汽车进出。 汽车在停 车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆 车停放在车场的最北端),若车场内已停
2、满 n 辆汽车,则后来的汽车只能在门外的便道上等 候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在他 之后进入的车辆必须先退出车场为它让路, 待该辆车开出大门外, 其他车辆再按原次序进入 车场, 每辆停放在车场的车在它离开车场时必须按它停留的时间长短交纳费用。 由于停车场 是一个狭窄通道, 而且只有一个大门可供汽车进出, 问题要求汽车停车场内按车辆到达时间 的先后顺序,依次由北向南排列。由此很容易联想到数据结构中的堆栈模型,因此可首先设 计一个堆栈,以堆栈来模拟停车场,又每个汽车的车牌号都不一样,这样一来可以根据车牌 号准确找到汽车位置, 所以堆栈里的数据元素我设
3、计成汽车的车牌号。 当停车场内某辆车要 离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再 按原次序进入停车场。这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序, 因此可再设计一个堆栈, 以之来暂时存放为出站汽车暂时让道的汽车车牌号。 当停车场满后, 继续进来的汽车需要停放在停车场旁边的便道上等候, 若停车场有汽车开走, 则按排队的先 后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型, 因此可设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车的车牌号。另外,停车 场根据汽车在停车场内停放的总时长来收费的, 在便道上的时间
4、不计费, 因此必须记录车辆 进入停车场时的时间,车辆离开停车场时的时间不需要记录,当从终端输入时可直接使用。 二、二、 设计过程设计过程 1、流程图设计 开始 输入车辆的号码及到达时间 停 车 场 是 否 已 满? 进入停车场 离开停车场 进入便道等候 2、设计思想 此停车场管理系统是在一个狭长的通道上的, 而且只有一个大门可以供车辆进出, 并且 要实现停车场内某车辆车要离开时,在它之后进入停车场的车都必须先退出停车场为它让 路,待其开出停车场后, 这些车再依原来的次序进场的功能,就可以设计两个堆栈,其中 一个堆栈用来模拟停车场, 另一个堆栈用来模拟临时停车场, 该临时停车场用来存放当有车 辆
5、离开时,原来停车场内为其让路的车辆。至于当停车场已满时,需要停放车辆的通道可以 用一个链队列来实现。当停车场内开走一辆车时,通道上便有一辆车进入停车场,此时只需 要改变通道上车辆结点的链接方式就可以了, 使通道上第一辆车进入停车场这个堆栈, 并且 使通道上原来的第二车辆成为通道上的第一辆车, 此时只需将模拟通道的链队列的头结点连 到原来的第二辆车上就可以了。 3、主要模块 首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量, 然后编写主函 数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用 option()函数,出现欢 迎用户使用的主界面, 然后提示用户进入此停车场管理系
6、统后, 再出现一个工用户选择的界 判断停车场 是否为空? 车场里没有车 输出离开时间计 算价格 判 断 便 道 为 空? 便道里面没有车辆 车辆进入停车场 车辆进入停车场 结束 面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、停车场内停放车辆的 信息以及退出程序这四个函数模块。 4、模块间关系 三、三、 测试及运行结果测试及运行结果 1、 常见的错误 开始 初始化两个栈及一个队列。 进入主菜单 车到达 车离开 列表显示 退出 车场是否为空 车场内信息 便道车信息 退 出 列 表 显示 否 Room 前 车 辆进临时栈 对 Room 计费 判便道是否有车 是 便道车进车场 是 判断栈是否为满 否 否 元素进栈 栈元素出栈 队列中元素进栈 是 元素进队列 队列中元素 出队 结束 容易将程序中的字母打错:在写程序时多注意,尽量不打错 2、 运行过程及结果 (1)程序开始运行 (2)车辆到达输入信息 (3)车辆离开 (4)车辆信息 (5)退出系统 四、四、 总结总结 一周的课程设计结束了, 在这次的课程设计中不仅检验了我所学习的知识, 也培养了我