數(shù)據(jù)結(jié)構(gòu)課程設(shè)計故宮導(dǎo)游(最短路徑)(共34頁)
《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計故宮導(dǎo)游(最短路徑)(共34頁)》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計故宮導(dǎo)游(最短路徑)(共34頁)(34頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 數(shù)學(xué)與計算機學(xué)院 課程設(shè)計說明書 課 程 名 稱: 數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計 課 程 代 碼: 題 目: 故宮導(dǎo)游咨詢 年級/專業(yè)/班: 學(xué) 生 姓 名: 學(xué) 號: 開 始 時 間: 2011 年 12 月 9 日 完 成 時 間: 2011 年 1
2、2 月 23 日 課程設(shè)計成績: 學(xué)習(xí)態(tài)度及平時成績(30) 技術(shù)水平與實際能力(20) 創(chuàng)新(5) 說明書(計算書、圖紙、分析報告)撰寫質(zhì)量(45) 總 分(100) 指導(dǎo)教師簽名: 年 月 日 專心---專注---專業(yè) 目錄 摘 要 隨著計算機的普及,涉及計算機相關(guān)的科目也越來越普遍,其中數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)重要的專業(yè)
3、基礎(chǔ)課程與核心課程之一,為適應(yīng)我國計算機科學(xué)技術(shù)的發(fā)展和應(yīng)用,學(xué)好數(shù)據(jù)結(jié)構(gòu)非常必要,然而要掌握數(shù)據(jù)結(jié)構(gòu)的知識非常難,所以對“數(shù)據(jù)結(jié)構(gòu)”的課程設(shè)計比不可少。本說明書是對“故宮導(dǎo)游咨詢”課程設(shè)計的說明。 首先是對需求分析的簡要闡述,說明系統(tǒng)要完成的任務(wù)和相應(yīng)的分析,并給出測試數(shù)據(jù)。其次是概要設(shè)計,說明所有抽象數(shù)據(jù)類型的定義、主程序的流程以及各程序模塊之間的層次關(guān)系,以及ADT描述。然后是詳細設(shè)計,描述實現(xiàn)概要設(shè)計中定義的基本功操作和所有數(shù)據(jù)類型,以及函數(shù)的功能及代碼實現(xiàn)。再次是對系統(tǒng)的調(diào)試分析說明,以及遇到的問題和解決問題的方法。然后是用戶使用說明書的闡述,然后是測試的數(shù)據(jù)和結(jié)果的分析,最后是對
4、本次課程設(shè)計的結(jié)論。 關(guān)鍵詞:計算機、課程設(shè)計、數(shù)據(jù)結(jié)構(gòu) 引 言 數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)重要的專業(yè)基礎(chǔ)課程與核心課程之一,在計算機領(lǐng)域應(yīng)用廣泛,計算機離不開數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)課程設(shè)計為了能使我們掌握所學(xué)習(xí)的知識并有應(yīng)用到實際的設(shè)計中的能力,對于掌握這門課程的學(xué)習(xí)方法有極大的意義。本課程設(shè)計的題目為“故宮導(dǎo)游咨詢”,完成相應(yīng)的錄入信息、查找、修改、刪除、計算功能等等。本課程設(shè)計采用的編程環(huán)境為Microsoft Visual Stdio 6.0。 1、需求分析 游客游覽某一景點時,對景點都不熟悉。特別是對于象故宮這樣
5、的大型景點,如果隨便參觀的話,可能會錯過一些景點,也可能走許多冤枉路。為了方便游客,需要一套軟件系統(tǒng),能夠為游客提供:查詢景點信息,給出到某個景點的最佳路線,給出到所有景點的最佳路線。為系統(tǒng)管理員提供以下功能:添加和撤銷景點,添加和撤銷旅游線路,修改景點信息。 1.1任務(wù)與分析 此系統(tǒng)要完成對故宮景點信息的儲存、修改、刪除、添加和查詢最短路線,因為涉及到最短路線問題,所以數(shù)據(jù)結(jié)構(gòu)優(yōu)先考慮采用圖的鄰接矩陣儲存結(jié)構(gòu), 景點和旅游線路可以構(gòu)成圖狀結(jié)構(gòu),景點作為圖的頂點,旅游線路作為圖的邊,邊上的權(quán)值作為景點間的距離。此結(jié)構(gòu)便于完成任務(wù)的各種操作。 1.2測試數(shù)據(jù)
6、 圖1 測試數(shù)據(jù)
2 概要設(shè)計
2.1 ADT描述
ADT Graph{
數(shù)據(jù)對象:D{故宮景點和路徑}
數(shù)據(jù)關(guān)系:R={VR}
VR={
7、點的最短路徑。 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 xiuga
8、i()修改某景點的信息。 插入模塊:void insert()插入新的景點和路徑信息。 刪除模塊:void delet()刪除景點和路徑信息。 查詢到某景點最佳路徑:void shortpath1():查詢到某景點的最短路徑。 查詢到查詢到所有景點的最短路徑:void shortpath2()查詢到所有景點的最短路徑 3 詳細設(shè)計 3.1結(jié)構(gòu)體定義 景點的結(jié)構(gòu)體定義如下: struct ding { string dingdian; string xinxi; } 3.2 初始化 構(gòu)造函數(shù)初始化變量: Graph::Graph() {
9、 for(int i=0;i 10、 int i,vi,vj,w,x,y;
cout<<"輸入添加路徑的條數(shù)和景點數(shù):";
cin>>x>>y;
cout<<"輸入添加景點名稱:"< 11、<"輸入添加景點到景點的路徑的長度(vi,vj,length):";
cin>>vi>>vj>>w;
Edge[vi-1][vj-1]=w;
Edge[vj-1][vi-1]=w;
cout<<"添加成功!"< 12、;
for(i=0;i 13、d Graph::xiugai()
{
string a,c;
int b=0;
cout<<"請輸入要修改的景點:";
cin>>a;
for(int i=0;i 14、操作
void Graph::select()
{
string a;
int b=0;
cout<<"請輸入要查詢的景點:";
cin>>a;
for(int i=0;i 15、out<<"請你輸入要撤銷景點數(shù)和路線條數(shù):";
cin>>k>>z;
for(int j=0;j 16、i 17、 int v,v1;
string b,c;
cout<<"輸入你所在的景點:";
cin>>b;
cout<<"輸入你所要去的景點:";
cin>>c;
for(int i=0;i 18、 if(i!=v&&dist[i] 19、)
if(!s[w]&&Edge[u][w] 20、rtices[i].dingdian<<"的";
cout<<"最佳路徑長度為:";
cout< 21、
for(int n=j;n>=1;n--)
{
cout< 22、dian==b)
v=i;
for( i=0;i 23、 24、weight)
{
string c[10];
int j=0;
int k=i;
cout<<"從"<
25、gdian;
k=path[k];
}
while(k!=v);
j++;
c[j]=Vertices[k].dingdian;
for(int n=j;n>=1;n--)
{
cout< 26、 string b;
cout<<"輸入你所在的景點:";
cin>>b;
for(int i=0;i 27、v]=0;
for(i=0;i 28、Edge[u][w];
path[w]=u;
}
}
for( i=0;i 29、t[i]/100<<"分鐘"<<" ";
cout<<"路徑為:";
do{
j++;
c[j]=Vertices[k].dingdian;
k=path[k];
}
while(k!=v);
j++;
c[j]=Vertices[k].dingdian;
for(int n=j;n>=1;n--)
{
cout< 30、t< 31、理員 ******"< 32、
if(d==123)
{
for(;;)
{
system("cls");
cout<<"********************************"< 33、* C、插入景點和路徑 ***"< 34、ause");
}
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;
}
}
else
{
cout<<"密碼錯誤!" 35、< 36、 ***"< 37、 a.select();
system("pause");
}
if(b==B)
{
a.shortpath1();
system("pause");
}
if(b==C)
{
a.shortpath2();
system("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)試 38、過程中遇到輸出路徑算法有錯誤,當(dāng)刪除一條路徑時時不能正確輸出相應(yīng)路徑,然后對輸出路徑的條件進行改進,增加了條件,測試成功。
4.3算法時間復(fù)雜度
錄入:時間復(fù)雜度為O(n);
查詢景點信息: 時間復(fù)雜度為O(n);
修改景點信息: 時間復(fù)雜度為O(n);
插入景點和路徑: 當(dāng)插入的景點和路徑為x,y時,若x>=y時間復(fù)雜度為O(x)反之為O(y);
刪除景點和路徑: 當(dāng)刪除的景點和路徑為x,y時,若x>=y時間復(fù)雜度為O(x)反之為O(y);
查詢到某景點最佳路徑;此算法為迪杰斯特拉算法時間復(fù)雜度為O(n*n);
查詢到所有景點的最短路徑: 此算法為迪杰斯特拉算法時間復(fù)雜度為 39、O(n*n);
4.4經(jīng)驗和體會
在本次課程設(shè)計中主要是對圖的數(shù)據(jù)結(jié)構(gòu)操作,所有剛開始對知識不是很熟悉操作起來有一定難度,容易在程序的關(guān)鍵地方但經(jīng)過翻閱教材能較好的解決問題。
5用戶使用說明
本系統(tǒng)是關(guān)于故宮的管理系統(tǒng)分為兩類用戶,管理員和游客,由于管理員可以對數(shù)據(jù)進行修改,為了保護數(shù)據(jù),所以管理員登陸需要密碼而游客不需要密碼,管理員有添加景點和路徑、刪除景點和路徑、修改景點信息權(quán)限,游客能查詢景點信息、查找到某一景點的最佳路徑和到所有景點的最佳路徑。
6 測試結(jié)果
6.1錄入信息
圖3 錄入信息界面
40、 圖4 錄入信息界面
6.2查詢景點模塊
圖5 查詢景點信息界面
6.3修改模塊
圖6 修改景點信息界面
6.4插入模塊
圖7 添加景點信息界面
6.5刪除模塊
圖8 刪除景點信息界面
6.6查詢到某景點最佳路徑
圖9 查詢到某景點最佳路徑界面
6.7查詢到所有景點的最短路徑。
圖10 查詢到所有景點最 41、佳路徑界面
結(jié) 論
本次課程設(shè)計“故宮導(dǎo)游咨詢”按照任務(wù)書相應(yīng)的要求成功的完成了任務(wù),由于本課程設(shè)計涉及景點和路徑,采用圖的儲存結(jié)構(gòu)和算法比較方便處理數(shù)據(jù)的儲存、查詢、刪除等操作。但圖的操作比較難,比如求某景點到所有景點的最佳路徑問題,需要使用到迪杰斯特拉算法實現(xiàn)。
致 謝
在本次課程設(shè)計過程中,首先感謝輔導(dǎo)老師周立章,在數(shù)據(jù)結(jié)構(gòu)課堂上為課程設(shè)計需要的前期知識打下了基礎(chǔ),在課程設(shè)計過程中抽出休息時 42、間來做相應(yīng)的課程設(shè)計指導(dǎo)。同時在這次課程設(shè)計中,也要感謝許多樂意同學(xué)對我不懂的地方的指導(dǎo)和耐心講解。
參考文獻
[1] 嚴蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu).清華大學(xué)出版社出版。
[2] 嚴蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)題集(C語言版) .清華大學(xué)出版社.2003年5月。
[3] 楊秀金,數(shù)據(jù)結(jié)構(gòu)(C++版) .高等教育出版社.2009年4月。
[4] 朱戰(zhàn)立.數(shù)據(jù)結(jié)構(gòu)(C++語言描述)(第二版本).高等出版社出版.2004年4月。
[5] 胡學(xué)鋼.數(shù)據(jù)結(jié)構(gòu)(C語言版) .高等教育出版社.2004年8月。
[6] 楊金秀.數(shù)據(jù)結(jié)構(gòu)(C語言版).西安電子科技大學(xué)出版社,2004年8月。
- 溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運動會安全工作預(yù)案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個人工作總結(jié)(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動總結(jié)+在機關(guān)“弘揚憲法精神推動發(fā)改工作高質(zhì)量發(fā)展”專題宣講報告會上的講話
- 2024年XX村合作社年報總結(jié)
- 2024-2025年秋季第一學(xué)期初中歷史上冊教研組工作總結(jié)
- 2024年小學(xué)高級教師年終工作總結(jié)匯報
- 2024-2025年秋季第一學(xué)期初中物理上冊教研組工作總結(jié)
- 2024年xx鎮(zhèn)交通年度總結(jié)
- 2024-2025年秋季第一學(xué)期小學(xué)語文教師工作總結(jié)
- 2024年XX村陳規(guī)陋習(xí)整治報告
- 2025年學(xué)校元旦迎新盛典活動策劃方案
- 2024年學(xué)校周邊安全隱患自查報告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報告