公共交通、道路客货运输、特种车辆等停车场的规划、建设和管理,适用国家和省、市其他有关规定。第三条 本办法所称机动车停车场是指供机动车停放的场所,包括公共停车场、专用停车场和道路临时停车泊位。
公共停车场,是指在道路外,主要供社会公众停放机动车的场所,包括永久性和过渡性公共停车场。
专用停车场,是指主要供本单位、本居住区等特定对象停放机动车的场所。
道路临时停车泊位,是指依法在城市道路内施划设置的供机动车临时停放的泊位。第四条 机动车停车场的规划、建设和管理遵循政府引导、多方参与、需求调节、高效管理、方便群众的原则,发展智慧停车,缓解停车矛盾,改善城市交通秩序。第五条 机动车停车场的规划建设应当以配建停车场为主、公共停车场为辅、道路临时停车泊位为补充,适度满足刚性停车需求,加强交通枢纽、医院、旅游景区、大中型商贸场所等公共活动场所公共停车场的规划和建设。第六条 县(市)区人民政府、开发(度假)园区管委会应当加强对机动车停车场管理工作的领导,建立、健全工作协调机制,解决机动车停车场规划、建设和管理工作中的重大问题。第七条 市交通运输行政管理部门负责本市机动车停车场的统筹管理,其所属的道路运输管理机构具体负责辖区内公共停车场、专用停车场的监督管理和服务工作。
公安机关交通管理部门负责道路临时停车泊位的设置和监督管理工作。
其他有关行政管理部门按照各自职责,共同做好机动车停车场的监督管理和服务工作。第八条 停车服务行业协会应当按照法律、法规、规章的规定,发挥行业自律作用,并在交通运输行政管理部门、公安机关交通管理部门的业务指导下,协助做好机动车停车场的有关管理工作。第二章 规划与建设第九条 市交通运输行政管理部门应当根据昆明城市总体规划,结合城市道路交通安全管理和城市建设发展的需要,会同发展改革、住房城乡建设、自然资源规划等部门组织编制本市中心城区机动车停车场专项规划,报市人民政府批准后实施。
中心城区范围外的县(市)区人民政府,应当根据城乡规划,编制本行政区域内的机动车停车场专项规划并组织实施。第十条 机动车停车场专项规划应当包括城市停车总体发展策略,机动车停车场供给体系及引导政策,公共停车场布局和规模、建设时序,城市交通枢纽、城市轨道交通换乘站配套驻车换乘公共停车场等内容。第十一条 经批准的机动车停车场专项规划不得擅自调整。确需调整的,应当按原批准程序报批。第十二条 市交通运输行政管理部门应当根据机动车停车场专项规划和城市停车发展需求,制定公共停车场年度建设计划,报同级人民政府批准后,由有关区人民政府、开发(度假)园区管委会组织实施。第十三条 新建、改建或者扩建建筑物的,应当按照本市城乡规划管理技术规定以及有关技术标准建设或者增建机动车停车泊位,由规划行政管理部门纳入建设工程规划许可管理,并与主体工程同步设计、同步施工、同步验收、同步交付使用。第十四条 在城市交通枢纽、城市轨道交通换乘站、大型公交站场等可以实现驻车换乘公共交通的场所,应当同步规划建设换乘公共停车场。
换乘公共停车场应当与主体工程同步设计、同步施工、同步验收、同步交付使用。第十五条 机动车停车场建设应当符合国家、省、市设置标准和设计规范,配套建设照明、通讯、排水、排风、消防、视频监控、停车引导、电子信息数据处理及接驳等系统,设置残疾人专用停车泊位、交通安全和防汛设施设备,设置或者预留供新能源汽车使用的充电装置。第十六条 建设机动车停车场应当依法办理有关审批手续,并组织验收;过渡性公共停车场竣工后,由市交通运输行政管理部门组织有关单位进行验收。
在满足结构、消防安全等条件下,既有其他功能建筑改建为过渡性公共停车场或者对既有机动车停车场进行机械化改造的,由市交通运输行政管理部门会同有关行政管理部门通过联席会议进行审定,并按规定办理验收。
要想把停车场管理系统做到完美,在编写程序代码时候就得注重细节,根据目前停车场智能化的不断提高,在技术人员的不断努力下改写历史,在每一次技术升级都要做到精确无误。北京同业兴创停车场管理系统最重要的功能包括以下几方面:录入车辆信息,包含进入的时间、车牌、品牌;实现显示功能,即显示停车场中剩余位置的信息、车停时长;实现计费功能;实现保存功能,即将输入的车辆信息保存到指定的磁盘文件中;实现加载功能,即加载磁盘文件中保存的内容。
代码如下:
#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()函数结束
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)