数据结构设计报告停车场管理系统.docx

上传人:b****8 文档编号:8947502 上传时间:2023-05-16 格式:DOCX 页数:10 大小:18.11KB
下载 相关 举报
数据结构设计报告停车场管理系统.docx_第1页
第1页 / 共10页
数据结构设计报告停车场管理系统.docx_第2页
第2页 / 共10页
数据结构设计报告停车场管理系统.docx_第3页
第3页 / 共10页
数据结构设计报告停车场管理系统.docx_第4页
第4页 / 共10页
数据结构设计报告停车场管理系统.docx_第5页
第5页 / 共10页
数据结构设计报告停车场管理系统.docx_第6页
第6页 / 共10页
数据结构设计报告停车场管理系统.docx_第7页
第7页 / 共10页
数据结构设计报告停车场管理系统.docx_第8页
第8页 / 共10页
数据结构设计报告停车场管理系统.docx_第9页
第9页 / 共10页
数据结构设计报告停车场管理系统.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构设计报告停车场管理系统.docx

《数据结构设计报告停车场管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构设计报告停车场管理系统.docx(10页珍藏版)》请在冰点文库上搜索。

数据结构设计报告停车场管理系统.docx

数据结构设计报告停车场管理系统

数据结构课程设计报告

题目停车场管理系统

班级0411005

姓名丁磊

学号2010211925

停车场管理系统

题目:

编制一个停车场的管理程序。

一.需求分析:

(1).以栈S作为停车场,栈S1作为让路的临时停车点,队列Q作为车等待时用的便道。

stack[Max+1]作为车场能够容纳的车辆数,num[10]作为车所在位置的编号,并且限定车场最多能够容纳10辆车.

(2).用户根据系统所规定并提示的要求输入有关内容,车场所能容纳的车辆数由收费人员来确定,车辆离开时,车主还可以得到收据,便于收费的管理使用;并且系统程序所提供的一些信息可通过特殊硬件显示出来,供车主了解信息,准确有效的停车。

(3).程序应该能够显示当前存车信息以及等待车的信息,便于管理人员对车辆进行管理,并且能够给等待的车提供一些信息,便于他们能够及时的停车。

(4).程序执行的命令为:

输入进站信息->输入出站信息->打印收据

(5).改程序系简单的用于运用栈与队列基本知识的工具,不能用于现实中,特别是栈“先进后出”的规则大大限定了该程序的推广,现实世界的车站管理系统比这个远远复杂的多。

二.概要设计:

1.设定栈的抽象数据类型定义为:

ADTstack{

数据对象:

D={ai|ai∈charset,i=1,2,……,n,n>=0}

数据关系:

R1={|ai-1,ai∈D,i=2……,n}

基本操作:

InitStack(&S)

操作结果:

构造一个空栈S。

Push(&S,e)

初始条件:

栈S已经存在。

操作结果:

在栈S的栈顶插入新的栈顶元素e。

Pop(&S,&e)

初始条件:

栈S已经存在。

操作结果:

删除S的栈顶元素,并以e返回其值。

StackTraverse(S,visit())

初始条件:

栈S已经存在。

操作结果:

从栈底到栈顶依次对S中的每一个元素调用函数visit().}ADTstack

2.设定队列的抽象数据类型定义为:

数据对象:

D={a

i|a

i

∈Elemset,i=1,2,……,n,n>=0}

数据关系:

R1={

i-1,a

i

>|a

i-1

a

i

∈D,i=2……,n}

约定其中a

i为队列头,a

n

为队列尾.

基本操作:

InitQueue(&Q)

操作结果:

构造一个空队列Q.

DestroyQueue(&Q)

初始条件:

队列Q已存在.

操作结果:

队列Q被销毁,不再存在.

ClearQueue(&Q)

初始条件:

队列Q已存在.

操作结果:

将Q清为空队列.

QueueEmpty(Q)

初始条件:

队列Q已存在.

操作结果:

若Q为空队列,则返回True,否则返回False.

QueueLength(Q)

初始条件:

队列Q已经存在.

操作结果:

返回Q的元素个数,即队列的长度.

GetHead(Q,&e)

初始条件:

Q为非空队列.

操作结果:

用e返回Q的对头元素.

EnQueue(&Q,e)

初始条件:

队列Q已存在.

操作结果:

插入元素e为Q新的队尾元素.

DeQueue(&Q,&e)

初始条件:

Q为非空队列.

操作结果:

删除Q的队头元素,并用e返回其值.

QueueTraverse(Q,visit())

初始条件:

Q已存在且非空.

操作结果:

从队头到队尾,依次对Q的每一个数据元素调用函数visit().一旦visit()失败,则操作失败.

}ADTQueue

3.本程序包括四个模块

1)主程序模块

voidmain()

{

声明定义

调用栈与队列的函数

主信息(输入初始操作信息)

}

2)栈模块---实现栈抽象数据类型

3)队列模块---实现队列抽象数据类型

4)结构体模块---用于对对象及变量的管理

各模块之间的调用关系如下:

主程序模块

结构体模块

栈模块

队列模块

4.设计停车管理程序的要求

按照从终端读入的输入数据进行模拟管理,每一组输入数据包括三个数据项:

汽车“进站”或“出站”信息、汽车牌照号码以及进站或出站的时刻,对每一组输入数据进行操作后的输出信息为:

若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内逗留的时间和应交纳的费用(在便道上停留不收费),按以顺序结构实现,队列以链表结构实现。

三.详细设计:

1.时间结点类型

typedefstructtime{

inthour;

intmin;

}Time;/*时间结点*/

2.车辆进出站信息类型

typedefstructnode{

charnum[10];

Timereach;

Timeleave;

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

3.停车场和便道信息类型

typedefstructNODE{

CarNode*stack[Max+1];

inttop;

}SeqStackCar;/*模拟车站*/

typedefstructcar{

CarNode*data;

structcar*next;

}QueueNode;

typedefstructNode{

QueueNode*head;

QueueNode*rear;

}LinkQueueCar;/*模拟通道*/

voidInitStack(SeqStackCar*,intn);/*声明栈*/

//初始化,创建两个新栈S,S1

intInitQueue(LinkQueueCar*);/*声明便道*/

//初始化,创建一个队列Q用于便道

intArrival(SeqStackCar*,LinkQueueCar*,intn);/*车辆进站*/

voidLeave(SeqStackCar*,SeqStackCar*,LinkQueueCar*,intn);/*车辆出站*/

voidList(SeqStackCar,LinkQueueCar);/*显示存车信息*/

voidInitStack(SeqStackCar*s,intn)/*初始化栈*/

4.主函数和其它函数的伪码算法

voidmain()

{//主程序

initialization();//初始化

while

(1){

scanf(...................);//根据提示信息输入想要的操作

switch(k){//根据输入的数调用不同的函数

case1:

case2:

....................

}

}

}

typedefstruct**{

//用于创建不同结构体类型的指针与变量

}

voidprint(CarNode*p){

//调用输出函数

Leave(*p,n)...................

根据求解时间值来求得费用,并通过收据打印出来

}

5.主要函数思想

本程序是个简单的栈与队列的应用程序,其所用的函数也是栈与队列的基本函数,但在

编写函数时应特别注意它的面向对象性与窗口化设计,切身为使用者着想.所以在运用

一些函数时调用的基本语句有太多的重复,其目的在于实现它本来的基本目的.

四.调试分析:

1.本次作业只是栈与队列的复习应用,所以总的调试比较顺利,只是在调用栈与队列的函数时遇到一些问题,比如我想通过键盘输入来确定停车场的停车数,所以初始化时那些操作函数必须带有停车数这个参数。

2.在定义栈的元素最大空间时如果使用顺序栈必须先给它赋初值,但如果通过链表就可以实现动态分配内存,为栈动态开辟新空间。

3.在判断键盘输入是否符合要求时,如果不符合要求应循环赋值,直到符合要求为止,在此利用的do-while循环语句与外部while语句套用时应使用两次break语句,才能跳出循环,否则会

造成死循环。

4.经验体会:

通过DEBUG调试器和数据观察窗口,可以加快找到程序中的疵点。

五.软件使用说明书:

本系统为存车信息管理软件,能实现车场存车及便道存车信息的输入,输出,查找等功能,并建立和更新的存车费用信息保存于文件输出或打印。

对于查找等功能能够按存车位置及车牌号分别进行。

每辆车的相关信息包括:

车牌号,进站时间,出站时间,存车位置,停车费用等。

本系统功能还需完善,操作简单,只是供学习之用,并不能作为实际生活使用。

下面介绍了此软件的使用说明:

1.停车场.exe;

2.进入演示系统后首先是一个用户及管理员使用注意事项界面,进入后会出现菜单选项。

1.车辆进站

2.车辆出站

3.存车信息

4.离开系统

请选择:

1|2|3|4.

这时可按照提示进行你想要的操作。

3.对于1-4的具体操作与内容请详见前面的调试分析,您便可以轻松操作了!

六.总结:

经过这次课程设计,通过对程序的编制,调试和运行,使我更好的掌握了栈和队列基本性质和有关它们之间关系使用问题的解决方法,熟悉了各种调用的数据类型,在调试和运行过程中使我更加的了解和熟悉程序运行的环境,提高了我对程序调试分析的能力和对错误的纠正能力。

这次数据结构的程序设计,对于我来说是一个挑战。

我对数据结构的学习在程序的设计中也有所体现。

课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。

七.附录

所用到的库函数:

Stdio.h/*标准输入/输出头文件*/

String.h/*包含字符串处理函数头文件*/

Stdlib.h/*包含动态存储与释放函数头文件*/

malloc.h/*包含内存分配头文件*/

源代码

/*停车场管理系统*/

#include

#include

#include

#include

/*-------------------------------------------------------------------------

-----*/

#defineMax10

intgetn()

{

intn;

printf("欢迎光临停车场,");

printf("本停车场管理实行24小时制,停车每分钟0.1元.\n");

printf("请输入停车场可容纳的车(最多10辆):

");

scanf("%d",&n);

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2