ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:164.38KB ,
资源ID:6907452      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6907452.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(高速公路客运活动仿真程序.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

高速公路客运活动仿真程序.docx

1、高速公路客运活动仿真程序高速公路客运活动仿真程序 设计说明书一、 问题描绘 1.本问题目的是进展西安到宝鸡高速公路运作的仿真。在西安市到宝鸡市之间的高速公路是一条主要的线路之一,经过简化后的客运道路端点、中途停靠点和里程如以下图所示括号里是简称,里程的单位是公里。从西安到宝鸡的高速公路上有两种车:沃尔沃和依维柯,车中有两种最主要的属性:速度和容量。汽车每天在一定的时间区间内会在两地间互相行驶。在西安和宝鸡两地每时每刻都会产生乘客,在西安和宝鸡之间有XY, XP, WG, CP, GZ五个中间站,乘客会选择在五个站中的任意一站和终点站下车,中途只许下车不许上车。从西安到宝鸡的车到了宝鸡自动排在从

2、宝鸡到西安的车的车队末尾。宝鸡BJ 蔡家坡CP 兴平XP 西安XN242162212422 虢镇GZ 武功WG 咸阳XY1从 XN 始发至 BJ 的客车和从 BJ 始发至 XN 的客车均有两种车型:沃尔沃限定乘客人数为 40 人;依维柯限定乘客人数为 21 人。沃尔沃的速度为 2 公里/分钟,依维柯的速度为 1.4 公里/分钟。2起始状态时,XN 拥有沃尔沃和依维柯客车分别为 XN W 和 XNY 辆,BJ 拥有沃尔沃和依维柯客车分别为 BJ W 和 BJ Y 辆。3从 XN 至 BJ 和从 BJ 至 XN 的沃尔沃,均为上午 8:30 开始,每小时一班,最后一班为下午 5:30;从 XN 至

3、 BJ 和从 BJ 至 XN 的依维柯,均为上午 8:00 开始,每20 分钟一班,最后一班为下午 6:00。4从 XN 至 BJ 的客车到达 BJ 后,即成为从 BJ 至 XN 的客车,排在当时 BJ 同类车型的队尾,再按3确定发车时间;从 BJ 至 XN 的客车到达 XN 后的规那么一样。5只考虑途中只有乘客下车、没有乘客上车的情况。6有乘客下车时,不管方向与车型,停车时间统一为 2 分钟。7乘坐从 XN 至 BJ 客车的乘客,其下车点为 XY、XP、WG、CP、GZ 和 BJ 的可能性分别为 P_XBXY 、P_XBXP 、P_XBWG 、P_XBCP 、P_XBG Z 和 P_XBB

4、J。这些可能性之和为 1;乘坐从 BJ 至 XN 客车的乘客,其下车点为 GZ、CP、WG、XP、XY和 XN 的可能性分别为 P_BXGZ、P_BXCP 、P_BXWG 、P_BX XP 、P_BX XY 和 P_BX XN 。这些可能性之和为 1。1从上午 7:30 开始到下午 5:59 为止,每分钟分别在 XN 和 BJ 随机产生去往 BJ 和 XN 方向的新到达的乘客。每分钟到达的人数范围为 0PN 人。2按照限定条件7的规定,随机产生新到达的乘客的目的地。3乘客按到达的先后顺序上最近一辆按照限定条件3的规定始发的客车,假设该车客满那么等候下一辆始发的客车。4假设客车到达中途停靠站时有

5、乘客在此下车,按限定条件5和6处理,否那么不停车继续行驶。1XN 和 BJ 在仿真开始时拥有的客车数量 XNW 、 Y 、 W 和 BJ Y 。XN BJ可先按 XNW =5,XNY =12,BJ W =4,BJ Y =15 进展,然后自己可以改变其中一个或多个,来观察不同起始状态对仿真结果的影响。2确定乘客目的地的可能性 P_XBXY 、P_XBXP 、P_XBWG 、P_XBCP 、P_XBG Z 和 P_XBB J,以及 P_BXGZ、P_BX CP 、P_BXWG 、P_BX XP 、P_BX XY 和 P_BXXN 。应注意乘客去往远一些的目的地的可能性,通常大于去往近一些的目的地的

6、可能性。3每分钟到达的人数上限 PN 。可先按 PN =2 进展,然后自己可以改变,来观察不同。5.经过分析在仿真系统中应至少包括如下功能1始发站控制产生相应的客车根据预先给定的汽车的属性;2始发站控制产生相应的乘客;3乘客来到车站以后选择适宜的车,上车;4汽车到了发车时间,发车;5汽车在公路上行驶包括在中间站停车;6汽车到终点站,并准备再次发车,执行4;7乘客到站下车。二、 建立模型1定义构造typedef struct Quenode int get_off6; int nop; char plate; char *model; struct Quenode *next; Quenode;

7、 /typedef struct quefr Quenode *front,*rear; quefr; /quefr *Createqueue(char *x,int m,char *m1) Quenode *h=NULL,*p=NULL; quefr *q=NULL; h=(Quenode*)malloc(sizeof(Quenode); q=(quefr*)malloc(sizeof(quefr); h-plate=*(x+0); h-nop=0; h-model=m1; q-front=h; q-rear=h; for(int i=1;iplate=*(x+i); p-nop=0; p-

8、model=m1; p-next=NULL; q-rear-next=p; q-rear=p; return q; /Quenode *deque(quefr *q) Quenode *p,*p1; p1=q-front; p=q-front-next; q-front=p; return p1; /void enque(quefr *q,Quenode *e) q-rear-next=e; q-rear=e; 其中包括了客车运行的所有状态:车牌号plate,车型modle,客车每个停靠点下车人数get_off6,客车的座位数,上车的总人数nop。2 定义车型,创立队列链表charw15=a,

9、b,c,d,e; /西安站依维柯客车型号 char y112=A,B,C,D,E,F,G,H,I,J,K,L; /西安站沃尔沃客车型号 charw24=f,g,h,i; /宝鸡站依维柯客车型号 char y215=M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,; /宝鸡站沃尔沃客车型号 q1=Createqueue(y1,12,mod1); q2=Createqueue(w1,5,mod2); q3=Createqueue(y2,15,mod1);q4=Createqueue(w2,4,mod2); /创立4个队列3 时间与刷屏显示while(1) Sleep(1000); syst

10、em(cls); if(M=59)H+=1;M=00; elseM+=1; 三、 仿真流程源程序清单/ 2021软件技术大作业.cpp : 定义控制台应用程序的入口点。/定义1秒等于1分钟/客车提早10分钟上车#includestdafx.h#include #include stdlib.h#include windows.h#include #include #include using namespace std;/double w_s=2.0; /沃尔沃速度double y_s=1.4; /依维柯速度int w=40,y=21; /车内座位数char *mod1=依维柯; /车型cha

11、r *mod2=沃尔沃;double n16=0.1,0.13,0.16,0.16,0.20,0.25; /自定义西安到宝鸡,乘客在每站下车的概率double n26=0.1,0.13,0.16,0.16,0.20,0.25; / 宝鸡到西安,乘客在每站下车的概率/typedef struct Quenode /队列链表结点 int get_off6; /每站下车的人数 int nop; /上车的总人数 char plate; /车牌号 char *model; /车型 struct Quenode *next;Quenode; /Typedefstructquefr /队列链表的头指针和尾指

12、针 Quenode *front,*rear;quefr; /quefr*Createqueue(char*x,intm,char*m1) /创立队列链表 Quenode *h=NULL,*p=NULL; quefr *q=NULL; h=(Quenode*)malloc(sizeof(Quenode); /分配容量 q=(quefr*)malloc(sizeof(quefr); h-plate=*(x+0); h-nop=0; h-model=m1; q-front=h; q-rear=h; for(int i=1;iplate=*(x+i); p-nop=0; p-model=m1; p-

13、next=NULL; q-rear-next=p; q-rear=p; return q; /Quenode *deque(quefr *q) /弹出队首元素 Quenode *p,*p1; p1=q-front; p=q-front-next; q-front=p; return p1;/voidenque(quefr *q,Quenode *e) /在队尾进入元素q-rear-next=e;q-rear=e;/void Number_waiting_Y(Quenode*p1,Quenode*p3,int *h,int *m) /依维柯在西安站和宝鸡站情况 bool f1=0,f2=0; i

14、f(yp1-nop) srand(unsigned)time(NULL); p1-nop+=(rand()%2); /到西安站候车人数 if(p1-nopy) cout西安站的依维柯客车(型号plate)正在站内!还剩:nop张票额nop=y) cout开往宝鸡方向的(型号plate)依维柯客车票额已卖完p3-nop) srand(unsigned)time(NULL); p3-nop+=(rand()%2+1); /到宝鸡站候车人数 if(p3-nopy) cout宝鸡站的依维柯客车(型号plate)正在站内!还剩:nop张票额nop=y) cout开往西安方向的(型号plate) 依维柯客

15、车票额已卖完=8)&(*m=0|*m=20|*m=40)|(f1=1&f2=1) /依维柯发车时间 int i; for(i=0;iget_offi=p1-nop*n1i; p3-get_offi=p3-nop*n2i; p1-get_off6+=2;p3-get_off6+=2; coutendl*p2-nop) srand(unsigned)time(NULL); p2-nop+=(rand()%2+1); /到西安站候车人数 if(p2-nopy) cout西安站的沃尔沃客车(型号plate)正在站内!还剩:nop张票额nop=y) cout开往宝鸡方向的(型号plate)沃尔沃客车票额

16、已卖完p4-nop) srand(unsigned)time(NULL); p4-nop+=(rand()%2+1); /到宝鸡站候车人数 if(p4-nopy) cout宝鸡站的沃尔沃客车(型号plate)正在站内!还剩:nop张票额nop=y) cout开往西安方向的(型号plate)沃尔沃客车票额已卖完=8)|(f1=1&f2=1) int i; for(i=0;iget_offi=p2-nop*n1i; p4-get_offi=p4-nop*n2i; p2-get_off6+=2;p4-get_off6+=2; /车内人数 coutendl*endl; /char ModelPut(c

17、har *md) for(int i=0;i6;i+) cout*(md+i); return 0;/bool DIS1(Quenode *p,quefr *q,double dis) /西安到宝鸡 if(dis20.6) /定义一个范围表示是否到站,dis表示间隔 coutmodel)客车(车牌号为plate)离咸阳还有22-dis公里(车上有nop人)20.6&disget_off0!=0) p-nop=p-nop-p-get_off0; coutmodel)客车(车牌号为plate)在咸阳站有get_off0人下车; cout停车两分钟;; Sleep(2000); else coutm

18、odel)客车(车牌号为plate)在咸阳无人下车,咸阳站不停!endl; return 0; if(dis22) coutmodel)客车(车牌号为plate)离兴平还有double(46-dis)公里(车上有nop人)44.6&disget_off1!=0) p-nop=p-nop-p-get_off1; coutmodel)客车(车牌号为plate)在兴平站有get_off1人下车; cout停车两分钟;; Sleep(2000); else coutmodel)客车(车牌号为plate)在兴平无人下车,兴平站不停!endl; return 0; if(dis46) coutmodel)

19、客车(车牌号为plate)离武功还有double(67-dis)公里(车上有nop人)65.6&disget_off2!=0) p-nop=p-nop-p-get_off2; cout车牌号plate的model)客车在武功站有get_off2人下车; cout停车两分钟;; Sleep(2000); else coutmodel)客车(车牌号为plate)在武功无人下车,武功站不停!endl; if( dis67) coutmodel)客车(车牌号为plate)离蔡家坡还有double(129-dis)公里(车上有nop人)127.6&disget_off3!=0) p-nop=p-nop-

20、p-get_off3; coutmodel)客车(车牌号为plate)在蔡家坡站有get_off3人下车; cout停车两分钟;; Sleep(2000); else coutmodel)客车(车牌号为plate)在蔡家坡无人下车,蔡家坡站不停!endl; if( dis129) coutmodel)客车(车牌号为plate)离虢镇站还有double(150-dis)公里(车上有nop人)148.6&disget_off4!=0) p-nop=p-nop-p-get_off4; coutmodel)客车(车牌号为plate)在虢镇站有get_off4人下车; cout停车两分钟;; Sleep(2000); else coutmodel)客车(车牌号为plate)在虢镇无人下车,虢镇站不停!endl; if( dis150) coutmodel)客车(车牌号为plate)离宝鸡还有double(174-dis)公里(车上有nop人)172.6&dis=174) cout车牌号plate的model)客车到站,有get_off5人下车endl; enque(q,p); return 1; /bool DIS2(Quenode *p,quefr *q,double dis) /宝鸡到西安if(dis

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1