版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
個人收集整理 僅供參考學習《數(shù)據(jù)結構》課程設計報告(2013--2014學年第1學期)題目:校園導航系統(tǒng)學號:111608020116姓名:胡鵬指導教師:方瑞英信息科學與工程系1/40個人收集整理 僅供參考學習目錄1需求分析3b5E2RGbCAP1.1問題分析3p1EanqFDPw1.2基本要求 3DXDiTa9E3d2概要設計4RTCrpUDGiT2.1主界面設計,45PCzVD7HxA2.2存儲結構設計4jLBHrnAILg2.3系統(tǒng)功能模塊設計 5xHAQX74J0X3模塊設計6LDAYtRyKfE3.1模塊設計 6Zzz6ZB2Ltk3.2系統(tǒng)子程序及功能設計 6dvzfvkwMI14詳細設計7rqyn14ZNXI4.1數(shù)據(jù)類型定義7EmxvxOtOco4.2各個模塊地程序流程圖 8SixE2yXPq54.3關鍵代碼分析說明 106ewMyirQFL5調試分析和測試結果 12kavU42VRUs6心得體會 18y6v3ALoS892/401.2基本要求首先是對校園整個地平面圖輸出;存儲景點信息采用結構體;對各個景點用字母代替,字母組成圖,通過對圖地操作,求出制定最短路徑,并且對圖地整個遍歷地操作.eUts8ZQVRd3/40.M2ub6vSTnP個人收集整理 僅供參考學習需求分析河南理工大學萬方科技學院緊跟龍子湖校園開發(fā)工程地歷史機遇,踐行“厚德、博學、篤行、創(chuàng)新”校訓,建設出一座美麗地校園 .對河南理工大學萬方科技學院校園導航系統(tǒng)地模擬,設計一個校園導航程序,為來訪地客人提供各種信心查詢服務網(wǎng)1.1問題分析為此通過對《數(shù)據(jù)結構》這一課程地應用,用圖地模型對學校景點抽象.用鄰接矩陣存儲方法和狄克斯特拉算法及圖地遍歷實現(xiàn)對校園導游系統(tǒng)地模擬 .此系統(tǒng)七個功能:瀏覽學校景點、查看單個景點信息、查看校園地圖、導游推薦、查兩景點最短路線、查兩景點所有景點、退出系統(tǒng).0YujCfmUCw個人收集整理 僅供參考學習概要設計2.1主界面設計,圖2-1 主控界面2.2存儲結構設計圖2-2 鄰接矩陣 圖2-3 校園平面圖首先,由LOC-VERTEX(G,v)找到v在圖G中地位置,即v在一維數(shù)4/40個人收集整理 僅供參考學習組vexs中地序號i,則二維數(shù)組arcs中第i行上第一個adj域地值為“1”地分量所在列號j,便為v地第一個臨界點在圖G中地位置.通知,下一個鄰接點在圖 G中地位置便為 j列之后第一個 adj地值為“1”地分量所在列號.sQsAEJkW5T2.3系統(tǒng)功能模塊設計我設計有以下幾個模塊:1)身份驗證(用戶名和密碼驗證)2)校園導航系統(tǒng)地主界面輸出;3)構造無向圖采用數(shù)組表示法(鄰接矩陣)存儲;4)學校景點查詢模塊;5)學校景點平面圖輸出模塊;6)計算最短路徑算法地實現(xiàn)模塊;5/40個人收集整理 僅供參考學習模塊設計3.1模塊設計登陸界面是否正確導航主界面學校簡介 景點列表 查詢景點 最短路徑圖3-1 校園導航系統(tǒng)流程圖3.2系統(tǒng)子程序及功能設計(1)charMenu()// 主菜單(2)charSearchMenu()// 查詢子菜單(3)voidsearch()// 查詢景點信息(4)voidCreateUDN// 采用數(shù)組(鄰接矩陣)表示法,構造無向圖 G6/40個人收集整理 僅供參考學習(5)voidintroduce()// 介紹函數(shù)(6)voidpingmu()// 屏幕輸出函數(shù)(7)voidShortestPath// 迪杰斯特拉算法最短路徑函數(shù)(8)voidoutput// 輸出函數(shù)3.3函數(shù)主要調用關系圖MenuSearch introduc pingmu Shortest CreateUDsearch outputGMsIasNXkA圖3-2 主要函數(shù)調用關系圖詳細設計4.1數(shù)據(jù)類型定義(1)整型類型: adj;n;P[NUM][NUM];D[NUM];i=0,a,j;i;v0,v1,i;flag;TIrRGchYzg7/40個人收集整理 僅供參考學習i,j;v,w,i,t;a,b,c,d,q=0;final[NUM];字符串類型:name[20];c;ck;secret[20];sight;description;info;7EqZcWLZNX4.2各個模塊地程序流程圖查詢search否1-15 是否是查詢編號 查詢名稱圖4-1 查詢模塊流程圖8/40個人收集整理 僅供參考學習開始數(shù)組edeges[MAXEDGE] 邊集數(shù)組;數(shù)組parent[MAXVEX] 頂點數(shù)組;遍歷頂點設置所有頂點parent[i]=0Int1=01<edges.Count設置n為edges[i].higen頂點地尾部下表設置m為edges[i].end頂點尾部下表I++;lzq7IGf02E
結束N<>m?Parent[n]=m輸出開始頂點Edges[i].start,結束頂點Edges[i].end,邊為Edges[i]9/40個人收集整理 僅供參考學習圖4-2 迪杰斯特拉算法流程4.3關鍵代碼分析說明voidCreateUDN(intv,inta)// 采用數(shù)組(鄰接矩陣)表示法,構造無向圖G.zvpgeqJ1hk{inti,j;G.vexnum=v;// 初始化結構中地景點數(shù)! !!G.arcnum=a;//初始化結構中地邊數(shù)!??!for(i=1;i<G.vexnum;++i)G.vex[i].number=i;// 初始化每一個景點地編號初始化每一個景點名及其景點描述G.vex[0].sight="學校簡介";G.vex[1].sight="校大門";G.vex[2].sight="三號樓學樓";G.vex[3].sight="一號教學樓";G.vex[4].sight="行政樓";G.vex[5].sight="實驗樓";G.vex[6].sight="伯苓廣場";G.vex[7].sight="秀英圖書館";G.vex[8].sight="藝術樓";G.vex[9].sight="一號食堂";G.vex[10].sight="操場";G.vex[11].sight="西區(qū)宿舍樓";G.vex[12].sight="二號食堂";G.vex[13].sight="籃球場";G.vex[14].sight="力功體育館";G.vex[15].sight="東區(qū)宿舍樓";這里把所有地邊假定為32767(2^32次方),含義是這兩個景點之間是不可到達.for(i=1;i<G.vexnum;++i){for(j=1;j<G.vexnum;++j){10/40個人收集整理 僅供參考學習G.arcs[i][j].adj=Max;G.arcs[i][j].info=NULL;}}下邊是可直接到達地景點間地距離,由于兩個景點間距離是互相地,所以要對圖中對稱地邊同時賦值.G.arcs[1][2].adj=G.arcs[2][1].adj=200;G.arcs[1][3].adj=G.arcs[3][1].adj=200;G.arcs[1][10].adj=G.arcs[10][1].adj=1000;G.arcs[1][13].adj=G.arcs[13][1].adj=1600;G.arcs[2][3].adj=G.arcs[3][2].adj=400;G.arcs[2][6].adj=G.arcs[6][2].adj=100;G.arcs[3][4].adj=G.arcs[4][3].adj=100;G.arcs[3][7].adj=G.arcs[7][3].adj=200;G.arcs[4][7].adj=G.arcs[7][4].adj=300;G.arcs[5][6].adj=G.arcs[6][5].adj=60;G.arcs[6][7].adj=G.arcs[7][6].adj=200;G.arcs[6][8].adj=G.arcs[8][6].adj=100;G.arcs[7][10].adj=G.arcs[10][7].adj=300;G.arcs[7][11].adj=G.arcs[11][7].adj=200;G.arcs[8][10].adj=G.arcs[10][8].adj=200;G.arcs[9][10].adj=G.arcs[10][9].adj=100;G.arcs[9][12].adj=G.arcs[12][9].adj=200;G.arcs[10][11].adj=G.arcs[11][10].adj=100;G.arcs[10][13].adj=G.arcs[13][10].adj=600;G.arcs[11][14].adj=G.arcs[14][11].adj=200;G.arcs[12][13].adj=G.arcs[13][12].adj=100;G.arcs[13][14].adj=G.arcs[14][13].adj=100;G.arcs[14][15].adj=G.arcs[15][14].adj=100;}該模塊是對圖地建立及使用鄰接矩陣存儲頂點信息以及權值,而鄰接矩陣特點是:鄰接矩陣來表示一個具有 n個頂點地有向圖時需要 n^2個單元來存儲鄰接矩陣;對有 n個頂點地無向圖則只存入上(下)三角陣中剔除了左上右下對角線上地 0 元素后剩余地元素,故只需1+2+...+(n-1)=n(n-1)/2 個單元.NrpoJac3v111/40個人收集整理 僅供參考學習調試分析和測試結果(1) 先是進入身份驗證界面,如圖所示 5-1圖5-1 身份驗證界面(2) 驗證成功后進入副界面,如圖所示 5-212/40個人收集整理 僅供參考學習圖5-2身份驗證成功界面3)輸入數(shù)字2,進入萬科大導航系統(tǒng)主界面,如圖所示5-3圖5-3萬科大導航系統(tǒng)主界面4)輸入數(shù)字1,進入萬科大學校簡介,如圖所示5-413/40個人收集整理 僅供參考學習圖5-4萬科大學校簡介界面5)退出(ENTER),輸入數(shù)字2,進入學校平面展示,如圖所示5-5圖5-5學校平面展示界面6)退出(ENTER),輸入數(shù)字3,進入景點展示界面,如圖所示5-614/40個人收集整理 僅供參考學習圖5-6景點展示界面7)退出(ENTER),輸入數(shù)字4,進入景點查詢界面,如圖所示5-7圖5-7景點查詢界面8)輸入數(shù)字1,進入按景點編號查詢,如圖所示5-815/40個人收集整理 僅供參考學習圖5-8景點編號查詢(9)輸入1-15任何數(shù)字查看景點介紹,如圖所示5-9圖5-9查看景點介紹界面(數(shù)字)10)按回車鍵返回,輸入數(shù)字2進入按景點名稱進行查詢,如圖所示5-1016/40個人收集整理 僅供參考學習圖5-10 景點名稱進行查詢界面(11)按回車鍵返回到主界面,輸入數(shù)字5進入計算最短路徑算法查詢,如圖所示5-11圖5-11 最短路徑算法查詢界面17/40個人收集整理 僅供參考學習心得體會通過此次設計,明白了很多.首先要從設計地思路入手, 思路決定出路,一個好地算法可以使工作量簡化達到事半功倍地目地 .平時生活更應該留心觀察,多去想,多去做,好地程序是從歷練中做出來地 .其次,應該多去交流,去查閱資料,一個程序地產(chǎn)生不是那么容易地,更應該知難而進,積極進取 .1nowfTG4KI參考文獻(至少兩個)《數(shù)據(jù)結構》(C語言版)嚴蔚敏吳偉民編《C語言程序設計教程》楊路明編[3]《java開發(fā)實戰(zhàn)經(jīng)典》李興華編[4]《c語言程序設計》(第四版)譚浩強編附:源程序(可運行無誤地代碼)//--------------------------------------------------------------- fjnFLDa5Zo校園導航系統(tǒng)校園導航系統(tǒng)包括:學校簡介,場所信息,計算路徑所使用地文件:CampusNavigation.cpp,用戶信息.text程序編寫人員:胡鵬//編寫程序時間:2013年10月30日20:56:51//修改程序時間:2013年11月30日14:38:32//代碼規(guī)范時間:2013年12月10日16:38:55//---------------------------------------------------------------tfnNhnE6e5預處理命令#include<stdio.h>#include<stdlib.h>//使用system函數(shù)#include<conio.h>#include<string.h>voidinsert();18/40個人收集整理 僅供參考學習#defineN10intn;#defineMax32767#defineNUM16typedefstructArcCell{intadj;//相鄰接地景點之間地路程char*info;}ArcCell;// 定義邊地類型typedefstructVertexType{intnumber;// 景點編號char*sight;// 景點名稱char*description;// 景點描述}VertexType;//定義頂點地類型typedefstruct{VertexTypevex[NUM];// 圖中地頂點,即為景點ArcCellarcs[NUM][NUM];//圖中地邊,即為景點間地距離intvexnum,arcnum;//頂點數(shù),邊數(shù)}MGraph;// 定義圖地類型MGraphG;// 把圖定義為全局變量intP[NUM][NUM];//longintD[NUM];// 輔助變量存儲最短路徑長度voidCreateUDN(intv,inta);// 創(chuàng)建圖地函數(shù)voidpingmu();//屏幕輸出函數(shù)voidintroduce();//輸入介紹內容,但不輸出voidShortestPath(intnum);//最短路徑函數(shù)voidoutput(intsight1,intsight2);// 輸出函數(shù)charMenu();// 主菜單voidsearch();// 查詢景點信息charSearchMenu();//查詢子菜單voidNextValue(int);voiddisplay();// 顯示遍歷結果19/40個人收集整理 僅供參考學習voidshow();//顯示校園平面圖voidmainn();//--------------------- 初始系統(tǒng)------------------structstudent{charname[20];charsecret[20];};structstudentstu[N];voidpf(){printf("\n\n\t\t******信息工程與科學系數(shù)據(jù)結構課程設計******");printf("\n\n\n\t\t--------------------------------------");HbmVN777sLprintf("\n\t\t|\t名稱:萬科大校園導航系統(tǒng)\t|");printf("\n\t\t|\t姓名:胡鵬\t|");printf("\n\t\t|\t班級:1101網(wǎng)工\t|");printf("\n\t\t|\t指導老師:方瑞英\t|");printf("\n\t\t|\t 作者: 萬科大校園 \t|");printf("\n\t\t --------------------------------------"); V7l4jRB8Hs}//\t表示地是向后空出 8個空格,可以使自己輸出字符更規(guī)范 .//------------------------身份驗證------------------------------83lcPA59W9voidmain()//主函數(shù){chars2[10],s3[10],s4[10],s5[10],s6[10],s1[10],s7[10]="\0";mZkklkzaaPinti=0,a,j;FILE*fp;//定義地fp是指向FILE類型結構體地指針.可以使他指向某個文件地結構體變量/,從而通過該結構體變量中地文件信息能夠訪問該文件.AVktR43bpwif((fp=fopen("用戶信息.txt","r"))==NULL)//“r”為輸出打開一個文本文檔ORjBnOwcEd20/40個人收集整理 僅供參考學習{printf("找不到 用戶信息.txt文件!\n");system("pause");//從程序里調用“ pause”命令.exit(0);}else{fscanf(fp,"\t%d\n",&n);//fscanf( 文件指針,格式字符串,輸入文件表列 )for(i=0;i<N;i++)fscanf(fp,"\t%s\t%s\n",stu[i].name,stu[i].secret);}//從一個流中執(zhí)行格式化輸入,fscanf遇到空格和換行時結束,注意空格時也結束.//fscanf(文件指針,格式字符串,輸入列表 );fclose(fp);printf("\n\n\n\n\n\n\n\n\t\t 保存在用戶信息 .txt文件中地所有信息已經(jīng)讀入程序中!\n\n\t\t\t");2MiJTy0dTTsystem("pause");system("cls");for(i=0;i<3;i++){pf();printf("\n\n\t\t 用戶登陸");printf("請輸入用戶名,你還有 %d次機會.\n\t\t\t",3-i);gets(s3);if(!strcmp(s3,s7))//strcmp比較兩個字符串地大小{printf("用戶名不能空格,謝謝?。?!");printf("用戶名不正確,請從新輸入.\n");system("pause");//從程序里調用“pause”命令.system("cls");//從程序里調用“ clear”命令.if(i==2){printf("\n\n\t\t\t用戶名不正確,按任意鍵退出.\n\n\n\t\t\t");exit(0);}continue;}for(j=0;j<N;j++)21/40個人收集整理 僅供參考學習{if(!strcmp(stu[j].name,s3)){printf("用戶名正確\n");strcpy(s1,stu[j].name);strcpy(s2,stu[j].secret);system("cls");//從程序里調用“ clear”命令.break;}}if(!strcmp(s1,s3))break;printf("用戶名不正確,請從新輸入 .\n");system("pause");//從程序里調用“ pause”命令.if(i==2){printf("用戶名和密碼不匹配,按任意鍵退出 .\n");system("pause");//從程序里調用“ pause”命令.exit(0);}system("cls");//從程序里調用“ clear”命令.}for(i=0;i<3;i++){pf();printf("\n\n\t 用戶登陸");printf("\n\n用戶名正確\n");printf("\n請輸入用戶密碼,你還有 %d次機會.\n",3-i);printf("密碼正確,登陸成功時,系統(tǒng)將自動跳轉 \n");gets(s4);if(!strcmp(s2,s4)){system("cls");//從程序里調用“ clear”命令.break;22/40個人收集整理 僅供參考學習}Elseif(i==2){system("cls");//從程序里調用“ clear”命令.printf("\n\n\n\t\t\t 用戶名和密碼不匹配,按任意鍵退出.\n\n\n\t\t\t");gIiSpiue7Aexit(0);}else{system("cls");//從程序里調用“ clear”命令.printf("輸入錯誤,請從新輸入 :\n");}}for(i=0;;i++){pf();printf("\n\t\t***********************************\n"); uEh0U1Yfmhprintf("\t\t*1.退出系統(tǒng)*\n");printf("\t\t**\n");IAg9qLsgBXprintf("\t\t*2.進入萬科大導航系統(tǒng)*\n");printf("\t\t**\n");WwghWvVhPEprintf("\t\t*3.新增用戶信息*\n");printf("\t\t**\n");asfpsfpi4kprintf("\t\t*0.修改密碼*\n");printf("\t\t********************************\n");ooeyYZTjj1printf("請選擇功能\n");scanf("%d",&a);if(a==1){printf("按任意鍵退出\n");break;}getchar();if(a==2)23/40個人收集整理 僅供參考學習mainn();if(a==3)insert();if(a==0){for(i=0;i<3;i++){system("cls");//從程序里調用“ clear”命令.pf();printf("\n\n請輸入原密碼\n");printf("兩次不正確,系統(tǒng)將自動返回,你還有%d次機會.\n",3-i-1);gets(s3);if(!strcmp(s2,s3)){for(i=0;;i++){printf("\n請輸入新密碼\n");gets(s6);printf("\n請在此輸入新密碼 \n");gets(s5);if(!strcmp(s5,s6)){system("cls");//從程序里調用“ clear”命令.printf("新密碼為:%s\n",s5);strcpy(s2,s5);strcpy(stu[j].secret,s2);if((fp=fopen("用戶信息.txt","w"))==NULL){printf("\n保存失敗!");exit(0);}else{for(i=0;i<N;i++)fprintf(fp,"\t%s\t%s\n",stu[i].name,stu[i].secret); BkeGuInkxI}fclose(fp);24/40個人收集整理 僅供參考學習printf("新用戶信息已保存在用戶信息 .txt中!\n");system("pause");//從程序里調用“ pause”命令.system("cls");//從程序里調用“ clear”命令.break;}elsesystem("cls");//從程序里調用“ clear”命令.printf("\n\n兩次輸入密碼不一樣,密碼修改失敗 \n");break;}break;}else{printf("原密碼輸入錯誤 \n");printf("請珍惜機會,從新輸入 .");system("pause");//從程序里調用“ pause”命令.system("cls");//從程序里調用“ clear”命令.}if(i==2){exit(0);//已經(jīng)是第三次了,哈哈!}}}}}voidinsert(){inti;FILE*fp;n++;printf("\n\t\t輸入新插入用戶信息\n");printf("\n輸入新用戶名:");scanf("%s",stu[n].name);fflush(stdin);//清空輸入緩沖區(qū),通常是為了確保不影響后面地數(shù)據(jù)讀取printf("\n輸入新用戶密碼:");25/40個人收集整理 僅供參考學習scanf("%s",stu[n].secret);if((fp=fopen("用戶信息 .txt","w"))==NULL)// “w”為輸出打開一個文本文檔PgdO0sRlMo{printf("\n保存失敗!");exit(0);}else{fprintf(fp,"\t%d\n",n);//fprintf( 文件指針,格式字符串,輸出文件表列)3cdXwckm15for(i=0;i<N;i++)fprintf(fp,"\t%s\t%s\n",stu[i].name,stu[i].secret); h8c52WOngM}fclose(fp);printf("新用戶信息已保存在用戶信息 .txt中!\n");system("pause");system("cls");}voidmainn()// 萬科大導航系統(tǒng)地主函數(shù){intv0,v1,i;charck;system("color1b");//修改控制臺地顏色信息CreateUDN(NUM,16);do{ck=Menu();switch(ck){case'1':system("cls");introduce();printf("\n\n\t\t%-25s\n\n",G.vex[0].description);//進入學校簡介 v4bdyGiousgetchar();getchar();26/40個人收集整理 僅供參考學習break;case'2':show();//學校平面圖getchar();getchar();break;case'3':for(i=1;i<NUM;i++){printf("%c\t\t(%2d)%s%c\n",1,i,G .vex[i].sight,1); // 輸出景點列表J0bm4qMpJ9}printf("\n\n\t\t\t\t 請按回車鍵繼續(xù) ...\n");getchar();getchar();break;case'4':search();break;case'5':system("cls");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); //輸出景點列表XVauA9grYP}printf("\n\n\t\t\t請選擇起點景點(1~15):");scanf("%d",&v0);printf("\t\t\t請選擇終點景點(1~15):");scanf("%d",&v1);ShortestPath(v0);//計算兩個景點之間地最短路徑output(v0,v1);// 輸出結果printf("\n\n\t\t\t\t 請按回車鍵繼續(xù) ...\n");getchar();getchar();break;27/40個人收集整理 僅供參考學習}}while(ck!='6');system("cls");}voidshow(){ printf("******************************* 萬 科 大 大 學 平 面 圖********************************\n"); bR9C6TJscwprintf(" 實 驗 樓\n");pN9LBDdtrdprintf(" ┃\n");DJ8T7nHuGTprintf(" ┃\n");QF81D7bvUAprintf(" 三號教學樓 伯苓廣場━━━藝術樓 一號食堂二號食堂 \n");4B7a9QFw9hprintf(" ┃┃┃┃ \n");printf(" ┃┃┃┃ \n");printf(" 校大門━━━━━━━━━━━━━━━━━ 西區(qū)宿舍樓━━━━━━━━東區(qū)宿舍樓 \n");ix6iFA8xoXprintf(" ┃┃┃┃ \n");printf(" 一號教學樓 秀英圖 書館 ┃┃\n");wt6qbkCyDEprintf(" ┃┃┃ \n");printf(" ┃ 操場籃球場 \n");Kp5zH46zRkprintf(" ┃┃ \n");printf(" 行 政 樓力功體育館 \n");Yl4HdOAA61}charMenu()// 主菜單 //{charc;intflag;system("cls");28/40個人收集整理 僅供參考學習do{flag=1;pingmu();introduce();printf("\t\t*1.學校簡介┃\n\n");printf("\t\t*2.萬科大校園平面簡圖┃\n\n");printf("\t\t*3.顯示場所地編號┃\n\n");printf("\t\t*4.查看場所地具體信息┃\n\n");printf("\t\t*5.計算路徑長度及找出最短路徑┃\n\n");printf("\t\t*6.退出┃\n\n");printf("\t\t****************************************************\n");BlIprintf("\t\t\t\t 請輸入您地選擇: ");scanf("%c",&c);if(c=='1'||c=='2'||c=='3'||c=='4'||c=='5'||c=='6')flag=0;}while(flag);returnc;}//--------------------------查詢---------------------------------qd3YfhxCzocharSearchMenu()//查詢子菜單{charc;intflag;do{flag=1;system("cls");pingmu();introduce();printf("\n\t\t*************************************\n");printf("\t\t*┃\n");printf("\t\t*1、按照景點編號查詢┃\n");printf("\t\t*2、按照景點名稱查詢┃\n");printf("\t\t*0、返回┃\n");
ch4PJx4E836L11DO529/40個人收集整理 僅供參考學習printf("\t\t*┃\n");printf("\t\t*************************************\n");S42ehLvE3Mprintf("\t\t\t 請輸入您地選擇: ");scanf("%c",&c);if(c=='1'||c=='2'||c=='0')flag=0;}while(flag);returnc;}voidsearch()// 查詢景點信息{intnum;inti;charc;charname[20];do{system("cls");c=SearchMenu();switch(c){case'1':system("cls");introduce();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); //輸出景點列表501nNvZFis}printf("\n\n\t\t 請輸入您要查找地景點編號: ");scanf("%d",&num);for(i=0;i<NUM;i++){if(num==G.vex[i].number)30/40個人收集整理 僅供參考學習{printf("\n\n\t\t\t您要查找景點信息如下:");printf("\n\n\t\t\t%-25s\n\n",G.vex[i].description);jW1viftGw9printf("\n\t\t\t 按任回車返回...");getchar();getchar();break;}}if(i==NUM)// 只要上面 FOR循環(huán)執(zhí)行完畢,則 i就是NUM{printf("\n\n\t\t\t 沒有找到!");printf("\n\n\t\t\t 按回車鍵返回...");getchar();getchar();}break;case'2':system("cls");introduce();printf("\n\n\t\t 請輸入您要查找地景點名稱: ");scanf("%s",name);for(i=1;i<NUM;i++){if(!strcmp(name,G.vex[i].sight)){printf("\n\n\t\t\t 您要查找景點信息如下 :");printf("\n\n\t\t\t%-25s\n\n",G .vex[i].description);xS0DOYWHLPprintf("\n\t\t\t 按回車鍵返回...");getchar();getchar();break;}}if(i==NUM)// 只要上面 FOR循環(huán)執(zhí)行完畢,則 i就是NUM{printf("\n\n\t\t\t 沒有找到!");31/40個人收集整理 僅供參考學習printf("\n\n\t\t\t 按回車鍵返回...");getchar();getchar();}break;}}while(c!='0');getchar();}//---------------------------- 構造無向圖 G------------------------------- LOZMkIqI0wvoid CreateUDN(int v,inta)//采用數(shù)組(鄰接矩陣)表示法,構造無向圖 G.ZKZUQsUJed{inti,j;G.vexnum=v;// 初始化結構中地景點數(shù)??!!G.arcnum=a;//初始化結構中地邊數(shù)?。。or(i=1;i<G.vexnum;++i)G.vex[i].number=i;// 初始化每一個景點地編號初始化每一個景點名及其景點描述G.vex[0].sight="學校簡介";G.vex[1].sight="校大門";G.vex[2].sight="三號樓學樓";G.vex[3].sight="一號教學樓";G.vex[4].sight="行政樓";G.vex[5].sight="實驗樓";G.vex[6].sight="伯苓廣場";G.vex[7].sight="秀英圖書館";G.vex[8].sight="藝術樓";G.vex[9].sight="一號食堂";G.vex[10].sight="操場";G.vex[11].sight="西區(qū)宿舍樓";G.vex[12].sight="二號食堂";32/40個人收集整理 僅供參考學習G.vex[13].sight="籃球場";G.vex[14].sight="力功體育館";G.vex[15].sight="東區(qū)宿舍樓";這里把所有地邊假定為32767(2^32次方),含義是這兩個景點之間是不可到達.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;}}下邊是可直接到達地景點間地距離,由于兩個景點間距離是互相地,所以要對圖中對稱地邊同時賦值.G.arcs[1][2].adj=G.arcs[2][1].adj=200;G.arcs[1][3].adj=G.arcs[3][1].adj=200;G.arcs[1][10].adj=G.arcs[10][1].adj=1000;G.arcs[1][13].adj=G.arcs[13][1].adj=1600;G.arcs[2][3].adj=G.arcs[3][2].adj=400;G.arcs[2][6].adj=G.arcs[6][2].adj=100;G.arcs[3][4].adj=G.arcs[4][3].adj=100;G.arcs[3][7].adj=G.arcs[7][3].adj=200;G.arcs[4][7].adj=G.arcs[7][4].adj=300;G.arcs[5][6].adj=G.arcs[6][5].adj=60;G.arcs[6][7].adj=G.arcs[7][6].adj=200;G.arcs[6][8].adj=G.arcs[8][6].adj=100;G.arcs[7][10].adj=G.arcs[10][7].adj=300;G.arcs[7][11].adj=G.arcs[11][7].adj=200;G.arcs[8][10].adj=G.arcs[10][8].adj=200;G.arcs[9][10].adj=G.arcs[10][9].adj=100;G.arcs[9][12].adj=G.arcs[12][9].adj=200;G.arcs[10][11].adj=G.arcs[11][10].adj=100;G.arcs[10][13].adj=G.arcs[13][10].adj=600;G.arcs[11][14].adj=G.arcs[14][11].adj=200;33/40個人收集整理 僅供參考學習G.arcs[12][13].adj=G.arcs[13][12].adj=100;G.arcs[13][14].adj=G.arcs[14][13].adj=100;G.arcs[14][15].adj=G.arcs[15][14].adj=100;}//--------------------------------簡介-----------------------------------------dGY2mcoKtTvoidintroduce()//介紹函數(shù){inti;for(i=1;i<=NUM;i++){G.vex[0].description="\t▲\t河南理工大學具有百年辦學歷史,\n是河南省最早建立地高等學校,\n\n\t\t我省第三家具有博士學位授予權地重點建設骨干高校.\n\n\t\t鄭州校區(qū)校園布局合理,環(huán)境優(yōu)雅,功能齊全,\n\n\t\t能充分滿足教學、實習、實驗和課外活動需要.\n";rCYbSWRLIAG.vex[1].description="\t▲學校大門";G.vex[2].description="\t▲三號教學樓,\n\t是一座嶄新地現(xiàn)代化大樓.\n\n\t\t";FyXjoFlMWhG.vex[3].description="\t▲ 一號教學樓, \n\t也是平時同學們上課主要地場所.\n\n\t\t";TuWrUpPObXG.vex[4].description="\t▲行政樓,\n\t教育交流中心,基本位于學校心臟位置,\n\t內部多為各科處室,會議室.\n\t指揮我校各項工作正常運行,其作用可想而知啦!\n\n\t\t";7qWAq9jPqEG.vex[5].description="\t▲實驗樓,\n\t具有計算機網(wǎng)絡實驗室,寶石鑒定實驗室等,\n\t是鍛煉我們動手地好去處.\n\n\t\t";llVIWTNQFkG.vex[6].description="\t▲柏林廣場,\n\t為學校舉行大型活動地主要場所,\n\t位于實驗樓地下面,\n\t學生作品會展中心,學習活動之地\n\n\t\t";yhUQsDgRT1G.vex[7].description="\t▲圖書館,\n\t為同學們閱讀自習地不二之選,\n\t南MdUZYnKS8I樓設有自習室,北樓多為電子閱讀室 \n\n\t\t";G.vex[8].description="\t▲藝術樓,\n\t我校校園舞蹈隊排練場所及舞蹈興趣班活動場所\n\n\t\t";09T7t6eTnoG.vex[9].description="\t ▲ 一號食堂,\n\t 學生用用餐地地方\n\n\t\t";e5TfZQIUB5G.vex[10].description="\t▲操場,\n\t供體育鍛煉用地場地, \n\t多指學校進行34/40個人收集整理 僅供參考學習體育活動和教學活動地專置場地, \n\t是學校硬件設施不可缺少地一部分 .\n\n\t\t";s1SovAcVQMG.vex[11].description="\t▲ 西區(qū)宿舍樓,\n\t 是學生及老師住宿地地方.\n\n\t\t"; GXRw1kFW5sG.vex[12].description="\t ▲ 二號食堂,\n\t 是學生用餐地好地方.\n\n\t\t";UTREx49Xj9G.vex[13].description="\t▲籃球場,\n\t是熱愛打籃球地運動員們必不可少地環(huán)境,\n\t一個長方形地堅實平面,無障礙物 .\n\n\t\t";8PQN3NDYyPG.vex[14].description="\t▲立功體育館,\n\t是學校舉行模特大賽,籃球比賽等重要活動舉行地重要場所.";mLPVzx7ZNwG.vex[15].description="\t▲ 東區(qū)宿舍樓,\n\t 是學生及老師住宿地地方.\n\n\t\t";AHP35hB02d}}//--------------------------------主界面函數(shù)--------------------------NDOcB141gTvoidpingmu()//屏幕輸出函數(shù){printf("\t\t----------------------------------------------------\n");1zOk7Ly2vAprintf("\t\t*********************\n");fuNsDv23Khprintf("\t\t**************\n");tqMB9ew4YXprintf("\t\t********************\n");HmMJFY05dEprintf("\t\t**************\n");ViLRaIt6skprintf("\t\t************************\n");9eK0GsX7H1printf("\t\t----------------------------------------------------\n");naK8ccr8VIprintf("\t\t****************************************************\n"); B6JgIVV9aoprintf("\t\t\t\t 歡迎光臨萬科大大學 \n");printf("\t\t****************************************************\n"); P2IpeFp35/40個人收集整理 僅供參考學習ap5}//------------------------ 計 算最 短 路 徑 Dijkstra( 迪 杰 斯 特 拉 )算 法----------------3YIxKpScDMvoid ShortestPath(intnum)//迪杰斯特拉算法最短路徑函數(shù) num為入口點地編號gUHFg9mdSs{intv,w,i,t;//i、w和v為計數(shù)變量intfinal[NUM];// 判斷S,v-Sintmin;for(v=1;v<NUM;v++){final[v]=0;// 假設從頂點 num到頂點v沒有最短路徑D[v]=G.arcs[num][v].adj;// 將與之相關地權值放入 D中存放for(w=1;w<NUM;w++)// 設置為空路徑P[v][w]=0;// 存在標志置為 0if(D[v]<32767)// 存在路徑{P[v][num]=1;// 存在標志置為一P[v][v]=1;// 自身到自身}}D[num]=0;//自己到自己為 0final[num]=1;// 初始化num頂點屬于 S集合//開始主循環(huán),每一次求得 num到某個頂點地最短路徑,并將其加入到 S集合for(i=1;i<NUM;++i)// 其余G.vexnum-1個頂點{min=Max;// 當前所知離頂點 num地最近距離for(w=1;w<NUM;++w)if(!final[w])//w 頂點在v-s中if(D[w]<min)//w 頂點離num頂點更近{36/40個人收集整理 僅供參考學習v=w;//將找到地最短路徑賦值于 vmin=D[w];}final[v]=1;// 離num頂點更近地 v加入到s集合for(w=1;w<NUM;++w)// 更新當前最短路徑極其距離if(!final[w]&&((min+G.arcs[v][w].adj)<D[w]))//不在s集合,并且比以前所找到地路徑都短就更新當前路徑uQHOMTQe79{//min地值就是 D[v]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ù){inta,b,c,d,q=0;a=si
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 區(qū)消防大隊職責
- 跨境電商2025年保稅倉倉儲管理服務合同協(xié)議
- 潮南區(qū)模擬考試卷及答案
- 藥物化學反應試題及答案
- 2025-2026二年級音樂期末試卷上學期
- 2025-2026九年級道德與法治上學期模擬卷
- 自然科學研究系列(科學傳播專業(yè))職稱評價辦法
- 腸外營養(yǎng)在老年多器官功能障礙中的應用
- 美容院環(huán)境衛(wèi)生制度
- 衛(wèi)生院新藥管理制度
- 高支模培訓教學課件
- GB/T 21558-2025建筑絕熱用硬質聚氨酯泡沫塑料
- 企業(yè)中長期發(fā)展戰(zhàn)略規(guī)劃書
- 道路運輸春運安全培訓課件
- IPC-6012C-2010 中文版 剛性印制板的鑒定及性能規(guī)范
- 機器人手術術中應急預案演練方案
- 2025年度護士長工作述職報告
- 污水處理藥劑采購項目方案投標文件(技術標)
- 醫(yī)院信訪應急預案(3篇)
- 2025年領導干部任前廉政知識測試題庫(附答案)
- 安徽省蚌埠市2024-2025學年高二上學期期末學業(yè)水平監(jiān)測物理試卷(含答案)
評論
0/150
提交評論