




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验二 停车场模拟管理系统一 题目内容:设停车场只有一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进 出。汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车 ,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道 上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道 ,在它之后开入的车辆必须先退出车场为它让路,待该车辆开出大门,为它让路 的车辆再按原次序进入车场。在这里假设汽车不能从便道上开走,试设计这样一 个停车场模拟管理程序。二 问题分析:(1)为了便于区分每辆汽车并了解每辆汽车当前所处的位置,需要记录汽车的 牌照号码和汽车的当前状态,所以为汽车定义一个新的类型CAR(2)由于车位是一个狭长的通道,所以不允许两辆车同时进入停车位,当有车到来要 进入停车位的时候车要顺次停放,当某辆车要离开时,比它后到的车要先暂时离开 停车位,而且越后到的车就越先离开停车位,显然这和栈的“后进先出”特点相吻合, 所以可以使用一个栈来描述停车位。由于停车位只能停放有限的几辆车,而且为了便于停车场的管理,要为每个车 位分配一个固定的编号,不妨设为1、2、3、4、5(可利用数组的下标),分别表示停 车位的1车位、2车位、3车位、4车位、5车位,针对这种情况使用一个顺序栈比较方(3)当某辆车要离开停车场的时候,比它后进停车位的车要为它让路,而且当它开走之后,让路的车还要按照原来的停放次序再次进入停车位的某个车位上,为了完成这项功能,再定义一个辅助栈,停车位中让路的车依次“压入”辅助栈,待提出请求的车开走后再从辅助栈的栈顶依次“弹出”到停车位中,对辅助栈也采用顺序栈,具体定义与停车位栈类似,(4)功能函数STOPPING * init_stopping() 初始化“停车位栈” BUFFER * init_buff() 初始化“辅助栈” PAVEMENT * init_pavement() 初始化“便道队列” Int car_come(int pos) 将pos指定的汽车信息输入“停车位栈” ,并修改该车状态 Int car_leave(int pos) 将pos指定的汽车信息从“停车位栈”删除,并修改该车状态 Int stop_to_buff(int pos) 将pos指定的汽车信息从“停车位栈”移动到“辅助栈” Int buff_to_stop(int pos) 将pos指定的汽车信息从“辅助栈”移动到“停车位栈” Int pave_to_stop(int pos) 将pos指定的汽车信息从“便道队列”移动到“停车位栈” Int car_disp(int pos) 将pos指定的汽车信息显示在屏幕上三,程序设计/ 停车场管理.cpp : Defines the entry point for the console application./#include#includestdio.h #include #include#include #include #include /#define STACKSIZE1 4/*停车场容量STACKSIZE1-1个位*/#define STACKSIZE2 10/*临时停车场容量*/#define maxqueue 4 /只能存maxqueue-1个在便道#define null 0/#includeCarinfo.h#define LEN sizeof(struct Carinfo)#includeSqstack.h#includetempstack.h#includeQueue.h#includeReach.h#includeLeave.h#includeDisppark.h#includeDisppave.h#includeputininfo.h/*-车辆登记-*/void putininfo(Carinfo *car,Sqstack *park)/char ch128;/char timestr128;if(!car)cout分配空间失败!endl;elsecout分配空间成功!可以登记停车。clock_treach);/printf(n请输出站时间:n);/scanf(%d,&car-clock_tleave);time_t t;memset(car-clock_treach,0x0,25);/将内存设为指定字符 time(&t);sprintf(car-clock_treach,%s, ctime(&t);/printf(TIME:%s,car-clock_treach);/ofstream out1(c:test.txt,ios:app);/out1clock_treach=(int)ch;/ timestr=ch;/coutordercode=park-getnum();printf(n欢迎进入!请输入车牌号(6位):n);scanf(%s,&car-lisence);/*-便道类型*-*/class Queueprivate:int i;public:Carinfo *itemsmaxqueue;int top3;friend class Sqstack;friend class tempstack;friend int Leave(Sqstack *park,tempstack *tmp,Queue *pave);Queue()top3=0;int queuein(Carinfo *car)if(top3+1)maxqueue)top3+;itemstop3=car;cout已经进入便道!endl;return 1;else cout便道已满!endl; return 0;Carinfo * queueout()Carinfo *temp;temp=items1;for(i=1;iordercode-;top3-;return temp;/到达车辆信息 void Reach (Sqstack *park,Carinfo *car,Queue *pave)/*?*/ Carinfo *temp=new Carinfo;/temp-clock_tleave=car-clock_tleave;/ temp-clock_treach=car-clock_treach; strcpy(temp-clock_treach,car-clock_treach); strcpy(temp-lisence,car-lisence); if(car-ordercode) temp-ordercode=car-ordercode; else temp-ordercode=pave-top3+1; if(park-push1(park,temp)cout?endl;else cout?queuein(temp);/*- 停车场类型-*/class Sqstackprivate:public:int top1;int numSTACKSIZE1;friend class tempstack;friend class Queue;friend int Leave(Sqstack *park,tempstack *tmp,Queue *pave); Carinfo * items1STACKSIZE1; Sqstack()for(int i=0;i=STACKSIZE1-1) /停车场已满/printf(停车场已满,请进入便道等待。nn);return 0;else /停车场未满,进入停车场int i=top1+1;while(i!=1&car1-ordercodeordercode) items1i=items1i-1; i-;items1i=car1;/numi=1;top1+;return 1;Carinfo * pop1()Carinfo *temp;if(top1!=0)temp=items1top1;top1-;return temp; int getnum()for(int i=1;i=STACKSIZE2-1)/printf(临时停车场已满,请去别处停车。nn);return 0;else/printf(临时停车场未满,进入临时停车场nn);top2+;items2top2=car2;return 1;Carinfo * pop2()Carinfo *temp;if(top2!=0)temp=items2top2;top2-;return temp;/- -/struct Carinfochar lisence6; /车辆信息int ordercode; /汽车进站设置的编号 char clock_treach25; char clock_tleave25;/(3)显示停车场信息-void Disppark(Sqstack *park) /显示停车场信息int i;printf(nnnn);if(park-top1=0) /停车场内没有车辆printf(停车场内没有车辆);elseprintf(这是站内所停车辆信息:n);printf(-n);for(i=1;itop1;i+)printf(n车牌号 到达时间 n);printf(%sttt,park-items1i-lisence);/printf(%s,park-items1i-clock_treach); /printf(t%dt,park-items1i-clock_tleave); printf(n停车序号 n);printf(%dn,park-items1i-ordercode);printf(nn);printf(-n);printf(nnnn);void Disppave(Queue *pave)/?int i;printf(nnnn);if(pave-top3=0)printf(?n);elseprintf(3?:n);printf(-n);for(i=1;itop3;i+)printf(n? ? n);printf(%st,pave-itemsi-lisence);/printf(t%st,pave-itemsi-clock_treach);/printf(t%dt,pave-itemsi-clock_tleave);printf(n?n);printf(%dn,pave-itemsi-ordercode);printf(nn);printf(-n);printf(nnnn);/(2)车辆离开函数-int Leave(Sqstack *park,tempstack *tmp,Queue *pave)Carinfo *c;Carinfo *b;Carinfo *d;Carinfo *e;int locate;if(park-top1!=0)printf(n请输入离开车辆的停车编号:);scanf(%d,&locate);if(!park-checknum(locate) printf(n 不存在该车!); return 0;while(park-items1park-top1-ordercodelocate)/排在离开车辆之前的车辆进入临时栈b=park-pop1();if(!b)b=new Carinfo;coutb NULLordercodelisence,b-ordercode);tmp-push2(tmp,b);c=park-pop1();/离开车辆信息if(!c)coutc NULLordercode);/printf(t%st,c-clock_treach);printf(n车牌号 n);printf(%s,c-lisence);time_t t;memset(c-clock_tleave,0x0,25);/将内存设为指定字符 time(&t);sprintf(c-clock_tleave,%s, ctime(&t); /printf(TIME:%s,c-clock_tleave);/printf(tt%sn,c-clock_tleave);park-leavenum(c-ordercode); printf(n车牌号为%s的汽车离开%d停车位n,c-lisence,c-ordercode);/如果停车场不满,而便道上不空,则便道上的车辆进入停车场while(pave-top30&park-top1getnum()break;e=pave-queueout();e-ordercode=n;printf(便道上的%s号车进入第%d个停车位.n,e-lisence,e-ordercode);if(!e)coute NULLpush1(park,e); if(!(pave-top30) printf(便道上已没有车。n);while(tmp-top20)/排在离开车辆之前的车辆从临时栈回到停车场d=tmp-pop2();if(!d)d=new Carinfo;coutd NULLlisence,d-ordercode);park-push1(park,d);retu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年海东市消防救援支队招聘消防文员笔试真题
- 空气质量生物地球化学-洞察及研究
- 腰椎间盘突出护理个案讲课件
- 2024风力发电企业运行交接班、巡回检查、设备定期试验和轮换工作管理办法
- 虚拟摄影系统-洞察及研究
- 异位妊娠药物治疗护理查房讲课件
- 提升客户体验的餐饮业营销策略
- 建筑用高性能混凝土的研究与进展
- 提升教育培训机构教师团队的教学能力
- 拼多多的客户服务体系优化研究
- 火焰原子吸收光谱法测定铜的含量结果分析
- AQ∕T 7009-2013 机械制造企业安全生产标准化规范
- 医疗废物的分类与管理
- 江苏泰州市:2024年小升初英语模拟卷(B)(译林版三起)
- 六年级下册语文试题-“快乐读书吧”练习题|部编版(含答案)
- 国家开放大学《Python语言基础》实验9:函数定义和调用参考答案
- 高速公路交通事故处理流程与责任认定
- 观光电梯方案
- 国开 0-3岁婴幼儿的保育与教育形考任务一~四参考答案
- 混凝土箱涵技术规程
- 电力电子技术在电力系统中的应用
评论
0/150
提交评论