#include <iostream>
#include <string> //引入标准库中的头文件
#include "ParkGuide.cpp" //引用 ParkGuide.cpp 文件
#include "TSP.cpp" //引用解决最佳旅游路线的TSP文件
using namespace std;
int main(int argc, char* argv[])
{
const int numv = 8; //顶点数
int control=1; //控制
int which; //功能选择变量
string name; //插入顶点的值
int border[numv][numv]={ //按邻接矩阵确定顶点的权值
{10000,1,2,2,10000,10000,10000,10000}, //0号景点
{1,10000,10000,10000,10000,5,10000,10000},//1号景点
{2,10000,10000,3,3,10000,4,10000}, //2号景点
{2,10000,3,10000,10000,3,2,3}, //3号景点
{10000,10000,3,10000,10000,10000,1,10000},//4号景点
{10000,5,10000,3,10000,10000,5,2}, //5号景点
{10000,10000,4,2,1,5,10000,4}, //6号景点
{10000,10000,10000,3,10000,2,4,10000} //7号景点
};
string vname[numv]={"公园正门","牛头寨","梅园山庄","方家茶园","情人林","猕猴园","仙姑瀑布","仙姑庙"}; //初始化各顶点
int* p; //定义指针p
string* q; //定义指针q
p = &border[0][0]; //p指针指向cost数组的起始位置
q = vname; //q指针指向vname数组
ParkGuide<string> g(p, q, numv ); //调用Graph程序
while ( control==1 ) //控制
{
cout<<" ****************************************** "<<endl;//输入你要进行的操作的序号
cout<<" ***********欢迎您到姑婆山国家森林公园************* "<<endl;
cout<<" **********************************************************"<<endl;
cout<<" ** 请选择你想要进行的操作: **"<<endl;
cout<<" ** 1、查看公园地图 **"<<endl;
cout<<" ** 2、查看路程信息 **"<<endl;
cout<<" ** 3、提供游览景点的最短路径 **"<<endl;
cout<<" ** 4、提供游览公园的一种最佳路径 **"<<endl;
cout<<" ** 5、退出 **"<<endl;
cout<<" **********************************************************"<<endl;
cin >> which;
switch( which ) //功能选择
{
case 1: //输出图的各顶点的值
cout<<" [公园地图] "<<endl;
cout<<" <7> 仙姑庙 "<<endl;
cout<<" . . . "<<endl;
cout<<" . . . "<<endl;
cout<<" <6> 仙姑瀑布 . <5>猕猴园 "<<endl;
cout<<" . . . . . . "<<endl;
cout<<" . . . . . . "<<endl;
cout<<" <4> 情人林 . . . . . "<<endl;
cout<<" . . <3>方家茶园 . "<<endl;
cout<<" . . . . . "<<endl;
cout<<" .. . . . "<<endl;
cout<<" <2>梅园山庄 . <1> 牛头寨 "<<endl;
cout<<" . . . "<<endl;
cout<<" . . . "<<endl;
cout<<" <0> 正 门 "<<endl;
break;
case 2: //输出图中的路径
int i;
int j;
cout<<"所有的边的信息为:"<<"\n";
try
{
g.PutOutArcInfo();
}
catch(char*)
{
cout<<"输出不正确!"<<endl;
}
break;
case 3: //求最短路径
cout<<"请输入您所在景点序号:"<<"\n";
int vv ;
cin>>vv;
cout<<"请输入您想到的景点序号,若要全部显示请输入9:"<<"\n";
int vvt ;
cin>>vvt;
try
{
g.Dijkstra(vv,vvt);
}
catch(char*)
{
cout<<"输出顶点不正确!"<<endl;
}
break;
case 4:
cout<<"本公园为您提供的最佳旅游路线是:"<<"\n";
g.TSP(0); //求最优旅游路线
break;
case 5: //退出
control=0;
cout<<"┏━━━━━━━━━━━┓"<<endl;
cout<<"┃谢谢使用,祝您旅途愉快!┃"<<endl;
cout<<"┗━━━━━━━━━━━┛"<<endl;
break;
default:cout<<"对不起,输入错误,请重新输入!"<<endl<<endl<<endl;
}
}
return 0;
}