校园导航c石家庄铁道大学Word格式文档下载.docx
- 文档编号:5779798
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:16
- 大小:18.57KB
校园导航c石家庄铁道大学Word格式文档下载.docx
《校园导航c石家庄铁道大学Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《校园导航c石家庄铁道大学Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。
//简介
}infotype;
typedefstruct
infotypevexs[MAX_VERTEX_NUM];
AdjMatrixarcs;
intvexnum,arcnum;
}MGraph;
MGraphb;
voidcmd(void);
MGraphInitGraph(void);
voidMenu(void);
voidBrowser(MGraph*G);
voidShortestPath_DIJ(MGraph*G);
voidFloyd(MGraph*G);
voidSearch(MGraph*G);
intLocateVex(MGraph*G,char*v);
MGraph*CreatUDN(MGraph*G);
voidprint(MGraph*G);
/******************************************************/
voidmain(void)
system("
color3f"
);
modecon:
cols=150lines=130"
cmd();
}
voidcmd(void)
inti;
b=InitGraph();
Menu();
scanf("
%d"
&
i);
while(i!
=5)
switch(i)
case1:
cls"
Browser(&
b);
break;
case2:
ShortestPath_DIJ(&
case3:
Floyd(&
case4:
Search(&
case5:
exit
(1);
default:
MGraphInitGraph(void)
MGraphG;
inti,j;
G.vexnum=10;
G.arcnum=14;
for(i=0;
i<
G.vexnum;
i++)
G.vexs[i].num=i;
strcpy(G.vexs[0].name,"
青春苑"
strcpy(G.vexs[0].introduction,"
新建标准化食堂,价钱合理"
strcpy(G.vexs[1].name,"
春晖楼"
strcpy(G.vexs[1].introduction,"
全体教师办公场所,楼高12层,各种设施齐全"
strcpy(G.vexs[2].name,"
九栋"
strcpy(G.vexs[2].introduction,"
计算机,土木,建艺男生宿舍楼,全校最大宿舍楼,可交电费"
strcpy(G.vexs[3].name,"
教学实验楼"
strcpy(G.vexs[3].introduction,"
在建中的全校最大基础教学楼,设计为19层"
strcpy(G.vexs[4].name,"
图书馆"
strcpy(G.vexs[4].introduction,"
藏书60万册,设施良好,2楼为电子阅览室,环境幽雅"
strcpy(G.vexs[5].name,"
大操场"
strcpy(G.vexs[5].introduction,"
现代化塑胶跑道,人造草坪,适宜锻炼身体的场所"
strcpy(G.vexs[6].name,"
沁园"
strcpy(G.vexs[6].introduction,"
绿树成荫,适宜休息和读书"
strcpy(G.vexs[7].name,"
一教"
strcpy(G.vexs[7].introduction,"
现为全校最大的教学楼,共5层,环形建筑,适宜学习"
strcpy(G.vexs[8].name,"
二教"
strcpy(G.vexs[8].introduction,"
全校第二大教学楼,环境较差"
strcpy(G.vexs[9].name,"
第九实验楼"
strcpy(G.vexs[9].introduction,"
多媒体教学场所,设施先进,环境良好"
for(j=0;
j<
j++)
G.arcs[i][j].adj=INFINITY;
G.arcs[0][1].adj=100;
G.arcs[0][2].adj=200;
G.arcs[0][6].adj=120;
G.arcs[1][7].adj=300;
G.arcs[2][3].adj=120;
G.arcs[3][6].adj=220;
G.arcs[3][4].adj=100;
G.arcs[4][5].adj=300;
G.arcs[4][9].adj=250;
G.arcs[5][9].adj=180;
G.arcs[6][7].adj=60;
G.arcs[6][9].adj=300;
G.arcs[7][8].adj=80;
G.arcs[8][9].adj=210;
for(j=0;
G.arcs[j][i].adj=G.arcs[i][j].adj;
returnG;
}//InitGraphend
voidMenu()
{
printf("
\t\t\t\t\t"
printf("
石"
Sleep(100);
家"
庄"
Sleep(100);
铁"
道"
大"
学"
导"
游"
图"
\n"
┏━━━━━━━━━━━━━━━━━━━━┓\n"
┃1.浏览校园全景┃\n"
┃2.查看出发地到主要目的地的游览路线┃\n"
┃3.选择出发点和目的地┃\n"
┃4.查看景点信息┃\n"
┃5.退出系统┃\n"
┗━━━━━━━━━━━━━━━━━━━━┛\n"
学校重要景点如下:
0.青春苑1.春晖楼2.九栋\n"
3.教学实验楼4.图书馆5.大操场\n"
6.沁园7.一教8.二教\n"
9.第九实验楼\n"
参照系统,选择游览形式,输入数字(1-5):
"
voidBrowser(MGraph*G)
intv;
┏━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"
┃编号┃景点名称┃简介┃\n"
for(v=0;
v<
G->
vexnum;
v++)
┃%-4d┃%-16s┃%-56s┃\n"
G->
vexs[v].num,G->
vexs[v].name,G->
vexs[v].introduction);
┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"
\n石家庄铁道大学一览图\n"
温馨提示:
*为道路\n"
机械工程学院*一栋***十栋十一栋\n"
****十五栋\n"
*第九实验室*交通事故应急中心洗浴中心**********************************\n"
*************************\n"
大操场****开水房篮球场二*九栋*\n"
**第三实验楼*樱花林消费合作社***\n"
*********************************************************************************************二三食堂\n"
*****\n"
游泳教学场*图书馆第二实验楼*五教教学实验楼*八栋*七栋*****六栋\n"
***********************************************************************五栋*四栋*****研究生宿舍楼\n"
体育馆********************\n"
**************沁园*翠园第一实验室大礼堂*泽园*****青春苑\n"
西操场****\n"
三教*******************************************************************************************\n"
****\n"
*一教*四教三栋(含医院)二栋*春晖楼*****十三栋\n"
************************************************************************************************\n"
二教***开元楼*****十二栋\n"
******************************************************************************************************\n"
工程训练中心**招待所*\n"
**************************\n"
学校大门学校小门\n"
//迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,v0为起点
voidShortestPath_DIJ(MGraph*G)
intv,w,i,min,t=0,x,flag=1,v0;
intfinal[20],D[20],p[20][20];
while(flag)
请输入一个起始景点编号(0-9):
v0);
if(v0<
0||v0>
vexnum)
景点编号不存在!
请重新输入景点编号:
scanf("
if(v0>
=0&
&
v0<
flag=0;
final[v]=0;
D[v]=G->
arcs[v0][v].adj;
for(w=0;
w<
w++)
p[v][w]=0;
if(D[v]<
INFINITY)
p[v][v0]=1;
p[v][v]=1;
D[v0]=0;
final[v0]=1;
for(i=1;
min=INFINITY;
if(!
final[w])
if(D[w]<
min){v=w;
min=D[w];
final[v]=1;
for(w=0;
final[w]&
(min+G->
arcs[v][w].adj<
D[w]))
{
D[w]=min+G->
arcs[v][w].adj;
for(x=0;
x<
x++)
p[w][x]=p[v][x];
p[w][w]=1;
}
if(v0!
=v)printf("
%s"
vexs[v0].name);
if(p[v][w]&
w!
=v0)printf("
-->
vexs[w].name);
t++;
if(t>
vexnum-1&
v0!
=v)printf("
总路线长%dm\n\n"
D[v]);
}//ShortestPath_DIJend
voidFloyd(MGraph*G)
intv,u,i,w,k,j,flag=1,p[10][10][10],D[10][10];
D[v][w]=G->
for(u=0;
u<
u++)
p[v][w][u]=0;
if(D[v][w]<
p[v][w][v]=1;
p[v][w][w]=1;
for(u=0;
if(D[v][u]+D[u][w]<
D[v][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];
请输入出发点和目的地的编号:
%d%d"
k,&
j);
if(k<
0||k>
vexnum||j<
0||j>
请重新输入出发点和目的地的编号:
if(k>
k<
vexnum&
j>
flag=0;
vexs[k].name);
if(p[k][j][u]&
k!
=u&
j!
=u)
vexs[u].name);
vexs[j].name);
总路线长%dm\n"
D[k][j]);
}//Floydend
voidSearch(MGraph*G)
intk,flag=1;
请输入要查询的景点编号:
k);
┏━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"
┃%-4d┃%-16s┃%-56s┃\n"
vexs[k].num,G->
vexs[k].name,G->
vexs[k].introduction);
┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"
}//Searchend
intLocateVex(MGraph*G,char*v)
intc=-1,i;
if(strcmp(v,G->
vexs[i].name)==0)
{c=i;
returnc;
MGraph*CreatUDN(MGraph*G)//初始化图形,接受用户输入
inti,j,k,w;
charv1[20],v2[20];
请输入图的顶点数,弧数:
vexnum,&
arcnum);
请输入景点的编号:
、名称、简介:
景点编号:
vexs->
num);
景点名称:
vexs[i].name);
景点简介:
introduction);
G->
arcs[i][j].adj=INFINITY;
请输入路径长度:
for(k=0;
arcnum;
k++)
第%d条边:
k+1);
景点对(x,y):
v1);
v2);
路径长度:
w);
i=LocateVex(G,v1);
j=LocateVex(G,v2);
if(i>
=0)
arcs[i][j].adj=w;
arcs[j][i]=G->
arcs[i][j];
returnG;
voidprint(MGraph*G)
intv,w,t=0;
{if(G->
arcs[v][w].adj==INFINITY)
∞"
elseprintf("
%-7d"
arcs[v][w].adj);
if(t%G->
vexnum==0)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 校园 导航 石家庄 铁道 大学
![提示](https://static.bingdoc.com/images/bang_tan.gif)