国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

楊華

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

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

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

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

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

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

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

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

1.2 路口信號(hào)燈模擬

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

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

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

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

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

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

在道路模型中我們沒(méi)有抽象出車的模型,而是抽象出路的對(duì)象,因?yàn)榈缆肥擒囆旭偟妮d體,道路含有車,并控制其創(chuàng)建與銷毀,這里主要用到了線程池相關(guān)知識(shí),其具體實(shí)現(xiàn)過(guò)程為:

/**

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

* 用一個(gè)集合中保存隨機(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)生車(不超過(guò)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)+" 正在通過(guò)十字路口!");

} }

}

}, 1000,1000, TimeUnit. MILLISECONDS);

}

}

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

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

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 交通燈控制對(duì)象(TrafficController類)的實(shí)現(xiàn)

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

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)運(yùn)行主體類實(shí)現(xiàn)

運(yùn)行主體類用來(lái)模擬汽車通過(guò)十字路口時(shí)交通燈的工作情況以及車輛通過(guò)情況,具體設(shè)計(jì)代碼如下:

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)是一個(gè)具有不同功能綜合系統(tǒng),若只靠簡(jiǎn)單地?cái)U(kuò)大道路基礎(chǔ)設(shè)施并不能解決交通擁堵問(wèn)題。只有使用合理的軟件系統(tǒng)設(shè)計(jì),建立良好交通管理方案模型,優(yōu)化設(shè)計(jì)方案,提高交通管理和控制水平,分配好現(xiàn)有交通設(shè)施,充分發(fā)揮路口通行能力,使其更加靈活有效地提高道路的利用率,緩解城市交通擁堵?tīng)顩r。

參考文獻(xiàn):

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

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

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

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

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

猜你喜歡
管理系統(tǒng)系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
基于James的院內(nèi)郵件管理系統(tǒng)的實(shí)現(xiàn)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
基于LED聯(lián)動(dòng)顯示的違停管理系統(tǒng)
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
海盾壓載水管理系統(tǒng)
基于RFID的倉(cāng)儲(chǔ)管理系統(tǒng)實(shí)現(xiàn)
孝感市| 武邑县| 嘉荫县| 新余市| 安西县| 辰溪县| 五大连池市| 晋江市| 广东省| 竹北市| 金山区| 南康市| 政和县| 栖霞市| 武川县| 蓝田县| 鹤山市| 修水县| 平顶山市| 禹州市| 阿拉善右旗| 建昌县| 青浦区| 奇台县| 灵川县| 房产| 三明市| 凤冈县| 乌拉特前旗| 和政县| 黄浦区| 普格县| 华亭县| 南昌市| 柘城县| 兴业县| 措美县| 西畴县| 渝中区| 资阳市| 涟源市|