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 方法,用於將當前燈和相對的燈的狀態變綠 ...