首先,不得不說因為助教給的這個**的問題,實在是不好做介面……我們的思路就是用介面盡可能地展現出排程的過程並顯示出最終的結果,這個結果其實包括兩方面,平均時間是必須的,還有就是最終的狀態,這個對比起初始資訊的狀態還是可以看出一定的效果的;另外,由於測試資料報含3個時間段,設計乙個可以讓使用者自由選定模擬資料的功能會更加人性化一點~
我們這次的ui介面效果其實並沒有做的那麼大,因為程式本身就是基於c#控制台的程式,在此基礎上如果要搞頭換麵會很麻煩(為了想得到實時的資料,我們埋頭讀**讀了好長時間,最後助教的這套**讓我徹底crash了,好吧~),於是我們就在專案方案的空間內加入了windows form 介面組建並進行了簡單的設計和優化(如下圖所示)
首先是 uiform 的介面:
這個介面的功能是讓使用者自行選擇要開啟的資料資訊檔案,即為命令列確定要載入的電梯和乘客的資訊的檔案位址,然後把位址傳給命令列引數,具體的介面簡單效果如下圖所示~
介面很簡單明瞭,所以我們接下來還是來看**吧,首先是按鈕控制,這個其實很簡單,控制開啟檔案的瀏覽介面以及關閉介面等,如下:
接下來是在原先的 program.cs 的**中修改的部分:
這裡是啟用了另乙個介面 uiformresult,即功能僅僅是為了顯示結果的,其中 result 是結果時間的字串資訊,由於這個資料要在新建的介面的元件中被使用,所有根據我們在網上查的資料(即注釋內容),我們需要設定其資料格式型別(如下圖)
而在另乙個顯示結果的介面裡,載入介面時即要顯示結果資訊,其**如下:
這樣我們完整執行時的效果即是,當使用者選擇兩個 xml 檔案的路徑後點選「開始執行排程」,然後轉到控制台執行演算法過程,最後顯示結果的介面彈出,單擊「退出程式」後退出~
遇到的問題:
好像是因為助教給的**的命令列程式是多執行緒的,所以在開介面的時候(具體應該是執行開啟檔案對話方塊的時候)會提示錯誤,所以根據msdn上的解釋和改進方案,再次貼出改進方法:
* 單元是程序內部具有相同執行緒訪問要求的物件的邏輯容器
* 同一單元中的所有物件都可以接收從該單元中的任何執行緒發出的呼叫
* .net framework 不使用單元,託管物件自己負責以執行緒安全的方式使用所有共享資源
* 由於 com 類使用單元,因此公共語言執行庫需要在 com interop 的情況下呼叫 com 物件時建立並初始化乙個單元
* 託管執行緒可以建立並進入只允許有乙個執行緒的單執行緒單元 (sta)或者包含乙個或多個執行緒的多執行緒單元(mta)
* 通過將執行緒的 apartmentstate 屬性設定為 apartmentstate 列舉值之一,可以控制所建立的單元的型別
* 由於給定執行緒只能初始化 com 單元一次,因此在第一次呼叫非託管**之後就不能更改單元型別
* * 成員定義:
* sta:thread 將建立並進入乙個單執行緒單元。
* mta:thread 將建立並進入乙個多執行緒單元
* unknown:尚未設定 apartmentstate 屬性。
* * 解決辦法兩種:
* * (1)
* 在main入口新增stathread的attribute
* [stathread] static void main()
* * (2)
* 或* thread newthread = new thread(new threadstart(threadmethod));
* newthread.setapartmentstate(apartmentstate.mta);
*/最後根據要求附上部分**(僅是空間 world 的**)
files.cnblogs.com/magiccode1023/軟體工程電梯排程演算法設計部分**.rar
結對程式設計 電梯排程
一.題目要求 二.程式設計 定義三個函式 int abs int a,int b,int c,int d 判斷響應滿足請求最近的電梯號 int check int goto,int now 檢查電梯狀態,並判斷最近電梯是否滿足條件 是否超重 int call int now,int goto,int...
結對程式設計 電梯排程
現有一新建辦公大廈,共有21層,共有四部電梯,所有電梯基本引數如下表所示 電梯編號 可服務樓層 最大乘客數量 最大載重量 全部樓層 800 kg 單層800 kg 雙層1600 kg 全部樓層 2000 kg 其使用規定如下 1 樓層號為0 20,其中0號為地下一層 2 有樓層限制的電梯不在響應樓層...
結對程式設計 電梯排程 總結
結對成員 口平音 阮磊 口平音cnblogs 注 關於這次結對程式設計的程式我覺著我的隊友口平音同學 請允許我下文用 口 來代替,日常習慣於這樣稱呼 已經進行了詳細的解釋,請老師點選 鏈結檢視 在這次的結對程式設計中我們採用邊寫邊審的方式,由於我 編寫的能力較弱,故主要編碼的工作就交給了口,而我則主...