數(shù)據(jù)結(jié)構(gòu)-校園導(dǎo)游系統(tǒng)課程設(shè)計(共20頁)_第1頁
數(shù)據(jù)結(jié)構(gòu)-校園導(dǎo)游系統(tǒng)課程設(shè)計(共20頁)_第2頁
數(shù)據(jù)結(jié)構(gòu)-校園導(dǎo)游系統(tǒng)課程設(shè)計(共20頁)_第3頁
數(shù)據(jù)結(jié)構(gòu)-校園導(dǎo)游系統(tǒng)課程設(shè)計(共20頁)_第4頁
數(shù)據(jù)結(jié)構(gòu)-校園導(dǎo)游系統(tǒng)課程設(shè)計(共20頁)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上濱江學(xué)院數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 題 目 校園導(dǎo)游咨詢程序設(shè)計 學(xué) 號 學(xué)生姓名 院 系 專 業(yè) 指導(dǎo)教師 二一二 年 月 日1、 題目的內(nèi)容及要求設(shè)計一個校園導(dǎo)游程序,為來訪的客人提供各種信息查詢服務(wù)。2、 需求分析(1)設(shè)計你的學(xué)校的校園平面圖,所含景點不少于10個。以圖中頂點表示學(xué)校各景點,存放景點名稱、代號、簡介等信息;以邊表示路徑,存放路徑長度等相關(guān)信息。(2)為來訪客人提供圖中任意景點的問路查詢,即查詢?nèi)我鈨蓚€景點之間的一條最短的簡單路徑。 (3)為來訪客人提供圖中任意景點相關(guān)信息的查詢。 3、概要設(shè)計1功能模塊圖;void CreateUDN();/創(chuàng)建無向網(wǎng)v

2、oid Search();/查詢景點信息void Shortestpath(int i);/計算最短路徑void Output(int sight1,int sight2);/輸出函數(shù)2各個模塊詳細(xì)的功能描述。CreateUDN();/創(chuàng)建無向網(wǎng)、主要用來保存各景點信息Search();/查詢景點信息、景點的名稱及介紹Shortestpath(int i);/計算兩景點間最短路徑Output(int sight1,int sight2);/輸出兩景點最短路徑及信息3.模塊圖4、 詳細(xì)設(shè)計一、圖的儲存結(jié)構(gòu)#define Max 30000#define NUM 10typedef struct

3、ArcCell int adj; /* 相鄰接的景點之間的路程 */ ArcCell; /* 定義邊的類型 */ typedef struct VertexType int number; /* 景點編號 */  char *sight; /* 景點名稱 */ char *description;/* 景點描述 */VertexType; /* 定義頂點的類型 */ typedef struct VertexType vexN

4、UM; /* 圖中的頂點,即為景點 */ ArcCell arcsNUMNUM;/* 圖中的邊,即為景點間的距離 */ int vexnum,arcnum;/* 頂點數(shù),邊數(shù) */ MGraph;  /* 定義圖的類型 2、 算法1.主程序void main() int v0,v1; char ck; CreateUDN(NUM,11); do ck=Menu(); switch(ck) case '1': system("cls"); / narr

5、ate(); printf("nnttt請選擇起點景點(09):"); scanf("%d",&v0); printf("ttt請選擇終點景點(09):"); scanf("%d",&v1); ShortestPath(v0);  /* 計算兩個景點之間的最短路徑 */ output(v0,v1);  /* 計算兩個景點之間的最短路徑 */ printf("nntttt請按任意鍵繼續(xù).n"); getchar(); ge

6、tchar(); break; case '2':search(); break; case '3': system("cls"); /narrate(); x0=1; HaMiTonian(1); printf("nntttt請按任意鍵繼續(xù).n"); getchar(); getchar(); break; ; while(ck!='e'); 2. 輸出程序void output(int sight1,int sight2) int a,b,c,d,q=0; a=sight2; if(a!=sight1)

7、 /* 如果景點二不和景點一輸入重合,則進(jìn)行 */ printf("nt從%s到%s的最短路徑是",G.vexsight1.sight,G.vexsight2.sight);/* 輸出提示信息 */  printf("t(最短距離為 %dm.)nnt",Da); printf("t%s",G.vexsight1.sight); d=sight1;  /* 將景點一的編號賦值給d */  for(c=0;c<NUM;+c) gate:; Pa

8、sight1=0; for(b=0;b<NUM;b+) if(G.arcsdb.adj<30000&&Pab) /* 如果景點一和它的一個臨界點之間存在路徑且最短路徑 */  printf("->%s",G.vexb.sight); /* 輸出此節(jié)點的名稱 */  q=q+1; /* 計數(shù)變量加一,滿8控制輸出時的換行 */ Pab=0; d=b;  /* 將b作為出發(fā)點進(jìn)行下一次循環(huán)輸出,如此反復(fù) */ if(q%9=0) pri

9、ntf("n"); goto gate; 3. 求最短路徑  void ShortestPath(int num) int v,w,i,t; int finalNUM; int min; for(v=0;v<NUM;v+) finalv=0; Dv=G.arcsnumv.adj; for(w=0;w<NUM;w+) Pvw=0; if(Dv<30000) Pvnum=1; Pvv=1; Dnum=0; finalnum=1; for(i=0;i<NUM;+i) min=Max; for(w=0;w<NUM;+w) if(!finalw

10、) if(Dw<min) v=w; min=Dw; finalv=1; for(w=0;w<NUM;+w) if(!finalw&&(min+G.arcsvw.adj)<Dw) Dw=min+G.arcsvw.adj; for(t=0;t<NUM;t+) Pwt=Pvt; Pww=1; 4. 說明函數(shù)void narrate() int i,k=0; printf("ntt*歡迎使用校園導(dǎo)游程序*n"); printf("ntt*南京信息工程大學(xué)*n"); printf("t_n"); prin

11、tf("tt景點名稱tt|t景點描述n"); printf("t_|_n"); for(i=0;i<NUM;i+) printf("t (%2d)%-10sttt|t%-25sn",i,G.vexi.sight,G.vexi.description); k=k+1; printf("t_|_n");5、查詢景點信息void search() int num; int i; char c; char name20; do system("cls"); c=SearchMenu(); swit

12、ch (c) case '1': system("cls"); narrate(); printf("nntt請輸入您要查找的景點編號:"); scanf("%d",&num); for(i=0;i<NUM;i+) if(num=G.vexi.number) printf("nnttt您要查找景點信息如下:"); printf("nnttt%-25snn",G.vexi.description); printf("nttt按任意鍵返回."); g

13、etchar(); getchar(); break; if(i=NUM) printf("nnttt沒有找到!"); printf("nnttt按任意鍵返回."); getchar(); getchar(); break; case '2': narrate(); system("cls"); printf("nntt請輸入您要查找的景點名稱:"); scanf("%s",name); for(i=0;i<NUM;i+) if(!strcmp(name,G.vexi.si

14、ght) printf("nnttt您要查找景點信息如下:"); printf("nnttt%-25snn",G.vexi.description); printf("nttt按任意鍵返回."); getchar(); getchar(); break; if(i=NUM) printf("nnttt沒有找到!"); printf("nnttt按任意鍵返回."); getchar(); getchar(); break; while(c!='t');6. 選擇菜單char Sea

15、rchMenu() char c; int flag; do flag=1; system("cls"); narrate(); printf("ntttn"); printf("ttt n"); printf("ttt 1、按照景點編號查詢 n"); printf("ttt 2、按照景點名稱查詢 n"); printf("ttt t、返回 n"); printf("ttt n"); printf("tttn"); printf(&qu

16、ot;tttt請輸入您的選擇:"); scanf("%c",&c); if(c='1'|c='2'|c='t') flag=0; while(flag); return c;5、運行結(jié)果及分析系統(tǒng)主界面查詢路徑查詢信息6、收獲及體會 非常高興能和同學(xué)們一起做實驗,感謝各位老師以及同學(xué)們對我的幫助,特別是老師循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪;這次數(shù)據(jù)結(jié)構(gòu)設(shè)計的每個實驗細(xì)節(jié)和每個數(shù)據(jù),都離不開老師您的細(xì)心指導(dǎo)。7、源代碼#include "string.h"#include &q

17、uot;stdio.h"#include "malloc.h"#include "stdlib.h"#define Max 30000#define NUM 10typedef struct ArcCell int adj; ArcCell;typedef struct VertexType int number; char *sight; char *description;VertexType; typedef struct VertexType vexNUM; ArcCell arcsNUMNUM; int vexnum,arcnum;M

18、Graph; MGraph G; int PNUMNUM; long int DNUM; int x9=0;void CreateUDN(int v,int a);void narrate(); void ShortestPath(int num);void output(int sight1,int sight2);char Menu(); void search(); char SearchMenu(); void HaMiTonian(int); void NextValue(int); void display();void main() int v0,v1; char ck; Cre

19、ateUDN(NUM,11); do ck=Menu(); switch(ck) case '1': system("cls"); / narrate(); printf("nnttt請選擇起點景點(09):"); scanf("%d",&v0); printf("ttt請選擇終點景點(09):"); scanf("%d",&v1); ShortestPath(v0); output(v0,v1); printf("nntttt請按任意鍵繼續(xù).n&quo

20、t;); getchar(); getchar(); break; case '2':search(); break; case '3': system("cls"); /narrate(); x0=1; HaMiTonian(1); printf("nntttt請按任意鍵繼續(xù).n"); getchar(); getchar(); break; ; while(ck!='e'); char Menu() char c; int flag; do flag=1; system("cls")

21、; narrate(); printf("ntttn"); printf("ttt n"); printf("ttt 1、查詢景點路徑 n"); printf("ttt 2、查詢景點信息 n"); printf("ttt 3、推薦參觀路線 n"); printf("ttt t、退出 n"); printf("ttt n"); printf("tttn"); printf("tttt請輸入您的選擇:"); scanf(

22、"%c",&c); if(c='1'|c='2'|c='3'|c='t') flag=0; while(flag); return c;char SearchMenu() char c; int flag; do flag=1; system("cls"); narrate(); printf("ntttn"); printf("ttt n"); printf("ttt 1、按照景點編號查詢 n"); printf(&quo

23、t;ttt 2、按照景點名稱查詢 n"); printf("ttt t、返回 n"); printf("ttt n"); printf("tttn"); printf("tttt請輸入您的選擇:"); scanf("%c",&c); if(c='1'|c='2'|c='t') flag=0; while(flag); return c;void search() int num; int i; char c; char name2

24、0; do system("cls"); c=SearchMenu(); switch (c) case '1': system("cls"); narrate(); printf("nntt請輸入您要查找的景點編號:"); scanf("%d",&num); for(i=0;i<NUM;i+) if(num=G.vexi.number) printf("nnttt您要查找景點信息如下:"); printf("nnttt%-25snn",G.ve

25、xi.description); printf("nttt按任意鍵返回."); getchar(); getchar(); break; if(i=NUM) printf("nnttt沒有找到!"); printf("nnttt按任意鍵返回."); getchar(); getchar(); break; case '2': narrate(); system("cls"); printf("nntt請輸入您要查找的景點名稱:"); scanf("%s",na

26、me); for(i=0;i<NUM;i+) if(!strcmp(name,G.vexi.sight) printf("nnttt您要查找景點信息如下:"); printf("nnttt%-25snn",G.vexi.description); printf("nttt按任意鍵返回."); getchar(); getchar(); break; if(i=NUM) printf("nnttt沒有找到!"); printf("nnttt按任意鍵返回."); getchar(); getc

27、har(); break; while(c!='t');void CreateUDN(int v,int a) int i,j; G.vexnum=v; G.arcnum=a; for(i=0;i<G.vexnum;+i) G.vexi.number=i; G.vex0.sight="東大門" G.vex0.description="學(xué)校正門。" G.vex1.sight="氣象樓" G.vex1.description="校氣象研究樓。" G.vex2.sight="體育館&quo

28、t; G.vex2.description="運動,放松心情" G.vex3.sight="大學(xué)生活動中心" G.vex3.description="競賽、晚會舉辦地" G.vex4.sight="圖書館" G.vex4.description="閱覽,借閱圖書" G.vex5.sight="濱江樓" G.vex5.description="學(xué)習(xí),自習(xí)室" G.vex6.sight="綜合樓" G.vex6.description=&q

29、uot;學(xué)習(xí),辦公室" G.vex7.sight="老食堂" G.vex7.description="餐飲休閑" G.vex8.sight="新食堂" G.vex8.description="餐飲休閑" G.vex9.sight="文園" G.vex9.description="宿舍,休息" for(i=0;i<G.vexnum;+i) for(j=0;j<G.vexnum;+j) G.arcsij.adj=Max; G.arcs01.adj=G.arc

30、s10.adj=2; G.arcs02.adj=G.arcs20.adj=1; G.arcs03.adj=G.arcs30.adj=7; G.arcs14.adj=G.arcs41.adj=8; G.arcs24.adj=G.arcs42.adj=9; G.arcs35.adj=G.arcs53.adj=5; G.arcs57.adj=G.arcs75.adj=2; G.arcs46.adj=G.arcs64.adj=3; G.arcs47.adj=G.arcs74.adj=2; G.arcs68.adj=G.arcs86.adj=2; G.arcs78.adj=G.arcs87.adj=1;

31、 G.arcs89.adj=G.arcs98.adj=1;void narrate() int i,k=0; printf("ntt*歡迎使用校園導(dǎo)游程序*n"); printf("ntt*南京信息工程大學(xué)*n"); printf("t_n"); printf("tt景點名稱tt|t景點描述n"); printf("t_|_n"); for(i=0;i<NUM;i+) printf("t (%2d)%-10sttt|t%-25sn",i,G.vexi.sight,G.v

32、exi.description); k=k+1; printf("t_|_n");void ShortestPath(int num) int v,w,i,t; int finalNUM; int min; for(v=0;v<NUM;v+) finalv=0; Dv=G.arcsnumv.adj; for(w=0;w<NUM;w+) Pvw=0; if(Dv<30000) Pvnum=1; Pvv=1; Dnum=0; finalnum=1; for(i=0;i<NUM;+i) min=Max; for(w=0;w<NUM;+w) if(!finalw) if(Dw<min) v=w; min=Dw; finalv=1; for(w=0;w<NUM;+w) if(!finalw&&(min+G.arcsvw.adj)<Dw) Dw=min+G.arcsvw.adj; for(t=0;t<NUM;t+) Pwt=Pvt; Pww=1; void output(int sight1,int sight2) int a,b,c,d,q=0; a=sight2; if(a!=sight1) /* 如果景點

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論