课程实训-校园导游系统
生活随笔
收集整理的這篇文章主要介紹了
课程实训-校园导游系统
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/***********************************************************
* 版權(quán)所有 (C)2017,sunrenyuan
*
* 文件名稱: main.cpp
* 文件標(biāo)識(shí):main
* 內(nèi)容摘要:函數(shù)文件
* 其它說(shuō)明:主函數(shù)
* 當(dāng)前版本: V3.0
* 作 者:孫仁圓
* 完成日期: 2017.12.21
*
* 修改記錄1:
* 修改日期 :2017.12.18
* 版本號(hào): V1.0
* 修改人: 孫仁圓
* 修改內(nèi)容:創(chuàng)建
*
* 修改記錄2:
* 修改日期 :2017.12.20
* 版本號(hào): V2.0
* 修改人: 孫仁圓
* 修改內(nèi)容:增加了Djp算法
*
* 修改記錄3:
* 修改日期:2017.12.21
* 版本號(hào): V3.0
* 修改人: 孫仁圓
* 修改內(nèi)容:完善了增加景點(diǎn)函數(shù)的漏洞
***********************************************************/#include <iostream>
#include <stdio.h>
#include <stdlib.h>#include "jiemi.h"using namespace std;
int main()
{int vnum;
int i;int path[MaxViewNum][MaxViewNum]; /*定義存貯路徑*/int shortest[MaxViewNum][MaxViewNum];
MGraph sq;
init(sq,shortest);char k;system("color 3B");printf(" **************************************************************************\n");printf("* *\n");printf("* *\n");printf("* 歡迎來(lái)到煙臺(tái)大學(xué) *\n");printf("* *\n");printf("* *\n");printf(" **************************************************************************\n");printf("\n");while(1){printf("1.景點(diǎn)信息查詢請(qǐng)按“1”鍵;\n");printf("2.景點(diǎn)最短路徑查詢(佛洛依德算法)請(qǐng)按“2”鍵;\n");printf("3.景點(diǎn)最短路徑查詢(迪杰斯特拉算法)請(qǐng)按“3”鍵;\n");printf("4.校內(nèi)景點(diǎn)地圖查詢請(qǐng)按“4”鍵;\n");printf("5.退出系統(tǒng)請(qǐng)按“5”鍵;\n");cout<<"6.增加景點(diǎn)請(qǐng)按“6“鍵;"<<endl;cout<<"7.景點(diǎn)附加道路請(qǐng)按“7“鍵;"<<endl;cout<<"8.修改景點(diǎn)信息請(qǐng)按“8”鍵;"<<endl;printf("請(qǐng)選擇: \n");scanf("%c",&k);fflush(stdin);switch(k){case '1':printf("景點(diǎn)介紹查詢。\n");introduce(sq); break;case '2':printf("");Floyd(sq); break;case '3':printf("景點(diǎn)最短路徑查詢。");Djp(vnum,sq) ; break;case '4':printf("景點(diǎn)地圖。\n");map(); break;case '5':printf("謝謝使用!\n");case '6': printf("增加\n");addviews(sq);break;case '8': printf("修改\n");change(sq); fflush(stdin);break;case '7':printf("請(qǐng)輸入你要查詢的邊\n");cin>>i;addlen2(sq,i) ; break;case 9:deletelen(sq);break;exit(0);}}system("pause");return 0;
}
/*********************************************************
* 版權(quán)所有 (C)2017,sunrenyuan
*
* 文件名稱:jiemi.cpp
* 文件標(biāo)識(shí):jiemi.cpp
* 內(nèi)容摘要:各種函數(shù)庫(kù)
* 其它說(shuō)明:
* 當(dāng)前版本: V3.0
* 作 者: 孫仁圓
* 完成日期: 2017.12.21
*
************************************************************/
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <cstring>
#include "jiemi.h"
using namespace std;/*********************************************************
* 功能描述:前向遞歸查找路徑上的頂點(diǎn)
* 輸入?yún)?shù):無(wú)
* 輸出參數(shù):無(wú)
* 返回值 :無(wú)
* 其它說(shuō)明:Dijkstra算法庫(kù)
************************************************************/void init(MGraph &MGr,int shortest[MaxViewNum][MaxViewNum])
{MGr.view[1].num=1;strcpy(MGr.view[1].date.name,"學(xué)校南門(mén)");strcpy(MGr.view[1].date.number,"001");strcpy(MGr.view[1].date.introduce,"坐落于銀海路,對(duì)面為世紀(jì)華府,市井繁華,交通便利。");MGr.view[2].num=2;strcpy(MGr.view[2].date.name,"新圖書(shū)館");strcpy(MGr.view[2].date.number,"002");strcpy(MGr.view[2].date.introduce,"借閱圖書(shū)的地方,也可以讓師生自習(xí)");MGr.view[3].num=3;strcpy(MGr.view[3].date.name,"綜合樓");strcpy(MGr.view[3].date.number,"003");strcpy(MGr.view[3].date.introduce,"各大專業(yè)學(xué)院講課的地方");MGr.view[4].num=4;strcpy(MGr.view[4].date.name,"七餐");strcpy(MGr.view[4].date.number,"004");strcpy(MGr.view[4].date.introduce,"據(jù)說(shuō)是亞洲綜合性餐廳");MGr.view[5].num=5;strcpy(MGr.view[5].date.name,"西門(mén)");strcpy(MGr.view[5].date.number,"005");strcpy(MGr.view[5].date.introduce,"位于清泉路");MGr.view[6].num=6;strcpy(MGr.view[6].date.name,"一教二教三教");strcpy(MGr.view[6].date.number,"006");strcpy(MGr.view[6].date.introduce,"考研天堂。");MGr.view[7].num=7;strcpy(MGr.view[7].date.name,"三元湖");strcpy(MGr.view[7].date.number,"007");strcpy(MGr.view[7].date.introduce,"風(fēng)景優(yōu)美");MGr.view[8].num=8;strcpy(MGr.view[8].date.name,"鐘樓");strcpy(MGr.view[8].date.number,"008");strcpy(MGr.view[8].date.introduce,"又名科技館,是計(jì)控學(xué)院的大本營(yíng)");MGr.view[9].num=9;strcpy(MGr.view[9].date.name,"一餐二餐三餐");strcpy(MGr.view[9].date.number,"009");strcpy(MGr.view[9].date.introduce,"一般在北校的在這吃。");MGr.view[10].num=10;strcpy(MGr.view[10].date.name,"家屬樓");strcpy(MGr.view[10].date.number,"010");strcpy(MGr.view[10].date.introduce,"老師們居住的地方。");MGr.view[11].num=11;strcpy(MGr.view[11].date.name,"煙大北門(mén)");strcpy(MGr.view[11].date.number,"011");strcpy(MGr.view[11].date.introduce,"位于清泉路,對(duì)面是新世界百貨。");MGr.view[12].num=12;strcpy(MGr.view[12].date.name,"煙大東門(mén)");strcpy(MGr.view[12].date.number,"012");strcpy(MGr.view[12].date.introduce,"位于濱海中路,出門(mén)就可以看到海景。");MGr.v=12;
int i,j;for(i=1;i<=N;i++){for(j=1;j<=N;j++){MGr.length[i][j]=MaxRoad;}}for(i=1;i<=N;i++){shortest[i][j]=0;}MGr.length[1][2]=MGr.length[2][1]=40;MGr.length[1][3]=MGr.length[3][1]=40;MGr.length[2][3]=MGr.length[3][2]=10;MGr.length[2][5]=MGr.length[5][2]=60;MGr.length[3][4]=MGr.length[4][3]=60;MGr.length[3][5]=MGr.length[5][3]=100;MGr.length[5][6]=MGr.length[6][5]=10;MGr.length[6][7]=MGr.length[7][6]=10;MGr.length[6][9]=MGr.length[9][6]=10;MGr.length[7][8]=MGr.length[8][7]=10;MGr.length[8][9]=MGr.length[9][8]=20;MGr.length[8][10]=MGr.length[10][8]=40;MGr.length[9][10]=MGr.length[10][9]=20;MGr.length[9][11]=MGr.length[11][9]=30;MGr.length[10][11]=MGr.length[11][10]=10;MGr.length[11][12]=MGr.length[12][11]=100;MGr.length[10][12]=MGr.length[12][10]=90;MGr.e=17;MGr.length[1][1]=MGr.length[2][2]=MGr.length[3][3]=MGr.length[4][4]=0;MGr.length[5][5]=MGr.length[6][6]=MGr.length[7][7]=MGr.length[8][8]=0;MGr.length[9][9]=MGr.length[10][10]=MGr.length[11][11]=MGr.length[12][12]=0;}/*********************************************************
* 功能描述:景點(diǎn)介紹
* 輸入?yún)?shù):所需查詢的景點(diǎn)編號(hào)
* 輸出參數(shù):無(wú)
* 返回值 :無(wú)
* 其它說(shuō)明:數(shù)組從一開(kāi)始存儲(chǔ)
************************************************************/void introduce(MGraph &MGr)
{int m;int i;printf("請(qǐng)輸入查詢景點(diǎn)編號(hào):\n");scanf("%d",&m);fflush(stdin);//清除緩存,清楚界面for(i=1;i<=MGr.v;i++){if(i==m){printf("景點(diǎn)代號(hào):%s\t",MGr.view[i].date.number);printf("景點(diǎn)名稱:%s\n",MGr.view[i].date.name);printf("景點(diǎn)簡(jiǎn)介:%s\n",MGr.view[i].date.introduce);break;}
}
}
/*********************************************************
* 功能描述:地圖界面
* 輸入?yún)?shù):無(wú)
* 輸出參數(shù):相應(yīng)的操作
* 返回值 :無(wú)
* 其它說(shuō)明:幫助頁(yè)面
************************************************************/
void map()
{
system("color 3B");printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");printf("┃┏━━━━━━━━┓┏━━━━━┓ ┏━━━━━━━┓ ┃\n");printf("┃┃11.北門(mén) ┃┃10.家屬院 ┃ ┃ 12. 東門(mén)┃ ┃\n");printf("┃┗━━━━━━━━┛┗━━━━━┛ ┗━━━━━━━┛ ┃\n");printf("┃ ┃\n");printf("┃ ┏━━━━━━┓ ┃\n");printf("┃ ┃ 9 . ┃ ┏━━━━┓ ┃\n");printf("┃ ┃一餐二餐三餐┃ ┃8.鐘樓 ┃ ┃\n");printf("┃ ┗━━━━━━┛ ┗━━━━┛ ┃\n");printf("┃┏━━━━━━━━━━━━━━┓ ┏━━━━┓ ┃\n");printf("┃┃ 6 . 一教二教三教 ┃ ┃7.三元湖┃ ┏━━━━━━┓ ┃\n");printf("┃┗━━━━━━━━━━━━━━┛ ┗━━━━┛ ┃ 4. ┃ ┃\n");printf("┃┏━━━━┓ ┃ 七餐 ┃ ┃\n");printf("┃┃5 .西門(mén) ┃ ┃ ┃ ┃\n");printf("┃┗━━━━┛ ┃ ┃ ┃\n");printf("┃ ┗━━━━━━┛ ┃\n");printf("┃ ┃\n");printf("┃ ┃\n");printf("┃ ┃\n");printf("┃ ┃\n");printf("┃ ┏━━━━━━━━━┓ ┃\n");printf("┃ ┃ ┃ ┃\n");printf("┃ ┃ 2.圖 ┃ ┃\n");printf("┃ ┃ 書(shū) ┃ ┏━━━━━━┓ ┃\n");printf("┃ ┃ 館 ┃ ┃ 綜 ┃ ┃\n");printf("┃ ┃ ┃ ┃ 3. 合 ┃ ┃\n");printf("┃ ┃ ┃ ┃ 樓 ┃ ┃\n");printf("┃ ┗━━━━━━━━━┛ ┗━━━━━━┛ ┃\n");printf("┃ ┃\n");printf("┃ ┃\n");printf("┃ ┃\n");printf("┃ ┃\n");printf("┃ ┃\n");printf("┃ ┃\n");printf("┃ ┏━━━━━┓ ┃\n");printf("┃ ┃1.學(xué)校南門(mén)┃ ┃\n");printf("┃ ┗━━━━━┛ ┃\n");printf("┃ ┃\n");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");}/*********************************************************
* 功能描述:前向遞歸查找路徑上的頂點(diǎn)
* 輸入?yún)?shù):無(wú)
* 輸出參數(shù):無(wú)
* 返回值 :無(wú)
* 其它說(shuō)明:Floyd算法庫(kù)
************************************************************/void Ppath(int path[][MaxViewNum],int i,int j) //前向遞歸查找路徑上的頂點(diǎn)
{int k;k=path[i][j];if (k==-1) return; //找到了起點(diǎn)則返回Ppath(path,i,k); //找頂點(diǎn)i的前一個(gè)頂點(diǎn)kprintf("%d,",k);Ppath(path,k,j); //找頂點(diǎn)k的前一個(gè)頂點(diǎn)j
}
/*********************************************************
* 功能描述:輸出最短路徑
* 輸入?yún)?shù):無(wú)
* 輸出參數(shù):無(wú)
* 返回值 :無(wú)
* 其它說(shuō)明:Floyd算法庫(kù)
************************************************************/
void Dispath(int A[][MaxViewNum],int path[][MaxViewNum],int v)
{int i,j;for (i=1; i<=v; i++)for (j=1; j<=v; j++){if (A[i][j]==Infinite){if (i!=j)printf("從%d到%d沒(méi)有路徑\n",i,j);}else{printf(" 從%d到%d=>路徑長(zhǎng)度:%d 路徑:",i,j,A[i][j]);printf("%d,",i); //輸出路徑上的起點(diǎn)Ppath(path,i,j); //輸出路徑上的中間點(diǎn)printf("%d\n",j); //輸出路徑上的終點(diǎn)}}
}
/*********************************************************
* 功能描述:輸出最短路徑
* 輸入?yún)?shù):無(wú)
* 輸出參數(shù):無(wú)
* 返回值 :無(wú)
* 其它說(shuō)明:Floyd算法庫(kù)
************************************************************/
void Floyd(MGraph MGr)
{int A[MaxViewNum][MaxViewNum],path[MaxViewNum][MaxViewNum];int i,j,k;for (i=1; i<=MGr.v; i++)for (j=1; j<=MGr.v; j++){A[i][j]=MGr.length[i][j];path[i][j]=-1;}for (k=1; k<=MGr.v; k++)//k為中間點(diǎn){for (i=1; i<=MGr.v; i++)//起點(diǎn)for (j=1; j<=MGr.v; j++)//終點(diǎn)if (A[i][j]>A[i][k]+A[k][j]){A[i][j]=A[i][k]+A[k][j];path[i][j]=k;}}Dispath(A,path,MGr.v); //輸出最短路徑
}/*********************************************************
* 功能描述:添加景點(diǎn),添加道路
* 輸入?yún)?shù):無(wú)
* 輸出參數(shù):無(wú)
* 返回值 :無(wú)
* 其它說(shuō)明: 主要實(shí)現(xiàn)在另一個(gè)
************************************************************/void addviews(MGraph &MGr)//添加景點(diǎn),添加道路
{printf("請(qǐng)輸入需要添加的將要建設(shè)的景點(diǎn):\n");printf("請(qǐng)輸入景點(diǎn)編號(hào):");addviewsq(MGr) ;}/*********************************************************
* 功能描述:增加頂點(diǎn),增加道路
* 輸入?yún)?shù):需要查詢的頂點(diǎn)
* 輸出參數(shù):頂點(diǎn)信息
* 返回值 :無(wú)
* 其它說(shuō)明:主要實(shí)現(xiàn)
************************************************************/
void addviewsq(MGraph &MGr)
{int i;int a;//你輸入的景點(diǎn)編號(hào)char b;//做輸入判斷cout<<"請(qǐng)輸入你要查詢的景點(diǎn)編號(hào)"<<endl;cin>>a;if(a<=MGr.v){fflush(stdin);//清屏cout<<"此節(jié)點(diǎn)已經(jīng)在是否重新輸入"<<endl;scanf("%c",&b);if(b=='y'){
addviewsq(MGr);}fflush(stdin);if(b=='n'){//main();return ;}}else{MGr.v++;printf("請(qǐng)輸入景點(diǎn)名稱:\n");scanf("%s",MGr.view[MGr.v].date.name);printf("請(qǐng)輸入景點(diǎn)代號(hào):\n");scanf("%s",MGr.view[MGr.v].date.number);printf("請(qǐng)輸入景點(diǎn)信息:\n");scanf("%s",MGr.view[MGr.v].date.introduce);printf("添加完畢\n");for(i=1;i<=MGr.v;i++){MGr.length[MGr.v][i]=MGr.length[i][MGr.v]=Infinite;}}fflush(stdin);//清屏
}/*********************************************************
* 功能描述:前向遞歸查找路徑上的頂點(diǎn)
* 輸入?yún)?shù):無(wú)
* 輸出參數(shù):無(wú)
* 返回值 :無(wú)
* 其它說(shuō)明:Dijkstra算法庫(kù)
************************************************************/
void Ppath1(int path[],int i,int vs) //前向遞歸查找路徑上的頂點(diǎn)
{int k;k=path[i];if (k==vs) return; //找到了起點(diǎn)則返回Ppath1(path,k,vs); //找頂點(diǎn)k的前一個(gè)頂點(diǎn)printf("%d->",k); //輸出頂點(diǎn)k
}
/*********************************************************
* 功能描述:輸出最短路徑
* 輸入?yún)?shù):無(wú)
* 輸出參數(shù):無(wú)
* 返回值 :無(wú)
* 其它說(shuō)明:Dijkstra算法庫(kù)
************************************************************/
void Dispath1(int dist[],int path[],int s[],int v,int vs)//vs輸入的頂點(diǎn)號(hào)
{int i;for (i=1;i<=v;i++)if (s[i]==1){printf(" 從%d到%d的最短路徑長(zhǎng)度為:%d\t路徑為:",vs,i,dist[i]);if(i==vs){printf("%d->%d\n",vs,i);}else{printf("%d->",vs); //輸出路徑上的起點(diǎn)Ppath1(path,i,vs); //輸出路徑上的中間點(diǎn)printf("%d\n",i); //輸出路徑上的終點(diǎn)}}elseprintf("從%d到%d不存在路徑\n",vs,i);
}
/*********************************************************
* 功能描述:輸出最短路徑
* 輸入?yún)?shù):無(wú)
* 輸出參數(shù):無(wú)
* 返回值 :無(wú)
* 其它說(shuō)明:Dijkstra算法庫(kù)
************************************************************/
void Djst1(MGraph MGr,int vs)
{int dist[MaxViewNum],path[MaxViewNum];int s[MaxViewNum];int mindis,i,j,u;for (i=1; i<=MGr.v; i++){dist[i]=MGr.length[vs][i]; //距離初始化s[i]=0; //s[]置空if (MGr.length[vs][i]<Infinite) //路徑初始化path[i]=vs;elsepath[i]=-1;}s[vs]=1;path[vs]=0; //源點(diǎn)編號(hào)v放入s中for (i=1; i<=MGr.v; i++) //循環(huán)直到所有頂點(diǎn)的最短路徑都求出{mindis=Infinite; //mindis置最小長(zhǎng)度初值for (j=1; j<=MGr.v; j++) //選取不在s中且具有最小距離的頂點(diǎn)uif (s[j]==0 && dist[j]<mindis){u=j;mindis=dist[j];}s[u]=1; //頂點(diǎn)u加入s中for (j=1; j<=MGr.v; j++) //修改不在s中的頂點(diǎn)的距離if (s[j]==0)if (MGr.length[u][j]<Infinite && dist[u]+MGr.length[u][j]<dist[j]){dist[j]=dist[u]+MGr.length[u][j];path[j]=u;}}Dispath1(dist,path,s,MGr.v,vs); //輸出最短路徑
}
/*********************************************************
* 功能描述:輸出最短路徑
* 輸入?yún)?shù):無(wú)
* 輸出參數(shù):無(wú)
* 返回值 :無(wú)
* 其它說(shuō)明:Dijkstra算法庫(kù)
************************************************************/
void Djp(int vnum,MGraph &MGr)
{char a;while(1){printf("請(qǐng)輸入你要查尋最短路徑的起始點(diǎn):");scanf("%d",&vnum);fflush(stdin);if(vnum>=MGr.v || vnum<=0){printf("無(wú)此節(jié)點(diǎn)請(qǐng)重新輸入!");printf("是否重新輸入?請(qǐng)輸入y or n\n");scanf("%c",&a);if(a=='y'){printf("請(qǐng)輸入你要查尋最短路徑的起始點(diǎn):");scanf("%d",&vnum);Djp(vnum,MGr);}if(a=='n'){fflush(stdin);//main();break;}}else{fflush(stdin);Djst1(MGr,vnum);break;}}}
/*********************************************************
* 功能描述:修改景點(diǎn)信息
* 輸入?yún)?shù):景點(diǎn)名稱
* 輸出參數(shù):無(wú)
* 返回值 :無(wú)
* 其它說(shuō)明:無(wú)
************************************************************/
void change(MGraph &MGr)
{int a;printf("請(qǐng)輸入你要更改的信息的代號(hào):");scanf("%d",&a);if(a<=MGr.v-1){printf("請(qǐng)輸入修改的景點(diǎn)名:\n");scanf("%s",MGr.view[a].date.name);printf("請(qǐng)輸入修改的景點(diǎn)代號(hào):\n");scanf("%s",MGr.view[a].date.number);printf("請(qǐng)輸入修改的景點(diǎn)信息:\n");scanf("%s",MGr.view[a].date.introduce);}if(a>=MGr.v || a<0){printf("此節(jié)點(diǎn)不存在!\n");}}
/*********************************************************
* 功能描述:增加景點(diǎn)道路
* 輸入?yún)?shù):景點(diǎn)名稱
* 輸出參數(shù):無(wú)
* 返回值 :無(wú)
* 其它說(shuō)明:無(wú)
************************************************************/
void addlen2(MGraph &MGr,int i)
{int j;int d;printf("請(qǐng)輸入你要添加的終點(diǎn)編號(hào):\n");scanf("%d",&j);if(j>MGr.v){printf("此節(jié)點(diǎn)不存在或者是本身!請(qǐng)重新輸入!");addlen2(MGr,i);}else{printf("請(qǐng)輸入距離:\n");scanf("%d",&d);MGr.length[i][j]=MGr.length[j][i]=d;}fflush(stdin);
}
/*********************************************************
* 功能描述:刪除景點(diǎn)道路
* 輸入?yún)?shù):兩個(gè)景點(diǎn)
* 輸出參數(shù):無(wú)
* 返回值 :無(wú)
* 其它說(shuō)明:無(wú)
************************************************************/
void deletelen(MGraph &MGr)
{int i,j;printf("請(qǐng)輸入你要?jiǎng)h除的路徑端點(diǎn)(刪除后均連通):\n");printf("請(qǐng)輸入起點(diǎn):\n");scanf("%d",&i);printf("請(qǐng)輸入終點(diǎn):\n");scanf("%d",&j);if(MGr.length[i][j]!=Infinite){if(i==j){MGr.length[i][j]=MGr.length[j][i]=0;printf("輸入不合理!\n");}else{MGr.length[i][j]=MGr.length[j][i]=Infinite;MGr.e--;printf("刪除路徑成功!\n");}}else{printf("無(wú)直接路徑\n");}
}
/********************************************************* * 版權(quán)所有 (C)2017,sunrenyuan * * 文件名稱:jiemi.h * 文件標(biāo)識(shí):jiemi.h * 內(nèi)容摘要:各種函數(shù)庫(kù)定義 * 其它說(shuō)明: * 當(dāng)前版本: V3.0 * 作 者: 孫仁圓 * 完成日期: 2017.12.21 * ************************************************************/ #ifndef JIEMI_H_INCLUDED #define JIEMI_H_INCLUDED#endif // JIEMI_H_INCLUDED#define MaxSize 100#define NOTVISITED 0 #define Infinite 1073741823 #define MaxViewNum 50 /*景點(diǎn)個(gè)數(shù)最大50*/ #define MaxRoad 1000 /*定義路徑為無(wú)窮大*/ #define N 12 /*目前景點(diǎn)個(gè)數(shù)*/typedef struct {char name[30]; //景點(diǎn)名稱char number[10]; //代號(hào)char introduce[200]; //景點(diǎn)介紹}Elemtype; //景點(diǎn)信息typedef struct {int num; //景點(diǎn)編號(hào)Elemtype date;// 景點(diǎn)信息}View; typedef struct {View view[MaxViewNum];//存放景點(diǎn)的一位數(shù)組 數(shù)組0 單元沒(méi)有用上int v,e;//定點(diǎn)數(shù)邊數(shù)int length[MaxViewNum][MaxViewNum];//存放路徑長(zhǎng)度 }MGraph;void addviewsq(MGraph &MGr);//增加頂點(diǎn)void init(MGraph &MGr,int shortest[MaxViewNum][MaxViewNum]);//景點(diǎn)建設(shè)void introduce(MGraph &MGr);//景點(diǎn)介紹 void map();//景點(diǎn)地圖 void Floyd(MGraph MGr);//Floyd算法 void Ppath(int path[][MaxViewNum],int i,int j) ;//遞歸查找頂點(diǎn) void Dispath(int A[][MaxViewNum],int path[][MaxViewNum],int v);void addviews(MGraph &MGr);//增加頂點(diǎn)void Djst1(MGraph MGr,int vs);//Dijkstra算法 void Dispath1(int dist[],int path[],int s[],int v,int vs);// void Ppath1(int path[],int i,int vs) ;//前向遞歸查找路徑上的頂點(diǎn) void Djp(int vnum,MGraph &MGr);//void change(MGraph &MGr);//修改景點(diǎn)信息 void addlen2(MGraph &MGr,int i);//增加邊 void deletelen(MGraph &MGr);//刪除邊
/********************************************************* * 版權(quán)所有 (C)2017,sunrenyuan * * 文件名稱:jiemi.h * 文件標(biāo)識(shí):jiemi.h * 內(nèi)容摘要:各種函數(shù)庫(kù)定義 * 其它說(shuō)明: * 當(dāng)前版本: V3.0 * 作 者: 孫仁圓 * 完成日期: 2017.12.21 * ************************************************************/ #ifndef JIEMI_H_INCLUDED #define JIEMI_H_INCLUDED#endif // JIEMI_H_INCLUDED#define MaxSize 100#define NOTVISITED 0 #define Infinite 1073741823 #define MaxViewNum 50 /*景點(diǎn)個(gè)數(shù)最大50*/ #define MaxRoad 1000 /*定義路徑為無(wú)窮大*/ #define N 12 /*目前景點(diǎn)個(gè)數(shù)*/typedef struct {char name[30]; //景點(diǎn)名稱char number[10]; //代號(hào)char introduce[200]; //景點(diǎn)介紹}Elemtype; //景點(diǎn)信息typedef struct {int num; //景點(diǎn)編號(hào)Elemtype date;// 景點(diǎn)信息}View; typedef struct {View view[MaxViewNum];//存放景點(diǎn)的一位數(shù)組 數(shù)組0 單元沒(méi)有用上int v,e;//定點(diǎn)數(shù)邊數(shù)int length[MaxViewNum][MaxViewNum];//存放路徑長(zhǎng)度 }MGraph;void addviewsq(MGraph &MGr);//增加頂點(diǎn)void init(MGraph &MGr,int shortest[MaxViewNum][MaxViewNum]);//景點(diǎn)建設(shè)void introduce(MGraph &MGr);//景點(diǎn)介紹 void map();//景點(diǎn)地圖 void Floyd(MGraph MGr);//Floyd算法 void Ppath(int path[][MaxViewNum],int i,int j) ;//遞歸查找頂點(diǎn) void Dispath(int A[][MaxViewNum],int path[][MaxViewNum],int v);void addviews(MGraph &MGr);//增加頂點(diǎn)void Djst1(MGraph MGr,int vs);//Dijkstra算法 void Dispath1(int dist[],int path[],int s[],int v,int vs);// void Ppath1(int path[],int i,int vs) ;//前向遞歸查找路徑上的頂點(diǎn) void Djp(int vnum,MGraph &MGr);//void change(MGraph &MGr);//修改景點(diǎn)信息 void addlen2(MGraph &MGr,int i);//增加邊 void deletelen(MGraph &MGr);//刪除邊
總結(jié)
以上是生活随笔為你收集整理的课程实训-校园导游系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 区块链百科合集 之 层 级 架 构
- 下一篇: Licheepi zero SPI Fl