1、 1 课程设计报告课程设计报告 课程名称 数据结构课程设计 设计题目 停车场管理 专业、班级 学 号 姓 名 指导教师 设计时间 年 月 日 2 一、一、 引言引言 (一)设计目的和意义 1、 对于数据结构课程自身有进一步理解与提升; 2、 提高程序开发能力,进一步系统的掌握系统研发的全过程; 3、 培养提高综合运用所学的理论知识和方法独立分析和解决实际问题的能力; 4、 进一步提升 C 语言的应用能力; 5、 针对结构化设计思想进行全面充分的理解,初步具备根据应用需求对系统功能选择适当 的数据结构并进行算法设计的能力 6、 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和
2、技能; 7、 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学 的工作方法和作风; (二)设计内容 1、 问题描述: 设有一个可以停放 n 辆汽车的狭长停车场, 它只有一个大门可以供车辆进出。 车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆 车放在停车场的最里面) 。 如果停车场已放满 n 辆车, 则后来的车辆只能在停车场大门外 的便道上等待,一旦停车场内有车开走,则排以便道上的第一辆车就进入停车场。停车 场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其 开出停车场后,这些辆再依原来的次序进场。每辆车在离开停
3、车场时,都应根据它在停 车场内停留的时间长短交费。如果停留在便道上的车未进停车场时,允许其离去,不收 停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。 2、 实现提示:汽车的模拟输入信息格式可以是: (到达/离去,汽车牌照号码,到达/离去的 时刻) 。例如, ( A ,1,5)表示 1 号牌照车在 5 这个时刻到达,而( D ,5,20)表 示 5 号牌照车在 20 这个时刻离去。整个程序可以在输入信息为( E ,0,0)时结束。 本题可用栈和队列来实现。 3、 基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上) ,以及某辆车离开 停车场应交纳的费用和它
4、在停车场内停留的时间。 (三)主要任务 1、 全面了解程序设计全过程,掌握基本的算法设计思想; 2、 掌握完整的程序研究开发全过程; 3、 程序设计主题思想明确,原创作品。 二、正文正文 (一)设计思想 此停车场管理系统是在一个狭长的通道上的,而且只有一个大门可以供车辆进出,并且 要实现停车场内某辆车要离开时,在它之后进入停车场的车都必须先退出停车场为它让路, 待其开出停车场后,这些车辆再依原来的次序进场的功能,就可以设计两个堆栈,其中一个 堆栈用来模拟停车场,另一个堆栈用来模拟临时停车场,该临时停车场用来存放当有车辆离 开时,原来停车场内为其让路的车辆。至于当停车场已满时,需要停放车辆的通道
5、可以用一 个链队列来实现。当停车场内开走一辆车时,通道上便有一辆车进入停车场,此时只需要改 变通道上车辆结点的连接方式就可以了,使通道上第一辆车进入停车场这个堆栈,并且使通 道上原来的第二辆车成为通道上的第一辆车, 此时只需将模拟通道的链队列的头结点连到原 来的第二辆车上就可以了。 3 (二)实现方法 对于此停车场管理系统的实现, 就是用两个堆栈来分别模拟停车场以及停车场内车辆为 其它车辆让路时退出停车的临时停放地点。至于通道上车辆的停放则用一个链队列来实现, 此时,通道上车辆的离开或者进入停车场只需改变此链队列上的结点而已。对于要对停车场 内的车辆根据其停放时间收取相应的停车费用,可以记录下
6、车辆进入以及离开停车场的时 间,再用时间差乘以相应的单价并且打印出最后的费用就可以实现了。 (三)主要模块 首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量, 然后编写主函 数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用 option()函数,出现欢 迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再出现一个供用户选择的界 面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、停车场内停放车辆的 信息以及退出程序这四个函数模块。其中,在车辆的离开那个模块函数中又调用了打印离开 车辆信息的函数,在停车场内停放车辆信息的那个模块函数中,又分别调用了显示停车场上 车辆信息的函数以及显示便道上车辆信息的函数。最后,从调用的这四个函数中回到主函数 结束整个程序的运行。 附(各模块函数名) : void InitStack(SeqSta