交通信號(hào)燈模擬(pv操作) 網(wǎng)絡(luò)操作系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩26頁(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)介

1、<p><b>  目 錄</b></p><p>  第一章 課程設(shè)計(jì)目的和要求1</p><p>  1.1 課程設(shè)計(jì)目的1</p><p>  1.2 課程設(shè)計(jì)要求1</p><p>  第二章 課程設(shè)計(jì)任務(wù)內(nèi)容3</p><p>  2.1課程設(shè)計(jì)任務(wù)3</p&g

2、t;<p>  2.2 課程設(shè)計(jì)原理3</p><p>  2.3 課程設(shè)計(jì)內(nèi)容4</p><p>  第三章 詳細(xì)設(shè)計(jì)說(shuō)明5</p><p>  3.1 模塊描述5</p><p>  3.2 性能描述5</p><p><b>  3.3 輸入項(xiàng)6</b></p

3、><p><b>  3.4 輸出項(xiàng)6</b></p><p>  3.5 數(shù)據(jù)結(jié)構(gòu)7</p><p>  3.6 算法介紹7</p><p><b>  3.7 流程圖8</b></p><p>  3.7.1 主程序流程圖8</p><p>

4、  3.7.2 算法流程圖9</p><p>  3.8 接口描述11</p><p>  3.9 限制條件13</p><p>  第四章 件使用說(shuō)明13</p><p>  4.1 系統(tǒng)開發(fā)與運(yùn)行環(huán)境13</p><p>  4.2系統(tǒng)的運(yùn)行說(shuō)明13</p><p>  4.3

5、運(yùn)行結(jié)果13</p><p>  第五章 課程設(shè)計(jì)心得體會(huì)19</p><p>  附錄1:參考文獻(xiàn)20</p><p>  附錄2:程序清單21</p><p><b>  交通信號(hào)燈模擬</b></p><p>  第一章 課程設(shè)計(jì)目的和要求</p><p> 

6、 1.1 課程設(shè)計(jì)目的</p><p>  根據(jù)學(xué)院課程安排,在大三的第一個(gè)學(xué)期我們開設(shè)了操作系統(tǒng)這門課程,操作系統(tǒng)可以說(shuō)是是計(jì)算機(jī)系統(tǒng)的核心和靈魂,是計(jì)算機(jī)系統(tǒng)必不可少的組成部分。通過(guò)學(xué)習(xí),對(duì)于操作系統(tǒng)的運(yùn)行方式以及設(shè)計(jì)理念有了較清楚的認(rèn)識(shí)。</p><p>  要想真正學(xué)好并理解操作系統(tǒng)這門課程,不但需要理解操作系統(tǒng)的概念和原理,還需要加強(qiáng)操作系統(tǒng)實(shí)驗(yàn),上機(jī)進(jìn)行編程實(shí)踐,現(xiàn)在一學(xué)期的課

7、程已經(jīng)結(jié)束,本次課程設(shè)計(jì)在同學(xué)們掌握理解該課程的基礎(chǔ)上,對(duì)操作系統(tǒng)內(nèi)部的一些具體項(xiàng)目的實(shí)現(xiàn)方法進(jìn)行實(shí)戰(zhàn)演練,通過(guò)實(shí)踐將知識(shí)徹底掌握。</p><p>  操作系統(tǒng)課程設(shè)計(jì)是該課程重要的實(shí)踐教學(xué)環(huán)節(jié)。通過(guò)這次課程設(shè)計(jì),一方面可以使學(xué)生更透徹地理解操作系統(tǒng)的基本概念和原理,擺脫抽象的理解,從實(shí)踐中將理論具體化;另一方面,通過(guò)課程設(shè)計(jì)還可以加強(qiáng)學(xué)生的實(shí)踐能力,培養(yǎng)學(xué)生獨(dú)立分析問(wèn)題、解決問(wèn)題、應(yīng)用知識(shí)的能力和創(chuàng)新精神。&

8、lt;/p><p>  本次課程設(shè)計(jì)的題目為交通信號(hào)燈模擬,在熟練掌握課本所講解的計(jì)算機(jī)的P操作和V操作的原理的基礎(chǔ)上,利用C++程序設(shè)計(jì)語(yǔ)言在windows操作系統(tǒng)下模擬實(shí)現(xiàn)交通信號(hào)燈的模擬,一方面加深對(duì)原理的理解,另一方面提高根據(jù)已有原理通過(guò)編程解決實(shí)際問(wèn)題的能力,為進(jìn)行系統(tǒng)軟件開發(fā)和針對(duì)實(shí)際問(wèn)題提出高效的軟件解決方案打下基礎(chǔ)。</p><p>  1.2 課程設(shè)計(jì)要求</p>

9、<p>  在深入理解操作系統(tǒng)基本原理和充分理解課題的基礎(chǔ)上,對(duì)于選定的題目,獨(dú)立自主思考,通過(guò)查閱相關(guān)資料,先確定設(shè)計(jì)方案,設(shè)計(jì)程序的運(yùn)行流程,分析程序所需的模塊及各個(gè)模塊所包含的功能,之后設(shè)計(jì)每個(gè)模塊的處理流程,并畫出相應(yīng)的流程圖,要求設(shè)計(jì)合理,利用VC++6.0編程實(shí)現(xiàn),并且程序要擁有可視化的運(yùn)行界面,界面應(yīng)清楚地反映出系統(tǒng)的運(yùn)行結(jié)果,之后個(gè)人確定好測(cè)試方案,選擇測(cè)試用例,對(duì)系統(tǒng)進(jìn)程測(cè)試,運(yùn)行程序并截圖,截圖要能充分

10、說(shuō)明結(jié)果,說(shuō)明系統(tǒng)的使用方法和特點(diǎn),并提交課程設(shè)計(jì)報(bào)告。</p><p>  對(duì)于模擬交通信號(hào)燈的情況,要求在掌握P、V操作的基礎(chǔ)上,能夠進(jìn)行合理的調(diào)度,并利用各種算法來(lái)實(shí)現(xiàn)車輛通行、控制、記錄等功能。</p><p>  第二章 課程設(shè)計(jì)任務(wù)內(nèi)容</p><p><b>  2.1課程設(shè)計(jì)任務(wù)</b></p><p>

11、  一個(gè)十字路口,共有四組紅綠燈,每個(gè)路口的車輛都遵循"紅燈停,綠燈行"的原則,假設(shè)將每一臺(tái)汽車都作為一個(gè)進(jìn)程,請(qǐng)?jiān)O(shè)計(jì)良好的機(jī)制,展示出合理的"十字路口交通管理"情況.</p><p>  車輛通行設(shè)定:路口寬度不限,對(duì)一個(gè)路口而言,只有當(dāng)一輛車通過(guò)路口(越過(guò)對(duì)面路口的交通燈后)后,其后續(xù)車輛才能繼續(xù)通過(guò)交通燈,車輛通過(guò)路口的時(shí)間可以固定,可以自行計(jì)算。</p>

12、<p>  進(jìn)程的互斥:交通燈進(jìn)程實(shí)際上是互斥的,即不能同時(shí)為紅或者同時(shí)為綠.</p><p>  進(jìn)程的消息通信或其他通信方式:對(duì)車輛進(jìn)程而言,每一個(gè)車輛在通過(guò)路口前,必須確認(rèn)前面的車輛已經(jīng)通過(guò)了路口.</p><p>  進(jìn)程的調(diào)度:停留在一個(gè)路口的車輛,決定其前進(jìn)或等候的因素是交通燈和前面車輛的狀態(tài),需要設(shè)計(jì)一個(gè)良好的進(jìn)程調(diào)度機(jī)制來(lái)控制所有車輛的通行。</p>

13、;<p>  2.2 課程設(shè)計(jì)原理</p><p>  本實(shí)驗(yàn)利用P、V操作進(jìn)行設(shè)計(jì)。</p><p>  信號(hào)量S是一個(gè)整數(shù),S大于等于零時(shí)代表可供并發(fā)進(jìn)程使用的資源實(shí)體數(shù),但S小于零時(shí)則表示正在等待使用臨界區(qū)的進(jìn)程數(shù)。</p><p>  P原語(yǔ)操作的動(dòng)作是:</p><p><b>  (1)S減1;</b

14、></p><p>  (2)若S減1后仍大于或等于零,則進(jìn)程繼續(xù)執(zhí)行;</p><p> ?。?)若S減1后小于零,則該進(jìn)程被阻塞后進(jìn)入與該信號(hào)相對(duì)應(yīng)的隊(duì)列中,然后轉(zhuǎn)進(jìn)程調(diào)度。</p><p>  V原語(yǔ)操作的動(dòng)作是:</p><p><b> ?。?)S加1;</b></p><p> 

15、?。?)若相加結(jié)果大于零,則進(jìn)程繼續(xù)執(zhí)行;</p><p> ?。?)若相加結(jié)果小于或等于零,則從該信號(hào)的等待隊(duì)列中喚醒一等待進(jìn)程,然后再返回原進(jìn)程繼續(xù)執(zhí)行或轉(zhuǎn)進(jìn)程調(diào)度。</p><p>  PV操作對(duì)于每一個(gè)進(jìn)程來(lái)說(shuō),都只能進(jìn)行一次,而且必須成對(duì)使用。在PV原語(yǔ)行期間不允許有中斷的發(fā)生。</p><p>  本課題利用P操作和V操作來(lái)模擬車輛的出發(fā)和到達(dá)。<

16、/p><p>  2.3 課程設(shè)計(jì)內(nèi)容</p><p>  假設(shè)在一個(gè)十字路口,共有四組紅綠燈,每個(gè)路口的車輛都遵循"紅燈停,綠燈行"的原則,假設(shè)將每一臺(tái)汽車都作為一個(gè)進(jìn)程,要求設(shè)計(jì)良好的調(diào)度機(jī)制,展示出合理的"十字路口交通管理"情況.</p><p>  對(duì)于本程序,對(duì)于車輛通行,設(shè)定為路口的寬度不限,對(duì)一個(gè)路口而言,只有當(dāng)一輛

17、車通過(guò)路口(越過(guò)對(duì)面路口的交通燈后)后,其后續(xù)車輛才能繼續(xù)通過(guò)交通燈,車輛通過(guò)路口的時(shí)間可以固定,并且可以自行計(jì)算。交通燈的進(jìn)程實(shí)際上是互斥的,即不能同時(shí)為紅或者同時(shí)為綠.對(duì)車輛進(jìn)程而言,每一個(gè)車輛在通過(guò)路口前,必須確認(rèn)前面的車輛已經(jīng)通過(guò)了路口.</p><p>  同時(shí),停留在一個(gè)路口的車輛,決定其前進(jìn)或等候的因素是交通燈和前面車輛的狀態(tài),需要設(shè)計(jì)一個(gè)良好的進(jìn)程調(diào)度機(jī)制來(lái)控制所有車輛的通行。</p>

18、<p>  在模擬車輛運(yùn)行的進(jìn)程中,要求可以按要求捕捉所需要的車輛的出發(fā)時(shí)間。在進(jìn)程程序設(shè)計(jì)的過(guò)程中要保證程序運(yùn)行的流暢度,合理模擬車輛遇到紅綠燈變換是黃燈的暫停情況。</p><p>  對(duì)于結(jié)果的分析要能夠得到具有代表性的數(shù)據(jù),比如可以根據(jù)用戶需要捕獲特定的某輛車的情況等。</p><p>  第三章 詳細(xì)設(shè)計(jì)說(shuō)明</p><p><b>

19、;  3.1 模塊描述</b></p><p>  對(duì)于交通信號(hào)燈模擬程序,其功能模塊圖如下圖3-1所示:</p><p>  圖3-1 交通信號(hào)燈模擬程序功能模塊圖</p><p>  對(duì)于交通信號(hào)燈模擬程序,系統(tǒng)需要實(shí)現(xiàn)的功能包括:</p><p>  1、模擬車輛駛出十字路口的一端。</p><p>

20、  2、模擬車輛到達(dá)路十字路口的另一端。</p><p>  3、可以記錄需要的車輛的出發(fā)時(shí)間和編號(hào)。</p><p>  4、利用有效的調(diào)度程序?qū)囕v的行進(jìn)進(jìn)行相應(yīng)的控制。</p><p>  5、要能對(duì)車輛是否能行進(jìn)進(jìn)行合理的判斷。</p><p>  6、要能合理的進(jìn)行紅綠燈的變換操作。 </p><p>&

21、lt;b>  3.2 性能描述</b></p><p>  交通信號(hào)燈模擬程序,要求能模擬出交通信號(hào)燈處的車輛運(yùn)行狀況,要求能進(jìn)行合理的調(diào)度和紅綠燈切換,不考慮車輛在十字路口中間行駛的過(guò)程,視為離開后下一時(shí)刻直接到達(dá)對(duì)面。要求能記錄想要記錄的車輛的運(yùn)行時(shí)間以及車輛編號(hào)。</p><p>  車輛的運(yùn)行通過(guò)P操作和V操作執(zhí)行,P操作進(jìn)行車輛駛出的操作,V操作進(jìn)行車齡到達(dá)的操

22、作。</p><p>  車輛運(yùn)行調(diào)度通過(guò)ETW和STN執(zhí)行,分別判斷南北向和東西向是否有車,由此來(lái)控制是否能進(jìn)行通車。</p><p>  紅綠燈的變換用來(lái)調(diào)整南北和東西是否有車的狀態(tài),同時(shí)進(jìn)行輸出,報(bào)告紅綠燈切換狀態(tài)并暫停2秒。</p><p><b>  3.3 輸入項(xiàng)</b></p><p>  對(duì)于交通信號(hào)燈模

23、擬程序,需要的輸入項(xiàng)包括:</p><p>  東、西、南、北四個(gè)方向的車輛數(shù)量,需要記錄的車兩的駛來(lái)方向和需要記錄的車輛的編號(hào),如表3-1所示。</p><p>  表3-1 自行輸入數(shù)據(jù)表</p><p>  需要在定義里定義的數(shù)據(jù),可自行更改,如下:</p><p>  綠燈持續(xù)時(shí)間,如表3-2所示。</p><p&

24、gt;  表3-2 初始定義數(shù)據(jù)表</p><p><b>  3.4 輸出項(xiàng)</b></p><p>  對(duì)于交通信號(hào)燈模擬程序,需要的輸出項(xiàng)包括:</p><p>  車輛行駛的方向、車輛編號(hào)、車輛出發(fā)時(shí)間,如表3-3所示:</p><p><b>  表3-3 輸出項(xiàng)表</b></p&g

25、t;<p><b>  3.5 數(shù)據(jù)結(jié)構(gòu)</b></p><p>  為了實(shí)現(xiàn)題設(shè)的要求,在VC++6.0環(huán)境下編譯實(shí)現(xiàn),整個(gè)系統(tǒng)的主要流程設(shè)計(jì)為如下步驟:</p><p>  1.定義全局變量用來(lái)存放實(shí)驗(yàn)所需基本信息</p><p>  2.change函數(shù)實(shí)現(xiàn)交換無(wú)車標(biāo)志的功能</p><p>  3.

26、P函數(shù)模擬P原語(yǔ)的功能</p><p>  4.V函數(shù)模擬V原語(yǔ)的功能</p><p>  5.ETW函數(shù)實(shí)現(xiàn)東西方向的車輛調(diào)度</p><p>  6.STN函數(shù)實(shí)現(xiàn)南北方向的車輛調(diào)度</p><p>  7.main函數(shù)實(shí)現(xiàn)程序的輸入接口以及模擬演示</p><p><b>  3.6 算法介紹</

27、b></p><p>  設(shè)計(jì)P(int i)函數(shù)用來(lái)實(shí)現(xiàn)從i(東西南北)方向等待車輛中挑出當(dāng)前的第一個(gè)并讓其通行,同時(shí)記錄此車的編號(hào),輸出此車的發(fā)車時(shí)間。</p><p>  設(shè)計(jì)V(int i)函數(shù)實(shí)現(xiàn)時(shí)間的流逝,紅綠燈的轉(zhuǎn)換以及無(wú)車標(biāo)志的轉(zhuǎn)換,同時(shí)輸出上一時(shí)刻調(diào)用P函數(shù)車輛的到達(dá)時(shí)間。</p><p>  設(shè)計(jì)東西調(diào)度函數(shù)ETW()以及南北調(diào)度函數(shù)STN

28、()在互斥方向無(wú)車且綠燈狀態(tài)下循環(huán)調(diào)用P、V函數(shù)實(shí)現(xiàn)單方向隊(duì)列上車輛的循環(huán)調(diào)度。</p><p>  設(shè)計(jì)main()函數(shù)用來(lái)提供程序的輸入接口,并實(shí)現(xiàn)南北東西方向函數(shù)的交叉調(diào)度,以及預(yù)測(cè)車輛出發(fā)時(shí)間的輸出顯示。</p><p><b>  3.7 流程圖</b></p><p>  3.7.1 主程序流程圖</p><p

29、>  交通信號(hào)燈模擬程序,運(yùn)行開始時(shí)顯示制作人信息,確定后按要求輸入各個(gè)方向的車輛數(shù)量,之后輸入初始紅綠燈狀況并輸入要記錄的車輛的來(lái)向和車輛編號(hào)。組程序的流程圖如圖3-2所示。</p><p>  圖3-2 交通信號(hào)燈模擬主程序流程圖</p><p>  3.7.2 算法流程圖</p><p>  P(int i)函數(shù)用來(lái)實(shí)現(xiàn)從i(東西南北)方向等待車輛中挑出

30、當(dāng)前的第一個(gè)并讓其通行,同時(shí)記錄此車的編號(hào),輸出此車的發(fā)車時(shí)間,P操作算法流程圖如圖3-3所示。</p><p>  圖3-3 P操作算法流程圖</p><p>  V(int i)函數(shù)實(shí)現(xiàn)時(shí)間的流逝,紅綠燈的轉(zhuǎn)換以及無(wú)車標(biāo)志的轉(zhuǎn)換,同時(shí)輸出上一時(shí)刻調(diào)用P函數(shù)車輛的到達(dá)時(shí)間,V操作算法流程圖如圖3-4所示:</p><p>  圖3-4 V操作算法流程圖</p

31、><p><b>  3.8 接口描述</b></p><p>  int Max[4]</p><p>  說(shuō)明:記錄東、西、南、北四個(gè)方向的車數(shù)量。</p><p><b>  int Time</b></p><p>  說(shuō)明:記錄當(dāng)前行進(jìn)時(shí)間。</p>&l

32、t;p><b>  int R[30]</b></p><p>  說(shuō)明:記錄當(dāng)前車輛的編號(hào)。</p><p><b>  int PS</b></p><p>  說(shuō)明:用來(lái)存儲(chǔ)東西南北的數(shù)字編號(hào)。</p><p><b>  int PN</b></p>

33、<p>  說(shuō)明:存儲(chǔ)預(yù)測(cè)車輛編號(hào)。</p><p><b>  int PT</b></p><p>  說(shuō)明:用來(lái)存儲(chǔ)測(cè)車輛出發(fā)時(shí)間。</p><p><b>  int SN</b></p><p>  說(shuō)明:東西有無(wú)車(1無(wú)車,0有車)</p><p>&

34、lt;b>  int EW</b></p><p>  說(shuō)明:南北有無(wú)車(1無(wú)車,0有車)</p><p><b>  int T</b></p><p>  說(shuō)明:紅綠燈變幻時(shí)間。</p><p><b>  int L[2]</b></p><p>  

35、說(shuō)明:東西方向紅綠燈狀態(tài),0時(shí)為紅燈,1時(shí)為綠燈。</p><p>  char FX[4]</p><p>  說(shuō)明:用來(lái)存儲(chǔ)東西南北四個(gè)方向的名字,分別為E、W、S、N。</p><p><b>  3.9 限制條件</b></p><p>  交通信號(hào)燈模擬程序限制條件如下:</p><p>

36、;  1、每個(gè)方向的車輛數(shù)量不能超過(guò)100;</p><p>  2、車輛按照先后次序進(jìn)行排號(hào),不能自定義編號(hào);</p><p>  3、必須指定程序開始執(zhí)行時(shí)的紅綠燈狀況。</p><p>  第四章 軟件使用說(shuō)明</p><p>  4.1 系統(tǒng)開發(fā)與運(yùn)行環(huán)境</p><p>  代碼實(shí)現(xiàn):C++語(yǔ)言程序</

37、p><p>  開發(fā)工具:Microsoft Visual C++ 6.0</p><p>  運(yùn)行環(huán)境:windows XP或更高版本操作系統(tǒng)</p><p>  執(zhí)行方式:文件打開后直接執(zhí)行</p><p>  窗口界面:MS-DOS窗口界面</p><p>  操作方式:全鍵盤控制</p><p&

38、gt;  操作需要相關(guān)專業(yè)技能:無(wú)</p><p>  4.2系統(tǒng)的運(yùn)行說(shuō)明</p><p>  交通信號(hào)燈模擬程序的運(yùn)行說(shuō)明如下:</p><p>  1、按照系統(tǒng)提示一步一步向下走即可順利執(zhí)行程序。</p><p>  2、輸入數(shù)據(jù)的過(guò)程中一定要盡量保證數(shù)據(jù)的正確性,防止因數(shù)據(jù)不正確而造成程序的崩潰等問(wèn)題。</p><

39、p>  3、在所有數(shù)據(jù)都輸入之后,程序會(huì)自動(dòng)直接開始運(yùn)行,運(yùn)行過(guò)程中程序會(huì)自動(dòng)執(zhí)行到最后,而不會(huì)運(yùn)行一步停下來(lái)等待用戶的指示,因此為了保證用戶檢驗(yàn)數(shù)據(jù),請(qǐng)?jiān)谶\(yùn)行之前做好充分的數(shù)據(jù)記錄,以便與理論值進(jìn)行對(duì)照。</p><p>  本系統(tǒng)是一款多功能,操作方便,界面友好的軟件。軟件所提供的所有功能都可以通過(guò)鍵盤操作實(shí)現(xiàn),簡(jiǎn)單易行,會(huì)給用戶的相關(guān)操作帶來(lái)很大方便。</p><p><

40、b>  4.3 運(yùn)行結(jié)果 </b></p><p>  系統(tǒng)初始界面如圖4-1所示。</p><p>  圖4-1系統(tǒng)初始界面</p><p>  如果這里輸入錯(cuò)誤,會(huì)顯示如圖4-2所示的界。</p><p><b>  圖4-2 錯(cuò)誤報(bào)警</b></p><p>  當(dāng)輸入正確

41、后,會(huì)顯示如圖4-3所示的內(nèi)容。</p><p>  圖4-3 輸入正確顯示</p><p>  選擇紅綠燈狀態(tài)后會(huì)出現(xiàn)圖4-4的界面。</p><p>  圖4-4 選擇紅綠燈</p><p>  依次輸入四個(gè)方向的車的數(shù)量之后出現(xiàn)如圖4-5所示的畫面。</p><p>  圖4-5 輸入車輛數(shù)</p>

42、<p>  選擇預(yù)測(cè)方向之后會(huì)出現(xiàn)如果4-6所示的畫面。</p><p>  圖4-6 選擇預(yù)測(cè)方向</p><p>  輸入預(yù)測(cè)的車輛編號(hào)之后會(huì)直接開始執(zhí)行,出現(xiàn)如圖4-7所示的畫面。</p><p>  圖4-7 輸入編號(hào)開始執(zhí)行</p><p>  在運(yùn)行過(guò)程中遇到紅綠燈切換的狀態(tài),如圖4-8所示。</p>&

43、lt;p>  圖4-8 紅綠燈切換文字及延時(shí)</p><p>  最終運(yùn)行完畢后,程序會(huì)給出相應(yīng)預(yù)測(cè)的結(jié)果,內(nèi)容如圖4-9所示。</p><p><b>  圖4-9 預(yù)測(cè)結(jié)果</b></p><p>  第五章 課程設(shè)計(jì)心得體會(huì)</p><p>  三周的課程設(shè)計(jì)結(jié)束了,我的課程設(shè)計(jì)題目是交通信號(hào)燈模擬,通過(guò)課程

44、設(shè)計(jì)我 對(duì)P操作和V操作又有了更深入的認(rèn)識(shí),同時(shí)更加熟練的掌握了利用VC++6.0去解決這類模擬問(wèn)題的方法。</p><p>  這次課程設(shè)計(jì)的題目不難,應(yīng)該說(shuō)是比較簡(jiǎn)單的,實(shí)現(xiàn)的過(guò)程也比較的順利,沒有特別大的難點(diǎn),雖然比較簡(jiǎn)單,但是依然能從中學(xué)到不少程序設(shè)計(jì)的方法,雖然是在windows平臺(tái)上進(jìn)行設(shè)計(jì),但也能從一定的程度上對(duì)Linux系統(tǒng)的設(shè)計(jì)方法得到了更深入的了解,加深了自己對(duì)課本上知識(shí)的認(rèn)識(shí)。</p&

45、gt;<p>  最后,感謝老師對(duì)我的學(xué)習(xí)的指導(dǎo)!</p><p><b>  附錄1:參考文獻(xiàn)</b></p><p>  [1] 胡志剛,譚長(zhǎng)庚等,《計(jì)算機(jī)操作系統(tǒng)》,中南大學(xué)出版社2005年</p><p>  [2] 羅宇,鄒鵬等,《操作系統(tǒng)》(第二版),電子工業(yè)出版社2007年4月</p><p>

46、;  [3] 湯子瀛,哲風(fēng)屏,湯小冉等,《計(jì)算機(jī)操作系統(tǒng)》,西安電子科技大學(xué)出社,2001年8月</p><p>  [4] 張堯?qū)W,史美林,《計(jì)算機(jī)操作系統(tǒng)課程》,清華大學(xué)出版社,2000年</p><p>  [5] 龐麗萍,《操作系統(tǒng)原理》,華中理工大學(xué)出版社,2000年</p><p>  [6] 馬季蘭等Linux操作系統(tǒng),電子工業(yè)出版社2002年<

47、/p><p>  [7] 任愛華,李鵬,劉方毅,操作系統(tǒng)實(shí)驗(yàn)指導(dǎo),清華大學(xué)出版社,2004年</p><p>  [8] 譚浩強(qiáng)著.C程序設(shè)計(jì),清華大學(xué)出版社,1999年12月第2版</p><p>  [9] 譚浩強(qiáng)著.C++程序設(shè)計(jì)實(shí)踐指導(dǎo),清華大學(xué)出版社,2005年7月底1版</p><p>  [10]【美】D.C.Malik:C++編程

48、——從問(wèn)題分析到程序設(shè)計(jì),電子工業(yè)出版社,2003年7月第1版</p><p><b>  附錄2:程序清單</b></p><p><b>  交通信號(hào)燈模擬:</b></p><p>  #include <iostream></p><p>  #include <windo

49、ws.h></p><p>  #include <string></p><p>  #include <stdio.h></p><p>  using namespace std;</p><p>  int Max[4];</p><p>  int Time=0;</p&g

50、t;<p>  int R[30];</p><p>  int PS=1,PN=1,PT=1,SN=0,EW=1;</p><p><b>  int T=30;</b></p><p><b>  int L[2];</b></p><p>  char FX[4];</p&

51、gt;<p>  void P(int);</p><p>  void V(int);</p><p>  void change();</p><p>  void STN();</p><p>  void ETW();</p><p>  void P(int i) //P函數(shù),i為方向判斷標(biāo)志&

52、lt;/p><p><b>  {</b></p><p>  if(Max[i]>0)</p><p><b>  {</b></p><p>  Max[i] = Max[i]-1;//i方向上的車輛等待數(shù)目減一</p><p>  R[i]++;//當(dāng)前車輛編號(hào)<

53、;/p><p>  if((PS-1)==i&&R[i]==PN)</p><p>  PT=Time;//保存預(yù)測(cè)時(shí)間</p><p>  cout<<Time<<"時(shí)刻向"<<FX[i]<<"方向行駛的第"<<R[i]</p><p

54、>  <<"輛車開始出發(fā)!"<<endl;</p><p><b>  }</b></p><p>  if(Max[++i]>0)</p><p><b>  {</b></p><p>  Max[i] = Max[i]-1;</p&

55、gt;<p><b>  R[i]++;</b></p><p>  if((PS-1)==i&&R[i]==PN)</p><p>  PT = Time;</p><p>  cout<<Time<<"時(shí)刻向"<<FX[i]<<"方向

56、行駛的第"<<R[i]</p><p>  <<"輛車開始出發(fā)!"<<endl;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void V(int i) //V函數(shù),i為方向判斷

57、標(biāo)志</p><p><b>  {</b></p><p>  Time=Time+4;//時(shí)間流逝</p><p>  if(Max[i]>=0)</p><p><b>  {</b></p><p>  if(Max[i]==0)</p><

58、p>  Max[i]=-1;</p><p>  cout<<Time<<"時(shí)刻向"<<FX[i]<<"方向行駛的第"<<R[i]</p><p>  <<"輛車到達(dá)對(duì)面!"<<endl;</p><p><b&

59、gt;  }</b></p><p>  if(Max[++i]>=0)</p><p><b>  {</b></p><p>  if(Max[i]==0)</p><p>  Max[i]=-1;</p><p>  cout<<Time<<&quo

60、t;時(shí)刻向"<<FX[i]<<"方向行駛的第"<<R[i]<<"輛車到達(dá)對(duì)面!"<<endl;</p><p><b>  }</b></p><p>  T=T-4;//綠燈時(shí)間減少</p><p><b>  if(T&l

61、t;=0)</b></p><p><b>  {</b></p><p><b>  change();</b></p><p>  int temp;//換燈</p><p>  temp = L[0];</p><p>  L[0] = L[1];</

62、p><p>  L[1] = temp;</p><p>  T = 30-Time%30;//修正紅綠燈時(shí)間</p><p><b>  }</b></p><p><b>  }</b></p><p>  void ETW()//東西調(diào)度函數(shù)</p><

63、p><b>  {</b></p><p>  if(L[0]==0)//若為紅燈則交換</p><p><b>  change();</b></p><p>  while(T>0&&L[0]==1&&EW==1)//綠燈有時(shí)間且南北無(wú)車</p><p&g

64、t;<b>  {</b></p><p>  int b = 0;</p><p><b>  P(b);</b></p><p><b>  V(b);</b></p><p><b>  }</b></p><p><b

65、>  }</b></p><p>  void STN()//南北調(diào)度函數(shù)</p><p><b>  {</b></p><p>  if(L[1]==0)</p><p><b>  change();</b></p><p>  while(T>

66、0&&L[1]==1&&SN==1)//綠燈有時(shí)間且東西無(wú)車</p><p><b>  {</b></p><p>  int a = 2;</p><p><b>  P(a);</b></p><p><b>  V(a);</b><

67、/p><p><b>  }</b></p><p><b>  }</b></p><p>  void change()</p><p><b>  {</b></p><p>  cout<<"紅綠燈變換,所有未通過(guò)車輛停止運(yùn)行。

68、"<<endl;</p><p><b>  int ss;</b></p><p><b>  ss=SN;</b></p><p><b>  SN=EW;</b></p><p><b>  EW=ss;</b></p&g

69、t;<p>  Sleep(2000);</p><p><b>  }</b></p><p>  int main()</p><p><b>  {</b></p><p><b>  int a;</b></p><p><b

70、>  char b;</b></p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  cout<<"******************交通信號(hào)燈模擬*********************"<<endl

71、</p><p>  <<"* 班級(jí):網(wǎng)絡(luò)工程102001班*"<<endl</p><p>  <<"* 學(xué)號(hào):201020030103 *"<<endl</p><

72、;p>  <<"* 制作人:崔雷 *"<<endl</p><p>  <<"*****************************************************"<<endl</p><p>  &l

73、t;<"輸入Y繼續(xù):";</p><p><b>  cin>>b;</b></p><p>  if(b=='Y'||b=='y')</p><p><b>  break;</b></p><p><b>  els

74、e</b></p><p>  cout<<"您的輸入有誤,請(qǐng)重新輸入"<<endl;</p><p><b>  }</b></p><p>  system("cls");</p><p><b>  while(1)</b&

75、gt;</p><p><b>  {</b></p><p>  cout<<"歡迎進(jìn)入模擬信號(hào)燈系統(tǒng)"<<endl;</p><p>  cout<<"請(qǐng)選擇東西方信號(hào)燈狀態(tài):"<<endl;</p><p>  cout<

76、<"\t1.紅燈 \n";</p><p>  cout<<"\t2.綠燈 \n";</p><p><b>  int a;</b></p><p><b>  cin>>a;</b></p><p><b>  if

77、(a==1)</b></p><p><b>  {</b></p><p><b>  L[0] = 0;</b></p><p><b>  L[1] = 1;</b></p><p><b>  break;</b></p>

78、<p><b>  }</b></p><p><b>  if(a==2)</b></p><p><b>  {</b></p><p><b>  L[0] = 1;</b></p><p><b>  L[1] = 0;<

79、;/b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  cout<<"請(qǐng)依次輸入東、西、南、北等待的車輛數(shù):"<<endl;

80、</p><p>  cin>>Max[0]>>Max[1]>>Max[2]>>Max[3];//輸入各方位車輛數(shù)量</p><p>  cout<<"請(qǐng)輸入選擇預(yù)測(cè)的方向:"<<endl;</p><p>  cout<<"\t1.E-東\n&q

81、uot;;</p><p>  cout<<"\t2.W-西\n";</p><p>  cout<<"\t3.S-南\n";</p><p>  cout<<"\t4.N-北\n";</p><p><b>  cin>>P

82、S;</b></p><p>  cout<<"請(qǐng)輸入預(yù)測(cè)車輛的編號(hào):"<<endl;</p><p><b>  cin>>PN;</b></p><p><b>  Time = 0;</b></p><p><b>

83、  T =32;</b></p><p><b>  EW = 1;</b></p><p><b>  SN = 1; </b></p><p>  FX[0]='E';</p><p>  FX[1]='W';</p><p>

84、  FX[2]='S';</p><p>  FX[3]='N';</p><p>  while(Max[0]!=-1&&Max[1]!=-1&&Max[2]!=-1&&Max[3]!=-1)//表示四個(gè)方向有車循環(huán),無(wú)車就停止循環(huán)</p><p><b>  {</b

85、></p><p>  if(L[0]==0)</p><p><b>  {</b></p><p><b>  STN();</b></p><p><b>  ETW();</b></p><p><b>  }</b>

86、</p><p><b>  else</b></p><p><b>  {</b></p><p><b>  ETW();</b></p><p><b>  STN();</b></p><p><b>  }&l

87、t;/b></p><p><b>  }</b></p><p>  cout<<"向"<<FX[PS-1]<<"行駛編號(hào)為"<<PN<<"的車輛預(yù)測(cè)出發(fā)時(shí)間為:"<<PT<<endl;</p><

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論