版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
模擬電梯系統(tǒng)程序設計、實驗內(nèi)容和要求:要求根據(jù)下面的功能說明描述實現(xiàn)模擬電梯控制軟件(一)電梯配置1.共有1個電梯2.共有maxfloor層樓層。maxfloor=9。3.中間層每層有上下兩個按鈕,最下層只有上行按鈕,最上層只有上行按鈕。每層都有相應的指示燈,燈亮表示該按鈕已經(jīng)被按下,如果該層的上行或者下行請求已經(jīng)被響應,則指示燈滅電梯內(nèi)共有maxfloor個目標按鈕,表示有乘客在該層下電梯。有指示燈指示按鈕是否被按下。乘客按按鈕導致按鈕指示燈亮,如果電梯已經(jīng)在該層停靠則該按鈕指示燈滅另有一啟動按鈕(GO)。當電梯停在某一樓層后,接受至GO信息就繼續(xù)運行。如果得不到GO信息,等待一段時間也自動繼續(xù)運行。電梯內(nèi)設有方向指示燈表示當前電梯運行方向。說明:由于本次實驗不使用可視化框架,所以無法作至從圖形界面上獲取按鈕請求。因此電梯按鈕的設計,不在圖形界面上體現(xiàn),僅用來設計鍵盤的模擬輸入。(二) 電梯的運行控制電梯的初始狀態(tài)是電梯位于第一層處,所有按鈕都沒有按下。乘客可以在任意時刻按任何一個目標鈕和呼叫鈕。呼叫和目標對應的樓層可能不是電梯當前運行方向可達的樓層。如果電梯正在向I層駛來,并且位于I層與相鄰層(向上運行時是I-1層或者向下運行時是I+1層)之間,則因為安全考慮不響應此時出現(xiàn)的I層目標或者請求。如果電梯正好經(jīng)過了I樓層,運行在I樓層和下一樓層之間,則為了直接響應此時出現(xiàn)的[層目標或者請求,必須至少到達運行方向上的下一樓層然后才能掉頭到達I樓層(假設掉頭無須其它額外時間),如果I樓層不是剛剛經(jīng)過的樓層則可以在任意位置掉頭,此時掉頭后經(jīng)過的第一個樓層不可停。電梯系統(tǒng)依照某種預先定義好的策略對隨機出現(xiàn)的呼叫和目標進行分析和響應。乘客數(shù)量等外界因素(可能導致停靠時間的長短變化)不予考慮。假設電梯正常運行一層的時間是5S,??磕繕藰菍?、上下乘客和電梯繼續(xù)運行的時間是5S。當電梯??磕硨訒r,該層的乘客如果錯誤的按目標或呼叫按鈕都不予響應。電梯??磕骋粚雍?,苦無目標和呼叫,則電梯處于無方向狀態(tài),方向指示燈全滅,否則電梯內(nèi)某個方向的指示燈亮,表示電梯將向該方向運行。等接到“GO”信號后電梯立即繼續(xù)運行。若無GO信號,則電梯在等了上下乘客和電梯繼續(xù)運行時間后也將繼續(xù)運行。當一個目標(呼叫)已經(jīng)被服務后,應將對應的指示燈熄滅。(三) 電梯運行的控制策略以下是幾個候選策略:1.先來先服務策略:將所有呼叫和目標按到達時間排隊,然后一一完成。這是相當簡單的策略,只需要設計一個將呼叫和目標排隊的數(shù)據(jù)結(jié)構(gòu)。因為該策略效率也很低,所以沒有實際的電梯采用這種策略。2.順便服務策略:順便服務是一種最常見的簡單策略。這種策略在運行控制中所規(guī)定的安全前提下,一次將一個方向上的所有呼叫和目標全部完成。然后掉轉(zhuǎn)運行方向完成另外一個方向上的所有呼叫和目標??梢圆捎迷O定目標樓層的辦法來實現(xiàn)這個策略,即電梯向一個目標樓層運行,但這個樓層可以修改。具體策略如下:1) 修改目標樓層的策略:如果電梯運行方向向上,那么如果新到一個介于當前電梯所處樓層和目標樓層之間,又可以安全到達的向上呼叫或者目標,將目標樓層修改為這個新的樓層。如果電梯運行方向向下,那么如果新到一個介于當前電梯所處樓層和目標樓層之間,又可以安全到達的向下呼叫或者目標,將目標樓層修改為這個新的樓層。2) 確定新的目標樓層:如果電梯向上運行,當它到達某個目標樓層后,則依照以下順序確定下一個目標樓層:如果比當前層高的樓層有向上呼叫或者目標,那么以最低的高于當前樓層的有向上呼叫或者目標的樓層為目標。如果無法確定目標樓層,那么以最高的向下呼叫或者目標所在樓層為電梯當前目標樓層。如果無法確定目標樓層,那么以最低的向上呼叫所在樓層為電梯當前的目標樓層。如果仍然不能確定目標樓層(此時實際上沒有任何呼叫和目標),那么電梯無目標,運行暫停。如果電梯向下運行,依照以下順序確定下一目標樓層:如果比當前層低的樓層有向下呼叫或者目標,那么以最高的低于當前樓層的有向下呼叫或者目標的樓層為目標。如果無法確定目標樓層,那么以最低的向上呼叫或者目標所在樓層為電梯當前目標樓層。如果無法確定目標樓層,那么以最高的向下呼叫樓層為目標樓層。如果仍然不能確定目標樓層(此時實際上沒有任何呼叫和目標),那么電梯無目標,運行暫停。3) 最快響應策略:響應所有的現(xiàn)在存在的所有呼叫和目標所需時間(采用不同方案電梯??繒r間相同,所以不必考慮)最短的策略。可選方案一是電梯先向上運行響應經(jīng)過各層的目標和向上呼叫,再向下運行響應所有向下呼叫以及途經(jīng)各層的目標,最后再向上響應剩余的向上呼叫。二是恰好相反,先向下,再向上,最后再向下運行。由于呼叫和目標會隨時增加,所以實際上有時這種策略并不好。另外有時這將導致電梯突然向相反的方向運行。為了防止經(jīng)常性的改變方向,我們可以采用設定只有當原來的運行方向比相反方向的代價高20%的時候才切換方向。4) 最短平均等待時間策略:假設每一呼叫樓層等待的人數(shù)和每一目標樓層走出電梯的人數(shù)相等。計算響應當前所有呼叫和目標全部乘客所需時間的總和(包括等待時間和電梯運行時間,對于提出呼叫而尚未進入電梯的乘客則只計算等待時間)。對于這種策略,基本上也是只有象3一樣的兩種選擇方案。由于呼叫和目標會隨時增加,所以實際上這種策略有時并不好,但它比最快響應時間策略較為穩(wěn)定和高效。另外有時這將導致電梯突然向相反的方向運行。為了防止經(jīng)常性的改變方向,我們可以采用設定只有當原來的方向比替代方向的代價高20%的時候才切換運行方向。注意:除了先來先服務以外,我們不能預先設定固定不變電梯運行的目標樓層。5)同學們也可以自己提出新的控制策略。要求重點要實現(xiàn)順便服務策略,應在一相對獨立的程序塊中實現(xiàn)控制策略,這樣能方便地對其進行修改而不影響程序的其他部分。(四)輸入輸出1)輸入:就是一系列的呼叫和目標。輸入可以采用兩種方法:以鍵盤輸入呼叫和目標。例如我們可以設定如下:當敲擊鍵1、2、3、4、5、6、7、8、9時表示電梯內(nèi)有乘客按目標按鈕,指定相應目標樓層。當敲擊鍵Q、W、E、R、T、Y、U、I時表示8層至1」1層有上行呼叫請求。當敲擊鍵A、S、D、F、G、、H、J、K時表示9層至1」2層有下行呼叫請求。將呼叫和目標寫入一個正文文件,然后程序讀取這些呼叫和目標數(shù)據(jù)后可以在沒有人工干預的情況下模擬電梯運行情況。其中一個呼叫/目標占一行,格式如下:<操作時間>[空格]<呼叫目標>[回車]操作時間,表示呼叫請求的發(fā)生時間,是以程序啟動時刻為參照的相對時間。以四位的數(shù)字字符串表示,從0000開始,單位秒。呼叫目標,和鍵盤輸入的設定一致,占1個字節(jié)。1、2、3、4、5、6、7、8、9時表示電梯內(nèi)有乘客按目標按鈕;Q、W、E、R、T、Y、U、I時表示8層至1」1層有上行呼叫請求;A、S、D、F、G、H、J、K時表示9層到2層有下行呼叫請求;每個數(shù)據(jù)項之間用一個空白字符隔開。不必考慮檢查數(shù)據(jù)的正確性。2)輸出:電梯運行的動畫顯示:包括顯示各按鈕指示燈的亮滅情況、電梯方向指示燈和電梯位置及運行情況。另:為方便查看電梯運行情況,需要在顯示中劃分一塊區(qū)域,專門顯示鍵盤輸入的呼叫和目標數(shù)據(jù)。電梯運行情況的記錄(結(jié)果)文件。記錄文件也是文本文件,每一行表示一次停靠,包括以下內(nèi)容:??繒r間:開始停靠某樓層的時間,以整數(shù)表示,從小至大排列,占4個字節(jié),從0開始,單位秒。樓層:??康臉菍樱家粋€字節(jié)(1-9)。每個數(shù)據(jù)項之間用一個空白字符隔開。程序中不必考慮檢查數(shù)據(jù)的正確性。備注:老師會提供一組已經(jīng)編制好的子程序以及一些給出的數(shù)據(jù)定義,它們的主要功能是表示電梯系統(tǒng)參數(shù),模擬電梯運行以及處理各類信號的輸入輸出。要注意利用它們提供的一些控制顯示和鍵盤輸入的函數(shù)和過程來簡化輸入和輸出(包括動畫)的設計。當然也可以利用編程語言提供的函數(shù)和過程來完成輸入和輸出。(五)基本的要求和較高的要求以下內(nèi)容僅供有余力的同學參考實現(xiàn)。1.程序的運行方式:如果輸入從數(shù)據(jù)文件中取得,則程序的運行應該有兩種方式,動畫方式、快速方式和完全方式。如果輸入從鍵盤獲得,那么只能采用動畫方式或完全方式,不能使用快速方式。動畫方式花費較長的時間來直觀地模擬電梯運行??焖俜绞絼t沒有動畫,只是生成記錄文件。完全方式花費較長的時間來直觀地模擬電梯運行,同時生成記錄文件?;疽笾粚崿F(xiàn)動畫方式。2.控制策略:基本要求實現(xiàn)先來先服務和順便服務策略,可以指定電梯模擬系統(tǒng)使用不同的策略。較高的要求是可以在多個策略之間由我們控制進行切換。3.輸入輸出:基本要求實現(xiàn)鍵盤輸入、動畫輸出。4.統(tǒng)計分析統(tǒng)計分析每個乘客乘電梯花費的平均時間。如果實現(xiàn)了多個策略,則可以對不同策略加以比較。統(tǒng)計分析是較高要求,基本要求不必考慮此功能。5.程序的適應性考慮:例如如何不要作很多修改就可以適應樓層數(shù)改變(例如增加到30層)等等。程序適應性是較高要求,基本要求不必考慮此功能。程序總體結(jié)構(gòu)以下內(nèi)容僅供參考。我們可以在主程序中寫如下兩個函數(shù)調(diào)用:Configure;Simulation;前者在進行模擬前設置一些參數(shù),這比較簡單。而后者則是進行仿真模擬,這相當復雜,所以下面我們就來討論如何設計Simulation。這一類的模擬仿真程序有一個共同的特點是要模擬某個系統(tǒng)在一段時間內(nèi)的情況,所以我們很自然地要從時間上對該問題進行分解,就是說Simulation(){Initialize;{初始化過程}doLift_status();{計算電梯狀態(tài)在這一時刻的變化,例如到達某層,就要設定為已經(jīng)完成了該層的目標,同時將電梯停下來等}Writemessage();{輸出信息(包括動畫)}Getinput();{接收當前時刻的新輸入(包括新目標和新呼叫)Control();{調(diào)用控制策略程序決定電梯該如何運動}Time二time+l;{推進仿真時間,假定每一秒電梯進行上述操作一次}Whilenotendcondition;}這就是可以模擬電梯系統(tǒng)的基本結(jié)構(gòu)了!這個程序結(jié)構(gòu)的基本思想就是模擬了電梯每個時刻做的幾件事情,然后將時間向后推移一個時間單位,然后再做那幾件事,于是就模擬了電梯的工作狀態(tài)。二、實驗報告要求:實驗要求,按照軟件開發(fā)過程的各個階段提交階段性文檔。階段性文檔不能在實驗結(jié)束后補寫,必須遵照實驗進度分階段提交,貫徹文檔指導實踐、實踐修正文檔的軟件工程思想。文檔提交可以書面形式,也可以電子文件形式。(1)【模板:會議記要】<小組編號>小組第**周第**次會議記要實驗名稱:*******會議時間:****年**月**日**點至**點與會者:<成員1>、<成員2>..文檔記錄者:***會議內(nèi)容摘要:<問題編號>、〈問題說明〉;〈討論意見〉;〈最后結(jié)果〉。備注:小組正式會議的記錄,主要記錄討論問題的概要,以及工作進展情況,詳細設計內(nèi)容應該放在其它文檔中。會議記要一般兩頁左右。(2)【模板:周報】<小組編號>小組第**周周報實驗名稱:*******周報時間:****年**月**日小組成員:<成員1>、<成員2>..是否按計劃完成?是!〈上周工作小結(jié)〉;//按人員總結(jié)〈本周工作分派〉。//按人員分排否!〈未完成原因〉;〈本周解決辦法〉;〈需要請指導教師協(xié)助的問題〉。(3)【模板1:任務書】<小組編號>小組<實驗名稱>任務書版本號:Elevator-小組簡寫-Task-***(每次修訂時改變編號)編制時間:**編制人員:**1.1任務目標概述1.2目標系統(tǒng)的需求(對應書上的電梯配置)1.3目標系統(tǒng)的需求分析(對應書上的電梯運行控制)1.4目標系統(tǒng)的策略選擇(對應書上的電梯運行控制策略)1.5目標系統(tǒng)的IO需求(對應書上的輸入輸出)1.6目標系統(tǒng)的高級需求(對應書上的基本要求和較高要求)備注:根據(jù)書上的任務書,剪裁得到一份符合你要實現(xiàn)的電梯系統(tǒng)實際情況的任務書。(4)【模板2:概要設計】<小組編號>小組<實驗名稱>概要設計版本號:Elevator-小組簡寫-GlobalDesign-***(每次修訂時改變編號)編制時間:編制人員:1.1用戶界面設計1.1.1動畫方式畫出電梯內(nèi)部的操作面板設計,和樓層呼叫面板,以及模擬電梯運行的界面設計;說明所畫界面中對應的各種操作含義和預期效果;定義鍵盤輸入指令和動畫輸出之間的對應關系。1.1.2文件方式定義出輸入呼叫文件格式,和輸出結(jié)果文件格式。說明輸入輸出文件中符號的含義。1.2自動機模型(狀態(tài)轉(zhuǎn)換圖)畫出電梯系統(tǒng)的狀態(tài)轉(zhuǎn)換圖;要求在圖形之外,再給出各狀態(tài)的詳細文字說明,說明該狀態(tài)可以接受的輸入和相應動作。1.3高層數(shù)據(jù)結(jié)構(gòu)設計設計出如何存儲電梯系統(tǒng)的各類呼叫、樓層和運行狀態(tài)數(shù)據(jù)。例如:上下樓的請求如何存儲?目標樓層如何存儲?電梯當前狀態(tài)和運行方向如何表示等?本實驗要求用數(shù)組和鏈表兩種方式實現(xiàn)存儲,需要給出兩套數(shù)據(jù)結(jié)構(gòu)設計。1.4系統(tǒng)模塊劃分畫出系統(tǒng)模塊的調(diào)用關系圖;并詳細說明各個模塊的功能。針對每一個模塊,要求給出:模塊名稱、模塊功能簡要描述、模塊接口(接口名稱、參數(shù)類型、接口功能)、本模塊會調(diào)用的其他模塊名和接口名。注:接口就是本模塊提供給其他模塊調(diào)用的C函數(shù)。1.5高層算法設計系統(tǒng)核心算法的概要設計,例如電梯系統(tǒng)的控制策略算法。要求用N-S圖結(jié)合自然語言,對任務書中的策略進一步細化分解,結(jié)合上面的數(shù)據(jù)結(jié)構(gòu)和模塊設計,描述出算法的實現(xiàn)思路。(5)【模板3:詳細設計】<小組編號>小組<實驗名稱>詳細設計版本號:Elevator-小組簡寫-FunctionDesign-***(每次修訂時改變編號)編制時間:編制人員:模塊1<模塊名稱>局部數(shù)據(jù)結(jié)構(gòu)設計當前模塊的內(nèi)部變量設計。要求給出數(shù)據(jù)的含義、變量的命名,以及類型定義。算法設計用N-S圖描述出算法。模塊2<模塊名稱>(6)【模板4:測試用例】<小組編號>小組<實驗名稱>測試用例版本號:Elevator-小組簡寫-CaseOfTest-***(每次修訂時改變編號)編制時間:編制人員:1.1測試用例11.1.1測試目標說明本測試用例是用來測試:某項功能?邊界異常處理?壓力測試(多次頻繁操作測試程序的承受力)?1.1.2用例輸入文件方式:列出輸入文件的內(nèi)容;動畫方式:操作順序操作操作前電梯狀態(tài)已有未處理呼叫1內(nèi)部幾層呼叫;外部幾層呼叫;停/運行在幾層?上行/下行?內(nèi)部幾層呼叫,外部幾層呼叫。020001.1.3用例輸出文件方式:列出輸出文件的內(nèi)容動畫方式:輸入操作序號操作操作后電梯狀態(tài)結(jié)果是否正確?1內(nèi)部幾層呼叫;外部幾層呼叫;停/運行在幾層?上行/下行?是/否20001.2測試用例22.1測試結(jié)果總結(jié)對照任務書各項要求,逐一說明測試結(jié)果是否正確,存在哪些bug?備注:按照測試用例模版設計2—4個包含多個呼叫及目標的測試用例。根據(jù)用例實際執(zhí)行結(jié)果寫成測試結(jié)果報告。單元測試不用提交測試用例,這里只包括系統(tǒng)的測試用例。(7)程序清單電子版的源程序,要注意程序必要的注釋,以及縮進對齊。(8)使用說明模版<小組編號>小組<實驗名稱>使用手冊版本號:Elevator-小組簡寫-UserGuide-***(每次修訂時改變編號)編制時間:編制人員:1.1運行環(huán)境配置說明程序的安裝環(huán)境要求,比如操作系統(tǒng)、內(nèi)存等。說明程序的安裝文件路徑、文件名稱、文件個數(shù)。(尤其注意程序運行時必須的一說明程序的運行方式:菜單、圖標、命令行等。1.2系統(tǒng)功能介紹概述程序的主要功能和特點。1.3功能1使用說明逐步演示操作步驟,可以把實際界面粘貼在文檔中1.4功能2使用說明(9)實驗總結(jié)體會、評論與收獲。必寫,內(nèi)容隨意。在組間交流會上進行口頭經(jīng)驗交流。模擬火車調(diào)度系統(tǒng)程序設計八、實驗內(nèi)容和要求:要求根據(jù)下面的功能說明描述實現(xiàn)模擬火車調(diào)度軟件。(一)火車配置1、共有兩輛小火車(如下圖所示)。2、 小火車A、B分別沿順時針方向行駛在自己的閉合軌道上。它們的軌道都經(jīng)過一個車站S1,進站的軌道只有一條,是兩輛小火車公用的。當火車A在車站的公共軌道上運行的時候,另一輛火車B如果也想進入車站,則必須等待,直到列車A離開了車站,讓出該段軌道。為了防止兩輛火車在車站的公共軌道上相撞,必須要有一個中央控制系統(tǒng)來調(diào)度火車的運行。3、 為了能及時識別火車想進入車站的公共軌道或者已經(jīng)離開公共軌道,在車站附近(等待進站區(qū)和出站區(qū))的A車和B車的軌道上分別安裝兩個探測點,當探測點發(fā)現(xiàn)火車經(jīng)過此點時,將會發(fā)送信號給中央控制系統(tǒng),中央控制系統(tǒng)根據(jù)發(fā)送信號的是哪個探測點,能識別出是哪輛火車想進入或者已經(jīng)駛出車站的公共軌道。?火車A出站探測點°火車A進站探測點口火車B進站探測點火車B出戰(zhàn)探測點圖5小火車示意圖(二)火車的運行控制A火車開動前的停放位置在軌道的最上方中間,B火車在軌道的左下方,如上圖所示。2.火車一旦被啟動運行,除非因為等待公共軌道的釋放而暫停,或者被人為地停止,否則會一直運行。必須要保證兩輛火車有序運行,交替使用公共軌道?;疖嚨倪\行速度和運行軌道的長和寬可以在配置文件中設置。是同時啟動兩輛火車、還是先啟動某一輛、兩車啟動的間隔時間可以在配置文件中設置。在火車運行期間,火車除了因為等待公共軌道的釋放而暫停,也可能由于某些特殊原因被人為地停止,用戶可以通過輸入信號來控制火車的暫停和繼續(xù)運行。(三)火車運行的控制策略如果出現(xiàn)2個監(jiān)測點同時向中央控制中心發(fā)信號,提示火車要進入公共運行軌道,則A、B車交替使用公共軌道。第一次出現(xiàn)這種情況時,讓A車先行,第二次時讓B車先行,第三次還是讓A車先行,第四次B車先行。(四)輸入輸出1.輸入:輸入數(shù)據(jù)包括以下兩種:1) 一系列的初始化信息,包括:火車運行速度,運行軌道的長和寬,兩火車是否同時啟動,先啟動哪輛火車,啟動間隔時間,啟動位置以及探測點位置。2) 暫?;蛘呃^續(xù)某輛火車運行的控制信號。輸入可以采用兩種方法:a.從鍵盤輸入。例如:可以在程序開始,提示鍵盤輸入初始化信息;運行中接受到探測點信號后提示輸入車站的控制信號。我們可以設定控制信號的按鍵如下:A車暫停:‘AA車繼續(xù):‘C'B車暫停:'B'B車繼續(xù):'D'b.將初始化信息寫入一個正文文件,然后程序讀取這些信息可以在沒有人工干預的情況下模擬小火車運行情況。正文文件包含信息如下:[ASpeed] //A運行速度[BSpeed] //B運行速度[Awidth] 〃A運行軌道的寬度[Ahight] 〃A運行軌道的高度[Bwidth] 〃B運行軌道的寬度[Bhight] 〃B運行軌道的高度[FirstStart] 〃如果是'A'表示A啟動;如果是‘X'表示同時啟動[Interval] //啟動間隔時間,單位秒[AStartPoint]//A啟動位置(例如將A軌道分為0-12點刻度,啟動位置在0點)[BStartPoint]//B啟動位置(例如將B軌道分為0-12點刻度,啟動位置在7點)[AInPoint]//A進站探測點位置(例如將A軌道分為0-12點刻度,探測點位置在5點)[AOutPoint]//A出站探測點位置(例如將A軌道分為0-12點刻度,探測點位置在7點)[BInPoint]//B進站探測點位置(例如將B軌道分為0-12點刻度,探測點位置在11點)[BOutPoint]//B出站探測點位置(例如將B軌道分為0-12點刻度,探測點位置在1點)輸出:火車運行的動畫顯示:運行軌道,火車當前位置,探測點位置。如果探測點監(jiān)測到火車通過,需要變色。火車運行情況的記錄(結(jié)果)文件,每隔5秒記錄一次。記錄文件也是文本文件,每一行表示火車A和B的運行位置。備注:老師會提供一組已經(jīng)編制好的子程序以及一些給出的數(shù)據(jù)定義,它們的主要功能是動畫輸出設計。(五)基本的要求和較高的要求以下內(nèi)容僅供有余力的同學參考實現(xiàn)。在火車運行軌道上設置若干停靠站點,不同的站點可能有不同的停靠時間。在動畫輸出時,要能顯示出剩余??繒r間。程序總體結(jié)構(gòu)下面的內(nèi)容僅供參考:我們可以在主程序中寫如下兩個函數(shù)調(diào)用:Configure;Simulation;前者在進行模擬前從配置文件讀取數(shù)據(jù)設置一些參數(shù),這比較簡單。而后者則是進行仿真模擬,這相當復雜,所以下面我們就來討論如何設計Simulation。這一類的模擬仿真程序有一個共同的特點是要模擬某個系統(tǒng)在一段時間內(nèi)的情況,所以我們很自然地要從時間上對該問題進行分解,就是說Simulation(){Initialize;{初始化過程}dotrain_status();{計算火車A和B的狀態(tài)在這一時刻的變化,例如繼續(xù)運行、暫停等}Writemessage();{輸出信息(包括動畫)}Control();{調(diào)用控制策略程序決定電梯該如何運動}Time二time+l;{推進仿真時間,假定每一秒電梯進行上述操作一次}Whilenotendcondition;}這就是可以模擬小火車中央控制系統(tǒng)的基本結(jié)構(gòu)了!這個程序結(jié)構(gòu)的基本思想就是模擬了小火車每個時刻做的幾件事情,然后將時間向后推移一個時間單位,然后再做那幾件事于是就模擬了小火車的工作狀態(tài)。十一、實驗報告要求:實驗要求,按照軟件開發(fā)過程的各個階段提交階段性文檔。階段性文檔不能在實驗結(jié)束后補寫,必須遵照實驗進度分階段提交,貫徹文檔指導實踐、實踐修正文檔的軟件工程思想。文檔提交可以書面形式,也可以電子文件形式。(1)【模板:會議記要】<小組編號>小組第**周第**次會議記要實驗名稱:*******會議時間:****年**月**日**點至**點與會者:<成員1>、<成員2>..文檔記錄者:***會議內(nèi)容摘要:<問題編號>、〈問題說明〉;〈討論意見〉;〈最后結(jié)果〉。備注:小組正式會議的記錄,主要記錄討論問題的概要,以及工作進展情況,詳細設計內(nèi)容應該放在其它文檔中。會議記要一般兩頁左右。(2)【模板:周報】<小組編號>小組第**周周報實驗名稱:*******周報時間:****年**月**日小組成員:<成員1>、<成員2>..是否按計劃完成?是!〈上周工作小結(jié)〉;//按人員總結(jié)〈本周工作分派〉。//按人員分排否!〈未完成原因〉;〈本周解決辦法〉;〈需要請指導教師協(xié)助的問題〉。(3)【模板1:任務書】<小組編號>小組<實驗名稱>任務書版本號:Train-小組簡寫-Task-***(每次修訂時改變編號)編制時間:**編制人員:**1.1任務目標概述1.2目標系統(tǒng)的需求(對應任務書上的火車配置)1.3目標系統(tǒng)的需求分析(對應任務書上的火車運行控制)1.4目標系統(tǒng)的策略選擇(對應任務書上的火車運行控制策略)1.5目標系統(tǒng)的IO需求(對應任務書上的輸入輸出)1.6目標系統(tǒng)的高級需求(對應任務書上的基本要求和較高要求)備注:根據(jù)書上的任務書,剪裁得到一份符合你要實現(xiàn)的火車調(diào)度系統(tǒng)實際情況的任務書。(4)【模板2:概要設計】<小組編號>小組<實驗名稱>概要設計版本號:Train-小組簡寫-GlobalDesign-***(每次修訂時改變編號)編制時間:編制人員:1.2用戶界面設計1.1.1動畫方式畫出火車軌道和車站、探測點,模擬火車運行的設計;另:為方便查看火車運行情況,需要在輸出顯示中劃分一塊區(qū)域,專門顯示鍵盤輸入的控制信號,以及速度信息。說明所畫界面中對應的各種操作含義和預期效果;1.1.2文件方式定義出輸入呼叫文件格式,和輸出結(jié)果文件格式。說明輸入輸出文件中符號的含義。1.2自動機模型(狀態(tài)轉(zhuǎn)換圖)畫出火車調(diào)度系統(tǒng)的狀態(tài)轉(zhuǎn)換圖;要求在圖形之外,再給出各狀態(tài)的詳細文字說明,說明該狀態(tài)可以接受的輸入和相應動作。1.3高層數(shù)據(jù)結(jié)構(gòu)設計設計出如何存儲火車調(diào)度系統(tǒng)的各類操作、調(diào)度信號和運行狀態(tài)數(shù)據(jù)。例如:公共軌道的占用情況如何存儲?啟動和暫停信號如何存儲?火車當前狀態(tài)和運行速度如何表示等?本實驗要求用數(shù)組和鏈表兩種方式實現(xiàn)存儲,需要給出兩套數(shù)據(jù)結(jié)構(gòu)設計。1.4系統(tǒng)模塊劃分畫出系統(tǒng)模塊的調(diào)用關系圖;并詳細說明各個模塊的功能。針對每一個模塊,要求給出:模塊名稱、模塊功能簡要描述、模塊接口(接口名稱、參數(shù)類型、接口功能)、本模塊會調(diào)用的其他模塊名和接口名。注:接口就是本模塊提供給其他模塊調(diào)用的C函數(shù)。1.5高層算法設計系統(tǒng)核心算法的概要設計,例如火車調(diào)度系統(tǒng)的中央控制算法。要求用自然語言,對任務書中的策略進一步細化分解,結(jié)合上面的數(shù)據(jù)結(jié)構(gòu)和模塊設計,描述出算法的實現(xiàn)思路。(5)【模板3:詳細設計】<小組編號>小組<實驗名稱>詳細設計版本號:Train-小組簡寫-FunctionDesign-***(每次修訂時改變編號)編制時間:編制人員:模塊1<模塊名稱>局部數(shù)據(jù)結(jié)構(gòu)設計當前模塊的內(nèi)部變量設計。要求給出數(shù)據(jù)的含義、變量的命名,以及類型定義。算法設計用N-S圖描述出算法。模塊2<模塊名稱>(6)【模板4:測試用例】<小組編號>小組<實驗名稱>測試用例版本號:Train-小組簡寫-CaseOfTest-***(每次修訂時改變編號)編制時間:編制人員:1.3測試用例11.3.1測試目標說明本測試用例是用來測試:某項功能?邊界異常處理?壓力測試(多次頻繁操作測試程序的承受力)?1.3.2用例輸入文件方式:列出輸入文件的內(nèi)容;動畫方式:操作順序操作操作前火車狀態(tài)公共軌道狀態(tài)1啟動A/B火車;暫停A/B火車;停止/運行?位置?速度?空閑?A/B車想進入?沖突?占用?
20001.3.3用例輸出文件方式:列出輸出文件的內(nèi)容動畫方式:輸入操作序號操作操作后火車狀態(tài)結(jié)果是否正確?1啟動A/B火車;暫停A/B火車;停止/運行?位置?速度?是/否20001.4測試用例22.1測試結(jié)果總結(jié)對照任務書各項要求,逐一說明測試結(jié)果是否正確,存在哪些bug?備注:按照測試用例模版設計2—4個包含多個呼叫及目標的測試用例。根據(jù)用例實際執(zhí)行結(jié)果寫成測試結(jié)果報告。單元測試不用提交測試用例,這里只包括系統(tǒng)的測試用例。(7)程序清單電子版的源程序,要注意程序必要的注釋,以及縮進對齊。(8)使用說明模板<小組編號>小組<實驗名稱>使用手冊版本號:Train-小組簡寫-UserGuide-***(每次修訂時改變編號)編制時間:編制人員:1.5運行環(huán)境配置說明程序的安裝環(huán)境要求,比如操作系統(tǒng)、內(nèi)存等。說明程序的安裝文件路徑、文件名稱、文件個數(shù)。(尤其注意程序運行時必須的一說明程序的運行方式:菜單、圖標、命令行等。1.61.71.61.71.8概述程序的主要功能和特點。功能1使用說明逐步演示操作步驟,可以把實際界面粘貼在文檔中。功能2使用說明(9)實驗總結(jié)體會、評論與收獲。必寫,內(nèi)容隨意。在組間交流會上進行口頭經(jīng)驗交流。模擬銀行營業(yè)廳排隊系統(tǒng)程序設計八、實驗內(nèi)容和要求:要求根據(jù)下面的功能說明描述實現(xiàn)模擬銀行排隊軟件。(一)銀行營業(yè)廳配置1.共有1家銀行營業(yè)廳,但營業(yè)窗口設3~8個,可以靈活設置。2.每位客戶進入營業(yè)廳后,在取號機上申請一個服務號碼。3?服務號碼根據(jù)客戶級別分為兩類,一類是普通客戶,一類是VIP客戶。申請VIP客戶服務的人,在申請時必須提供VIP身份號,經(jīng)過銀行客戶資料核對后,通過申請,分配一個VIP服務號碼給他。普通客戶類服務號碼,和VIP客戶類服務號碼分開兩隊,都按先后順序排隊。普通號碼范圍:000?999;VIP號碼范圍:V00?V99。營業(yè)窗口按服務號碼的順序,叫號為客戶辦理。營業(yè)窗口叫號后,進入辦理狀態(tài)。設定1?2個窗口優(yōu)先辦理VIP客戶服務,也就是說,只要有VIP客戶在等待,這些窗口都要優(yōu)先辦理VIP客戶業(yè)務。只在當前沒有VIP客戶服務申請的情況下,這些窗口轉(zhuǎn)去辦理普通客戶業(yè)務。營業(yè)窗口在辦完一項業(yè)務后,可以暫停辦理,停止叫號,休息一段時間,然后恢復辦理。但原則上所有窗口不會同時休息。當所有服務號碼都被處理完畢,才允許發(fā)出“下班”指令,關閉營業(yè)廳,退出程序說明:由于本次實驗不使用可視化框架,所以無法作到從圖形界面上獲取客戶取號和營業(yè)窗口請求。因此請求按鈕的設計,不在圖形界面上體現(xiàn),僅用來設計鍵盤的模擬輸入。(二) 銀行營業(yè)廳的運行控制營業(yè)廳的初始狀態(tài)是各窗口空閑,處于等待服務狀態(tài);兩類服務號碼初始都設為0??蛻艨梢栽谌我鈺r刻進入營業(yè)廳,申請普通服務或VIP服務。申請普通服務,不需要核對身份,直接在當前最大普通服務號碼上加1,分配給客戶。申請VIP服務,需要客戶輸入VIP身份號,核對銀行VIP文件,若該身份號存在并有效,在當前最大VIP服務號碼上加1,分配給客戶;若該身份號不存在,提示重新輸入,三次錯誤以后,轉(zhuǎn)為分配普通服務號碼給客戶。如果VIP客戶到達,并成功申請至l」VIP服務號碼。此時若VIP優(yōu)先服務窗口都正在辦理業(yè)務,新到的客戶排隊等待。若VIP優(yōu)先服務窗口有轉(zhuǎn)去辦理普通業(yè)務的,那么辦完當前普通業(yè)務后要立刻轉(zhuǎn)回辦理VIP業(yè)務。若某營業(yè)窗口發(fā)出暫停信號,系統(tǒng)檢查其他窗口的狀態(tài),若仍有其它窗口在辦理業(yè)務,準予該營業(yè)窗口暫停休息,停止該窗口的叫號,一段時間后恢復辦理狀態(tài);若沒有其它窗口在辦理業(yè)務,不允許該窗口暫停??蛻艮k理業(yè)務的時間長短,窗口暫停休息時間長短等隨機因素不予考慮。可以假設一項業(yè)務辦理的固定時間是20S,暫停休息的固定時間為30S。營業(yè)窗口辦理業(yè)務時,顯示當前處理的服務號碼;叫號時,顯示等待的服務號碼;暫停時顯示“pause”。(三) 銀行營業(yè)廳的排隊策略以下是銀行營業(yè)廳的幾個排隊策略:先來先服務策略:將同一類的服務號碼按取號時間排隊,然后一一交給最先空閑的窗口去辦理。這是基本的排隊策略,只需要設計一個將服務號碼排隊的數(shù)據(jù)結(jié)構(gòu)。VIP客戶服務有自己的優(yōu)先服務窗口,普通客戶服務有其他的營業(yè)窗口,在兩個隊列都不空閑的時候,遵循這個服務策略。2.順便服務策略:VIP優(yōu)先服務窗口,在VIP客戶隊列為空的時候,采取順便服務策略:VIP窗口轉(zhuǎn)變?yōu)槠胀ǚ沾翱冢渌翱谝黄鸱謸幚砥胀蛻絷犃?。順便服務策略建立在先來先服務策略的基礎之上。3.最快響應策略:VIP優(yōu)先服務窗口,因為VIP客戶隊列為空,轉(zhuǎn)去處理普通業(yè)務以后,若重新出現(xiàn)VIP客戶,這時要采取最快響應策略:最快結(jié)束當前普通業(yè)務的VIP窗口,首先回到VIP隊列處理狀態(tài);較慢結(jié)束當前普通業(yè)務的VIP窗口,則需要重新判斷VIP隊列是否為空,來決定下一個業(yè)務是接受VIP業(yè)務,還是普通業(yè)務。最快響應策略建立在先來先服務策略和順便服務策略基礎上。要求重點實現(xiàn)先來先服務和順便服務策略,應在一相對獨立的程序塊中實現(xiàn)控制策略,這樣能方便地對其進行修改而不影響程序的其他部分。(四)輸入輸出1)輸入:就是一系列的呼叫和目標。輸入可以采用兩種方法:從鍵盤輸入。初始化設定營業(yè)窗口的數(shù)量。輸入客戶到達信息、VIP身份號,以及營業(yè)窗口暫停信息、下班指令。我們可以設定按鍵如下:'WIN3回車'表示營業(yè)廳的窗口設置為3。'G'表示一個普通客戶到達。'V'表示一個VIP客戶到達。'ID12345'表示一個VIP身份號12345。'R1'表示1號窗口請求暫停。'Q'表示下班。將初始化營業(yè)窗口數(shù)量,和輸入的客戶到達信息、VIP身份號,以及營業(yè)窗口暫停信息、下班指令都寫入一個正文文件,然后程序讀取這些數(shù)據(jù)后可以在沒有人工干預的情況下模擬銀行營業(yè)廳的排隊情況。其中一個信息占一行,包括如下內(nèi)容:'WIN3回車'表示營業(yè)廳的窗口設置為3。'G'表示一個普通客戶到達。'V'表示一個VIP客戶到達。'ID12345'表示一個VIP身份號12345。'R1'表示1號窗口請求暫停。'Q'表示下班。銀行的VIP客戶資料,預存在一個二進制文件中,包括:客戶姓名、客戶VIP身份號和客戶存款金額等。要求利用文件的上機作業(yè)2,改寫為一個VIP客戶資料維護模塊,可以添加、刪除、更新VIP客戶記錄。VIP客戶維護的輸入,從鍵盤輸入:'X'表示進入VIP客戶維護狀態(tài);'V+'表示添加一個VIP客戶;'V-'表示刪除一個VIP客戶;'V/'表示更新一個VIP客戶;'E'表示退出VIP客戶維護狀態(tài);2)輸出:a.銀行營業(yè)廳排隊的動畫顯示:包括顯示當前最大服務號碼,窗口正在辦理的服務號碼,以及窗口的空閑、暫停狀態(tài)。為方便查看程序,設置一塊顯示區(qū),顯示鍵盤輸入的信息。b.銀行營業(yè)廳排隊情況的記錄(結(jié)果)文件。記錄文件也是文本文件,每一行表示一次取號服務或一次營業(yè)辦理,包括以下內(nèi)容:取號時間:表示客戶到達后,得到普通VIP服務號碼的時間;以整數(shù)表示,從小到大排列,占4個字節(jié),從0開始,單位秒。服務號碼:剛分配到的服務號碼,字符串表示,占3個字節(jié)(000/V00-999/V99)。或者:辦理時間:表示窗口處理完一個服務號碼,準備叫下一個號碼的時間。以整數(shù)表示,從小到大排列,占4個字節(jié),從0開始,單位秒。服務號碼:辦理完業(yè)務的客戶服務號碼,字符串表示,占5個字節(jié)(000/V00-999/V99)。每個數(shù)據(jù)項之間用一個空白字符隔開。程序中不必考慮檢查數(shù)據(jù)的正確性。備注:老師會提供一組已經(jīng)編制好的子程序以及一些給出的數(shù)據(jù)定義,它們的主要功能是表示銀行排隊系統(tǒng)參數(shù),模擬銀行排隊以及處理各類信號的輸入輸出。要注意利用它們提供的一些控制顯示和鍵盤輸入的函數(shù)和過程來簡化輸入和輸出(包括動畫)的設計。當然也可以利用編程語言提供的函數(shù)和過程來完成輸入和輸出。基本的要求和較高的要求以下內(nèi)容僅供有余力的同學參考實現(xiàn)。不同類別業(yè)務的辦理時間不同,而客戶辦理各類別業(yè)務的幾率隨機。營業(yè)窗口叫號兩次,客戶不應答,做過號處理。程序總體結(jié)構(gòu)以下內(nèi)容僅供參考。我們可以在主程序中寫如下兩個函數(shù)調(diào)用:Configure;Simulation;前者在進行模擬前設置一些參數(shù),這比較簡單。而后者則是進行仿真模擬,這相當復雜,所以下面我們就來討論如何設計Simulation。這一類的模擬仿真程序有一個共同的特點是要模擬某個系統(tǒng)在一段時間內(nèi)的情況,所以我們很自然地要從時間上對該問題進行分解,就是說Simulation(){Initialize;{初始化過程}doBank_status();{計算銀行營業(yè)廳狀態(tài)在這一時刻的變化,例如某窗口的一個業(yè)務辦理完畢,就要重新設定下一個服務號碼}Writemessage();{輸出信息(包括動畫)}Getinput();{接收當前時刻的新輸入(包括新客戶到達和窗口暫停等)Control();{調(diào)用排隊策略程序決定該如何分配號碼給窗口}Time二time+1;{推進仿真時間,假定每一秒營業(yè)廳進行上述操作一次}Whilenotendcondition;}這就是可以模擬銀行排隊系統(tǒng)的基本結(jié)構(gòu)了!這個程序結(jié)構(gòu)的基本思想就是模擬了銀行排隊系統(tǒng)每個時刻做的幾件事情,然后將時間向后推移一個時間單位,然后再做那幾件事,于是就模擬了銀行營業(yè)廳的工作狀態(tài)。十一、實驗報告要求:實驗要求,按照軟件開發(fā)過程的各個階段提交階段性文檔。階段性文檔不能在實驗結(jié)束后補寫,必須遵照實驗進度分階段提交,貫徹文檔指導實踐、實踐修正文檔的軟件工程思想。文檔提交可以書面形式,也可以電子文件形式。(1)【模板:會議記要】<小組編號>小組第**周第**次會議記要實驗名稱:*******會議時間:****年**月**日**點至**點與會者:<成員1>、<成員2>..文檔記錄者:***會議內(nèi)容摘要:<問題編號>、〈問題說明〉;〈討論意見〉;〈最后結(jié)果〉。備注:小組正式會議的記錄,主要記錄討論問題的概要,以及工作進展情況,詳細設計內(nèi)容應該放在其它文檔中。會議記要一般兩頁左右。(2)【模板:周報】<小組編號>小組第**周周報實驗名稱:*******周報時間:****年**月**日小組成員:<成員1>、<成員2>..是否按計劃完成?是!〈上周工作小結(jié)〉;//按人員總結(jié)〈本周工作分派〉。//按人員分排否!〈未完成原因〉;〈本周解決辦法〉;〈需要請指導教師協(xié)助的問題〉。(3)【模板1:任務書】<小組編號>小組<實驗名稱>任務書版本號:Bank-小組簡寫-Task-***(每次修訂時改變編號)編制時間:**編制人員:**1.1任務目標概述1.2目標系統(tǒng)的需求(對應任務書上的銀行營業(yè)廳配置)1.3目標系統(tǒng)的需求分析(對應任務書上的銀行營業(yè)廳排隊控制)1.4目標系統(tǒng)的策略選擇(對應任務書上的銀行營業(yè)廳排隊策略)1.5目標系統(tǒng)的IO需求(對應任務書上的輸入輸出)1.6目標系統(tǒng)的高級需求(對應任務書
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 紅外測溫槍課程設計
- 2025年度冷鏈運輸冷鏈物流冷鏈倉儲安全合同簡易版
- 2025年度炊事員臨時聘用合同書編制與審查規(guī)范
- 通信及運動系統(tǒng)課程設計
- 2025年度餐飲服務合同解除通知函
- 二零二五年度汽修廠學徒工培訓用工合同
- 二零二五年度石材加工與石材石材雕刻藝術(shù)市場推廣合同
- 二零二五年度頂賬房交易資金監(jiān)管服務協(xié)議
- 二零二五年度電子商務平臺客服聘用合同簡易化
- 鍵槽機床夾具課程設計
- 2024-2025學年成都青羊區(qū)九上數(shù)學期末考試試卷【含答案】
- 2025年競聘醫(yī)院內(nèi)科醫(yī)生崗位演講稿模版(3篇)
- 虛擬貨幣地址分析技術(shù)的研究-洞察分析
- 綠色供應鏈管理制度內(nèi)容
- 心理學基礎知識考試參考題庫500題(含答案)
- 電力智慧檢修安全運行三維可視化管理平臺建設方案
- 一年級數(shù)學(上)計算題專項練習集錦
- 消防安全應急預案下載
- 《北航空氣動力學》課件
- 附件:財政業(yè)務基礎數(shù)據(jù)規(guī)范(3.0版)
- 電商公司售后服務管理制度
評論
0/150
提交評論