停车场管理系统设计源代码文档格式.docx
《停车场管理系统设计源代码文档格式.docx》由会员分享,可在线阅读,更多相关《停车场管理系统设计源代码文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
![停车场管理系统设计源代码文档格式.docx](https://file1.bdocx.com/fileroot1/2023-2/4/510eb5a2-5bbf-40b2-ac1d-1cfc0e53cdc7/510eb5a2-5bbf-40b2-ac1d-1cfc0e53cdc71.gif)
if(stack==NULL)
returnNULL;
stack->
count=0;
top=NULL;
returnstack;
}
voidpush(Stack*stack,void*data)
nodeS*node;
node=newnodeS;
if(node==NULL||stack==NULL)
return;
node->
data=data;
link=stack->
top;
top=node;
count++;
void*pop(Stack*stack)
if(stack->
count==0)
data=stack->
top->
data;
node=stack->
top=node->
link;
count--;
returndata;
voidDestroyStack(Stack*stack)
while(stack->
{
deletestack->
node=stack->
stack->
}
deletestack;
Que*CreateQueue()
Que*queue;
queue=newQue;
if(queue==NULL)
queue->
front=NULL;
rear=NULL;
returnqueue;
voidEnqueue(Que*queue)
nodeQ*node;
node=newnodeQ;
if(node==NULL||queue==NULL)
next=NULL;
if(queue->
{
queue->
front=node;
}else
rear->
next=node;
rear=node;
void*Dequeue(Que*queue)
dataptr=queue->
front->
dataptr;
count==1)
front=queue->
else
next;
returndataptr;
voidDestroyqueue(Que*queue)
while(queue->
deletequeue->
node=queue->
front;
front=node->
deletequeue;
3.主文件ThePort.cpp
CTime>
fstream>
string>
typedefstructInFor
stringnum;
inthour;
intmin;
intsec;
intyear;
intmon;
intday;
}Infor;
intface();
intFace();
boolBook(Stack*stack,Que*queue,intmax);
voidbookface();
time_tcompare(Infor*infor);
voidDisplay(Infor*infor);
time_tarrival(Stack*stack,Infor*infor,Que*queue,intmax);
voidleave(Stack*stack,Que*queue,time_tinform);
voidGetmoney(Infor*infor,intBianhao,time_tinform);
voidchecknum(stringnum);
voidInforBook(Stack*stack,Que*queue,intmax);
intInforface();
voidInforstack();
voidInforleave();
voidInforqueue(Que*queue);
intmain()
{
ofstreamfout("
estdout.txt"
ios:
:
trunc);
ofstreamfout2("
leaveout.txt"
bookface();
fout.close();
fout2.close();
return0;
voidbookface()
stack=Createstack();
queue=CreateQueue();
intmax;
boolflag=false;
while(max=face())
if(max>
20||max<
=0)
{
cout<
<
"
\t\t\t输入错误,请重新输入!
endl;
system("
pause"
);
cls"
}else
flag=Book(stack,queue,max);
}
if(flag==true)
break;
intface()
cout<
endl<
请输入停车场的最大容量(1-20):
;
cin>
>
max;
returnmax;
intFace()
system("
\t\t\t*************************************"
\t\t\t**"
\t\t\t*1、停车登记2、离开结算*"
\t\t\t*3、登记记录4、退出系统*"
\t\t请输入你的业务:
intchoose;
choose;
returnchoose;
boolBook(Stack*stack,Que*queue,intmax)
time_tinform;
while(choose=Face())
Infor*infor;
infor=newInfor;
if(choose>
4||choose<
switch(choose)
{
case1:
inform=arrival(stack,infor,queue,max);
max--;
break;
case2:
leave(stack,queue,inform);
case3:
InforBook(stack,queue,max);
case4:
cout<
\t\t\t谢谢使用,欢迎下次再来"
flag=true;
}
if(flag==true)
returnflag;
time_tarrival(Stack*stack,Infor*infor,Que*queue,intmax)
if(max>
0)
inform=compare(infor);
push(stack,infor);
Display(infor);
returninform;
cout<
\t\t\t对不起停车场已满,请停靠在便道上"
Enqueue(queue);
time_tcompare(Infor*infor)
time_tnow;
structtm*inform;
time(&
now);
inform=localtime(&
infor->
hour=inform->
tm_hour;
min=inform->
tm_min;
sec=inform->
tm_sec;
year=inform->
tm_year;
mon=inform->
tm_mon;
day=inform->
tm_mday;
请输入你的车牌号<
B23548>
:
infor->
num;
checknum(infor->
num);
returnnow;
voidDisplay(Infor*infor)
app);
\t\t\t车牌号:
num<
\t\t\t当前年月:
year+1900<
/"
mon+1<
day<
\t\t\t当前时刻:
"
hour<
min<
sec<
fout<
mon+1
<
voidleave(Stack*stack,Que*queue,time_tinform)
Stack*stacktemp;
stacktemp=Createstack();
Infor*temp,*a;
temp=newInfor;
a=newInfor;
intm;
boolflag;
m=stack->
count;
if(m<
\t\t\t停车场没有车!
请输入将要离开的车的车牌号:
cin>
while
(1)
checknum(num);
for(inti=0;
i<
m;
i++)
temp=(Infor*)pop(stack);
push(stacktemp,temp);
for(intk=0;
k<
6;
k++)
{
if(temp->
num[k]!
=num[k])
{
flag=false;
break;
}else
flag=true;
}
if(flag==true)
if(m==1)
Getmoney(temp,m,inform);
a=(Infor*)pop(stacktemp);
Getmoney(a,i,inform);
for(intj=0;
j<
i;
j++)
{
a=(Infor*)pop(stacktemp);
push(stack,a);
}
if(queue->
count>
a=(Infor*)Dequeue(queue);
compare(a);
}
if(flag==false)
没有此车的车牌号或车牌号错误,请重新输入:
cin>
for(intn=0;
n<
n++)
temp=(Infor*)pop(stacktemp);
push(stack,temp);
}elsebreak;
return;
voidchecknum(stringnum)
while
(1)
boolflag=true;
if(num.length()!
=6||num[0]>
'
Z'
||num[0]<
A'
)
{
flag=false;
for(inti=1;
num.length();
if(num[i]>
9'
||num[i]<
0'
flag=false;
if(flag==false)
你输入的车牌类型,请重新输入你的车牌号<
cin>
continue;
else
}
voidGetmoney(Infor*infor,intBianhao,time_tinform)
structtm*inform2;
inform2=localtime(&
doublepay;
pay=(difftime(now,inform)*1)/10;
\t\t编号:
Bianhao<
\t\t车牌号:
\t\t起始年月:
\t\t起始时刻:
\t\t当前年月:
inform2->
tm_year+1900<
tm_mon+1<
tm_mday<
\t\t当前时刻:
tm_hour<
tm_min<
tm_sec<
\t\t你的需要缴纳的费用:
pay<
元"
tm_mday
voidInforBook(Stack*stack,Que*queue,intmax)
while(choose=Inforface())
Inforstack();
Inforleave();
Inforqueue(queue);
Book(stack,queue,max);
intInforface()
\t\t\t*1、今天登记情况2、离开车辆记录*"
\t\t\t*3、便道信息查询4、返回主页面*"
voidInforstack()
ifstreamfin("
if(fin.eof()==NULL)
\t\t\t当前没有停车记录!
system("
while(fin.eof()!
=NULL)
fin>
num>
year>
mon>
day>
hour>
min>
sec;