石家庄铁道大学校园导游Word文件下载.docx
- 文档编号:22011714
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:16
- 大小:75.29KB
石家庄铁道大学校园导游Word文件下载.docx
《石家庄铁道大学校园导游Word文件下载.docx》由会员分享,可在线阅读,更多相关《石家庄铁道大学校园导游Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
4、有指导游客进行到某景点的最短路径功能,包括详细路线以及具体距离。
1.2设计思想
基于C语言,以VC++6.0环境为基础,运用迪杰斯特拉算法求最短路径,运用C++输出命令画出地图,列出矩阵,达到所需求的功能。
1.3功能流程图
二、
数据结构及中心代码算法说明
1、地图部分:
用C语言中的输出命令和制表符画出
2、查询经典信息部分:
由于个人水平有限,仅用选择语句switchcase来一一实现,未能用矩阵方式实现成功,部分程序代码如下
switch(kas)
{
case1:
printf("
\n大门口,学校的正门,气派辉煌,车辆出入的地方\n"
);
break;
case2:
\n第一教学楼,学校里最大的教学楼,是同学们上课以及自习出入最多的地方\n"
…………
3、查询景点最短路径部分:
设定19.19矩阵,G【19】【19】,利用矩阵画出每个经典到相邻景点的距离,32767代表不可达。
4、求最短路径部分:
利用迪杰斯特拉算法求出每个经典的最短路径走线以及实际距离。
5、每个函数单独用while语句进行循环,以便游客在某个分程序中多次查询,以“1”为继续,以“0”为返回上级,其中主函数用dowhile语句和switchcase语句结合,实现选段以及“0”退出。
部分程序如下
While(flag)
{
……
printf("
输入1继续,输入0退出\n"
scanf("
%d"
&
flag);
}
Do
Switch(bianhao)
Case1:
Case0:
exit(0);
break;
}while(bianhao=0);
注:
图中的景点距离大多为臆测,由于设备原因,未能亲测,凭感觉划出路径的距离。
三、
系统实现
3.1程序界面总揽
1、进入程序界面,如下图所示
图2程序主界面
2、地图显示界面总览:
图3校园全景总示
3、景点查询界面如图所示
图4景点查询界面显示图
4、最短路径查询显示图
图5最短路径界面显示
3.2操作说明
进入程序主界面,输入1,进入地图显示系统,显示图如图2所示,地图分为19个景点,路口两个,教学楼4个,宿舍楼2个,实验楼1个,体育馆和操场共3个,小型园林1个,医院1个,办公楼1个,门口1个,餐厅2个。
输入2,进入查询系统,显示总景点如下:
1:
大门口2:
第一教学楼3:
综合食堂4:
六栋5:
九栋6:
基础教学楼
7:
超市8:
第九实验楼9:
图书馆10:
体育馆11:
西操场12:
田径场
13:
医院14:
东西办公楼15:
第二教学楼16:
三教17:
沁园
其中景点详细信息是本人根据两年大学生活所概括,不具有官方权威性。
输入2,显示第一教学楼,学校里最大的教学楼,是同学们上课以及自习出入最多的地方
输入14,显示东西办公楼,是基础教学楼盖成之前学校里最高的楼,是领导们工作的地方
景点太多,恕不一一列举。
输入0返回主界面
输入3,进入程序核心,最短路径查询系统
例如,输入112,显示
路径是:
门口第一教学楼第二教学楼第三教学楼体育馆西操场田径场总路径长度是:
210
输入1继续,输入0退出
四、
总结
数据结构是抽象的,通过本次数据结构的课程设计,重阅数据结构书籍,回忆起很多已经遗失的印记。
程序功能比较简单,但都是花费大量时间实现的,程序采用矩阵划出距离,用迪杰斯特拉算法算出各景点之间的最短线路及距离。
设计过程中遇到不少问题,例如主程序的退出,各函数的循环以及地图的规划等,不过都在同学们的帮助下一一完成,深表欣慰。
实践是检验真理的唯一标准,通过本次设计,进一步把实践和理论结合起来,通过小程序检验自己学习的程度。
2010年9月
附录1程序代码
#include<
stdio.h>
#defineFALSE0
#defineTURE1
intG[19][19]=
{32767,20,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767},
{20,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,130,32737,20,32767,10},
{32767,32767,32767,40,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32737,90,32767,32767,32767},
{32767,32767,40,32767,140,180,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767},
{32767,32767,32767,140,32767,32767,32767,32767,32767,32767,32767,32767,32767,100,32767,32767,32767,32767,32767},
{32767,32767,32767,180,32767,32767,32767,32767,100,32767,32767,32767,32767,40,32767,32767,32767,32767,32767},
{32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,80,40,32767,32767,32767,32767,32767},
{32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,140,30,32767,32767,32767,32767,32767,32767},
{32767,32767,32767,32767,32767,100,32767,32767,32767,60,32767,32767,30,32767,32767,32767,32767,32767,30},
{32767,32767,32767,32767,32767,32767,32767,32767,60,32767,40,32767,32767,32767,32767,32767,32767,30,32767},
{32767,32767,32767,32767,32767,32767,32767,32767,32767,40,32767,80,32767,32767,32767,32767,32767,32767,32767},
{32767,32767,32767,32767,32767,32767,32767,140,32767,32767,80,32767,32767,32767,32767,32767,32767,32767,32767},
{32767,32767,32767,32767,32767,32767,80,30,30,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767},
{32767,32767,32767,32767,100,40,40,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767},
{32767,130,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,40,32767,32767,32767},
{32767,32767,90,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,40,32767,32767,32767,32767},
{32767,20,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,20,32767},
{32767,32767,32767,32767,32767,32767,32767,32767,32767,30,32767,32767,32767,32767,32767,32767,20,32767,40},
{32767,10,32767,32767,32767,32767,32767,32767,30,32767,32767,32767,32767,32767,32767,32767,32767,40,32767}
};
voidmap()
printf("
⑿田径场━━140m━━━⑻第九实验楼┍⑸九栋宿舍楼━━━━┑\n"
┃30m┃┃100m140m┃\n"
┃┃┃┃\n"
80m⒀路口㈠━━⑺超市━⒁路口㈡┃\n"
┃30m┃80m40m┃40m┃\n"
⑾西操场━━⑽体育馆━━━⑼图书馆━━━━━⑹基础教学楼━━━━━━⑷六栋\n"
40m┃60m┃100m180m┃\n"
┃┃┃\n"
┎30m┛┃30m40m┃\n"
⒅第三教学楼━━40m━━⒆沁园┃\n"
┃20m┃10m⑶综合餐厅\n"
⒄第二教学楼━━━⑵第一教学楼━130m━⒂医院━40m━⒃东西办━90m━┘\n"
20m┃\n"
20m\n"
┃\n"
⑴大门口\n\n"
}
voidmap1()
intmm=1;
while(mm)
map();
输入0退出\n"
scanf("
mm);
}
structplace
intordernum;
charname[12];
}site[19]={
{0,"
门口"
},
{1,"
第一教学楼"
{2,"
综合餐厅"
{3,"
六栋"
{4,"
九栋"
{5,"
基础教学楼"
{6,"
超市"
{7,"
第九实验楼"
{8,"
图书馆"
{9,"
体育馆"
{10,"
西操场"
{11,"
田径场"
{12,"
路口1"
{13,"
路口2"
{14,"
医院"
{15,"
东西办公楼"
{16,"
第二教学楼"
{17,"
第三教学楼"
{18,"
沁园"
};
intshiyan[19];
voidshortpath(intG[19][19],intv0,intp[19][19],int*D)
intvexnum=19;
intfinal[19];
intv,w;
inti,min,j;
shiyan[0]=v0;
for(v=0;
v<
vexnum;
v++)
final[v]=FALSE;
D[v]=G[v0][v];
for(w=0;
w<
w++)
p[v][w]=FALSE;
if(D[v]<
32767)
p[v][v0]=TURE;
p[v][v]=1;
D[v0]=0;
final[v0]=TURE;
for(i=1;
i<
i++)
min=32767;
if(!
final[w])
if(D[w]<
min)
v=w;
min=D[w];
final[v]=TURE;
shiyan[i]=v;
final[w]&
&
(min+G[v][w])<
D[w])
D[w]=min+G[v][w];
for(j=0;
j<
19;
j++)
p[w][j]=p[v][j];
p[w][w]=1;
voidchaxun()
intkas;
while(kas!
=0)
\n\n\n---------****--------****--------****--------****--------****--------****-------\n"
*1:
基础教学楼*\n"
*7:
田径场*\n"
*13:
沁园*\n"
---------****--------****--------****--------****--------****--------****-------\n"
输入0退出查询界面\n"
请输入要查询的景点编号:
"
kas);
switch(kas)
case3:
\n综合餐厅,比较正规的餐厅,里面有许多可口的饭菜\n"
case4:
\n六栋女生宿舍楼,设施比较简陋,条件比较艰苦\n"
case5:
\n九栋男生宿舍楼,外表开起来壮观,里面设施一般,条件艰苦\n"
case6:
\n基础教学楼,正在筹建\n"
case7:
\n超市,学校的小超市,里面有大部分日常所需用品\n"
case8:
\n第九实验楼,计算机系的实验楼,也是全校同学上机的圣地\n"
case9:
\n图书馆,藏书百万,是全校学生的精神餐厅\n"
case10:
\n体育馆,正规的体院馆,一般不对外开放\n"
case11:
\n西操场,有篮球场轮滑场等场地\n"
case12:
\n田径场,标准400m跑道,是同学们上体育课和锻炼身体的好地方\n"
case13:
\n医院,设备简陋,能看感冒发烧\n"
case14:
\n东西办公楼,是基础教学楼盖成之前学校里最高的楼,是领导们工作的地方\n"
case15:
\n第二教学楼,环境简陋,设施不全,是自习和上课的地方\n"
case16:
\n第三教学楼,多媒体教学楼,设备齐全,是老师们录制精品课的理想胜地\n"
case17:
\n沁园,绿树成荫,芳草凄凄,是早读的好地方\n"
voidlujing()
intp[19][19],D[19];
inti,k,flag=1;
intstart,end;
while(flag)
map();
请依次输入起始和终止地点的编号<
空格隔开>
\n"
%d%d"
start,&
end);
start--;
end--;
shortpath(G,start,p,D);
for(k=0;
k<
k++)
for(i=0;
if(p[end][i]==1&
shiyan[k]==i)
%s"
site[shiyan[k]].name);
\n总路程长度是:
%d"
D[end]);
voidmain()
{intbianhao;
system("
color37"
do
\n\n***Mr.yan***\n"
\n\n**欢迎进入石家庄铁道大学校园导游系统,服务生Mr.yan很乐意为您服务**\n"
**请按照您的需求输入以下服务的编码,并摁回车键确认**\n"
*1.石家庄铁道大学校园地图浏览*\n"
*2.石家庄铁道大学各景点信息查询*\n"
*3.石家庄铁道大学各景点间的最短路径及旅行线路*\n"
*0.退出石家庄铁道大学校园导游系统*\n"
bianhao);
switch(bianhao)
map1();
break;
chaxun();
case3:
lujing();
case4:
exit(0);
}while(bianhao!
=0);
附录2特别鸣谢
感谢计算机与信息工程分院提供实践环境;
感谢图书馆提供相关资料;
感谢刘立嘉老师予以耐心的辅导;
感谢同学们给以热心的帮助;
感谢各大网站,各大论坛提供帮助及相关代码片段等。
参考书籍:
《C高级编程技术》《C函数速查》《数据结构(C语言版)》
参考文献:
设计样例之导游程序
参考网站:
XX百科之数据结构程序员联合开发网XX贴吧之数据结构
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 石家庄 铁道 大学校园 导游