停车场管理系统源代码.docx

上传人:b****4 文档编号:24395269 上传时间:2023-05-27 格式:DOCX 页数:14 大小:16.87KB
下载 相关 举报
停车场管理系统源代码.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

停车场管理系统源代码

//停车场管理系统

#include

#include

#defineOVERFLOW0

#defineERROR0

#defineOK1

#defineSTACKSIZE2//车库容量

//时间节点

typedefstructtime{

inthour;

intmin;

}Time;

//车辆信息

typedefstruct{

charCarNum;

floattime;

intpos_a;//车在停车场中的位置

intpos_b;//车在便道上的位置

intflag;

}Car,Car2;

//车库信息(顺序栈)

typedefstruct{

Car*top;

Car*base;

intstacksize;

}SqStack;

//初始化

intInitStack(SqStack&S){

S.base=newCar[STACKSIZE];

if(!

S.base)exit(OVERFLOW);

S.top=S.base;

S.stacksize=STACKSIZE;

returnOK;

}

//判空

intStackEmpty(SqStackS){

if(S.top==S.base)returnOK;

elsereturnERROR;

}

//判满

intStackFull(SqStackS){

if(S.top-S.base>=S.stacksize)returnOK;

elsereturnERROR;

}

//入栈

intPush(SqStack&S,Care){

if(S.top-S.base==S.stacksize)returnERROR;

*S.top++=e;

returnOK;

}

//出栈

intPop(SqStack&S,Car&e){

if(S.top==S.base)returnERROR;

e=*--S.top;

returnOK;

}

//遍历栈

intStackTraverse(SqStackS){

Car*p=S.top;

Car*q=S.base;

intl=1;

if(StackEmpty(S)){

for(intj=1;j<=STACKSIZE;j++){

printf("\t车牌:

");

printf("\t\t到达时间:

");

printf("\t位置%d:

空空",j);

printf("\n");

}

returnOK;

}

while(p!

=q){

Carcar=*(q);

printf("\t车牌:

%d",car.CarNum);

printf("\t\t到达时间:

%5.2f",car.time);

printf("\t\t位置:

%d",l++);

printf("\n");

q++;

}

returnOK;

}

//备用车道(顺序栈)

typedefstruct{

Car2*top2;

Car2*base2;//

intstacksize2;

}SqStack2;

//初始化

intInitStack2(SqStack2&S2){

S2.base2=newCar2[STACKSIZE];

if(!

S2.top2)exit(OVERFLOW);//

S2.top2=S2.base2;

S2.stacksize2=STACKSIZE;

returnOK;

}

//判空

intStackEmpty2(SqStack2S2){

if(S2.top2==S2.base2)returnOK;

elsereturnERROR;

}

//进栈

intPush2(SqStack2&S2,Car2e2){

if(S2.top2-S2.base2==STACKSIZE)returnERROR;

*S2.top2++=e2;

returnOK;

}

//出栈

intPop2(SqStack2&S2,Car2&e2){

if(S2.top2==S2.base2)returnERROR;

e2=*--S2.top2;

returnOK;

}

//车道信息(链队)

typedefstructQNode{

Cardata;

structQNode*next;

}QNode,*QueuePtr;

typedefstruct{

QueuePtrfront;

QueuePtrrear;

}LinkQueue;

//初始化

intInitQueue(LinkQueue&Q){

Q.front=Q.rear=newQNode;

Q.front->next=NULL;

returnOK;

}

//进队

intEnQueue(LinkQueue&Q,Care){

QueuePtrp;

p=newQNode;

p->data=e;

p->next=NULL;

Q.rear->next=p;

Q.rear=p;

returnOK;

}

//判空

intQueueEmpty(LinkQueueQ){

if(Q.front==Q.rear)returnOK;

elsereturnERROR;

}

//出队

intDeQueue(LinkQueue&Q,Car&e){

QueuePtrp;

if(Q.front==Q.rear)returnERROR;

p=Q.front->next;

e=p->data;

Q.front->next=p->next;

deletep;

returnOK;

}

 

//主函数

intmain(){

inti=1;

intj=1;

intstatus;

floattime,money;

LinkQueueQ;

Carcar_I,car_D,car_M;

SqStackS;

SqStack2S2;

InitStack(S);

InitStack2(S2);

InitQueue(Q);

while

(1){

printf("\t\t\t欢迎来到XXX停车场!

\n");

printf("*****************************************************************\n");

printf("\t\t\t1--车辆到达停车场\n");

printf("\t\t\t2--车辆离开停车场\n");

printf("\t\t\t3--停车场存放车辆情况\n");

printf("\t\t\t0--退出程序\n");

printf("*****************************************************************\n");

printf("选择(0-3):

\n");

scanf("%d",&status);

if(status==1){

printf("\t请输入车牌号:

");

scanf("%d",&car_I.CarNum);

printf("\t请输入车到达的时间:

");

scanf("%f",&car_I.time);

if(!

StackFull(S)){

Push(S,car_I);//车进入车库

car_I.pos_a=i;

car_I.flag=1;

i=i+1;

for(intm=1;m<50;m++)//边线

printf("--");

printf("\n");

printf("\t车牌号:

");

printf("%d",car_I.CarNum);

printf("\t到达时间:

");

printf("%5.1f\t",car_I.time);

printf("\t车库中的位置是:

%d\n",car_I.pos_a);

for(intm=1;m<50;m++)//边线

printf("--");

printf("\n");

printf("\n");

printf("\n");

}

else{

EnQueue(Q,car_I);

car_I.pos_b=j;

car_I.flag=0;//

++j;

printf("\n");

printf("\tSorry!

我们的车库已满!

,您可以把车!

!

免费!

!

停在车道上!

\n");

printf("\n");

for(intm=1;m<50;m++)//边线

printf("..");

printf("\n");

printf("\t车牌号:

");

printf("%d",car_I.CarNum);

printf("\t便道上的位置为:

%d\n",car_I.pos_b);

for(intm=1;m<50;m++)//边线

printf("..");

printf("\n");

printf("\n");

printf("\n");

}

}

elseif(status==2){//指令为2,开车离去(如果车在车库里收取停车费;在便道上则免费)

printf("请输入客户的车牌号:

");

scanf("%d",&car_D.CarNum);

printf("请输入现在的时间:

");

scanf("%f",&car_D.time);

i=i-1;

intflag=0;

//判断车是否在便道上

if(StackFull(S)){

Car*p=S.top;

Car*q=S.base;

while(p!

=q){

Carcar=*(q);

if(car.CarNum!

=car_D.CarNum){

flag++;

}

if(car.CarNum==car_D.CarNum){

gotoloop;

}

q++;

}//while

if(flag>=STACKSIZE){

printf("您的车停在便道上,所以免费!

");

}

printf("\n");

printf("\n");

printf("\n");

}//if

else{

loop:

do{//挡在前面的车给要出去的车让路

Pop(S,car_M);

//加一个判断,判断是不是停车场里的车

if(car_D.CarNum!

=car_M.CarNum){

Push2(S2,car_M);

}

else{

car_I.time=car_M.time;

}

}while(car_D.CarNum!

=car_M.CarNum);

while(!

StackEmpty2(S2)){//让路的车返回去

Pop2(S2,car_M);

Push(S,car_M);

}

while(!

QueueEmpty(Q)&&!

StackFull(S)){

if(!

StackFull(S)){

DeQueue(Q,car_M);//便道上的车离开后进入停车场,那么后面的车的位置都得变。

car_M.flag=1;

}

Push(S,car_M);

printf("车牌为%d的车离开车库,车道上车牌为%d的车进入车库\n",car_D.CarNum,car_M.CarNum);

}

time=car_D.time-car_I.time;

if(time<0.0){

printf("输入时间有错!

请重新输入!

");

}

if(time>0.0&&time<=3.0){

money=time*4;

}

elsemoney=time*6;

printf("你的车牌为%d的车,应收费%5.2f元。

",car_D.CarNum,money);

printf("欢迎下次光临我们的车库\n");

}

printf("\n");

printf("\n");

printf("\n");

}

elseif(status==3){//指令为3;查看车库停车情况;

StackTraverse(S);

}

elseif(status!

=1&&status!

=2&&status!

=3&&status!

=0){

printf("\t指令错误!

!

!

请在下面重新输入:

");

}

elseif(status==0)

break;

}

}

 

WelcomeTo

Download!

!

!

 

欢迎您的下载,资料仅供参考!

 

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

当前位置:首页 > 农林牧渔 > 林学

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

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