#include <bits/stdc++.h>
using namespace std;
#define stacksize 10
typedef struct sqstack
{
int data[stacksize];//数组存储的是车辆信息
int top;
}SqStackTp;
typedef struct queue//定义队列结点的数据结构
{
int data;
struct queue *next;
}LqueueTp;
typedef struct//定义队列的数据结构
{
LqueueTp *front,*rear;//定义队收、尾指针
}QueptrTp;
void inistzhan(SqStackTp &a)//初始化栈
{
a.top=-1;
}
void push(int che,SqStackTp &a)
{
if(che!=0)
{
a.top++;
a.data[a.top]=che;
}
if(che<=0)
exit(0);
}
int pankong(SqStackTp a)
{
if(a.top>=stacksize-1)
return 1;
else
return 0;
}
int likai(SqStackTp &a,int s)
{
int i,k=0;
for(i=9;i>=0;i--)//最多也就10辆车
{
if(a.data[i]==s)
break;
}
if(i>=0)//如果找到该车辆的信息
{
SqStackTp c;//建立临时栈
//SqStackTp *p=&c;
c.top=-1;
while(k<9-i)
{
c.top++;
c.data[c.top]=a.data[a.top];
a.top--;
k++;
}
a.top--;
k=0;
while(k<9-i)
{
a.top++;
a.data[a.top]=c.data[c.top];
c.top--;
k++;
}
cout<<"车辆离开成功"<<endl;
return 1;
}
else
{
cout<<"抱歉,未找到该车"<<endl;
return 0;
}
}
void initduilie(QueptrTp &a)//初始化队列
{
LqueueTp *p;
p=new LqueueTp;
p->next=NULL;
a.front=p;
a.rear=p;
}
int pankong(QueptrTp a)//判断队列即便道是否为空
{
if(a.front==a.rear)
return 0;
else
return 1;
}
void charu (QueptrTp &a,int b)//从队列即便道尾部插入一个车辆信息
{
LqueueTp *p;
p=new LqueueTp;
p->next=NULL;
p->data=b;
a.rear->next=p;
a.rear=p;
}
int shanchu (QueptrTp &a)//从队列即便道首部删除并保存一个车辆信息
{
int m;
LqueueTp *p;
p=a.front->next;
m=p->data;
a.front->next=p->next;
if(p==a.rear)
{
a.rear=a.front;
}
delete p;
return m;
}
int menu()//显示菜单并返回输入的功能选项
{
int k;
cout<<" 停车场管理系统 "<<endl;
cout<<" (1)汽车入场 "<<endl;
cout<<" (2)汽车出场 "<<endl;
cout<<" (3)退出 "<<endl;
cin>>k;
return k;
}
int main()
{
int d,e,f,j,k;
int c;
SqStackTp a;//建立停车场
inistzhan(a);//初始化停车场
QueptrTp b;//建立停车道
initduilie(b);//初始化停车道
while(1)
{
c=menu();
switch(c)
{
case 1:
{
cout<<"请输入要进入的车牌号: ";
cin>>d;
cout<<endl;
system("cls");
if(pankong(a))
{
charu(b,d);
cout<<"停车场已满,进入停车道等候"<<endl;
}
else
{
push(d,a);
cout<<"停入停车场"<<endl;
}
}break;
case 2:
{
cout<<"请输入要离开的车牌号: ";
cin>>e;
system("cls");
k=pankong(b);
cout<<pankong(b)<<endl;
j=likai(a,e);
cout<<pankong(b)<<endl;
if(j)
{
if(k)
{
f=shanchu(b);
push(f,a);
cout<<"牌号为"<<"f"<<"的在车道等候的第一辆车停入停车场"<<endl;
}
}
}break;
case 3:exit(0);//关闭所有文件,也就是退出
}
}
//cout << "Hello world!" << endl;
return 0;
}
C语言实现停车系统
最新推荐文章于 2023-07-06 17:17:08 发布