基于QT5的校园导游系统设计与实现
資源下載地址:https://download.csdn.net/download/sheziqiong/85724151
資源下載地址:https://download.csdn.net/download/sheziqiong/85724151
**校園導游系統 Qt5 圖形界面版本 **
設計流程
問題描述
-
隨著現代旅游業的快速發展,圖文聲像導游方式和實地口語導游方式都已經不能滿足現階段旅游者的需求,信息化的飛速發展造就了地理信息系統(GIS)和全球定位系統(GPS),促使消費者更多的選擇自助游和自駕游等方式出行。而近年來高等院校的發展使得高校也成為了一個景點。如何讓游客以最短的時間到達旅游目的地就是我的課程設計所尋求解決的問題。我打算通過最短路徑算法結合圖像化的表示方法,并結合實際情況以高等院校為例采集所需要的數據,在開發環境下模擬設計導游咨詢系統,理論上使得游客可以輕松的尋找到最適合自己的旅游線路,并以此為依據合理安排自己的行程。
-
用無向網表示校園景點平面圖,圖中頂點表示主要景點,存放景點的編號、名稱、簡介等信息,圖中的邊表示景點間的道路,存放路徑長度等信息。要求能夠回答有關景點介紹、游覽路徑等問題。
設計目標
- 查詢任意景點的相關信息。
- 查詢圖中任意兩個景點間的最短路徑。
- 查詢圖中任意兩個景點間的所有路徑。
- 增加、刪除、更新有關景點和道路的信息。
- 求多個景點的最佳(最短)游覽路徑。
- 實現通過圖形用戶界面進行人機交互。
- 實現C++語言對于文件的讀寫操作。
- 實現其他額外的附加功能。
Qt簡介
Qt 是一個著名的 C++ 應用程序框架。你并不能說它只是一個 GUI 庫,因為 Qt 十分龐大,并不僅僅是 GUI 組件。使用 Qt,在一定程度上你獲得的是一個“一站式”的解決方案:不再需要研究 STL,不再需要 C++ 的,不再需要到處去找解析 XML、連接數據庫、訪問網絡的各種第三方庫,因為 Qt 自己內置了這些技術。http://www.biyezuopin.vip
Qt 和 wxWidgets 一樣,也是一個標準的 C++ 庫。但是它的語法類似于 Java 的 Swing,十分清晰,而且使用信號槽(signal/slot)機制,讓程序看起來很明白——這也是很多人優先選擇 Qt 的一個很重要的原因。不過,所謂“成也蕭何,敗也蕭何”。這種機制雖然很清楚,但是它所帶來的后果是你需要使用 Qt 的 moc 對程序進行預處理,才能夠再使用標準的 make 或者 nmake 進行正常的編譯,并且信號槽的調用要比普通的函數調用慢大約一個數量級(Qt 4 文檔中說明該數據,但 Qt 5 尚未有官方說明)。Qt 的界面也不是原生風格的,盡管 Qt 使用 style 機制十分巧妙地模擬了原生界面。另外值得一提的是,Qt 不僅僅能夠運行在桌面環境中,還可以運行在嵌入式平臺以及手機平臺。
算法介紹
- 迪杰斯特拉算法
迪杰斯特拉算法是由荷蘭計算機科學家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是從一個頂點到其余各頂點的最短路徑算法,解決的是有向圖中最短路徑問題。迪杰斯特拉算法主要特點是以起始點為中心向外層層擴展,直到擴展到終點為止。
- 弗洛伊德算法
在計算機科學中,Floyd-Warshall算法是一種在具有正或負邊緣權重(但沒有負周期)的加權圖中找到最短路徑的算法。算法的單個執行將找到所有頂點對之間的最短路徑的長度(加權)。雖然它不返回路徑本身的細節,但是可以通過對算法的簡單修改來重建路徑。該算法的版本也可用于查找關系R的傳遞閉包,或(與Schulze投票系統相關)在加權圖中所有頂點對之間的最寬路徑。
流程分析
- 首先,啟動程序,可以有左側提供了信息錄入,信息查詢,路徑查詢以及多景點之間路徑查詢的功能入口。其中信息錄入用來錄入景點數據,信息查詢用來查詢景點的信息,路徑查詢可以幫助查詢兩個景點之間最佳的游覽路徑以及所有路徑,多經典查詢將這種最佳路徑擴展到了多個景點之間。
- 然后,根據不同的功能選項可有不同的進度,本程序提供相對完善的功能來實現這些操作。
概要設計
-
存儲景點信息
- 使用結構體來存儲景點信息,每個景點作為一個單獨的景點類對象,含有景點編號(也就是唯一標識符),景點名稱和景點簡介的信息。同時應該使用文件讀寫操作確保景點信息能夠保存在本地并且可供查詢。http://www.biyezuopin.vip
- 此外,還可以錄入景點之間的路徑的數據,方便計算最短路徑的問題。
-
維護景點信息
通過一個特定的函數讀取存儲景點信息的文件,并且可以寫入新的信息以及修改信息。
-
單源最短路徑
使用迪杰斯特拉算法可以求單源最短路徑問題(不過邊的權重需要為正數)。
-
兩點之間最短路徑
使用弗洛伊德算法或者迪杰斯特拉算法都可以解決這個問題,具體實現時會有具體的分析。
-
任意兩點之間最短路徑
弗洛伊德算法是一種在具有正或負邊緣權重(但沒有負周期)的加權圖中找到最短路徑的算法。
-
多景點之間最佳路徑
對于多個景點求最佳路徑的問題,可以轉化為先到第一個景點,再到第二個景點,最后到最后一個景點的問題,如果途中經過需要經過的某個節點,就將其標記為已訪問,最后可以得到一條路徑,本質上是對弗洛伊德算法進行改進。
-
圖形界面
使用Qt設計師進行圖形界面的開發,同時加入信號與槽可以方便使用C++函數進行調用與對接。
編譯方式
-
使用qmake -project命令來生成pro工程文件,這時可以看到Qt工程目錄中已經生成了*.pro文件,此文件與項目文件夾同名。
-
在有些版本的Qt中,需要添加widgets模塊。因為源文件中使用到的類都包含在這個模塊中,例如:main函數中用到的QApplication類。如果你的Qt版本是Qt4,包含這個模塊可能會出錯,所以為了保證與Qt4的兼容性,需要添加代碼。
- 在命令行輸入qmake -工程名.pro,會自動生成makefile文件以及.stash文件,后續只需要一條命令就可以編譯完成。
- 命令行輸入make,g++編譯器就會自動完成編譯生成最終的二進制文件,然后輸入 ./工程名 就可以在Linux下運行編譯好的Qt程序。
控制臺版本示例
-
范例地圖
以XX大學軟件園校區地圖為例,進行簡單的校園導游系統測試。
- 主界面
-
查詢景點信息
- 要想錄入信息,只需要按照控制臺程序提示的操作編號,輸入1,再依次輸入景點的編號名稱以及簡介信息即可錄入景點信息。例如錄入編號為2的教學樓的景點信息,只需要進行圖示操作。
- 查詢正門景點的景點信息,輸入編號1,就可以看到信息。
-
查詢路徑
- 以正門景點為例,可以看到在景點1正門與景點2教學樓之間存在一條長度為9的路徑,按照提示輸入編號3,然后依次輸入1 2 9,即可將這條路徑錄入。
- 在景點1正門與景點2教學樓之間存在多條路徑,其中從1->2這條路徑是最短的,可以通過查詢最短路徑的操作來查看這條路徑。http://www.biyezuopin.vip
圖形界面版本示例
- 主界面
-
錄入信息
-
在圖形界面程序中錄入信息,只需要點擊信息錄入按鈕,在右側對應的位置填寫好對應的項目,再點擊錄入信息按鈕即可完成錄入。
-
在圖形界面程序中錄入道路信息,仍然需要點擊信息錄入按鈕,在右側對應的位置填寫好對應的項目,再點擊錄入道路按鈕即可完成錄入。值得一提的是,錄入景點信息的界面與錄入道路信息的界面,為了方便起見,特意放在了一起進行處理。
-
在本圖形界面程序中,景點以及道路信息的修改仍然與控制臺程序相同,采用覆蓋修改的方法,因此,只需要按照錄入景點道路信息的辦法覆蓋錄入就可以完成操作,示意圖如下所示。
-
-
查詢信息
- 點擊左側快捷入口的信息查詢按鈕,輸入景點編號,例如正門的景點編號1,點擊查詢景點信息按鈕,就可以在下方的文本框中輸出景點的詳細信息。
-
查詢路徑
- 點擊左側的所有路徑查詢按鈕,輸入路徑起點和終點就可以進行查詢。例如,我們看到在正門景點1與科研樓景點3之間存在兩條路徑,可以通過GUI程序查詢這兩條路徑。
資源下載地址:https://download.csdn.net/download/sheziqiong/85724151
資源下載地址:https://download.csdn.net/download/sheziqiong/85724151
總結
以上是生活随笔為你收集整理的基于QT5的校园导游系统设计与实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 脉冲宽度调节信号PWM
- 下一篇: 第八章 PE文件 windows程序设计