1、 课程设计课程设计 课课 程:程: 题题 目:目: 停车场管理系统停车场管理系统 专专 业:业: 班班 级:级: 姓姓 名:名: 2010 年年 9 月月 6 日日 数据结构课程设计数据结构课程设计 停车场管理系统停车场管理系统 一、一、 课程设计目的课程设计目的 1、 通过课程设计,加深对数据结构这一课程所学内容的进一步理解与巩固。 2、 通过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合 理的模块化结构。 3、 通过课程设计,提高程序开发功能,能运用合理的控制流程编写清晰高效的程序。 4、 通过课程设计,训练 C 程序调试能力,能将一个中小型各级组织系统联调通过。 5
2、、 通过课程设计,开发一个中小型系统,掌握系统研发全过程。 6、 通话课程设计,培养分析问题、解决实际问题的能力。 二、课程设计内容二、课程设计内容 问题描述: 设有一个可以停放 n 辆汽车的狭长停车场, 它只有一个大门可以供车辆进出。 车辆按 到达停车场时间的早晚依次从停车场最里面向大门口处停放 (最先到达的第一辆车放在停 车场的最里面) 。如果停车场已放满 n 辆车,则后来的车辆只能在停车场大门外的便道上 等待,一旦停车场内有车开走,则排以便道上的第一辆车就进入停车场。停车场内如有某 辆车要开走, 在它之后进入停车场的车都必须先退出停车场为它让路, 待其开出停车场后, 这些辆再依原来的次序
3、进场。 每辆车在离开停车场时, 都应根据它在停车场内停留的时间 长短交费。如果停留在便道上的车未进停车场时,允许其离去,不收停车费,并且仍然保 持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。 基本要求: 要求程序输出每辆车到达后的停车位置(停车场或便道上) ,以及某辆车离开停车场 应交纳的费用和它在停车场内停留的时间。 实现提示: 汽车的模拟输入信息格式可以是: (到达/离去,汽车牌照号码,到达/离去的时刻) 。 例如, ( A ,1,5)表示 1 号牌照车在 5 这个时刻到达,而( D ,5,20)表示 5 号牌照 车在 20 这个时刻离去。整个程序可以在输入信息为( E ,0,
4、0)时结束。本题可用栈和 数据结构课程设计.停车场管理系统 第 2 页 共 94 页 队列来实现。 三、概要设计三、概要设计 1、设计思想 此停车场管理系统是在一个狭长的通道上的,而且只有一个大门可以供车辆进出, 并且要实现停车场内某辆车要离开时, 在它之后进入停车场的车都必须先退出停车场为 它让路, 待其开出停车场后, 这些辆再依原来的次序进场的功能, 就可以设计两个堆栈, 其中一个堆栈用来模拟停车场, 另一个堆栈用来模拟临时停车场, 该临时停车场用来存 放当有车辆离开时,原来停车场内为其让路的车辆。至于当停车场已满时,需要停放车 辆的通道可以用一个链队列来实现。 当停车场内开走一辆车时,
5、通道上便有一辆车进入 停车场, 此时只需要改变通道上车辆结点的连接方式就可以了, 使通道上第一辆车进入 停车场这个堆栈, 并且使通道上原来的第二辆车成为通道上的第一辆车, 此时只需将模 拟通道的链队列的头结点连到原来的第二辆车上就可以了。 2、实现方法 对于此停车场管理系统的实现, 就是用两个堆栈来分别模拟停车场以及停车场内车 辆为其它车辆让路时退出停车的临时停放地点。 至于通道上车辆的停放则用一个链队列 来实现,此时,通道上车辆的离开或者进入停车场只需改变此链队列上的结点而已。对 于要对停车场内的车辆根据其停放时间收取相应的停车费用, 可以记录下车辆进入以及 离开停车场的时间,再用时间差乘以
6、相应的单价并且打印出最后的费用就可以实现了。 3、主要模块 此停车场管理系统,主要分为以下若干模块: 首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量, 然后编写 主函数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用 option()函 数,出现欢迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再出现一个 供用户选择的界面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、 停车场内停放车辆的信息以及退出程序这四个函数模块。 其中, 在车辆的离开那个模块 函数中又调用了打印离开车辆信息的函数,在停车场内停放车辆信息的那个模块函数 中, 又分别调用了显示停车场上车辆信息的函数以及显示便道上车辆信息的函数。 最后, 数据结构课程设计.停车场管理系统 第 3 页 共 94 页 从调鼐的这四个函数中回到主函数结束整个程序的运行。 在以上各个模块中,出现的调用的函数为: void InitStack(SeqStackCar *s); int InitQueue(LinkQueu