停车场文档格式.docx

上传人:b****2 文档编号:15067665 上传时间:2022-10-27 格式:DOCX 页数:14 大小:77.92KB
下载 相关 举报
停车场文档格式.docx_第1页
第1页 / 共14页
停车场文档格式.docx_第2页
第2页 / 共14页
停车场文档格式.docx_第3页
第3页 / 共14页
停车场文档格式.docx_第4页
第4页 / 共14页
停车场文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

停车场文档格式.docx

《停车场文档格式.docx》由会员分享,可在线阅读,更多相关《停车场文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

停车场文档格式.docx

P)

操作结果:

构造一个空栈P。

Push(&

P,e)

初始条件:

栈P已经存在

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

Pop(&

P,Car&

e)

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

}ADTStack;

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

ADTQueue{

D={ai|ai∈Shortcut,i=1,2,……,n,n>

InitQueue(&

S)

构造一个空队列S

EnQueue(&

S,*number,ar_time)

队列S已经存在

插入元素e为S新的队尾元素

DeQueue(&

S,&

w)

删除队列的队头元素w

}ADTQueue;

3.本程序包括四个模块

1)主程序模块

Voidmain()

{

声明定义

调用栈与队列的函数

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

}

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

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

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

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

主程序模块

结构体模块

栈模块

队列模块

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

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

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

若是车辆到达,则输出汽车在停车场内或便道上的停车位置;

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

三、详细设计

1、结点类型及部分数据定义

a、停车场的车

typedefstructCar1

charnumber[20];

//汽车车牌号

intar_time;

//汽车到达时间

}CarNode;

b、停车场

typedefstruct

{

CarNode*base;

//停车场的堆栈底

CarNode*top;

//停车场的堆栈顶

intstacksize;

}Park;

c、便道上的车

typedefstructCar2

structCar2*next;

}*CarPtr;

d、便道

typedefstruct

CarPtrfront;

//便道的队列的队头

CarPtrrear;

//便道的队列的队尾

intlength;

}Shortcut;

2、主函数和其他函数的算法分析

StatusArrival(Park&

P,Shortcut&

//对进站车辆的处理,若停车场不满,对进站车辆,输入车牌号及进站

//时刻,并显示出其所在的车道,若停车场满,将其停在便道上(不计费)

StatusLeave(Park&

P,Park&

Q,Shortcut&

//对离站车辆的处理,输入车牌号,显示出场时刻,并计算费用,若便

//道上有车,将其移到停车场并开始计时

四、调试分析

1、在调用栈与队列的函数时遇到一些问题,比如我想通过键盘输入来确定停车场的停车数,所以初始化时那些操作函数必须带有停车数这个参数。

2、在设计Leave函数时,我想设计两个形参,但调试后总出现错误。

3、刚开始设计的程序输入车牌号时只能是整型,后来改了一下,使得输入的车牌号为字符串型。

4、在本程序中,时间只能是整点,可以将时间设计一个结构体,由于时间原因,在本程序中没有进行改进。

五、用户手册

1、本程序的运行环境为DOS操作系统,执行文件为:

停车场管理系统.exe。

2、进入演示程序后即显示文本方式的用户界面:

3、看到“请选择您要进行的操作(A,D,E):

”提示后,按提示依次输入车辆信息,按回车键结束。

4、接受其他命令后即执行相应运算和显示相应结果,在此不再一一演示。

六、测试结果

1、车辆进站:

车牌号w34进站时刻4输出如下:

当停车场满时,输出如下:

3、车辆出站车牌号:

w34

附录

源程序:

//头文件

#include<

stdio.h>

stdlib.h>

malloc.h>

string.h>

//函数返回状态代码

#defineOK1

#defineERROR0

#defineTRUE1

#defineFALSE0

#defineINFEASIBLE-1

#defineOVERFLOW-2

#defineSIZE2//停车场位置数

typedefintStatus;

//栈,模拟停车场

typedefstructCar1//停车场的车

charnumber[20];

intar_time;

typedefstruct//停车场

CarNode*base;

CarNode*top;

intstacksize;

//队列,模拟便道,以链表形式实现

typedefstructCar2//便道上的车

structCar2*next;

typedefstruct//便道

CarPtrfront;

CarPtrrear;

intlength;

StatusInitStack(Park&

P)//初始化停车场

P.base=(CarNode*)malloc(SIZE*sizeof(Car1));

if(!

P.base)

exit(OVERFLOW);

P.top=P.base;

P.stacksize=0;

returnOK;

StatusPush(Park&

P,CarNodee)//车进入停车场

*P.top++=e;

++P.stacksize;

StatusPop(Park&

P,CarNode&

e)//车离开停车场

if(P.top==P.base)

returnERROR;

else

e=*(--P.top);

--P.stacksize;

}

StatusInitQueue(Shortcut&

S)//初始化便道

S.front=S.rear=(CarPtr)malloc(sizeof(Car2));

S.front||!

S.rear)

S.front->

next=NULL;

S.length=0;

StatusEnQueue(Shortcut&

S,char*number,intar_time)//车进入便道

CarPtrp;

p=(CarPtr)malloc(sizeof(Car2));

p)

strcpy(p->

number,number);

p->

ar_time=ar_time;

S.rear->

next=p;

S.rear=p;

++S.length;

StatusDeQueue(Shortcut&

S,CarPtr&

w)//车离开便道

if(S.length==0)

w=S.front->

next;

next=S.front->

next->

--S.length;

StatusArrival(Park&

S)//对进站车辆的处理

printf("

请输入车牌号:

"

);

scanf("

%s"

number);

进场的时刻:

%d"

&

ar_time);

if(P.stacksize<

SIZE)

CarNodec;

strcpy(c.number,number);

c.ar_time=ar_time;

Push(P,c);

该车应停在第%d号车道!

\n"

P.stacksize);

EnQueue(S,number,ar_time);

停车场已满,请暂时停在便道的第%d个位置!

S.length);

StatusLeave(Park&

S)//对离站车辆的处理

intle_time,flag=1,fee,ar_time;

//getchar();

出场的时刻:

le_time);

CarNodee,m;

CarPtrw;

while(P.stacksize)

Pop(P,e);

if(strcmp(e.number,number)==NULL)

flag=0;

fee=(le_time-e.ar_time)*2;

//计算费用

ar_time=e.ar_time;

break;

}

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1