版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、安徽省巢湖學(xué)院計(jì)算機(jī)與信息工程學(xué)院課程設(shè)計(jì)報(bào)告課程名稱 數(shù)據(jù)結(jié)構(gòu) 課題名稱 校園導(dǎo)航系統(tǒng) 專業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班級(jí) 10計(jì)本2班 學(xué)號(hào)10012097 姓名 聯(lián)系方式 指導(dǎo)教師20 11 年 12 月 29 日目 錄1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書11.1、題目11.2、要求12、詳細(xì)設(shè)計(jì)12.1、程序中所采用的數(shù)據(jù)結(jié)構(gòu)及存儲(chǔ)結(jié)構(gòu)的說明12.2、算法的設(shè)計(jì)思想23、調(diào)試與測試:23.1、調(diào)試方法與步驟:23.2、測試結(jié)果的分析與討論:24、時(shí)間復(fù)雜度的分析:45、源程序清單和執(zhí)行結(jié)果56、c程序設(shè)計(jì)總結(jié)97、致謝108、參考文獻(xiàn)101、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書1.1、題目校園導(dǎo)航問題1.2、要求設(shè)
2、計(jì)你的學(xué)校的平面圖,至少包括10個(gè)以上的場所,每兩個(gè)場所間可以有不同的路,且路長也可能不同,找出從任意場所到達(dá)另一場所的最佳路徑(最短路徑)。1)設(shè)計(jì)校園平面圖,在校園景點(diǎn)選10個(gè)左右景點(diǎn)。以圖中頂點(diǎn)表示校園內(nèi)各景點(diǎn),存放景點(diǎn)名稱、代號(hào)、簡介等信息;以邊表示路徑,存放路徑長度等有關(guān)信息。2)為來訪客人提供圖中任意景點(diǎn)相關(guān)信息的查詢。3)為來訪客人提供任意景點(diǎn)的問路查詢,即查詢?nèi)我鈨蓚€(gè)景點(diǎn)之間的一條最短路徑。2、詳細(xì)設(shè)計(jì)模塊功能說明:如函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調(diào)用關(guān)系描述等;2.1、程序中所采用的數(shù)據(jù)結(jié)構(gòu)及存儲(chǔ)結(jié)構(gòu)的說明(1)圖。采用鄰接矩陣存儲(chǔ),其中圖所用到的結(jié)構(gòu)體為:typedef
3、 struct seqlist vertices; /表示圖中的頂點(diǎn)int edgemaxverticesmaxvertices; /表示圖中的邊int numofedge; /表示圖中邊的數(shù)目adjmgraph;(2)景點(diǎn)。用順序表存儲(chǔ)。所用到的結(jié)構(gòu)體為: typedef struct char name20; /頂點(diǎn)名稱 int code; /頂點(diǎn)代號(hào) char introduction50; /頂點(diǎn)信息簡介datatype; (3)景點(diǎn)之間的連接描述,所用到的結(jié)構(gòu)體為: typedef struct int row; int col; int weight;rowcolweight;用圖
4、來存放所提供的所有景點(diǎn),然后用線性表來存放每一個(gè)景點(diǎn)的信息,其中包括景點(diǎn)的名稱,代號(hào),信息簡介,以及其它的一些信息。這樣就將對(duì)景點(diǎn)的操作,變成對(duì)圖中各頂點(diǎn)的操作 。 2.2、算法的設(shè)計(jì)思想根據(jù)題目分析,對(duì)于信息查詢與修改功能,設(shè)計(jì)如下:1,輸入景點(diǎn)名稱2,從線性表頭掃描到表尾,if(找到該景點(diǎn)) 輸出景點(diǎn)結(jié)構(gòu)體信息else 輸出提示信息找不到該頂點(diǎn)實(shí)現(xiàn)查找最短路徑,設(shè)計(jì)如下:1, 景點(diǎn)名稱2,根據(jù)輸入的信息找到它們所在的線性表中的位置3,調(diào)用floyd算法找出最短路徑4,輸出信息3、調(diào)試與測試:3.1調(diào)試過程中遇到的問題與解決方案: 關(guān)于最短路徑的輸出問題。在進(jìn)行最短路徑輸出時(shí),我剛開始時(shí)只能
5、正序輸出,具體的描述為:比如,我要查尋從東區(qū)到東湖的最短路徑,那么它能正確輸出結(jié)果,他的形式為:東區(qū) 主樓 西體育館 隧道 北大門 東湖。但是,當(dāng)我逆向輸出時(shí),得到的結(jié)果卻有點(diǎn)問題,經(jīng)過分析調(diào)試后,找到了錯(cuò)誤的所在。在找最短路徑的時(shí)候我用的是floyd算法,在這個(gè)算法中有三重循環(huán),形式均為:for(k=0;kn;k+),它們都是從零開始的,所以在順序輸出時(shí)沒問題,但是逆序的時(shí)候就需要進(jìn)行一個(gè)判斷,正序與逆序循環(huán)輸出是相反的。另外,在做這個(gè)題時(shí)也還出現(xiàn)過一些其他的小問題,不過都比較容易解決,這里我就不再列出了3.2、測試結(jié)果的分析與討論:(測試要寫出測試用例及每個(gè)用例結(jié)果的的截圖) 4、時(shí)間復(fù)雜
6、度的分析:1,相關(guān)信息的查詢。在這個(gè)操作中允許使用者輸入一個(gè)景點(diǎn)名稱,然后再根據(jù)景點(diǎn)名稱來或取其相關(guān)的信息,這個(gè)操作要掃描線性表,其時(shí)間復(fù)雜度為o(n),空間復(fù)雜度為o(n);2,最短路徑查詢。實(shí)現(xiàn)這個(gè)功能用到了floyd算法,他用到了一個(gè)三重的for()循環(huán),故其時(shí)間復(fù)雜度為o(n3),空間復(fù)雜度為o(1);5、源程序清單和執(zhí)行結(jié)果(清單中應(yīng)有足夠的注釋)school.cpp /程序源文件adjmgraph.h /圖的相關(guān)操作頭文件adjmgraphcreat.h /創(chuàng)建圖的頭文件seqlist.h /線性表操作頭文件floyd.h /floyd算法頭文件operation.h /自己所定義
7、的一些操作的頭文件inquiry.h /查詢信息包含的頭文件/ 詳細(xì)school.cpp 程序源文件#include #include #include #define maxsize 20 /線性表的最大數(shù)組空間#define maxvertices 20 /景點(diǎn)個(gè)數(shù)所允許的最大值#define maxweight 1000 /無窮邊權(quán)值#include floyd.h #include adjmgraphcreat.h#include inquiry.hadjmgraph g;#include operation.hvoid main() /初始景點(diǎn)信息 datatype a=“學(xué)生第二食
8、堂,10,學(xué)生的主要就餐點(diǎn),男生宿舍,11,一共有八棟,操場,12,最新的塑膠跑道和人工草坪 ,物理樓,13,擁有各種實(shí)驗(yàn)器材,博學(xué)樓,14,學(xué)生上課集中地,草地,15,休閑娛樂的好地方,老教,16,學(xué)校最早的教學(xué)樓,女生宿舍,17,一共七棟,小門,18,可以通往半湯鎮(zhèn),圖書館,19,藏書50萬冊(cè); /鄰接矩陣的表示rowcolweightrcw=0,1,20,0,2,30,0,3,35,1,0,20,1,3,20,2,0,30,2,3,15,2,4,30,3,0,35,3,1,20,3,2,15,3,4,30,4,2,30,4,3,30,4,5,10,5,4,10,5,6,35,5,8,8,
9、6,5,35,6,7,20,6,8,25,6,9,5,7,6,20,7,8,10,8,5,8,8,6,25,8,7,10,9,6,5;int n=10,e=28; /景點(diǎn)數(shù)與邊數(shù) creat(&g,a,rcw,n,e); /構(gòu)造圖 menu();/ 詳細(xì)floyd.h頭文件void floyd(int costmaxvertices,int n,int weightmaxvertices,int pathmaxvertices)/初始化int i,j,k;for(i=0;in;i+)for(j=0;jn;j+)weightij=costij;pathij=-1;/n次遞推for(k=0;kn;
10、k+)for(i=0;in;i+)for(j=0;jweightik+weightkj)weightij=weightik+weightkj;pathij=k;/詳細(xì)inquiry.h 頭文件void information(adjmgraph g, char scenery)int i;for(i=0;ig.vertices.size;i+)if(strcmp(g.,scenery)=0)printf(您輸入的景點(diǎn)的名稱是: %sn,g.);printf(您輸入的景點(diǎn)的代碼為: %dn,g.vertices.list
11、i.code);printf(您輸入的景點(diǎn)的相關(guān)信息有: %snn,g.roduction);break;if(i=g.vertices.size)printf(您所查詢的景點(diǎn)不在我們所提供的范圍內(nèi)!nn);void path(adjmgraph g,char sceneryname, char sceneryname1)int i,j,k,n,m,count=0;n=g.vertices.size;int weightmaxverticesmaxvertices,pathmaxverticesmaxvertices;int valuemaxvertices
12、;for(i=0;i%sn,sceneryname,sceneryname1); else while(m!=-1) valuecount=m;if(j,sceneryname);if(j=0;i-) printf(%s,g.); printf(%sn,sceneryname1);else for(i=0;i,g.); printf(%sn,sceneryname1);/詳細(xì)operation.h頭文件void menu();/查詢景點(diǎn)信息的函數(shù)void information1()char sce
13、neryname20; printf(請(qǐng)輸入您所想要查詢的景點(diǎn)的名稱: ); scanf(%s,sceneryname); information(g ,sceneryname);menu();/查詢最短路徑的函數(shù)void path1()char sceneryname20,sceneryname120;printf(請(qǐng)輸入你要查詢的兩景點(diǎn)的名稱: );scanf(%s%s,sceneryname,sceneryname1); path(g,sceneryname,sceneryname1);menu();printf(n);/菜單void menu()int n;puts(tt*菜單*n);
14、puts(ttt1,相關(guān)信息查詢);puts(ttt2,最短路徑查詢);puts(tt*n);printf(請(qǐng)選擇您想進(jìn)行的操作: );scanf(%d,&n);switch(n) case 1: information1(); break; case 2: path1();break;另外,還有adjmgraphcreat.h ,adjmgraph.h和seqlist.h 由于他們?cè)跁弦呀?jīng)出現(xiàn)過了,這里我就不再把他們的源程序清單打印出來了 。6、c程序設(shè)計(jì)總結(jié)本程序在剛開始調(diào)試時(shí)有許多錯(cuò)誤,但在我的努力及同學(xué)的幫助下都被一一克服,現(xiàn)在在操作本程序時(shí)可根據(jù)提示進(jìn)行相關(guān)操作,能正確輸出結(jié)果。在剛開始的幾次調(diào)試中曾經(jīng)出現(xiàn)過不能運(yùn)行、不能產(chǎn)生十以內(nèi)隨機(jī)數(shù)字、不能隨機(jī)出現(xiàn)加減、不會(huì)正確輸出結(jié)果、不能進(jìn)行循環(huán)練習(xí)等等問題。經(jīng)過我的努力及同學(xué)的幫助,這些問題得到克服,并且使程序的功能也得到了一定的完善?,F(xiàn)在它能對(duì)出錯(cuò)的題目發(fā)出報(bào)警聲,并且給出正確答案。最后還能分別輸出對(duì)錯(cuò)的題數(shù)及所得分?jǐn)?shù)。在這次設(shè)計(jì)過程中,不僅復(fù)習(xí)課本上所學(xué)知識(shí),還通過查資料、問同學(xué)學(xué)到了課本上沒有的知識(shí)。從而啟發(fā)我,要想寫好程序,在寫好課本知識(shí)的同時(shí)還需要多讀和專業(yè)有關(guān)的一些書籍,同時(shí)還需要多動(dòng)腦子,盡量把所學(xué)的知識(shí)綜合起來應(yīng)用,力爭寫出完美的程序。除此
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教師2022年度工作計(jì)劃7篇
- 2024年環(huán)保大數(shù)據(jù)分析與應(yīng)用服務(wù)合同
- 歷史遺址觀后感600字
- 2022教師求職申請(qǐng)書模板5篇
- 《呼嘯山莊》讀后感15篇
- 有關(guān)計(jì)算機(jī)實(shí)習(xí)報(bào)告模板匯編八篇
- 開學(xué)典禮講話稿7篇
- 探測制導(dǎo)課程設(shè)計(jì)
- 2021年種植牙行業(yè)深度分析報(bào)告
- 高斯貝爾數(shù)碼科技有限公司
- 電梯制造與安裝安全規(guī)范解讀課件
- 智能制造專業(yè)群建設(shè)(智能制造業(yè)專業(yè)技術(shù)學(xué)校創(chuàng)業(yè)計(jì)劃)課件整理
- 失業(yè)保險(xiǎn)待遇申請(qǐng)表
- 醫(yī)院抗菌藥物遴選和采購管理制度
- 西安市城市規(guī)劃管理技術(shù)規(guī)定
- Geoframe操作流程(詳解版)
- 三類醫(yī)療器械最新管理制度修訂版(2022)
- 環(huán)境清潔消毒與醫(yī)院感染控制ppt課件
- 腦卒中康復(fù)治療流程圖
- 《Something Just Like This》歌詞
- 人民網(wǎng)刪除稿件(帖文)申請(qǐng)登記表
評(píng)論
0/150
提交評(píng)論