版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 故宮導游咨詢數(shù)學與計算機學院課程設計說明書課 程 名 稱: 數(shù)據(jù)結(jié)構(gòu)與算法課程設計 課 程 代 碼: 6014389 題 目: 故宮導游咨詢 年級/專業(yè)/班: 學 生 姓 名: 學 號: 開 始 時 間: 2011 年 12 月 9 日完 成 時 間: 2011 年 12 月 23 日課程設計成績:學習態(tài)度及平時成績(30)技術水平與實際能力(20)創(chuàng)新(5) 說明書(計算書、圖紙、分析報告)撰寫質(zhì)量(45)總 分(100)指導教師簽名: 年 月 日目 錄引 言- 4 -1、需求分析- 4 -1.1任務與分析- 4 -2 概要設計- 1 -2.1 adt描述- 1 -2.2程序模塊結(jié)構(gòu)- 2
2、 -2.3各功能模塊- 2 -3詳細設計- 3 -3.1結(jié)構(gòu)體定義- 3 -3.2 初始化- 3 -3.3 插入操作- 4 -3.4、錄入信息- 4 -3.5修改操作- 5 -3.6查詢操作- 6 -3.7刪除操作- 6 -3.8求到某一景點的路徑- 8 -3.9求到所有景點的路徑- 10 -3.10求到所有景點的路徑- 12 -3.11主函數(shù)- 15 -4 調(diào)試分析- 18 -4.1測試數(shù)據(jù)- 19 -4.2調(diào)試問題- 19 -4.3算法時間復雜度- 19 -4.4經(jīng)驗和體會- 19 -5用戶使用說明- 19 -6測試結(jié)果- 19 -6.1錄入信息- 19 -6.2查詢景點模塊- 21 -6
3、.3修改模塊- 22 -6.4插入模塊- 23 -6.5刪除模塊- 24 -6.6查詢到某景點最佳路徑- 25 -6.7查詢到所有景點的最短路徑。- 26 -結(jié) 論- 28 -致 謝- 29 -參考文獻- 30 -摘 要隨著計算機的普及,涉及計算機相關的科目也越來越普遍,其中數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)重要的專業(yè)基礎課程與核心課程之一,為適應我國計算機科學技術的發(fā)展和應用,學好數(shù)據(jù)結(jié)構(gòu)非常必要,然而要掌握數(shù)據(jù)結(jié)構(gòu)的知識非常難,所以對“數(shù)據(jù)結(jié)構(gòu)”的課程設計比不可少。本說明書是對“故宮導游咨詢”課程設計的說明。首先是對需求分析的簡要闡述,說明系統(tǒng)要完成的任務和相應的分析,并給出測試數(shù)據(jù)。其次是概要設計,說
4、明所有抽象數(shù)據(jù)類型的定義、主程序的流程以及各程序模塊之間的層次關系,以及adt描述。然后是詳細設計,描述實現(xiàn)概要設計中定義的基本功操作和所有數(shù)據(jù)類型,以及函數(shù)的功能及代碼實現(xiàn)。再次是對系統(tǒng)的調(diào)試分析說明,以及遇到的問題和解決問題的方法。然后是用戶使用說明書的闡述,然后是測試的數(shù)據(jù)和結(jié)果的分析,最后是對本次課程設計的結(jié)論。關鍵詞:計算機、課程設計、數(shù)據(jù)結(jié)構(gòu) 引 言 數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)重要的專業(yè)基礎課程與核心課程之一,在計算機領域應用廣泛,計算機離不開數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)課程設計為了能使我們掌握所學習的知識并有應用到實際的設計中的能力,對于掌握這門課程的學習方法有極大的意義。本課程設計的題目為“故
5、宮導游咨詢”,完成相應的錄入信息、查找、修改、刪除、計算功能等等。本課程設計采用的編程環(huán)境為microsoft visual stdio 6.0。1、需求分析 游客游覽某一景點時,對景點都不熟悉。特別是對于象故宮這樣的大型景點,如果隨便參觀的話,可能會錯過一些景點,也可能走許多冤枉路。為了方便游客,需要一套軟件系統(tǒng),能夠為游客提供:查詢景點信息,給出到某個景點的最佳路線,給出到所有景點的最佳路線。為系統(tǒng)管理員提供以下功能:添加和撤銷景點,添加和撤銷旅游線路,修改景點信息。 1.1任務與分析 此系統(tǒng)要完成對故宮景點信息的儲存、修改、刪除、添加和查詢最短路線,因為涉及到最短路線問題,所以數(shù)據(jù)結(jié)構(gòu)優(yōu)
6、先考慮采用圖的鄰接矩陣儲存結(jié)構(gòu),景點和旅游線路可以構(gòu)成圖狀結(jié)構(gòu),景點作為圖的頂點,旅游線路作為圖的邊,邊上的權值作為景點間的距離。此結(jié)構(gòu)便于完成任務的各種操作。1.2測試數(shù)據(jù) 圖1 測試數(shù)據(jù)2 概要設計 2.1 adt描述 adt graph數(shù)據(jù)對象:d故宮景點和路徑數(shù)據(jù)關系:rvrvr=|v,wv,表示頂點v和頂點w之間的邊;基本操作: void creat();/錄入景點和路徑的信息。void select();/查找某景點的信息。void xiugai();/修改某景點的信息。void insert();/插入新的景點和路徑信息。void delet();/刪除景點和路徑信息。void
7、shortpath1();/查詢到某景點的最短路徑。void shortpath2();/查詢到所有景點的最短路徑。void main();/主函數(shù)。2.2程序模塊結(jié)構(gòu) 圖2 程序模塊結(jié)構(gòu)2.2.1 結(jié)構(gòu)體定義景點的結(jié)構(gòu)體定義如下:struct ding string dingdian; string xinxi;2.3各功能模塊錄入模塊:void creat()錄入景點和路徑的信息,并儲存。查詢景點模塊:void select()查找某景點的信息。修改模塊:void xiugai()修改某景點的信息。插入模塊:void insert()插入新的景點和路徑信息。刪除模塊:void delet(
8、)刪除景點和路徑信息。查詢到某景點最佳路徑:void shortpath1():查詢到某景點的最短路徑。查詢到查詢到所有景點的最短路徑:void shortpath2()查詢到所有景點的最短路徑3詳細設計3.1結(jié)構(gòu)體定義景點的結(jié)構(gòu)體定義如下:struct ding string dingdian; string xinxi;3.2 初始化構(gòu)造函數(shù)初始化變量:graph:graph() for(int i=0;imaxvertices;i+) verticesi.dingdian=0; for(i=0;imaxvertices;i+) for(int j=0;jmaxvertices;j+)if
9、(i=j)edgeij=0;elseedgeij=maxweight;nume=0;numv=0;3.3 插入操作插入路徑和景點信息: void graph:insert() int i,vi,vj,w,x,y; coutxy; cout輸入添加景點名稱:endl; for(i=0;iy;i+) coutnumv+i+1verticesnumv+i.dingdian;cout verticesnumv+i.xinxi;cout添加成功!endl; for(i=0;ix;i+) coutvivjw; edgevi-1vj-1=w; edgevj-1vi-1=w; cout添加成功!endl; n
10、ume=x+nume; numv=y+numv;3.4、錄入信息void graph:creat() int i,vi,vj,w; coutnumenumv; cout輸入景點名稱:endl; for(i=0;inumv;i+) couti+1verticesi.dingdian;coutverticesi.xinxi; for(i=0;inume;i+) coutvivjw; edgevi-1vj-1=w; edgevj-1vi-1=w; 3.5修改操作void graph:xiugai() string a,c; int b=0; couta; for(int i=0;inumv;i+)
11、if(verticesi.dingdian=a) coutc;verticesi.xinxi=c;b+;cout修改成功!endl;if(b=0)cout不存在該景點!endl;3.6查詢操作void graph:select() string a; int b=0; couta; for(int i=0;inumv;i+)if(verticesi.dingdian=a)coutverticesi.xinxiendl;b+;if(b=0)cout不存在該景點!endl;3.7刪除操作void graph:delet() int x,y,z,k,v; coutkz; for(int j=0;jk
12、;j+) coutv; for(int i=0;inumv;i+) if(i!=v-1) edgev-1i=maxweight;edgeiv-1=maxweight; cout撤銷成功!endl; for(int i=0;iz;i+) coutxy; if(edgex-1y-1!=maxweight) edgex-1y-1=maxweight; edgey-1x-1=maxweight; cout撤銷成功!endl; nume-; else cout不存在該路線!endl; 3.8求到某一景點的路徑void graph:shortpath1() int v,v1; string b,c; co
13、utb; coutc; for(int i=0;inumv;i+)if(verticesi.dingdian=b)v=i; for( i=0;inumv;i+)if(verticesi.dingdian=c)v1=i; for( i=0;inumv;i+) disti=edgevi;si=0;if(i!=v&distimaxweight)pathi=v;elsepathi=-1; sv=1; distv=0; for(i=0;inumv;i+) float min=maxweight;int u=v;for(int j=0;jnumv;j+)if(!sj&distjmin)u=j;min=di
14、stj;su=1;for(int w=0;wnumv;w+) if(!sw&edgeuwmaxweight&distu+edgeuwdistw)distw=distu+edgeuw;pathw=u; for( i=0;inumv;i+) if(i!=v&i=v1&disti!=maxweight) string c10; int j=0; int k=i; cout從b到verticesi.dingdian的; cout最佳路徑長度為:; coutdisti米 ; cout大約需要走disti/100分鐘 ; cout=1;n-) coutcn; if(n!=1) cout; coutendl
15、; 3.9求到所有景點的路徑void graph:shortpath2() int v; string b; coutb; for(int i=0;inumv;i+)if(verticesi.dingdian=b)v=i; for( i=0;inumv;i+) disti=edgevi;si=0;if(i!=v&distimaxweight)pathi=v;elsepathi=-1; sv=1; distv=0; for(i=0;inumv;i+) float min=maxweight;int u=v;for(int j=0;jnumv;j+)if(!sj&distjmin)u=j;min=
16、distj;su=1;for(int w=0;wnumv;w+) if(!sw&edgeuwmaxweight&distu+edgeuwdistw)distw=distu+edgeuw;pathw=u; for( i=0;inumv;i+) if(i!=v&disti!=maxweight) string c10; int j=0; int k=i; cout從b到verticesi.dingdian的; cout最佳路徑長度為:; coutdisti米 ; cout大約需要走disti/100分鐘 ; cout=1;n-) coutcn; if(n!=1) cout; coutendl; 3
17、.10求到所有景點的路徑void graph:shortpath2() int v; string b; coutb; for(int i=0;inumv;i+) if(verticesi.dingdian=b) v=i; for( i=0;inumv;i+) disti=edgevi; si=0; if(i!=v&distimaxweight) pathi=v; elsepathi=-1; sv=1; distv=0; for(i=0;inumv;i+) float min=maxweight;int u=v;for(int j=0;jnumv;j+)if(!sj&distjmin)u=j;
18、min=distj;su=1;for(int w=0;wnumv;w+)if(!sw&edgeuwmaxweight&distu+edgeuwdistw)distw=distu+edgeuw;pathw=u; for( i=0;inumv;i+) if(i!=v&disti!=maxweight) string c10; int j=0; int k=i; cout從b到verticesi.dingdian的; cout最佳路徑長度為:; coutdisti米 ; cout大約需要走disti/100分鐘 ; cout=1;n-) coutcn; if(n!=1) cout; coutendl
19、; 3.11主函數(shù)void main() graph a; for(;) char c; system(cls); cout*endl; cout* 登錄! *endl; cout*endl; cout* a、管理員 *endl; cout* b、游客 *endl; cout* c、退出 *endl; cout* 請選擇(a、b、c)*endl; cout*c; if(c=a) int d;char b;coutd;if(d=123)for(;)system(cls);cout*endl;cout* 歡迎登陸故宮管理系統(tǒng) *endl;cout*endl;cout* a、錄入景點和路徑信息 *e
20、ndl;cout* b、修改景點信息 *endl;cout* c、插入景點和路徑 *endl;cout* d、刪除景點和路徑 *endl; cout* e、退出 *endl;cout* 請選擇(a、b、c、d、e) *endl;cout*b; if(b=a) a.creat(); system(pause); if(b=b) a.xiugai(); system(pause);if(b=c)a.insert(); system(pause);if(b=d)a.delet(); system(pause); if(b=e)break;elsecout密碼錯誤!endl;system(pause)
21、; if(c=b) char b; for(;) system(cls);cout*endl; cout* 歡迎登陸故宮導游系統(tǒng) *endl;cout*endl;cout* a、查詢信息 *endl;cout* b、查詢到景點的最佳路徑 *endl;cout* c、查詢到所有景點的最佳路徑 *endl; cout* d、退出 *endl;cout* 請選擇(a、b、c、d) *endl;cout*b;if(b=a) a.select(); system(pause); if(b=b)a.shortpath1();system(pause);if(b=c)a.shortpath2();syste
22、m(pause);if(b=d)break; if(c=c) break; 4 調(diào)試分析4.1測試數(shù)據(jù)測試數(shù)據(jù)見圖1.4.2調(diào)試問題 在調(diào)試過程中遇到輸出路徑算法有錯誤,當刪除一條路徑時時不能正確輸出相應路徑,然后對輸出路徑的條件進行改進,增加了條件,測試成功。 4.3算法時間復雜度錄入:時間復雜度為o(n);查詢景點信息: 時間復雜度為o(n);修改景點信息: 時間復雜度為o(n);插入景點和路徑: 當插入的景點和路徑為x,y時,若x=y時間復雜度為o(x)反之為o(y);刪除景點和路徑: 當刪除的景點和路徑為x,y時,若x=y時間復雜度為o(x)反之為o(y);查詢到某景點最佳路徑;此算法為迪杰斯特拉算法時間復雜度為o(n*n);查詢到所有景點的最短路徑: 此算法為迪杰斯特拉算法時間復雜度為o(n*n);4.4經(jīng)驗和體會在本次課程設計中主要是對圖的數(shù)據(jù)結(jié)構(gòu)操作,所有剛開始對知識不是很熟悉操作起來有一定難度,容易在程序的關鍵地方但經(jīng)過翻閱教材能較好的解決問題。5用戶使用說明本系統(tǒng)是關于故宮的管理系統(tǒng)分為兩類用戶,管理
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024政府與華為簽訂的醫(yī)療健康信息化合作協(xié)議3篇
- 針織圓機課課程設計
- 二零二五年度勞動合同補充協(xié)議范本解讀6篇
- 2024新款:5G網(wǎng)絡建設與運營合作合同
- 2024正式員工勞動合同范本
- 2024投資入股合作協(xié)議書-智能制造產(chǎn)業(yè)樣板3篇
- 職業(yè)課程設計理念
- 網(wǎng)絡數(shù)據(jù)包分析課程設計
- 過欠壓保護電路課程設計
- 2025至2030年中國印制洗水標數(shù)據(jù)監(jiān)測研究報告
- 2024年成都溫江興蓉西城市運營集團有限公司招聘筆試沖刺題(帶答案解析)
- 手術器械生銹的原因分析
- 小學道德與法治課活動設計方案
- 家電以舊換新風險識別與應對措施
- 春節(jié)英語介紹SpringFestival(課件)新思維小學英語5A
- 卵巢囊腫蒂扭轉(zhuǎn)的臨床分析
- 退休職工安全知識講座
- 全國兒童預防接種知識講座
- GMP理念在制藥工程項目中的應用
- 【閱讀提升】部編版語文五年級下冊第四單元閱讀要素解析 類文閱讀課外閱讀過關(含答案)
- 電信營業(yè)廳規(guī)章制度范文
評論
0/150
提交評論