数据结构课程设计停车管理系统实验报告文档格式.docx
《数据结构课程设计停车管理系统实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计停车管理系统实验报告文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
模拟车子排队和进出车库的情况,并且根据时间计费,随时显示当前车库车辆情况。
2.概要设计
(1)
数据结构
每个汽车的基本元素:
structcar
{
charid[8];
inth;
/*时*/
intm;
/*分*/
structcar*next;
};
栈的基本元素:
structsqstack
structcar*base;
structcar*top;
intstacksize;
(2)程序模块
voidintstack(structsqstack&
S)/*构造栈*/
voidpush_stack(structsqstack&
S,structcar*e)
/*e入栈*/
voidpop_stack(structsqstack&
/*出栈顶元素到e*/
voidcreat_q()/*创建队列*/
voidpush_q(structcar*p)/*车辆入队*/
structcar*pop_q()/*车辆出队*/
voidcome_in()/*车辆离开*/
voidgo_out()/*车辆进入*/
voidinterface()/*主菜单*/
(4)各模块之间的调用关系以及算法设计
Return0
3.详细设计
流程图及模块调用如下:
主菜单
22
输出车库车辆
车辆进入
栈是否满
进入队列
进入栈
车辆离开
是否在栈中
是否在队列
找不到
元素出列
显示费用
结束程序
0
3
21
是
否
4.测试与分析
主界面如下:
车库中假设最多停三辆车,加入进入四辆车abcd,则d需要在便道排队:
此时若b车开走,显示费用信息,则在便道的d车进入车库:
若此时有车进入,则继续在便道排队
:
5.附录
源程序清单:
#include<
stdio.h>
#include<
stdlib.h>
malloc.h>
string.h>
#defineMAX3/*宏定义车库最大车辆*/
intn=0;
/*当前车库的车辆数*/
intm=0;
/*当前便道的车辆数*/
structcar*p1;
structsqstackS1,S2;
S)
S.base=(structcar*)malloc(MAX*sizeof(structcar));
S.top=S.base;
S.stacksize=MAX;
}
strcpy(S.top->
id,e->
id);
S.top->
h=e->
h;
m=e->
m;
S.top++;
S.top--;
strcpy(e->
id,S.top->
e->
h=S.top->
m=S.top->
voidcreat_q()
p1=(structcar*)malloc(sizeof(structcar));
p1->
next=NULL;
voidpush_q(structcar*p)
structcar*p2;
p2=p1;
while(p2->
next!
=NULL)
{
p2=p2->
next;
}
p2->
next=p;
p->
structcar*pop_q()
structcar*p;
p=p1->
next=p1->
next->
returnp;
voidcome_in()
voidinterface();
printf("
请输入7位车辆车牌号和进入时间\n例如:
\nA12345612:
30\n"
);
if(n==MAX)
p=(structcar*)malloc(sizeof(structcar));
scanf("
%s"
p->
%d:
%d"
&
p->
h,&
m);
push_q(p);
m++;
else
push_stack(S1,p);
n++;
interface();
voidgo_out()
structcar*pop_q();
请输入7位车牌号和离开时间\n"
charb[8];
inth1;
intm1;
b);
h1,&
m1);
inti;
intbiaozhi=0;
for(i=0;
i<
n;
i++)
if(strcmp(b,(S1.base+i)->
id)==0)
%s已离开\n计费信息:
\n进入时间%d:
%d,离开时间%d:
%d,(每分钟1元)\n"
b,(S1.base+i)->
h,(S1.base+i)->
m,h1,m1);
费用为:
%d元\n"
(60*(h1-(S1.base+i)->
h)+m1-(S1.base+i)->
m)*1);
intj;
for(j=0;
j<
n-i;
j++)
p2=(structcar*)malloc(sizeof(structcar));
pop_stack(S1,p2);
push_stack(S2,p2);
structcar*pp;
pop_stack(S2,pp);
for(j=1;
push_stack(S1,pp);
222\n"
n--;
biaozhi=1;
if(p1->
=NULL)/*若便道有车,则便道的车进入车库*/
structcar*ppp;
ppp=pop_q();
push_stack(S1,ppp);
break;
if(biaozhi==0)
structcar*p,*pp;
pp=p1;
while(pp->
p=pp;
pp=pp->
if(strcmp(b,pp->
%s已离开\n"
b,pp->
h,pp->
(60*(h1-pp->
h)+m1-pp->
next=pp->
m--;
找不到%s\n"
voidprint()
voidpush_stack(structsqstackS,structcar*e);
voidpop_stack(structsqstackS,structcar*e);
if(n==0)
没有车辆\n"
**车库现有车辆信息:
\n"
%s%d:
%d\n"
(S1.base+i)->
id,(S1.base+i)->
p=p1;
if(p->
next==NULL)
**便道无车辆\n"
**便道现有车辆信息:
while(p->
p=p->
id,p->
h,p->
voidinterface()
请输入操作指令\n\n1:
汽车开入\n2:
车辆离开\n3:
显示当前车辆信息\n0:
结束程序\n*******************\n"
i);
switch(i)
case0:
return;
break;
case1:
come_in();
case2:
go_out();
case3:
print();
};
intmain()
system("
colora0"
//可以写成red调出颜色组
title车库管理系统"
//设置cmd窗口标题
****************欢迎使用停车管理系统*********************\n\n"
date/T"
TIME/T"
creat_q();
intstack(S1);
intstack(S2);
return0;
6.用户使用手册
欢迎使用车辆管理系统。
输入1,表示车辆进入
输入七位车牌号和进入时间,如:
A12378912:
输入2,表示车辆离开
输入离开车牌号和时间
输入3,表示显示车库信息
输入0,结束程序
使用!