資源描述:
《景區(qū)旅游管理系統(tǒng)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、景區(qū)旅游信息管理系統(tǒng)1.1.1項(xiàng)目需求在旅游景區(qū),經(jīng)常會遇到游客打聽從一個(gè)景點(diǎn)到另一個(gè)景點(diǎn)的最短路徑和最短距離,這類游客不喜歡按照導(dǎo)游圖的線路來游覽,而是挑選自己感興趣的景點(diǎn)游覽。為于幫助這類游客信息查詢,就需要計(jì)算出所有景點(diǎn)之間最短路徑和最短距離。算法采用迪杰斯特拉算法或弗洛伊德算法均可。建立一個(gè)景區(qū)旅游信息管理系統(tǒng),實(shí)現(xiàn)的主要功能包括制訂旅游景點(diǎn)導(dǎo)游線路策略和制訂景區(qū)道路鋪設(shè)策略。任務(wù)中景點(diǎn)分布是一個(gè)無向帶權(quán)連通圖,圖中邊的權(quán)值是景點(diǎn)之間的距離。?。?)景區(qū)旅游信息管理系統(tǒng)中制訂旅游景點(diǎn)導(dǎo)游線路策略,首先通過遍歷景點(diǎn),給出一個(gè)入口景點(diǎn),建立一個(gè)導(dǎo)游線路圖,導(dǎo)游線路圖用有向
2、圖表示。遍歷采用深度優(yōu)先策略,這也比較符合游客心理。?。?)為了使導(dǎo)游線路圖能夠優(yōu)化,可通過拓樸排序判斷圖中有無回路,若有回路,則打印輸出回路中的景點(diǎn),供人工優(yōu)化?!。?)在導(dǎo)游線路圖中,還為一些不愿按線路走的游客提供信息服務(wù),比如從一個(gè)景點(diǎn)到另一個(gè)景點(diǎn)的最短路徑和最短距離。在本線路圖中將輸出任意景點(diǎn)間的最短路徑和最短距離。?。?)在景區(qū)建設(shè)中,道路建設(shè)是其中一個(gè)重要內(nèi)容。道路建設(shè)首先要保證能連通所有景點(diǎn),但又要花最小的代價(jià),可以通過求最小生成樹來解決這個(gè)問題。本任務(wù)中假設(shè)修建道路的代價(jià)只與它的里程相關(guān)。因此歸納起來,本任務(wù)有如下功能模塊: 創(chuàng)建景區(qū)景點(diǎn)分布圖; 輸出景區(qū)
3、景點(diǎn)分布圖(鄰接矩陣) 輸出導(dǎo)游線路圖; 判斷導(dǎo)游線路圖有無回路; 求兩個(gè)景點(diǎn)間的最短路徑和最短距離; 輸出道路修建規(guī)劃圖。 主程序用菜單選項(xiàng)供用戶選擇功能模塊。 1.1.2設(shè)計(jì)流程主程序采用設(shè)計(jì)主菜單調(diào)用若干功能模塊,同時(shí)在主程序中定義兩個(gè)鄰接鏈表類型變量G和G1,作為調(diào)用子函數(shù)的參數(shù)?!〗▓D子模塊建立無向帶權(quán)圖,輸入頂點(diǎn)信息和邊的信息,輸出鄰接鏈表G。由于是無向邊,輸入一條邊時(shí)構(gòu)建兩條邊。 輸出圖子模塊:從鄰接鏈表g轉(zhuǎn)換成鄰接矩陣a,并輸出鄰接矩陣a。圖中邊的權(quán)值∞用32767表示。遍歷子模塊:通過遍歷圖G,只得到遍歷的頂點(diǎn)序列。我們先將頂點(diǎn)序列存在數(shù)組vex
4、中,然后再轉(zhuǎn)換成導(dǎo)游線路存入數(shù)組vex1中,最后生成導(dǎo)游線路圖G1(同樣用鄰接鏈表存儲,供拓樸排序用)。將遍歷頂點(diǎn)序列轉(zhuǎn)換成導(dǎo)游線路?! D10-43(a)(b)(c)三個(gè)無向圖的深度優(yōu)先搜索遍歷的結(jié)果均為v1→v2→v3→v4。但它們的導(dǎo)游線路圖卻不同。圖(a)的導(dǎo)游線路圖為v1→v2→v3→v4,與遍歷結(jié)果相同?! D(b)的導(dǎo)游線路圖為v1→v2→v3→v2→v4,圖(c)的導(dǎo)游線路圖為v1→v2→v3→v2→v1→v4?! ”闅v結(jié)點(diǎn)序列與導(dǎo)游線路圖轉(zhuǎn)換的策略: 設(shè)遍歷結(jié)果為v1→v2→…→vi→vi+1→…→vn 對于結(jié)點(diǎn)vi和vi+1,如果vi和vi+1存在邊,
5、則直接轉(zhuǎn)換?! 》駝t,加入邊vi→vi-1,如果vi-1和vi+1存在邊,則加入邊vi-1→vi+1。 再否則,加入邊vi-1→vi-2,如果vi-2和vi+1存在邊,則加入邊vi-2→vi+1?! ∪绻鹶i-2和vi+1還不存在邊,繼續(xù)回溯,一定能找到某個(gè)整數(shù)k(因?yàn)榫包c(diǎn)分布圖是連通圖),使得vi-k和vi+1存在邊,則加入邊vi-k→vi+1?! ≡诒救蝿?wù)中,轉(zhuǎn)換后的線路圖存于數(shù)組vex1中。流程圖見10-29。拓樸排序子模塊流程圖,見圖10-39源程序,參見10.7節(jié)的samp10-8.c。求最短路徑子模塊流程圖:見10-34。源程序,參見10.6節(jié)的samp10-6
6、.c。求最小生成樹子模塊流程圖:見19-33。源程序,參見10.6節(jié)的samp10-5.c。1.1.3數(shù)據(jù)結(jié)構(gòu)景點(diǎn)的信息包括景點(diǎn)的名稱和近鄰景點(diǎn)之間的通路和距離。用鄰接鏈表存儲景點(diǎn)分布圖的信息。(帶權(quán)無向)圖的鄰接鏈表 /***************************************************************//*程序功能:建立一個(gè)旅游景區(qū)管理系統(tǒng),實(shí)現(xiàn)旅游路線選擇 */ /*景區(qū)道路優(yōu)化等功能 */ /*********************************************
7、******************/ #include“stdio.h” #include“stdlib.h” #include“string.h” #defineMAX_EDGE_NUM100/*定義圖的最大邊數(shù)*/ #defineMAX_VERTEX_NUM20 #defineMAXNUM32767 typedefcharVertex_type[10]; typedefstructnode/*邊表結(jié)點(diǎn)*/ { intadjvex;/*鄰接點(diǎn)域*/ intweight;