




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鐵藝圍欄維修施工方案
- 代理招商合同協(xié)議書
- TDGHHX 001-2024 朱頂紅商品種球采收規(guī)范
- 西藏輕質(zhì)混凝土施工方案
- 裝修腳手架搭拆施工方案
- 隧洞施工方案模擬圖
- 行政辦公運轉(zhuǎn)方案
- 平房區(qū)保溫陽臺施工方案
- 標(biāo)準(zhǔn)戶外廣告牌施工方案
- (三模)榆林市2025屆高三第三次模擬檢測政治試卷(含答案詳解)
- 火災(zāi)自動報警系統(tǒng)檢查表
- 骨髓細(xì)胞圖譜
- 高風(fēng)險作業(yè)培訓(xùn)課件
- 試驗檢測單位安全培訓(xùn)課件
- 2024年安徽省C20教育聯(lián)盟中考一模道德與法治試卷(含答案)
- 公路瀝青路面設(shè)計標(biāo)準(zhǔn)規(guī)范
- 急性腎小球腎炎的護(hù)理PPT文檔
- 印刷業(yè)數(shù)字化轉(zhuǎn)型
- 加油站春季安全教育培訓(xùn)
- 高壓隔膜壓濾機(jī)安裝方案
- 外加劑摻合料試題帶答案
評論
0/150
提交評論