java交通燈標(biāo)準(zhǔn)管理系統(tǒng)源代碼_第1頁(yè)
java交通燈標(biāo)準(zhǔn)管理系統(tǒng)源代碼_第2頁(yè)
java交通燈標(biāo)準(zhǔn)管理系統(tǒng)源代碼_第3頁(yè)
java交通燈標(biāo)準(zhǔn)管理系統(tǒng)源代碼_第4頁(yè)
java交通燈標(biāo)準(zhǔn)管理系統(tǒng)源代碼_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

packageerview.traffic;importjava.util.ArrayList;importjava.util.List;importjava.util.Random;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.ScheduledExecutorService;importjava.util.concurrent.TimeUnit;/***每個(gè)Road對(duì)象代表一條路線,總共有12條路線,即系統(tǒng)中總共要產(chǎn)生12個(gè)Road實(shí)例對(duì)象。*每條路線上隨機(jī)增加新車輛,增加到一個(gè)集合中保留。*每條路線每隔一秒全部會(huì)檢驗(yàn)控制本路線燈是否為綠,是則將本路線保留車集合中第一輛車移除,即表示車穿過(guò)了路口。*@author張孝祥315.org**/publicclassRoad{ privateList<String>vechicles=newArrayList<String>(); privateStringname=null; publicRoad(Stringname){ =name; //模擬車輛不停隨機(jī)上途經(jīng)程 ExecutorServicepool=Executors.newSingleThreadExecutor(); pool.execute(newRunnable(){ publicvoidrun(){ for(inti=1;i<1000;i++){ try{ Thread.sleep((newRandom().nextInt(10)+1)*1000); }catch(InterruptedExceptione){ e.printStackTrace(); } vechicles.add(R+"_"+i); } } }); //每隔一秒檢驗(yàn)對(duì)應(yīng)燈是否為綠,是則放行一輛車 ScheduledExecutorServicetimer=Executors.newScheduledThreadPool(1); timer.scheduleAtFixedRate( newRunnable(){ publicvoidrun(){ if(vechicles.size()>0){ booleanlighted=Lamp.valueOf(R).isLighted(); if(lighted){ System.out.println(vechicles.remove(0)+"istraversing!"); } } } }, 1, 1, TimeUnit.SECONDS); }}packageerview.traffic;publicclassMainClass{ /** *@paramargs */ publicstaticvoidmain(String[]args){ /*產(chǎn)生12個(gè)方向路線*/ String[]directions=newString[]{ "S2N","S2W","E2W","E2S","N2S","N2E","W2E","W2N","S2E","E2N","N2W","W2S" }; for(inti=0;i<directions.length;i++){ newRoad(directions[i]); } /*產(chǎn)生整個(gè)交通燈系統(tǒng)*/ newLampController(); }}packageerview.traffic;importjava.util.concurrent.Executors;importjava.util.concurrent.ScheduledExecutorService;importjava.util.concurrent.TimeUnit;publicclassLampController{ privateLampcurrentLamp; publicLampController(){ //剛開(kāi)始讓由南向北燈變綠; currentLamp=Lamp.S2N; currentLamp.light(); /*每隔10秒將目前綠燈變?yōu)榧t燈,并讓下一個(gè)方向燈變綠*/ ScheduledExecutorServicetimer=Executors.newScheduledThreadPool(1); timer.scheduleAtFixedRate( newRunnable(){ publicvoidrun(){ System.out.println("來(lái)啊"); currentLamp=currentLamp.blackOut(); } }, 10, 10, TimeUnit.SECONDS); }}packageerview.traffic;/***每個(gè)Lamp元素代表一個(gè)方向上燈,總共有12個(gè)方向,全部總共有12個(gè)Lamp元素。*有以下部分方向上燈,每?jī)蓚€(gè)形成一組,一組燈同時(shí)變綠或變紅,所以,*程序代碼只需要控制每組燈中一個(gè)燈即可:*s2n,n2s*s2w,n2e*e2w,w2e*e2s,w2n*s2e,n2w*e2n,w2s*上面最終兩行燈是虛擬,因?yàn)閺哪舷驏|和從西向北、和它們對(duì)應(yīng)方向不受紅綠燈控制,*所以,能夠假想它們總是綠燈。*@author張孝祥315.org**//**/publicenumLamp{ /*每個(gè)枚舉元素各表示一個(gè)方向控制燈*/ S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","E2S",false),E2S("W2N","S2N",false), /*下面元素表示和上面元素相反方向燈,它們“相反方向燈”和“下一個(gè)燈”應(yīng)忽略不計(jì)!*/ N2S(null,null,false),N2E(null,null,false),W2E(null,null,false),W2N(null,null,false), /*由南向東和由西向北等右拐彎燈不受紅綠燈控制,所以,能夠假想它們總是綠燈*/ S2E(null,null,true),E2N(null,null,true),N2W(null,null,true),W2S(null,null,true); privateLamp(Stringopposite,Stringnext,booleanlighted){ this.opposite=opposite; this.next=next; this.lighted=lighted; } /*目前燈是否為綠*/ privatebooleanlighted; /*和目前燈同時(shí)為綠對(duì)應(yīng)方向*/ privateStringopposite; /*目前燈變紅時(shí)下一個(gè)變綠燈*/ privateStringnext; publicbooleanisLighted(){ returnlighted; } /** *某個(gè)燈變綠時(shí),它對(duì)應(yīng)方向燈也要變綠 */ publicvoidlight(){ this.lighted=true; if(opposite!=null){ Lamp.valueOf(opposite).light(); } System.out.println(name()+"lampisgreen,下面總共應(yīng)該有6個(gè)方向能看到汽車穿過(guò)!"); } /** *某個(gè)燈變紅時(shí),對(duì)應(yīng)方向燈也要變紅,而且下一個(gè)方向燈要變綠 *@return下一個(gè)要變綠燈 */ publicLampblackOut(){ this.lighted=false; if(opposite!=null){ Lamp.valueOf(opposite).blackOut()

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論