版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、设停车场内只有一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车出进。汽车在 停车场内按车辆到达的时间先后顺序, 依次由北向南排列 (大门在最南端, 最先到达的第一 辆车停放在车场的最北端) ,若车场内已停满 n 辆汽车,则后来的汽车只能在门外的便道上 等候, 一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在 他之后开入的车辆必须先退出车场为它让路, 待该辆车开出大门外, 其它的车辆在按原次序 进入车场, 每辆停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用。 试为 停车场编制按上述要求进行管理的模拟程序 编译环境: VC6.0 源代码:Hparki
2、ng.h #include #ifndef Hparking_H #define Hparking_H /汽车信息结点 struct Carchar ADinfor; / 车到达或离去的标志 string Carnumber; / 车牌号码 int ADtime;/ 车到达或离去的时刻;/便道汽车数据 struct BCarCar bcar; / 车的信息数据 BCar *next; /指向本身数据的一个指针 ;/停车场大类 class Parking public: Parking();Parking();void cararrive(); / 车刚到,即将分配位置 void Sroad(C
3、ar aCar);/ 南便道停车void Nroad(Car aCar);/北便道停车/显示整个车场的状况/接收刚到来的车/ 停车场动态一维数组栈void Sparkingin(Car aCar); / 南门进车 void Sparkingout(Car aCar); / 南门出车 void Nparkingin(Car aCar); / 北门进车 void Nparkingout(Car aCar); / 北门出车 void Allshow(); private: Car aCar; Car *park;/临时转车场动态一维数组栈 / 北门便道起始指针 /北门便道尾指针 / 南门便道起始指针
4、 /南门便道尾指针Car *parkrec;BCar *Northroad;BCar *Northtail;BCar *Southroad;BCar *Southtail;/停车场车位数/ 单位时间的停车费用/ 停车场栈南头指针/ 停车场栈北头指针/ 临时转车场栈头指针 / 出车时应缴的总费用int n;int fee;int Stop;int Ntop;int Temptop;int Sum;#endifMainparking.cpp#includeusing namespace std;#include Hparking.hint main()char m = 0;Parking park
5、ing;while(1)cout 操作选项 :endl; cout*endl; cout1进出车场操作 endl; 整个车场状况显示 endl; 退出 endl;*cout2cout3cout*endl;coutm;switch(m)case 1:parking.cararrive();break;case 2:parking.Allshow();break;case 3:break;default:cout 没有此选项 !endl; break;if (m = 3)break;return 0;North.cpp#includeusing namespace std;#include Hpa
6、rking.h/北门进车操作void Parking:Nparkingin(Car aCar)Ntop-;parkNtop.ADinfor = aCar.ADinfor;parkNtop.Carnumber = aCar.Carnumber; parkNtop.ADtime = aCar.ADtime;cout 车进入北门第 n - Ntop 个位置 ,;cout 进入停车场的时间是 aCar.ADtimeendl; /北门出车操作void Parking:Nparkingout(Car aCar)int time = 0;int j = 0;BCar *p;p =new BCar;while
7、(Ntop n)if(parkNtop.Carnumber = aCar.Carnumber)time = aCar.ADtime - parkNtop.ADtime;j = Ntop;Ntop+;/ deletecout 应缴纳的停车费 :time*fee= 0)Ntop-;parkNtop.ADinfor = parkrecTemptop.ADinfor;parkNtop.Carnumber = parkrecTemptop.Carnumber;parkNtop.ADtime = parkrecTemptop.ADtime;Temptop-;if(Stop + 2 = Ntop)if(No
8、rthroad-next != NULL & Southroad-next=NULL)Ntop-;p = Northroad-next;parkNtop.ADinfor = p-bcar.ADinfor;parkNtop.Carnumber = p-bcar.Carnumber;parkNtop.ADtime = aCar.ADtime;Northroad-next = p-next;delete p;if(Southroad-next != NULL & Northroad-next = NULL)Stop+;p = Southroad-next;parkStop.ADinfor = p-b
9、car.ADinfor;parkStop.Carnumber = p-bcar.Carnumber;parkStop.ADtime = aCar.ADtime;Southroad-next = p-next;delete p;if (Northroad-next != NULL & Southroad-next != NULL)if(Northroad-next-bcar.ADtime Southroad-next-bcar.ADtime)Stop+;p =Southroad-next;parkStop.ADinfor = p-bcar.ADinfor;parkStop.Carnumber =
10、 p-bcar.Carnumber;parkStop.ADtime = aCar.ADtime;Southroad-next = p-next;delete p;elseNtop-;p= Northroad-next;parkNtop.ADinfor = p-bcar.ADinfor; parkNtop.Carnumber = p-bcar.Carnumber; parkNtop.ADtime = aCar.ADtime;Northroad-next = p-next;delete p;/北门便道停车void Parking:Nroad(Car aCar)int i = 0;BCar *tem
11、p;BCar *p;temp = new BCar;p = Northroad;while(p != NULL)i+;p = p-next;cout 车将进入北门便道第 i 个位置 bcar.ADinfor = aCar.ADinfor;temp-bcar.ADtime = aCar.ADtime; temp-bcar.Carnumber = aCar.Carnumber; temp-next = NULL;Northtail-next = temp;Northtail = temp;Parking.cpp#includeusing namespace std;#include Hparkin
12、g.h/构造函数Parking:Parking()int i = 0;Temptop = -1;coutfee;cout n;Stop = -1;Ntop = n;park = new Car n;parkrec = new Car n;Northroad = new BCar;Northroad-next = NULL;Northtail = Northroad;Southroad = new BCar;Southroad-next = NULL;Southtail = Southroad;/车刚到的选择处理void Parking:cararrive()int i = 0;int j =
13、0;BCar *p;p = new BCar;char NS;cout 车的信息 ,包括 :endl;cout该车是到达(A)还是离去(D),车牌号码,车到达或离去的时间endl;cout例如:A 123456 12其中以空格间隔endl;cout输入:E 0 0表示输入完毕!endl;while(1)cout 请输入车的信息 :aCar.ADinfor;cinaCar.Carnumber;cinaCar.ADtime;if (aCar.ADinfor = E| aCar.ADinfor =e)break;else if (aCar.ADinfor = A|aCar.ADinfor=a)/排除
14、时间,车牌号码的逻辑错误if (Stop -1)if(parkStop.ADtime aCar.ADtime)cout 车到达时间输入有误 !( 时间要小于之前车辆到达的时间cout 重新输入车的信息 !endl;continue;for(i = 0;i = Stop;i+)if(parki.Carnumber = aCar.Carnumber)cout 车牌号码已经存在 ! 重新输入车的信息 !endl;j = 1;break;if (1 = j)continue;j = 0;if (Ntop aCar.ADtime)cout 车到达时间输入有误 !( 时间要小于之前车辆到达的时间cout
15、重新输入车的信息 !endl;continue;for(i = Ntop;i n;i+)if(parki.Carnumber = aCar.Carnumber)cout 车牌号码已经存在 ! 重新输入车的信息 !endl;j = 1;break;if (1 = j)continue;j = 0;)endl;)next != NULL) if(Southtail-bcar.ADtime aCar.ADtime)cout 车到达时间输入有误 !( 时间要小于之前车辆到达的时间 )endl; cout 重新输入车的信息 !next;while(p != NULL)if (p-bcar.Carnumb
16、er = aCar.Carnumber)cout 车牌号码已经存在 ! 重新输入车的信息 !next;if (1 = j) continue;j = 0;if (Northroad-next != NULL)if (Northtail-bcar.ADtime aCar.ADtime)cout 车到达时间输入有误 !( 时间要小于之前车辆到达的时间 )endl; cout 重新输入车的信息 !endl;coutnext;while(p != NULL)if (p-bcar.Carnumber = aCar.Carnumber)cout 车牌号码已经存在 ! 重新输入车的信息 !next;if (
17、1 = j)continue;/ 进出车场的操作 (包括进,出车场,进便道 ) doi = 0;cout 请选择车到来的方向 :endl; cout 北门 (North) 或南门 (South)endl; cout*endl;cout1 北门 (North)endl;cout2 南门 (South)endl; cout*endl;cout 请输入你选择的编号 :NS;if (NS != 1 & NS != 2)i = 1;cout 没有此选项 endl;while(i = 1);if (Stop + 1 = Ntop)cout 车场已满 ,车将进入便道 endl; switch(NS)case
18、 1:Nroad(aCar); break; case 2: Sroad(aCar); break;elseswitch(NS)case 1:Nparkingin(aCar); break;case 2:Sparkingin(aCar);break;default:break;else if (aCar.ADinfor = D|aCar.ADinfor=d)int judge = 0;int judge1 = 0;for(i = 0;i aCar.ADtime)cout 输入时间有误 (可能是离开时间小于到来时间 )endl;cout 检查输入信息,重新输入车的信息 endl; cout= N
19、top;i-)if(parki.Carnumber = aCar.Carnumber)if (parki.ADtime aCar.ADtime)cout 输入时间有误 (可能是离开时间小于到来时间 )endl;cout 检查输入信息,重新输入车的信息 endl; coutendl;judge1 = 1;break;elseNparkingout(aCar);judge = 1;break;if(judge1 = 1)continue;if (judge = 0)cout 此车场中没有牌号为 aCar.Carnumber 的车 ! 重新输入车的信息 !endl; elsecout 车的到达或离去
20、信息错误 ! 重新输入车的信息 !endl;/整个车场状况void Parking:Allshow()int i = 0;BCar *p;p = new BCar;if(Stop = -1)cout 南门入口未有车进入 endl;elsefor(i = 0;i = Stop;i+)cout 车位 : 南门第 i + 1 个位置 endl;cout 车牌号是 parki.Carnumberendl;cout 该车到达时间是 parki.ADtimeendl;coutendl;if (Ntop = n)cout 北门入口未有车进入 = Ntop;i-)cout 车位 : 北门第 n - i 个位置
21、 endl;cout 车牌号是 parki.Carnumberendl;cout 该车到达时间是 parki.ADtimeendl; coutnext;if (p = NULL)cout 南门便道没有车在等候 endl;elsewhile(p!=NULL)cout 南便道第 i + 1 位置 ;cout 车牌号 :bcar.Carnumberendl;cout 该车到达时间是 :bcar.ADtimenext; coutnext;if (p = NULL)cout 北门便道没有车在等候 endl;elsewhile(p!=NULL)cout 北便道第 i + 1 位置 ;cout 车牌号 :b
22、car.Carnumberendl;cout 进入北门便道时间是 :bcar.ADtimenext;coutnext != NULL)p = Northroad-next;Northroad-next = p-next;delete p;while(Southroad-next != NULL)p = Southroad-next;Southroad-next = p-next;delete p;delete Northroad;delete Southroad;South.cpp#includeusing namespace std;#include Hparking.h/南门进车操作voi
23、d Parking:Sparkingin(Car aCar)Stop+;parkStop.ADinfor = aCar.ADinfor;parkStop.Carnumber = aCar.Carnumber; parkStop.ADtime = aCar.ADtime;cout 车进入南门第 Stop + 1 个位置 ,;cout 进入停车场的时间是 aCar.ADtime= 0)if(parkStop.Carnumber = aCar.Carnumber)time = aCar.ADtime - parkStop.ADtime;j = Stop;Stop-;/ deletecout 应缴纳的
24、停车费 :time*fee= 0)Stop+;parkStop.ADinfor = parkrecTemptop.ADinfor; parkStop.Carnumber = parkrecTemptop.Carnumber; parkStop.ADtime = parkrecTemptop.ADtime;Temptop-;if(Stop + 2 = Ntop)if(Northroad-next != NULL & Southroad-next=NULL)Ntop-;p = Northroad-next;parkNtop.ADinfor = p-bcar.ADinfor;parkNtop.Carnumber = p-bcar.Carnumber; parkNtop.ADtime = aCar.ADtime;Northroad-next = p-next;delete p;if(Southroad-next != NULL & Northroad-next = NULL) Stop+;p = Southroad-next;parkStop.ADinfor = p-bcar.ADinfor; parkSto
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 政府单位采购规章制度
- 药品器械采购相关制度
- 外发采购流程管理制度
- 外协采购内部制度
- 国营企业采购制度
- 商品采购业务内控制度
- 敬老院采购内部控住制度
- 规范公司采购财务制度
- 学校自行采购装备制度
- 政务采购业务管理制度
- 2026年江苏经贸职业技术学院单招综合素质考试题库附答案详解
- 2026河北衡水恒通热力有限责任公司公开招聘工作人员28名笔试备考试题及答案解析
- 2026春统编版(新教材)小学道德与法治一年级下册(全册)各单元知识点复习课件
- 吉水县2026年面向社会公开招聘农村(社区)“多员合一岗”工作人员【146人】笔试备考试题及答案解析
- 2026年常州工业职业技术学院单招综合素质考试题库附答案详解(达标题)
- 2026届高考语文复习:古代诗歌鉴赏课件
- 《工程勘察设计收费标准》(2002年修订本)-完整版-1
- 有限公司450m3高炉项目初步设计安全专篇
- 热学李椿 电子
- 教学能力比赛决赛 《英语》教案
- 勘探监督手册测井分册
评论
0/150
提交评论