資料結構實訓 校園導遊系統

2021-10-01 22:05:49 字數 3561 閱讀 2385

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...