QT學(xué)習(xí)之路(4)——旅行模擬系統(tǒng)

寫在前面


旅行模擬系統(tǒng),是大二下計(jì)算機(jī)學(xué)院數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)的課設(shè)內(nèi)容,在上學(xué)期的數(shù)據(jù)結(jié)構(gòu)課的理論基礎(chǔ)上,大大加強(qiáng)了學(xué)生的動(dòng)手實(shí)踐能力,我在該課程上花費(fèi)了不少精力,更不希望自己花費(fèi)的精力白白浪費(fèi)掉。

課設(shè)內(nèi)容

城市之間有三種交通工具(汽車、火車和飛機(jī))相連,根據(jù)旅客的要求設(shè)計(jì)出行路線并輸出,同時(shí)系統(tǒng)能模擬旅客所在的地點(diǎn)和狀態(tài),目標(biāo)為為旅客提供能完美的出行計(jì)劃,同時(shí)能模擬多個(gè)旅客的旅行過程。
同時(shí)滿足以下功能:城市總數(shù)為15,建立了較為復(fù)雜的交通時(shí)刻表(見schedule.txt),旅客要求包含起點(diǎn)終點(diǎn)、途經(jīng)城市和旅行策略等,查詢系統(tǒng)時(shí)間每十秒向前推進(jìn)一小時(shí),可建立日志文件記錄旅客狀態(tài)和鍵入信息。
旅客可在旅行中途某城市等待過程中再次以當(dāng)前城市為出發(fā)地進(jìn)行查詢(更改計(jì)劃),并進(jìn)行相應(yīng)的移動(dòng),且有地圖圖形,每個(gè)旅客狀態(tài)均可反映在地圖上。

功能需求

? 城市總數(shù)為15個(gè)

? 建立汽車、火車和飛機(jī)的時(shí)刻表(航班表)
有沿途到站及票價(jià)信息,點(diǎn)擊城市可顯示其全部時(shí)刻表信息
時(shí)刻表編制較為復(fù)雜,任意兩個(gè)有交通工具的城市間必有汽車往來,較多有火車往來,較少有飛機(jī)往來
任意兩有交通工具的城市間汽車數(shù)量為2-3,火車數(shù)量(若有)為1-2,飛機(jī)數(shù)量(若有)為1

? 旅客的要求包括:起點(diǎn)、終點(diǎn)、途經(jīng)某些城市和旅行策略,以及旅行策略為限定時(shí)間時(shí)的用戶限定時(shí)間

? 旅行策略有:
最少費(fèi)用策略:無時(shí)間限制,費(fèi)用最少即可
最少時(shí)間策略:無費(fèi)用限制,時(shí)間最少即可
限時(shí)最少費(fèi)用策略:在規(guī)定的時(shí)間內(nèi)所需費(fèi)用最省

? 旅行模擬查詢系統(tǒng)以時(shí)間為軸向前推移,每10秒左右向前推進(jìn)1個(gè)小時(shí)(非查詢狀態(tài)的請求不計(jì)時(shí));

? 不考慮城市內(nèi)換乘交通工具所需時(shí)間

? 系統(tǒng)時(shí)間精確到小時(shí)

? 建立日志文件,對旅客狀態(tài)變化和鍵入等信息進(jìn)行記錄

? 選做一:某旅客可在旅行中途某城市等待過程中再次以當(dāng)前城市為出發(fā)地進(jìn)行查詢(更改計(jì)劃),并進(jìn)行相應(yīng)的移動(dòng),且有地圖圖形,每個(gè)旅客狀態(tài)均可反映在地圖上。

? 選做二:用圖形繪制地圖,并在地圖上反映出旅客的旅行過程。

1.軟件開發(fā)環(huán)境

版本庫:Qt 5.12.0
IDE:Qt creator 4.8.0
編譯器:Desktop Qt 5.12.0 minGW 64-bit
系統(tǒng):windows 7, windows 10

2.總體結(jié)構(gòu)

2.1模塊結(jié)構(gòu)圖
模塊結(jié)構(gòu)圖
2.2模塊劃分
模塊劃分

3.需求說明及分析

3.1城市總數(shù)為15個(gè)

分析:小組以中國南部15個(gè)城市抽象為該旅行模擬系統(tǒng)的15個(gè)城市,并采用PS方式繪制城市間交通情況圖,大致符合實(shí)際地理位置,效果圖如圖:

3.2建立汽車、火車和飛機(jī)的時(shí)刻表

分析:在繪制完城市地圖后,我們初步畫出15個(gè)點(diǎn)間的邊情況,并決定了每條邊的汽車、火車、飛機(jī)情況,兩點(diǎn)間有邊則一定有汽車(2~3趟/天);火車有七個(gè)車次(分別為 ),在城市間有往返的運(yùn)行,例如列車K520早4:00從A城出發(fā)途徑B、H、C在12:00到達(dá)D城;飛機(jī)隨機(jī)選擇填寫。具體時(shí)刻表見圖(小部分):

同時(shí),在封裝的mypushbutton按鈕類下,實(shí)現(xiàn)了點(diǎn)擊某一城市,可以顯示當(dāng)前城市能夠到達(dá)的城市的所有時(shí)刻表,以及票價(jià)等信息,如圖:

3.3旅客的要求

分析:新建TravelDemand QT設(shè)計(jì)師界面類,當(dāng)在widget點(diǎn)擊查詢時(shí)顯示該界面,在ui中添加元素以采集用戶輸入信息并保存到當(dāng)前旅客的屬性中。具體ui界面見下圖。

3.4旅行模擬查詢系統(tǒng)以時(shí)間推移

? 旅行模擬查詢系統(tǒng)以時(shí)間為軸向前推移,每10秒左右向前推進(jìn)1個(gè)小時(shí),不考慮城市內(nèi)換乘交通工具所需時(shí)間

? 系統(tǒng)時(shí)間精確到小時(shí)

分析:實(shí)現(xiàn)窗口下端顯示以當(dāng)前時(shí)間開始,每十秒(任意時(shí)間間隔)向前推進(jìn)一個(gè)小時(shí)。旅客行程按照模擬系統(tǒng)時(shí)間為單位進(jìn)行狀態(tài)改變等。

效果如圖:

3.5選做一(更改計(jì)劃)

分析:某旅客可在旅行中途某城市等待過程中再次以當(dāng)前城市為出發(fā)地進(jìn)行查詢(更改計(jì)劃),并進(jìn)行相應(yīng)的移動(dòng),且有地圖圖形,每個(gè)旅客狀態(tài)均可反映在地圖上。

需結(jié)合用戶使用說明,旅客須移動(dòng)至某城市的等待時(shí)間時(shí)點(diǎn)擊查詢按鈕,出發(fā)地改為當(dāng)前所在地,再根據(jù)自身需求輸入所需要求,即可刷新旅客旅行計(jì)劃,并根據(jù)新計(jì)劃進(jìn)行移動(dòng)。

3.6選做二(圖形表示)

分析:圖形繪制地圖,并在地圖上反映出旅客的旅行過程。

旅客的狀態(tài)用以下圖片表示:

實(shí)際表現(xiàn)如圖:(昆明—飛機(jī)—>上海)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容