黑馬程式設計師 交通燈控制系統

2021-06-21 06:35:03 字數 3367 閱讀 9471

---------------------- asp.net+unity開發、.net培訓、期待與您交流! ----------------------

交通燈管理系統:

一.專案需求:二.需求分析:

1).交通訊號燈控制器的分析:

1基本概念:將兩個方向對立的訊號燈歸為一組,如南訊號燈和北訊號燈為一組,東南訊號燈和西北訊號燈為一組

2.基本邏輯:任意時刻,只能有一組訊號燈保持亮的狀態,右轉車輛不受訊號燈控制,因此右轉方向不設訊號燈

3.基本功能:按照順時針方向,迴圈讓每一組訊號燈保持亮的狀態一段時間 

2.交通訊號燈控制器的資料結構:設定乙個方向陣列,用來儲存需要被排程的方向,

以組為單位 :string direction=

3.交通訊號燈控制器的方法:

獲取當前訊號燈狀態方法,該方法返回當前一組儲存亮狀態的訊號燈:public string getcurrentstatues();

迴圈讓訊號燈儲存亮的狀態一段時間的方法,該方法按照順時針 讓每一組訊號燈儲存亮的狀態一段時間(我這裡設定成10秒鐘):public void controlerrun();

2).車輛的行為分析:

1.基本邏輯:車輛在通過路口時必須檢查當前訊號燈狀態,只有當前訊號燈狀態和自己的行進狀態相同時才能通過路口,

否則等待訊號燈轉為自己行進方向時再通過。車輛必須按順序通過路口,當自己前面有車沒通過路口時排隊等前面的車通過路口再通過

2.車輛的資料結構:車輛物件要儲存車輛名稱,車輛所屬的路,以及車輛的行進方向;

string carname//車輛的名稱

string  whichroad//車輛在那個路上

string rundirection//車輛開往的方向 

2.車輛應該具有的方法:

1.獲取當前訊號燈狀態:  private string getcurrentstatues();

2.判斷當前能否通過路口 :boolean canpass(string currentstatues);

3.通過路口 :void passroad();

4繼續等待  :void waitforpass();

3).路的行為分析:

1.基本邏輯:所有的車輛都要在路上,因此路是乙個容器 ,每輛車通行的時間為一秒因此路每過一秒鐘就要檢視當前路口的車是否能通過,

通過呼叫car類的canpass()函式。如果當前路口的車輛能通過就呼叫當前車輛的passroad()函式,否則呼叫當前車輛的waitforpass()函式使車輛在路口繼續等待

具體實現**如下:

/**

* 交通燈控制類,該交通燈類可以定時的改變訊號燈狀態,小汽車類可以

* 通過該類身上的getcurrentstatus()方法得到當前的訊號燈狀態以判斷是否

* 能夠通過路口

*/class lampcontroler extends thread ;// 交通燈可以控制的方向陣列

private static int currentdirection = 0;//當前的訊號燈狀態

public void run()

public static string getcurrentstatus()

//改變訊號燈狀態

private void setcurrentdirection()

//定時的改變訊號燈狀態

private void controlerrun()

} private void holdon(int time) catch (exception e) }}

/** * 小汽車類,每乙個小汽車物件內部都封裝了該小汽車的名稱,現在在哪條路上以及要開往的方向

* 小汽車通過交通燈類的getcurrentstatus()方法得到當前的訊號燈狀態,再和自己要開往的方向

* 作比較,如果當前的訊號燈狀態和自己要開往的方向相同則通過路口,如果不相同則在路口等待,

* 等待的時候定時的查詢交通燈狀態直到交通燈狀態允許自己通過路口然後通過路口。

* */

class car

private void getcurrentstatus()

public boolean canpass()

return (currentstatus.indexof(rundirection) != -1) ? true : false;

} public void passroad()

public void waitforpass()

}/**

* 公路類,公路類是被當做小汽車容器和小汽車產生器來使用的,公路類會不定時的生產小

* 汽車,然後把小汽車物件儲存到自己內部的list中,然後每隔一秒鐘都會試圖從list頂部

* 取出一輛小汽車讓他去通過路口,但能否通過路口還要看當前的訊號燈狀態和小汽車要開往

* 的方向,如果能通過則將該list頂部的小汽車移除,以表示當前小汽車已經通過路口,不能通過

* 則什麼也不做,等待一秒繼續嘗試。

*/class road extends thread ;//每條路可以開往的方向

private final static string eroad = ;

private final static string nroad = ;

private final static string sroad = ;

private string canrundirection;

private int carnum = 0;// 汽車編號

private string roadname;// 路的名稱

private car waitforpasscar;// 在路口等待的那輛車

private random random = new random();

//通過建立公路類時給出的名稱來決定該公路類上可以開往的方向,

//共有四個公路類,分別為東西南北,每個公路類可以開往的方向不同

public road(string roadname)

private void randomcar()

} public void run() else else

}try catch (interruptedexception e)

} }}//啟動類,用來啟動整個程式

public class lampdemo

}

----------------------

asp.net+unity開發、

.net培訓、期待與您交流! ----------------------

詳細請檢視:

www.itheima.com

黑馬程式設計師 交通燈系統

交通燈管理系統 例如 由南向而來去往北向的車輛 直行車輛 由西向而來去往南向的車輛 右轉車輛 由東向而來去往南向的車輛 左轉車輛 注 南北向車輛與東西向車輛交替放行,同方向等待車輛應先放行直行車輛而後放行左轉車輛。隨機生成車輛時間間隔以及紅綠燈交換時間間隔自定,可以設定。不要求實現gui,只考慮系統...

黑馬程式設計師 交通燈

asp.net unity開發 net培訓 期待與您交流!交通燈管理系統 1,首先向張孝祥老師致敬 張孝祥老師語錄 i.害羞是找不到工作的。ii.細節見真英雄 iii.新技術是為解決問題而誕生的 iv.人的精力是有限的,應該把精力留給自己最愛的事業上,或者最主要的事情上 v.人的精力就那麼一點,不能...

黑馬程式設計師 交通燈案例學習

asp.net android ios開發 net培訓 期待與您交流!這個案例剛開始看時一頭霧水,特別是路線看起來很多,非常干擾。後來跟著把 敲了一遍,慢慢才理解解題思路以及 的實現。1.多畫圖分析 2.多寫 即使不懂也可以跟著示例打 3.多注意各個類之間的關係,通過什麼樣的方式聯絡。下面說說學習這...