數(shù)據(jù)結(jié)構(gòu)校園導(dǎo)游咨詢系統(tǒng)課程設(shè)計(jì)報(bào)告及課程總結(jié)_第1頁
數(shù)據(jù)結(jié)構(gòu)校園導(dǎo)游咨詢系統(tǒng)課程設(shè)計(jì)報(bào)告及課程總結(jié)_第2頁
數(shù)據(jù)結(jié)構(gòu)校園導(dǎo)游咨詢系統(tǒng)課程設(shè)計(jì)報(bào)告及課程總結(jié)_第3頁
數(shù)據(jù)結(jié)構(gòu)校園導(dǎo)游咨詢系統(tǒng)課程設(shè)計(jì)報(bào)告及課程總結(jié)_第4頁
數(shù)據(jù)結(jié)構(gòu)校園導(dǎo)游咨詢系統(tǒng)課程設(shè)計(jì)報(bào)告及課程總結(jié)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 姓 名: 班 級: 學(xué) 號: 指導(dǎo)教師: 2012年12月目錄1、需求分析11.1 系統(tǒng)簡介11.2 系統(tǒng)功能模塊介紹12、概要設(shè)計(jì)22.1 系統(tǒng)功能結(jié)構(gòu)圖22.2 系統(tǒng)流程圖22.3 主要函數(shù)概要設(shè)計(jì)32.3.1 主函數(shù)概要設(shè)計(jì)32.3.2 初始化圖函數(shù)InitGraph()42.3.4 查詢景點(diǎn)信息函數(shù)設(shè)計(jì)SearchGraph()42.3.5 顯示圖中信息函數(shù)設(shè)計(jì)ShowGraph()42.3.6 弗洛伊德算法函數(shù)設(shè)計(jì)Floyd()53、詳細(xì)設(shè)計(jì)53.1 主函數(shù)詳細(xì)設(shè)計(jì)53.2初始化圖函數(shù)詳細(xì)設(shè)計(jì)InitGraph()63.3查詢景點(diǎn)信息函數(shù)詳細(xì)設(shè)計(jì)SearchGraph()73.4

2、弗洛伊德算法函數(shù)詳細(xì)設(shè)計(jì)Floyd()84、調(diào)試分析94.1 顯示主界面函數(shù)測試94.2 查找兩景點(diǎn)間最短路徑測試104.3 查看景點(diǎn)信息測試115.課程設(shè)計(jì)總結(jié)126、附錄13181、需求分析1.1 系統(tǒng)簡介隨著現(xiàn)代社會生活節(jié)奏的加快,人們外出旅行以尋求放松的時(shí)間越來越多??紤]到游客不可能對所有景點(diǎn)都有所了解,因此可能無法找到游玩景點(diǎn)最省時(shí),最高效的路徑,而人工導(dǎo)游成本又過高,故使用C語言,基于數(shù)據(jù)結(jié)構(gòu)中圖的相關(guān)算法開發(fā)了“江西農(nóng)業(yè)大學(xué)校園咨詢系統(tǒng)”。開發(fā)本系統(tǒng)目的在于為來訪我校的游客提供一條最短游覽路徑,本系統(tǒng)從實(shí)際出發(fā),通過對校園平面圖的分析,將其轉(zhuǎn)化為數(shù)據(jù)并保存在系統(tǒng)中,因此系統(tǒng)提供的

3、路徑具有較大的可信性。本系統(tǒng)界面友好,提示信息充分,在實(shí)際使用過程中運(yùn)行良好。1.2 系統(tǒng)功能模塊介紹本系統(tǒng)主要分為以下三大功能模塊:1、查詢兩景點(diǎn)最短路徑:用戶在選擇此功能模塊后,按照屏幕上方提示的景點(diǎn)名稱及其對應(yīng)的編號,要求用戶輸入起點(diǎn)和終點(diǎn)的編號,系統(tǒng)將在已存儲的景點(diǎn)中進(jìn)行匹配,若未找到所需查詢的景點(diǎn)編號,系統(tǒng)將提示錯(cuò)誤并要求用戶再次輸入。若輸入信息合法,則回車后系統(tǒng)將給出最短路徑,顯示于屏幕上方;2、查詢景點(diǎn)信息:用戶在選擇此功能模塊后,按照屏幕上方提示的景點(diǎn)名稱及其對應(yīng)的編號,要求用戶輸入想要查詢的景點(diǎn)的編號,回車后系統(tǒng)將在已存儲的景點(diǎn)中進(jìn)行匹配,若該景點(diǎn)信息尚未存儲則將提示錯(cuò)誤;若

4、找到對應(yīng)信息則系統(tǒng)將輸出景點(diǎn)信息,顯示于幕上方;3、退出系統(tǒng):用戶在使用完本系統(tǒng)后,選擇此功能模塊,系統(tǒng)提示“歡迎再次使用”后,按任意鍵系統(tǒng)將自動(dòng)退出。2、概要設(shè)計(jì)2.1 系統(tǒng)功能結(jié)構(gòu)圖2.2 系統(tǒng)流程圖開始創(chuàng)建無向圖寫入信息至無向圖中Case 1Case 2Case 3查詢路徑查詢景點(diǎn)息TTFFTendF退出系統(tǒng)2.3 主要函數(shù)概要設(shè)計(jì)2.3.1 主函數(shù)概要設(shè)計(jì)主函數(shù)首先是調(diào)用初始化圖函數(shù)InitGraph()函數(shù)創(chuàng)建一個(gè)圖,而后調(diào)用顯示主界面函數(shù)顯示一個(gè)可視化主界面,內(nèi)容包含本系統(tǒng)LOGO以及景點(diǎn)信息及操作編號的提示信息。之后,當(dāng)用戶成功輸入操作編號后,使用一個(gè)switch()函數(shù),判斷用

5、戶所需操作,匹配成功后,調(diào)用相關(guān)函數(shù)實(shí)現(xiàn)用戶所需功能。2.3.2 初始化圖函數(shù)InitGraph()InitGraph()函數(shù)首先使用MyGraph結(jié)構(gòu)體聲明一個(gè)用于存儲圖中信息的結(jié)構(gòu)體,而后定義結(jié)構(gòu)體中的景點(diǎn)數(shù)量以及路徑數(shù)量,然后使用循環(huán)為景點(diǎn)信息和路徑長度賦值,其中賦值景點(diǎn)信息時(shí)使用strcpy()函數(shù)將字符串復(fù)制給G.siteArrayi.siteName以及G.siteArrayi.siteInfo兩個(gè)數(shù)組。2.3.3 顯示主界面函數(shù)設(shè)計(jì)MainGraph()MainGraph()函數(shù)主要用于顯示主界面,函數(shù)中設(shè)計(jì)了本系統(tǒng)LOGO,同時(shí),界面還提示了景點(diǎn)名稱及其對應(yīng)編號。主界面下方以列

6、表方式提示用戶系統(tǒng)可進(jìn)行的操作及其對應(yīng)編號,最后提示用戶進(jìn)行輸入。2.3.4 查詢景點(diǎn)信息函數(shù)設(shè)計(jì)SearchGraph()該函數(shù)首先定義了一個(gè)變量k(用于接收用戶輸入的查詢編號)和一個(gè)標(biāo)記位flag(初始值設(shè)為1),而后使用while()循環(huán),判斷條件為flag=1,當(dāng)輸入編號不合法時(shí)提示錯(cuò)誤,當(dāng)輸入合法時(shí)標(biāo)記位flag置為0,此時(shí)跳出循環(huán),調(diào)用MyGraph結(jié)構(gòu)體對應(yīng)編號的景點(diǎn)信息,以列表方式輸出。2.3.5 顯示圖中信息函數(shù)設(shè)計(jì)ShowGraph() ShowGraph()函數(shù)主要功能為用循環(huán)將存儲于圖中的景點(diǎn)信息以列表方式輸出,方便用戶對應(yīng)著進(jìn)行輸入,同時(shí)提示用戶進(jìn)行輸入。2.3.6

7、弗洛伊德算法函數(shù)設(shè)計(jì)Floyd()本算法在設(shè)計(jì)時(shí)參考了數(shù)據(jù)結(jié)構(gòu)C語言版一書中有關(guān)Floyd算法的介紹,同時(shí)借鑒了如今網(wǎng)上流行的設(shè)計(jì)方式。之所以選擇本算法來實(shí)現(xiàn)計(jì)算最短路徑,原因在于本算法容易理解,可以算出任意兩個(gè)節(jié)點(diǎn)之間的最短距離,代碼編寫簡單。但是,本算法缺點(diǎn)在于時(shí)間復(fù)雜度過高,不適合用于計(jì)算大量數(shù)據(jù)。Floyd算法首先將兩景點(diǎn)間路徑長度數(shù)據(jù)存儲于數(shù)組 Dvw中,而后使用一個(gè)三維數(shù)組用于存放最短路徑所經(jīng)過的頂點(diǎn),接下來使用三重循環(huán)判斷兩景點(diǎn)之間直接路徑是否大于間接路徑,若大于,則將三維數(shù)組中存放的頂點(diǎn)信息更改為簡介路徑所經(jīng)過的頂點(diǎn)信息。以上部分完成后,當(dāng)用于標(biāo)記輸入數(shù)據(jù)是否合法的flag=1

8、時(shí),輸出錯(cuò)誤信息,提示用戶重新輸入,當(dāng)輸入數(shù)據(jù)合法時(shí),輸出以上程序得到結(jié)果。3、詳細(xì)設(shè)計(jì)3.1 主函數(shù)詳細(xì)設(shè)計(jì)#define InfiniteNum 10000 /定義一個(gè)無窮大數(shù)#define MaxInfoNum 100 /定義景點(diǎn)數(shù)據(jù)最大容量#include<stdio.h>#include<stdlib.h>#include<string.h>#include"MyGraph.h" /調(diào)用頭文件void main(void) MGraph g; /創(chuàng) 建 圖int i;g = InitGraph(); /初始化校園地圖MainGr

9、aph(&g); /調(diào)用顯示主界面函數(shù)scanf("%d",&i);while(i!=3)switch(i) case 1:ShowGraph(&g);Floyd(&g);MainGraph(&g);break; case 2:ShowGraph(&g);SearchGraph(&g);MainGraph(&g);break;case 3:exit(0);break;default:break;scanf("%d",&i); printf("歡迎下次繼續(xù)使用 !nn&quo

10、t;);3.2初始化圖函數(shù)詳細(xì)設(shè)計(jì)InitGraph()MGraph InitGraph(void) /初始化圖中的信息MGraph G;int i,j;G.siteNumber = 6; /景點(diǎn)數(shù)量G.pathNumber = 8; /路 徑 數(shù)量for(i=1;i<=G.siteNumber;i+)G.siteArrayi.siteIdentifier = i; /對景點(diǎn)進(jìn)行對應(yīng)編號strcpy(G.siteArray1.siteName,"一教");strcpy(G.siteArray1.siteInfo,"最有歷史的教學(xué)樓"); strcp

11、y(G.siteArray2.siteName,"軟件學(xué)院"); strcpy(G.siteArray2.siteInfo,"規(guī)模龐大,師資雄厚,全校第二大院"); strcpy(G.siteArray3.siteName,"老圖書館"); strcpy(G.siteArray3.siteInfo,"說實(shí)話,太破了!"); strcpy(G.siteArray4.siteName,"校門"); strcpy(G.siteArray4.siteInfo,"有點(diǎn)小家子氣,規(guī)模太小"

12、;); strcpy(G.siteArray5.siteName,"新圖書館"); strcpy(G.siteArray5.siteInfo,"邵逸夫先生捐贈的,設(shè)施較為完備,最常去的地方"); strcpy(G.siteArray6.siteName,"南區(qū)食堂"); strcpy(G.siteArray6.siteInfo,"價(jià)格尚算公道,但衛(wèi)生狀況較為堪憂,已經(jīng)吃出好幾次頭發(fā)了"); for(i = 1;i<=G.siteNumber;i+) /使用循環(huán)對路徑進(jìn)行賦值,對于沒有 直 接 路 徑 的 ,賦

13、值為無窮大 for(j = 1;j<=G.siteNumber;j+)G.pathArrayij.path = InfiniteNum;G.pathArray12.path = 200;G.pathArray13.path = 100;G.pathArray14.path = 400;G.pathArray24.path = 300;G.pathArray45.path = 100;G.pathArray46.path = 500;G.pathArray56.path = 500; for(i = 1;i<=G.siteNumber;i+) /所構(gòu)造的圖為無向圖,故相反方向路徑相同

14、for(j = 1;j<=G.siteNumber;j+)G.pathArrayji.path = G.pathArrayij.path; return G;3.3查詢景點(diǎn)信息函數(shù)詳細(xì)設(shè)計(jì)SearchGraph()void SearchGraph(MGraph *G) /用于查詢景點(diǎn)信息 ,以列表方式輸出int k,flag=1;while(flag)printf(" 請輸入要查詢的景點(diǎn)編號:");scanf("%d",&k);if(k<=0|k>G->siteNumber) /輸入景點(diǎn)編號不合法時(shí)提示錯(cuò)誤printf(&

15、quot; 景點(diǎn)編號不存在!請重新輸入景點(diǎn)編號:");scanf("%d",&k);if(k>0&&k<=G->siteNumber) / 輸入合法時(shí)將 falg 置為 0flag=0;printf(" n");printf(" 編號 景點(diǎn)名稱 簡介 n");printf(" %-4d %-16s %-62s n",G->siteArrayk.siteIdentifier,G->siteArrayk.siteName,G->siteArrayk.

16、siteInfo); /輸出景點(diǎn)信息3.4 弗洛伊德算法函數(shù)詳細(xì)設(shè)計(jì)Floyd()void Floyd(MGraph *G) /使用弗洛伊德算法2求出最短路徑int v,u,i,w,k,j; int flag = 1; /用于標(biāo)記輸入數(shù)據(jù)是否正確 , 若輸入數(shù)據(jù)符合要求 ,則將 flag 置為0 int p777,D77;for(v = 1;v <= G->siteNumber;v+)for(w = 1;w<=G->siteNumber;w+)Dvw = G->pathArrayvw.path; /將路徑數(shù)據(jù)存放至數(shù)組 Dvw 中for(u = 1;u<=G

17、->siteNumber;u+)pvwu=0; /該三維數(shù)組用于存放兩景點(diǎn)之間是否有直接路徑,若有則記為1,無則記為0if(Dvw < InfiniteNum)pvwv = 1;pvww = 1;for(u = 1;u<=G->siteNumber;u+)for(v = 1;v<=G->siteNumber;v+)for(w = 1;w<=G->siteNumber;w+)if(Dvu + Duw<Dvw) / 如果兩點(diǎn)之間直接路徑大于簡介路徑 , 則將該兩點(diǎn)之間路徑置為間接路徑Dvw = Dvu+Duw;for(i = 1;i<=G

18、->siteNumber;i+)pvwi = pvui|puwi; /獲取兩點(diǎn)之間路徑所經(jīng)過的景點(diǎn)編號while(flag)printf(" 請輸入出發(fā)點(diǎn)和目的地的編號:");scanf("%d%d",&k,&j);if(k<=0|k>G->siteNumber|j<=0|j>G->siteNumber)printf(" 景點(diǎn)編號不存在!請重新輸入:");scanf("%dn%d",&k,&j);if(k=j)printf(" 出發(fā)

19、點(diǎn)和目的地一樣!請重新輸入:");scanf("%dn%d",&k,&j);if(k>0&&k<=G->siteNumber&&j>0&&j<=G->siteNumber)flag=0; /輸入的數(shù)據(jù)合法,故將 flag = 0printf("n最短游覽路線:%s",G->siteArrayk.siteName);if(k>j)for(u = G->siteNumber;u>0;u-)if(pkju &&

20、k!=u && j!=u)printf("->%s",G->siteArrayu.siteName);if(k<j)for(u=1;u<=G->siteNumber;u+)if(pkju && k!=u && j!=u)printf("->%s",G->siteArrayu.siteName);printf("->%s",G->siteArrayj.siteName);printf(" 總路線長%dmn",Dkj)

21、;4、調(diào)試分析4.1 顯示主界面函數(shù)測試顯示主界面函數(shù)必須實(shí)現(xiàn)提示景點(diǎn)名稱及其對應(yīng)編號,主界面下方以列表方式提示用戶系統(tǒng)可進(jìn)行的操作及其對應(yīng)編號,最后提示用戶進(jìn)行輸入。經(jīng)測試結(jié)果如下:4.2 查找兩景點(diǎn)間最短路徑測試本功能模塊要求在按照景點(diǎn)信息列表中提示的信息用戶輸入起點(diǎn)編號和終點(diǎn)標(biāo)號后輸出最短路徑,經(jīng)測試后該功能能夠?qū)崿F(xiàn),沒有何錯(cuò)誤。測試結(jié)果如下圖:輸入起點(diǎn)和終點(diǎn):輸出最短路徑:4.3 查看景點(diǎn)信息測試本功能模塊要求在用戶輸入景點(diǎn)編號后,系統(tǒng)和已存儲的景點(diǎn)信息進(jìn)行配對,如果景點(diǎn)不存在,則提示錯(cuò)誤,若景點(diǎn)存在則輸出景點(diǎn)信息,經(jīng)測試,達(dá)到了預(yù)期效果,且容錯(cuò)處理正常運(yùn)行。測試結(jié)果如下:5.課程設(shè)計(jì)

22、總結(jié)經(jīng)過這次課程設(shè)計(jì),我對程序中算法的概念理解的更加透徹。算法是程序中必不可少的部分,它是指解題方案的準(zhǔn)確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問題的策略機(jī)制。也就是說,能夠?qū)σ欢ㄒ?guī)范的輸入,在有限時(shí)間內(nèi)獲得所要求的輸出。如果一個(gè)算法有缺陷,或不適合于某個(gè)問題,執(zhí)行這個(gè)算法將不會解決這個(gè)問題。不同的算法可能用不同的時(shí)間、空間或效率來完成同樣的任務(wù)。同時(shí),在選擇算法時(shí)必須考慮算法的時(shí)間復(fù)雜度和空間復(fù)雜度,這樣才能讓程序正常,高效的運(yùn)行。在系統(tǒng)設(shè)計(jì)時(shí)也碰到了很多問題,比如在設(shè)計(jì)InitGraph()函數(shù)時(shí),首先我想到的是使用數(shù)組來保存信息,但發(fā)現(xiàn)這種設(shè)計(jì)無法方便的

23、讓程序中各個(gè)獨(dú)立算法訪問存儲的景點(diǎn)信息,編寫代碼時(shí)十分復(fù)雜,后來,在出查閱相關(guān)書籍和閱讀了網(wǎng)上其它相關(guān)算法后,我選擇了使用結(jié)構(gòu)體數(shù)組來保存信息,這種方式順利地將信息保存到了圖中,同時(shí)其它函數(shù)模塊也可以方便的訪問這部分信息,達(dá)到了我想要實(shí)現(xiàn)的功能。數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)科學(xué)中是一門綜合性的專業(yè)基礎(chǔ)課.數(shù)據(jù)結(jié)構(gòu)的研究不僅涉及到計(jì)算機(jī)的硬件(特別是編碼理論、存儲裝置和存取方法等)的研究范圍,而且和計(jì)算機(jī)軟件的研究有著更密切的關(guān)系,無論是編譯程序還是操作系統(tǒng),都涉及到數(shù)據(jù)元素在存儲器中的分配問題.在研究信息檢索時(shí)也必須考慮如何組織數(shù)據(jù),以便查找和存取數(shù)據(jù)元素更為方面.因此,可以認(rèn)為數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計(jì)算機(jī)

24、硬件和計(jì)算機(jī)軟件三者之間的一門核心課程.在計(jì)算機(jī)科學(xué)中,數(shù)據(jù)結(jié)構(gòu)不僅是一般程序設(shè)計(jì)(特別是非數(shù)值計(jì)算的程序設(shè)計(jì))的基礎(chǔ),而且是設(shè)計(jì)和實(shí)現(xiàn)編譯程序、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)及其它系統(tǒng)程序和大型應(yīng)用程序的重要基礎(chǔ)。6、附錄源程序清單:/以下保存在頭文件 “MyGraph.h” 中typedef struct /定義用于存放權(quán)值的結(jié)構(gòu)體int path; /路徑長度ArCell,AdjMatrixMaxInfoNumMaxInfoNum;typedef structchar siteName30; / 用于存放景點(diǎn)名稱int siteIdentifier; /用于存放景點(diǎn)編號char siteInfo2

25、00; /用于存放景點(diǎn)信息infoType;typedef structinfoType siteArrayMaxInfoNum; / 景點(diǎn)數(shù)組 ,用于存放景點(diǎn)名及景點(diǎn)信息AdjMatrix pathArray; / 路徑數(shù)組int siteNumber; / 景點(diǎn)數(shù)量 int pathNumber; / 路徑總數(shù)量MGraph;MGraph InitGraph(void) /初始化圖中的信息MGraph G;int i,j;G.siteNumber = 6; /景點(diǎn)數(shù)量G.pathNumber = 8; /路 徑 數(shù)量for(i=1;i<=G.siteNumber;i+)G.siteA

26、rrayi.siteIdentifier = i; /對景點(diǎn)進(jìn)行對應(yīng)編號strcpy(G.siteArray1.siteName,"一教");strcpy(G.siteArray1.siteInfo,"最有歷史的教學(xué)樓"); strcpy(G.siteArray2.siteName,"軟件學(xué)院"); strcpy(G.siteArray2.siteInfo,"規(guī)模龐大,師資雄厚,全校第二大院"); strcpy(G.siteArray3.siteName,"老圖書館"); strcpy(G.si

27、teArray3.siteInfo,"說實(shí)話,太破了!"); strcpy(G.siteArray4.siteName,"校門"); strcpy(G.siteArray4.siteInfo,"有點(diǎn)小家子氣,規(guī)模太小"); strcpy(G.siteArray5.siteName,"新圖書館"); strcpy(G.siteArray5.siteInfo,"邵逸夫先生捐贈的,設(shè)施較為完備,最常去的地方"); strcpy(G.siteArray6.siteName,"南區(qū)食堂"

28、;); strcpy(G.siteArray6.siteInfo,"價(jià)格尚算公道,但衛(wèi)生狀況較為堪憂,已經(jīng)吃出好幾次頭發(fā)了"); for(i = 1;i<=G.siteNumber;i+) /使用循環(huán)對路徑進(jìn)行賦值,對于沒有 直 接 路 徑 的 ,賦值為無窮大 for(j = 1;j<=G.siteNumber;j+)G.pathArrayIj.path = Infinite;G.pathArray12.path = 200;G.pathArray13.path = 100;G.pathArray14.path = 400;G.pathArray24.path

29、= 300;G.pathArray45.path = 100;G.pathArray46.path = 500;G.pathArray56.path = 500; for(I = 1;i<=G.siteNumber;i+) /所構(gòu)造的圖為無向圖,故相反方向路徑相同for(j = 1;j<=G.siteNumber;j+)G.pathArrayji.path = G.pathArrayij.path; return G;void Floyd(MGraph *G) /使用弗洛伊德算法2求出最短路徑int v,u,i,w,k,j; int flag = 1; /用于標(biāo)記輸入數(shù)據(jù)是否正確

30、, 若輸入數(shù)據(jù)符合要求 ,則將 flag 置為0 int p777,D77;for(v = 1;v <= G->siteNumber;v+)for(w = 1;w<=G->siteNumber;w+)Dvw = G->pathArrayvw.path; /將路徑數(shù)據(jù)存放至數(shù)組 Dvw 中for(u = 1;u<=G->siteNumber;u+)pvwu=0; /該三維數(shù)組用于存放兩景點(diǎn)之間是否有直接路徑,若有則記為1,無則記為0if(Dvw < InfiniteNum)pvwv = 1;pvww = 1;for(u = 1;u<=G-&g

31、t;siteNumber;u+)for(v = 1;v<=G->siteNumber;v+)for(w = 1;w<=G->siteNumber;w+)if(Dvu + Duw<Dvw) / 如果兩點(diǎn)之間直接路徑大于簡介路徑 , 則將該兩點(diǎn)之間路徑置為間接路徑Dvw = Dvu+Duw;for(i = 1;i<=G->siteNumber;i+)pvwi = pvui|puwi; /獲取兩點(diǎn)之間路徑所經(jīng)過的景點(diǎn)編號while(flag)printf(" 請輸入出發(fā)點(diǎn)和目的地的編號:");scanf("%d%d",

32、&k,&j);if(k<=0|k>G->siteNumber|j<=0|j>G->siteNumber)printf(" 景點(diǎn)編號不存在!請重新輸入:");scanf("%dn%d",&k,&j);if(k=j)printf(" 出發(fā)點(diǎn)和目的地一樣!請重新輸入:");scanf("%dn%d",&k,&j);if(k>0&&k<=G->siteNumber&&j>0&&

33、amp;j<=G->siteNumber)flag=0; /輸入的數(shù)據(jù)合法,故將 flag = 0printf("n最短游覽路線:%s",G->siteArrayk.siteName);if(k>j)for(u = G->siteNumber;u>0;u-)if(pkju && k!=u && j!=u)printf("->%s",G->siteArrayu.siteName);if(k<j)for(u=1;u<=G->siteNumber;u+)if(pk

34、ju && k!=u && j!=u)printf("->%s",G->siteArrayu.siteName);printf("->%s",G->siteArrayj.siteName);printf(" 總路線長%dmn",Dkj);void MainGraph(MGraph *G) /調(diào)用此函數(shù)可實(shí)現(xiàn)輸出主界面功能int i;printf("*江西農(nóng)業(yè)大學(xué)校園導(dǎo)游系統(tǒng) *n");printf("n");printf(" -輸

35、入命令后最短路徑或景點(diǎn)信息顯示于屏幕上方- n");printf("n"); printf(" 編號 景點(diǎn)名稱 n");for(i = 1;i <= G->siteNumber; i+ ) printf(" %-4d % -12s n",G->siteArrayi.siteIdentifier,G->siteArrayi.siteName); printf("n");printf(" n"); printf(" 編號 功 能 n");prin

36、tf(" n");printf(" 1 查 找 兩 景 點(diǎn) 間 最 短 路徑 n"); printf(" n"); printf(" 2 查 看 景 點(diǎn) 信 息 n");printf(" n"); printf(" 3 退 出 系 統(tǒng) n");printf(" n"); printf(" 請輸入您的操作編號:");void SearchGraph(MGraph *G) /用于查詢景點(diǎn)信息 ,以列表方式輸出int k,flag=1;while(fl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論