面向?qū)ο蟮拇笮蜏y控軟件設(shè)計(jì)-校園導(dǎo)航系統(tǒng)設(shè)計(jì)_第1頁
面向?qū)ο蟮拇笮蜏y控軟件設(shè)計(jì)-校園導(dǎo)航系統(tǒng)設(shè)計(jì)_第2頁
面向?qū)ο蟮拇笮蜏y控軟件設(shè)計(jì)-校園導(dǎo)航系統(tǒng)設(shè)計(jì)_第3頁
面向?qū)ο蟮拇笮蜏y控軟件設(shè)計(jì)-校園導(dǎo)航系統(tǒng)設(shè)計(jì)_第4頁
面向?qū)ο蟮拇笮蜏y控軟件設(shè)計(jì)-校園導(dǎo)航系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

面向?qū)ο蟮拇笮蜏y控軟件設(shè)計(jì)作業(yè)--校園導(dǎo)航系統(tǒng)設(shè)計(jì)任課教師姓名:學(xué)生姓名:學(xué)生學(xué)號:摘要校園導(dǎo)航問題是基于校園中的不同的景點(diǎn),從陌生人的角度,為來往的客人提供校園景點(diǎn)相關(guān)信息的查詢以及為來往的客人提供校園中任意景點(diǎn)的問路查詢,以便客人能用最短的時(shí)間從某一地點(diǎn)到達(dá)想要去的地方。大大節(jié)約了旅客參觀校園的時(shí)間。本文是采用C++作為開發(fā)語言,又最大程度上用了C語言的有關(guān)的語法。以visualc++6.0為開發(fā)工具。旨在實(shí)現(xiàn)校園導(dǎo)航系統(tǒng)中,學(xué)校的簡介,景點(diǎn)的介紹,路線查詢等基本的問題。為來往客人參觀校園提供方便。關(guān)鍵詞:C++;C;visualc++6.0;校園導(dǎo)航第二章算法思想2.1系統(tǒng)需求分析1、設(shè)計(jì)你的學(xué)校的校園平面圖,所選的景點(diǎn)不少于10個(gè)。以圖中頂點(diǎn)表示校內(nèi)各景點(diǎn),存放景點(diǎn)名稱、代號、簡介等信息;以邊表示路徑,存放路徑長度等相關(guān)信息。2、為來往客人提供圖中任意景點(diǎn)相關(guān)信息的查詢。3、為來往的客人提供圖中任意景點(diǎn)的問路查詢,即查詢?nèi)我鈨蓚€(gè)景點(diǎn)間的一條最短的簡單路徑。根據(jù)以上分析和抽象可得到本系統(tǒng)的抽象數(shù)據(jù)類型如下:ADTgraph{數(shù)據(jù)對象R:V是校園中景點(diǎn)的集合,稱為頂點(diǎn)集。R={VR}VR={<v,w,>|v,w∈V且P(v,w),(v,w)表示從景點(diǎn)v到景點(diǎn)w的路徑長度基本操作P:Creatgraph(&G,V,VR)初始條件: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)的最短的路徑。}ADTgraph;2.2系統(tǒng)總體設(shè)計(jì)2.2.1系統(tǒng)設(shè)計(jì)目標(biāo)本文研究開發(fā)的校園導(dǎo)航系統(tǒng)用于支持來往校園參觀的客人提供最省時(shí)的導(dǎo)航服務(wù),有如下三個(gè)方面的目標(biāo):1、為來往的客人提供校園的簡介。2、為來往的客人提供校園中各景點(diǎn)的簡介,以及各景點(diǎn)的距離等情況。3、為來往的客人提供到達(dá)目的地的最短的路線。2.2.2開發(fā)設(shè)計(jì)思想基于以上系統(tǒng)設(shè)計(jì)目標(biāo),本文在開發(fā)校園導(dǎo)航系統(tǒng)時(shí)遵循了以下開發(fā)設(shè)計(jì)思想:1、采用現(xiàn)有的軟硬件環(huán)境及先進(jìn)的管理系統(tǒng)開發(fā)方案,從而達(dá)到充分利用現(xiàn)有資源,提高系統(tǒng)開發(fā)水平和應(yīng)用效果的目的。2、盡量達(dá)到操作過程中的直觀、方便、實(shí)用、安全等要求。3、系統(tǒng)采用模塊化程序設(shè)計(jì)方法,既便于系統(tǒng)功能的各種組合和修改,又便于未參與開發(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)主菜單校園導(dǎo)航系統(tǒng)菜單景點(diǎn)介紹路徑查詢最短路徑查詢子菜單退出學(xué)校簡介景點(diǎn)簡介各景點(diǎn)間距離最短路徑長度最短路線圖3-1系統(tǒng)功能模塊圖2.3算法思想描述1、迪杰斯特拉算法思想:按路徑長度遞增次序產(chǎn)生最短路徑算法:

把V分成兩組:

(1)S:已求出最短路徑的頂點(diǎn)的集合

(2)V-S=T:尚未確定最短路徑的頂點(diǎn)集合

將T中頂點(diǎn)按最短路徑遞增的次序加入到S中,

保證:(1)從源點(diǎn)V0到S中各頂點(diǎn)的最短路徑長度都不大于

從V0到T中任何頂點(diǎn)的最短路徑長度

(2)每個(gè)頂點(diǎn)對應(yīng)一個(gè)距離值

S中頂點(diǎn):從V0到此頂點(diǎn)的最短路徑長度

T中頂點(diǎn):從V0到此頂點(diǎn)的只包括S中頂點(diǎn)作中間

頂點(diǎn)的最短路徑長度

依據(jù):可以證明V0到T中頂點(diǎn)Vk的最短路徑,或是從V0到Vk的

直接路徑的權(quán)值;或是從V0經(jīng)S中頂點(diǎn)到Vk的路徑權(quán)值之和2、鄰接矩陣建立有無向權(quán)圖的算法思想:用兩個(gè)數(shù)組分別存儲數(shù)據(jù)元素的信息和數(shù)據(jù)之間的關(guān)系的信息其形式描述如下:#defineMax32767//最大值∞#defineNUM11//最大頂點(diǎn)個(gè)數(shù)typedefstructArcCell{ intadj;//相鄰接的景點(diǎn)之間的路程 char*info;}ArcCell;//定義邊的類型typedefstructVertexType{ intnumber;//景點(diǎn)編號 char*sight;//景點(diǎn)名稱 char*description;//景點(diǎn)描述}VertexType;//定義頂點(diǎn)的類型typedefstruct{ VertexTypevex[NUM];//圖中的頂點(diǎn),即為景點(diǎn) ArcCellarcs[NUM][NUM];//圖中的邊,即為景點(diǎn)間的距離 intvexnum,arcnum;//頂點(diǎn)數(shù),邊數(shù)}MGraph;//定義圖的類型其中用二維數(shù)組表示途中個(gè)邊之間的關(guān)系。算法實(shí)現(xiàn)3.1數(shù)據(jù)結(jié)構(gòu)1、頂點(diǎn)、邊和圖類型:typedefstructArcCell{ intadj;//相鄰接的景點(diǎn)之間的路程 char*info;}ArcCell;//定義邊的類型typedefstructVertexType{ intnumber;//景點(diǎn)編號 char*sight;//景點(diǎn)名稱 char*description;//景點(diǎn)描述}VertexType;//定義頂點(diǎn)的類型typedefstruct{ VertexTypevex[NUM];//圖中的頂點(diǎn),即為景點(diǎn) ArcCellarcs[NUM][NUM];//圖中的邊,即為景點(diǎn)間的距離 intvexnum,arcnum;//頂點(diǎn)數(shù),邊數(shù)}MGraph;//定義圖的類型3.2程序模塊1.main函數(shù)voidmain()//主函數(shù){ intv0,v1; charck; system("color1e"); CreateUDN(NUM,11); do { ck=Menu(); switch(ck) { case'1': introduce(); printf("\n\n\t\t\t%-25s\n\n",G.vex[0].description); getchar(); getchar(); break; case'2': system("cls"); pingmu(); printf("\n\n\t\t\t請選擇起點(diǎn)景點(diǎn)(1~10):"); scanf("%d",&v0); printf("\t\t\t請選擇終點(diǎn)景點(diǎn)(1~10):"); scanf("%d",&v1); ShortestPath(v0);//計(jì)算兩個(gè)景點(diǎn)之間的最短路徑 output(v0,v1);//輸出結(jié)果 printf("\n\n\t\t\t\t請按回車鍵繼續(xù)...\n"); getchar(); getchar(); break; case'3':search(); break; case'5': PrintMGraph(); printf("\n\n\t\t\t\t請按回車鍵繼續(xù)...\n"); getchar(); getchar(); break; }; }while(ck!='e');}主菜單charMenu()//主菜單//{ charc; intflag; do{ flag=1; system("cls"); pingmu(); introduce(); printf("\n\t\t┏━━━━━━━━━━━━━━━━━━━┑\n"); printf("\t\t┃┃\n"); printf("\t\t┃1.東南大學(xué)簡介┃\n"); printf("\t\t┃2.查詢景點(diǎn)路徑┃\n"); printf("\t\t┃3.查詢景點(diǎn)信息┃\n"); printf("\t\t┃5.查詢各景點(diǎn)之間的距離┃\n"); printf("\t\t┃e.退出┃\n"); printf("\t\t┃┃\n"); printf("\t\t┗━━━━━━━━━━━━━━━━━━━┛\n"); printf("\t\t\t\t請輸入您的選擇:"); scanf("%c",&c); if(c=='1'||c=='2'||c=='3'||c=='5'||c=='e') flag=0; }while(flag); returnc;}charSearchMenu()//查詢子菜單{ charc; intflag; do{ flag=1; system("cls"); pingmu(); introduce(); printf("\n\t\t┏━━━━━━━━━━━━━━━━━━┑\n"); printf("\t\t┃┃\n"); printf("\t\t┃1、按照景點(diǎn)編號查詢┃\n"); printf("\t\t┃2、按照景點(diǎn)名稱查詢┃\n"); printf("\t\t┃e、返回┃\n"); printf("\t\t┃┃\n"); printf("\t\t┗━━━━━━━━━━━━━━━━━━┛\n"); printf("\t\t\t請輸入您的選擇:"); scanf("%c",&c); if(c=='1'||c=='2'||c=='e') flag=0; }while(flag); returnc;}查詢子菜單charSearchMenu()//查詢子菜單{ charc; intflag; do{ flag=1; system("cls"); pingmu(); introduce(); printf("\n\t\t┏━━━━━━━━━━━━━━━━━━┑\n"); printf("\t\t┃┃\n"); printf("\t\t┃1、按照景點(diǎn)編號查詢┃\n"); printf("\t\t┃2、按照景點(diǎn)名稱查詢┃\n"); printf("\t\t┃e、返回┃\n"); printf("\t\t┃┃\n"); printf("\t\t┗━━━━━━━━━━━━━━━━━━┛\n"); printf("\t\t\t請輸入您的選擇:"); scanf("%c",&c); if(c=='1'||c=='2'||c=='e') flag=0; }while(flag); returnc;}查詢景點(diǎn)信息voidsearch()//查詢景點(diǎn)信息{ intnum; inti; charc; charname[20]; do { system("cls"); c=SearchMenu(); switch(c) { case'1': system("cls"); introduce(); pingmu(); printf("\n\n\t\t請輸入您要查找的景點(diǎn)編號:"); scanf("%d",&num); for(i=0;i<NUM;i++) { if(num==G.vex[i].number) { printf("\n\n\t\t\t您要查找景點(diǎn)信息如下:"); printf("\n\n\t\t\t%-25s\n\n",G.vex[i].description); printf("\n\t\t\t按任回車返回..."); getchar(); getchar(); break; } } if(i==NUM) { printf("\n\n\t\t\t沒有找到!"); printf("\n\n\t\t\t按回車鍵返回..."); getchar(); getchar(); } break; case'2': system("cls"); pingmu(); introduce(); printf("\n\n\t\t請輸入您要查找的景點(diǎn)名稱:"); scanf("%s",name); for(i=1;i<NUM;i++) { if(!strcmp(name, G.vex[i].sight)) { printf("\n\n\t\t\t您要查找景點(diǎn)信息如下:"); printf("\n\n\t\t\t%-25s\n\n",G.vex[i].description); printf("\n\t\t\t按回車鍵返回..."); getchar(); getchar(); break; } } if(i==NUM) { printf("\n\n\t\t\t沒有找到!"); printf("\n\n\t\t\t按回車鍵返回..."); getchar(); getchar(); } break; } }while(c!='e');}創(chuàng)建圖的函數(shù)voidCreateUDN(intv,inta)//創(chuàng)建圖的函數(shù)用來創(chuàng)建圖。打印出鄰接矩陣voidPrintMGraph(){ inti,j; cout<<"\n====================================================================\n\n"; for(i=1;i<G.vexnum;++i) { cout<<G.vex[i].sight<<""; } cout<<endl; for(i=1;i<G.vexnum;++i) { cout<<"\n\n"<<G.vex[i].sight<<""; for(j=1;j<G.vexnum;++j) { if(G.arcs[i][j].adj==Max) cout<<"no"; else cout<<""<<G.arcs[i][j].adj; } } cout<<"\n\n\n\n==========================================================================================\n\n\n";}7.迪杰斯特拉算法voidShortestPath(intnum)//迪杰斯特拉算法最短路徑函數(shù)num為入口點(diǎn)的編號{ intv,w,i,t;//i、w和v為計(jì)數(shù)變量 intfinal[NUM]; intmin; for(v=1;v<NUM;v++) { final[v]=0;//假設(shè)從頂點(diǎn)num到頂點(diǎn)v沒有最短路徑 D[v]=G.arcs[num][v].adj;//將與之相關(guān)的權(quán)值放入D中存放 for(w=1;w<NUM;w++)//設(shè)置為空路徑 P[v][w]=0; if(D[v]<32767)//存在路徑 { P[v][num]=1;//存在標(biāo)志置為一 P[v][v]=1;//自身到自身 } } D[num]=0; final[num]=1;//初始化num頂點(diǎn)屬于S集合 //開始主循環(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(!final[w])//w頂點(diǎn)在v-s中 if(D[w]<min)//w頂點(diǎn)離num頂點(diǎn)更近 { v=w; min=D[w]; } final[v]=1;//離num頂點(diǎn)更近的v加入到s集合 for(w=1;w<NUM;++w)//更新當(dāng)前最短路徑極其距離 if(!final[w]&&((min+G.arcs[v][w].adj)<D[w]))//不在s集合,并且比以前所找到的路徑都短就更新當(dāng)前路徑// { D[w]=min+G.arcs[v][w].adj; for(t=0;t<NUM;t++) P[w][t]=P[v][t]; P[w][w]=1; } }}8、輸出:屏幕輸出函數(shù):voidpingmu();最短路線輸出函數(shù)voidoutput;3.3各模塊之間的調(diào)用關(guān)系模塊調(diào)用關(guān)系如圖3—2所示:mainmainCreateUDNmenusearchShortestPathoutputPrintMGraphpingmusearchmenu圖3—2模塊調(diào)用關(guān)系圖3.4源程序代碼#include<iostream.h>#include"string.h"#include"stdio.h"#include"stdlib.h"#defineMax32767#defineNUM11typedefstructArcCell{ intadj;//相鄰接的景點(diǎn)之間的路程 char*info;}ArcCell;//定義邊的類型typedefstructVertexType{ intnumber;//景點(diǎn)編號 char*sight;//景點(diǎn)名稱 char*description;//景點(diǎn)描述}VertexType;//定義頂點(diǎn)的類型typedefstruct{ VertexTypevex[NUM];//圖中的頂點(diǎn),即為景點(diǎn) ArcCellarcs[NUM][NUM];//圖中的邊,即為景點(diǎn)間的距離 intvexnum,arcnum;//頂點(diǎn)數(shù),邊數(shù)}MGraph;//定義圖的類型MGraphG;//把圖定義為全局變量intP[NUM][NUM];////longintD[NUM];//輔助變量存儲最短路徑長度intx[13]={0};voidCreateUDN(intv,inta);//創(chuàng)建圖的函數(shù)voidpingmu();//屏幕輸出函數(shù)voidintroduce();voidShortestPath(intnum);//最短路徑函數(shù)voidoutput(intsight1,intsight2);//輸出函數(shù)voidPrintMGraph();charMenu();//主菜單voidsearch();;//查詢景點(diǎn)信息charSearchMenu();//查詢子菜單voidNextValue(int);voiddisplay();//顯示遍歷結(jié)果voidmain()//主函數(shù){ intv0,v1; charck; system("color1e"); CreateUDN(NUM,11); do { ck=Menu(); switch(ck) { case'1': introduce(); printf("\n\n\t\t\t%-25s\n\n",G.vex[0].description); getchar(); getchar(); break; case'2': system("cls"); pingmu(); printf("\n\n\t\t\t請選擇起點(diǎn)景點(diǎn)(1~10):"); scanf("%d",&v0); printf("\t\t\t請選擇終點(diǎn)景點(diǎn)(1~10):"); scanf("%d",&v1); ShortestPath(v0);//計(jì)算兩個(gè)景點(diǎn)之間的最短路徑 output(v0,v1);//輸出結(jié)果 printf("\n\n\t\t\t\t請按回車鍵繼續(xù)...\n"); getchar(); getchar(); break; case'3':search(); break; case'5': PrintMGraph(); printf("\n\n\t\t\t\t請按回車鍵繼續(xù)...\n"); getchar(); getchar(); break; }; }while(ck!='e');}charMenu()//主菜單//{ charc; intflag; do{ flag=1; system("cls"); pingmu(); introduce(); printf("\n\t\t┏━━━━━━━━━━━━━━━━━━━┑\n"); printf("\t\t┃┃\n"); printf("\t\t┃1.東南大學(xué)簡介┃\n"); printf("\t\t┃2.查詢景點(diǎn)路徑┃\n"); printf("\t\t┃3.查詢景點(diǎn)信息┃\n"); printf("\t\t┃5.查詢各景點(diǎn)之間的距離┃\n"); printf("\t\t┃e.退出┃\n"); printf("\t\t┃┃\n"); printf("\t\t┗━━━━━━━━━━━━━━━━━━━┛\n"); printf("\t\t\t\t請輸入您的選擇:"); scanf("%c",&c); if(c=='1'||c=='2'||c=='3'||c=='5'||c=='e') flag=0; }while(flag); returnc;}charSearchMenu()//查詢子菜單{ charc; intflag; do{ flag=1; system("cls"); pingmu(); introduce(); printf("\n\t\t┏━━━━━━━━━━━━━━━━━━┑\n"); printf("\t\t┃┃\n"); printf("\t\t┃1、按照景點(diǎn)編號查詢┃\n"); printf("\t\t┃2、按照景點(diǎn)名稱查詢┃\n"); printf("\t\t┃e、返回┃\n"); printf("\t\t┃┃\n"); printf("\t\t┗━━━━━━━━━━━━━━━━━━┛\n"); printf("\t\t\t請輸入您的選擇:"); scanf("%c",&c); if(c=='1'||c=='2'||c=='e') flag=0; }while(flag); returnc;}voidsearch()//查詢景點(diǎn)信息{ intnum; inti; charc; charname[20]; do { system("cls"); c=SearchMenu(); switch(c) { case'1': system("cls"); introduce(); pingmu(); printf("\n\n\t\t請輸入您要查找的景點(diǎn)編號:"); scanf("%d",&num); for(i=0;i<NUM;i++) { if(num==G.vex[i].number) { printf("\n\n\t\t\t您要查找景點(diǎn)信息如下:"); printf("\n\n\t\t\t%-25s\n\n",G.vex[i].description); printf("\n\t\t\t按任回車返回..."); getchar(); getchar(); break; } } if(i==NUM) { printf("\n\n\t\t\t沒有找到!"); printf("\n\n\t\t\t按回車鍵返回..."); getchar(); getchar(); } break; case'2': system("cls"); pingmu(); introduce(); printf("\n\n\t\t請輸入您要查找的景點(diǎn)名稱:"); scanf("%s",name); for(i=1;i<NUM;i++) { if(!strcmp(name, G.vex[i].sight)) { printf("\n\n\t\t\t您要查找景點(diǎn)信息如下:"); printf("\n\n\t\t\t%-25s\n\n",G.vex[i].description); printf("\n\t\t\t按回車鍵返回..."); getchar(); getchar(); break; } } if(i==NUM) { printf("\n\n\t\t\t沒有找到!"); printf("\n\n\t\t\t按回車鍵返回..."); getchar(); getchar(); } break; } }while(c!='e');}voidCreateUDN(intv,inta)//創(chuàng)建圖的函數(shù){ inti,j; G.vexnum=v;//初始化結(jié)構(gòu)中的景點(diǎn)數(shù)和邊數(shù) G.arcnum=a; for(i=1;i<G.vexnum;++i)G.vex[i].number=i;//初始化每一個(gè)景點(diǎn)的編號 //初始化每一個(gè)景點(diǎn)名及其景點(diǎn)描述 G.vex[0].sight="東南大學(xué)簡介"; G.vex[1].sight="東南大學(xué)校門"; G.vex[2].sight="大禮堂"; G.vex[3].sight="圖書館"; G.vex[4].sight="吳健雄紀(jì)念館"; G.vex[5].sight="健雄院"; G.vex[6].sight="李文正樓"; G.vex[7].sight="體育館"; G.vex[8].sight="李瑞清塑像"; G.vex[9].sight="六朝松"; G.vex[10].sight="梅庵"; //這里把所有的邊假定為32767,含義是這兩個(gè)景點(diǎn)之間是不可到達(dá) for(i=1;i<G.vexnum;++i) { for(j=1;j<G.vexnum;++j) { G.arcs[i][j].adj=Max; G.arcs[i][j].info=NULL; } } //下邊是可直接到達(dá)的景點(diǎn)間的距離,由于兩個(gè)景點(diǎn)間距離是互相的, //所以要對圖中對稱的邊同時(shí)賦值。 G.arcs[1][2].adj=G.arcs[2][1].adj=277; G.arcs[1][3].adj=G.arcs[3][1].adj=116; G.arcs[1][4].adj=G.arcs[4][1].adj=264; G.arcs[1][5].adj=G.arcs[5][1].adj=310; G.arcs[1][6].adj=G.arcs[6][1].adj=567; G.arcs[1][7].adj=G.arcs[7][1].adj=557;G.arcs[1][8].adj=G.arcs[8][1].adj=593;G.arcs[1][9].adj=G.arcs[9][1].adj=613;G.arcs[1][10].adj=G.arcs[10][1].adj=814;G.arcs[2][3].adj=G.arcs[3][2].adj=172;G.arcs[2][4].adj=G.arcs[4][2].adj=127;G.arcs[2][5].adj=G.arcs[5][2].adj=194;G.arcs[2][6].adj=G.arcs[6][2].adj=310;G.arcs[2][7].adj=G.arcs[7][2].adj=385;G.arcs[2][8].adj=G.arcs[8][2].adj=392;G.arcs[2][9].adj=G.arcs[9][2].adj=406;G.arcs[2][10].adj=G.arcs[10][2].adj=653;G.arcs[3][4].adj=G.arcs[4][3].adj=159;G.arcs[3][5].adj=G.arcs[5][3].adj=205;G.arcs[3][6].adj=G.arcs[6][3].adj=462;G.arcs[3][7].adj=G.arcs[7][3].adj=440;G.arcs[3][8].adj=G.arcs[8][3].adj=465;G.arcs[3][9].adj=G.arcs[9][3].adj=471;G.arcs[3][10].adj=G.arcs[10][3].adj=682;G.arcs[4][5].adj=G.arcs[5][4].adj=206;G.arcs[4][6].adj=G.arcs[6][4].adj=362;G.arcs[4][7].adj=G.arcs[7][4].adj=282;G.arcs[4][8].adj=G.arcs[8][4].adj=307;G.arcs[4][9].adj=G.arcs[9][4].adj=312;G.arcs[4][10].adj=G.arcs[10][4].adj=524;G.arcs[5][6].adj=G.arcs[6][5].adj=430;G.arcs[5][7].adj=G.arcs[7][5].adj=490;G.arcs[5][8].adj=G.arcs[8][5].adj=515;G.arcs[5][9].adj=G.arcs[9][5].adj=520;G.arcs[5][10].adj=G.arcs[10][5].adj=732;G.arcs[6][7].adj=G.arcs[7][6].adj=283;G.arcs[6][8].adj=G.arcs[8][6].adj=249;G.arcs[6][9].adj=G.arcs[9][6].adj=254;G.arcs[6][10].adj=G.arcs[10][6].adj=310;G.arcs[7][8].adj=G.arcs[8][7].adj=33;G.arcs[7][9].adj=G.arcs[9][7].adj=210;G.arcs[7][10].adj=G.arcs[10][7].adj=436;G.arcs[8][9].adj=G.arcs[9][8].adj=30;G.arcs[8][10].adj=G.arcs[10][8].adj=156;G.arcs[9][10].adj=G.arcs[10][9].adj=65;}//打印出鄰接矩陣voidPrintMGraph(){ inti,j; cout<<"\n====================================================================\n\n"; for(i=1;i<G.vexnum;++i) { cout<<G.vex[i].sight<<""; } cout<<endl; for(i=1;i<G.vexnum;++i) { cout<<"\n\n"<<G.vex[i].sight<<""; for(j=1;j<G.vexnum;++j) { if(G.arcs[i][j].adj==Max) cout<<"no"; else cout<<""<<G.arcs[i][j].adj; } } cout<<"\n\n\n\n==========================================================================================\n\n\n";}voidintroduce()//介紹函數(shù){ inti; for(i=1;i<=NUM;i++) { G.vex[0].description="東南大學(xué)是中央直管、教育部直屬的全國重點(diǎn)大學(xué)。坐落\n\n\t\t于歷史文化名城--南京,素有“學(xué)府圣地”和“東南學(xué)府第一流”\n\n\t\t之美譽(yù)。經(jīng)過一百多年的創(chuàng)業(yè)發(fā)展,如今的東南大學(xué)已成為一所以\n\n\t\t工科為主要特色,理學(xué)、工學(xué)、醫(yī)學(xué)、文學(xué)、法學(xué)、哲學(xué)、教育學(xué)\n\n\t\t、經(jīng)濟(jì)學(xué)、管理學(xué)、藝術(shù)學(xué)等多學(xué)科協(xié)調(diào)發(fā)展的綜合性、研究型大\n\n\t\t學(xué)。在長期的辦學(xué)實(shí)踐中,東南大學(xué)堅(jiān)持“育人為本”的辦學(xué)理念\n\n\t\t,不斷加大教學(xué)投入,深化教育教學(xué)改革,努力推進(jìn)素質(zhì)教育,著\n\n\t\t力培養(yǎng)學(xué)生的創(chuàng)新精神和實(shí)踐能力。東南大學(xué)是我國具有較大國際\n\n\t\t影響的大學(xué)之一,改革開放以來,國際交流活動(dòng)更加活躍。\n\n\t\t下面幾點(diǎn)是東南大學(xué)的辦學(xué)特色:\n\n\t\t辦學(xué)歷史悠久,具有優(yōu)良深厚的歷史傳統(tǒng)\n\n\t\t注重學(xué)科專業(yè)建設(shè),優(yōu)質(zhì)教學(xué)資源豐富\n\n\t\t教學(xué)成果較為豐碩,科研水平不斷提高\(yùn)n\n\t\t注重教學(xué)改革,培養(yǎng)模式比較先進(jìn)\n\n\t\t實(shí)行比較靈活的學(xué)分制和彈性學(xué)制\n\n\t\t學(xué)生擁有更多的選擇權(quán)和選擇空間\n\n\t\t重視優(yōu)秀學(xué)生的培養(yǎng)教育\n\n\t\t國際合作交流日趨頻繁\n\n\t\t"; G.vex[1].description="現(xiàn)存的東南大學(xué)校門(正門),又稱南大門,是\n\n\t\t校園的主要出入口。門樓由楊廷寶先生設(shè)計(jì)建于1933年門\n\n\t\t樓由三開間的四組方柱和梁枋組成,外形采用簡化的西方\n\n\t\t古典建筑式樣,簡潔大方。"; G.vex[2].description="大禮堂造型莊嚴(yán)雄偉,屬西方古典建筑風(fēng)格。\n\n\t\t正立面用愛奧尼柱式與山花構(gòu)圖,上覆歐洲文藝復(fù)興時(shí)\n\n\t\t代的銅質(zhì)大穹窿頂,頂高34米。堂內(nèi)三層,面積共4320\n\n\t\t平方米,可容2700余人。1965年添建兩翼,2544平方米\n\n\t\t。數(shù)十年來,海內(nèi)外校友均視禮堂為母校之象征。"; G.vex[3].description="即孟芳圖書館。1921年,東南大學(xué)成立時(shí)向社會募\n\n\t\t捐圖書館經(jīng)費(fèi),經(jīng)校長郭秉文奔走,終獲江蘇督軍齊燮元捐\n\n\t\t助,獨(dú)資建館并置配套設(shè)備。1922年立基,1923年落成,耗\n\n\t\t資16萬銀元。建成后,以齊父之名命名為孟芳圖書館。張謇\n\n\t\t題匾。其兩翼及書庫,系1933年擴(kuò)建,總面積3813平方米。\n\n\t\t圖書館建筑造型為西方古典建筑風(fēng)格,比例勻稱,構(gòu)圖穩(wěn)實(shí)\n\n\t\t,風(fēng)格雋雅,入口愛奧尼柱廊及墻面裝飾細(xì)部極為精美,是\n\n\t\t國內(nèi)近代建筑的優(yōu)秀作品。"; G.vex[4].description="吳健雄(1912-1997),舉世聞名的杰出女性物理\n\n\t\t學(xué)家、世界物理學(xué)界的傳奇人物,被譽(yù)為“核子物理女皇”\n\n\t\t、“中國的居里夫人”。2002年5月31日,在這位女科學(xué)家\n\n\t\t誕辰90周年之際,東南大學(xué)舉行了隆重的開館儀式。吳健雄\n\n\t\t紀(jì)念館建于東南大學(xué)大禮堂西南側(cè),總投資約2000萬元,整\n\n\t\t體4層,地下一層,建筑面積為2129平方米。紀(jì)念館造型莊\n\n\t\t重樸實(shí)、簡潔明快。紀(jì)念館不僅展示了吳建雄的生平業(yè)績,\n\n\t\t而且陳列了由吳健雄親屬和美國哥倫比亞大學(xué)捐贈(zèng)的大批遺\n\n\t\t物,包括吳健雄生前所獲得的獎(jiǎng)?wù)?、?jiǎng)狀、證書、聘書,有\(zhòng)n\n\t\t關(guān)文件、書籍,友人贈(zèng)送的書畫、物品以及吳健雄和其丈夫\n\n\t\t袁家騮先生生前的日常生活用品等。"; G.vex[5].description="曾名口字房、科學(xué)館、江南院??谧址渴冀ㄓ赲n\n\t\t1909年,樓二層,作辦公室、圖書館、實(shí)驗(yàn)室用。1923\n\n\t\t年毀于火災(zāi)。后得美國洛克菲勒基金會捐助,于口字房\n\n\t\t原址合資興建科學(xué)館。1924年破土,1927年建成,面積\n\n\t\t5234平方米,為培養(yǎng)理科人才重要基地。數(shù)十年來,師\n\n\t\t生中僅擔(dān)任中國科學(xué)院副院長的便有竺可楨、吳有訓(xùn)、\n\n\t\t嚴(yán)濟(jì)慈、李四光、童第周等5位。美國科學(xué)院院士訓(xùn)、\n\n\t\t吳健雄亦曾就讀于此。1952年院系調(diào)整,成立南京工學(xué)\n\n\t\t院后,為紀(jì)念并入部分系科的江南大學(xué),科學(xué)館更名江\n\n\t\t南院。1992年學(xué)校九十華誕,更名為健雄院?,F(xiàn)為信息\n\n\t\t科學(xué)與工程學(xué)院所在地。"; G.vex[6].description="李文正樓,我校杰出校友、著名實(shí)業(yè)家、印尼\n\n\t\t力寶集團(tuán)董事長李文正博士出資捐建??⒐び?004年。\n\n\t\t由我國著名建筑大師、中國科學(xué)院院士齊康教授設(shè)計(jì)。\n\n\t\t位于校園北端,遙對雞鳴寺,與校南大門、大禮堂同一\n\n\t\t軸線。大樓總建筑面積29597平方米。造型美觀,氣勢恢\n\n\t\t宏,是四牌樓校區(qū)最新的標(biāo)志性建筑。該樓目前主要作\n\n\t\t為我校電子信息等學(xué)科的教學(xué)、科研和實(shí)驗(yàn)之用。丁肇\n\n\t\t中教授領(lǐng)銜的AMS研究中心及中國工程院韋鈺院士領(lǐng)\n\n\t\t導(dǎo)的學(xué)習(xí)科學(xué)研究中心均坐落于樓內(nèi)。該樓的建成,將\n\n\t\t極大地推動(dòng)我校宇宙探測、信息電子等學(xué)科的發(fā)展。"; G.vex[7].description="20年代中國大學(xué)最著名的體育館之一。1921年\n\n\t\t郭秉文主政東南大學(xué)時(shí)籌建,1922年立基,1923年落成\n\n\t\t。面積2317平方米。該主樓耗資6萬銀元,游泳池及配\n\n\t\t套設(shè)備4萬銀元,堪稱當(dāng)時(shí)國內(nèi)高校之最。體育館建成\n\n\t\t后,不僅作為體育健身之所,亦為集會、講學(xué)之處。英\n\n\t\t國哲學(xué)家羅素、美國教育家杜威、印度詩人泰戈?duì)柕?,\n\n\t\t均曾在此作過講演。"; G.vex[8].description="李瑞清(1869-1920),字仲麟,號梅庵,兩江師范學(xué)\n\n\t\t堂監(jiān)督,是我國近代著名的教育家、美術(shù)家、書法\n\n\t\t家。2002年東南大學(xué)建校100周年之際,為紀(jì)念這位中國美\n\n\t\t術(shù)教育的先行者、東南大學(xué)創(chuàng)辦者,特邀南京大學(xué)教授\n\n\t\t、東南大學(xué)藝術(shù)學(xué)系兼職教授吳為山塑銅像一尊。該塑像\n\n\t\t現(xiàn)豎立于梅庵斜對面的草坪之上。"; G.vex[9].description="高9.58米,圍2.65米,古勁蒼籠。該樹本為柏\n\n\t\t檜,因傳為六朝遺株,故稱六朝松。六朝松矗立在東南\n\n\t\t大學(xué)校園西北隅的梅庵之旁。主干筆挺,外皮斑駁,象\n\n\t\t一個(gè)歷經(jīng)滄桑、飽經(jīng)憂患的老者;枝干遒勁,蔥郁蒼翠\n\n\t\t,更象一個(gè)雄姿英發(fā)的年輕勇士。六朝松現(xiàn)已成為南京市\(zhòng)n\n\t\t一著名景點(diǎn)。"; G.vex[10].description="李瑞清,號梅庵,兩江師范學(xué)堂監(jiān)督,是我國\n\n\t\t近代著名的教育家、美術(shù)家、書法家。1916年南京高等\n\n\t\t師范學(xué)校校長江謙為紀(jì)念李瑞清,于六朝松畔,以帶皮\n\n\t\t松木為梁架,建茅屋3間,取名“梅庵”,風(fēng)貌古樸。\n\n\t\t1933年改建為磚混結(jié)構(gòu),面積204平方米,由史學(xué)大師柳\n\n\t\t詒徵書匾。梅庵于20年代曾是會議、講習(xí)場所。梁啟超\n\n\t\t、胡適之曾在此開講論學(xué)。梅庵亦為當(dāng)年共產(chǎn)黨、社會\n\n\t\t主義青年團(tuán)經(jīng)常活動(dòng)之地。1921年7月,惲代英在此召\n\n\t\t開少年中國學(xué)會年會。1923年8月,有瞿秋白、鄧中夏\n\n\t\t等參加的中國社會主義青年團(tuán)第二次全國代表大會亦在\n\n\t\t此舉行。中央大學(xué)期間,曾為音樂系琴房,亦稱音樂館\n\n\t\t?,F(xiàn)為藝術(shù)學(xué)院所在地。"; }}voidpingmu()//屏幕輸出函數(shù){ inti; printf("\n\n\t\t%c%c%c%c%c%c%c%c%c%c%c歡迎來到南京東南大學(xué)%c%c%c%c%c%c%c%c%c%c\n\n",6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6); printf("\t\t%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3); printf("\t\t%c\t\t學(xué)校簡介\t\t%c\n",1,1); printf("\t\t%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3); printf("\t\t%c\t\t學(xué)校概況\t\t%c\n",6,6); printf("\t\t%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3); for(i=1;i<NUM;i++) { printf("\t\t%c\t\t(%2d)%-20s%c\t\t\t",1,i,G.vex[i].sight,1);//輸出景點(diǎn)列表 } printf("\t\t%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%c\n\n",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,6,6,6,6,1);}voidShortestPath(intnum)//迪杰斯特拉算法最短路徑函數(shù)num為入口點(diǎn)的編號{ intv,w,i,t;//i、w和v為計(jì)數(shù)變量 intfinal[NUM]; intmin; for(v=1;v<NUM;v++) { final[v]=0;//假設(shè)從頂點(diǎn)num到頂點(diǎn)v沒有最短路徑 D[v]=G.arcs[num][v].adj;//將與之相關(guān)的權(quán)值放入D中存放 for(w=1;w<NUM;w++)//設(shè)置為空路徑 P[v][w]=0; if(D[v]<32767)//存在路徑 { P[v][num]=1;//存在標(biāo)志置為一 P[v][v]=1;//自身到自身 } } D[num]=0; final[num]=1;//初始化num頂點(diǎn)屬于S集合 //開始主循環(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(!final[w])//w頂點(diǎn)在v-s中 if(D[w]<min)//w頂點(diǎn)離num頂點(diǎn)更近 { v=w; min=D[w]; } final[v]=1;//離num頂點(diǎn)更近的v加入到s集合 for(w=1;w<NUM;++w)//更新當(dāng)前最短路徑極其距離 if(!final[w]&&((min+G.arcs[v][w].adj)<D[w]))//不在s集合,并且比以前所找到的路徑都短就更新當(dāng)前路徑// { D[w]=min+G.arcs[v][w].adj; for(t=0;t<NUM;t++) P[w][t]=P[v][t]; P[w][w]=1; } }}voidoutput(intsight1,intsight2)//輸出函數(shù){ int

溫馨提示

  • 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

提交評論