《2022年停车场管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年停车场管理系统 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、停车场管理系统实验目的 综合运用线性表、队列、排序、随机数等数据结构知识,掌握并提高分析、设计、实现及测试程序的综合能力。实验内容及要求 停车场拥有M 个车位和一条进入停车场的便道,便道上最多停放N 辆汽车。汽车要想进入车位,首先进入便道等候。若有空闲车位,则停车入位,否则在便道继续等候,直至有车位空出。若便道已经停满等候的汽车,后到达的汽车只能离开,选择其他停车场。设计一个停车场管理系统,模拟停车场的运作,并统计停车场的收入。(1)使用随机数产生某一时间段内进入和离开停车场的车辆数目;(2)存储并记录如下数据项:汽车到达和离去的时间及汽车的车号;(3)车辆到达时,提示汽车的停车位置编号(为车
2、辆分配编号最小的可用车位),若车位已满给出相应提示;(4)汽车离去时,输出汽车在停车场内停留的时间和应交纳的费用。(5)对该停车场进行统计:统计每天到达、离开的车次,停车总时数、每天停车场的收入等。测试数据 M=30,N=5,以 1 小时为时间的最小单位,每小时停车费30 元,每小时到达的车辆数目在 0-20 辆之间均匀分布,车辆停留1 小时后离开的概率是25%,每多停留1 小时后离开概率增加25%,4 小时后一定要离开。一天以24 小时计算。实现提示 用队列模拟便道,可用车位需按照编号排序,申请车位时分配编号最小的车位,可用车位动态变化,选择排序方法时应考虑算法效率。#include#inc
3、lude#include#include using namespace std;/*车位*/class chewei private:bool biaozhi;/用来标识车位是否被占用int intime,outtime;/车位上的车辆的进站时间和出站时间int zongshijian,zongfeiyong;/该车位上总时间和产生的总费用名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 10 页 -int zongchel;/总共离开车辆数int chepai;/在该车位上停车的车辆的车牌号int time;/车辆停留时间public:chewei()biaozhi=true;
4、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,i
5、nt 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;
6、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
7、ky(item,NULL);else if(p-haomaitem)head-next=new ky(item,p);else while(p-next!=NULL)&(p-haomanext;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 10 页 -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
8、-;p=head-next;int a;a=p-haoma;head-next=p-next;return a;/*便道*/struct node int data;node*next;node(node*nextnode=NULL)next=nextnode;node(int item,node*nextnode=NULL)data=item;next=nextnode;class biandao private:node*head;int length;public:biandao()head=new node();名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 10 页 -
9、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()/便道最前端的车进入停车位,记下车牌号
10、 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;名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 10 页 -coutendlendl;cout 车位数为:4endl;cout 便道数为:2endl;cout 每小时
11、停车费用为: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
12、)=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);名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 10 页 -outfile 停车位
13、为: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
14、停车位为: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.jinru
15、cheku();/取出从便道中进入车库的车牌number=keyong.shanchu();/找到可用车位中号码最小的,并从可用车位中删除cwnumber.incar(c,t);/将该车位状态更新 number1=number1-number2;/剩余的可用车位名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 10 页 -if(j=number1)/如果该小时来停车库的车辆少于或等于剩余可用车位 for(i=0;ij;i+)number=keyong.shanchu();cwnumber.incar(chepcphao,t);cphao+;else /如果该小时来停车库的车辆比剩余
16、可用车位多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.shan
17、chu();/找到可用车位中号码最小的,并从可用车位中删除cwnumber.incar(c,t);/将该车位状态更新 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 10 页 -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+cwi.alltime();Allcost=Allcost+cwi.allcost();Allcar=Allcar+cwi.allcar();cout 总共离开车辆数:Allcarendl;cout 停车场总停车时间为:Alltimeendl;cout 停车场总营业额为:Allcostendl;outfile 总共离开车辆数:Allcarendl;outfile 停车场总停车时间为:Alltimeendl;outfile 停车场总营业额为:Allcostendl;outfile.close();名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 10 页 -名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 10 页 -
限制150内