今天我们来谈谈有关停车场注册管理,停车场停车管理系统的注册界面,以下9个关于停车场注册管理的观点希望能帮助到您找到想要的答案。
停车场管理系统Java程序设计
本文最佳回答用户:【挽昀】 ,现在由道尔智控小编为你讲解与【停车场注册管理】的相关内容!
最佳回答#define length 3
#define null 0
#define M length
#define PRICE 5
#ifdef M
typedef struct
{
char status;
int no;
int time;
}data;
typedef struct
{
data *base;
data *top;
int stacksize;
}stack;
void initstack (stack *s)
{
s->base=(data *)malloc(length*sizeof(data));
s->top=s->base;
s->stacksize=length;
}
void pushstack (stack *p)
{
int i=0;
printf("Please push stack data:\n");
while(i<p->stacksize)
{
scanf(" %c%d%d",&(p->top->status),&(p->top->no),&(p->top->time));
(p->top)++;
i++;
}
(--p->top);
}
void popstack (stack *p)
{
int i=p->stacksize;
printf("Pop data to check the intput:\n");
while(i>0)
{
printf("%c %d %d\n",p->top->status,p->top->no,p->top->time);
(p->top)--;
i--;
}
}
void popstacksite (stack *p)
{ int i,j;
for(j=0;j<p->stacksize;j++) (++p->top);
i=p->stacksize;
while(i>0)
{printf("status: %c car-no: %d\n",p->top->status,p->top->no);
(p->top)--; i--; }
}
void stackshuzu (stack *p,char a[],int b1[],int b2[],int c1[],int c2[])
{ int i, j;
for(j=0;j<p->stacksize;j++) (++p->top);
printf("stackshuzu:\n");
for(i=0;i<p->stacksize;i++)
{ a[i]=p->top->status;
c2[i]=p->top->time; c1[i]=c2[i];
(p->top)--;
}
}
void costmoney (char a[],int b1[],int b2[],int c1[],int c2[])
{ int i,j;
for(i=0;i<length;i++)
if(a[i]=='d')
{ j=i;
for(i=0;i<j;i++)
if(b2[i]==b1[j]&&i!=j)
printf("number: %d cost=%d\n",b1[j],PRICE*(c1[j]-c2[i]));
}
} /*cost money.*/
typedef struct node
{
char status;
int no;
struct node *next;
}; /*node struct*/
typedef struct
{
struct node *front;
struct node *rear;
}queue; /*queue struct*/
void initqueue (queue *q)
{
q->front=(struct node*)malloc(sizeof(struct node));
q->rear=q->front;
} /*init a queue*/
pushqueue (queue *q)
{ struct node *l0,*l1; l0=l1=q->rear;
printf("Please input queue data and 'e' is end:\n");
scanf(" %c%d",&l1->status,&l1->no);
while(l1->status!='e'&&l1->no!=0)
{ l0=(struct node*)malloc(sizeof(struct node));
l1->next=l0;
scanf(" %c%d",&l0->status,&l0->no);
l1=l0;
}
l1->next=null;
q->rear=l1;
} /*n is q.rear,and bian dao shang de che dou shi kai jin lai.*/
popqueue(queue *q)
{ struct node *l0,*l1; l0=q->front; l1=q->rear;
printf("\n");
while(l0!=l1)
{ printf("car-status: %c car-no: %d\n",l0->status,l0->no);
l0=l0->next;
}
} /*check pushqueue*/
main ()
{queue q; stack s;
char a[M];
int b1[M],b2[M],c1[M],c2[M];
clrscr();
initstack (&s);
pushstack (&s);
popstack (&s);
initqueue(&q);
pushqueue(&q);
popqueue(&q); printf("\n\n");
printf("the cars in the che ku:\n");
popstacksite (&s);
printf("the cars in the bian dao:\n");
popqueue (&q); printf("\n\n");
stackshuzu (&s,a,b1,b2,c1,c2);
costmoney (a,b1,b2,c1,c2);
getch();
}
/*popstack de shun xu bu neng bian,yin wei s->top ke neng bian.*/
#else
main ()
{clrscr();
getch();
}
#endif
功能有:车的位置判断,收费多少,倒车出来那部分没解决,正在写。
以上就是道尔智控小编解答(挽昀)解答关于“停车场管理系统Java程序设计”的答案,接下来继续为你详解用户(冷梓沫)解答“停车场管理系统”的一些相关解答,希望能解决你的问题!

停车场管理系统
本文最佳回答用户:【冷梓沫】 ,现在由道尔智控小编为你详解与【停车场注册管理】的相关内容!
最佳回答停车场车牌识别出入口管理系统:
对停车场进出车辆进行车牌识别、抬闸、收费、放行等管理工作。广泛应用于各类停车场出入口场景。
车辆达到小区入口摄像机识别区域,自动识别车辆车牌号码,并对车辆类型做出判断。
月卡车:自动开闸放行/手工开闸放行可选,车辆进入信息及图片保存数据库。
临时车:自动开闸放行/手工开闸放行可选,计时并保存入口抓拍图片到数据库。如收费,按临时车收费标准收费,一般选择手工放行。
无法确认车辆/识别错误车辆:可手动放行,手工输入车牌号码,记录数据库,并产生正确的费用。
以上就是道尔智控小编解答(冷梓沫)贡献关于“停车场管理系统”的答案,接下来继续为你详解用户(花谢人凋零)回答“智能停车场系统有哪些收费漏洞”的一些相关解答,希望能解决你的问题!
智能停车场系统有哪些收费漏洞
本文最佳回答用户:【花谢人凋零】 ,现在由道尔智控小编为你讲解与【停车场注册管理】的相关内容!
最佳回答智能停车场收费系统是通过计算机、网络设备、车道管理设备搭建的一套对停车场车辆出入、场内车流引导、停车费收取工作进行管理的网络系统。是专业车场管理公司必备的工具。它通过采集记录车辆出入记录、场内位置,实现车辆出入和场内车辆的动态和静态的综合管理。系统一般以射频感应卡为载体,通过感应卡记录车辆进出信息,通过管理软件完成收费策略实现,收费账务管理,车道设备控制等功能。
车道控制设备是停车场系统的关键设备,是车辆与系统之间数据交互的界面,也是实现友好的用户体验关键设备。所以很多人就直接把“车道控制设备”理解成“停车场系统”,很多专业设备提供商也在介绍材料中把两者混淆。实际上,车道管理设备与停车场管理系统之间有本质区别,停车场管理系统是由电脑、管理软件、网络、车道设备组成的完成停车场管理功能的集合体。
以上就是道尔智控小编解答(花谢人凋零)解答关于“智能停车场系统有哪些收费漏洞”的答案,接下来继续为你详解用户(踩着棺材跳鬼步)分析“智能停车场管理系统有什么功能”的一些相关解答,希望能解决你的问题!
智能停车场管理系统有什么功能
本文最佳回答用户:【踩着棺材跳鬼步】 ,现在由道尔智控小编为你探讨与【停车场注册管理】的相关内容!
最佳回答智能停车场管理系统可实现三大功能:
1、收费盈利,对停车场内的车辆进行统一管理及看护。
2、对车辆和持卡人在停车场内流动时进行图像存储。
3、文字信息的采集并定期保存以备物管处、交管部门查询。
上文就是道尔智控小编解答贡献者:(踩着棺材跳鬼步)回答的关于“智能停车场管理系统有什么功能”的问题了,不知是否已经解决你的问题?如果没有,下一篇内容可能是你想要的答案,接下来继续讨论下文用户【幕府尛軒丶】解答的“停车场管理系统课程设计流程图”的一些相关疑问做出分析与解答,如果能找到你的答案,可以关注本站。
停车场管理系统课程设计流程图
本文最佳回答用户:【幕府尛軒丶】 ,现在由道尔智控小编为你详解与【停车场注册管理】的相关内容!
最佳回答停车场系统就能实现啊,只要加摄像机抓拍车辆,再加车位引导就可以记录了。收费方式的话有多种,可以自定义设置。
以上就是道尔智控小编分享贡献者:(幕府尛軒丶)解答的关于“停车场管理系统课程设计流程图”的问题了,不知是否已经解决你的问题?如果没有,下一篇内容可能是你想要的答案,下面继续探讨下文用户【小妞徣个火】回答的“停车场管理系统能删除车辆信息吗”的一些相关疑问做出分析与解答,如果能找到你的答案,可以关注本站。
停车场管理系统能删除车辆信息吗
本文最佳回答用户:【小妞徣个火】 ,现在由道尔智控小编为你讲解与【停车场注册管理】的相关内容!
最佳回答停车场系统和大多数商业系统一样存在证书有效期。联系系统的售后服务部门购买延期即可
或者是通过库修改内部日期时间的方式也可以暂时保证不过期(前提是能够拿到Seleq数据库的SA权限或者是这套系统的最高System权限)因此操作难度较大不建议
如果是发卡的时候提示超期则代表时效期超过了系统的上限
例如2095年过期的系统你失效期写2.99年显然是不行哒
具体的还要看情况
上文就是道尔智控小编解疑贡献者:(小妞徣个火)分析的关于“停车场管理系统能删除车辆信息吗”的问题了,不知是否已经解决你的问题?如果没有,下一篇内容可能是你想要的答案,现在接着继续探讨下文用户【闻鸡起舞】分析的“停车场管理系统程序设计c语言”的一些相关疑问做出分析与解答,如果能找到你的答案,可以关注本站。
停车场管理系统程序设计c语言
本文最佳回答用户:【闻鸡起舞】 ,现在由道尔智控小编为你详解与【停车场注册管理】的相关内容!
最佳回答要想把停车场管理系统做到完美,在编写程序代码时候就得注重细节,根据目前停车场智能化的不断提高,在技术人员的不断努力下改写历史,在每一次技术升级都要做到精确无误。
北京同业兴创停车场管理系统最重要的功能包括以下几方面:录入车辆信息,包含进入的时间、车牌、品牌;实现显示功能,即显示停车场中剩余位置的信息、车停时长;实现计费功能;实现保存功能,即将输入的车辆信息保存到指定的磁盘文件中;实现加载功能,即加载磁盘文件中保存的内容。
代码如下:
#include<iostream.h>
#include<malloc.h>
#define STACK_INIT_SIZE 3//存储空间初始分配量
#define PRICE 2
//^^^^^^^^^^^车辆信息^^^^^^^^^^^^^^^^^
struct Car//车辆信息,栈
{
int num;//车牌号
int time[2];//存放到达和离开的时间,time[0]代表到达时间,time[1]代表离开时间
};
struct Node//队列信息,便道
{
Car car;
Node * next;
};
//^^^^^^^^^^^^^停车场栈^^^^^^^^^^^^^
typedef struct StopStack//停车场栈
{
Car * base;
Car * top;
int stacksize;//当前已分配的存储空间,以元素为单位
}StopStack;
//^^^^^^^^^^^^便道队列^^^^^^^^^^^^^
typedef struct BiandaoQueue//便道队列
{
Node * front;//队头指针
Node * rear;//队尾指针
}BiandaoQueue;
//***********************便道初始化——构造空队列S*************************
int InitQueue(BiandaoQueue &Q)
{
Q.front=(Node *)malloc(sizeof(Node));
if(!Q.front)
{
cout<<endl<<"OVERFLOW!";
return(0);
}
Q.front->next=NULL;//Q.front是一个空结点
Q.rear=Q.front;
return 1;
}
//*****************车离开时仍在便道上**************************
void DeBiandao(BiandaoQueue &Q,Car &e)
{
Node *p,*q;
p=Q.front;
while (p->next->car.num!=e.num)
{
p=p->next;
}
q=p->next;
p->next=q->next;
if(q==Q.rear) Q.rear=p;//若删除的是队尾元素
e=q->car;
free(q);
}
//*****************车辆编号**************************
void StackBianhao(StopStack &S)
{
cout<<"该车在停车场的位置为:"<<S.top-S.base<<endl;
cout<<"======================"<<endl<<endl<<endl;
}
void QueueBianhao(BiandaoQueue &Q)
{
int i=0;
Node *q;
q=Q.front;
while(q!=Q.rear)
{
q=q->next;
i++;
}
cout<<"该车在便道的位置为:"<<i<<endl;
cout<<"======================"<<endl<<endl<<endl;
}
//***********************出便道——出队*************************
//出队 车辆e开出停车场
int DeQueue(BiandaoQueue &Q,Car &e)//若队列不为空,则删除Q的队头元素,用e返回其值,并返回OK否则返回ERROR
{
if(Q.front==Q.rear)//判空
{
cout<<endl<<"If it was deleted, it's empty !";
return 0;
}
Node *p;
p=Q.front->next;
e=p->car;//用e返回
Q.front->next=p->next;//修改头指针始终指向队首元素
if(Q.rear==p) Q.rear=Q.front;//特殊情况处理空队!
free (p);
return 1;
}
//***********************出停车场——出栈*************************
//出栈 车辆e开出停车场
int pop(StopStack &S,Car &e)
{
if(S.top==S.base)
{
return 0;
}//栈空-停车场空
S.top--;
e=*(S.top);
return 1;
}
//***********************进入便道——入队*************************
//入队 插入元素e为新的栈顶元素 车e进入便道
int EnQueue(BiandaoQueue &Q,Car e)//插入元素e为Q的新的队尾元素
{
Node *p;
p=(Node *)malloc(sizeof(Node));
if(!Q.front)
{
cout<<endl<<"OVERFLOW!";
return(0);
}//分配失败
p->car=e;
p->next=NULL;//生成新结点
Q.rear->next=p;//插入队尾
Q.rear=p;//修改队尾指针指向队尾
return 1;
}
//***********************进入停车场——入栈*************************
//入栈 插入元素e为新的栈顶元素 车e进入停车场
void push(StopStack &S,Car e)
{
*(S.top)=e;
S.top++;
}
//***********************判断便道上是否有车*************************
bool EmptyQueue(BiandaoQueue Q)
{
if(Q.front==Q.rear)
return true;
else
return false;
}
//***********************判断车离开时所在场所*************************
bool EmptyStack(StopStack S);
int LeaveWhere(Car e,StopStack S,BiandaoQueue Q )
{
if(EmptyStack(S))//特别注意,这句话不能省略
return -1;
else
{
Car *p;
p=S.base;
while(p->num!=e.num && p!=S.top-1)//!特别注意,此处不是S.top而是S.top-1
p++;
if(p->num==e.num)//此时车在停车场,return 1
return 1;
else//此时车在便道或不存在
{
Node *q;
q=Q.front->next;
while(q->car.num!=e.num && q!=Q.rear)
q=q->next;
if(q->car.num==e.num)//此时车在便道,return 0
return 0;
else
return -1;//此车不存在
}
}
}//return 1:在停车场
//return 0:在便道
//return -1:还未停车
//***********************判断车车是否已存在*************************
bool EmptyStack(StopStack S);
bool CarAbsence(Car e,StopStack S,BiandaoQueue Q )
{
if(EmptyStack(S))//特别注意,这句话不能省略
return false;
else
{
Car *p;
p=S.base;
while(p->num!=e.num && p!=S.top-1)//!特别注意,此处不是S.top而是S.top-1
p++;
if(p->num==e.num)//此时车在停车场,return 1
return true;
else//此时车在便道或不存在
{
Node *q;
q=Q.front;
while(q->car.num!=e.num && q!=Q.rear)
q=q->next;
if(q->car.num==e.num)//此时车在便道,return 0
return true;
else
return false;//此车不存在
}
}
}//return 1:车已在
//return 0:还未停车
//***********************判断停车场上是否有车*************************
bool EmptyStack(StopStack S)
{
if(S.top==S.base)
return true;
else
return false;
}
//***********************判断停车场是否满*************************
//判断是否满了
bool StackOver(StopStack &S)
{
if((S.top-S.base)>=S.stacksize)
{
cout<<"停车场已满,请驶进便道。"<<endl;
return true;
}
else
return false;
}
//***********************停车场初始化——构造空栈S*************************
int InitStack(StopStack &S)
{
S.base=(Car *)malloc(STACK_INIT_SIZE*sizeof(Car));
if(!S.base)
{ cout<<"OVERFLOW!"<<endl;
return (0);
}//if(!S.base) 存储分配失败
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return (1);
}
//***********************main函数******************************
int maxtime=0;//当前最终活动时间
void main()
{
int i,j,time;
char a;
Car e,e1,e2;
StopStack S1,S2;
BiandaoQueue Q;
InitStack(S1);
InitStack(S2);
InitQueue(Q);//初始化
cout<<"^^^^^^^^^^^^^^停车场管理系统^^^^^^^^^^^^^^^^"<<endl;
cout<<"^ 1.输入 ^"<<endl;
cout<<"^ 0.退出 ^"<<endl;
cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<<endl;
cout<<"请选择(1或0)"<<endl;
cin>>i;
while(i!=0&&i!=1)
{
cout<<"对不起,你的选择有误,请重新选择!"<<endl;
cout<<"^^^^^^^^^^^^^^停车场管理系统^^^^^^^^^^^^^^^^"<<endl;
cout<<"^ 1.输入 ^"<<endl;
cout<<"^ 0.退出 ^"<<endl;
cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<<endl;
cout<<"请选择(1或0)"<<endl;
cin>>i;
}
while(i!=0)//选择1时
{
cout<<"请输入车辆信息(g代表到达,l代表离开):"<<endl;
cout<<"g或l 车牌号 时间"<<endl;
cin>>a>>e.num;
//-----------------------------------------------进入----------------------------------------- if(a=='g')//进入
{
cin>>e.time[0];
if(CarAbsence(e,S1,Q ))//该车已停
cout<<"对不起,该车已停,请重新输入!"<<endl;
else if(e.time[0]<maxtime)//若输入时间有误
cout<<"对不起,你输入的到达时间有误,请重新输入!"<<endl;
else if(!StackOver(S1))//如果停车场未满
{
push(S1,e);//e进入停车场
maxtime=e.time[0];//更新当前最终活动时间
StackBianhao(S1);//车辆在停车场的编号
else//停车场满,要停在便道上
{
EnQueue(Q,e);//进入便道
maxtime=e.time[0];//更新当前最终活动时间
QueueBianhao(Q);//车辆在便道的编号
}
}//if结束,进入完成
//-------------------------------------------------离开-------------------------------- else if(a=='l')//离开
{
cin>>e.time[1];
time=e.time[1];//另一辆车开进停车场的时间与该车离开停车场的时间相同,用time记录
if(LeaveWhere(e,S1,Q )==1)//如果离开时车在停车场
{
if(e.time[1]<maxtime)//若输入时间有误
cout<<"对不起,你输入的到达时间有误,请重新输入!"<<endl;
else
{
j=0;
e2=*(S1.top);
while(e2.num!=e.num)
{
pop(S1,e1);
e2=e1;
push(S2,e1);//把e前边的车暂时压入另一个栈中
j++;//记录暂时开出去的车的数量
}//while循环结束时,e2就是离开的车
maxtime=time;//更新当前最终活动时间
e2.time[1]=time;
cout<<"该车在停车场内停留的时间为:"<<e2.time[1]-e2.time[0]<<endl;
cout<<"应缴纳费用为:"<<(e2.time[1]-e2.time[0])*PRICE<<endl;
pop(S2,e);
j=j-1;
while(j!=0)
{
pop(S2,e);
push(S1,e);//再把暂时存在栈S2中的车按原来的次序压入栈S1中
j--;
}
if(!EmptyQueue(Q))//如果便道上有车
{
DeQueue(Q,e);
maxtime=e.time[0];//更新当前最终活动时间
e.time[0]=time;//另一辆车开进停车场的时间与该车离开停车场的时间相同
push(S1,e);//把停在便道上的头一辆车开进停车场
}
}
}
else if(LeaveWhere(e,S1,Q )==0)//如果离开时车在便道
{
if(e.time[1]<maxtime)//若输入时间有误
cout<<"对不起,你输入的到达时间有误,请重新输入!"<<endl;
else
{
DeBiandao(Q,e);
e.time[1]=time;
cout<<"该车在停车场内停留的时间为:"<<e.time[1]-e.time[0]<<endl;
cout<<"应缴纳费用为:"<<"0"<<endl;
}
}
else//如果该车不存在
cout<<"对不起,要离开的车辆不存在,请重新输入!"<<endl;
}//else结束,离开完成
//-----------------------------------------------输入有误,输入的不是g或l--------------------------------------------------
else
cout<<"对不起,您的输入有误,请重新输入!"<<endl;
//---------------------------------------------------------------------------------------- cout<<"^^^^^^^^^^^^^^停车场管理系统^^^^^^^^^^^^^^^^"<<endl;
cout<<"^ 1.输入 ^"<<endl;
cout<<"^ 0.退出 ^"<<endl;
cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<<endl;
cout<<"请选择(1或0)"<<endl;
cin>>i;
while(i!=0&&i!=1)
{
cout<<"对不起,你的选择有误,请重新选择!"<<endl;
cout<<"^^^^^^^^^^^^^^停车场管理系统^^^^^^^^^^^^^^^^"<<endl;
cout<<"^ 1.输入 ^"<<endl;
cout<<"^ 0.退出 ^"<<endl;
cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<<endl;
cout<<"请选择(1或0)"<<endl;
cin>>i;
}
}//while循环结束
}//main()函数结束
以上就是道尔智控小编解答(闻鸡起舞)解答关于“停车场管理系统程序设计c语言”的答案,接下来继续为你详解用户(人间小暴躁)回答“停车场管理系统有哪些风险”的一些相关解答,希望能解决你的问题!
停车场管理系统有哪些风险
本文最佳回答用户:【人间小暴躁】 ,现在由道尔智控小编为你分析与【停车场注册管理】的相关内容!
最佳回答停车场管理系统是通过计算机、网络设备、车道管理设备搭建的一套对停车场车辆出入、场内车流引导、收取停车费进行管理的网络系统。是专业车场管理公司必备的工具。它通过采集记录车辆出入记录、场内位置,实现车辆出入和场内车辆的动态和静态的综合管理。那么,这套只能停车场系统有什么功能呢?请看武汉停车场系统专家为您详解
一、系统功能
1、图像识别功能:车辆入场时通过摄相机摄取车辆外型,颜色车牌号等图像,出场时将出口图像和入口图像比较,确保车辆安全。
2、语音提示功能:对重要信息,误操作或非法操作等做出语音提示。
3、多种报表输出:车辆信息,收费信息,通行记录,车辆信息,用户信息。
4、适用多种感应IC卡:TI-L(134.2K),TI-H(13.56M),HID,Motorola,Mifare等。
5.具有防砸车功能:只要车辆在道闸下,道闸不会下落,车辆离开后道闸自动下落。
6、临时卡发放:采用自动出卡机配合按键出卡,无车或车位满时禁止出卡。
7、脱机运行功能:各出入口具有联网功能,保证数据一致性,当网络短开,处于脱机状态时,系统正常运行,网络接通,数据自动恢复。
8、具有长期卡/月租卡/临时卡/管理卡等多种收费或不收费管理方式
9、具有LED中文显示屏:显示时间,收费金额,实时车位数,车位满,卡有效期等。
10、对讲功能:保证各出入口和管理中心的联络。
二、可选功能
1、车位引导功能:利用超声波来检测某车位占用或空闲状态,并将检测到的车位状态变化信息有车位引导控制器实时送至最佳停车位置。
2、防砸人,车功能:除了采用车辆检测器防砸车外,还可选用压力电波或红外线技术实现防砸人,车功能,既人或车在道闸下,闸杆就不会下落,人或车辆离开后,闸杆自动下落。
3、多区域车位记数功能:对多区域或地下多层停车场,利用车辆检测器及记数控制器实现各区域车辆统计,通过车位记数显示屏实时显示。
以上就是道尔智控小编解答(人间小暴躁)分析关于“停车场管理系统有哪些风险”的答案,接下来继续为你详解用户(坚持)解答“c语言停车场管理系统程序基本结构框架图”的一些相关解答,希望能解决你的问题!
c语言停车场管理系统程序基本结构框架图
本文最佳回答用户:【坚持】 ,现在由道尔智控小编为你讲解与【停车场注册管理】的相关内容!
最佳回答/*----------------------------------------------------------------
// Copyright (C) 2009 沈阳工程学院信息安全工作室
// 版权所有。
//
// 文件名:模拟停车场问题.cpp
// 文件功能描述:模拟停车场问题
//
//
// 创建标识:20091214
//
// 修改标识:20091218
// 修改描述:完成编码
//----------------------------------------------------------------*/
//头文件
#include <iostream>
#include <malloc.h>
#include <string>
#include <windows.h>
//常量定义
#define MAX_STOP 4 //定义停车场最大停车数
#define MAX_PLATE 10 //定义车牌号最大长度
#define TIME_COUNT "秒" //定义时间单位
#define TIME_MS_TO_CONUT 1000 //定义时间进制,意为由TIME_COUNT到毫秒的进制
#define UNIT_PRICE 10 //定义单位时间收费标准
using namespace std; //使用std命名空间
//数据结构定义
//定义存储汽车信息的结构体
typedef struct
{
char license_plate[MAX_PLATE]; //汽车牌照号码,定义为一个字符指针类型
char state; //汽车当前状态,字符p表示停放在停车位上,字符s表示停放在便道上,每辆车的初始状态用字符i来进行表示
int time; //汽车停入停车场时的时间,用来计时收费
}CAR;
//定义模拟停车场的栈结构
typedef struct
{
CAR STOP[MAX_STOP]; //汽车信息的存储空间
int top; //用来指示栈顶位置的静态指针
}SeqStack;
//定义模拟便道的队列结构
typedef struct node
{
CAR WAIT; //汽车信息的存储空间
struct node *next; //用来指示队列位置的动态指针
}QNode; //链队列节点的类型
//定义链队列的收尾指针
typedef struct
{
QNode *front,*rear;
}LQueue; //将头尾指针封装在一起的链队
//函数声明
int Empty_LQueue(LQueue *q); //判队空
int LeaveCheck(SeqStack parking , char *license_plate); //检查离开的车是否在停车场中
int QueueLength(LQueue *q); //判队长度
int Out_LQueue(LQueue *&sidewalk , char *license_plate); //出队操作
int StackEmpty(SeqStack parking); //判断栈是否为空
int StackFull(SeqStack parking); //判断栈是否为满
int StackPop(SeqStack &parking); //出栈操作
int StackTop(SeqStack parking , char *license_plate , int &time);//取栈顶元素
void Car_come(SeqStack &parking , LQueue *&sidewalk); //有车到来时的操作
void Car_leave(SeqStack &parking , LQueue *&sidewalk); //有车离开的操作
void Display(SeqStack parking); //显示停车场内的所有信息 调试时用
void InitStack(SeqStack &parking); //初始化栈
void InitList(LQueue *&sidewalk); //初始化队列
void In_LQueue(LQueue *&sidewalk , char *license_plate); //进队操作
void Input_Check(char *license_plate); ////检验输入的车牌是否合法
void StackPush(SeqStack &parking , char *license_plate , int stop_time);//进栈操作
void main()
{
//定义变量
SeqStack parking;
LQueue *sidewalk = NULL;
char *choice = new char;
int flag = 1; //定义一个变量 判断是否退出
//初始化一个为空的停车场
InitStack(parking);
//初始化一个为空的便道
InitList(sidewalk);
//运行界面及功能选择
while(flag)
{
cout<<"\n\t 停车场模拟管理系统 \n\n";
cout<<"\t|--------------------------------------------------|\n\n";
cout<<"\t|本程序为停车场的模拟管理系统,有车到来时请按C键。|\n\n";
cout<<"\t|然后根据屏幕提示进行相关操作,有车要走时请按l键。|\n\n";
cout<<"\t|然后根据屏幕提示进行相关操作,查看停车场请按D键。|\n\n";
cout<<"\t|然后根据屏幕提示进行相关操作,要退出系统请按Q键。|\n\n";
cout<<"\t|--------------------------------------------------|\n\n";
cout<<"请选择操作:";
gets(choice);
if(1 != strlen(choice))
{
cout<<"请正确输入选项!";
continue;
}
else
{
switch(*choice)
{
case 'c':
case 'C':
{
Car_come(parking,sidewalk);break;
}
case 'l':
case 'L':
{
Car_leave(parking,sidewalk);break;
}
case 'q':
case 'Q':
{
flag=0;break;
}
case 'd':
case 'D':
{
Display(parking);break;
}
default:
cout<<"选择不正确!请重新选择!\n";
}
}
}
}
//有车到来时的操作
void Car_come(SeqStack &parking , LQueue *&sidewalk)
{
//定义变量
char license_plate[MAX_PLATE];
cout<<"请输入车辆的车牌号码:";
Input_Check(license_plate);
//判断停车场是否已满,满则进入便道,不满进入停车场
if(StackFull(parking))
{
In_LQueue(sidewalk , license_plate); //进入便道
cout<<"停车场已满请在便道等候,您的位置为"<<QueueLength(sidewalk)
<<endl;
}
else
{
StackPush(parking , license_plate , GetTickCount()); //进入停车场
cout<<"请进入停车场中的"<<parking.top+1<<"号停车位\n";
}
// Display(parking);
}
//有车离开时的操作
void Car_leave(SeqStack &parking , LQueue *&sidewalk)
{
//定义变量
SeqStack tmpparking; //定义临时停车场
char leave_license_plate[MAX_PLATE]; //要离开的车牌号
char license_plate[MAX_PLATE]; //存放从停车场中读出来的车牌信息
int time;
InitStack(tmpparking); //初始化临时停车场
//判断停车场中是否有车
if(StackEmpty(parking))
{
cout<<"当前停车场中没有车\n";
return; //退出子函数
}
cout<<"请输入要离开的车牌照:";
Input_Check(leave_license_plate);
cout<<"当前停车场中有"<<parking.top+1<<"辆车\n";
if(LeaveCheck(parking , leave_license_plate)) //判断车是否在停车场中
{
//车在停车场中
cout<<"您的车在"<<LeaveCheck(parking , leave_license_plate)<<"号车位上\n";
while(StackTop(parking , license_plate , time)
&& (strcmp(parking.STOP[parking.top].license_plate , leave_license_plate) != 0))
{
strcpy(parking.STOP[parking.top].license_plate , license_plate);
cout<<"牌照为"<<license_plate<<"的车暂时退出停车场"<<parking.top+1<<"号位\n";
StackPush(tmpparking , license_plate , time); //停车场中的车暂时退出 进入临时停车场
StackPop(parking); //出栈
}
cout<<"牌照为"<<license_plate<<"的车离开停车场"<<parking.top+1<<"号位\n";
cout<<"您在停车场中停了"<<(GetTickCount()-time)/TIME_MS_TO_CONUT<<TIME_COUNT<<endl; //输出所停时间信息
cout<<"应缴费用为"<<(GetTickCount()-time)/TIME_MS_TO_CONUT*UNIT_PRICE<<"元\n";; //输出费用信息
StackPop(parking); //出栈
//将临时停车场中的车停回停车场
while(StackEmpty(tmpparking) != 1)
{
StackTop(tmpparking , license_plate , time);
StackPush(parking , license_plate , time);
cout<<"牌照为"<<license_plate<<"的车进入停车场"<<parking.top+1<<"号位\n";
license_plate[0] = '\0';
StackPop(tmpparking);
}
if(parking.top+1 == MAX_STOP-1) //判断车离开前停车场是否停满
if(QueueLength(sidewalk)) //如果停满则判断便道上是否有车
{
//便道中有车 则从便道中停入停车场
Out_LQueue(sidewalk , license_plate); //出队
StackPush(parking , license_plate , GetTickCount()); //入栈
cout<<"在便道中牌照为"<<license_plate<<"的车进入停车场"<<parking.top+1<<"号位\n";
}
}
else
//车不在停车场中
cout<<"您的车不在停车场中!\n";
}
//初始化顺序栈
void InitStack(SeqStack &parking)
{
parking.top = -1;
}
//判栈空
int StackEmpty(SeqStack parking)
{
if(parking.top == -1)
return 1;
else
return 0;
}
//判栈满
int StackFull(SeqStack parking)
{
if(parking.top == MAX_STOP-1)
return 1;
else
return 0;
}
//入栈
void StackPush(SeqStack &parking , char *license_plate , int stop_time)
{
parking.top++;
strcpy(parking.STOP[parking.top].license_plate , license_plate);
parking.STOP[parking.top].state = 'p';
parking.STOP[parking.top].time = stop_time;
}
//出栈 返回栈顶指针
int StackPop(SeqStack &parking)
{
if(StackEmpty(parking))
return 0;
else
return parking.top--;
}
//取栈顶元素
int StackTop(SeqStack parking , char *license_plate , int &time)
{
if(StackEmpty(parking))
return 0;
else
{
strcpy(license_plate , parking.STOP[parking.top].license_plate);
time = parking.STOP[parking.top].time;
return 1;
}
}
//显示所有
void Display(SeqStack parking)
{
if(parking.top == -1)
printf("停车场为空\n");
else
{
while(parking.top != -1)
{
cout<<"车牌号为:"<<parking.STOP[parking.top].license_plate;
cout<<",停在"<<parking.top + 1 <<"号车位上";
cout<<",已停"<<(GetTickCount()-parking.STOP[parking.top].time)/TIME_MS_TO_CONUT<<TIME_COUNT<<endl;
parking.top--;
}
}
}
//初始化队列
void InitList(LQueue *&sidewalk)
{
sidewalk = (LQueue *)malloc(sizeof(LQueue));
sidewalk->front=sidewalk->rear = NULL;
}
//入队
void In_LQueue(LQueue *&sidewalk,char *license_plate)
{
QNode *car_on_sidewalk;
car_on_sidewalk = (QNode *)malloc(sizeof(QNode)); //为新节点开辟新空间
strcpy(car_on_sidewalk->WAIT.license_plate , license_plate); //将数据写入节点
car_on_sidewalk->WAIT.state = 's'; //写入停车信息
car_on_sidewalk->WAIT.time = GetTickCount(); //写入停车时间
car_on_sidewalk->next = NULL;
if(Empty_LQueue(sidewalk)) //队空则创建第一个节点
sidewalk->front = sidewalk->rear = car_on_sidewalk;
else
{
//队非空插入队尾
sidewalk->rear->next = car_on_sidewalk;
sidewalk->rear = car_on_sidewalk;
}
}
//判队空
int Empty_LQueue(LQueue *q)
{
if(q->front == NULL)
return 1;
else
return 0;
}
//判队长度 返回队长
int QueueLength(LQueue *q)
{
QNode *p=q->front;
int i=0;
while(p != NULL)
{
i++;
p=p->next;
}
return i;
}
//出队 成功返回1 队空返回0
int Out_LQueue(LQueue *&sidewalk,char *license_plate)
{
QNode *car_on_sidewalk;
if(Empty_LQueue(sidewalk)) //如果队空返回0
return 0;
car_on_sidewalk = sidewalk->front;
strcpy(license_plate , car_on_sidewalk->WAIT.license_plate);//取出队头元素
if(sidewalk->front == sidewalk->rear) //队中只有一个元素
sidewalk->front = sidewalk->rear=NULL; //删除元素
else
sidewalk->front = sidewalk->front->next; //队头指针后移
free(car_on_sidewalk); //释放指针
return 1;
}
//检查离开的车是否在停车场中 返回车在停车场中位置 不在则返回0
int LeaveCheck(SeqStack parking,char *license_plate)
{
int flag = parking.top+1; //定义变量记录当前车在停车场中位置
if(StackEmpty(parking))
return 0;
else
{
//查找离开车所在位置
while(parking.top != -1 && strcmp(parking.STOP[parking.top].license_plate , license_plate) != 0)
{
flag--;
parking.top--;
}
return flag;
}
}
//检验输入的车牌是否合法
void Input_Check(char *license_plate)
{
int flag = 1;
int i;
string tmpstr;
while(flag)
{
cin>>tmpstr;
getchar();
if(tmpstr.length()<MAX_PLATE)
{
for(i=0;i<10;i++)
license_plate[i] = tmpstr.c_str()[i];
flag = 0;
}
else
cout<<"输入有误,请重新输入:";
}
}
以前的课设 你看看吧 纯手工的~~
关于停车场注册管理,停车场停车管理系统的注册界面的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于停车场注册管理的信息别忘了在本站进行查找喔。

