校园导游Word文档格式.docx
《校园导游Word文档格式.docx》由会员分享,可在线阅读,更多相关《校园导游Word文档格式.docx(27页珍藏版)》请在冰点文库上搜索。
![校园导游Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/6/11ef6367-638e-4592-bb6d-344a6cab2d22/11ef6367-638e-4592-bb6d-344a6cab2d221.gif)
char*info;
//该弧的相关信息
};
template<
classT>
struct_MGraph{
Tvexs[MAX_VERTEX_NUM];
ArcCellarcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
intvexnum;
intarcnum;
intkind;
typedefintPathMatrix_1[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
//路径矩阵,二维数组
typedefintShortPathTable[MAX_VERTEX_NUM];
//最短距离表,一维数组
typedefintPathMatrix_2[MAX_VERTEX_NUM][MAX_VERTEX_NUM][MAX_VERTEX_NUM];
//3维数组
typedefintDistancMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
//2维数组
classMGraph{
public:
_MGraph<
T>
mgraph;
boolvisited[MAX_VERTEX_NUM];
voidCreateGraph();
//v是图的顶点集vr是图的边集//构造函数
//voidDestroyGraph();
//析构函数销毁图
intLocateVex(Tu);
//图存在,图中存在顶点u则返回该顶点在图中的位置
boolCreateUDN();
//构造无向网
bool(*VisitFunc)(Tv);
//访问顶点v的方式
voidShortestPath_DIJ(intv0,PathMatrix_1&
P,ShortPathTable&
D);
voidShortestPath_FLOYD(PathMatrix_2&
P,DistancMatrix&
voidMGraph<
:
CreateGraph()//ok
{
CreateUDN();
}
boolMGraph<
CreateUDN()//ok
//构造无向网
inti,j,w;
Tv1,v2;
cout<
<
"
请输入景点的个数,路径边的个数:
"
;
cin>
>
mgraph.vexnum>
mgraph.arcnum;
请输入各个景点"
for(i=0;
i<
mgraph.vexnum;
i++)
//构造顶点向量
{
cin>
mgraph.vexs[i];
}
i++)
//初始化邻接矩阵
for(j=0;
j<
j++)
{
if(i==j)
mgraph.arcs[i][j].adj=0;
else
mgraph.arcs[i][j].adj=infinity;
mgraph.arcs[i][j].info=false;
}
mgraph.arcnum;
//构造邻接矩阵
cout<
请输入一条路径边依附的两个景点点,权值:
v1>
v2>
w;
intm=LocateVex(v1);
intn=LocateVex(v2);
mgraph.arcs[m][n].adj=w;
//<
v1,v2>
mgraph.arcs[n][m].adj=w;
v2,v1>
mgraph.kind=1;
returntrue;
intMGraph<
LocateVex(Tu)//ok
for(inti=0;
MAX_VERTEX_NUM;
if(u==mgraph.vexs[i])
returni;
return-1;
//#endif
ShortestPath_FLOYD(PathMatrix_2&
D)
//用Floyd算法求有向网G中各对顶点v和w之间的最短路径P[v][w]及其带权长度D[v][w]
//若P[v][w][u]为TRUE,则u是从v到w当前求得最短路径上的顶点。
{
intu,v,w,i;
for(v=0;
v<
v++)
//各对结点之间初始已知路径及距离
for(w=0;
w<
w++)
D[v][w]=mgraph.arcs[v][w].adj;
//顶点v到顶点w的直接距离
for(u=0;
u<
u++)
{
P[v][w][u]=false;
//路径矩阵初值
}
if(D[v][w]<
infinity)
//从v到w有直接路径
P[v][w][v]=P[v][w][w]=true;
//由v到w的路径经过v和w两点
for(u=0;
for(v=0;
for(w=0;
if(D[v][u]+D[u][w]<
D[v][w])
//从v经u到w的一条路径更短
{
D[v][w]=D[v][u]+D[u][w];
//更新最短距离
for(i=0;
{
P[v][w][i]=P[v][u][i]||P[u][w][i];
//从v到w的路径经过从v到u和从u到w的所有路径
}
}
MGraph<
g;
voidWelcome()//欢迎函数
﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏"
endl;
欢迎光临南通大学"
﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏﹏"
南通大学计算机科学与技术学院"
校园导航系统为你服务"
制作人:
system("
pause"
);
cls"
voidGoodbye()
感谢您的使用,再见!
voidMap()//校园平面图函数
这是南通大学的校园平面图!
╔══════════════════════════════════════╗"
║南通大学校园平面图║"
║↑北║"
║←→╔══╗║"
║↓║北门║║"
║┏━━━━━━┓╚══╝║"
║┃┃┊║"
║┃西操场┃┊┏━━━━┓║"
║┃┃┏━━━━┓┊┃二食堂┃║"
║┃┃┃综合楼┃┄┊┈┈┈┃┃┈┊║"
║┗━━━━━━┛┗━━━━┛┊┗━━━━┛┊║"
║┆┏━━┓┊┊┊║"
║╔═╗┏━━━┓┃超市┃┊┊┊║"
║║西║┃一食堂┃┗━━┛┊┊┊║"
║║门║┃┃┊┊┊┊║"
║╚═╝┗━━━┛┊┏━━━━━━━━━┓┏━━┓║"
║┆┊┃┃英语角║"
║┏━┳━━┓┄┃图书馆┃┃┃║"
║┃┃教┃┄┄┄┄┄┊┃┃┗━━┛║"
║┃┃学┃┊┗━━━━━━━━━┛║"
║┃┃楼┃┏━━━━┓┊┏━━━━━┓║"
║┃┃1-4┃┃计算机楼┃┏━━━━━━━━━┓┈┃教学楼6-9┃║"
║┃┃┃┃方肇周楼┃┃┃┃┃║"
║┗━┻━━┛┗━━━━┛┃湖┃┃┃║"
║┊┊┃┃┗━━━━━┛║"
║┊┊┃┃║"
║┊┊┗━━━━━━━━━┛║"
║┏━━━┓┊║"
║┃纺化楼┃┊╔═══╗║"
║┃┃┄┄┄┄┄┄║南门║║"
║┗━━━┛╚═══╝║"
╚══════════════════════════════════════╝"
欢迎来到美丽的南通大学主校区!
StartGuide();
voidStartGuide()//开始导航函数
charchoice;
-------------------------"
A.查看校园平面图"
B.查询最短路径"
C.查询景点信息"
D.退出导航系统"
请输入你要进行的操作:
choice;
switch(choice)
case'
A'
Map();
break;
B'
Short_Floyd();
break;
C'
system("
SearchInformation();
}break;
D'
Goodbye();
default:
cout<
你的输入有误"
voidAdminister()
A.添加新的景点,即输入整个校园导航图。
B.返回导航主页。
请输入你想进行的操作:
AddPoint();
Select();
system("
Administer();
voidInputPassword()
intm=0;
stringpassword;
stringc;
CLS"
ifstreaminfile("
password.txt"
infile>
c;
while(m<
3)
请输入登录密码:
password;
if(c==password)
cout<
----------------------------"
密码正确进入管理系统"
自动跳转中..."
else
-------------------"
密码错误!
!
还有"
2-m<
次机会"
m++;
voidAddPoint()
请创建校园导游图."
g.CreateGraph();
Select();
intopekind;
voidopeshow()
*菜单*"
1.创建景点图(数组存储结构)"
2.每一对景点之间的最短路径"
3.退出"
请选择操作:
voidShort_Floyd()
{MGraph<
PathMatrix_2p;
DistancMatrixd;
inti,j,k;
opeshow();
opekind;
while(opekind>
0&
&
opekind<
4)
if(opekind==1)
请选择有向网"
elseif(opekind==2)
g.ShortestPath_FLOYD(p,d);
//求每对顶点间的最短路径
各景点点最短距离路径的矩阵:
for(i=0;
g.mgraph.vexnum;
for(j=0;
cout<
d[i][j]<
cout<
if(i!
=j)
//避免同一顶点之间距离的输出
cout<
g.mgraph.vexs[i]<
到"
g.mgraph.vexs[j]<
的最短距离为:
游园路线:
{//避免同一顶点之间距离的输出
由"
经过:
for(k=0;
k<
k++)
if(p[i][j][k]==1)
cout<
g.mgraph.vexs[k]<
}//for
else
程序运行结束,Bye-Bye!
break;
}//if
opeshow();
}//while
Goodbye();
voidSearchInformation()
选择你想查询的景点名称."
A.西操场。
B.一食堂。
C.教育超市。
D.综合楼。
E.图书馆。
F.计算机楼。
G.纺化楼。
H.湖。
I.二食堂。
J.英语角。
请选择."
正在查询请稍后..."
Sleep(3000);
西操场是同学们活动最多的操场,是运动会举行的地方."
case'
一食堂,吃饭的地方."
超市,同学们一般的生活用品都可以买到,不过比较贵."
综合楼,街舞社一般在此活动."
E'
图书馆,期中期末的时候想找到一个位置太难了."
F'
计算机楼,现教中学的所在地,又称方肇周楼."
G'
纺化楼,纺院学生上课的地方."
H'
湖,学校里最美的地方."
I'
二食堂,吃饭的地方."
J'
英语角,早晨可以听到朗朗读书声."
default:
StartGuide();
voidSelect()
╔═══════════╗"
║A.导航使用者║"
║B.系统管理员║"
║C.退出此系统║"
╚═══════════╝"
请选择你的操作:
StartGuide();
In