停车场管理系统源代码功能完整版.docx
- 文档编号:10799718
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:11
- 大小:17.02KB
停车场管理系统源代码功能完整版.docx
《停车场管理系统源代码功能完整版.docx》由会员分享,可在线阅读,更多相关《停车场管理系统源代码功能完整版.docx(11页珍藏版)》请在冰豆网上搜索。
停车场管理系统源代码功能完整版
停车场管理系统源代码功能完整版
#include
#includeMax);
returnn;
}
typedefstructtime{
inthour;
intmin;
}Time;/*时间结点*/
typedefstructnode{
charnum[10];
Timereach;
Timeleave;
}CarNode;/*车辆信息结点*/
typedefstructNODE{
CarNode*stack[Max+1];
inttop;
}SeqStackCar;/*模拟车站*/
typedefstructcar{
CarNode*data;
structcar*next;
}QueueNode;
typedefstructNode{
QueueNode*head;
QueueNode*rear;
}LinkQueueCar;/*模拟通道*/
voidInitStack(SeqStackCar*,intn);/*声明栈*/
intInitQueue(LinkQueueCar*);/*声明便道*/
intArrival(SeqStackCar*,LinkQueueCar*,intn);/*车辆进站*/
voidLeave(SeqStackCar*,SeqStackCar*,LinkQueueCar*,intn);/*车辆出站*/
voidList(SeqStackCar,LinkQueueCar);/*显示存车信息*/
voidInitStack(SeqStackCar*s,intn)/*初始化栈*/
{
inti;
s->top=0;
for(i=0;ileave.hourreach.hour||(p->leave.hour==p->reach.hour
scanf("%d:
%d",
fflush(stdin);
}
if(p->leave.hourleave.hourreach.hour||(p->leave.hour==p->reach.hour
printf("出站的车的车牌号为:
");
puts(p->num);
printf("\n");
A1=p->reach.hour;
A2=p->reach.min;
B1=p->leave.hour;
B2=p->leave.min;
a=(B1-A1)*60+B2-A2;
if(a>=60)
{
b=a/60;
c=a-60*b;
}
else
{
b=0;
c=a;
}
printf("祝您一路顺风,欢迎您下次光临.");
printf("\n收据\n");
printf("==================================车牌号:
");
puts(p->num);
printf("\n");
printf("===================================================\n");
printf("|进车场时刻|出车场时刻|停留时间|应付(元)|\n");
printf("====================================================\n");
printf("|%d:
%d",p->reach.hour,p->reach.min);
printf("|%d:
%d",p->leave.hour,p->leave.min);
printf("|%d:
%d",b,c);
printf("|%2.1f",0.1*a);
printf("|\n");
printf("-----------------------------------------------------\n");
free(p);
}
intArrival(SeqStackCar*Enter,LinkQueueCar*W,intn)/*车辆到达*/
{
QueueNode*t;
inta,b;
CarNode*p,*t1;
QueueNode*q;
voidList2(LinkQueueCar*W);
voidList1(SeqStackCar*S);
p=(CarNode*)malloc(sizeof(CarNode));
flushall();
printf("请严格按照要求输入车牌号,否则系统会出错!
\n");
printf("\n请输入车牌号(%d位):
\n",l_che);
do{
a=l_che;
b=strlen(gets(p->num));
fflush(stdin);
if(a!
=b)
{
printf("输入车牌号格式错误,请重新输入(%d位):
",l_che);
}
elsebreak;
}while(a!
=b);
if(Enter->topreach.hourreach.hour>=24||p->reach.minreach.min>=60);
Enter->stack[Enter->top]=p;
List1(Enter);
}else{//便道有车则进入便道
printf("----------------------------------------------------------------\n");
printf("\n请该车在便道稍作等待!
\n");
printf("----------------------------------------------------------------\n");
t=(QueueNode*)malloc(sizeof(QueueNode));
t->data=p;
t->next=NULL;
W->rear->next=t;
W->rear=t;
List2(W);
printf("便道上的第一辆车是否进入车场?
\n");
printf("“是”请按1;不进车场并要离开便道请按0\n");
while
(1)
{
scanf("%d",
if(panduan==1)
{
if((W->head!
=W->rear)
t1=q->data;
Enter->top++;
printf("\n现在请便道上的车进入车场.该车的车牌号为:
");
puts(t1->num);
printf("\n该车进入车场第%d位置.",Enter->top);
printf("\n请输入现在的时间(即该车进站的时间)/**:
**/:
");
scanf("%d:
%d",
fflush(stdin);
do{
if(t1->reach.hourreach.hour>=24||t1->reach.minreach.min>=60)
{
printf("输入的时间格式有错,请重新输入:
");
scanf("%d:
%d",
fflush(stdin);
}
}while(t1->reach.hourreach.hour>=24||t1->reach.minreach.min>=60);
W->head->next=q->next;
if(q==W->rear)W->rear=W->head;
Enter->stack[Enter->top]=t1;
free(q);
List1(Enter);
break;
}
}
else
if(panduan==0)
{
q=W->head->next;
W->head->next=q->next;
printf("便道上第一辆车离开,车牌号为:
");
puts(q->data->num);
List2(W);
break;
}
}
}
}
else/*车场已满,车进便道*/
{
printf("----------------------------------------------------------------\n");
printf("\n请该车在便道稍作等待!
\n");
printf("----------------------------------------------------------------\n");
t=(QueueNode*)malloc(sizeof(QueueNode));
t->data=p;
t->next=NULL;
W->rear->next=t;
W->rear=t;
List2(W);
return
(1);
}
return
(1);}
voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W,intn)/*车辆离开*/{
introom;
voidList2(LinkQueueCar*W);
voidList1(SeqStackCar*Enter);
CarNode*p,*t;
QueueNode*q;
/*判断车场内是否有车*/
if(Enter->top>0)/*有车*/
{
while
(1)/*输入离开车辆的信息*/
{
printf("\n请输入要离开的车在车场的位置/1--%d/:
",Enter->top);
scanf("%d",
fflush(stdin);
if(room>=1
}
while(Enter->top>room)/*车辆离开*/
{
Temp->top++;
Temp->stack[Temp->top]=Enter->stack[Enter->top];
Enter->stack[Enter->top]=NULL;
Enter->top--;
}
p=Enter->stack[Enter->top];
Enter->stack[Enter->top]=NULL;
Enter->top--;
while(Temp->top>=1)
{
Enter->top++;
Enter->stack[Enter->top]=Temp->stack[Temp->top];
Temp->stack[Temp->top]=NULL;
Temp->top--;
}
PRINT(p);
/*判断通道上是否有车及车站是否已满*/
last:
if(W->head!
=W->rear)//判断便道上车辆是否进入停车场{
printf("便道上的第一辆车是否进入车场?
\n");
printf("“是”请按1;不进车场并要离开便道请按0\n");
while
(1)
{
scanf("%d",
if(panduan==1)/*便道的车辆进入车场*/
{
if((W->head!
=W->rear)
t=q->data;
Enter->top++;
printf("\n现在请便道上的车进入车场.该车的车牌号为:
");
puts(t->num);
printf("\n该车进入车场第%d位置.",Enter->top);
printf("\n请输入现在的时间(即该车进站的时间)/**:
**/:
");
scanf("%d:
%d",
fflush(stdin);
do{
if(t->reach.hourhead->next;
W->head->next=q->next;
if(W->rear==q)W->rear=W->head;
printf("便道上第一辆车离开,车牌号为:
");
puts(q->data->num);
List2(W);
if(W->head!
=W->rear)
gotolast;//跳转
break;
}
}
}
else{
printf("\n----------------------------------------------------------------\n目前便道没有车\n");
}
}
else
printf("\n----------------------------------------------------------------\n目前车场里没有车!
");
/*没车,提示便道内车辆是否进入停车场*/
}
voidList1(SeqStackCar*S)/*列表显示车场存车信息*/
{
inti;
if(S->top>0)/*判断车站内是否有车*/
{
printf("----------------------------------------------------------------\n");
printf("\n车场:
");
printf("\n位置到达时间车牌号\n");
for(i=1;itop;i++)
{
printf("%d",i);
printf("%d:
%d",S->stack[i]->reach.hour,S->stack[i]->reach.min);
puts(S->stack[i]->num);
}
}
elseprintf("\n----------------------------------------------------------------\n目前车场里没有车");}
voidList2(LinkQueueCar*W)/*列表显示便道信息*/
{
QueueNode*p;
p=W->head->next;
if(W->head!
=W->rear)/*判断通道上是否有车*/
{
printf("----------------------------------------------------------------\n");
printf("\n目前正在等待车辆的车牌号");
printf("从队头到队尾的顺序依次为:
\n");
while(p!
=NULL)
{
puts(p->data->num);
p=p->next;
printf("\n");
}
}
elseprintf("\n----------------------------------------------------------------\n目前便道里没有车.");}
voidList(SeqStackCarS,LinkQueueCarW)
{
intflag,tag;
flag=1;
while(flag)
{
printf("\n1.车场\n2.便道\n3.返回\n");
while
(1)
{
printf("\n请选择1|2|3:
");
scanf("%d",
fflush(stdin);
do{
if(tag3
break;
}
switch(tag)
{
case1:
List1(break;/*列表显示车场信息*/
case2:
List2(break;/*列表显示便道信息*/
case3:
flag=0;break;/*返回*/
default:
break;
}
}
}
voidL(LinkQueueCar
inti=1,j=1;
LinkQueueCarQueueTemp;
InitQueue(//初始化临时便道,重要行在于可能存在指针没有释放掉intlocate;
if(W.head==W.rear)
{
printf("----------------------------------------------------------------\n");
printf("便道没有车\n");
}
else
{
printf("请输入便道上车辆在便道上的位置序号:
");
scanf("%d",
while
(1)
{
if(i!
=locate
W.head->next=q->next;
if(W.rear==q)W.rear=W.head;
i+=1;
QueueTemp.rear->next=q;
QueueTemp.rear=q;
}if(i==locate)
{
printf("便道上第%d辆车离开便道车牌号为:
",i);
if(i==1)
{q=W.head->next;
W.head->next=q->next;
puts(q->data->num);
}
if(i!
=1)
{q=W.head->next;
W.head->next=q->next;
puts(q->data->num);
}
i++;
}
if(W.head->next==NULL||i==100)//临时队列中的车辆依次进入便道
{
q=QueueTemp.head->next;
i=100;
j=0;//j为标志
QueueTemp.head->next=q->next;
if(QueueTemp.rear==q)QueueTemp.rear=QueueTemp.head;
W.rear->next=q;
W.rear=q;
if(QueueTemp.head==QueueTemp.rear){QueueTemp.rear->next=NULL;break;}
}
}
}
}
voidmain()
{
SeqStackCarEnter,Temp;
QueueNode*p;
LinkQueueCarWait;
intch;
intn;
printf("============================================================\n");printf("停车场管理系统:
\n");
printf("\n");
printf("\n");
printf("组员:
卢上游何前胡万里\n");
printf("============================================================\n");n=getn();
InitStack(/*初始化车场*/
InitStack(/*初始化让路的临时栈*/
InitQueue(/*初始化便道*/
while
(1)
{
printf("\n1.车辆进站");
printf("2.车辆出站");
printf("3.存车信息");
printf("4.便道车辆离开");
printf("5.退出系统\n");
printf("----------------------------------------------------------------\n");
while
(1)
{
printf("请选择:
12345.\n");
scanf("%d",
fflush(stdin);
do{
if(ch>5||ch5||ch<1);
break;
}
switch(ch)
{
case1:
Arrival(break;/*车辆进站*/
case2:
Leave(break;/*车辆出站*/
case3:
List(Enter,Wait);break;/*存车信息*/
case4:
L(Wait);break;//便道车辆离开/*/*退出系统*/
default:
break;
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 停车场 管理 系统 源代码 功能 完整版