停车场实习报告
第1篇:停车场调查实习报告
交通工程学
停车场调查实习报告
班级:
姓名:熊健 学号: 区域:西宁市城西区09交通工程
0913020020
一、区域1停车场调查
1、基本资料调查
区域1停车场为佳惠家具城的专属停车场,位于五四大街与冷湖路北段交叉口的西侧,距交叉口约153米,紧邻舒泊来雁小酒店与青海师范大学,实则为佳惠家具城的后院。主要为来家具城商洽家具生意的客人提供停车服务,不对外开放。面积不大,约735平米。呈矩形,约可提供20个泊位。停车场外有诱导信息“向右直行右转30米”,停车场内的停放方式为垂直式,停发方式为“后进前出”式。
2、调查数据整理及分析
在一小时的观察时间里,停放车辆的次数为2,累计停车数为9,故:
a、停车场饱和度
Wn=9/20=45% b、停车周转率
fn=2/20=10% c、步行距离
停车场离目的地佳惠家具城非常近,据目估大约只有10米
停放点离目的地的距离非常理想,方便停车与洽谈生意。
3、问题及建议
整个停车场内一片狼藉,工人们出了搬着家具在其中穿梭外,更有几名工人在停车区域的近旁工作。场面混乱且无专人引导停车,一切都得靠停车人的自觉意识。另外,停车场内没有消防设施,与木料打交道的这个停车场一旦发生火灾,后果不堪设想。
建议该停车场先安装好消防设备,并且将停车区与工作区作适当的隔离,另应设专人管理。
二、区域2停车场调查
1、基本资料调查
区域2停车场是一个配建停车场,位于五四大街与冷湖路南段交叉口的西侧,距交叉口仅十几米,处在交通银行古城台支行与联通五四路营业厅前,对外开放。整个停车场呈现“L”字形,面积约810平米,可提供50个左右的泊车位。
2、调查数据整理及分析
A、在一小时的观察时间里,停车次数为23,而累计停车数为43,故:
a、停车场饱和度 Wn=43/50=86% b、停车周转率 fn=23/50=46% B、随机对20为车主进行停放目的问卷调查,有5位是回家,12位是购物,3位为其他。调查得出停车目的为非购物的高达(5+3)/20=40%,停车购物的只占60%。对车主的停车目的的数据汇总如下图:
3、问题及建议
该停车场存在的问题很多,譬如停车混乱:有的车辆是“前进后出”式的,有的车辆时“后进前出”式的,有的车辆整齐或平行或垂直停放,而有的车辆横七竖八的停放着,这样严重影响市容;譬如小偷很难防。而这一切都源自没有专人进行针对性的管理。所以我的建议还是专设一个管理岗位。
三、区域3停车场调查
1、基本资料调查
区域3停车场为天年阁饭店(新宁路14号)的专用停车场,调查发现该停车场不收费,停放车辆的车主基本上是光顾天年阁饭店的食客。地处新宁路与盐湖路交叉口处,停车场基本呈现矩形,面积约750平米,大概可提供34个标准泊车位。停车场有一专门管理人员管理,但车辆的停放方式与停发方式仍有点混乱。由于该停车场相对较小,部分车辆停在了盐湖路内,这部分车辆在以下的计算中不予考虑
2、调查数据整理及分析
在11:00-12:00之间的这一段高峰时间段里,停车场饱和度为 31/34=91.2%,停车周转率为15/34=44.1%。
3、问题及建议
该停车场的面积过小,远无法满足慕名而来的食客的需求,以致很多车辆在盐湖路与新宁路的交叉口处非法占道停车,这给该地段埋下了很大的交通隐患,不仅如此,还影响行人与过往车辆的活动。由于在该交叉口处扩建停车场已不现实,故我建议天年阁饭店在300米范围内另建一停车场,但这又要一笔不小的支出,可能超出了经营者的心理可承受范围。如此的话,另建议与附近的饭店或写字楼的配建停车场达成停车场共享协议,引导食客到这些停车场停车。
四、区域4停车场调查
1、基本资料调查
区域 4停车场为附属于盛世豪庭住宅小区的停车场,处在新宁路与海晏路交叉口的南侧,距该交叉口大约300米。停车的车主多为盛世豪庭住宅小区的业主,当然也对外开放。停车场有两名专职管理人员,面积约998平米,可提供53个车位左右。停放方式为垂直式或平行式,停发方式基本上一半为“前进后出”式,一半为“后进前出”式。出入口为“横杆”式,右进左出。收费标准如下:两小时以内按2元/小时收费;两小时以上,24小时以内收费5元。
2、调查数据整理及分析
该停车场共53个车位,而在一小时的观察时间里,停车次数达12次,累计停车数为37辆,故: a、停车场饱和度
Wn=37/53=69.8% b、停车周转率
fn=12/53=22.6% c、步行距离
经口头询问得知大部分的车主的目的地为盛世豪庭小区、圣豪大酒店、中国农业银行与康福医院四地。停车场距盛世豪庭小区仅10米左右,距圣豪大酒店约20米,距中国农业银行约50来米,而距康福医院约100米。
3、问题及建议
该停车场的操作相较前几个停车场规范,但在我看来仍存在不小的问题:停车场内无明显的泊车位分划线,单靠管理人员凭感觉引导停车;停车场的出入口相距过近,在出入口处易引发事故。建议停车场明确划出泊车位,并最好能将出口设在停车场的另一端。
五、区域
5、6停车场调查
1、基本资料调查
区域
5、6停车场同样位于新宁路与海晏路交叉口的南侧,距交叉口50米左右。
5、6停车场由三名专职管理人员共同负责管理。 区域5停车场是青核花园小区的附属地上停车场,面积约1200平米,可提供70个左右的车位。车辆的停发方式为“后进前出”式,停放方式为垂直式。另外,停车场只有一个“横杆”式的出入口。给停车场的收费方式如下:两小时内按2元/小时进行收取;2小时至6小时收费5元;6小时至24小时收费10元。另有包月车主,收费如下:青核花园小区的业主每月缴120;非青核花园小区的业主则按每月150元缴纳。包月的车主的车停放在划有泊车分划的20个标准泊车位里,而非包月的车主的车停放在没有泊车分划的临时停车位。
区域6停车场是青核花园小区的专属地下停车场,该停车场停车设施齐全,停放规范,停放方式为“垂直式”,停发方式为“后进前出”式。面积1656平米,可提供标准泊车位48个,这些车位已被青核花园小区的业主们购完,平均每个车位据说是5万元。停车场的出入口为同一个,由横杆将出入口“分开”。
2、调查数据整理及分析
区域5停车场有泊车位70个,在一小时内停车次数为24次,累计停车58辆,故: a、停车场饱和度
Wn=58/70=82.9% b、停车周转率
fn=24/70=34.3% c、步行距离
区域5停车场距康福中西医院10米左右,距圣豪大酒店约50米,距中国农业银行仅5米左右。
区域6停车场有泊位48个,在一小时内停车次数为3次,累计停车30辆,故: a、停车场饱和度
Wn=30/48=62.5% b、停车周转率
fn=3/48=6.25% c、步行距离
在区域6停车场停车的车主目的基本为回家,而该停车场距青核花园小区约有30米。
3、问题及建议
区域5停车场存在的问题是:仅有20个有泊车分划线的标准车位,临时车位存在与前述停车场相同的问题。建议将其他车位也标出车位分划。
区域6停车场一切都比较标准,但美中不足的是我始终没有看到地下停车场应有的消防设施(或许是消防设施太不明显),这样一旦发生火灾,后果将不堪设想。建议该停车场进行消防整改。
六、区域7停车场调查
1、基本资料调查
区域7停车场是海晏路的一小区(海晏路6号)的地下停车场,只对小区住户开放,且费用全免。该停车场面积约316.5平米,能提供16个标准泊车位,有一人专门负责管理。车辆的停放方式是“垂直”式,停发方式或为“前进后出”式,或为“后进前出”式。出入口共用。
2、调查数据整理及分析
该停车场在一小时内的停车次数是1,累计停车数是6辆,故: a、停车场饱和度
Wn=6/16=37.5% b、停车周转率
fn=1/16=6.25%
3、问题及建议
该地下停车场除了无任何消防设施外,还存在两大很大的缺陷:一是排水工作做得相当差,整个进出口通道无任何排水设施,仅在车库口有一排排水道,使得车库相当潮湿;二是照明设施过少,车库里光线相当暗,而且应急照明设施也没有。可以说这是个阴暗潮湿的地下“黑”车库!里面还散发着氤氲发霉的气息。
建议小区物业部门针对排水与照明出现的问题做出及时而有效的整顿措施!
七、区域8停车场调查
1、基本资料调查
区域8停车场为青海华山医院的配建停车场,位于海晏路与冷湖路北段交叉口的西侧,距交叉口60米左右。停车场面积不大,整个停车场才130平米,可泊车15辆。停车场有一名管理人员负责引导车辆的进出,对外开放,不收费。车辆的停放方式是“垂直”式,停发方式是“后进前出”式。
2、调查数据整理及分析
我观察了一下,一小时内车辆停放6次,而车辆的累积停放量为9,故:
a、停车场饱和度
Wn=9/15=60% b、停车周转率
fn=6/15=40% c、步行距离
车主们的目的地基本都是近在咫尺的华山医院与中国农业银行。
3、问题及建议
该停车场的问题就在于面积太小了,停几辆就感觉很拥挤了。严重影响了进出华山医院和农业银行的市民的活动。
应在这架一个机械停车楼,以解决地小车多的问题,可适当收费。这样还可吸引其他地方的车辆停放,一定程度上缓解其他地块的停车压力。
八、调查后记
三天的调查实习让我对课本上停车场部分的知识有了新的认识。调查目的不重在对课本上的知识进行重复、验证,而重在于调查的过程中发现问题,提出自己的主张与建议,乃至收获对自己的全新认识。
我调查的主要是五四大街、海湖路与新宁路围成的这个大区域,主要调查了两类停车场:配建停车场与地下停车场。在调查中我就发现配建停车场中的车辆由于无泊车位分划的原因多停得不规范,有的甚至停得“横七竖八”的,停发方式也走“自由主义”路线,虽也有专门人员负责,但仍显无章法之态。有的配建停车场干脆连负责人都欠奉。而地下停车场存在的主要问题在消防、排水与照明这三块,特别是消防设施欠奉让人很揪心啊!
另外,在三天的调查里,我也算是历练了自己:有针对性地向停车场的管理人员询问,与他们侃大山;独立、有效地组织对自己区域的停车场的调查;每天调查完之后进行这一天成果的总结,包括分析数据、停车场场景重现及问题的总结与处理„„
人说“纸上得来终觉浅,绝知此事须躬行”,诚如是。在这三天的“躬自力行”中,我不仅巩固了所学,更发现了问题,锻炼了自己„„
第2篇:上机实习报告—停车场管理
实习报告
题目:停车场管理
班级:计算机学院12052313 姓名:卢魏旭 学号:12051521 完成日期:2012年10月
一、需求分析
以栈模拟停车场,以队列模拟停车场以外的便道,每一组输入的数据包括三个数据项:汽车“到达”或“离去”的信息,汽车牌照号码以及到达或者离去的时刻,对每一组数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应缴纳的费用(在便道上不计费),栈以顺序结构实现,队列以链表结构实现。
附加要求,便道上的车可以直接开走,此时排在它前面的汽车先让开,再一次排到队尾。
二、概要设计
为实现上述程序功能,以顺序存储结构实现栈的功能,也就是停车场,栈的抽象数据类型定义为: ADTStack {
数据对象:D={a|ai|ai-1,ai
操作结果:将车牌号及时间入栈,返回位置pos Popstack($S,num,&time)初始条件:栈S存在操作结果:取出栈内元素
}
此外以链式存储结构实现队列的功能,也就是便道 队列的抽象数据类型定义为: ADT Quene { 数据对象:D={a|ai|ai-1,ai
基本操作:
creatquene(&Q)
操作结果:建立一个空队列
Pushquene(&Q,num)
初始条件:队列Q存在操作结果:将一个元素入队列 Popquene(&Q,num)
初始条件:队列Q存在操作结果:从队列中取出一个元素 }
三、详细设计
#include #include #include #define stacksize 2 typedef struct Stack { int time;int number;}*Stackptr;typedef struct linkstack { Stackptr base;Stackptr top;};typedef struct Quene { int time;int number;struct Quene *next;}*Queneptr;typedef struct linkquene { Queneptr front;Queneptr rear;};void creatstack(linkstack &S){ S.base=(Stackptr)malloc(stacksize*sizeof(Stack));S.top=S.base;} void creatquene(linkquene &Q){ Q.front=Q.rear=(Queneptr)malloc(sizeof(Quene));Q.front->next=NULL;} void showstack(linkstack S){ while(S.top-S.base>=stacksize-1){
S.top--;
printf("number=%d time=%dn",S.top->number,S.top->time);} } void showquene(linkquene &Q){ Quene *q;if(Q.front!=Q.rear){
q=Q.front->next;
while(q->next!=NULL)
{
printf("number=%d time=%dn",q->number,q->time);
q=q->next;
}
printf("number=%d time=%dn",q->number,q->time);} else
printf("便道上没有车辆!n");}
int Pushstack(linkstack &S,int num,int time,int &pos)//入停车场 { if(S.top-S.base>=stacksize)
return 0;else {
S.top->number=num;
S.top->time=time;
S.top++;
pos=S.top-S.base;
return 1;} }
void stacktostack(linkstack &outS,linkstack &inS)/*出停车场时先把后进来的车开到一个临时栈内*/ { inS.top->number=outS.top->number;inS.top->time=outS.top->time;}
int Popstack(linkstack &S,int num,int &time0)//出停车场 { int flag=0,i,m=S.top-S.base;linkstack S1;creatstack(S1);S.top--;for(i=0;i
stacktostack(S,S1);
if(S.top->number==num)
{
flag=1;
break;
}
i++;} if(flag){
time0=S.top->time;//找到后将刚进来的时候的时间赋值给time0
while(S1.top!=S1.base)
{
S1.top--;
stacktostack(S1,S);
S.top++;
}
stacktostack(S1,S);
return 1;} else
S.top=m+S.base;
return 0;} void Pushquene(linkquene &Q,int num,int time,int &pos)//停车场满后入便道 { Quene *p;linkquene q=Q;p=(Queneptr)malloc(sizeof(Quene));p->number=num;p->time=time;p->next=NULL;Q.rear->next=p;Q.rear=p;p->next=NULL;pos=0;while(q.front->next!=NULL){
pos++;
q.front=q.front->next;} } void Popquenetostack(linkquene &Q)//将便道上的车开出来开进停车场,其实就是删除队列中的对头元素 { Quene *p;p=Q.front->next;Q.front->next=p->next;if(Q.rear==p)
Q.rear=Q.front;} int Popquene(linkquene &Q,int num)//直接将车从便道上开走 { Quene *q,*p;q=Q.front->next;int flag=0,temp;temp=q->number;while(q->number!=num){
Q.rear->next=q;
Q.rear=q;
q=q->next;
if(temp==q->number)
{
flag=1;
break;
} } Q.rear->next=NULL;if(flag)
return 0;//未找到
else {
Q.front->next=q->next;
if(Q.front->next==NULL)
Q.front=Q.rear;
return 1;} } void Input(linkstack &S,linkquene &Q,char ch,int num,int time){ int pos,time0;switch(ch){
case 'A':
if(Pushstack(S,num,time,pos))
{
printf("%d号汽车停在停车场里的第%d个车位上n",num,pos);
break;
}
else
{
Pushquene(Q,num,time,pos);
printf("%d号汽车停在便道上的第%d个车位上n",num,pos);
break;
}
case 'D':
if(Popstack(S,num,time0))
{
printf("%d号汽车出停车场,",num);
printf("n停车时间:o%d分钟n停车费用为%g元an",time-time0,(time-time0)*0.05);
if(Q.front!=Q.rear)
{
Quene *q;
q=Q.front->next;
while(Pushstack(S,q->number,q->time,pos)&&Q.front!=Q.rear)//当停车场没停满时
{
S.top--;
S.top->time=time;//进停车场再计时
printf("%d号汽车出便道进入停车场,停在第%d个车n",S.top->number,pos);
S.top++;
Popquenetostack(Q);//让便道上的车出列进入停车场
}
}
//
showstack(S);
}
else
{
if(Q.front!=Q.rear&&Popquene(Q,num))
printf("便道上的号车开走了n",num);
else
printf("停车场和便道上均无此车n");
}
break;
case 'E':break;} printf("n");}
void main(){ char c='X';char cs[10];int number,time;linkstack S;linkquene Q;creatstack(S);creatquene(Q);while(c!='E'){
printf("输入操作数n");
scanf("%c%d%d",&c,&number,&time);
gets(cs);
if(c!='A'&&c!='D'&&c!='E')
{
printf("输入有误!n");
continue;
}
printf("n");
Input(S,Q,c,number,time);} printf("结束!n");showstack(S);system("pause");}
四、调试分析
1、本次作业是一个简单的停车场管理,涉及到停车场停车开车以及便道上停车的问题,在Input()函数中调用根据输入的信息调用各个函数进行相应的分析,刚开始遇到很多问题,比如在出栈和入栈时,由于栈内存放的是结点的指针,而我当时直接是用S.top=p来赋值,导致在从停车场开车走时找不到车辆的车牌号和对应的时间,返回给我的是一串地址,后来明白是要对S.top所指结点的各个元素分别赋值才可以。
2、本次程序没有太多出色的算法,基本上就是要对栈和队列的熟练使用,明白其用法,程序中的stacktostack()比较重要,在停车场中开车走时要使用一个临时的栈来存放场内的车,然后再按顺序放回去。
3、对指针的掌握熟悉了一点,栈和队列都采用指针来操作,每一个栈内存放一个车辆结点的地址信息,使用起来非常的方便。
4、本程序中除了基本操作的算法以外,只有一个Input()函数,其时间复杂度
2在停车场开车后从便道入场这里最大为O(n),其他算法都是对栈或者队列的遍历,为O(n);
5、经验体会,这种程序不复杂,就是需要仔细,在入队和出队以及入栈和出栈时很容易出错,当数据出现错误的时候,可以用一个遍历函数来检测栈内或队列内的数据。
五、用户手册
1、本程序的运行环境为DOS操作系统,执行文件为:停车场管理.exe。
2、进入演示程序后即显示文本方式的界面
3、按照A 1 1的形式输入信息A代表停车,D代表开车走,E代表结束输入,第一个数字代表车牌好,第二个数字代表停车或者开车走的时刻。回车即确定输入。每次输入后,若是停车,则显示停车的位置,若是开车走,则会显示车是从停车场内开走还是从便道上开走,若是从停车场内开走,显示停了多长的时间,以及相关的停车费用。
六、测试结果 如图所示
七、附录
源程序文件名清单:
停车场管理.c++ //主程序
八、验收过程
1、验收时间:周一晚上机时间,6:00—9:00;
2、验收地点:一教115机房;
3、验收教师:王立波;
4、流程概要:
1)第一次验收时老师让我把“从便道上直接开车走”这个功能实现。2)第二次验收时,在从便道上直接开车走这个功能上出了点问题,我是创建了一个新的结点来保存要插入到队尾的车辆信息,而老师认为应该直接把结点链接到队尾就行不需要创建新结点,这样可以节省空间,经过一番修正,达到了老师的要求,学会了如何链接队列元素。
3)学生解答结束后,老师对本程序给出评分。4)验收结束。
第3篇:数据结构停车场管理实习报告
实习报告
题目:停车场管理
一. 需求分析
1. 用栈来表示停车场,用队列来表示停车道。
2. 用户需输入车辆的必要信息,如车辆的到达或离开,汽车牌号以及到达或离去的时刻。停车场的容量及单位时间的停车费由编程序者自行设置,结构需输出车辆停车所需缴纳的费用。
3. 本程序要求对车辆的动态能够输出具体的信息内容,包括停车或离开的时间,位置,及所需缴纳的停车费。4. 测试数据为:
N=2,输入数据为:(’A’,1,5),(‘A’,2.,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0).其中:’A’表示到达,’D’表示离去,’E’表示输入结束。5.程序执行的命令为:
1.创建栈和队列。 2.对车辆的行为进行相应的处理。3.输出车辆的信息。
二. 概要设计
1.设定栈的抽象数据类型定义:
ADT Stack{
数据对象:D={ai|ai属于Elem,i=1,2……,n, n>=0}
数据关系:R1={| ai-1,ai属于D,i=2,……,n}
基本操作:
InitStack(&S)
操作结果:构造一个空栈S.pop(&S,&e)
初始条件:栈S已存在。
操作结果:删除S的栈顶元素,并以e返回其值。
push(&S,&e)
初始条件:栈S已存在。
操作结果:在栈S的栈顶插入新的栈顶元素e。
EmptyStack(S)
初始条件:栈S已存在。
操作结果:若栈为空,则返回TRUE,否则,返回FALSE }ADT Stack;2.设定队列的抽象数据类型定义:
ADT Queue{
数据对象:D={ai| ai属于Elem, i=1,2,……,n, n>=0}
数据关系:R1={| ai-1,ai 属于D,i=2,……,n}
基本操作:
InitQueue(&Q)
操作结果:构造一个空队列Q.Append(&Q, e)
初始条件:队列Q已存在。
操作结果:插入元素e为Q的新的队尾元素。
Remove(&Q, &e)
初始条件:Q为非空队列。
操作结果:删除Q的对头元素,并用e返回其值。
EmptyQueue(Q)
初始条件:队列Q已存在。
操作结果:若队列为空,则返回TRUE,否则,返回FALSE
}ADT Queue 3.本程序主要包括三个模块
1.主程序模块;
int main(){
初始化;
do{
接受命令;
处理命令;
}while(命令!=退出); } 2.处理车辆到达模块; 3.处理车辆离开模块;
各模块之间的调用关系如下:
处理车辆到达模块主程序模块处理车辆离开模块
三. 详细设计
设计程序如下: 1.栈的头文件
#ifndef _SQSTACK_H_ #define _SQSTACK_H_ struct Car { int plate, arrive_t;};cla SqStack { public: int top;Car *base;int size;void InitStack(int m=100);bool EmptyStack()const;bool Push(Car &c);bool Pop(Car &c);};void SqStack::InitStack(int n){ base = new Car[n];top =-1;size = n;} bool SqStack::EmptyStack()const { if(top ==-1)
return true;else
return false;} bool SqStack::Push(Car &c){ if(top == sizec.arrive_t;if(timelong
cout
packing.Push(c);
while(!temp.EmptyStack())
{
temp.Pop(c);
packing.Push(c);
}
return 0;} cout
temp.Pop(c);
packing.Push(c);}
if(!sevice_road.EmptyQueue())
{
sevice_road.Remove(c);
map[c.plate] = 0;
c.arrive_t = tim;
packing.Push(c);
cout
} } return 0;} int main(){ cout > n;cout > command;while(command!= 'E'){
if(command == 'A')
{
Arrive(packing, sevice_road);
cout
}
if(command == 'D')
{
Depart(packing, temp, sevice_road);
cout
}
cin >> command;} }
车牌号时间"
四. 调试与验收
1.本次作业是设计停车场的管理系统,就需要判断车牌号,及时间的输入的正确性,输入的数据有比较严格的要求,必须符合实际。因此对数据需要多次判断。2.处理车辆到达模块和处理车辆离开模块其空间复杂度为O(m*n);3.本程序循环用的很多,找车,排队,等等。
4.在验收时,老师提出一些当输入为不正常输入的时候的情况,而我没有考虑到,所以又做了一定的修改。
5.验收时,老师提到所加map破坏了程序整体结构的完好性,是有待改进的地方。
五
用户手册
1.按屏幕提示输入停车场规模和车辆信息; 2.回车显示车辆在停车场或停车道的信息; 3.输入E退出。
六. 测试结果
七 附录
源程序文件名清单: LinkQueue.cpp LinkQueue.h SqStack.cpp
SqStack.h 停车场管理.cpp
第4篇:实习报告4停车场管理程序
暨南大学数据结构实习报告
题目:停车场模拟程序
专业:03计机
姓名:黄泳晞
学号:2003402054529 一. 问题描述:
设停车场是一个可停放n 辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆达到时间的先后顺序,依次由北向南排列(大门在最南端,最先达到的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退车车场为它让路,待赶辆车开出大门外,其它车辆在按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短叫纳费用。试为停车场编制按上述要求进行管理的模拟程序
二.算法思路
(1)两个栈和一个队列。
根据题目要求,停车场只有一个大门,因此可用一个栈来模拟:当栈满后,继续来到的车辆只能停在便道上,根据便道停车的特点,可知这可以用一个队列来模拟,先排队的车辆先离开便道,进入停车场。由于排在停车场中间的车辆可以提出离开停车场,并且要求在离开车辆到停车场大门之间的车辆都必须先离开停车场,让此车离开,然后让这些车辆依原来的次序进入停车场,因此在一个栈和一个队列的基础上,还需要用一个栈来保存为了让路离开停车场的车辆。所以本题要用两个栈和一个队列。
(2)操作: 栈: 进栈:车辆进入 出栈:车辆离开
查找:允许排中间的车辆先离开停车场,因此需要在栈中进行查找。(3)队列:进队:车辆进入 出队:车辆离开
查找:允许排中间的车辆先离开停车场,因此需要在队中进行查找。
三.概要设计:
1.函数:
void Incar()
车辆x进入停车场 void Outcar()
车辆x离开停车场 void Display()
显示停车场的状况
2.一系列算法:
int DelQueue_L(LQueue *q)void EnQueue_L(LQueue *q,int num1)void InitQueue_L(LQueue *q)ELEMTP Pop_Sq(SqStack *s)int Push_Sq(SqStack *s,ELEMTP x)void InitStack_Sq(SqStack *s)3.主程序: main(){
初始化;
do{
选择工作项目;
switch(字符)
{
case '1':
内容;
case '2':
内容;
while(条件)
{
判断输入时间合法性
};
调用车辆进入的函数;
case '3':
内容;
while(条件)
{
判断输入时间合法性
};
调用车辆离开的函数;
case '4':
程序结束
default:
输入数据错误
} } while(条件);
三.程序源代码:
#include #include #include #define N 2
//--------停车场容量----------------#define M 0.05
//--------停车场内每分钟单价--------#define O 0.02
//--------便道每分钟停车单价--------#define True 1 #define False 0;typedef struct time { int hour;int min;}Time;/*时间结点*/ typedef struct {
time hh,mm;int num;
//--------车牌号--------------------int arrtime;
//--------到达/离开时间-------------}ELEMTP;
//--------顺序栈的数据元素类型------typedef struct { ELEMTP elem[N];int top;}SqStack;
//--------顺序栈类型----------------typedef struct node { int num;
//--------车牌号/便道上的车辆数量---struct node *next;}QNode;
//--------链队列的数据元素类型------typedef struct { QNode *front, *rear;}LQueue;
//--------链队列类型----------------void InitStack_Sq(SqStack *s);
//--------初始化栈------------------int Push_Sq(SqStack *s,ELEMTP x);
//--------入栈----------------------ELEMTP Pop_Sq(SqStack *s);
//--------出栈----------------------void InitQueue_L(LQueue *q);
//--------初始化队列----------------void EnQueue_L(LQueue *q,int num1);
//--------入队列--------------------int DelQueue_L(LQueue *q);
//--------出队列--------------------
void Incar(SqStack *s1,LQueue *q,ELEMTP x){
//--------车辆x进入停车场-----------
void Outcar(SqStack *s1,SqStack *s2, LQueue *q,ELEMTP x,ELEMTP y){
double Money;
//--------车辆x离开停车场 int n,f,A1,A2,B1,B2;QNode *p;f=0;int f;f=Push_Sq(s1,x);if(f == 0){
//--------停车场栈s1已满入便道q-----
} else couttopfront->num
while((s1->top>0)&&(f!=1)){
//--------在栈s1中寻找车辆x
} if(y.num==x.num){
//--------寻找到车辆x------
} else{
//--------栈s1中未找到车辆x--------------
while(s2->top>0){
//--------将栈s2中的车辆倒回到栈s1中-----
} p=q->front;
//--------在便道q上找到车辆x--------------f=0;while(f==0 && p->next!=NULL)
if(p->next->num!=x.num)else{
A1=x.hh.hour;A2=y.hh.hour;B1=x.mm.min;B2=y.mm.min;p->next=p->next->next;q->front->num--;if(p->next==NULL)q->rear=q->front;p=p->next;y=Pop_Sq(s2);f=Push_Sq(s1,y);//-----------收费计算------------------A1=x.hh.hour;A2=y.hh.hour;B1=x.mm.min;B2=y.mm.min;Money=((A1-A2)*60+B1-B2)*M;couttop>0){
//--------将栈s2中的车辆倒回到栈s1中--
} n=DelQueue_L(q);if(n!=NULL){
//--------便道q上的第一辆车入栈s1------
} y.num=n;y.arrtime=x.arrtime;f=Push_Sq(s1,y);y=Pop_Sq(s2);f=Push_Sq(s1,y);
y=Pop_Sq(s1);if(y.num!=x.num)n=Push_Sq(s2,y);else f=1;couttop
}
}
cout
cout
//--------显示停车场的状况--------
void main(){
char ch1,ch2;SqStack *s1,*s2;LQueue *q;ELEMTP x,y;s1=(SqStack *)malloc(sizeof(SqStack));s2=(SqStack *)malloc(sizeof(SqStack));q=(LQueue *)malloc(sizeof(LQueue));InitStack_Sq(s1);InitStack_Sq(s2);int k;QNode *p;couttop!=0){
} else coutfront->num){
} else cout
车牌"front->next;p;p=p->next)cout
"num
车牌"top;k++)cout
"elem[k].num
InitQueue_L(q);cout
cout
2--车辆到达
3--车辆离开
4--程序结束n";cout>ch1;switch(ch1){ case '1':
Display(s1,q);break;cout>x.num;cout>x.hh.hour;cin>>ch2;{
};while(ch2!= ':');cin>>x.mm.min;Incar(s1,q,x);cout>x.num;cout>x.hh.hour;cin>>ch2;{
};while(ch2!= ':');cout>x.hh.hour;cin>>ch2;cout>x.hh.hour;cin>>ch2;
cout
while(ch2!= ':')case '3':
while(ch2!= ':')
}
} cin>>x.mm.min;Outcar(s1,s2,q,x,y);cout>ch1;case '4': default: while(ch1!='4');}//--------main--------void InitStack_Sq(SqStack *s){ } int Push_Sq(SqStack *s,ELEMTP x){
} ELEMTP Pop_Sq(SqStack *s){
ELEMTP x;if(s->top==0){
} else { s->top--;x.num=NULL;x.arrtime=NULL;return(x);if(s->top==N)else {
} s->elem[s->top]=x;s->top++;return(1);return(0);s->top=0;
} } return(s->elem[s->top]);void InitQueue_L(LQueue *q){
} void EnQueue_L(LQueue *q,int num1){
} int DelQueue_L(LQueue *q){
} QNode *p;int n;if(q->front==q->rear)else {
} p=q->front->next;q->front->next=p->next;if(p->next==NULL)q->rear=q->front;n=p->num;free(p);q->front->num--;return(n);return(NULL);QNode *p;p=(QNode *)malloc(sizeof(QNode));p->num=num1;p->next=NULL;q->rear->next=p;q->rear=p;q->front->num++;q->front=(QNode *)malloc(sizeof(QNode));q->rear=q->front;q->front->next=NULL;q->front->num=0;四.调试与测试: 1.数据输入:
车辆1: 11111
进入时间:1:22
离开时间:4:44;
停留时间为:((4-1)*60+44-22)=202分钟
单价0.05元 收费应为 10.1元。
车辆2: 22222; 车辆3: 33333; 车辆4: 44444
车辆5: 55555;
详细数据如下:
车牌为“11111”与“22222”的车在停车场; 其余的在便道上等待。
2.数据输入后,测试车辆的离开
详细数据如下:
测试后,达到预期的效果,程序通过调试。
五.实习总结:
本次实习程序比较大,要理清思路才能快速的完成。通过这次实习,让我更加了解栈与队列等算法。
第5篇:c语言实习报告 停车场管理系统
C语言课程设计
院系:工程学院 姓名:姚 品 品 学号:20051001635 班号:05205224 指导教师:王老师 日期:2007年9月
一
课程设计编号、名称、内容 编号:第二十七题 名称:停车场管理系统2 内容:
[要求]
(1)有一个两层的停车场,每层有6个车位,当第一层车停满是才允许在第二层停车,(停车场可用一个二维数组来实现,每个数组中存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算
(2)假设停车场初始状态为第一层已经停有四辆,车其车位号依次为1—4,停车时间依次为20,15,10,5。即先将这四俩车的信息存入文件“car.dat”中(数组的对应元素也要进行赋值)
(3)停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件”car.dat”中,并将在此之前的所有车的 停车时间加5.(4)收费管理(取车):当有车离开时,输入其车牌号,先按其停车时间计算费用每5分钟0.2元.(停车费用可设置一个变量进行保存),同时从文件”car.dat”中删除该车的 信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零).按用户的选择来判断是否要输出停车收费的总计.(5)输出停车场中全部车辆的信息.(6)退出系统.[提示](1)需求分析
车辆信息要用文件存储,提供文件的输入输出操作;当车离开时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择.(2)总体设计
整个管理系统可设计为停车模块、取车模块、车辆信息浏览模块.二.总体设计
该题目为一个两层停车场的停车,取车以及对停车场内现有所有车辆信息的浏览问题。车辆的信息包括车牌号码,层号,车位号以及停车时间4四项信息,可以用一个结构体来实现。双层停车场的信息可以有一个二维数组来实现。三.模块设计
1.停车信息结构体
车辆信息包括车牌号carNO,层号floor,车位号position,停车时间time,把四个成员作为结构体Car的成员以便处理
struct Car
{
int carNO;int floor;int position;int time;}car[12] 2.车位信息数组
因为停车场为两层,每层6个车位,所以定义一个二维数组park[2][6]来存储结构体 int park[2][6] 3.主菜单
四项功能
1)停车(TING CHE)
2)取车(QU CHE)
3)浏览(LIU LAN)
4)退出(TUI CHU)程序: for(;;){
printf(" please choose: 1停车
2取车
3输出停车场中全部车辆的信息
0退出n");
4.车位分析和停车模块
因为只有第一层车位停满才能在第二层停车,所以在停车之前先要对车位的情况进行分析,然后停车,停车时停车时间为5分钟,原有车辆停车时间加5分钟。进行分析时先打开文件检查停车车牌号是否为NULL,是的话就可以在该车位停车,否则就不行,应用FOR语句来保证第一层优先停车。停车后存储文件。
scanf(" %c", &a);
if(a== '1')
{
printf(" 请输入车牌号
fprintf(stderr,"error opening filen");
exit(1);}
for(j = 0;j
fprintf(fp,"car[%d].carNO = %dn car[%d].floor = %dn car[%d].position
=
%dn
car[%d].time = %dn",j,car[j].carNO,j,car[j].floor ,j,car[j].position,j,car[j].time);
fclose(fp);
printf("n");for(j = 0;j
{
for(k = 0;k
{
} if(park[j][k] ==0){park[j][k] = car[i].carNO;break;}
if(park[j][k] == car[i].carNO)
break;
}
car[i].floor = j+1;
car[i].position = k+1;
car[i].time = 5;
for(j = 0;j
car[j].time += 5;
printf(" 停车操作完成n ")5.取车模块
取车时,输入一车牌号,如果与文件中任何一个车牌号相同,便可以取车,并按一分钟0.2元算出停车费用,并且把该车停车记录从文件中删除。如果没有这个车牌号就给出提示。if(a== '2')
{
printf(" 请输入要离开车的车牌号: ");
scanf(" %d",&carNUM);
for(j = 0;j
{ if(carNUM == car[j].carNO){
fee =(float)car[j].time/5*0.2;
printf(" 车牌号为%d的停车费为:
" ,carNUM);printf("%fn",fee);printf("---n ");
park[j/6][j%6] = 0;
if((fp=fopen("car.dat","w"))==NULL)
{
fprintf(stderr,"error opening filen");
exit(1);}
for(k = 0;k
fprintf(fp,"car[%d].carNO = %dn car[%d].floor = %dn car[%d].position
=
%dn
car[%d].time = %dn",k,car[k].carNO,k,car[k].floor ,k,car[k].position,k,car[k].time);
for(++k;k
fprintf(fp,"car[%d].carNO = %dn car[%d].floor = %dn car[%d].position
=
%dn
car[%d].time = %dn",k,car[k].carNO,k,car[k].floor ,k,car[k].position,k,car[k].time);
fclose(fp);
printf("n");
}
} break;
if(j == i)
printf(" 没有此号码或者输入错误!n");
else continue;printf("---n ");
} 6.浏览模块
浏览即是输出所有停车车辆的所有信息 if(a== '3')
{
printf(" 停车场所有车辆信息如下: n ");printf(" 车牌号 层号 车位号 停车时间n ");for(j = 0;j
for(k = 0;k
{
if(park[j][k]!=0)
%d
%d
%d
n printf("%d ",car[j*6+k].carNO,car[j*6+k].floor,car[j*6+k].position,car[j*6+k].time);
else continue;
} }
if((fp=fopen("car.dat","w"))==NULL)
{
fprintf(stderr,"error opening filen");
exit(1);}
printf("---n ");
} 7.退出模块 if(a== '0')
{
printf(" pre any key to continue...");
break;四.实习心得
在老师的带领下进行了C语言程序实践学习。在短短一周的实习期间使我获取了不少新知识也巩固了许多老知识。在这之前,我们已经对C语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在学习了解的范围,对里面的好多东西还是很陌生,并不是很熟练,有着许多欠缺,更多的在运用起来的时候还是感到很不好动手。
C语言是需要有一定基础、而且动手能力强的学科。上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、巩固贯穿系统知识、掌握程序设计方法、提高程序设计能力,这些都必须通过充分的实际上机操作才能完成。
课堂上许多关于C语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用C语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握C语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,更加巩固了学过的知识,而且在设计的时候学要系统的知识,也是一个较大的挑战,某一方面知识的欠缺都将影响到整个程序的设计。
这次上机实习让我学到了很多有用的东西,巩固了之前的学习,让我学到了在教室和做题中学不到的一些知识,通过这个程序的学习,使我进一步理解和运用结构化程序设计的思想和方法。初步掌握开发一个小型实用系统的基本方法,学会调试一个比较长程序的基本方法,学会利用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。
我认为,这次实习对于我是非常有意义的,对我个人的影响比较大,对我的动手能力有了很大的提高。程序原代码:
#include #include
#define MAX 2 /*车库容量*/
#define price 0.2 /*每车每分钟费用*/
struct Car
/* 车的信息*/ { int carNO;int floor;int position;int time;}car[12];
int main(){
int i,j,k;int carNUM;float fee;/*计算停车费用*/
char a;
FILE *fp;
int park[2][6]={1001,1002,1003,1004,0,0,0,0,0,0,0,0};/*停车场状态 若为0表示车位空,否则值为carNO*/
/* 初始化已停车的信息------------*/ car[0].carNO = 1001;
car[0].floor = 1;
car[0].position = 1;
car[0].time = 20;car[1].carNO = 1002;car[1].floor = 1;car[1].position = 2;car[1].time = 15;car[2].carNO = 1003;car[2].floor = 1;car[2].position = 3;car[2].time = 10;car[3].carNO = 1004;car[3].floor = 1;car[3].position = 4;car[3].time = 5;
if((fp=fopen("car.dat","w"))==NULL){
fprintf(stderr,"error opening filen");
exit(1);}
for(i = 0;i
fprintf(fp,"car[%d].carNO = %dn car[%d].floor = %dn car[%d].position = %dn car[%d].time = %dn",i,car[i].carNO,i,car[i].floor ,i,car[i].position,i,car[i].time);fclose(fp);printf("n");/*初始化完毕---------------------------------*/
for(;;){
printf(" please choose: 1停车
2取车
3输出停车场中全部车辆的信息
0退出n");
scanf(" %c", &a);
if(a== '1')
{
printf(" 请输入车牌号: ");
scanf(" %d",&car[i].carNO);
for(j = 0;j
{
for(k = 0;k
{
if(park[j][k] ==0)
{park[j][k] = car[i].carNO;break;}
}
if(park[j][k] == car[i].carNO)
break;
}
car[i].floor = j+1;
car[i].position = k+1;
car[i].time = 5;
for(j = 0;j
car[j].time += 5;
if((fp=fopen("car.dat","w"))==NULL)/*将所有停车信息刷新后写出到car.dat*/
{
fprintf(stderr,"error opening filen");
exit(1);
}
for(j = 0;j
fprintf(fp,"car[%d].carNO = %dn car[%d].floor = %dn car[%d].position = %dn car[%d].time = %dn",j,car[j].carNO,j,car[j].floor ,j,car[j].position,j,car[j].time);
fclose(fp);
printf("n");
printf(" 停车操作完成n ");
printf("---n ");
++i;
}
else if(a== '2')
{
printf(" 请输入要离开车的车牌号: ");
scanf(" %d",&carNUM);
for(j = 0;j
{
if(carNUM == car[j].carNO)
{
fee =(float)car[j].time/5*0.2;
printf(" 车牌号为%d的停车费为:
" ,carNUM);
printf("%fn",fee);
printf("---n ");
park[j/6][j%6] = 0;
if((fp=fopen("car.dat","w"))==NULL)/*将所有停车信息刷新后写出到car.dat*/
{
fprintf(stderr,"error opening filen");
exit(1);
}
for(k = 0;k
fprintf(fp,"car[%d].carNO = %dn car[%d].floor = %dn car[%d].position = %dn car[%d].time = %dn",k,car[k].carNO,k,car[k].floor ,k,car[k].position,k,car[k].time);
for(++k;k
fprintf(fp,"car[%d].carNO = %dn car[%d].floor = %dn car[%d].position = %dn car[%d].time = %dn",k,car[k].carNO,k,car[k].floor ,k,car[k].position,k,car[k].time);
fclose(fp);
printf("n");
break;
}
}
if(j == i)
printf(" 没有此号码或者输入错误!n");
else continue;
printf("---n ");
}
else if(a== '3')
{
printf(" 停车场所有车辆信息如下: n ");
printf(" 车牌号 层号 车位号 停车时间n ");
for(j = 0;j
{
for(k = 0;k
{
if(park[j][k]!=0)printf("%d
%d
%d
%d n ",car[j*6+k].carNO,car[j*6+k].floor,car[j*6+k].position,car[j*6+k].time);
else continue;
}
}
if((fp=fopen("car.dat","w"))==NULL)/*将所有停车信息刷新后写出到car.dat*/
{
fprintf(stderr,"error opening filen");
exit(1);
}
printf("---n ");
}
else if(a== '0')
{
printf(" pre any key to continue...");
break;
}
else
{
printf(" input error!please input again!n");
printf("---n ");
}
} } 程序运行结果:
(1)对于停车模块的操作如下:输入“1”按下”enter”进入停车操作。根据提示输入车牌号,停车操作完成。数据运行结果见下图:
(2):这一部分是取车模块的操作。步骤类似于停车模块,具体操作如下:输入“2”按下”enter”进入停车操作。根据提示输入车牌号,取车操作完成。数据运行结果见下图:(图中分别取得车为1001号,1005号,1007号)
(3):这一部分是车辆信息浏览模块的内容。它的操作是在(1),(2)的基础之上的具体操作步骤如下:输入“3”按下”enter”进入停车操作。根据提示输入车牌号,车辆信息浏览模块操作完成。数据运行结果见
第6篇:停车场申请报告
申 请 报 告
尊敬的省体育局领导:
在当今深入学习实践 科学发展观,推进世界城市建设为主题,从建设人文交通、科技交通、绿色交通,把XX市建设成为世界城市的高度,推动科学发展,促进社会和谐的新形势下,我特此申请承包省体育局(XX、XX)的停车场。
1、承包后我会遵守国家法律按照市物价局的规定合理收费、文明收费,2、拒绝进场登记和安全查验或者酒后驾车。
34、按时交纳承包费和一切设施费。
5、按照文明城市的要求,车辆出场时清洗干净,适当进行装饰。
申请承包人:
身份证号号:
年月日
第7篇:停车场总结报告
停车场总结报告
工作快乐,时间过的就快,转眼间一个月就过去了。相关工作从生疏到熟练,具体总结如下:
一、设备问题:现停车场设备基本老化,维修次数逐渐增多,每次维修间隔时间逐渐缩短,建议在有可能的情况下更换一批常用易损设备。现以安排一些日常维护方案,使现有设备尽量可以保持更好的工作状态。具体,0
5、07岗亭电脑定期再凌晨客少时关闭半小时,使电脑得到休息,各岗亭机器每星期或半个月停止15分钟到30分钟。此方法可以阻止设备过快老化。管理处服务器电脑基本没有关闭过,由于电脑硬盘长期不间断使用也会过早老化,已定期备份,可以使突发故障时造成数据最小损失。
二、业务方面:一个月以来的具体观察,停车场还没有过车位以满的情况,也就是说车位一直有余富,如此一来可以考虑同意一些有两部车的业主申请两个车位,考虑到年底酒店开业,可以提前向业主说明本公司有权收回车位相关事宜,这样可以使停车场更有效的利用。停车场白天车位比较紧张,夜间比较宽裕,可以考虑夜间泊车优惠政策,例如晚10点以后进场的车,到早上8点给予半价优惠,如此可以更好利用闲置时间段的停车位。如此以来,每月可以增加一定效益额。
三、软件操作:对于办月卡软件,用习惯了也没什么太大问题,只
是软件的二次开发会有很大的局限性,一但有其他方面要求,软件很难实现。不过我会尽力用现有功能来实现所要求的。
停车场是盈利的,在盈利的情况下让盈利额更高才是我工作的目的,世上无难事,只怕有心人。我对现有的工作环境很满意,更好的业绩请领导拭目以待。
某某某
2009-8-3
