《数据结构》课程设计报告
信息工程学院 计算机科学与技术专业
题目:停车场管理系统
班级:计算机卓越111班 第10组
组长:
姓名: 学号: 组员:
姓名: 学号:
指导老师:曲朝阳、郭晓利、刘志颖
日期:2012年12月27日
1
程序设计书目录
一、程序设计目标……………………………………………….3 二、问题描述…………………………………………………...3 三、需求分析…………………………………………………….4 四、概要设计…………………………………………………….5 五、详细设计…………………………………………………….8 六、软件说明书…………………………………………………11 七、源程序清单………………………………………………..12 八、测试报告 ………………………………………………….28 九、课程设计总结……………………………………………..36
2
一、程序设计目标
1、通过本次课设进一步的了解栈和队列等有关概念。掌握栈和队列的建立,掌握栈和队列的基本操作,深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们。
2、复习巩固C语言知识。通过C语言课程设计,使我们了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,更加了解C语言的好处和其可用性。进一步加深对C语言、数据结构、离散数学等基础技能的理解和掌握。
3、掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。
4、掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!让我们有一个既动手又动脑,独立实践的机会,锻炼我们的分析解决实际问题的能力。同时增加了同学之间的团队合作精神!更加体会到工作中团队合作的重要性和必要性!
二、 问题描述
※按照题目要求,我们把程序分为三个模块
a.车辆到达模块:设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待。
b.车辆离开模块:一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
3
c.显示模块:当需要列表显示时,系统判断输入值(1-3),如果输入1,则调用显示车场列表,如果输入2,则调用显示便道信息,如果输入3,则返回主菜单。
三、 需求分析
这个程序的关键是车辆的进站和出站操作,以及车辆的通道之间的相互关系。由于停车场是一个很窄的、一边开口的车道,先进后出,类似数据结构中的栈结构,故车场用顺序栈这种数据结构来描述。
外面的狭长的通道,先进后出,通道的车辆可以随时退出,故可用链式队列结构来描述。考虑到车场和通道在整个程序中都要用到,故把这两个变量定义为全局变量。本程序中的数据对象是汽车,可以认为车牌号是每个元素的关键项,不能重复,和现实中的一样,车的入场时间以及出场时间都将作收费项目来考虑。在通道上的车由于没有入场,故不用收取费用。
※功能实现方式:
(1).以栈S作为停车场,栈S1作为让路的临时停车点,队列Q作为车等待时用的便道,stack[Max+1]作为车场能够容纳的车辆数,num[10]作为车所在位置的编号,并且限定车场最多能够容纳10辆车.
(2).用户根据系统所规定并提示的要求输入有关内容,车场所能容纳的车辆数由收费人员来确定,车辆离开时,车主还可以得到收据,便于收费的管理使用,并且系统程序所提供的一些信息可通过特殊硬件显示出来,供车主了解信息,准确有效的停车。
(3).程序能够显示当前存车信息以及等待车的信息,便于管理人员对车辆进行管理,并且能够给等待中的车提供当前车场占用情况信息,便于他们能够及时的停车。
(4).程序执行的命令为:输入进站信息->输入出站信息->打印收据
(5).每组输入信息相应的输出信息为:如果是到达的车辆,则输出其在停车场中或便道上的位置;如果是离去的车辆,则输出其在停车场中停留的时间和应交的费用。
4
四、概要设计
1.数据结构说明
用到两个顺序栈:一个为车场栈;另一个为临时栈temp typedef struct Node {
CarNode *stack[MAX+1]; int top; }SeqStackCar;
一个链式队列结构,存储便道车辆信息: typedef struct Node {
QueueNode *head; QueueNode *rear; }LinkQueueCar;
2.算法说明 终端汽车读入数据包含三项: a.是“到达”还是“离开”; b.汽车牌照号码;
c.“到达”或“离开”的时刻。
3.功能模块说明 停车场管理系统含有三个模块,即:车辆到达、离开、列表显示停车场系统132车辆到达车辆离开列表显示
(图1) 以模块为单位分析算法
5