資源描述:
《校園導(dǎo)游咨詢系統(tǒng).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、1.需求分析1.1創(chuàng)建結(jié)點(diǎn)(旅游景點(diǎn))創(chuàng)建該旅游景點(diǎn)是在順序表中完成的,在順序表中,首先要?jiǎng)?chuàng)建結(jié)點(diǎn)結(jié)構(gòu)體,將該結(jié)構(gòu)體命名為SeqList,成員變量有數(shù)組list和size,分別用來表示最大元素個(gè)數(shù)(即旅游景點(diǎn)的最大個(gè)數(shù))和順序表中當(dāng)前存儲(chǔ)的數(shù)據(jù)元素個(gè)數(shù),順序表可以完成的功能有求當(dāng)前數(shù)據(jù)元素個(gè)數(shù),插入數(shù)據(jù)元素,刪除數(shù)據(jù)元素,取數(shù)據(jù)元素。1.2創(chuàng)建圖在構(gòu)造圖的操作中包括結(jié)點(diǎn)的插入(實(shí)參包括AdjMGraph*G,DataTypv[],n,RowColWeightE[],e)分別表示在該*G的結(jié)構(gòu)體中的Seq
2、listVertices[]中插入結(jié)點(diǎn),在*G的結(jié)構(gòu)體中的edge[MaxVertices][MaxVertices]的邊數(shù)組中插入邊信息結(jié)點(diǎn)分別為行下標(biāo)、列下標(biāo)、權(quán)值,該*G的結(jié)構(gòu)體中numOfEdges,e表示邊的條數(shù),即將e的值給它。結(jié)點(diǎn)的順序表初始化,在該函數(shù)中也應(yīng)包括一個(gè)結(jié)構(gòu)體邊信息結(jié)構(gòu)體:成員包括行下標(biāo)、列下標(biāo)、權(quán)值。并將該結(jié)構(gòu)體命名為RowColWeight。1.3圖的實(shí)現(xiàn)在該函數(shù)中要使用SeqList頭文件,在該文件中要真正進(jìn)行插入邊和結(jié)點(diǎn)。首先在該函數(shù)中應(yīng)該定義一個(gè)結(jié)構(gòu)體AdjMGra
3、ph,在該結(jié)構(gòu)體的成員變量包括存放結(jié)點(diǎn)的順序表定義為SeqlistVertices[]、存放邊的鄰接矩陣用edge[MaxVertices][MaxVertices]表示,邊的條數(shù)numOfEdges。初始化AdjMGraph中的成員變量線性表和邊數(shù)及存放邊的鄰接矩陣。然后在順序表中插入結(jié)點(diǎn),在鄰接矩陣中插入邊,刪除邊,刪除結(jié)點(diǎn)。取序號(hào)為V的結(jié)點(diǎn)的第一個(gè)鄰接結(jié)點(diǎn),取序號(hào)為V1的鄰接結(jié)點(diǎn)V2結(jié)點(diǎn)的下一個(gè)鄰接結(jié)點(diǎn)1.4求最短路徑在該函數(shù)中,應(yīng)該有四個(gè)參數(shù),兩個(gè)位輸入?yún)?shù),分別為帶權(quán)圖G和源點(diǎn)(景點(diǎn)起點(diǎn))序號(hào)
4、v0,兩個(gè)為輸出參數(shù),分別為distance[]和path[],distance[]用來存放達(dá)到的從源點(diǎn)v0到其余各結(jié)點(diǎn)的最短距離,path[]用來存放最短路徑的下標(biāo)。1、從農(nóng)業(yè)大學(xué)的平面地圖中選取出6個(gè)有代表性的景點(diǎn)。2、為來訪的客人提供圖中任意景點(diǎn)的路徑查詢,即查詢?nèi)我鈨蓚€(gè)景點(diǎn)之間的最短簡單路徑。當(dāng)用戶輸入正確時(shí),為用戶輸出任意兩景點(diǎn)的最短路徑;當(dāng)用戶輸入不合法時(shí),提示用戶輸入有誤并返回讓用戶重新輸入。3、為來訪客人推薦參觀最短路線。2.概要設(shè)計(jì)1.首先用鄰接矩陣存儲(chǔ)校園圖。2.用數(shù)據(jù)結(jié)構(gòu)知識(shí)創(chuàng)建校
5、園圖。3.手動(dòng)給校園圖賦上相關(guān)信息(景點(diǎn)名稱、代號(hào)、簡介),路徑及路徑長度。4.利用C語言知識(shí)編寫查找景點(diǎn)相關(guān)信息的程序。5.利用迪杰斯特拉算法計(jì)算任意兩點(diǎn)之間的最短路徑。6.最后用一個(gè)主函數(shù)main輸出各項(xiàng)結(jié)果。1.創(chuàng)建校園圖:(1)先定義節(jié)點(diǎn)個(gè)數(shù)N,邊的最大值(Maxweight),節(jié)點(diǎn)(景點(diǎn)名稱、景點(diǎn)信息),鄰接點(diǎn),邊,頂點(diǎn)向量,當(dāng)前頂點(diǎn)數(shù)和邊數(shù)。(2)先給一個(gè)節(jié)點(diǎn)賦上其相關(guān)信息,然后再用p=(Node)malloc(sizeof(edgenode))語句申請下一結(jié)點(diǎn),再給所申請的節(jié)點(diǎn)賦上相關(guān)信息
6、,直到節(jié)點(diǎn)數(shù)為N=6為止。(3)讀入道路的起始點(diǎn),為鄰接矩陣的邊賦相應(yīng)的值。時(shí)(4)節(jié)點(diǎn)和邊的相關(guān)信息都弄好了后,校園圖也就創(chuàng)建好了。2.利用函數(shù)Name給10個(gè)節(jié)點(diǎn)賦上相應(yīng)的名稱,利用函數(shù)Information給各節(jié)點(diǎn)添加相應(yīng)的介紹信息。3.利用函數(shù)travgraph來查找景點(diǎn)信息,要查找景點(diǎn)名稱時(shí)調(diào)用Name函數(shù),要查找景點(diǎn)介紹信息時(shí)調(diào)用Information函數(shù)。4.手動(dòng)創(chuàng)建一個(gè)校園圖AdjMGraphgcreat(AdjMGgrph*G),然后為相應(yīng)的邊賦上真正的值。5.用distance[]數(shù)
7、組來存放任意兩景點(diǎn)之間的最短路徑。6.用main函數(shù)來輸出結(jié)果:用switch語句分別輸出,要?jiǎng)?chuàng)建校園圖時(shí)調(diào)用AdjMGraphgraphcreat函數(shù);查找景點(diǎn)相關(guān)信息時(shí)調(diào)用search函數(shù);要查找任意兩景點(diǎn)之間的最短路徑時(shí),先輸入你目前所在的位置,再輸入你的目的地,最后調(diào)用path函數(shù)。3.詳細(xì)設(shè)計(jì)#defineN10#defineMAXSize20//圖中頂點(diǎn)數(shù)的最大值#defineMAXedg30//圖中邊數(shù)的最大值#include#include#incl
8、ude#includetypedefintAdjMGraph[MAXSize][MAXSize];//存放鄰接矩陣的權(quán)值信息typedefstruct{intvexs[MAXSize];AdjMGraphs;//}Matrix_Graph;//圖的鄰接矩陣表示法。typedefstructnumofedge//{intadjvex;//鄰接矩陣結(jié)點(diǎn)序號(hào)intlength;//定義道路長度charinfo