第一篇:实习报告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
//--------停车场容量----------------#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 cout<<“车牌号为”< 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;cout<<“车牌号为”< //--------将栈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;cout<<“便道上车牌为”< } } 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;cout<<“停车场状况:”< } else cout<<“停车场没有车辆”< } else cout<<“便道没有车辆”< 车牌”< ”< num< 车牌”< ”< InitQueue_L(q);cout<<“-----------------------停车场管理程序----------------------n”;do{ cout<<“1--查看停车场状况 2--车辆到达 3--车辆离开 4--程序结束n”;cout<<“请选择:”;cin>>ch1;switch(ch1){ case '1': Display(s1,q);break;cout<<“输入车牌号:”;cin>>x.num;cout<<“输入时间(hh:mm)”;cin>>x.hh.hour;cin>>ch2;{ };while(ch2!= ':');cin>>x.mm.min;Incar(s1,q,x);cout<<“-n”;break;cout<<“输入车牌号:”;cin>>x.num;cout<<“输入离开时间(hh:mm)”;cin>>x.hh.hour;cin>>ch2;{ };while(ch2!= ':');cout<<“输入离开时间(小时:分钟)”;cin>>x.hh.hour;cin>>ch2;cout<<“输入到达时间(小时:分钟)”;cin>>x.hh.hour;cin>>ch2; cout<<“-n”;case '2': while(ch2!= ':')case '3': while(ch2!= ':') } } cin>>x.mm.min;Outcar(s1,s2,q,x,y);cout<<“-n”;break;cout<<“程序结束”< } 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.数据输入后,测试车辆的离开 详细数据如下: 测试后,达到预期的效果,程序通过调试。 五.实习总结: 本次实习程序比较大,要理清思路才能快速的完成。通过这次实习,让我更加了解栈与队列等算法。 物业停车场管理程序 1.0 目的 通过对停车场进行有效管理,确保小区内车辆(汽车、摩托车、单车)停放安全有序。2.0 范围 本程序适用于物业集团所辖各物业公司(管理处)管理区域内车辆停放管理。3.0 职责 3.1 保安部收费员负责办理、发放停车场停车卡,收取停放车辆的车位使用费。3.2 车库岗负责日常车辆的进出、停放、登记等管理。 3.3 各单位保安部负责人负责对车辆的进出、停放、登记等工作进行检查、监督。4.0 工作内容 4.1 车辆管理服务登记 4.1.1 机动车辆需要办理车辆车位使用卡时,由收费主管通知车主到保安部以月、季、年为单位交纳汽车车辆车位使用费、领取车辆停车卡。收费主管根据缴费情况填写《停车卡发放登记表》。4.2 车辆停放管理 4.2.1 汽车停放管理 4.2.1.1 为方便汽车停放,辖区内设置车库,临时停车地点。 4.2.1.2 保安部执勤人员管理车辆的进入及停放,月卡车辆由保安部执勤人员及收费员按《停车场管理工作标准》执行。4.2.2 摩托车、单车停放管理 4.2.2.1 各单位设置摩托车、单车的停放区,保安部执勤人员负责摩托车、单车管理,摩托车、单车停放时凭车位卡停放。4.3 车辆驶出小区停放区的管理 4.3.1 汽车驶出 汽车驶出时,有车辆车位卡的车辆,由保安部收费员收回车辆进出卡,没有车辆车位卡的车辆由收费员按照进出时间收取费用,并做好登记,填写《保安部值班记录》。4.3.2 业户取摩托车、单车需凭卡取车。 4.3.3 保安部中队长每日对车库、露天车辆场所工作进行一次检查,并记录在《车辆管理工 交通工程学 停车场调查实习报告 班级: 姓名:熊健 学号: 区域:西宁市城西区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、问题及建议 该停车场的问题就在于面积太小了,停几辆就感觉很拥挤了。严重影响了进出华山医院和农业银行的市民的活动。 应在这架一个机械停车楼,以解决地小车多的问题,可适当收费。这样还可吸引其他地方的车辆停放,一定程度上缓解其他地块的停车压力。 八、调查后记 三天的调查实习让我对课本上停车场部分的知识有了新的认识。调查目的不重在对课本上的知识进行重复、验证,而重在于调查的过程中发现问题,提出自己的主张与建议,乃至收获对自己的全新认识。 我调查的主要是五四大街、海湖路与新宁路围成的这个大区域,主要调查了两类停车场:配建停车场与地下停车场。在调查中我就发现配建停车场中的车辆由于无泊车位分划的原因多停得不规范,有的甚至停得“横七竖八”的,停发方式也走“自由主义”路线,虽也有专门人员负责,但仍显无章法之态。有的配建停车场干脆连负责人都欠奉。而地下停车场存在的主要问题在消防、排水与照明这三块,特别是消防设施欠奉让人很揪心啊! 另外,在三天的调查里,我也算是历练了自己:有针对性地向停车场的管理人员询问,与他们侃大山;独立、有效地组织对自己区域的停车场的调查;每天调查完之后进行这一天成果的总结,包括分析数据、停车场场景重现及问题的总结与处理„„ 人说“纸上得来终觉浅,绝知此事须躬行”,诚如是。在这三天的“躬自力行”中,我不仅巩固了所学,更发现了问题,锻炼了自己„„ 8D报告管理程序 一、范围: 该方法适用于解决各类可能遇到的简单或复杂的问题。8D方法就是要建立一个体系,让整个团队共享信息,努力达成目标;8D本身不提供成功解决问题的方法或途径,但它是解决问题的一个很有用的工具。 二、目标 提高解决问题的效率,积累解决问题的经验;提供找出现存的与质量相关问题的框架,杜绝或尽量减少重复问题出现。 8D格式的原则是针对出现的问题,找出问题产生的根本原因,提出短期,中期,和长期对策,并采取相应行动措施。 三、定义 (1)8D(8 Disciplines)方法包含8个解决问题的步骤;它基于使用描述工具、格式化、分析、量化等工具,从而提供彻底解决问题的指引。 (2)问题: 被发现的具体问题,它包括: a、与正常状况相比,属于失常的现象,在这种情况下,需要予以纠正,使其恢复初始正常状况。 b、为提高质量的目的而改变目前的状况。 (3)纠正措施:(按ISO8402标准定义)针对现存的不合格项或缺陷所采取的纠正措施,并杜绝或尽量减少重复问题出现。 (4)预防措施:(按ISO8402标准定义)针对潜在的不合格项或缺陷所采取的纠正措施,并杜绝或尽量减少重复问题出现。 四、在下列情形中须提交8D报告: (1)当客户在工厂现场的稽核中发现不合格项或缺陷时,对于严重不良,主要不良及重复发生的次要不良须提交8D报告。 (2)OQC发现严重不良,主要不良及重复发生的次要不良时须提交8D报告。 (3)当市场上发现有重复发生的产品缺陷时须提交8D报告。 (4)当ORT测试过程中发现缺陷时须提交8D报告。 (5)IPQC在同一生产现场连续发现三个位置相同不良现象或三个原因相同不良现象。 (6)要对那些需要长期纠正措施来解决的缺陷采取行动时,须提交8D报告。 (7)被相关程序文件明确要求提交8D报告时。 五、提交报告时间要求: (1)在发现问题的24小时内,提交包含所采取的暂时措施描述的8D报告。 (2)在发现问题的72小时内,提交包含问题发生原因的初步分析的8D报告。 六、结论: 8D格式用于监控解决问题的过程,它不是一个详尽的报告或复杂的分析,描述工具,而是一个包含了解决问题的每个步骤的集合,因而可从其中找到经提炼的基本信息。 七、8D步骤 D1-第一步骤: 团队成员 若问题无法独立解决,通知你认为有关的人员组成团队。团队的成员必需有能力执行,例如调整机器或懂得改变制程条件,或能指挥作筛选等。D2-第二步骤: 问题描述 向团队说明何时、何地、发生了什么事、严重程度、目前状态、如何紧急处理、以及展示照片和收集到的证物。想象你是FBI的办案人员,将证物、细节描述越清楚,团队解决问题将越快。 D3-第三步骤:临时对策 若真正原因还未找到,暂时用什么方法可以最快地防止问题?如全检、筛选、将自动改为手动、库存清查等。暂时对策决定后,即立刻交由团队成员带回执行。D4-第四步骤: 根本原因 找问题真正原因时,最好不要盲目地动手改变目前的生产状态,先动动脑。您第一件事是要先观察、分析、比较。列出您所知道的所有生产条件(即鱼骨图),逐一观察,看看是否有些条件走样,还是最近有些什么异动?换了夹具吗?换了作业员?换了供应商?换了运输商?修过电源供应器?流程改过? 或比较良品与不良品的检查结果,看看那个数据有很大的差?,尺寸?重量?电压值?CPK?耐电压?等等不良的发生,总是有原因,资料分析常常可以看出蛛丝马迹。这样的分析,可以帮助您缩小范围,越来越接近问题核心。 当分析完成,列出您认为最有可能的几项,再逐一动手作些调整改变,并且观察那一些改变可使品质回复正常及影响变异的程度,进而找到问题真正的原因。这就是著名田口式方法最简单而实际的运用。 D5-第五步骤: 纠正行动 找到造成问题的主要原因后,即可开始拟出对策的方法。对策的方法也许有好几种,例如修理或更新模具。试试对可能的选择列出其优缺点,要花多少钱?多少人力?能持续多久? 再对可能的方法作――最佳的选择,并且确认这样的对策方法不会产生其它副作用。 D6-第六步骤: 效果验证 当永久对策准备妥当,则可开始执行及停止暂时对策。并且对永久对策作一验证,例如观察不良率已由4000 PPM降为300 PPM,CPK由0.5升为1.8等,下游工段及客户己能完全接受,不再产生问题。 D7-第七步骤: 预防措施 对类似的其它生产,虽然尚未发生问题,亦需作同步改善,防止再发,即我们说的”他石攻错”。同时这样的失效,也应列入下一产品研发段的FMEA中予以验证。 D8-第八步骤: 结案确认: 关注的问题被解决、确认、核实以及被权威人士审核签名通过并存盘。 实习报告 题目:停车场管理 班级:计算机学院12052313 姓名:卢魏旭 学号:12051521 完成日期:2012年10月 一、需求分析 以栈模拟停车场,以队列模拟停车场以外的便道,每一组输入的数据包括三个数据项:汽车“到达”或“离去”的信息,汽车牌照号码以及到达或者离去的时刻,对每一组数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应缴纳的费用(在便道上不计费),栈以顺序结构实现,队列以链表结构实现。 附加要求,便道上的车可以直接开走,此时排在它前面的汽车先让开,再一次排到队尾。 二、概要设计 为实现上述程序功能,以顺序存储结构实现栈的功能,也就是停车场,栈的抽象数据类型定义为: ADTStack { 数据对象:D={a|ai<-ElemSet,i=1,2,3„n} 数据关系:R1={ 操作结果:将车牌号及时间入栈,返回位置pos Popstack($S,num,&time)初始条件:栈S存在 操作结果:取出栈内元素 } 此外以链式存储结构实现队列的功能,也就是便道 队列的抽象数据类型定义为: ADT Quene { 数据对象:D={a|ai<-ElemSet,i=1,2,3„n} 数据关系:R1={ 基本操作: creatquene(&Q) 操作结果:建立一个空队列 Pushquene(&Q,num) 初始条件:队列Q存在 操作结果:将一个元素入队列 Popquene(&Q,num) 初始条件:队列Q存在 操作结果:从队列中取出一个元素 } 三、详细设计 #include 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)验收结束。第二篇:物业停车场管理程序
第三篇:停车场调查实习报告
第四篇:8D报告管理程序
第五篇:上机实习报告—停车场管理