停车场数据机构设计文档格式.docx
- 文档编号:20080541
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:21
- 大小:202.57KB
停车场数据机构设计文档格式.docx
《停车场数据机构设计文档格式.docx》由会员分享,可在线阅读,更多相关《停车场数据机构设计文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
当车辆离开时,统计其停留时间,记录其停车费用。
3.4查询信息
进入查询界面,可以查询目前车长信息,和变到信息。
4系统流程图
5主函数、子程序调用关系
6主要算法实现及其基本操作
6.1此停车场管理系统,主要分为以下若干模块:
首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量,然后编写主函数,在此主函数中实现对其它各个模块的调用。
在主函数中首先调用option()函数,出现欢迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再出现一个供用户选择的界面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、停车场内停放车辆的信息以及退出程序这四个函数模块。
其中,在车辆的离开那个模块函数中又调用了打印离开车辆信息的函数,在停车场内停放车辆信息的那个模块函数中,又分别调用了显示停车场上车辆信息的函数以及显示便道上车辆信息的函数。
最后,从调鼐的这四个函数中回到主函数结束整个程序的运行。
6.2在以上各个模块中,各模块的伪码算法:
6.2.1栈的初始化:
voidInitStack(SeqStackCar*s)/*初始化栈*/
{inti;
s->
top=0;
for(i=0;
i<
=MAX;
i++)
stack[s->
top]=NULL;
}
6.2.2链队列的初始化:
intInitQueue(LinkQueueCar*Q)/*初始化队列*/
{
Q->
head=(QueueNode*)malloc(sizeof(QueueNode));
if(Q->
head!
=NULL)
{Q->
head->
next=NULL;
Q->
rear=Q->
head;
return
(1);
else
return(-1);
6.2.3车辆到达时的算法:
intArrival(SeqStackCar*Enter,LinkQueueCar*W)/*车辆到达*/
{CarNode*p;
QueueNode*t;
p=(CarNode*)malloc(sizeof(CarNode));
printf("
\t\t\t请输入到达车辆车牌号:
"
);
scanf("
%d"
&
(p->
num));
if(Enter->
top<
MAX)/*车场未满,车进车场*/
{Enter->
top++;
\n\t\t\t该车辆在停车场的位置是:
%d\n"
Enter->
top);
\n\t\t\t请输入该车辆到达的时间:
reachtime));
Enter->
stack[Enter->
top]=p;
}
else/*车场已满,车进便道*/
{printf("
\n\t\t\t停车场已满该车辆需在便道上等待!
"
t=(QueueNode*)malloc(sizeof(QueueNode));
t->
data=p;
W->
rear->
next=t;
rear=t;
6.2.4车辆离开时的算法:
voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W)/*车辆离开*/
{inti,room;
CarNode*p,*t;
QueueNode*q;
/*判断车场内是否有车*/
printf("
\n********************************************************************************"
top>
0)/*有车*/
{while
(1)/*输入离开车辆的信息*/
\t\t\t停车场里停放的车辆总数:
%d"
\n\n\t\t\t请输入要离开车辆的位置:
room);
if(room>
=1&
&
room<
=Enter->
top)
break;
while(Enter->
room)/*车辆离开*/
{Temp->
Temp->
stack[Temp->
top]=Enter->
top];
top--;
p=Enter->
while(Temp->
=1)
top]=Temp->
PRINT(p);
/*判断通道上是否有车及车站是否已满*/
if((W->
=W->
rear)&
Enter->
MAX)/*便道的车辆进入车场*/
{q=W->
next;
t=q->
data;
\n\n\t\t\t便道的%d号车进入车场第%d位置."
t->
num,Enter->
\n\n\t\t\t请输入现在的时间:
(t->
next=q->
if(q==W->
rear)
rear=W->
top]=t;
free(q);
\n\n\t\t\t便道里没有车.\n"
\n\n\t\t\t车场里没有车."
/*没车*/
6.2.5列表现试车场信息
voidList1(SeqStackCar*S)/*列表显示车场信息*/
if(S->
0)/*判断车站内是否有车*/
\n\t\t\t车场:
\n\n\t\t\t位置到达时间车牌号\n"
for(i=1;
=S->
top;
%26d"
i);
%6d"
S->
stack[i]->
reachtime);
%10d"
num);
\n"
else
\n\t\t\t车场里没有车"
6.2.6列表显示便道信息
voidList2(LinkQueueCar*W)/*列表显示便道信息*/
{QueueNode*p;
p=W->
if(W->
rear)/*判断通道上是否有车*/
\n\t\t\t等待车辆的号码为:
while(p!
%-10d"
p->
data->
p=p->
\n\t\t\t便道里没有车."
7系统运行环境和开发工具
7.1系统运行环境
7.1.1硬件环境
处理器:
InterPentium166MX或更高
内存:
32MB或更大
硬盘空间:
1GB以上
显卡:
SVGA显示适配器
7.1.2软件环境
操作系统:
Windows98/ME/2000/XP
7.2开发工具
C-FREE4.0
8用户手册
8.1用户界面
这个程序用来实现对停车场内车辆的管理,整个操作界面为中文,更加符合人性化的标准,使得用户使用方便,而且每一个操作都有提示,使得初次接触该程序的用户也能很快适应程序的操作。
8.2新的车辆到达
这个程序操作简单,对于车牌号,只需输入车牌号上的数字就行,简化了操作。
车辆满的时候停靠在便道上。
8.3场内车辆离开
离开时同样,输入离开的车牌号及其离开时间,自动判断费用。
及其便道上车辆进入,以及进入时间。
8.4查询车辆信息
可以查看场内车辆信息和便道上的车辆信息。
9详细设计
9.1源文件
#include<
stdio.h>
stdlib.h>
string.h>
#defineMAX10/*车库容量*/
#defineprice1/*每车每时刻费用*/
typedefstructnode
{intnum;
intreachtime;
intleavetime;
}CarNode;
/*车辆信息结点*/
typedefstructNODE
{CarNode*stack[MAX+1];
inttop;
}SeqStackCar;
/*模拟车站*/
typedefstructcar
{CarNode*data;
structcar*next;
}QueueNode;
typedefstructNode
{QueueNode*head;
QueueNode*rear;
}LinkQueueCar;
/*模拟通道*/
/*---------------------------------------------------------------------------*//*函数声明部分*/
voidInitStack(SeqStackCar*);
/*初始化栈*/
intInitQueue(LinkQueueCar*);
/*初始化便道*/
intArrival(SeqStackCar*,LinkQueueCar*);
/*车辆到达*/
voidLeave(SeqStackCar*,SeqStackCar*,LinkQueueCar*);
/*车辆离开*/
voidList(SeqStackCar,LinkQueueCar);
/*显示存车信息*/
voidPRINT(CarNode*p);
/*---------------------------------------------------------------------------*/voidoption()
{inti;
charchoice;
=80;
\004"
\n\n\n\n"
----------------------------\n"
|停车场管理系统|\n"
设计者:
王勇\n"
班级:
计算机08-3"
\n\n\n是否进入该系统\n(y/n)"
choice=getchar();
if(choice=='
N'
||choice=='
n'
)
exit(0);
voidmain()
{SeqStackCarEnter,Temp;
LinkQueueCarWait;
intch;
option();
InitStack(&
Enter);
/*初始化车站*/
InitStack(&
Temp);
/*初始化让路的临时栈*/
InitQueue(&
Wait);
/*初始化通道*/
while
(1)
\n\n\t\t\t1.新的车辆到达请选择1"
\n\n\t\t\t2.场内车辆离开请选择2"
\n\n\t\t\t3.查询车辆信息请选择3"
\n\n\t\t\t4.选择退出程序请选择4"
\n\n\t\t\t现在请选择以上信息:
while
(1)
{scanf("
ch);
if(ch>
ch<
=4)break;
\n\t\t\t错误!
请再次做出选择!
\n\n\t\t\t"
switch(ch)
{case1:
Arrival(&
Enter,&
case2:
Leave(&
Temp,&
case3:
List(Enter,Wait);
/*列表打印信息*/
case4:
exit(0);
/*退出主程序*/
default:
/*------------------------------------------------------------------------------*/
voidInitStack(SeqStackCar*s)/*初始化栈*/
intInitQueue(LinkQueueCar*Q)/*初始化便道*/
}
}
voidPRINT(CarNode*p)/*打印出站车的信息*/
{intA1,A2;
printf("
\n\t\t\t请输入离开时间:
leavetime));
\n\t\t\t离开车辆的车牌号:
\n\n\t\t\t离开车辆到达时间:
%d"
\n\n\t\t\t离开车辆离开时间:
leavetime);
A1=p->
reachtime;
A2=p->
leavetime;
\n\n\t\t\t停车场管理费用:
(A2-A1)*price);
free(p);
intArrival(SeqStackCar*Enter,LinkQueueCar*W)/*车辆到达*/
\n\n\t\t\t车场里没
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 停车场 数据 机构 设计