数据结构课程设计 停车场管理系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二停车场管理

班级:A0712 学号:12 姓名:冷清淼成绩:__________

指导教师签名:__________

一、问题描述

设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。在停车场内,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端)。若停车场内已停满n辆车,则后来的汽车需在门外的便道上等候,当有车开走时,便道上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出停车场为它让路,待该辆车开出大门后,其他车辆再按原次序返回车场。每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不收费)。

设计要求:

1.模拟上述管理过程。要求以顺序栈模拟停车场,以链队列模拟便道。

2.从终端读入汽车到达或离去的数据,每组数据包括三项:

(1)是“到达”还是“离开”;

(2)汽车牌照号码;

(3)“到达”或“离开”的时刻。

3.与每组输入信息相应的输出信息为:如果是到达的车辆,则输出其在停车场中或便道上的位置;如果是离去的车辆,则输出其在停车场中停留的时间和应交的费用。

二、算法说明

1.数据结构说明

(1)用到两个堆栈:一个为车场栈;另一个为临时栈temp

typedef struct NODE{

CarNode *stack[MAX+1];

int top;

}SeqStackCar; /*模拟车场*/

(2)一个队列结构,存储便道车辆信息:

typedef struct Node{

QueueNode *head;

QueueNode *rear;

}LinkQueueCar; /*模拟便道*/

2.算法说明

(1) 功能模块说明:停车场管理系统含有三个模块,即:车辆到达、离开、列表显示

图1

(2)以模块为单位分析算法

1、“到达”模块:到达时有两种情况,即车场是否满,未满则直接进入停车场;满时,到便道等待。如图2。

图2

2.“离开”模块:离开时,当车库为空时,提示没有车,结束;否则车辆离开。如图3。

图3

3. “显示”模块:显示模块有两个显示选项,即:车场与便道。如图4。

图4

三、测试结果

(一)测试用例(说明:测试用例要合理并且足够,既要有正确用例,也要有错误用例,同时检验程序的正确性和强壮性)

1.第一组测试用例

(1)测试输入:停车场的车辆离开,如下表:

服务选择车牌号/车位到达/离开时间

1 QH058 15:25

1 AB123 18:45

1 EA64

2 23:15

2 2 0:30

2 1 0:65(错误)

(2)测试目的:测试离开方法时间格式控制以及费用计算是否正确。

(3)正确输出:第一次离开的是AB123,应交费3.45元。第二次时,当在输入65时,应该提示输入错误,重输。

(4)实际输出:

(5)错误原因:第一个错误是在计算时,一个数字错了;第二个是没有对时间格式控制。

(6)当前状态:已改正

2.第二组测试用例

(1)测试输入:连续6辆车到达,如下表:

服务选择车牌号到达时间

1 A8828 7:56

1 S2296 8:25

1 WW666 8:45

1 HK456 15:50

1 GH999 12:30

1 DD555 13:40

(2)测试目的:测试到达方法与列表显示方法能否正确完成。

(3)正确输出:先到达的五辆车先进入停车场,最后到达的一辆在便道等候。(4)实际输出:

(5)错误原因:没有作出时间先后的判断,而是先输入先进入。

(6)当前状态:待修改

3.第三组测试用例

(1)测试输入:接上一步输入离开信息,下表:

服务选择离开车位离开时间便道车进入时间

2 3 13:30 13:40

(2)测试目的:测试离开方法功能是否成功以及便道进入车场是否正确。

(3)正确输出:输出3号车位的车辆离开信息清单,便道1号车进入停车场。

(4)实际输出:

(5)错误原因:没有错误。

(6)当前状态:通过

(二)测试结果分析

此停车管理系统基本可能实现一个小的停车场的管理,其“到达”与“离开”方法都相对比较完整,以及结算清单明了。尽管在时间先后上有出现混乱,但当其用到实际应用时,那个时间先后就可以避免了。但在输入数据时,要按照严格的格式输入,否则有可能出现死去或崩溃。若本系统能加上保存功能就更好了,因为一个系统在使用过程中总会关机等,而此系统的缺点却是没有保存功能,关闭之后就要重新建立了。会慢慢完善。

附录:源代码

///系统说明:本系统适应于小型停车场,且停车时间在一天之内的短期停放停车场。

//在此系统中,车库容量设置为5,便于测试。在实际使用中可以对容量大小按实际情况设置。

#include

#include

#include

#include

#define MAX 5 /*车库容量,可以根据实际情况改变*/

#define price 0.01 /*一辆车每分钟费用,可变*/

typedef struct time

{

int hour;

int min;

}Time; /*时间结点*/

typedef struct node

{

char num[10];

Time reach;

Time leave;

}CarNode; /*车辆信息结点*/

typedef struct NODE

{

CarNode *stack[MAX+1];

int top;

}SeqStackCar; /*模拟停车场*/

typedef struct car

{

CarNode *data;

struct car *next;

}QueueNode;

typedef struct Node

{

QueueNode *head;

QueueNode *rear;

}LinkQueueCar; /*模拟便道*/

/*方法声明*/

void InitStack(SeqStackCar *); /*初始化栈*/

int InitQueue(LinkQueueCar *); /*初始化便道*/

int Arrival(SeqStackCar *,LinkQueueCar *); /*车辆到达*/

void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); /*车辆离开*/

void List(SeqStackCar,LinkQueueCar); /*显示信息*/

void PRINT(CarNode *p,int room); /*输出离开车辆的信息清单*/

相关文档
最新文档