交通燈管理系統

2021-06-11 23:25:21 字數 2835 閱讀 5891

需求:

模擬實現十字路口的交通燈管理系統邏輯,具體需求如下:

1.非同步隨機生成按照各個路線行駛的車輛。

例如:由南向而來去往北向的車輛 ---- 

直行車輛

由西向而來去往南向的車輛 ---- 

右轉車輛

由東向而來去往南向的車輛 ---- 

左轉車輛

。。。2.訊號燈忽略黃燈,只考慮紅燈和綠燈。

3.應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈控制。

4.具體訊號燈控制邏輯與現實生活中普通交通燈控制邏輯相同,不考慮特殊情況下的控制邏輯。

注:南北向車輛與東西向車輛交替放行,同方向等待車輛應先放行直行車輛而後放行左轉車輛。

5.每輛車通過路口時間為

1sleep

的方式模擬)。

6.隨機生成車輛時間間隔以及紅綠燈交換時間間隔自定,可以設定。

7.不要求實現

gui,只考慮系統邏輯實現,可通過

log方式展現程式執行結果。

物件導向的分析與設計:

1.車的通行方式:先由南北通向直行,直行以後是南北通向的左轉彎的車輛通行。

接下來是東西方向的直行車輛,直行後是東西通向的左轉彎車輛。

之後再次是南北直行車輛,如此迴圈交替行駛。

2.設想一下有哪些物件:紅綠燈,紅綠燈的控制系統,汽車,路。汽車看到自己所在的路線對應的燈

綠了就穿過路口嗎?不是,還需要看其前面是否有車,該問那個物件呢?該問路,路中存數這車輛的

集合,顯然路上就應該有增加車輛和減少車輛的方法了。回顧題目,我們這裡並不要體現車輛移動的

過程,只是捕捉出車輛穿過路口的過程,也就是捕捉路上減少一輛車的過程,所以,這個車並不需要

單獨設計成乙個物件,用乙個字串表示就可以了。

物件導向設計把握乙個重要的經驗:誰擁有資料,誰就對外提供操作這些資料的方法。在牢牢掌握幾

個典型的案例就可以了:人在黑板上花園,列車司機緊急剎車,售貨員統計收貨小票的金額。

兩塊石頭磨成一把石刀,用石刀把樹砍成木材,用木材做成椅子。實現模擬:

stoneknife = knifefactory.createknife(stone);石頭工廠把石頭變成石刀。

mood = stoneknife.cut(tree);石刀把樹砍成木材

chair = chai***ctory.makechair(mood);椅子工廠把木材做成椅子。

為什麼不把做椅子的方法分配給木材呢?

因為,木材把自己變成椅子後,木材物件就不存在了。把自己變沒了。不科學。

**如下:

road類:

public class road  catch (interruptedexception e) 

verchicles.add(road.this.name+"_"+i);

}}     

});//定時器

executors.newscheduledthreadpool(1).scheduleatfixedrate( 

new runnable()}}

},1,

1,timeunit.seconds);  }}

lamp類:

public enum lamp ;

//列舉的構造方法必須為私有,

opposite

:與之對應的燈,

next

:下乙個要亮的燈,

lighted

:燈的初始狀態

private lamp(string opposite,string next,boolean lighted)

public boolean islighted()

public void light()

}//此燈變黑的同時,要將下乙個燈點亮。並且返回下乙個燈的物件

nextlamp

,為了方便下一次呼叫此方法。

public lamp blackout()

lamp nextlamp =null;

if(this.next!=null)

return nextlamp;}}

lampcontroller類:

//實現燈的按時亮滅控制

public class lampcontroller 

},10,

10,timeunit.seconds);}}

mainclass類:

public class mainclass ;

//建立

12個路物件

for(int i =0;i因為路內部有定時器和建立車輛的執行緒,所以路物件不會馬上被

gc**,

//只有等

1000

輛車都通過後物件才會失效。

new road(directions[i]);

}//建立乙個燈控制器。

new lampcontroller();}}

定時器:

scheduleatfixedrate(runnable command, long initialdelay, long period, timeunit unit)

按照固定的頻率重複一件事

引數:command

:要執行的事務,實現

runnable

介面,和

run方法。

run方法中存放要執行的事務;

引數:initialdelay

:第一次延遲多少時間以後執行

command

事務;引數:period

:以後每次迴圈的週期;

引數:unit

:定義時間單位;

交通燈管理系統

銀行業務排程系統模擬銀行排程系統邏輯。需求 銀行內有6個業務視窗,1 4為普通視窗,5為快速視窗,6為vip視窗。有三種型別客戶 vip客戶,快速客戶 交水電費類業務 普通客戶。一部隨機生成各種型別的客戶,概率比例為 vip客戶 快速客戶 普通客戶 1 3 6。客戶辦理用時設定最少時間。各型別客戶在...

交通燈管理系統

1 非同步隨機生成按照各個路線行駛的車輛。例如 由南向而來去往北向的車輛 直行車輛 由西向而來去往南向的車輛 右轉車輛 由東向而來去往南向的車輛 左轉車輛 2 訊號燈忽略黃燈,只考慮綠燈和紅燈。3 應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈控制 4 具體訊號燈控制邏輯與現實生活中普通交通燈控制邏輯...

交通燈管理系統

實現步驟 1,建立乙個lamp類 列舉 用於操作燈.定義12個列舉物件,相當於十二盞燈 每個物件包含三個成員物件,自身燈的狀態,相對的燈的名稱,下乙個燈的名稱 初始各個狀態都為false 定義乙個islight 方法,用於返回燈物件的狀態.定義乙個light 方法,用於將當前燈和相對的燈的狀態變綠 ...