設計乙個校園導遊系統程式,為來訪的客人提供各種服務的資訊查詢。
(1).設計工商學院校園無向圖,所含的景點不少於10個。以圖中頂點表示校內各景點,存放景點名稱、代號、簡介等資訊;以邊表示路徑,存放路徑長度等相關資訊。
(2).為來訪客人提供圖中任意景點相關資訊的查詢。
(3).為來訪客人提供圖中任意景點的問路查詢,即查詢任意兩個景點之間的一條最短的簡單路徑。
校園旅遊模型是由景點和景點之間的路徑組成的,所以這完全可以用資料結構中的圖來模擬。用圖的結點代表景點,用圖的邊代表景點之間的路徑。所以首先應設計乙個圖類。
結點值代表景點資訊,邊的權值代表景點間的距離。結點值及邊的權值用順序表儲存,所以需要設計乙個順序錶類。本系統需要查詢景點資訊和求乙個景點到另乙個景點的最短路徑長度及路線,為方便操作,所以給每個景點乙個**,用結構體型別實現。
計算路徑長度和最短路線時可用弗洛伊德(floyd)演算法實現。最後用switch選擇語句選擇執行瀏覽景點資訊或查詢最短路徑。
(1)主程式模組
主函式:void main(void)
void cmd(void) cmd修改顯示框大小,字型背景顏色,初始化景點,景點資訊列印選單,
mgraph initgraph(void); //初始化圖。
mgraph * creatudn(mgraph *g); //初始化圖形接受使用者輸入
void menu(void);//選單函式
void browser(mgraph *g);//瀏覽函式
void shortestpath_dij(mgraph *g);
void floyd(mgraph *g);// 查詢圖中任意兩個景點間的所有路徑
void search(mgraph *g);//查詢函式
int locatevex(mgraph *g,char*v); // 迪傑斯特拉演算法計算起點各頂點間短路徑,
void print(mgraph *g); //輸出函式
(2)查詢模組
景點資訊查詢:void introduce()
最短路徑查詢:要查詢的兩景點的最短距離:用floyd演算法求兩個景點的最短路徑:
(3)列印模組:void print(mgraph *g);
主函式main()呼叫void cmd(void)呼叫menu 並且用switch設定開關語句。
#define infinity 1000 /*窮*/
#define max_vertex_num 40/*定義全域性變數*/
建立兩個類儲存景點資訊和儲存景點道路和長度
typedef struct arcell //鄰接矩陣
arcell,adjmatrix[max_vertex_num][max_vertex_num];
typedef struct //圖頂點表示主要景點存放景點編號、名稱、簡介等資訊
infotype;
typedef struct//圖中的邊表示景點間的道路,存放路徑長度等資訊。
mgraph;
mgraph b;
3.2.2自定義函式原型說明
給出函式宣告
void cmd(void);
mgraph initgraph(void);
void menu(void);
void browser(mgraph *g);
void shortestpath_dij(mgraph *g);
void floyd(mgraph *g);
void search(mgraph *g);
int locatevex(mgraph *g,char*v);
mgraph * creatudn(mgraph *g);
void print(mgraph *g);
3.2.3定義各頂點之間的距離:
for(i=0;i for(j=0;j g.arcs[i][j].adj=infinity;
g.arcs[0][1].adj=80;/*路徑度*/
g.arcs[0][2].adj=180;
g.arcs[0][6].adj=200;
g.arcs[1][11].adj=120;
g.arcs[1][2].adj=100;
g.arcs[2][5].adj=50;
g.arcs[3][4].adj=60;
g.arcs[4][9].adj=140;
g.arcs[5][9].adj=250;
g.arcs[5][7].adj=150;
g.arcs[6][7].adj=190;
g.arcs[6][9].adj=150;
g.arcs[8][7].adj=130;
g.arcs[8][6].adj=50;
g.arcs[10][12].adj=100;
g.arcs[9][10].adj=150;
g.arcs[3][4].adj=190;
g.arcs[5][13].adj=150;
g.arcs[14][7].adj=350;
g.arcs[2][3].adj=190;
g.arcs[2][9].adj=150;
g.arcs[2][11].adj=120;
g.arcs[0][8].adj=120;
g.arcs[1][2].adj=50;
g.arcs[10][12].adj=170;
g.arcs[12][15].adj=160;
for(i=0;i for(j=0;j g.arcs[j][i].adj=g.arcs[i][j].adj;
return g;
3.2.4介面選單設計:選單選擇
void menu()
menu();
scanf("%d",&i);
while(i!=5)
3.2.6介紹景點:
void browser(mgraph *g)
用floyd演算法求兩個景點的最短路徑
void floyd(mgraph *g)// 查詢圖中任意兩個景點間的所有路徑。
} for(u=0;uvexnum;u++)
for(v=0;vvexnum;v++)
for(w=0;wvexnum;w++)
if(d[v][u]+d[u][w]
while(flag)
{ printf("請輸入出發地編號:");
C語言校園導遊系統課程設計
海南大學 課程名稱資料結構 基於c語言 課程設計 題目校園導遊程式的設計與實現 院系 資訊科學技術學院 班級 通訊工程b班 學生姓名 史兵全 指導教師吳澤輝 日期 2014.12.15.2015.1.7 軟體專題訓練任務書 校園導遊程式 一 簡介 1 設計目的 通過校園導遊程式的設計與實現,熟練掌握...
校園導遊課程設計實驗報告
資料結構 課程 設計實驗 報告課程名稱資料結構 課程設計 課程設計題目 校園導遊 姓名邱可昉 院系計算機學院 專業電腦科學與技術 班級10052313 學號10051319 指導老師 王立波 2012年5月18日 目錄1.課程設計的目的3 2.問題分析3 3.課程設計報告內容3 1 概要設計3 2 ...
資料結構課程設計作業 校園導遊
資料結構課程設計 course design of data structure 電腦科學與技術082 姓名學號 08422137 指導老師2010年7月9日 目錄1 需求分析說明 2 概要設計說明 3 詳細設計說明 4 除錯分析 5 課程設計總結 6 參考書目 7 致謝 需求分析說明 隨著高校校園...