




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.停车场管理系统实验目的综合运用线性表、队列、排序、随机数等数据结构知识,掌握并提高分析、设计、实现及测试程序的综合能力。实验内容及要求停车场拥有M个车位和一条进入停车场的便道,便道上最多停放N辆汽车。汽车要想进入车位,首先进入便道等候。若有空闲车位,则停车入位,否则在便道继续等候,直至有车位空出。若便道已经停满等候的汽车,后到达的汽车只能离开,选择其他停车场。设计一个停车场管理系统,模拟停车场的运作,并统计停车场的收入。(1) 使用随机数产生某一时间段内进入和离开停车场的车辆数目;(2) 存储并记录如下数据项:汽车到达和离去的时间及汽车的车号;(3) 车辆到达时,提示汽车的停车位置编号(为车辆分配编号最小的可用车位),若车位已满给出相应提示;(4) 汽车离去时,输出汽车在停车场内停留的时间和应交纳的费用。(5) 对该停车场进行统计:统计每天到达、离开的车次,停车总时数、每天停车场的收入等。测试数据M=30,N=5,以1小时为时间的最小单位,每小时停车费30元,每小时到达的车辆数目在0-20辆之间均匀分布,车辆停留1小时后离开的概率是25%,每多停留1小时后离开概率增加25%,4小时后一定要离开。一天以24小时计算。实现提示用队列模拟便道,可用车位需按照编号排序,申请车位时分配编号最小的车位,可用车位动态变化,选择排序方法时应考虑算法效率。#include #include #include #include using namespace std;/*车位*/class chewei private:bool biaozhi; /用来标识车位是否被占用int intime,outtime; /车位上的车辆的进站时间和出站时间int zongshijian,zongfeiyong; /该车位上总时间和产生的总费用int zongchel; /总共离开车辆数int chepai; /在该车位上停车的车辆的车牌号int time; /车辆停留时间public:chewei()biaozhi=true;intime=0;zongshijian=0;zongfeiyong=0;zongchel=0;void shezhibz()biaozhi=false; /判断该车位上是否有车void shezhicp(int cp)chepai=cp; /车到来的时候将车牌号改为该车的车牌号void incar(int cp,int sj); /车辆进入void outcar(int sj); /车辆出来int tingliusj(int t); /查看该车的停留时间int alltime(); /总时间int allcost(); /总费用int allcar();void chewei:incar(int cp,int sj)biaozhi=false;chepai=cp;intime=sj;void chewei:outcar(int sj)int time,feiyong;time=sj-intime;feiyong=time*30;biaozhi=true;cout车牌号为: chepaiendl;cout进入车库时间为: intimeendl;cout离开车库时间为: sjendl;cout停车时间为: timeendl;cout需缴纳停车费为: feiyongendlendl; ofstream outfile(jilu.txt,ios:app);outfile车牌号为: chepaiendl;outfile进入车库时间为: intimeendl;outfile离开车库时间为: sjendl;outfile停车时间为: timeendl;outfile需缴纳停车费为: feiyongendlnext=NULL;void kongche(int item); /将空车位插入其中int shanchu(); /车位被占就从中删除它int changdu()return length; /空闲车位的总量;void kycw:kongche(int item) /按照从小到大的顺序将空车位插入其中ky * p, * q;p=head-next;length+;if(p=NULL)head-next=new ky(item,NULL);else if(p-haomaitem)head-next=new ky(item,p);elsewhile(p-next!=NULL)&(p-haomanext;if(p-next=NULL)&(p-haomaitem)q=head-next;while(q-next)-next!=NULL)q=q-next;q-next=new ky(item,p);else p-next=new ky(item,p-next);int kycw:shanchu() /弹出最小的车位ky * p;length-;p=head-next;int a;a=p-haoma;head-next=p-next;return a;/*便道*/struct nodeint data;node *next; node(node *nextnode=NULL)next=nextnode;node(int item,node *nextnode=NULL)data=item;next=nextnode;class biandaoprivate:node *head;int length;public:biandao()head=new node();length=0;bool isempty() /判断便道是否为空return head-next=NULL;int changdu() /便道中剩余车辆return length;void jinrubiandao(int cp); /车辆进入便道int jinrucheku();void biandao:jinrubiandao(int cp) /车辆进入便道node *p;p=head;length+;while(p-next!=NULL)p=p-next;p-next=new node(cp,NULL);int biandao:jinrucheku() /便道最前端的车进入停车位,记下车牌号length-;node *p;int c;p=head;c=p-next-data;head-next=(p-next)-next;return c;/*主程序*/int main() int M=4;int N=2;chewei cw4;biandao bd;kycw keyong;int chep500;int t,number,number1,number2,i,j,k,l,m,c,cphao;cphao=1;coutendlendl;cout 车位数为: 4endl;cout 便道数为: 2endl; cout 每小时停车费用为: 30元endlendl; ofstream outfile(jilu.txt,ios:app);outfile 车位数为: 4endl;outfile 便道数为: 2endl; outfile 每小时停车费用为: 30元endlendl;for(i=0;iM;i+)keyong.kongche(i);for(i=0;i500;i+)chepi=i;for(t=0;t5;t+)i=0;j=0;k=0;l=0;coutendlendl;cout*t小时*endl;outfileendlendl;outfile*t小时*endl;for(m=0;mM;m+) if(cwm.tingliusj(t)=1) /停车时间为一小时的车,25%离开车库i=rand()%4; if(i=0) cout停车位为: mendl; ofstream outfile(jilu.txt,ios:app);outfile停车位为: mendl;cwm.outcar(t);keyong.kongche(m);if(cwm.tingliusj(t)=2) /停车时间为二小时的车,50%离开车库 j=rand()%4;if(j2) cout停车位为: mendl; ofstream outfile(jilu.txt,ios:app);outfile停车位为: mendl;cwm.outcar(t);keyong.kongche(m);if(cwm.tingliusj(t)=3) /停车时间为三小时的车,75%离开车库k=rand()%4;if(k3)cout停车位为: mendl; ofstream outfile(jilu.txt,ios:app);outfile停车位为: mendl;cwm.outcar(t);keyong.kongche(m);if(cwm.tingliusj(t)=4) /停车时间为四小时的车,100%离开车库cout停车位为: mendl; ofstream outfile(jilu.txt,ios:app); outfile停车位为: mendl;cwm.outcar(t);keyong.kongche(m);number1=keyong.changdu(); /可用车位的数量number2=bd.changdu(); /便道中剩余车辆j=rand()%6; /随机产生该小时来停车场的车辆cout第t小时来停车场的车辆数量为: jendlendl; ofstream outfile(jilu.txt,ios:app);outfile第t小时来停车场的车辆数量为: jendlendl;if(number2number1) /可用车位比便道中车辆数量多 for(i=0;inumber2;i+) /清空便道c=bd.jinrucheku(); /取出从便道中进入车库的车牌number=keyong.shanchu(); /找到可用车位中号码最小的,并从可用车位中删除cwnumber.incar(c,t); /将该车位状态更新 number1=number1-number2; /剩余的可用车位 if(j=number1) /如果该小时来停车库的车辆少于或等于剩余可用车位 for(i=0;ij;i+)number=keyong.shanchu();cwnumber.incar(chepcphao,t);cphao+; else /如果该小时来停车库的车辆比剩余可用车位多 k=j-number1; for(i=0;inumber1;i+) number=keyong.shanchu(); /找到可用车位中号码最小的,并从可用车位中删除 cwnumber.incar(chepcphao,t); /将该车位状态更新cphao+; for(i=0;ik;i+)if(i=N)cout本车库已满.请去其他停车场停车endl;outfile本车库已满.请去其他停车场停车endl;else /可用车位比便道中车辆数量少或者相等 for(i=0;inumber1;i+) /清理便道 c=bd.jinrucheku(); /取出从便道中进入车库的车牌number=keyong.shanchu(); /找到可用车位中号码最小的,并从可用车位中删除cwnumber.incar(c,t); /将该车位状态更新for(i=0;ij;i+)if(i=N)cout本车库已满.请去其他停车场停车endl; outfile本车库已满.请去其他停车场停车endl;int Alltime=0;int Allcost=0;int Allcar=0;for(i=0;iM;i+)Alltime=Alltime+cw
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时间的顺序课件
- 时间数列课件
- 物质转化教学课件
- 小熊的帽子课件
- 二零二五年图书馆老鼠防治与文献资料保护服务协议
- 时事新闻课件
- 二零二五版跨国合作设立电商分公司合同示范文本
- 旭日弘文自我介绍课件
- 2025版防火门市场调研与数据分析服务合同范本
- 二零二五年度高速公路机电工程开关差插座专业供应合同
- 三升四数学综合练习(60天)暑假每日一练
- 宁德新能源verify测试题库
- (正式版)JBT 3300-2024 平衡重式叉车 整机试验方法
- FZ/T 62025-2015卷帘窗饰面料
- 《等腰三角形的性质》优秀课件
- 建筑工人出勤表
- 加油站打散油证明模板
- c51e四门两盖耐久试验大纲
- 16竞品信息技术参数表
- 糖皮质激素性骨质疏松诊疗进展
- 中药材、中药饮片养护记录表
评论
0/150
提交评论