• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于JAVA的十字路口紅綠燈系統(tǒng)設(shè)計與實現(xiàn)

      2019-05-23 10:44:40楊華
      電腦知識與技術(shù) 2019年5期
      關(guān)鍵詞:管理系統(tǒng)系統(tǒng)

      楊華

      摘要:為了能夠使多個交通燈最大化協(xié)調(diào)工作,使車輛不至于在十字路口滯留的時間過長,我們利用Java語言設(shè)計十字路口交通燈管理系統(tǒng),通過系統(tǒng)對十字路口車輛及交通參與者進(jìn)行有效管理,提高十字路口交通控制水平,充分發(fā)揮路口通行能力,使其更加靈活有效地提高道路的利用率,從而達(dá)到暢通交通工程目的。

      關(guān)鍵詞:業(yè)務(wù)邏輯;系統(tǒng);java;管理系統(tǒng)

      中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2019)05-0102-03

      近年來,隨著經(jīng)濟(jì)發(fā)展,城市汽車數(shù)量的增加,我國城市交通正面臨十分嚴(yán)峻的考驗,從而導(dǎo)致交通問題的日益嚴(yán)重,其主要變現(xiàn)在:交通事故頻發(fā),交通擁堵嚴(yán)重,人們出行時間增加,日常的交通堵塞成為人們司空見慣而又不得不忍受的問題,也是迫切需要解決的社會問題。作為城市交通路網(wǎng)的關(guān)鍵部分,十字路口成為道路通行能力的瓶頸,十字路口的通行能力決定了城市交通暢通程度。因此,如何設(shè)計出智能化十字路口信號燈控制系統(tǒng),是保障十字路口交通通行能力的重要措施,是解決城市交通擁塞的有效途徑。本文我們將利用Java來開發(fā)十字路口紅綠交通燈系統(tǒng)。

      1 十字路口交通燈管理系統(tǒng)邏輯需求分析

      根據(jù)我國城市交通的實際狀況及車輛行駛慣例,分析十字路口管理系統(tǒng)實現(xiàn)邏輯,具體如下:

      1.1 交通參與者車輛行進(jìn)路線分析

      設(shè)計生成按照各個路線行駛的異步隨機(jī)路線。例如:由西向東則直行,由西向南則設(shè)計為右轉(zhuǎn),由西向北則設(shè)計為左轉(zhuǎn)等等,各個路口車輛行駛路線如圖1所示:

      1.2 路口信號燈模擬

      根據(jù)十字路口交通狀況,在設(shè)計信號燈系統(tǒng)的時候,我們主要考慮以下情況:

      右轉(zhuǎn)車輛不受信號燈控制,只考慮直行和左轉(zhuǎn)車輛控制信號燈;南北向與東西向車輛交替行駛,同向車輛應(yīng)遵循“先直行后左轉(zhuǎn)原則”;為了實時整合動態(tài)交通信息,車輛時間間隔以及紅綠燈交換時間間隔隨機(jī)生成。

      2 十字路口交通燈管理系統(tǒng)抽象對象模型的實現(xiàn)

      根據(jù)車輛行進(jìn)路線模擬圖和十字路口交通業(yè)務(wù)邏輯關(guān)系,我們把S2N表示汽車從南向北行駛,N2E表示汽車從北向東行駛,也就是正在進(jìn)行左轉(zhuǎn)彎,其他表示意思與此相同。同時車輛路口行駛規(guī)則,我們必須建立三個抽象對象模型,即交通燈模型對象(TrafficLight)、道路模型對象(RoadWay)和交通燈控制模型對象(TrafficController),其具體實現(xiàn)如下:

      2.1 道路模型對象(RoadWay類)實現(xiàn)

      設(shè)計一個RoadWay類來表示道路路線,一條路線用一個RoadWay對象表示,在十字路口,每一個路口的第一輛車都有可能有三種路線行駛,十字路口有4個路口,因此一共產(chǎn)生12條路線(即生成12個RoadWay實例對象),在Java中我們通過對12條路線的控制,實現(xiàn)對對應(yīng)路線上車輛放行功能,同時由于每條路線上的車輛是隨機(jī)增加的,因此我們可以將新增車輛添加到一個集合中保存;同時檢查控制線路的燈是否變綠,若為綠燈,表示車通過了路口,需要將集合中的第一輛車移除。

      在道路模型中我們沒有抽象出車的模型,而是抽象出路的對象,因為道路是車行駛的載體,道路含有車,并控制其創(chuàng)建與銷毀,這里主要用到了線程池相關(guān)知識,其具體實現(xiàn)過程為:

      /**

      * 每個RoadWay對象代表一條路線,系統(tǒng)要產(chǎn)生12個實例對象

      * 用一個集合中保存隨機(jī)增加的新車輛

      * 每條路線每隔一秒檢查控制本路線的燈是否為綠燈

      * 若為綠燈,移除集合中的第一輛車

      */

      public class RoadWay {

      public String CarName = null;

      public RoadWay (String CarName){

      this. CarName = CarName;

      ExecutorService pool = Executors.newSingleThreadExecutor();

      pool.execute(new Runnable(){//每1--10秒內(nèi)隨機(jī)產(chǎn)生車(不超過999輛)*/

      @Override

      public void runn() {

      int i;

      for( i=1;i<=999;i++){

      Thread.sleep((new (int)(Math.random()*1000+1);

      vechicles.add(RoadWay.this. CarName +":第"+i+"輛車");

      }} });

      ScheduledExecutorService Timer = Executors.newScheduledThreadPool(1);

      Timer.scheduleAtFixedRate(new Runnable(){

      public void runn(){

      if(vechicles.size()>0){

      boolean light =TrafficLight.valueOf(RoadWay.this. CarName).isLight();

      if(light){

      System.out.print(vechicles.remove(0)+" 正在通過十字路口!");

      } }

      }

      }, 1000,1000, TimeUnit. MILLISECONDS);

      }

      }

      2.2 交通燈模型對象(TrafficLight類)實現(xiàn)

      交通燈用一個TrafficLight類來表示,每個交通燈都有兩種狀態(tài):亮(綠)或黑(紅),由于十字路口共有12條路線,因此要設(shè)計產(chǎn)生12個交通燈對象。根據(jù)我國城市交通的實際狀況及車輛行駛慣例,一般右拐的路線設(shè)計為不受燈控制,只需要將這些燈設(shè)為常亮狀態(tài)。直行和左拐8條路線的燈,可以歸為4組(對向兩兩成對),所以,在編程處理時,只要對4個燈依次輪詢處理讓其變亮就可。在一個TrafficLight對象變亮和變黑方法中,每個燈變黑,都有下一個燈的變亮。在交通燈模型設(shè)計的時候,讓系統(tǒng)每次獲得同一個實例對象,所以TrafficLight類宜用枚舉來保存燈的實例對象,其具體實現(xiàn)過程為:

      public enum TrafficLight

      { S2N("N2S", "S2W", false,"從南向北"), S2W("N2E", "E2W", false,"從南向西"), E2W("W2E", "E2S", false,"從東向西"), E2S("W2N", "S2N", false,"從東向南"),

      N2S(null, null, false,"從北向南"), N2E(null, null, false,"從北向東"), W2E(null, null, false,"從西向東"), W2N(null, null, false,"從西向北"),

      S2E(null, null, true,""), E2N(null, null, t rue,""), N2W(null, null, true,""), W2S(null, null, true,"");

      private String opp;

      private String nextTrafficLight;

      private boolean Green;

      public boolean Grean()

      {return this.Green;}

      TrafficLight (String opp, String nextTrafficLight, boolean Green)

      { this.opp = opp;

      this.nextlamp = nextTrafficLight;

      this.Green = Green;}

      public void turnGrean()

      {this.isGreen = true;

      System.out.println(this.name() + "方向的燈變綠了!");

      if (this.opp != null)

      { TrafficLight.valueOf(this.opp).turnGrean();}}

      public TrafficLight turnRed()

      { this.isGreen = false;

      System.out.println(this.name() + "方向的燈變紅了!");

      if (this.opp != null)

      {TrafficLight.valueOf(this.opp).turnRed();}

      TrafficLight next = null;

      if (this. nextTrafficLight != null)

      { next = TrafficLight.valueOf(this. nextTrafficLight);

      TrafficLight.valueOf(this. nextTrafficLight).turnGrean();

      }

      return next;}}

      2.3 交通燈控制對象(TrafficController類)的實現(xiàn)

      TrafficLight對象設(shè)計好后,我們必須設(shè)計一個定時器,他的主要作用就是讓信號燈在規(guī)定的時間和時間間隔內(nèi)不斷的有條理地亮起來并交替變換,信號燈在變換的時候,會自動地觸發(fā)其對應(yīng)對面的信號燈和左拐燈的變化,因此,在TrafficController構(gòu)造方法中將TrafficLight設(shè)定為綠燈,通過TrafficController對象的turn方法將當(dāng)前燈變成綠燈,啟動定時器Timer,每隔30秒(時間可以根據(jù)交通流量動態(tài)設(shè)定)將當(dāng)前燈currentLamp變?yōu)榧t燈和將下一個燈變成綠燈,具體代碼如下:

      public class TrafficController {

      private TrafficController currentL;

      public TrafficController (){

      this.currentL = TrafficController.S2N;

      currentL.turnOn();

      ScheduledExecutorService Timer = Executors.newScheduledThreadPool(1);

      Timer.scheduleAtFixedRate(new Runnable(){

      public void runn(){

      currentL = currentL.turnOff();

      }

      },30,30000,TimeUnit. MILLISECONDS);}}

      3 十字路口交通燈管理系統(tǒng)運行主體類實現(xiàn)

      運行主體類用來模擬汽車通過十字路口時交通燈的工作情況以及車輛通過情況,具體設(shè)計代碼如下:

      public class Test {

      public static void main(String[] args) {

      String direc [] = {"S2N","S2W","E2W","N2S","E2S" ,"N2E","W2E","W2N"," E2N "," S2E ","N2W","W2S"};

      int k;

      for(k=0; k

      new RoadWay(direc [k]);}

      new TrafficController ();}}

      總之,城市交通管理系統(tǒng)是一個具有不同功能綜合系統(tǒng),若只靠簡單地擴(kuò)大道路基礎(chǔ)設(shè)施并不能解決交通擁堵問題。只有使用合理的軟件系統(tǒng)設(shè)計,建立良好交通管理方案模型,優(yōu)化設(shè)計方案,提高交通管理和控制水平,分配好現(xiàn)有交通設(shè)施,充分發(fā)揮路口通行能力,使其更加靈活有效地提高道路的利用率,緩解城市交通擁堵狀況。

      參考文獻(xiàn):

      [1] 江世明.單片機(jī)應(yīng)用及原理[M].2版. 上海:上海交通大學(xué)出版社,2005.

      [2] 朱福喜.面向?qū)ο笈cJava程序設(shè)計[M].北京:清華大學(xué)出版社出版,2009.

      [3] 王利. Java面向?qū)ο蟪绦蛟O(shè)計[M].北京:清華大學(xué)出版社出版,2004.

      [4] 王宏宇,賈仰理. Java面向?qū)ο蟪绦蛟O(shè)計[M].北京:中國人民大學(xué)出版社,2009.

      【通聯(lián)編輯:謝媛媛】

      猜你喜歡
      管理系統(tǒng)系統(tǒng)
      Smartflower POP 一體式光伏系統(tǒng)
      基于James的院內(nèi)郵件管理系統(tǒng)的實現(xiàn)
      WJ-700無人機(jī)系統(tǒng)
      ZC系列無人機(jī)遙感系統(tǒng)
      北京測繪(2020年12期)2020-12-29 01:33:58
      基于LED聯(lián)動顯示的違停管理系統(tǒng)
      連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
      海盾壓載水管理系統(tǒng)
      中國船檢(2017年3期)2017-05-18 11:33:08
      基于RFID的倉儲管理系統(tǒng)實現(xiàn)
      揭西县| 绥滨县| 县级市| 偃师市| 阿拉善盟| 曲阳县| 翁牛特旗| 厦门市| 江北区| 治县。| 板桥市| 金坛市| 广昌县| 云安县| 永济市| 木兰县| 东山县| 缙云县| 肇源县| 沙河市| 伊宁市| 鄯善县| 盐津县| 仁寿县| 铜川市| 滕州市| 重庆市| 辽宁省| 汽车| 南充市| 景德镇市| 正蓝旗| 易门县| 北碚区| 麻阳| 西昌市| 新乡县| 德化县| 波密县| 莱阳市| 沁阳市|