<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/622b2f23ff7f9c46a68b6369/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b2f23ff7f9c46a68b6369/bg1.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h3 y2 ff1 fs0 fc0 sc0 ls0 ws0"> <span class="ff2 fs1 sc1">电梯仿真系统设计文档</span></div><div class="t m0 x2 h4 y3 ff2 fs2 fc0 sc1 ls0 ws0">总目录</div><div class="t m0 x1 h5 y4 ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">.<span class="_ _0"></span>设计任务</span></div><div class="t m0 x1 h5 y5 ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">.<span class="_ _0"></span>设计规则</span></div><div class="t m0 x1 h5 y6 ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">.<span class="_ _0"></span>设计目标</span></div><div class="t m0 x1 h5 y7 ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">.<span class="_ _0"></span>设计模型</span></div><div class="t m0 x1 h5 y8 ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">.<span class="_ _0"></span>设计思想</span></div><div class="t m0 x1 h5 y9 ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">.<span class="_ _0"></span>运行情况总结</span></div><div class="t m0 x1 h5 ya ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">.<span class="_ _0"></span>程序清单</span></div><div class="t m0 x3 h4 yb ff1 fs2 fc0 sc0 ls0 ws0">1.<span class="ff2 sc1">设计任务</span></div><div class="t m0 x4 h5 yc ff2 fs3 fc0 sc0 ls0 ws0">某国际<span class="_ _1"></span>贸易中<span class="_ _1"></span>心共<span class="_ _2"> </span><span class="ff3"><span class="_ _3"> </span></span>层,设<span class="_ _1"></span>有载客<span class="_ _1"></span>电梯<span class="_ _2"> </span><span class="ff3"><span class="_ _3"> </span></span>部(用<span class="_ _3"> </span><span class="ff3"><span class="_ _3"> </span></span>标<span class="_ _1"></span>识)。<span class="_ _1"></span>利用多<span class="_ _1"></span>线程技<span class="_ _1"></span>术</div><div class="t m0 x1 h5 yd ff2 fs3 fc0 sc0 ls0 ws0">实现个电梯载客的仿真情况。</div><div class="t m0 x5 h4 ye ff1 fs2 fc0 sc0 ls0 ws0">2.<span class="ff2 sc1">设计规则</span></div><div class="t m0 x1 h5 yf ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">电梯的运行规则:</span></div><div class="t m0 x4 h5 y10 ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">、</span><span class="ff2">: 可到达每一层。</span></div><div class="t m0 x4 h5 y11 ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">、</span><span class="ff2">: 可到达<span class="_ _3"> </span></span><span class="ff2">、</span></div><div class="t m0 x6 h6 y12 ff3 fs4 fc0 sc0 ls0 ws0"></div><div class="t m0 x3 h5 y11 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _3"> </span><span class="ff2">层。</span></div><div class="t m0 x4 h5 y13 ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">、</span><span class="ff2">: 可到达<span class="_ _3"> </span></span></div><div class="t m0 x7 h6 y14 ff3 fs4 fc0 sc0 ls0 ws0"></div><div class="t m0 x8 h5 y13 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _3"> </span><span class="ff2">层。</span></div><div class="t m0 x4 h5 y15 ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">、</span><span class="ff2">: 可到达<span class="_ _3"> </span></span><span class="ff2">、</span></div><div class="t m0 x9 h6 y16 ff3 fs4 fc0 sc0 ls0 ws0"></div><div class="t m0 xa h5 y15 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _3"> </span><span class="ff2">层。</span></div><div class="t m0 x4 h5 y17 ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">、</span><span class="ff2">: 可到达<span class="_ _3"> </span></span></div><div class="t m0 x7 h6 y18 ff3 fs4 fc0 sc0 ls0 ws0"></div><div class="t m0 x8 h5 y17 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _3"> </span><span class="ff2">层。</span></div><div class="t m0 x1 h5 y19 ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">每部电梯的最大乘员量均为<span class="_ _3"> </span></span><span class="_ _3"> </span><span class="ff2">人(</span><span class="_ _4"> </span><span class="ff2">值可以根据仿真情况在<span class="_ _4"> </span></span><span class="ff2">人之间确定)。</span></div><div class="t m0 x1 h5 y1a ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">仿真开始时,各电梯随机处于起符合运行规则的任意一层,为空梯。</span></div><div class="t m0 x1 h5 y1b ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _1"></span><span class="ff2">仿真开<span class="_ _1"></span>始后,<span class="_ _1"></span>有<span class="_ _3"> </span></span><span class="_ _3"> </span><span class="ff2">人(</span><span class="_ _1"></span><span class="ff2">)在<span class="_ _3"> </span></span><span class="_ _3"> </span><span class="ff2">分钟</span><span class="_ _1"></span><span class="ff2">内随<span class="_ _1"></span>机地到<span class="_ _1"></span>达该国<span class="_ _1"></span>际贸易<span class="_ _1"></span>中心的</span></div><div class="t m0 x1 h5 y1c ff2 fs3 fc0 sc0 ls0 ws0">一层,</div><div class="t m0 x1 h5 y1d ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">开始乘梯活动。</span></div><div class="t m0 x1 h5 y1e ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">每个人初次所要到的楼梯层是随机的,令其在合适的电梯处等待电梯的到来。</span></div><div class="t m0 x1 h5 y1f ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">每个人乘坐的合适电梯到达指定楼层后,随机地停留<span class="_ _2"> </span></span><span class="_ _4"> </span><span class="ff2">秒后,在随机地去往另</span></div><div class="t m0 x1 h5 y20 ff2 fs3 fc0 sc0 ls0 ws0">一</div><div class="t m0 x1 h5 y21 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _1"></span><span class="_ _1"></span><span class="ff2">楼层<span class="_ _1"></span>,依次<span class="_ _1"></span>类推,<span class="_ _1"></span>当每个<span class="_ _1"></span>人乘坐<span class="_ _1"></span>过<span class="_ _2"> </span></span><span class="_ _3"> </span><span class="ff2">次</span><span class="_ _3"> </span><span class="ff2">值可以<span class="_ _1"></span>根据仿<span class="_ _1"></span>真情况<span class="_ _1"></span>在<span class="_ _2"> </span></span><span class="_ _4"> </span><span class="ff2">次之<span class="_ _1"></span>间确定<span class="_ _1"></span></span><span class="_ _1"></span><span class="ff2">电</span></div><div class="t m0 x4 h5 y22 ff2 fs3 fc0 sc0 ls0 ws0">梯后,第<span class="_ _3"> </span><span class="ff3"><span class="_ _4"> </span></span>次为下至底层并结束乘梯行为。到所有人结束乘梯行为时,本次仿真结</div><div class="t m0 x4 h5 y23 ff2 fs3 fc0 sc0 ls0 ws0">束。</div><div class="t m0 x1 h5 y24 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _1"></span><span class="ff2">电<span class="_ _1"></span>梯<span class="_ _1"></span>运行<span class="_ _1"></span>速<span class="_ _1"></span>度为<span class="_ _2"> </span></span><span class="_ _3"> </span><span class="ff2">秒</span><span class="_ _1"></span><span class="ff2">层<span class="_ _1"></span>(<span class="_ _1"></span></span><span class="_ _3"> </span><span class="ff2">值可<span class="_ _1"></span>以<span class="_ _1"></span>根据<span class="_ _1"></span>仿<span class="_ _1"></span>真情<span class="_ _1"></span>况<span class="_ _1"></span>在<span class="_ _2"> </span></span><span class="_ _3"> </span><span class="ff2">之<span class="_ _1"></span>间确<span class="_ _1"></span>定<span class="_ _1"></span>),<span class="_ _1"></span>每<span class="_ _1"></span>个人<span class="_ _1"></span>上<span class="_ _1"></span>下的</span></div><div class="t m0 x4 h5 y25 ff2 fs3 fc0 sc0 ls0 ws0">时间为<span class="_ _4"> </span><span class="ff3"><span class="_ _3"> </span></span>秒(<span class="ff3"><span class="_ _4"> </span></span>值可以根据仿真情况在<span class="_ _3"> </span><span class="ff3"><span class="_ _4"> </span></span>之间确定)</div><div class="t m0 x1 h5 y26 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _1"></span><span class="ff2">电梯<span class="_ _1"></span>运行<span class="_ _1"></span>的方<span class="_ _1"></span>向由<span class="_ _1"></span>先发<span class="_ _1"></span>出请<span class="_ _1"></span>求者<span class="_ _1"></span>决定<span class="_ _1"></span>,不<span class="_ _1"></span>允许<span class="_ _1"></span>后发<span class="_ _1"></span>出请<span class="_ _1"></span>求者<span class="_ _1"></span>改变<span class="_ _1"></span>电梯<span class="_ _1"></span>的当<span class="_ _1"></span>前运<span class="_ _1"></span>行方<span class="_ _1"></span>向<span class="_ _5"> </span>,</span></div><div class="t m0 x4 h5 y27 ff2 fs3 fc0 sc0 ls0 ws0">除非是未被请求的空梯。</div><div class="t m0 x1 h5 y28 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _1"></span><span class="ff2">当<span class="_ _1"></span>某<span class="_ _1"></span>层有<span class="_ _1"></span>人<span class="_ _1"></span>按下<span class="_ _1"></span>乘<span class="_ _1"></span>梯电<span class="_ _1"></span>钮<span class="_ _1"></span>时,<span class="_ _1"></span>首<span class="_ _1"></span>先考<span class="_ _1"></span>虑<span class="_ _1"></span>离该<span class="_ _1"></span>层<span class="_ _1"></span>最近<span class="_ _1"></span>的<span class="_ _1"></span>、满<span class="_ _1"></span>足<span class="_ _1"></span>条件<span class="_ _6"> </span></span><span class="ff2">、<span class="_ _1"></span>能<span class="_ _1"></span>够最<span class="_ _1"></span>快<span class="_ _1"></span>到达</span></div><div class="t m0 x4 h5 y29 ff2 fs3 fc0 sc0 ls0 ws0">目标层的电梯。</div><div class="t m0 x1 h5 y2a ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">不允许电梯超员。</span></div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b2f23ff7f9c46a68b6369/bg2.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h4 y2b ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _1"></span><span class="ff1 fs2">3.<span class="ff2 sc1">设计目标</span></span></div><div class="t m0 x1 h5 y2c ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">各电梯相互独立,各自在自己的线程中运行,动态显示个电梯的载客和运行情况。</span></div><div class="t m0 x1 h5 y2d ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">动态显示各楼层的人员停留情况和要求乘梯情况。</span></div><div class="t m0 x1 h5 y4 ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">动态显示从仿真开始到目前的时间。</span></div><div class="t m0 x1 h5 y5 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _1"></span><span class="ff2">显<span class="_ _1"></span>示<span class="_ _1"></span>时要<span class="_ _1"></span>求<span class="_ _1"></span>表示<span class="_ _1"></span>出<span class="_ _1"></span>每个<span class="_ _1"></span>乘<span class="_ _1"></span>客当<span class="_ _1"></span>前<span class="_ _1"></span>要求<span class="_ _1"></span>去<span class="_ _1"></span>往的<span class="_ _1"></span>楼<span class="_ _1"></span>层。<span class="_ _1"></span>例<span class="_ _1"></span>如,<span class="_ _0"></span></span><span class="_ _1"></span><span class="_ _1"></span><span class="ff2">表<span class="_ _1"></span>示<span class="_ _1"></span>第<span class="_ _3"> </span></span><span class="_ _3"> </span><span class="ff2">号<span class="_ _1"></span>的乘<span class="_ _1"></span>客</span></div><div class="t m0 x1 h5 y6 ff2 fs3 fc0 sc0 ls0 ws0">要</div><div class="t m0 x4 h5 y7 ff2 fs3 fc0 sc0 ls0 ws0">去<span class="_ _4"> </span><span class="ff3"><span class="_ _3"> </span></span>楼。</div><div class="t m0 x1 h5 y8 ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">统计各梯的运行与空闲时间;统计每个人发出乘梯要求后的等待时间;</span></div><div class="t m0 x1 h5 y9 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _1"></span><span class="ff2">每<span class="_ _1"></span>部<span class="_ _1"></span>电梯<span class="_ _1"></span>的<span class="_ _1"></span>最大<span class="_ _1"></span>成<span class="_ _1"></span>员量<span class="_"> </span></span><span class="ff2">、参<span class="_ _1"></span>与<span class="_ _1"></span>仿真<span class="_ _1"></span>人<span class="_ _1"></span>数<span class="_ _3"> </span></span><span class="_ _1"></span><span class="ff2">、<span class="_ _1"></span>到<span class="_ _1"></span>齐时<span class="_ _1"></span>间<span class="_ _2"> </span></span><span class="ff2">、每<span class="_ _1"></span>人<span class="_ _1"></span>要乘<span class="_ _1"></span>坐<span class="_ _2"> </span></span><span class="_ _3"> </span><span class="ff2">次、<span class="_ _1"></span>电<span class="_ _1"></span>梯运</span></div><div class="t m0 x1 h5 ya ff2 fs3 fc0 sc0 ls0 ws0">行</div><div class="t m0 x4 h5 y2e ff2 fs3 fc0 sc0 ls0 ws0">速度<span class="_ _4"> </span><span class="ff3"></span>、每人上下时间<span class="_ _3"> </span><span class="ff3"></span>可变动输入。</div><div class="t m0 x1 h5 y2f ff3 fs3 fc0 sc0 ls0 ws0"><span class="ff2">界面友好易于理解。</span></div><div class="t m0 x1 h4 y30 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _1"></span><span class="ff1 fs2">4<span class="ff2 sc1">. 设计模型</span></span></div><div class="t m0 xb h4 y31 ff1 fs2 fc0 sc0 ls0 ws0"> 5<span class="ff2 sc1">. 设计思想 </span></div><div class="t m0 x4 h5 y32 ff2 fs3 fc0 sc0 ls0 ws0">该<span class="_ _1"></span>程<span class="_ _1"></span>序<span class="_ _1"></span>采<span class="_ _1"></span>用<span class="_ _1"></span>可<span class="_ _1"></span>视<span class="_ _1"></span>化<span class="_ _1"></span>的<span class="_ _1"></span>面<span class="_ _1"></span>向<span class="_ _1"></span>对<span class="_ _1"></span>象<span class="_ _1"></span>语<span class="_ _1"></span>言<span class="_ _2"> </span><span class="ff3"> !<span class="_ _2"> </span></span>采用<span class="_ _1"></span>多<span class="_ _1"></span>线<span class="_ _1"></span>程<span class="_ _1"></span>技<span class="_ _1"></span>术<span class="_ _7"></span>实<span class="_ _1"></span>现<span class="_ _1"></span>,<span class="_ _1"></span>其<span class="_ _1"></span>中<span class="_ _1"></span>定<span class="_ _1"></span>义<span class="_ _1"></span>了<span class="_ _1"></span>六<span class="_ _1"></span>个<span class="_ _1"></span>类<span class="_ _1"></span>,</div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b2f23ff7f9c46a68b6369/bg3.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h5 y33 ff2 fs3 fc0 sc0 ls0 ws0">电<span class="_ _7"></span>梯<span class="_"> </span><span class="ff3">"#$%&<span class="_ _7"></span></span>、<span class="_ _0"></span>乘<span class="_ _7"></span>客<span class="_"> </span><span class="ff3"><span class="_ _8"></span>&'%(<span class="_ _0"></span><span class="ff2">、<span class="_ _7"></span>楼<span class="_ _0"></span>层<span class="_ _2"> </span></span>)%%&<span class="_ _0"></span><span class="ff2">、<span class="_ _7"></span>系<span class="_ _0"></span>统<span class="_"> </span></span><span class="_ _9"></span>'*'$+,%($&%<span class="_ _7"></span><span class="ff2">、<span class="_ _7"></span>电<span class="_ _0"></span>梯<span class="_ _0"></span>运<span class="_ _7"></span>行<span class="_ _0"></span>线<span class="_ _7"></span>程</span></span></div><div class="t m0 x1 h5 y34 ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _a"></span>&-( &<span class="_ _8"></span>#.<span class="_ _1"></span><span class="ff2">、<span class="_ _1"></span>系<span class="_ _1"></span>统<span class="_ _1"></span>监<span class="_ _1"></span>控<span class="_ _2"> </span></span><span class="_ _a"></span>'*'$+%(!$%&<span class="_ _1"></span><span class="ff2">;<span class="_ _1"></span>每<span class="_ _1"></span>条<span class="_ _1"></span>线<span class="_ _1"></span>程<span class="_ _1"></span>动<span class="_ _1"></span>态<span class="_ _1"></span>监<span class="_ _1"></span>控<span class="_ _1"></span>每<span class="_ _1"></span>个<span class="_ _1"></span>电<span class="_ _1"></span>梯<span class="_ _1"></span>的<span class="_ _1"></span>运<span class="_ _1"></span>行<span class="_ _1"></span>情<span class="_ _1"></span>况<span class="_ _1"></span>,<span class="_ _1"></span>以</span></div><div class="t m0 x1 h5 y2c ff2 fs3 fc0 sc0 ls0 ws0">电梯<span class="_ _1"></span>为主<span class="_ _1"></span>要对<span class="_ _1"></span>象,<span class="_ _1"></span>系统<span class="_ _1"></span>以每<span class="_ _1"></span>秒的<span class="_ _1"></span>事件<span class="_ _1"></span>触发<span class="_ _1"></span>每个<span class="_ _1"></span>线程<span class="_ _1"></span>对象<span class="_ _1"></span>的动<span class="_ _1"></span>作。<span class="_ _1"></span>因为<span class="_ _1"></span>乘客<span class="_ _1"></span>不是<span class="_ _1"></span>一次<span class="_ _1"></span>性到<span class="_ _1"></span>达</div><div class="t m0 x1 h5 y2d ff2 fs3 fc0 sc0 ls0 ws0">大楼<span class="_ _1"></span>,所<span class="_ _1"></span>以必<span class="_ _1"></span>须考<span class="_ _1"></span>虑用<span class="_ _1"></span>动态<span class="_ _1"></span>对象<span class="_ _1"></span>数组<span class="_ _1"></span>,这<span class="_ _1"></span>个是<span class="_ _1"></span>由系<span class="_ _1"></span>统控<span class="_ _1"></span>制对<span class="_ _1"></span>象来<span class="_ _1"></span>不停<span class="_ _1"></span>地完<span class="_ _1"></span>成的<span class="_ _1"></span>新到<span class="_ _1"></span>来的<span class="_ _1"></span>乘</div><div class="t m0 x1 h5 y4 ff2 fs3 fc0 sc0 ls0 ws0">客对<span class="_ _1"></span>象的<span class="_ _1"></span>初始<span class="_ _1"></span>化任<span class="_ _1"></span>务。<span class="_ _1"></span>因为<span class="_ _1"></span>每个<span class="_ _1"></span>乘客<span class="_ _1"></span>到的<span class="_ _1"></span>目标<span class="_ _1"></span>楼层<span class="_ _1"></span>是随<span class="_ _1"></span>机的<span class="_ _1"></span>,所<span class="_ _1"></span>以必<span class="_ _1"></span>须按<span class="_ _1"></span>照一<span class="_ _1"></span>定的<span class="_ _1"></span>规则<span class="_ _1"></span>选</div><div class="t m0 x1 h5 y5 ff2 fs3 fc0 sc0 ls0 ws0">择要乘坐的<span class="_ _1"></span>电梯,当选择<span class="_ _1"></span>好目标电梯后<span class="_ _1"></span>就向该对象的<span class="_ _1"></span>等待队列发送<span class="_ _1"></span>请求, 当上了<span class="_ _1"></span>电梯后,</div><div class="t m0 x1 h5 y6 ff2 fs3 fc0 sc0 ls0 ws0">就删<span class="_ _1"></span>除该<span class="_ _1"></span>乘客<span class="_ _1"></span>在电<span class="_ _1"></span>梯和<span class="_ _1"></span>当前<span class="_ _1"></span>楼层<span class="_ _1"></span>的等<span class="_ _1"></span>待请<span class="_ _1"></span>求。<span class="_ _1"></span>加入<span class="_ _1"></span>所乘<span class="_ _1"></span>电梯<span class="_ _1"></span>的乘<span class="_ _1"></span>载队<span class="_ _1"></span>列。<span class="_ _1"></span>电梯<span class="_ _1"></span>每到<span class="_ _1"></span>一层<span class="_ _1"></span>楼</div><div class="t m0 x1 h5 y7 ff2 fs3 fc0 sc0 ls0 ws0">就检<span class="_ _1"></span>测是<span class="_ _1"></span>有人<span class="_ _1"></span>要下<span class="_ _1"></span>,如<span class="_ _1"></span>果没<span class="_ _1"></span>有人<span class="_ _1"></span>下,<span class="_ _1"></span>再判<span class="_ _1"></span>断是<span class="_ _1"></span>否满<span class="_ _1"></span>员,<span class="_ _1"></span>如果<span class="_ _1"></span>没有<span class="_ _1"></span>满员<span class="_ _1"></span>,再<span class="_ _1"></span>检测<span class="_ _1"></span>当前<span class="_ _1"></span>楼层<span class="_ _1"></span>的</div><div class="t m0 x1 h5 y8 ff2 fs3 fc0 sc0 ls0 ws0">等待<span class="_ _1"></span>队列<span class="_ _1"></span>是否<span class="_ _1"></span>有人<span class="_ _1"></span>上。<span class="_ _1"></span>对于<span class="_ _1"></span>乘客<span class="_ _1"></span>对象<span class="_ _1"></span>,每<span class="_ _1"></span>秒都<span class="_ _1"></span>要选<span class="_ _1"></span>择一<span class="_ _1"></span>次看<span class="_ _1"></span>看哪<span class="_ _1"></span>个电<span class="_ _1"></span>梯最<span class="_ _1"></span>快到<span class="_ _1"></span>达目<span class="_ _1"></span>标楼<span class="_ _1"></span>层</div><div class="t m0 x1 h5 y9 ff2 fs3 fc0 sc0 ls0 ws0">就加<span class="_ _1"></span>入该<span class="_ _1"></span>电梯<span class="_ _1"></span>的等<span class="_ _1"></span>待队<span class="_ _1"></span>列。<span class="_ _1"></span>对于<span class="_ _1"></span>系统<span class="_ _1"></span>监控<span class="_ _1"></span>对象<span class="_ _1"></span>,他<span class="_ _1"></span>是在<span class="_ _1"></span>系统<span class="_ _1"></span>监控<span class="_ _1"></span>线程<span class="_ _1"></span>中独<span class="_ _1"></span>立运<span class="_ _1"></span>行的<span class="_ _1"></span>,他<span class="_ _1"></span>动</div><div class="t m0 x1 h5 ya ff2 fs3 fc0 sc0 ls0 ws0">态监控大楼中每个人的乘坐情况,每个楼梯的运行情况,每层楼的乘客停留情况。</div><div class="t m0 xc h4 yb ff1 fs2 fc0 sc0 ls0 ws0">6. <span class="ff2 sc1">运行情况总结</span></div><div class="t m0 x4 h5 yc ff2 fs3 fc0 sc0 ls0 ws0">程序<span class="_ _1"></span>中最<span class="_ _1"></span>大问<span class="_ _1"></span>题是<span class="_ _1"></span>多线<span class="_ _1"></span>程数<span class="_ _1"></span>据共<span class="_ _1"></span>享问<span class="_ _1"></span>题,<span class="_ _1"></span>如果<span class="_ _1"></span><span class="ff4">遇<span class="_ _1"></span></span>到数<span class="_ _1"></span>个线<span class="_ _1"></span>程<span class="ff4">同<span class="_ _1"></span></span>时<span class="ff4">访<span class="_ _1"></span></span>问一<span class="_ _1"></span>个数<span class="_ _1"></span>据就<span class="_ _1"></span><span class="ff4">会<span class="_ _1"></span></span>出</div><div class="t m0 x1 h5 yd ff2 fs3 fc0 sc0 ls0 ws0">现共享<span class="ff4">冲突<span class="_ _1"></span></span>,<span class="ff4">比</span>如<span class="_ _3"> </span><span class="ff3">!<span class="_ _4"> </span></span>个电<span class="_ _1"></span>梯对象<span class="ff4">同</span>时到<span class="_ _1"></span>达第<span class="_ _3"> </span><span class="ff3">/<span class="_ _3"> </span></span>层,就<span class="ff4">会同</span>时<span class="_ _1"></span><span class="ff4">访</span>问该层的乘<span class="_ _1"></span>客请求队列和<span class="_ _1"></span>闲留</div><div class="t m0 x1 h5 y35 ff2 fs3 fc0 sc0 ls0 ws0">队列,当有乘客上了电梯,就必须删除该乘客在该层的请求,加入电梯<span class="ff4">承</span>载队列,<span class="ff4">但</span>是当<span class="_"> </span><span class="ff3">!</span></div><div class="t m0 x1 h5 y36 ff2 fs3 fc0 sc0 ls0 ws0">个电<span class="_ _1"></span>梯<span class="_ _1"></span>中有<span class="_ _1"></span>一<span class="_ _1"></span>个<span class="_ _1"></span><span class="ff4">操</span>作<span class="_ _1"></span>了<span class="_ _1"></span>第<span class="_ _2"> </span><span class="ff3">/<span class="_ _3"> </span></span>层<span class="_ _1"></span>的<span class="_ _1"></span>请求<span class="_ _1"></span>队<span class="_ _1"></span>列,<span class="_ _1"></span>可<span class="_ _1"></span>能<span class="_ _1"></span><span class="ff4">使得<span class="_ _1"></span></span>该<span class="_ _1"></span>队<span class="_ _1"></span>列变<span class="_ _1"></span><span class="ff4">小<span class="_ _1"></span></span>,<span class="ff4">但<span class="_ _1"></span></span>是<span class="_ _1"></span>在其<span class="_ _1"></span>他<span class="_ _1"></span><span class="ff4">几<span class="_ _1"></span></span>个电<span class="_ _1"></span>梯<span class="_ _1"></span><span class="ff4">操</span></div><div class="t m0 x1 h5 y37 ff2 fs3 fc0 sc0 ls0 ws0">作该<span class="_ _1"></span>队列<span class="_ _1"></span>时并<span class="_ _1"></span>没有<span class="_ _1"></span><span class="ff4">注<span class="_ _1"></span></span>意到<span class="_ _1"></span>这个<span class="_ _1"></span>问题<span class="_ _1"></span>,这<span class="_ _1"></span><span class="ff4">样</span>就<span class="_ _1"></span><span class="ff4">会</span>出<span class="_ _1"></span>现队<span class="_ _1"></span>列下<span class="_ _1"></span>标<span class="ff4">溢<span class="_ _1"></span></span>出<span class="ff4">错<span class="_ _1"></span>误!<span class="_ _1"></span></span>所<span class="_ _1"></span>以解<span class="_ _1"></span>决的<span class="_ _1"></span><span class="ff4">办法<span class="_ _1"></span></span>有</div><div class="t m0 x1 h5 yf ff3 fs3 fc0 sc0 ls0 ws0"><span class="_ _3"> </span><span class="ff2">个是:<span class="_ _1"></span></span><span class="ff2">)<span class="_ _1"></span>在每个<span class="_ _1"></span>电梯对<span class="_ _1"></span>象<span class="ff4">操<span class="_ _1"></span></span>作<span class="ff4">它</span>当<span class="_ _1"></span>前层的<span class="_ _1"></span>队列时<span class="_ _1"></span><span class="ff4">锁</span>定该<span class="_ _1"></span>队列。<span class="_ _7"></span></span><span class="_ _1"></span><span class="ff2">)统一<span class="_ _1"></span>加入一<span class="_ _1"></span>个<span class="ff4">临<span class="_ _1"></span></span>时<span class="ff4">操</span></span></div><div class="t m0 x1 h5 y10 ff2 fs3 fc0 sc0 ls0 ws0">作队列,由系统监控对象一次性完成。本程序采用第一个方<span class="ff4">法</span>。</div><div class="t m0 x4 h5 y11 ff4 fs3 fc0 sc0 ls0 ws0">鉴<span class="_ _1"></span><span class="ff2">于</span>微<span class="_ _1"></span><span class="ff2">机<span class="_ _1"></span></span>产<span class="_ _1"></span>生<span class="_ _1"></span><span class="ff2">的<span class="_ _1"></span></span>伪<span class="_ _1"></span><span class="ff2">随<span class="_ _1"></span>机数<span class="_ _1"></span>是<span class="_ _1"></span>均<span class="_ _1"></span></span>匀<span class="_ _1"></span><span class="ff2">分<span class="_ _1"></span></span>布<span class="_ _1"></span><span class="ff2">的<span class="_ _1"></span>,所<span class="_ _1"></span>以<span class="_ _1"></span>乘<span class="_ _1"></span>客<span class="_ _1"></span>每<span class="_ _1"></span>秒<span class="_ _1"></span>新<span class="_ _1"></span>到大<span class="_ _7"></span></span>厦<span class="ff2">的<span class="_ _1"></span>人<span class="_ _1"></span>数<span class="_ _1"></span>是<span class="_ _1"></span>由<span class="_ _b"> </span><span class="ff3"><span class="_ _3"> </span></span>内</span></div><div class="t m0 x1 h5 y13 ff2 fs3 fc0 sc0 ls0 ws0">的<span class="ff4">伪<span class="_ _1"></span></span>随机<span class="_ _1"></span>数<span class="ff4">产<span class="_ _1"></span>生</span>的<span class="_ _1"></span>,<span class="_ _1"></span><span class="ff4">然</span>后<span class="_ _1"></span>初始<span class="_ _1"></span>化新<span class="_ _1"></span>到的<span class="_ _1"></span>人,<span class="_ _1"></span>加入<span class="_ _1"></span>请求<span class="_ _1"></span>队列<span class="_ _1"></span>。这<span class="_ _1"></span>个可<span class="_ _1"></span>以在<span class="_ _1"></span>程序<span class="_ _1"></span>运行<span class="_ _1"></span>初,<span class="_ _1"></span>第一</div><div class="t m0 x1 h5 y15 ff2 fs3 fc0 sc0 ls0 ws0">个到达一楼的电梯<span class="ff4">承</span>载<span class="ff4">框</span>看到。</div><div class="t m0 x4 h5 y17 ff2 fs3 fc0 sc0 ls0 ws0">在程<span class="_ _1"></span>序中<span class="_ _1"></span>发现<span class="_ _1"></span>多数<span class="_ _1"></span>人在<span class="_ _1"></span>一楼<span class="_ _1"></span>等待<span class="_ _1"></span>,有<span class="_ _1"></span>的电<span class="_ _1"></span>梯<span class="_ _1"></span><span class="ff4">已经<span class="_ _1"></span></span>到达<span class="_ _1"></span><span class="ff4">但</span>是<span class="_ _1"></span><span class="ff4">还</span>没<span class="_ _1"></span>有人<span class="_ _1"></span>乘<span class="ff4">做<span class="_ _1"></span></span>,<span class="_ _1"></span>所以<span class="_ _1"></span>思考<span class="_ _1"></span>之</div><div class="t m0 x1 h5 y19 ff2 fs3 fc0 sc0 ls0 ws0">下发<span class="_ _1"></span>现,<span class="_ _1"></span>是因<span class="_ _1"></span>为对<span class="_ _1"></span>于乘<span class="_ _1"></span>客对<span class="_ _1"></span>象他<span class="_ _1"></span><span class="ff4">应<span class="_ _1"></span></span>该是<span class="_ _1"></span>可以<span class="_ _1"></span>一选<span class="_ _1"></span>多个<span class="_ _1"></span>电梯<span class="_ _1"></span>,否<span class="_ _1"></span>则当<span class="_ _1"></span>一个<span class="_ _1"></span>电梯<span class="_ _1"></span>人员<span class="_ _1"></span><span class="ff4">已<span class="_ _1"></span></span>满,<span class="_ _1"></span>他</div><div class="t m0 x1 h5 y1a ff4 fs3 fc0 sc0 ls0 ws0">还<span class="ff2">是<span class="_ _1"></span>在等<span class="_ _1"></span>待,<span class="_ _1"></span></span>那<span class="ff2">就<span class="_ _1"></span>是<span class="_ _1"></span></span>很<span class="ff2">多<span class="_ _1"></span>人都<span class="_ _1"></span>选择<span class="_ _1"></span>了他<span class="_ _1"></span></span>们认<span class="_ _1"></span><span class="ff2">为最<span class="_ _1"></span>近的<span class="_ _1"></span>电梯<span class="_ _1"></span></span>但<span class="ff2">是<span class="_ _1"></span>没有<span class="_ _1"></span>考虑<span class="_ _1"></span>到电<span class="_ _1"></span>梯<span class="_ _1"></span></span>已经<span class="_ _1"></span><span class="ff2">满了<span class="_ _1"></span>,</span></div><div class="t m0 x1 h5 y1b ff4 fs3 fc0 sc0 ls0 ws0">造<span class="ff2">成队列</span>太长<span class="ff2">。</span></div><div class="t m0 xc h4 y38 ff1 fs2 fc0 sc0 ls0 ws0">7<span class="ff2 sc1">. 程序清单</span></div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b2f23ff7f9c46a68b6369/bg4.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h5 yf ff2 fs3 fc0 sc1 ls0 ws0">设<span class="ff4">置</span>参数<span class="ff4">窗体</span>:</div><div class="t m0 x1 h7 y39 ff5 fs3 fc0 sc0 ls0 ws0">unit Setupin;</div><div class="t m0 x1 h7 y3a ff5 fs3 fc0 sc0 ls0 ws0">interface</div><div class="t m0 x1 h7 y3b ff5 fs3 fc0 sc0 ls0 ws0">uses</div><div class="t m0 x1 h7 y3c ff5 fs3 fc0 sc0 ls0 ws0"> Windows, M<span class="_ _8"></span>essages, SysUtils, Classes, Graphics, Contr<span class="_ _8"></span>ols, Forms, Dialogs,</div><div class="t m0 x1 h7 y3d ff5 fs3 fc0 sc0 ls0 ws0"> StdCtrls, ExtCtrls, Buttons, Spin,Define;</div><div class="t m0 x1 h7 y3e ff5 fs3 fc0 sc0 ls0 ws0">type</div><div class="t m0 x1 h7 y3f ff5 fs3 fc0 sc0 ls0 ws0"> T<span class="_ _c"></span>setupForm = class(TForm)</div><div class="t m0 x1 h7 y40 ff5 fs3 fc0 sc0 ls0 ws0"> Panel1: TPanel;</div><div class="t m0 x1 h7 y41 ff5 fs3 fc0 sc0 ls0 ws0"> Label1: TLabel;</div><div class="t m0 x1 h7 y42 ff5 fs3 fc0 sc0 ls0 ws0"> BitBtn1: TBitBtn;</div><div class="t m0 x1 h7 y43 ff5 fs3 fc0 sc0 ls0 ws0"> BitBtn2: TBitBtn;</div><div class="t m0 x1 h7 y44 ff5 fs3 fc0 sc0 ls0 ws0"> Group<span class="_ _8"></span>Box1: TGr<span class="_ _8"></span>oupBox;</div><div class="t m0 x1 h7 y45 ff5 fs3 fc0 sc0 ls0 ws0"> SEMaxLoad: TSpin<span class="_ _8"></span>Edit;</div><div class="t m0 x1 h7 y46 ff5 fs3 fc0 sc0 ls0 ws0"> SEPersonNum: TSpinEdit;</div><div class="t m0 x1 h7 y47 ff5 fs3 fc0 sc0 ls0 ws0"> SEOntime: TSpinEdit;</div><div class="t m0 x1 h7 y48 ff5 fs3 fc0 sc0 ls0 ws0"> SEElavotorSpeed: TSpinEdit;</div><div class="t m0 x1 h7 y49 ff5 fs3 fc0 sc0 ls0 ws0"> SEUpDownTime: <span class="_ _8"></span>TSpinEdit;</div><div class="t m0 x1 h7 y4a ff5 fs3 fc0 sc0 ls0 ws0"> Label2: TLabel;</div><div class="t m0 x1 h7 y4b ff5 fs3 fc0 sc0 ls0 ws0"> Label3: TLabel;</div><div class="t m0 x1 h7 y4c ff5 fs3 fc0 sc0 ls0 ws0"> Label4: TLabel;</div><div class="t m0 x1 h7 y4d ff5 fs3 fc0 sc0 ls0 ws0"> Label5: TLabel;</div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b2f23ff7f9c46a68b6369/bg5.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h7 y4e ff5 fs3 fc0 sc0 ls0 ws0"> Label6: TLabel;</div><div class="t m0 x1 h7 y4f ff5 fs3 fc0 sc0 ls0 ws0"> Label7: TLabel;</div><div class="t m0 x1 h7 y50 ff5 fs3 fc0 sc0 ls0 ws0"> Label8: TLabel;</div><div class="t m0 x1 h7 y51 ff5 fs3 fc0 sc0 ls0 ws0"> Label9: TLabel;</div><div class="t m0 x1 h7 y52 ff5 fs3 fc0 sc0 ls0 ws0"> Label10: TLabel;</div><div class="t m0 x1 h7 y53 ff5 fs3 fc0 sc0 ls0 ws0"> Label1<span class="_ _d"></span>1: TLabel;</div><div class="t m0 x1 h7 y54 ff5 fs3 fc0 sc0 ls0 ws0"> Label12: TLabel;</div><div class="t m0 x1 h7 y55 ff5 fs3 fc0 sc0 ls0 ws0"> SET<span class="_ _c"></span>akeNum: TSpinEdit;</div><div class="t m0 x1 h7 y56 ff5 fs3 fc0 sc0 ls0 ws0"> Label13: TLabel;</div><div class="t m0 x1 h7 y57 ff5 fs3 fc0 sc0 ls0 ws0"> procedur<span class="_ _d"></span>e<span class="_ _1"></span> BitBtn2Click(Sender: T<span class="_ _8"></span>Object);</div><div class="t m0 x1 h7 y58 ff5 fs3 fc0 sc0 ls0 ws0"> procedur<span class="_ _d"></span>e<span class="_ _1"></span> BitBtn1Click(Sender: T<span class="_ _8"></span>Object);</div><div class="t m0 x1 h7 y59 ff5 fs3 fc0 sc0 ls0 ws0"> private</div><div class="t m0 x1 h7 y5a ff5 fs3 fc0 sc0 ls0 ws0"> { Private declarations }</div><div class="t m0 x1 h7 y5b ff5 fs3 fc0 sc0 ls0 ws0"> public</div><div class="t m0 x1 h7 y5c ff5 fs3 fc0 sc0 ls0 ws0"> { Public declarations }</div><div class="t m0 x1 h7 y5d ff5 fs3 fc0 sc0 ls0 ws0"> end;</div><div class="t m0 x1 h7 y5e ff5 fs3 fc0 sc0 ls0 ws0">var</div><div class="t m0 x1 h7 y5f ff5 fs3 fc0 sc0 ls0 ws0"> setupForm: T<span class="_ _c"></span>setup<span class="_ _8"></span>Form;</div><div class="t m0 x1 h7 y39 ff5 fs3 fc0 sc0 ls0 ws0">implementation</div><div class="t m0 x1 h7 y3a ff5 fs3 fc0 sc0 ls0 ws0">uses main;</div><div class="t m0 x1 h7 y3b ff5 fs3 fc0 sc0 ls0 ws0">{$R *.DFM}</div><div class="t m0 x1 h7 y3d ff5 fs3 fc0 sc0 ls0 ws0">procedur<span class="_ _d"></span>e<span class="_ _1"></span> T<span class="_ _e"></span>setupForm.BitBtn2Click(Sender: T<span class="_ _8"></span>Object);</div><div class="t m0 x1 h7 y60 ff5 fs3 fc0 sc0 ls0 ws0">begin</div><div class="t m0 x1 h7 y3e ff5 fs3 fc0 sc0 ls0 ws0"> Application.T<span class="_ _c"></span>erminate;</div><div class="t m0 x1 h7 y3f ff5 fs3 fc0 sc0 ls0 ws0">end;</div><div class="t m0 x1 h7 y41 ff5 fs3 fc0 sc0 ls0 ws0">procedur<span class="_ _d"></span>e<span class="_ _1"></span> T<span class="_ _e"></span>setupForm.BitBtn1Click(Sender: T<span class="_ _8"></span>Object);</div><div class="t m0 x1 h7 y42 ff5 fs3 fc0 sc0 ls0 ws0">begin</div><div class="t m0 x1 h5 y21 ff5 fs3 fc0 sc0 ls0 ws0"> Maxload:=SEMaxload.V<span class="_ _c"></span>alue; //<span class="ff2 sc1">电梯最大乘客量</span></div><div class="t m0 x1 h5 y22 ff5 fs3 fc0 sc0 ls0 ws0"> PersonNum:=SEPersonNum.V<span class="_ _c"></span>alue; //<span class="ff2 sc1">参与仿真人数</span></div><div class="t m0 x1 h5 y23 ff5 fs3 fc0 sc0 ls0 ws0"> Ontime:=SEOntime.V<span class="_ _c"></span>alue; //<span class="ff2 sc1">人员到齐时间</span></div><div class="t m0 x1 h5 y24 ff5 fs3 fc0 sc0 ls0 ws0"> ElavotorSpeed:=SEElavotorSpeed.V<span class="_ _c"></span>alue; //<span class="ff2 sc1">电梯运行速度</span></div><div class="t m0 x1 h5 y25 ff5 fs3 fc0 sc0 ls0 ws0"> UpDownTime:=SEUpDownT<span class="_ _d"></span>i<span class="_ _1"></span>me.value; //<span class="ff2 sc1">上下电梯时间</span></div><div class="t m0 x1 h5 y26 ff5 fs3 fc0 sc0 ls0 ws0"> T<span class="_ _c"></span>akeNum:=SET<span class="_ _e"></span>a<span class="_ _1"></span>keNum.V<span class="_ _e"></span>a<span class="_ _1"></span>lue; //<span class="ff2 sc1">乘<span class="ff4">做</span>电梯次数</span></div><div class="t m0 x1 h7 y49 ff5 fs3 fc0 sc0 ls0 ws0"> self.hide;</div><div class="t m0 x1 h7 y4a ff5 fs3 fc0 sc0 ls0 ws0">end;</div><div class="t m0 x1 h7 y4c ff5 fs3 fc0 sc0 ls0 ws0">end.</div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>