交通燈管理系統

2021-06-18 21:09:02 字數 3440 閱讀 5419

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

例如:由南向而來去往北向的車輛……直行車輛

由西向而來去往南向的車輛……右轉車輛

由東向而來去往南向的車輛……左轉車輛

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

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

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

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

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

7、不要求實現gui,只考慮系統邏輯實現,可以通過log方式展現程式執行結果

總共有12條路線,為了統一程式設計模型,可以假設每條路線都有乙個紅綠燈對其進行控制,左右彎的4條路線的控制燈可以假設為常綠狀態,另外,其他的8條路線是倆倆成對的,可以考慮歸於4組,所以,程式只需要考慮途中標註了數字號的4條路線的控制燈的切換順序,這4條路線相反方向的路線的控制燈跟隨這4條路線切換,不必額外考慮。

1.3.1 每條路線上都會出現多倆車,路線上要隨機增加新的車,在燈綠期間還要每秒鐘減少一倆車。

我們初步設想一下有哪些物件,紅綠燈,紅綠燈控制系統,汽車,路線。汽車看到自己所在路線上對應的燈綠了就穿過路口嗎?不是,還需要看前面是否有車。看前面是否有車該問誰?該問路,路中儲存著車輛的集合,顯然路,這個物件應該有增減車輛的方法。再看題目,我們這裡並不要體現車輛的移動過程,只要捕捉到車輛穿過路口的過程,也就是捕捉路上減少一倆車的過程,所以,這個車並需要單獨設計成為乙個物件,用乙個字串表示就行。

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

1、兩塊石頭磨成一把石刀,石刀可以砍樹,砍成木材,木材做成椅子。

物件:stone、stoneknife、tree、material、chair

分析:1、假如磨成刀的方法是石頭的,當刀磨成了,石頭就沒了,所以磨刀的方法不是石頭的,而是有乙個石刀加工

stoneknifes toneknife = knifefactory.createknife(stone first,stone second)

2、石刀有乙個方法砍樹

material = stoneknife.cut(tree);3、同1的思想,想要做椅子,要有乙個工廠。
chair = chai***ctory.createchair(material);

2、球從一根繩子的一端移動到了另一端

classpoint

classrope

publicpoint nextpoint(point currentpoint) }

public

classball

public

voidmove()

public

static

voidmain(string args) }

1.3.2 每條線路每隔一秒都會檢查控制本路線的燈是否為綠燈,乙個燈由綠變紅時,應該將下乙個方向的燈變綠。

1、設計乙個lamp類表示乙個交通燈,每乙個交通燈都維護乙個狀態,綠或者紅,每個交通燈都有變綠或變紅的方法,並且能返回自己的變紅狀態。

2、總共有12條線路,所以,系統中總共要產生12個交通燈,右拐的錄影本來不受燈的控制,但是為了讓程式採用統一的處理方式,顧假設出有4個右拐的燈,只是這些燈為常綠狀態。

3、除了右拐彎方向的其他8條路線的燈,它們是兩兩成對的,可以歸為4組,所以,在程式設計處理是,只要從這4組中各取出乙個燈,對這4個燈依舊變綠,與這4個燈對應的燈則隨著這一同變化,因此lamp類中要有乙個變數來記住自己相反方向的燈,在乙個lamp物件的變綠或變紅的方法中,將對應方向的燈也變綠或變紅,每個燈變紅時,都伴隨著下乙個燈的變綠,lamp類中還用乙個變綠來記住自己的下乙個燈。

4、無論在程式的什麼地方去獲得某個方向的燈時,每次獲得的都是同乙個例項物件,所以lamp類改用列舉來做具有很大的方便性,永遠都只有代表12個方向的燈的例項物件。

5、設計乙個lampcontroller類,它定時讓當前的綠燈變紅。

public

classroadcatch(interruptedexception e)

for(inti = 0; i < 1000; i++)

}});

//使用定時器在

road

類中,模擬汽車穿過路口的**

scheduledexecutorservice timer  = executors.newscheduledthreadpool(1);

timer.scheduleatfixedrate(newrunnable()

}}       

}, 1, 1, timeunit.seconds);

}}public

enumlamp

privatelamp()   

public

booleanisgreen()

public

voidgreen()   

system.out

.println(name()+

"lamp is green");

}publiclamp red()

lampnextlamp =null;

if(

next

!=null)

returnnextlamp; }

} 2.3 編寫交通控制燈的類和總測試

1、交通控制燈的類

public

classlampcontrollor   

}, 10, 10, timeunit.seconds);

}} 2

、總測試類

public

classmaintest ;

for(inti = 0; i < directions.

length

; i++)

newlampcontrollor(); }

}

交通燈管理系統

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

交通燈管理系統

需求 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下 1.非同步隨機生成按照各個路線行駛的車輛。例如 由南向而來去往北向的車輛 直行車輛 由西向而來去往南向的車輛 右轉車輛 由東向而來去往南向的車輛 左轉車輛 2.訊號燈忽略黃燈,只考慮紅燈和綠燈。3.應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈...

交通燈管理系統

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