停车场管理系统程序

停车场管理系统程序,第1张

要想把停车场管理系统做到完美,在编写程序代码时候就得注重细节,根据目前停车场智能化的不断提高,在技术人员的不断努力下改写历史,在每一次技术升级都要做到精确无误。

北京同业兴创停车场管理系统最重要的功能包括以下几方面:录入车辆信息,包含进入的时间、车牌、品牌;实现显示功能,即显示停车场中剩余位置的信息、车停时长;实现计费功能;实现保存功能,即将输入的车辆信息保存到指定的磁盘文件中;实现加载功能,即加载磁盘文件中保存的内容。

代码如下:

#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()函数结束

无人停车场系统可以用AirDroid Business来进行管理和远程维护,但需要与相应的设备和软件进行集成。在集成完成后,企业管理员可以使用AirDroid Business来远程监控和管理停车场设备,例如监视设备状态、设置设备策略、远程控制和更新设备,以及监控停车场使用情况。

1. 集中管理:提供集中管理所有设备和应用程序的功能,减少管理员的工作量和管理成本,并且可以根据企业的需求进行定制。

2. 远程控制:管理员可以远程监视和控制设备,从而提高效率和缩短反应时间。这对于无人停车场系统而言尤为重要,因为它们通常在不同的位置。

3. 设备和数据安全:管理员可以设置设备策略以确保设备和数据的安全,并防止有害软件对设备进行攻击。

4. 数据隐私:提供完善的数据隐私保护措施,在数据传输和存储过程中加密保护,确保企业数据的安全性。

5. 追踪和统计:可以帮助管理员追踪停车场设备的使用情况,并用统计数据进行分析,从而改进经营决策,提高停车场管理效率。

此外,使用AirDroid Business进行管理和维护无人停车场系统管理员还可以使用AirDroid Business来管理停车场的应用程序和数据,并对停车场的安全进行监测和维护,提高管理效率,保障数据安全,降低管理成本。【了解更多设备管理相关信息】

随着我国汽车保有量的增加,交通压力变得更加严峻,因此智能化交通管理将是今后交通发展的大方向。随着智能化的发展,停车场管理系统将更加智能化、科学化、人性化,其中迪蒙无感智慧停车系统APP开发程序功能:

1、智能车牌识别:接入ETC智能车牌识别系统,对进出车辆进行车牌识别,判断身份

2、需取卡便可出行,让车辆的进出专用智能通畅。

3、准确车位查询:支持查看附近停车场剩余车位信息,包括车位、价格、出入口坐标等

4、智能缴费:支持出场缴费、代付代约、锁车功能,支持手机月卡自动续费,不停车直接扣费同时支持微信支付、银联支付等常见移动支付方式。

5、停车场监管:对停车场实现统一监控管理,统一进行停车场配置及权限管理等等。一般


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7835295.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存