1 課題描述
(一)基本要求
1、 設計你的學校的校園平面圖,所含景點10-15個。以圖中頂點表示校園內各景點,存放景點名稱、代號、簡介等資訊;以邊表示路徑,存放路徑長度等相關資訊。
2、 為來訪客人提供圖中任意景點相關資訊的查詢。
3、 為來訪客人提供圖中任意景點的問路查詢,即查詢任意兩個景點之間的一條最短的簡單路徑。
4、 提供圖中任意景點問路查詢,即求任意兩個景點之間的所有路徑。
5、 提供校園圖中多個景點的最佳訪問路線查詢,即求途經這多個景點的最佳路徑。
6、 區分汽車線路與步行線路。
7、 設計一實用的查詢介面和功能選單。
(二)、測試資料
由讀者根據實際情況設定。
2 問題分析和任務定義
題目要求我們寫乙個學校的導遊圖,並且可以查詢有關景點的資訊,還可以查詢任意兩景點的最短路徑和所有路徑。還要求如果要參觀多個景點時,也要找出乙個最優的路徑。
限制條件要求我們區分出汽車路線還是步行路線。
3 邏輯設計
(1)陣列
先用二維陣列儲存學校景點的名字、資訊、距離。
(2)主函式
包括命令呼叫函式,檢視學校全景圖函式、檢視學校景點資訊該函式、輸入程式、查詢景點間距離、查詢所有路徑
(4 詳細設計
(1)兩個二位陣列分別儲存校園的景點的名字,具體介紹資訊。還有乙個陣列去存景點間的資訊。
(2)具體函式
1、void chushi()//儲存景點的距離
2、void menu()//選單
3、void start()//初始頁面。
4、void look()//學校的全景圖
5、void mulu()//學校景點的目錄
6、void ask()//關於景點資訊詢問函式
7、void floyed1(int s,int e)//弗洛伊德演算法,求最短路
8、void shorter()//調最短路的函式
9、void bfs1(int s,int e,int p,int sum)//深搜函式
10、void all()//求兩景點間的所有路徑
11、void tree(int n,int m)//求多景點之間的最優路徑
12、void lots()//呼叫函式
13、void command()//命令函式
14、int main()//主函式
5 程式編碼
#include#include#include#include#include#includeusing namespace std;
#define inf 1000000000
int tran[20][20],tran1[20][20];
queueq;
int vis[20],path[20],dis[20][20],apth[20][20];
int a[20],b[20],c[20],d[20];
char view[20][100]= ;//儲存學校景點的資訊
char name[20][100]= ;//儲存景點的姓名
void chushi()
//儲存景點的距離
void menu()//選單
void start()//初始頁面
void look()//學校的全景圖
void mulu()//學校景點的目錄
void ask()//關於景點資訊詢問函式
}}void floyed1(int s,int e)//弗洛伊德演算法,求最短路
printf("最短的距離為:%d\n",tran[s][e]);
printf("路徑為:");
k=apth[s][e];
printf("%s",name[s]);
while(s!=e)
printf("\n");
}void shorter()//調最短路的函式
else
apth[i][j]=j;
}chushi();
int start,end1;
system("cls");
mulu();
int com;
printf("請輸入你要旅行的方式(步行輸1,車行輸2):");
scanf("%d",&com);
printf("\n");
printf("請輸入要查詢的起點:");
scanf("%d",&start);
printf("\n");
printf("請輸入要查詢的終點:");
scanf("%d",&end1);
printf("\n");
if(start<1||start>12||end1<1||end1>12)
else
else
floyed1(start,end1);}}
printf("按任意鍵繼續.........");
getchar();
getchar();
}void bfs1(int s,int e,int p,int sum)//深搜函式
}else}}
return ;
}void all()//求兩景點間的所有路徑
else
else if(com==1)
}printf("按任意鍵繼續.......");
getchar();
getchar();
}void tree(int n,int m)//求多景點之間的最優路徑
int x,y,z;
int ans=0;
int sum=0;
d[0]=b[1];
ans++;
while(1)
printf("\n");
}void lots()//呼叫函式
else
apth[i][j]=j;
}chushi();
int com;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
system("cls");
mulu();
printf("請輸入出行方式(步行輸1,車行輸2):");
scanf("%d",&com);
printf("\n");
for(i=1;;i++)
b[1]=a[1];
for(j=2;j7 結果分析
程式的空間複雜度為o(n2),時間複雜度為o(n3),主要是在求最短路用的弗洛伊德演算法中。程式的執行可以判斷一些非法的資料,當訪問的景點不存在時會有提醒,命令不存在時也會有提醒。
8 總結
這次的程式設計主要是校園導遊系統,可以檢視校園全景圖,可以檢視景點的資訊,道路也分為行人路和車行道,還可以查詢兩景點間的最短路徑和所有路徑,還可以根據想去看的所有景點推薦乙個最佳路徑。程式中用了最短路演算法和最小生成樹演算法,還有深搜演算法。設計的過程當中遇到了很多的問題,最後通過思考和查詢資料等方法將其解決。在設計的過程當中學到了很多,也發現解決乙個問題需要有耐心、恆心。通過這次程式設計,使我加深了對資料結構的理解,也提高了自己解決問題的能力。
資料結構 校園導遊諮詢系統
include string.h include stdio.h include malloc.h include stdlib.h define max 20000 define num 9 typedef struct arccell arccell typedef struct vertext...
資料結構實訓 校園導航系統
設計乙個校園導遊系統,為來訪的客人提供各種資訊查詢服務。限1人完成 一 基本要求 1 設計你的學校的校園平面圖,所含景點10 15個。以圖中頂點表示校園內各景點,存放景點名稱 代號 簡介等資訊 以邊表示路徑,存放路徑長度等相關資訊。2 為來訪客人提供圖中任意景點相關資訊的查詢。3 為來訪客人提供圖中...
資料結構實訓作業
1 include 2 define datamax 100 3 typedef struct string 7 初始化字串 8void initstring string s 912 輸入字串 13void inputstring string s 1422 s data i 0 23 s len...