资源预览内容
第1页 / 共66页
第2页 / 共66页
第3页 / 共66页
第4页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数据结构课程设计实验报告安徽大学25500字 2013-7-26【实验一】停车场管理系统设计要求1.问题描述设计一个停车场管理系统,模拟停车场运作,此程序具备以下功能:(1)若车辆到达,则显示汽车在停车场内或便道上的停车位置;(2)若车辆离开,则显示汽车在停车场内停留的时间和应缴纳的费用(在便道上停留的时间不收费);2.需求分析(1)要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。(2)要求处理的数据元素包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去时刻。(3)要求栈以顺序结构实现,队列以链表实现。概要设计1. 主界面设计为了实现“停车管理系统”的各项功能,首先为系统设计一个含有多个菜单的主控菜单子程序,以链接系统的各项子功能,方便用户使用本系统。系统主控菜单运行界面如下:12013-7-262. 存储结构设计本系统采用顺序栈模拟停车场管理操作,以链表队列模拟便道停车管理操作。以下是本系统中涉及的存储结构的定义:typedef structint *base;int *top;int stacksize;int cartimem;int chepaihaom;SqStack;/栈的顺序存储表示struct Listint Am+n; /记录车牌号信息int Bm+n;/记录车辆到达时选择的车位号int len;/表示数组中元素个数L;typedef struct QNode/链队列元素结点类型int data;struct QNode *next;QNode, *QueuePtr;typedef struct/链队列类型QueuePtr front;QueuePtr rear;LinkQueue;3.系统主要功能设计本系统共采用3个功能模块,每个模块中又各自包含自己的子功能,各功能模块如下:1.车辆到达;该模块将给用户提供两种停车选择,是场内停车还是便道停车方式,便于用户选择。2.车辆离开;用户进入该界面,只要输入相关信息,系统将会显示用户在该停车场内停留的时间以及是否需要支付相应金额的停车费用等。3.退出系统;方便用户退出本系统。模块设计1. 模块设计22013-7-26本程序包含4个模块,它们分别是:主程序模块、菜单选择模块、栈操作模块、队列操作模块。调用关系如图所示:2. 系统子程序及功能设计1) void Initshuzu() /初始化数组2) void time() /时间函数3) void chepaihao() /输入的车牌号4) void InitStack(SqStack &S) /构造一个空栈s5) void push(SqStack &S,int e) /车辆进入停车场场内停车6) void pop(SqStack &S,int e) /车辆离开停车场场内7) void InitQueue(LinkQueue &Q) /构造一个空队列Q8) void EnQueue(LinkQueue &Q,int elem) /车辆进入便道9) void DeQueue(LinkQueue &Q ,int &e) /车辆离开便道10) void tingchefangshi() /选择停车方式,场内停车还是便道停车11) void likai() /车辆离开12) void main() /主函数3. 函数主要调用关系图32013-7-26详细设计1.数据类型定义(1)栈的顺序存储结构体定义typedef structint *base;int *top;int stacksize;int cartimem;int chepaihaom;SqStack;(2)数组的结构体定义struct Listint Am+n; /记录车牌号信息int Bm+n;/记录车辆到达时选择的车位号int len;/表示数组中元素个数L;(3)链队列元素结点的结构体定义typedef struct QNodeint data;struct QNode *next;QNode, *QueuePtr;typedef structQueuePtr front;QueuePtr rear;LinkQueue;(4)全局变量定义int z;time_t am+n,end;double Am+n=0;int count1=0,count2=0;/count1、count2分别用来统计场内停车数和便道停车数,并且初始化为02.系统主要子程序设计(1)车辆进入停车场场内停车void push(SqStack &S,int e)/车辆进入停车场场内停车int stacksize=50;if(S.top-S.base=stacksize)/栈满,追加存储空间S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int);42013-7-26if (!S.base) exit(OVERFLOW );S.top=S.base+S.stacksize;S.stacksize +=STACKINCREMENT;*S.top+=e;/push(2)车辆进入便道停车void EnQueue(LinkQueue &Q,int elem)/车辆进入便道QNode *s;s=(QueuePtr)malloc(sizeof(QNode);if(!s) exit(OVERFLOW);s-data=elem;s-next=NULL;Q.rear-next=s;Q.rear=s;(3)车辆离开场内void pop(SqStack &S,int e)/车辆离开停车场场内e=*-S.top;/pop(4)车辆离开便道void DeQueue(LinkQueue &Q ,int &e)/车辆离开便道QNode *t;if(Q.front=Q.rear)printf(便道内无任何车辆n);exit(1);elset=Q.front-next;e=t-data;Q.front-next=t-next;if(Q.rear=t) Q.rear=Q.front;free(t);(5)选择停车方式void tingchefangshi()/选择停车方式,场内停车还是便道停车printf( 请选择您的停车方式:n);52013-7-26printf( 1. 场内停车 n); printf( 2. 便道停车 n); scanf(%d,&z);switch(z)case 1:if(count1=m)printf( 您选择的是: 1. 场内停车n);printf( 您的车位是:%d 号车位n,count1);chepaihao();printf(n);printf( 从现在开始为您计时,您的到达时间是:n); time();acount1=time(NULL);count1+;push(S,count1);else printf( 当前车位已满,请选择其他停车方式n); break;return;case 2:if(count2=0 & im & i=m+n)end=time(NULL);Ai=difftime(end,ai);printf( 您在停车场内停留时间为:%0.2f 秒n,difftime(end,ai); printf( 您的服务是免费服务,感谢您的使用,欢迎下次光临!); count1-;else printf( 您的输入有误,请重新输入!);测试分析系统运行主界面如下:1. 车辆到达界面车辆到达后需要选择相应的停车方式,主要有两种方式,场内停车方式和便道停车方式。72013-7-262. 车辆离开界面车辆离开时需要输入自己的车位号,系统会自动判别你的停车方式,提供相关服务3. 车辆进入场内停车82013-7-264. 车辆进入便道停车5. 车辆离开场内92013-7-266. 车辆离开便道102013-7-26源程序清单#include#include#include#include#include#include#define m 50/停车场内总容纳量m,车位号依次为:150#define n 50 /停车场便道容纳量n,车位号依次为:51-100#define p 3 /车牌号码的位数000-999#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OVERFLOW 0#define T 100int z;time_t am+n,end;double Am+n=0;#define j 0.001 /停车场内收费标准0.001元/秒int count1=0,count2=0;/count1、count2分别用来统计场内停车
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号