![校園導(dǎo)航系統(tǒng)課程設(shè)計(jì)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/27d48086-4e42-4a70-b4dc-87d936ce57f0/27d48086-4e42-4a70-b4dc-87d936ce57f01.gif)
![校園導(dǎo)航系統(tǒng)課程設(shè)計(jì)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/27d48086-4e42-4a70-b4dc-87d936ce57f0/27d48086-4e42-4a70-b4dc-87d936ce57f02.gif)
![校園導(dǎo)航系統(tǒng)課程設(shè)計(jì)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/27d48086-4e42-4a70-b4dc-87d936ce57f0/27d48086-4e42-4a70-b4dc-87d936ce57f03.gif)
![校園導(dǎo)航系統(tǒng)課程設(shè)計(jì)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/27d48086-4e42-4a70-b4dc-87d936ce57f0/27d48086-4e42-4a70-b4dc-87d936ce57f04.gif)
![校園導(dǎo)航系統(tǒng)課程設(shè)計(jì)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/6/27d48086-4e42-4a70-b4dc-87d936ce57f0/27d48086-4e42-4a70-b4dc-87d936ce57f05.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、校園導(dǎo)航課程設(shè)計(jì)報(bào)告書(shū)專(zhuān) 業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 課程設(shè)計(jì)名稱(chēng):數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題 目:校園導(dǎo)航問(wèn)題班 級(jí):學(xué)號(hào):姓名:同 組 人 員: 指 導(dǎo) 老 師:完 成 時(shí) 間:2012年2月17日摘要校園導(dǎo)航問(wèn)題是基于校園中的不同的景點(diǎn),從陌生人的角度,為來(lái)往的客人提供校園景點(diǎn)相關(guān)信息的查詢以及為來(lái)往的客人提供校園中任意景點(diǎn)的問(wèn)路查詢,以便客人能用最短的時(shí)間從某一地點(diǎn)到達(dá)想要去的地方。大大節(jié)約了旅客參觀校園的時(shí)間。本文是采用C+作為開(kāi)發(fā)語(yǔ)言,又最大程度上用了C語(yǔ)言的有關(guān)的語(yǔ)法。以visual c+6.0為開(kāi)發(fā)工具。旨在實(shí)現(xiàn)校園導(dǎo)航系統(tǒng)中,學(xué)校的簡(jiǎn)介,景點(diǎn)的介紹,路線查詢等基本的問(wèn)題。為來(lái)往客人參觀校園
2、提供方便。關(guān)鍵詞:C+;C;visual c+6.0;校園導(dǎo)航目錄目錄1第一章開(kāi)發(fā)環(huán)境和開(kāi)發(fā)工具11.1C/ C +語(yǔ)言簡(jiǎn)介11.2 開(kāi)發(fā)背景11.3 開(kāi)發(fā)環(huán)境1第二章 算法思想22.1 系統(tǒng)需求分析22.2 系統(tǒng)總體設(shè)計(jì)32.2.1 系統(tǒng)設(shè)計(jì)目標(biāo)32.2.2 開(kāi)發(fā)設(shè)計(jì)思想32.2.3 系統(tǒng)功能模塊設(shè)計(jì)32.3 算法思想描述4第三章算法實(shí)現(xiàn)63.1 數(shù)據(jù)結(jié)構(gòu)63.2 程序模塊63.3 各模塊之間的調(diào)用關(guān)系上123.4 源程序代碼12第四章測(cè)試與分析224.1 測(cè)試數(shù)據(jù)選擇224.2 測(cè)試結(jié)果分析26總 結(jié)27心得體會(huì)28參考文獻(xiàn)29第一章 開(kāi)發(fā)環(huán)境和開(kāi)發(fā)工具1.1 C/ C +語(yǔ)言簡(jiǎn)介C語(yǔ)言是
3、一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。它既具有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它由美國(guó)貝爾研究所的D.M.Ritchie于1972年推出。1978后,C語(yǔ)言已先后被移植到大、中、小及微型機(jī)上。它可以作為工作系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫(xiě)系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫(xiě)不依賴(lài)計(jì)算機(jī)硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強(qiáng)的數(shù)據(jù)處理能力,不僅僅是在軟件開(kāi)發(fā)上,而且各類(lèi)科研都需要用到C語(yǔ)言,適于編寫(xiě)系統(tǒng)軟件,三維,二維圖形和動(dòng)畫(huà)。具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開(kāi)發(fā)。C+是一種靜態(tài)數(shù)據(jù)類(lèi)型檢查的、支持多重編程范式的通用程序設(shè)計(jì)語(yǔ)言。它支持過(guò)程化程序設(shè)計(jì)、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)、制作圖標(biāo)等等泛型程序設(shè)
4、計(jì)等多種程序設(shè)計(jì)風(fēng)格。1.2 開(kāi)發(fā)背景 隨著科學(xué)技術(shù)的不斷發(fā)展,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們所深刻認(rèn)識(shí),它己進(jìn)入人類(lèi)社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。采用計(jì)算機(jī)進(jìn)行校園導(dǎo)航已成為衡量校園數(shù)字化的重要標(biāo)志。校園導(dǎo)航效率的好壞對(duì)于來(lái)校參觀的客人和學(xué)校管理者來(lái)說(shuō)都至關(guān)重要,在很大程度上影響著校園的數(shù)字化建設(shè)和學(xué)校的影響力。因此,本文所研究的校園導(dǎo)航系統(tǒng)具有一定的使用價(jià)值和現(xiàn)實(shí)意義。1.3 開(kāi)發(fā)環(huán)境本文所采用的開(kāi)發(fā)環(huán)境主要是基于c+的visual stadio c+。它是一個(gè)系統(tǒng)的集成開(kāi)發(fā)環(huán)境。很適合CC+程序的開(kāi)發(fā)。我們?nèi)粘5膶W(xué)習(xí)和生活中大多就用這個(gè)開(kāi)發(fā)環(huán)境進(jìn)行學(xué)習(xí)和編程。第二章
5、算法思想2.1 系統(tǒng)需求分析1、設(shè)計(jì)你的學(xué)校的校園平面圖,所選的景點(diǎn)不少于10個(gè)。以圖中頂點(diǎn)表示校內(nèi)各景點(diǎn),存放景點(diǎn)名稱(chēng)、代號(hào)、簡(jiǎn)介等信息;以邊表示路徑,存放路徑長(zhǎng)度等相關(guān)信息。2、為來(lái)往客人提供圖中任意景點(diǎn)相關(guān)信息的查詢。3、為來(lái)往的客人提供圖中任意景點(diǎn)的問(wèn)路查詢,即查詢?nèi)我鈨蓚€(gè)景點(diǎn)間的一條最短的簡(jiǎn)單路徑。根據(jù)以上分析和抽象可得到本系統(tǒng)的抽象數(shù)據(jù)類(lèi)型如下:ADT graph 數(shù)據(jù)對(duì)象 R:V是校園中景點(diǎn)的集合,稱(chēng)為頂點(diǎn)集。 R=VR VR=<v,w,>|v,wV且P(v,w),(v,w)表示從景點(diǎn)v到景點(diǎn)w的路徑長(zhǎng)度基本操作 P:Creatgraph(&G,V,VR)初始
6、條件:V是圖的頂點(diǎn)集,VR是圖中邊的集合。操作結(jié)果:按V和VR的定義構(gòu)造圖G。Output(G)初始條件:圖G已經(jīng)存在。操作結(jié)果:打印出圖的信息ShortestPath(G,v)初始條件:圖G已存在,v是圖中的一個(gè)頂點(diǎn)。操作結(jié)果:返回從v出發(fā)到圖中任意頂點(diǎn)的最短的路徑。ADT graph; 2.2 系統(tǒng)總體設(shè)計(jì)2.2.1 系統(tǒng)設(shè)計(jì)目標(biāo) 本文研究開(kāi)發(fā)的校園導(dǎo)航系統(tǒng)用于支持來(lái)往校園參觀的客人提供最省時(shí)的導(dǎo)航服務(wù),有如下三個(gè)方面的目標(biāo): 1、為來(lái)往的客人提供校園的簡(jiǎn)介。2、為來(lái)往的客人提供校園中各景點(diǎn)的簡(jiǎn)介,以及各景點(diǎn)的距離等情況。3、為來(lái)往的客人提供到達(dá)目的地的最短的路線。2.2.2 開(kāi)發(fā)設(shè)計(jì)思想
7、 基于以上系統(tǒng)設(shè)計(jì)目標(biāo),本文在開(kāi)發(fā)校園導(dǎo)航系統(tǒng)時(shí)遵循了以下開(kāi)發(fā)設(shè)計(jì)思想: 1、采用現(xiàn)有的軟硬件環(huán)境及先進(jìn)的管理系統(tǒng)開(kāi)發(fā)方案,從而達(dá)到充分利用現(xiàn)有資源,提高系統(tǒng)開(kāi)發(fā)水平和應(yīng)用效果的目的。2、盡量達(dá)到操作過(guò)程中的直觀、方便、實(shí)用、安全等要求。3、系統(tǒng)采用模塊化程序設(shè)計(jì)方法,既便于系統(tǒng)功能的各種組合和修改,又便于未參與開(kāi)發(fā)的技術(shù)維護(hù)人員補(bǔ)充、維護(hù)。2.2.3 系統(tǒng)功能模塊設(shè)計(jì) 本系統(tǒng)分為四個(gè)模塊:菜單模塊、景點(diǎn)介紹模塊、路徑查詢模塊、最短路徑模塊。得到如圖3-1所示的系統(tǒng)功能模塊圖。主菜單校園導(dǎo)航系統(tǒng)菜單景點(diǎn)介紹路徑查詢最短路徑查詢子菜單退出學(xué)校簡(jiǎn)介景點(diǎn)簡(jiǎn)介各景點(diǎn)間距離最短路徑長(zhǎng)度最短路線圖3-1系
8、統(tǒng)功能模塊圖2.3 算法思想描述 1、迪杰斯特拉算法思想:按路徑長(zhǎng)度遞增次序產(chǎn)生最短路徑算法:把V分成兩組:(1)S:已求出最短路徑的頂點(diǎn)的集合(2)V-S=T:尚未確定最短路徑的頂點(diǎn)集合將T中頂點(diǎn)按最短路徑遞增的次序加入到S中,保證:(1)從源點(diǎn)V0到S中各頂點(diǎn)的最短路徑長(zhǎng)度都不大于從V0到T中任何頂點(diǎn)的最短路徑長(zhǎng)度(2)每個(gè)頂點(diǎn)對(duì)應(yīng)一個(gè)距離值S中頂點(diǎn):從V0到此頂點(diǎn)的最短路徑長(zhǎng)度T中頂點(diǎn):從V0到此頂點(diǎn)的只包括S中頂點(diǎn)作中間頂點(diǎn)的最短路徑長(zhǎng)度依據(jù):可以證明V0到T中頂點(diǎn)Vk的最短路徑,或是從V0到Vk的直接路徑的權(quán)值;或是從V0經(jīng)S中頂點(diǎn)到Vk的路徑權(quán)值之和2、鄰接矩陣建立有無(wú)向權(quán)圖的算法
9、思想:用兩個(gè)數(shù)組分別存儲(chǔ)數(shù)據(jù)元素的信息和數(shù)據(jù)之間的關(guān)系的信息其形式描述如下:#define Max 32767/最大值#define NUM 11/最大頂點(diǎn)個(gè)數(shù)typedef struct ArcCellint adj; / 相鄰接的景點(diǎn)之間的路程 char *info;ArcCell; / 定義邊的類(lèi)型 typedef struct VertexTypeint number; / 景點(diǎn)編號(hào) char *sight; / 景點(diǎn)名稱(chēng) char *description; / 景點(diǎn)描述 VertexType; / 定義頂點(diǎn)的類(lèi)型 typedef structVertexType vexNUM; /
10、 圖中的頂點(diǎn),即為景點(diǎn) ArcCell arcsNUMNUM; / 圖中的邊,即為景點(diǎn)間的距離 int vexnum,arcnum; / 頂點(diǎn)數(shù),邊數(shù) MGraph; / 定義圖的類(lèi)型 其中用二維數(shù)組表示途中個(gè)邊之間的關(guān)系。第三章 算法實(shí)現(xiàn)3.1 數(shù)據(jù)結(jié)構(gòu)1、頂點(diǎn)、邊和圖類(lèi)型:typedef struct ArcCellint adj; / 相鄰接的景點(diǎn)之間的路程 char *info;ArcCell; / 定義邊的類(lèi)型 typedef struct VertexTypeint number; / 景點(diǎn)編號(hào) char *sight; / 景點(diǎn)名稱(chēng) char *description; / 景點(diǎn)
11、描述 VertexType; / 定義頂點(diǎn)的類(lèi)型 typedef structVertexType vexNUM; / 圖中的頂點(diǎn),即為景點(diǎn) ArcCell arcsNUMNUM; / 圖中的邊,即為景點(diǎn)間的距離 int vexnum,arcnum; / 頂點(diǎn)數(shù),邊數(shù) MGraph; / 定義圖的類(lèi)型3.2 程序模塊 1.main函數(shù) void main() / 主函數(shù) int v0,v1;char ck;system("color cb");CreateUDN(NUM,11);do ck=Menu();switch(ck)case'1':introduce
12、();printf("nnttt%-25snn",G.vex0.description);getchar();getchar();break;case '2':system("cls");pingmu();printf("nnttt請(qǐng)選擇起點(diǎn)景點(diǎn)(110):");scanf("%d",&v0);printf("ttt請(qǐng)選擇終點(diǎn)景點(diǎn)(110):");scanf("%d",&v1);ShortestPath(v0); / 計(jì)算兩個(gè)景點(diǎn)之間的最短路徑
13、 output(v0,v1); / 輸出結(jié)果 printf("nntttt請(qǐng)按回車(chē)鍵繼續(xù).n");getchar();getchar();break;case '3':search();break;case'5':PrintMGraph();printf("nntttt請(qǐng)按回車(chē)鍵繼續(xù).n");getchar();getchar();break;while(ck!='e');2.主菜單 char Menu() / 主菜單 /char c;int flag;doflag=1;system("cls&q
14、uot;);pingmu();printf("nttn");printf("tt n");printf("tt 1.學(xué)校簡(jiǎn)介 n");printf("tt 2.查詢景點(diǎn)路徑 n");printf("tt 3.查詢景點(diǎn)信息 n");printf("tt 5.查詢各景點(diǎn)之間的距離 n");printf("tt e.退出 n");printf("tt n");printf("ttn");printf("tttt請(qǐng)
15、輸入您的選擇:");scanf("%c",&c);if(c='1'|c='2'|c='3'|c='5'|c='e')flag=0;while(flag);return c;3.查詢子菜單char SearchMenu() / 查詢子菜單 char c;int flag;doflag=1;system("cls");pingmu();printf("nttn");printf("tt n");printf("t
16、t 1、按照景點(diǎn)編號(hào)查詢 n");printf("tt 2、按照景點(diǎn)名稱(chēng)查詢 n");printf("tt e、返回 n");printf("tt n");printf("ttn");printf("ttt請(qǐng)輸入您的選擇:");scanf("%c",&c);if(c='1'|c='2'|c='e')flag=0;while(flag);return c;4.查詢景點(diǎn)信息void search() / 查詢景點(diǎn)信
17、息 int num;int i;char c;char name20;dosystem("cls");c=SearchMenu();switch (c)case '1': system("cls");/introduce();pingmu();printf("nntt請(qǐng)輸入您要查找的景點(diǎn)編號(hào):");scanf("%d",&num);for(i=0;i<NUM;i+)if(num=G.vexi.number)printf("nnttt您要查找景點(diǎn)信息如下:");pri
18、ntf("nnttt%-25snn",G.vexi.description);printf("nttt按任回車(chē)返回.");getchar();getchar();break;if(i=NUM)printf("nnttt沒(méi)有找到!");printf("nnttt按回車(chē)鍵返回.");getchar();getchar();break;case '2':system("cls");pingmu();introduce();printf("nntt請(qǐng)輸入您要查找的景點(diǎn)名稱(chēng):&q
19、uot;);scanf("%s",name);for(i=1;i<NUM;i+)if(!strcmp(name,G.vexi.sight)printf("nnttt您要查找景點(diǎn)信息如下:");printf("nnttt%-25snn",G.vexi.description);printf("nttt按回車(chē)鍵返回.");getchar();getchar();break;if(i=NUM)printf("nnttt沒(méi)有找到!");printf("nnttt按回車(chē)鍵返回."
20、);getchar();getchar();break;while(c!='e');5.創(chuàng)建圖的函數(shù)void CreateUDN(int v,int a) / 創(chuàng)建圖的函數(shù) 6. 打印出鄰接矩陣void PrintMGraph()int i,j;cout<<"n =nn "for(i=1;i<G.vexnum;+i)cout<<G.vexi.sight<<" "cout<<endl;for(i=1;i<G.vexnum;+i)cout<<"nn"&
21、lt;<G.vexi.sight<<" "for(j=1;j<G.vexnum;+j)if(G.arcsij.adj=Max)cout<<" no "elsecout<<" "<<G.arcsij.adj;cout<<"nnnn=nnn"7.迪杰斯特拉算法void ShortestPath(int num) / 迪杰斯特拉算法最短路徑函數(shù) num為入口點(diǎn)的編號(hào) int v,w,i,t; / i、w和v為計(jì)數(shù)變量 int finalNUM; in
22、t min;for(v=1;v<NUM;v+)finalv=0; / 假設(shè)從頂點(diǎn)num到頂點(diǎn)v沒(méi)有最短路徑 Dv=G.arcsnumv.adj;/ 將與之相關(guān)的權(quán)值放入D中存放 for(w=1;w<NUM;w+) / 設(shè)置為空路徑 Pvw=0;if(Dv<32767) / 存在路徑 Pvnum=1; / 存在標(biāo)志置為一 Pvv=1; / 自身到自身 Dnum=0;finalnum=1; / 初始化num頂點(diǎn)屬于S集合 / 開(kāi)始主循環(huán),每一次求得num到某個(gè)頂點(diǎn)的最短路徑,并將其加入到S集合 for(i=1;i<NUM;+i) / 其余G.vexnum-1個(gè)頂點(diǎn) min=
23、Max; / 當(dāng)前所知離頂點(diǎn)num的最近距離 for(w=1;w<NUM;+w)if(!finalw) / w頂點(diǎn)在v-s中 if(Dw<min) / w頂點(diǎn)離num頂點(diǎn)更近 v=w;min=Dw; finalv=1; / 離num頂點(diǎn)更近的v加入到s集合 for(w=1;w<NUM;+w) / 更新當(dāng)前最短路徑極其距離 if(!finalw&&(min+G.arcsvw.adj)<Dw)/ 不在s集合,并且比以前所找到的路徑都短就更新當(dāng)前路徑 /Dw=min+G.arcsvw.adj;for(t=0;t<NUM;t+)Pwt=Pvt;Pww=1;
24、8、輸出:屏幕輸出函數(shù):void pingmu();最短路線輸出函數(shù)void output;3.3 各模塊之間的調(diào)用關(guān)系上 模塊調(diào)用關(guān)系如圖32所示:mainCreateUDNmenusearchShortestPathoutputPrintMGraphpingmusearchmenu圖32模塊調(diào)用關(guān)系圖3.4 源程序代碼#include<iostream.h> #include "string.h" #include "stdio.h" #include "stdlib.h"#define Max 32767#defin
25、e NUM 11typedef struct ArcCellint adj; / 相鄰接的景點(diǎn)之間的路程 char *info;ArcCell; / 定義邊的類(lèi)型 typedef struct VertexTypeint number; / 景點(diǎn)編號(hào) char *sight; / 景點(diǎn)名稱(chēng) char *description; / 景點(diǎn)描述 VertexType; / 定義頂點(diǎn)的類(lèi)型 typedef structVertexType vexNUM; / 圖中的頂點(diǎn),即為景點(diǎn) ArcCell arcsNUMNUM; / 圖中的邊,即為景點(diǎn)間的距離 int vexnum,arcnum; / 頂點(diǎn)數(shù)
26、,邊數(shù) MGraph; / 定義圖的類(lèi)型 MGraph G; / 把圖定義為全局變量 int PNUMNUM; / /long int DNUM; / 輔助變量存儲(chǔ)最短路徑長(zhǎng)度 int x13=0; void CreateUDN(int v,int a); / 創(chuàng)建圖的函數(shù) void pingmu(); /屏幕輸出函數(shù)void introduce();void ShortestPath(int num); /最短路徑函數(shù)void output(int sight1,int sight2); /輸出函數(shù)void PrintMGraph();char Menu(); / 主菜單 void sear
27、ch(); ;/ 查詢景點(diǎn)信息 char SearchMenu(); / 查詢子菜單 void NextValue(int); void display(); / 顯示遍歷結(jié)果 void main() / 主函數(shù) int v0,v1;char ck;system("color 4b");CreateUDN(NUM,11);do ck=Menu();switch(ck)case'1':introduce();printf("nnttt%-25snn",G.vex0.description);getchar();getchar();break
28、;case '2':system("cls");pingmu();printf("nnttt請(qǐng)選擇起點(diǎn)景點(diǎn)(110):");scanf("%d",&v0);printf("ttt請(qǐng)選擇終點(diǎn)景點(diǎn)(110):");scanf("%d",&v1);ShortestPath(v0); / 計(jì)算兩個(gè)景點(diǎn)之間的最短路徑 output(v0,v1); / 輸出結(jié)果 printf("nntttt請(qǐng)按回車(chē)鍵繼續(xù).n");getchar();getchar();b
29、reak;case '3':search();break;case'5':PrintMGraph();printf("nntttt請(qǐng)按回車(chē)鍵繼續(xù).n");getchar();getchar();break;while(ck!='e');char Menu() / 主菜單 /char c;int flag;doflag=1;system("cls");pingmu();introduce();printf("nttn");printf("tt n");printf(&q
30、uot;tt 1.學(xué)校簡(jiǎn)介 n");printf("tt 2.查詢景點(diǎn)路徑 n");printf("tt 3.查詢景點(diǎn)信息 n");printf("tt 5.查詢各景點(diǎn)之間的距離 n");printf("tt e.退出 n");printf("tt n");printf("tt n");printf("tttt請(qǐng)輸入您的選擇:");scanf("%c",&c);if(c='1'|c='2'
31、;|c='3'|c='5'|c='e')flag=0;while(flag);return c;char SearchMenu() / 查詢子菜單 char c;int flag;doflag=1;system("cls");pingmu();introduce();printf("ntt n");printf("tt n");printf("tt 1、按照景點(diǎn)編號(hào)查詢 n");printf("tt 2、按照景點(diǎn)名稱(chēng)查詢 n");printf(&q
32、uot;tt e、返回 n");printf("tt n");printf("tt n");printf("ttt請(qǐng)輸入您的選擇:");scanf("%c",&c);if(c='1'|c='2'|c='e')flag=0;while(flag);return c;void search() / 查詢景點(diǎn)信息 int num;int i;char c;char name20;dosystem("cls");c=SearchMenu(
33、);switch (c)case '1': system("cls");introduce();pingmu();printf("nntt請(qǐng)輸入您要查找的景點(diǎn)編號(hào):");scanf("%d",&num);for(i=0;i<NUM;i+)if(num=G.vexi.number)printf("nnttt您要查找景點(diǎn)信息如下:");printf("nnttt%-25snn",G.vexi.description);printf("nttt按任回車(chē)返回.&q
34、uot;);getchar();getchar();break;if(i=NUM)printf("nnttt沒(méi)有找到!");printf("nnttt按回車(chē)鍵返回.");getchar();getchar();break;case '2':system("cls");pingmu();introduce();printf("nntt請(qǐng)輸入您要查找的景點(diǎn)名稱(chēng):");scanf("%s",name);for(i=1;i<NUM;i+)if(!strcmp(name,G.vexi
35、.sight)printf("nnttt您要查找景點(diǎn)信息如下:");printf("nnttt%-25snn",G.vexi.description);printf("nttt按回車(chē)鍵返回.");getchar();getchar();break;if(i=NUM)printf("nnttt沒(méi)有找到!");printf("nnttt按回車(chē)鍵返回.");getchar();getchar();break;while(c!='e');void CreateUDN(int v,int
36、a) / 創(chuàng)建圖的函數(shù) int i,j;G.vexnum=v; / 初始化結(jié)構(gòu)中的景點(diǎn)數(shù)和邊數(shù) G.arcnum=a;for(i=1;i<G.vexnum;+i) G.vexi.number=i; / 初始化每一個(gè)景點(diǎn)的編號(hào) / 初始化沒(méi)一個(gè)景點(diǎn)名及其景點(diǎn)描述 G.vex0.sight="學(xué)校簡(jiǎn)介"G.vex1.sight="校大門(mén)"G.vex2.sight="教學(xué)樓"G.vex3.sight="中心廣場(chǎng)"G.vex4.sight="山頂操場(chǎng)"G.vex5.sight="學(xué)生宿舍
37、"G.vex6.sight="圖書(shū)館"G.vex7.sight="體育館"G.vex8.sight="二食堂"G.vex9.sight="服務(wù)樓"G.vex10.sight="北門(mén)"/ 這里把所有的邊假定為32767,含義是這兩個(gè)景點(diǎn)之間是不可到達(dá) for(i=1;i<G.vexnum;+i)for(j=1;j<G.vexnum;+j) G.arcsij.adj=Max;G.=NULL;/下邊是可直接到達(dá)的景點(diǎn)間的距離,由于兩個(gè)景點(diǎn)間距離是互相的,/
38、所以要對(duì)圖中對(duì)稱(chēng)的邊同時(shí)賦值。G.arcs14.adj=G.arcs41.adj=200;G.arcs13.adj=G.arcs31.adj=500;G.arcs35.adj=G.arcs53.adj=100;G.arcs310.adj=G.arcs103.adj=400;G.arcs46.adj=G.arcs64.adj=200;G.arcs25.adj=G.arcs52.adj=200;G.arcs24.adj=G.arcs42.adj=300;G.arcs57.adj=G.arcs75.adj=500;G.arcs46.adj=G.arcs64.adj=400;G.arcs47.adj=
39、G.arcs74.adj=600;G.arcs68.adj=G.arcs86.adj=500;G.arcs78.adj=G.arcs87.adj=300;G.arcs69.adj=G.arcs96.adj=500;/ 打印出鄰接矩陣void PrintMGraph()int i,j;cout<<"n =nn "for(i=1;i<G.vexnum;+i)cout<<G.vexi.sight<<" "cout<<endl;for(i=1;i<G.vexnum;+i)cout<<&quo
40、t;nn"<<G.vexi.sight<<" "for(j=1;j<G.vexnum;+j)if(G.arcsij.adj=Max)cout<<" no "elsecout<<" "<<G.arcsij.adj;cout<<"nnnn=nnn"void introduce() / 介紹函數(shù) int i;for(i=1;i<=NUM;i+) G.vex0.description="河南城建學(xué)院坐落在國(guó)家旅游城市nn
41、tt國(guó)家歷史文化名城-平頂山,校園椰風(fēng)流韻、芳林疊翠、風(fēng)景秀麗。nntt經(jīng)過(guò)二十多年的發(fā)展,學(xué)?,F(xiàn)已形成以城建為主要辦學(xué)特色nntt文、管、理、經(jīng)等多學(xué)科協(xié)調(diào)發(fā)展的格局,是河南省培養(yǎng)城建類(lèi)nntt高級(jí)應(yīng)用型人才的重要基地.目前,學(xué)校確立了立足河南nntt逐漸面向全國(guó)服務(wù)面向定位,充分發(fā)揮學(xué)校特色nntt積極擴(kuò)大對(duì)外交流與合作,學(xué)術(shù)交流日趨nntt頻繁,國(guó)際影響不斷增強(qiáng)nntt下面幾點(diǎn)是河南城建學(xué)院的辦學(xué)特色:nntt辦學(xué)歷史較為悠久nntt學(xué)科專(zhuān)業(yè)較為齊全nntt師資隊(duì)伍素質(zhì)優(yōu)良nntt教學(xué)成果較為豐碩nntt科研水平不斷提高nntt校園文化豐富活躍nntt人才培養(yǎng)成效顯著nntt合作交流日趨
42、頻繁nntt"G.vex1.description="學(xué)校大門(mén),對(duì)面是祥云公園ntt是我們學(xué)生休閑娛樂(lè)的好地方"G.vex2.description="計(jì)教系辦公大樓,計(jì)算機(jī)科學(xué)技術(shù)的科研中心"G.vex3.description="這里是學(xué)校的主要的風(fēng)景區(qū),是學(xué)校的標(biāo)志之一"G.vex4.description="在這破地方什么鳥(niǎo)人都 有,拿書(shū)吶喊的,失戀的,打KISS的,暗送秋波的,ntt可千萬(wàn)別來(lái)這鴛鴦之地,你來(lái)了,一個(gè)電燈泡亮那兒ntt你說(shuō)人家兩口子咋親熱啊,還是閃為上策"G.vex5.descr
43、iption="學(xué)生生活的天堂"G.vex6.description="河南城建學(xué)院信息中心,各種書(shū)籍應(yīng)有盡有"G.vex7.description="排球籃球比賽,晚會(huì),各種報(bào)告,開(kāi)學(xué)典禮舉行都在這破地方舉行"G.vex8.description="老師和同學(xué)們吃飯的地方,這里的飯比一食堂好吃,菜不錯(cuò)ntt看你肚皮有沒(méi)有豬八戒大,你要是吃不飽可以考慮來(lái)這吃,準(zhǔn)讓你撐死"G.vex9.description="學(xué)生可以在這里買(mǎi)到日常必須品。"G.vex10.description="北
44、門(mén)雄偉壯觀,十分氣派!"void pingmu() / 屏幕輸出函數(shù) int i;printf("nntt%c%c%c%c%c%c%c%c%c%c%c歡迎來(lái)到河南城建學(xué)院%c%c%c%c%c%c%c%c%c%cnn",6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6);printf("tt%c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %cn",3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3);print
45、f("tt%ctt學(xué)校簡(jiǎn)介tt%cn",1,1);printf("tt%c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %cn",3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3);printf("tt%ctt學(xué)校概況tt%cn",6,6);printf("tt%c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %cn",3,3,3,3,3,3,
46、3,3,3,3,3,3,3,3,3,3,3,3,3,3,3);for(i=1;i<NUM;i+)printf("tt%ctt(%2d)%-20s%cttt",1,i,G.vexi.sight,1); / 輸出景點(diǎn)列表 printf("tt%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%cnn",1,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
47、6,6,6,6,1);void ShortestPath(int num) / 迪杰斯特拉算法最短路徑函數(shù) num為入口點(diǎn)的編號(hào) int v,w,i,t; / i、w和v為計(jì)數(shù)變量 int finalNUM; int min;for(v=1;v<NUM;v+)finalv=0; / 假設(shè)從頂點(diǎn)num到頂點(diǎn)v沒(méi)有最短路徑 Dv=G.arcsnumv.adj;/ 將與之相關(guān)的權(quán)值放入D中存放 for(w=1;w<NUM;w+) / 設(shè)置為空路徑 Pvw=0;if(Dv<32767) / 存在路徑 Pvnum=1; / 存在標(biāo)志置為一 Pvv=1; / 自身到自身 Dnum=0;f
48、inalnum=1; / 初始化num頂點(diǎn)屬于S集合 / 開(kāi)始主循環(huán),每一次求得num到某個(gè)頂點(diǎn)的最短路徑,并將其加入到S集合 for(i=1;i<NUM;+i) / 其余G.vexnum-1個(gè)頂點(diǎn) min=Max; / 當(dāng)前所知離頂點(diǎn)num的最近距離 for(w=1;w<NUM;+w)if(!finalw) / w頂點(diǎn)在v-s中 if(Dw<min) / w頂點(diǎn)離num頂點(diǎn)更近 v=w;min=Dw; finalv=1; / 離num頂點(diǎn)更近的v加入到s集合 for(w=1;w<NUM;+w) / 更新當(dāng)前最短路徑極其距離 if(!finalw&&(m
49、in+G.arcsvw.adj)<Dw)/ 不在s集合,并且比以前所找到的路徑都短就更新當(dāng)前路徑 /Dw=min+G.arcsvw.adj;for(t=0;t<NUM;t+)Pwt=Pvt;Pww=1;void output(int sight1,int sight2) / 輸出函數(shù) int a,b,c,d,q=0;a=sight2; / 將景點(diǎn)二賦值給a if(a!=sight1) / 如果景點(diǎn)二不和景點(diǎn)一輸入重合,則進(jìn)行. printf("nt從%s到%s的最短路徑是",G.vexsight1.sight,G.vexsight2.sight);/ 輸出提示信息 printf("t(最短距離為 %dm.)nnt",Da); / 輸出sight1到sight2的最短路徑長(zhǎng)度,存放在D數(shù)組中 printf("t%s",G.vexsight1.sight); / 輸出景點(diǎn)一的名稱(chēng) d=sight1; / 將景點(diǎn)一的編號(hào)賦值給d for(c=0;c<NUM;+c)gate:; / 標(biāo)號(hào),可以作為goto語(yǔ)句跳轉(zhuǎn)的位置 Pasight1=0; f
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年主管護(hù)師業(yè)務(wù)工作總結(jié)例文(二篇)
- LY/T 2005-2024國(guó)家級(jí)森林公園總體規(guī)劃規(guī)范
- 加盟買(mǎi)料合同范本
- 合同范例范例里查
- 商場(chǎng)改造冷庫(kù)合同范例
- 鹵肉合同范例
- 化肥貼牌合同范例
- 專(zhuān)利使用合同范例
- 化肥采購(gòu)合同范例
- 培訓(xùn)公司勞務(wù)合同范例
- 七上 U2 過(guò)關(guān)單 (答案版)
- 五年級(jí)上冊(cè)小數(shù)遞等式計(jì)算200道及答案
- 超高大截面框架柱成型質(zhì)量控制
- GB 9706.1-2020醫(yī)用電氣設(shè)備第1部分:基本安全和基本性能的通用要求
- 森林法講解課件
- 口腔頜面外科:第十六章-功能性外科與計(jì)算機(jī)輔助外科課件
- 信用證審核課件
- 植物工廠,設(shè)計(jì)方案(精華)
- 原發(fā)性膽汁性肝硬化(PBC)課件
- 貸款新人電銷(xiāo)話術(shù)表
- 音箱可靠性測(cè)試規(guī)范
評(píng)論
0/150
提交評(píng)論