您的位置:首页 > 其它

校园导游咨询

2008-08-01 14:48 211 查看
//=========================================================================================
//
// 05软件 jacklam
// 校园导游咨询
// map.cpp
//=========================================================================================
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
//-----------------------------------------------------------------------------------------
//-------------------------------图邻接矩阵存储表示----------------------------------------
#define infinity 1000
#define max_vertex_num 20
typedef int PathMatrix;
typedef int DistancMatrix;
typedef struct infotype
{
char str[80];
}infotype;
typedef struct arccell
{
int adj;
infotype info;
}arccell,adjmatrix[max_vertex_num][max_vertex_num];
typedef struct vexname
{
char name[30];
char info[80];
}vexname;
typedef struct
{
vexname vexs[max_vertex_num];
adjmatrix arcs;
int vexnum,arcnum;
}mgraph;
//-----------------------------------------------------------------------------------------
//-------------------------------------创建无向网------------------------------------------
CreateUDN(mgraph &g)
{
g.vexnum=12;g.arcnum=18;
strcpy(g.vexs[0].name,"南门");strcpy(g.vexs[1].name,"学术交流中心");
strcpy(g.vexs[2].name,"学生活动中心");
strcpy(g.vexs[3].name,"图书馆");strcpy(g.vexs[4].name,"西楼");
strcpy(g.vexs[5].name,"行政楼");
strcpy(g.vexs[6].name,"东楼");strcpy(g.vexs[7].name,"四堂");
strcpy(g.vexs[8].name,"后勤集团");
strcpy(g.vexs[9].name,"紫竹苑");strcpy(g.vexs[10].name,"紫薇苑");
strcpy(g.vexs[11].name,"紫荆苑");
strcpy(g.vexs[0].info,"学校的大门,进入南区");
strcpy(g.vexs[1].info,"进行学术交流的地方");
strcpy(g.vexs[2].info,"学生会,社团等活动的中心");
strcpy(g.vexs[3].info,"韶关学院图书馆,学校的重点,中心点");
strcpy(g.vexs[4].info,"西楼是教学楼,在行政楼西边");
strcpy(g.vexs[5].info,"行政楼,学校办公人员办公的地方");
strcpy(g.vexs[6].info,"东楼是教学楼,在行政楼的东边");
strcpy(g.vexs[7].info,"四堂,学校第四食堂,也可算老师与学生共用的食堂");
strcpy(g.vexs[8].info,"后勤集团,负责学校后勤人员工作的地方");
strcpy(g.vexs[9].info,"紫竹苑,学生宿舍(男),费用一年1000元");
strcpy(g.vexs[10].info,"紫薇苑,学生宿舍(女),费用一年1500元,学校的模范苑");
strcpy(g.vexs[11].info,"紫荆苑,学生宿舍(男),费用一年1500元");
for(int i=0;i<g.vexnum;i++)
for(int j=0;j<g.vexnum;j++)
{
g.arcs[i][j].adj=infinity;
}
g.arcs[0][1].adj=10;g.arcs[0][2].adj=12;g.arcs[1][3].adj=8;
strcpy(g.arcs[0][1].info.str,"南门<-->学术交流中心");
strcpy(g.arcs[0][2].info.str,"南门<-->学生活动中心");
strcpy(g.arcs[1][3].info.str,"学术交流中心<-->图书馆");
g.arcs[1][0]=g.arcs[0][1];g.arcs[2][0]=g.arcs[0][2];g.arcs[3][1]=g.arcs[1][3];
g.arcs[0][5].adj=10;g.arcs[3][4].adj=8;g.arcs[4][5].adj=4;
strcpy(g.arcs[0][5].info.str,"南门<-->行政楼");
strcpy(g.arcs[3][4].info.str,"图书馆<-->西楼");
strcpy(g.arcs[4][5].info.str,"西楼<-->行政楼");
g.arcs[5][0]=g.arcs[0][5];g.arcs[4][3]=g.arcs[3][4];g.arcs[5][4]=g.arcs[4][5];
g.arcs[5][6].adj=4;g.arcs[6][2].adj=8;g.arcs[6][9].adj=8;
strcpy(g.arcs[5][6].info.str,"行政楼<-->东楼");
strcpy(g.arcs[6][2].info.str,"东楼<-->学生活动中心");
strcpy(g.arcs[6][9].info.str,"东楼<-->紫竹苑");
g.arcs[6][5]=g.arcs[5][6];g.arcs[2][6]=g.arcs[6][2];g.arcs[9][6]=g.arcs[6][9];
g.arcs[7][4].adj=4;g.arcs[7][8].adj=4;g.arcs[8][4].adj=4;
strcpy(g.arcs[7][4].info.str,"四堂<-->西楼");
strcpy(g.arcs[7][8].info.str,"四堂<-->后勤集团");
strcpy(g.arcs[8][4].info.str,"后勤集团<-->西楼");
g.arcs[4][7]=g.arcs[7][4];g.arcs[8][7]=g.arcs[7][8];g.arcs[4][8]=g.arcs[8][4];
g.arcs[9][8].adj=6;g.arcs[10][9].adj=6;g.arcs[11][2].adj=10;
strcpy(g.arcs[9][8].info.str,"紫竹苑<-->后勤集团");
strcpy(g.arcs[10][9].info.str,"紫薇苑<-->紫竹苑");
strcpy(g.arcs[11][2].info.str,"紫荆苑<-->学生活动中心");
g.arcs[8][9]=g.arcs[9][8];g.arcs[9][10]=g.arcs[9][8];g.arcs[2][11]=g.arcs[11][2];
g.arcs[11][10].adj=4;g.arcs[10][7].adj=12;g.arcs[7][3].adj=6;
strcpy(g.arcs[11][10].info.str,"紫荆苑<-->紫薇苑");
strcpy(g.arcs[10][7].info.str,"紫薇苑<-->四堂");
strcpy(g.arcs[7][3].info.str,"四堂<-->图书馆");
g.arcs[10][11]=g.arcs[11][10];g.arcs[7][10]=g.arcs[10][7];g.arcs[3][7]=g.arcs[7][3];
return 1;
}//----------------------------------------------------------------------------------------
//-------------------------------------输出无向网------------------------------------------
PrintUDN(mgraph g)
{
int i;
cout<<"请输入其代码,查询其相关信息:";
cin>>i;
cout<<"这是它的相关信息:"<<endl;
cout<<g.vexs[i].info;
return 1;
}//----------------------------------------------------------------------------------------
//-------------------------------查询点到点的最短路径--------------------------------------
SearchUDN(mgraph G,PathMatrix Path[max_vertex_num][max_vertex_num][max_vertex_num],DistancMatrix Dist[max_vertex_num][max_vertex_num])
{
int l,m;
cout<<"/n请输入景点代码,寻找最短路径:(eg:1 3)"<<endl;
cin>>l>>m;
int i,u,v,w;
//int j;
for(v=0;v<G.vexnum;++v)
for(w=0;w<G.vexnum;++w)
{ Dist[v][w]=G.arcs[v][w].adj;
for(u=0;u<G.vexnum;++u)
Path[v][w][u]=0;
if(Dist[v][w]<infinity)
{ Path[v][w][v]=1;
Path[v][w][w]=1;
}//end of if
}//end of for
for(u=0;u<G.vexnum;++u)
for(v=0;v<G.vexnum;++v)
for(w=0;w<G.vexnum;++w)
if(Dist[v][u]+Dist[u][w]<Dist[v][w])
{
Dist[v][w]=Dist[v][u]+Dist[u][w];
for(i=0;i<G.vexnum;++i)
{
Path[v][w][i]=Path[v][u][i]||Path[u][w][i];
}
}//end of if
­
//------- print the last Dist[i][j]-----
/* printf("Vertice");
for(i=0;i<G.vexnum;i++)
printf("%5d",i);
printf("/n");
for(i=0;i<G.vexnum;i++)
{ printf("%5d ",i);
for(j=0;j<G.vexnum;j++)
printf("%5d",Dist[i][j]);
printf("/n");
}//end of for(i=0;i<G.vexnum;i++)
printf("/n");*/
//--------------------------------------
cout<<"这是它所要走的路线:"<<endl;
for(i=0;i<G.vexnum;++i)
{
if(Path[l][m][i])
cout<<G.vexs[i].name<<" ";
}
cout<<endl;
cout<<G.vexs[l].name<<"<-->"<<G.vexs[m].name<<"需要 "<<Dist[l][m]<<"km"<<endl;
return 1;
}//----------------------------------------------------------------------------------------
//-------------------------------------学校地图--------------------------------------------
PrintMap()
{
cout<<" 韶关学院南区地图 (单位:KM) "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" |-----10------------南门----------------12------------------| "<<endl;
cout<<" | | 学生活动中心 "<<endl;
cout<<" --------学术交流 |10 | "<<endl;
cout<<" | | | "<<endl;
cout<<" | 8 | 8 | "<<endl;
cout<<" 8| |------------西楼- -- 4 - -行政楼- -- 4 - -东楼--------------------| "<<endl;
cout<<" | | | | | | "<<endl;
cout<<" | | 7 4| |4 |8 || 10 "<<endl;
cout<<" 图书管-------| | 4 | 6 | || "<<endl;
cout<<" 四堂-----后勤----------------------紫竹 || "<<endl;
cout<<" | | || "<<endl;
cout<<" | |6 || "<<endl;
cout<<" | 12 | |—— "<<endl;
cout<<" |===================================紫薇-—4—紫荆 "<<endl;
return 1;
}//----------------------------------------------------------------------------------------
//-------------------------------------主函数----------------------------------------------
main()
{
mgraph g;
PathMatrix Path[max_vertex_num][max_vertex_num][max_vertex_num];
DistancMatrix Dist[max_vertex_num][max_vertex_num];
PrintMap();
CreateUDN(g);
cout<<"这是学校景点的代码:"<<endl;
for(int i=0;i<g.vexnum;i++)
{
cout<<i<<":"<<g.vexs[i].name<<" ";
if(i%4==0)
cout<<endl;
}
cout<<endl;
PrintUDN(g);
gofor:
SearchUDN(g,Path,Dist);
goto gofor;
return 1;
}//========================================================================================
­
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: