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

上传人:zw****58 文档编号:44177552 上传时间:2018-06-08 格式:DOC 页数:27 大小:138KB
返回 下载 相关 举报
数据结构设计报告---停车场管理系统_第1页
第1页 / 共27页
数据结构设计报告---停车场管理系统_第2页
第2页 / 共27页
数据结构设计报告---停车场管理系统_第3页
第3页 / 共27页
数据结构设计报告---停车场管理系统_第4页
第4页 / 共27页
数据结构设计报告---停车场管理系统_第5页
第5页 / 共27页
点击查看更多>>
资源描述

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

1、数据结构课程设计报 告题目题目 汽车场停车管理系统程序汽车场停车管理系统程序班级班级 软件技术软件技术 2 班班 姓名姓名 梁瑞瑞梁瑞瑞 学号学号 1032104220 停车场管理系统停车场管理系统1 问题描述设停车场是一个可停放 n 辆汽车的狭长通道,且只有一个门可供出入。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(门在最南端,最先到达的第一辆车停放在车场的最北端) ,若车场内已停满 n 辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆汽车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按

2、原顺序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。2 需求分析(1)根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。(2)当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。实现停车场的调度功能。(3)用顺序栈来表示停车场,链队表示停车场外的便道。(4)显示停车场信息和便道信息。(5)程序执行的命令为:车辆进入停车场 车辆离开停车场 显123示停车场的信息。(以栈 S 作为停车场,栈 S1 作为让路的临时停车点,队列 Q 作为车等待时用的便道。stackMax+1作为车场能够容纳的车辆数,num10作为车所在位置的编号,并且限定车场最多能够容纳

3、 10 辆车.(2).用户根据系统所规定并提示的要求输入有关内容,车场所能容纳的车辆数由收费人员来确定,车辆离开时,车主还可以得到收据,便于收费的管理使用;并且系统程序所提供的一些信息可通过特殊硬件显示出来,供车主了解信息,准确有效的停车。(3).程序应该能够显示当前存车信息以及等待车的信息,便于管理人员对车辆进行管理,并且能够给等待的车提供一些信息,便于他们能够及时的停车。(4).程序执行的命令为:输入进站信息-输入出站信息-打印收据(5).改程序系简单的用于运用栈与队列基本知识的工具,不能用于现实中,特别是栈“先进后出”的规则大大限定了该程序的推广,现实世界的车站管理系统比这个远远复杂的多

4、。二概要设计:1.设定栈的抽象数据类型定义为:ADT stack数据对象:D=ai|aicharset,i=1,2,n,n=0数据关系:R1=|ai-1,aiD,i=2,n基本操作:InitStack( int min; Time; /*时间结点*/ 2.车辆进出站信息类型typedef struct node char num10;Time reach; Time leave; CarNode; /*车辆信息结点*/ 3.停车场和便道信息类型typedef struct NODE CarNode *stackMax+1;int top; SeqStackCar; /*模拟车站*/typede

5、f struct car CarNode *data;struct car *next; QueueNode; typedef struct Node QueueNode *head; QueueNode *rear; LinkQueueCar; /*模拟通道*/ void InitStack(SeqStackCar *,int n); /*声明栈*/初始化,创建两个新栈 S,S1int InitQueue(LinkQueueCar *); /*声明便道*/初始化,创建一个队列 Q 用于便道int Arrival(SeqStackCar *,LinkQueueCar *,int n); /*车

6、辆进站*/void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *,int n); /*车辆出站*/void List(SeqStackCar,LinkQueueCar); /*显示存车信息*/ void InitStack(SeqStackCar *s,int n) /*初始化栈*/4.主函数和其它函数的伪码算法void main()/主程序initialization(); /初始化while(1)scanf(.);/根据提示信息输入想要的操作switch(k)/根据输入的数调用不同的函数case 1:case 2:.typedef str

7、uct */用于创建不同结构体类型的指针与变量void PRINT(CarNode *p)/调用输出函数Leave(*p,n).根据求解时间值来求得费用,并通过收据打印出来5.主要函数思想本程序是个简单的栈与队列的应用程序,其所用的函数也是栈与队列的基本函数,但在编写函数时应特别注意它的面向对象性与窗口化设计,切身为使用者着想.所以在运用一些函数时调用的基本语句有太多的重复,其目的在于实现它本来的基本目的.四调试分析:1. 本次作业比较简单,只是栈与队列的复习应用,所以总的调试比较顺利,只是在调用栈与队列的函数时遇到一些问题,比如我想通过键盘输入来确定停车场的停车数,所以初始化时那些操作函数必

8、须带有停车数这个参数。2. 在定义栈的元素最大空间时如果使用顺序栈必须先给它赋初值,但如果通过链表就可以实现动态分配内存,为栈动态开辟新空间。3. 在判断键盘输入是否符合要求时,如果不符合要求应循环赋值,直到符合要求为止,在此利用的 do-while 循环语句与外部 while 语句套用时应使用两次 break 语句,才能跳出循环,否则会造成死循环。4. 经验体会:通过 DEBUG 调试器和数据观察窗口,可以加快找到程序中的疵点。五软件使用说明书:本系统为存车信息管理软件,能实现车场存车及便道存车信息的输入,输出,查找等功能,并建立和更新的存车费用信息保存于文件输出或打印。对于查找等功能能够按

9、存车位置及车牌号分别进行。每辆车的相关信息包括:车牌号,进站时间,出站时间,存车位置,停车费用等。本系统功能还需完善,操作简单,只是供学习之用,并不能作为实际生活使用。下面介绍了此软件的使用说明:1.停车场.exe;2.进入演示系统后首先是一个用户及管理员使用注意事项界面,进入后会出现菜单选项。1.车辆进站 2.车辆出站 3.存车信息 4.离开系统请选择: 1|2|3|4.这时可按照提示进行你想要的操作。3.对于 14 的具体操作与内容请详见前面的调试分析,您便可以轻松操作了!六总结:经过这次课程设计,通过对程序的编制,调试和运行,使我更好的掌握了栈和队列基本性质和有关它们之间关系使用问题的解

10、决方法,熟悉了各种调用的数据类型,在调试和运行过程中使我更加的了解和熟悉程序运行的环境,提高了我对程序调试分析的能力和对错误的纠正能力。这次数据结构的程序设计,对于我来说是一个挑战。我对数据结构的学习在程序的设计中也有所体现。课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。七附录所用到的库函数:Stdio.h /*标准输入/输出头文件*/String.h /*包含字符串处理函数头文

11、件*/Stdlib.h /*包含动态存储与释放函数头文件*/Malloc.h /*包含内存分配头文件*/该停车场管理系统的主要程序如下:/*停车场管理系统*/#include#include #include#include/*-*/ #define Max 10int getn()int n;printf(“欢迎您光临顺风停车场,“);printf(“本停车场管理实行 24 小时制,停车每分钟 0.1 元.n“);printf(“请输入停车场可容纳的车(最多 10 辆):“);scanf(“%d“,fflush(stdin);doif(n10)printf(“输入的车辆数不在要求范围内,请重

12、新输入!“);scanf(“%d“,fflush(stdin);else break;while(n10);return n;typedef struct time int hour; int min; Time; /*时间结点*/ typedef struct node char num10;Time reach; Time leave; CarNode; /*车辆信息结点*/ typedef struct NODE CarNode *stackMax+1;int top; SeqStackCar; /*模拟车站*/typedef struct car CarNode *data;struc

13、t car *next; QueueNode; typedef struct Node QueueNode *head; QueueNode *rear; LinkQueueCar; /*模拟通道*/ void InitStack(SeqStackCar *,int n); /*声明栈*/int InitQueue(LinkQueueCar *); /*声明便道*/int Arrival(SeqStackCar *,LinkQueueCar *,int n); /*车辆进站*/void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *,int n

14、); /*车辆出站*/void List(SeqStackCar,LinkQueueCar); /*显示存车信息*/ void InitStack(SeqStackCar *s,int n) /*初始化栈*/ int i; s-top=0; for(i=0;istacks-top=NULL; int InitQueue(LinkQueueCar *Q) /*初始化便道*/ Q-head=(QueueNode *)malloc(sizeof(QueueNode); if(Q-head!=NULL) Q-head-next=NULL; Q-rear=Q-head; return(1); else

15、return(-1); void PRINT(CarNode *p) /*打印出站车的信息*/ int A1,A2,B1,B2;int a,b,c; printf(“n 请输入离开的时间:/*:*/“); scanf(“%d:%d“,fflush(stdin);doif(p-leave.hourreach.hour | (p-leave.hour=p-reach.hour scanf(“%d:%d“,fflush(stdin);if(p-leave.hourleave.hour=24 | p-leave.minleave.min=60)printf(“输入的时间格式有错,请重新输入!“);scanf(“%d:%d“,fflush(stdin);else break;while(p-leave.hourreach.hour | (p-leave.hour=p-reach.hour printf(“车场现在有一辆车离开,请便道里的第一辆车进入车场!n“);printf(“出站的车的车牌号为:“);puts(p-num);print

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号