第一篇:校园导游实验报告
校园导游实验报告
学号:200930457018
姓名:熊博 班级:09计科1班 完成日期:2010-12-21
1、问题描述
制作陶瓷学院的校园导游图,游客通过终端可询问:(1)从某一景点到另一景点的最短路径。
(2)游客从公园进入,选取一条最佳路线3,使游客可以不重复地游览各景点,最后回到出口(出口就在入口处旁边)
2、要求
(1)将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值表示距离。为此图选择适当的数据结构。
(2)把各种路径都显示给游客,由游客自己选择游览路线。(3)画出景点分布图于屏幕上。
3、实现提示
(1)第一实际是最短路径问题,如果有几条路径长度相同,可选择途径景点较少的路径提供给游客。
(2)第二问可采用深度优先搜索,如果有多种路径可选择,则选择带权路径最小的路线提供给游客。
2.概要设计:
typedef struct ArCell { int adj;
//路径长度
}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedef struct
//图中顶点表示主要景点,存放景点的信息 { char name[30];int num;int x;int y;char introduction[500];//简介 }infotype;typedef struct { infotype vexs[MAX_VERTEX_NUM];AdjMatrix arcs;int vexnum,arcnum;}MGraph;MGraph b;
void dij(MGraph *);计算出起点到其他各个顶点之间的最短路径 void floyd(MGraph *);计算任意两个景点之间的最短路径 void Search(MGraph *G);查看景点信息 void jdbrowser();查看主要景点布局图
3.详细设计:
main函数: void main(){
int k;system(“color cf”);system(“mode con: cols=140 lines=130”);b=InitGraph();system(“cls”);printf(“
欢迎您进入景德镇陶瓷学院学校园导游咨询系统n”);printf(“ttn”);Sleep(1000);do {
while(1)
{
printf(“
n”);
printf(“
主要景点列表
n”);
printf(“
n”);
printf(“
<1> 操场
<2> 游泳馆
n”);
printf(“
<3> 3教
<4> 体育馆
n”);
printf(“
<5> 2教
<6> 1教
n”);
printf(“
<7> 图书馆
<8> 2实验楼
n”);
printf(“
<9> 9实验楼
<10> 医院
n”);
printf(“
<11> 东西办
<12> 9#宿舍楼 n”);
printf(“
<13> 综合食堂
<14> 二三食堂 n”);
printf(“
<15> 80广场
<16>大门
n”);
printf(“
n”);
printf(“ttn”);
printf(“
┏━━━━━━━━━━━━━━━━━━━━━━━┓n”);
printf(“
┃
1.查看主要景点布局图
┃n”);
printf(“
┃
2.查看景点信息
┃n”);
printf(“
┃
3.查看某一景点到其他景点的最短路径
┃n”);
printf(“
┃
4.查看任意两个景点之间的最短路径
┃n”);
printf(“
┃
0.退出系统
┃n”);
printf(“
┗━━━━━━━━━━━━━━━━━━━━━━━┛n”);
printf(“请输入您的选择选择,按回车键结束:”);
scanf(“%d”,&k);
if(k<0||k>5)
{
printf(“输入有误请重新输入,按回车键结束!n”);
scanf(“%d”,&k);
}
else break;} switch(k){ case 1:jdbrowser();system(“cls”);break;case 2:Search(&b);system(“cls”);break;case 3:dij(&b);system(“cls”);break;case 4:floyd(&b);system(“cls”);break;case 0:exit(0);
} }while(1);}
图形初始化函数: MGraph InitGraph(){ MGraph G;int i,j;G.vexnum=17;G.arcnum=19;for(i=0;i G.vexs[i].num=i;strcpy(G.vexs[1].name,“操场”);strcpy(G.vexs[1].introduction,“足球场,现代化塑胶跑道,人造草坪,锻炼身体的场所”);strcpy(G.vexs[2].name,“游泳馆”);strcpy(G.vexs[2].introduction,“一般只是暑假期间开放,水不是很干净”);strcpy(G.vexs[3].name,“3教”);strcpy(G.vexs[3].introduction,“多媒体教学场所,设施先进,环境良好”);strcpy(G.vexs[4].name,“体育馆”);strcpy(G.vexs[4].introduction,“里面有篮球场还有羽毛球场,平时用作羽毛球场地”);strcpy(G.vexs[5].name,“2教”);strcpy(G.vexs[5].introduction,“学院第二大教学楼,环境较差”);strcpy(G.vexs[6].name,“1教”);strcpy(G.vexs[6].introduction,“学院最大的教学楼,共5层,环形建筑,适宜学习”);strcpy(G.vexs[7].name,“图书馆”);strcpy(G.vexs[7].introduction,“藏书60万册,设施良好,2楼为电子阅览室,环境幽雅”);strcpy(G.vexs[8].name,“2实验楼”);strcpy(G.vexs[8].introduction,“信息科学与技术学院所在地”);strcpy(G.vexs[9].name,“9实验楼”);strcpy(G.vexs[9].introduction,“学校机房所在地”);strcpy(G.vexs[10].name,“医院”);strcpy(G.vexs[10].introduction,“校医院,设施不是很齐全,收费较贵”);strcpy(G.vexs[11].name,“春晖楼”);strcpy(G.vexs[11].introduction,“全体教师办公场所,楼高12层,各种设施齐全”);strcpy(G.vexs[12].name,“9#宿舍楼”);strcpy(G.vexs[12].introduction,“装饰古朴,设施还算齐全,就是挤了点”);strcpy(G.vexs[13].name,“综合食堂”);strcpy(G.vexs[13].introduction,“新建标准化食堂,食物种类多,但是价格比较贵。”);strcpy(G.vexs[14].name,“二三食堂”);strcpy(G.vexs[14].introduction,“收费比较便宜的食堂,二楼的套餐还可以,主要是便宜,不过菜有点难吃”);strcpy(G.vexs[15].name,“80广场 ”);strcpy(G.vexs[15].introduction,“新建的广场,据说由80界校友捐赠。”);strcpy(G.vexs[16].name,“大门”);strcpy(G.vexs[16].introduction,“我们学校的大门,车辆进出的地方。设有保安。”);G.vexs[1].x=1;G.vexs[1].y=3;G.vexs[2].x=2;G.vexs[2].y=3;G.vexs[3].x=1;G.vexs[3].y=2;G.vexs[4].x=2;G.vexs[4].y=2;G.vexs[5].x=2;G.vexs[5].y=1;G.vexs[6].x=3;G.vexs[6].y=1;G.vexs[7].x=3;G.vexs[7].y=2;G.vexs[8].x=3;G.vexs[8].y=3;G.vexs[9].x=3;G.vexs[9].y=4;G.vexs[10].x=4;G.vexs[10].y=1;G.vexs[11].x=5;G.vexs[11].y=1;G.vexs[12].x=5;G.vexs[12].y=4;G.vexs[13].x=6;G.vexs[13].y=1;G.vexs[14].x=6;G.vexs[14].y=3;G.vexs[15].x=5;G.vexs[15].y=3;for(i=0;i for(j=0;j G.arcs[i][j].adj=INFINITY;G.arcs[1][2].adj=40;G.arcs[2][8].adj=80; G.arcs[2][4].adj=50;G.arcs[3][4].adj=10; G.arcs[4][7].adj=42; G.arcs[4][5].adj=50;G.arcs[5][6].adj=40; G.arcs[6][7].adj=50; G.arcs[6][16].adj=20;G.arcs[6][10].adj=100;G.arcs[7][8].adj=50;G.arcs[8][9].adj=100;G.arcs[8][15].adj=200;G.arcs[10][11].adj=100;G.arcs[11][13].adj=50; G.arcs[15][14].adj=80;G.arcs[13][14].adj=100;G.arcs[11][15].adj=100;G.arcs[12][15].adj=10;for(i=1;i for(j=1;j G.arcs[i][j].adj=G.arcs[j][i].adj; return G;}//InitGraph end 迪杰斯特拉算法求一点到任意其他景点的最短路径: void dij(MGraph * G){ int v,w,w1,i,j,min,t=0,x,flag=1,v0; int final[20], D[20], p[20][20];while(flag){ printf(“请您输入一个起始景点编号,按回车键结束:”); scanf(“%d”,&v0); if(v0<0||v0>G->vexnum) { printf(“景点编号不存在!请重新输入景点编号,按回车键结束:”); scanf(“%d”,&v0); } if(v0>=0&&v0 flag=0;} for(v=1;v final[v]=0; D[v]=G->arcs[v0][v].adj;for(w=1;w p[v][w]=0;if(D[v] { p[v][v0]=1;p[v][v]=1; } } D[v0]=1;final[v0]=1;for(i=1;i min=INFINITY; for(w=1;w if(!final[w]) if(D[w] final[v]=1; for(w=1;w if(!final[w]&&(min+G->arcs[v][w].adj { D[w]=min+G->arcs[v][w].adj; for(x=0;x p[w][x]=p[v][x]; p[w][w]=1; } } } for(v=1;v flag=0;min=INFINITY; for(w=1;w { if(p[v][w]&&w!=v0) { flag=1; if(D[w] } } if(flag) { if(G->vexs[w1].x printf(“向东走%dm”,G->arcs[w1][j].adj); if(G->vexs[w1].x>G->vexs[j].x) printf(“向西走%dm”,G->arcs[w1][j].adj); if(G->vexs[w1].y printf(“向北走%dm”,G->arcs[w1][j].adj); if(G->vexs[w1].y>G->vexs[j].y) printf(“向南走%dm”,G->arcs[w1][j].adj); printf(“-->%s”,G->vexs[j].name); w1=j; p[v][j]=0; } else break; }while(1); printf(“n 总路线长%dmnn”,D[v]);} printf(“完毕,按任意键继续!n”);getch();Floyd算法求任意两点间的最短距离: void floyd(MGraph * G) // 计算任意两个景点之间的最短路径 { int v,w,w1,i,j,v1,min,t=0,x,flag=1,v0; int final[20], D[20], p[20][20];while(flag){ printf(“请您输入一个起始景点编号,按回车键结束:”); scanf(“%d”,&v0); if(v0<0||v0>G->vexnum) { printf(“景点编号不存在!请重新输入景点编号:”); scanf(“%d”,&v0); } if(v0>=0&&v0 flag=0;} flag=1;while(flag){ printf(“请您输入一个目的地景点编号,按回车键结束:”); scanf(“%d”,&v1); if(v1<0||v1>G->vexnum) { printf(“景点编号不存在!请重新输入景点编号:”); scanf(“%d”,&v1); } if(v1>=0&&v1 flag=0;} for(v=0;v final[v]=0; D[v]=G->arcs[v0][v].adj; for(w=0;w p[v][w]=0; if(D[v] { p[v][v0]=1;p[v][v]=1; } } D[v0]=0;final[v0]=1;for(i=1;i min=INFINITY; for(w=0;w if(!final[w]) if(D[w] final[v]=1; for(w=0;w if(!final[w]&&(min+G->arcs[v][w].adj { D[w]=min+G->arcs[v][w].adj; for(x=0;x p[w][x]=p[v][x]; p[w][w]=1; } } v=v1; w1=v0; printf(“%s”,G->vexs[v0].name);do { flag=0;min=INFINITY; for(w=0;w { if(p[v][w]&&w!=v0) { flag=1; if(D[w] } } if(flag) { if(G->vexs[w1].x printf(“向东走%dm”,G->arcs[w1][j].adj); if(G->vexs[w1].x>G->vexs[j].x) printf(“向西走%dm”,G->arcs[w1][j].adj); if(G->vexs[w1].y printf(“向北走%dm”,G->arcs[w1][j].adj); if(G->vexs[w1].y>G->vexs[j].y) printf(“向南走%dm”,G->arcs[w1][j].adj); printf(“-->%s”,G->vexs[j].name); w1=j; p[v][j]=0; } else break; }while(1);printf(“n 总路线长%dmnn”,D[v]);printf(“完毕,按任意键继续!n”);getch();} 查询景点信息函数: void Search(MGraph *G){ int k,flag=1;while(flag){ printf(“请您输入要查询的景点编号,按回车键结束:”); scanf(“%d”,&k); if(k<0||k>=G->vexnum) { printf(“景点编号不存在!请重新输入景点编号:”); scanf(“%d”,&k); } if(k>=0&&k flag=0;} printf(“┏━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);printf(“┃编号┃景点名称 ┃简介 ┃n”);printf(“┃%-4d┃%-16s┃%-96s┃n”,G->vexs[k].num,G->vexs[k].name,G->vexs[k].introduction);printf(“┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);printf(“完毕,按任意键继续!n”);getch();} 主要的景点显示函数: void jdbrowser(){ printf(“●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●n”);printf(“● ●n”); printf(“● (9)九实验楼 (12)九栋 ●n”); printf(“● ┃ ┃ ●n”); printf(“● ┃ ┃ ●n”); printf(“● (1)操场━━(2)游泳馆━━━━(8)二实验楼━━━━━━━━━━━━━━━━━(15)80广场━━━━(14)二三食堂 ●n”);printf(“● ┃ ┃ ┃ ┃ ●n”); printf(“● ┃ ┃ ┃ ┃ ●n”); printf(“● (3)三教━━(4)体育馆━━━━━(7)图书馆 ┃ ┃ ●n”);printf(“● ┃ ┃ ┃ ┃ ●n”); printf(“● ┃ ┃ ┃ ┃ ●n”); printf(“● (5)二教━━━━━━(6)一教━━━━━━━━━━━━(10)医院━━━━━(11)东西办━━━━(13)综合食堂 ●n”);printf(“● ┃ ●n”); printf(“● (16)大门 ●n”); printf(“● ●n”); printf(“●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●n”);printf(“输出完毕,按任意键返回!n”);getch();} 4.使用说明: (1).查看主要景点布局图(2).查看景点信息 (3).查看某一景点到其他景点的最短路径(4).查看任意两个景点之间的最短路径 (0).退出系统 5.测试结果: 主界面 景点图 景点信息 从某点到其他点的最短路径 任意两点的最短路径 退出系统 6.参考资料: 1、《数据结构(C语言版)》 严蔚敏,吴伟民 清华大学出版社 2、《数据结构—C语言描述》 耿国华等 西安电子科技大学出版社 3、Data Structure &Program Design in C Robert L.Kruse 清华大学出版社 4、《数据结构(用面向对象方法与C++描述)》 殷人昆 清华大学出版社 《数据结构》 课 程 设 计 实 验 报 告 课程名称: 《数据结构》课程设计 课程设计题目: 校园导游 姓名: 邱可昉 院系: 计算机学院 专业: 计算机科学与技术 班级: 10052313 学号: 10051319 指导老师: 王立波 2012年5月18日 目录 1.课程设计的目的„„„„„„„„„„„„„„„„„„„„„3 2.问题分析„„„„„„„„„„„„„„„„„„„„„„„„3 3.课程设计报告内容„„„„„„„„„„„„„„„„„„„„3(1)概要设计„„„„„„„„„„„„„„„„„„„„„3(2)详细设计„„„„„„„„„„„„„„„„„„„„„3(3)测试结果„„„„„„„„„„„„„„„„„„„„„7(4)程序清单„„„„„„„„„„„„„„„„„„„„„9 4.个人小结 „„„„„„„„„„„„„„„„„„„„„„„14 1.课程设计的目的 《数据结构》是计算机软件的一门基础课程,计算机科学各领域及有关的应用软件都要用到各种类型的数据结构。学好数据结构对掌握实际编程能力是很有帮助的。为了学好《数据结构》,必须编写一些在特定数据结构上的算法,通过上机调试,才能更好地掌握各种数据结构及其特点,同时提高解决计算机应用实际问题的能力。 2.问题分析 [问题描述](1)设计你的学校的校园平面图,所含景点不少于10个。以图中顶点表示学校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 (2)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。 (3)为来访客人提供图中任意景点相关信息的查询。[测试数据] 由读者根据实际情况指定。 3.课程设计报告内容 (1)概要设计 根据学校具体分布构建无向连通图,再通过几个模块运行函数完成校园信息简介查询,校园景点间最短距离计算和输出以及退出功能。 (2)详细设计 //定义全局变量 int bian[n][n];int zhjl[n][n];int path[n][n];//构建dy类 class dy{ public: dy(); ~dy();void jj();int zuiduan();void floyed();void shuchu(int,int); // 边的值 // 两点间的最短距离 // 经过的景点 };首先,通过dy类的构造函数构建邻接矩阵。dy::dy(){ for(int i=0;i bian[1][3]=bian[3][1]=150;bian[1][6]=bian[6][1]=300;bian[2][3]=bian[3][2]=100;bian[3][4]=bian[4][3]=50;bian[3][5]=bian[5][3]=200;bian[4][5]=bian[5][4]=100;bian[4][8]=bian[8][4]=350; bian[4][9]=bian[9][4]=250;bian[5][6]=bian[6][5]=100;bian[5][7]=bian[7][5]=250;bian[5][8]=bian[8][5]=300;bian[6][7]=bian[7][6]=200;bian[7][8]=bian[8][7]=100;bian[8][9]=bian[9][8]=400;bian[9][10]=bian[10][9]=100;//将各点到自己的距离定义为0 bian[1][1]=bian[2][2]=bian[3][3]=bian[4][4]=bian[5][5]=0;bian[6][6]=bian[7][7]=bian[8][8]=bian[9][9]=bian[10][10]=0;} 接着,jj函数实现景点列表输出和景点查询。void dy::jj(){ int a;cout<<“您想查询哪个景点的详细信息?”< cin>>i>>j;if(i>n||i<=0||j>n||j<=0){ cout<<“输入信息错误!”< cout<<“请输入要查询的两个景点的编号(1-10的数字编号):”< void dy::floyed(){ int i,j,k;for(i=1;i zdjl[i][j]=zdjl[i][k]+zdjl[k][j];path[i][j]=k;path[j][i]=k;} } 最后,shuchu函数判断输入两景点编号大小,完成正序输出和逆序输出。void dy::shuchu(int i,int j){ int a,b;a=i;b=j;cout<<“您要查询的两景点间最短路径是:”< cout<<“<-”< “<“< ”<”< (4)测试结果 (4)程序清单 #include using namespace std; #define INT_MAX 10000 #define n 11 //定义全局变量 int bian[n][n];int zdjl[n][n];int path[n][n]; class dy{ public: dy();~dy();void jj();int zuiduan();void floyed(); // 边的值 // 两点间的最短距离 // 经过的景点 void shuchu(int,int);};dy::dy(){ for(int i=0;i bian[1][3]=bian[3][1]=150;bian[1][6]=bian[6][1]=300;bian[2][3]=bian[3][2]=100;bian[3][4]=bian[4][3]=50;bian[3][5]=bian[5][3]=200;bian[4][5]=bian[5][4]=100;bian[4][8]=bian[8][4]=350; bian[4][9]=bian[9][4]=250;bian[5][6]=bian[6][5]=100;bian[5][7]=bian[7][5]=250;bian[5][8]=bian[8][5]=300;bian[6][7]=bian[7][6]=200;bian[7][8]=bian[8][7]=100;bian[8][9]=bian[9][8]=400;bian[9][10]=bian[10][9]=100;bian[1][1]=bian[2][2]=bian[3][3]=bian[4][4]=bian[5][5]=0;bian[6][6]=bian[7][7]=bian[8][8]=bian[9][9]=bian[10][10]=0;} dy::~dy(){} void dy::jj()int a;{ cout<<“您想查询哪个景点的详细信息?”< cout< break;case 2: cout<<“校医院是学校内设的公益性、非盈利性的医疗机构。承担学校社区范围内师生员工的“六位一体”的医疗工作。”< cout< break;case 3: cout<<“图书馆现有藏书215万册,其中印刷型图书146万册,电子图书69万册,长期订阅的中外文期刊2500余种。建有“中国学术期刊”、“万方数据资源”、“人大复印报刊资料”全文数据库、“超星数字图书馆”等信息资源镜像站。”< cout< cout< break;case 5: cout<<“ 问鼎广场是杭州电子科技大学标志性建筑,位于校图书馆正面。”< cout< break;case 6: cout<<“3教是学校机房重地。”< cout< break;case 7: cout<<“据说杭电正大门可是花了500万啊,可以说是杭电最奢侈的一个建筑物了,所以大家不可不看啊,不能错过啊~~”< cout< break;case 8: cout<<“行政楼学校领导工作和处理事务的地方。”< cout< break;case 9: cout<<“体育馆是学校举行大型活动的场所,有一个很大的篮球场。”< break;case 10: cout<<“宿舍是学生生活的基本场所,有多个食堂提供不同风味的食物,还有2个超市方便同学们的日常生活。”< cout<<“请输入1-10的数字编号:”< break;} } int dy::zuiduan(){ int i,j;cout<<“请输入要查询的两个景点的编号(1-10的数字编号):”< zdjl[i][j]=zdjl[i][k]+zdjl[k][j];path[i][j]=k;path[j][i]=k;} } void dy::shuchu(int i,int j){ int a,b;a=i;b=j;cout<<“您要查询的两景点间最短路径是:”< ”<”< int main(){ int i,j,s=1,k;dy dy;while(s){ cout<<“----------------杭州电子科技大学导游系统!----------------”< 4.个人小结 在前两次编写程序之后,我已经能够轻车熟路的编写程序了,对于C++的数据结构风格也有所领悟,感觉相对轻松一些。 经过这次练习,我发现我还是有一些没有注意的地方,我发现我对于书本上的知识吸收还有欠缺,然后编写程序不够仔细,有一些小差错导致编译出现错误,后来检查后修正了。我要在以后的学习中注意以下几点: 1.认真上好专业课,多在实践中锻炼自己。2.写程序要考虑周到,严密。 3.在做设计的时候要有信心,有耐心,不浮躁。 4.认真学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。 5.在课余时间多写程序,熟练掌握在调试程序过程中常见的错误,一边节约调试程序的时间。 数据结构实验报告 ——实验六 简单校园导游程序的设计与实现 本实验的目的是通过对校园导游程序的设计与实现来熟练掌握图型结构在实际问题中的应用。 一、【问题描述】 当人们到一个陌生的地方去旅游的时候可能会找一个导游为自己在游玩的过程中提供方便。导游可以提供很多服务,比如介绍参观景点的历史背景等相关信息,推荐到下一个景点的最佳路径,以及解答旅游者所提出的关于旅游经典的相关问询等等。对于新生刚刚来到校园,对校园环境不熟悉的情况也如此,一般都是高年级的学生充当了“校园导游员”的角色,如果能够提供一个程序让新生或来访的客人自主的通过与机器的“对话”来获得相关的信息的话,将会节省大量的人力和时间。而且所提供的信息也能够做到尽可能的准确、详尽。一个成功的校园导游程序可以替代现实生活中这些“校园导游员”,更方便了大家查询校园相关的信息。 本次实验需要开发一个简单的校园导游程序,程序的主体功能为: 1、显示校园平面图,方便用户直观的看到校园的全景示意图,并确定自己的位置。 2、为用户提供对平面图中任意场所的相关信息的查询。 3、为用户提供对平面图中任意场所的问路查询。 二、【数据结构设计】 由于各个场所通过校园中的道路相连,各个场所和连接它们的道路构成了整个校园的地理环境,所以使用图这种数据结构对他们去进行描述。以图中的顶点表示校园内各个场所,应包含场所名称、代号、简介等信息;以边表示连接各个场所的道路,应包含道路的代号、路径的长度等信息。顶点和边均使用结构体定义,整个图的数据结构可以采用教材中介绍的各种表示方法,例如带权的邻接矩阵。 三、【功能(函数)设计】 1、显示校园平面图的功能模块。 通过读文件的方式将各个地点的信息读入程序中.平面图中应醒目的标识出场所的准确名称以备用户查询。河北大学校园导游的基本地点信息。 ***************欢迎进入河北大学校园导游系统!**************-----------------------景点名称--------------------------- 主楼 多功能馆 毓秀园 图书馆 操场 留学生楼 七教 八教 九教 成教 南大门 北大门 一教 逸夫楼 博物馆 物理楼 电信楼 化学楼 生科楼 建工楼 北院食堂 南院食堂 竹园 梅园 桂园 菊园 易百超市 北院生活园区 ---------------------------地点的存储 typedef struct Vertex//顶点结构体 { int No;//地点编号 char name[20];//地点名称 char info[1000];//地点简介 }Vertex;typedef struct //无向图结构体 { Vertex view[Max_Vertex];int edges[Max_Vertex][Max_Vertex];//边的邻接矩阵 int vnum,anum;//顶点和边的个数 }Graph; 2、查询任意场所的相关信息查询的功能模块。 此模块接收用户所输入的场所名称,并将场所的简介信息反馈给用户。查找出查询的场所将其信息输出,信息通过文本文件读入 函数void introduction(Graph &G)实现 先通过strcpy进行查找,再讲找到顶点v1 G.view[v1].info输出 3、任意场所的问路查询的功能模块。 void shortpath(Graph &G,int v0,int v1);此函数运用克鲁斯卡尔算法计算两点间最短路径。 void dispath(Graph &G)//查询最短路径 { „shortpath(G, v0, v1); } 此模块接收用户所输入的场所名称,并在调用shortpath(G, v0, v1);计算出最短路径相关项的信息反馈给用户。 4、求单源点到其他各点的最短路径的功能模块。 此模块计算并记录从校园门口到各个场所的最短路径。for(i=0;i 四、【界面设计】 本程序为方便用户所设计,由于使用的最终用户大多对校园的情况并不熟悉,所以在图中给出的任何提示信息一定要准确,尽量的避免歧义。 五、【编码实现】 #include char name[20];//地点名称 char info[1000];//地点简介 }Vertex;typedef struct //无向图结构体 { Vertex view[Max_Vertex]; int edges[Max_Vertex][Max_Vertex];//边的邻接矩阵 int vnum,anum;//顶点和边的个数 }Graph;void Creat(Graph &G){ ifstream infile(“view.txt”,ios::in); if(!infile) { cout<<“文件打开错误”< abort(); } int i,j,k,w; infile>>G.vnum; infile>>G.anum; //cout< for(i=0;i { infile>>G.view[i].No>>G.view[i].name>>G.view[i].info; } for(i=0;i { for(j=0;j G.edges[i][j]=Maxnum; } ifstream weight_file(“weight.txt”,ios::in); if(!weight_file) { cout<<“文件打开错误”< abort(); } for(k=0;k { weight_file>>i>>j>>w; i--; j--; G.edges[i][j]=w; G.edges[j][i]=G.edges[i][j]; } } void introduction(Graph &G){ char temp[20];cout<<“请输入要查询的景点名称”< if(strcmp(G.view[i].name,temp)==0) { v1=i; count++; } } if(count!=1){ cout<<“输入的名称不存在”< return;} else { cout<<“该景点简介为”< cout< return;} } void shortpath(Graph &G,int v0,int v1){ int P[100];float D[100];int i,j,w;int v,pre;float min; int final[Max_Vertex];for(v=0;v { final[v]=0; D[v]=G.edges[v0][v]; if(D[v] P[v]=v0; if(D[v]==Maxnum) P[v]=-2; } D[v0]=0;final[v0]=1;P[v0]=-1; for(i=1;i min=Maxnum; //min为当前所知离源点的最近距离 for(w=0;w if(!final[w]) if(D[w] { j=w; //记忆此点 min=D[w]; } final[j]=1; //离源点最近的j加入S集合 for(w=0;w //更新其它点地当前最短路径 if(!final[w] &&(min+G.edges[j][w] { D[w]=min+G.edges[j][w]; P[w]=j; //将w的前驱结点改为j } } if(P[v1]==-2) cout<<“max”< else { pre=P[v1]; cout< cout< cout< while(pre>0) { cout<<“←”< pre=P[pre]; } if(v0==0) cout<<“←”< else cout< cout< } } void dispath(Graph &G)//查询最短路径 { int v1,v0,i;int count=0;char temp1[20],temp2[20];cout<<“请输入要查询的两个景点名称”< for(i=0;i if(strcmp(G.view[i].name,temp1)==0) { v0=i; count++; } if(strcmp(G.view[i].name,temp2)==0) { v1=i; count++; } } if(count!=2){ cout<<“输入的名称不存在”< return;} else { shortpath(G,v0,v1); return;} } void main(){ Graph G;Creat(G);int i;char ch1; cout<<“t***************欢迎进入河北大学校园导游系统!**************”< cout<<“t-----------------------景点名称---------------------------”< for(i=0;i { if(i%4==0) { cout< cout< } else { cout< } } cout< cout<<“t---------------------------”< cout<<“t__________________________________________________________”< cout<<“tt 请选择要进行的操作”< cout<<“ tt 1.查询景点信息”< cout<<“ tt 2:显示大门到各个地点的最短路径”< cout<<“ tt 3:查询两个景点之间的最短路径”< cout<<“ tt 0:退出”< cout<<“t__________________________________________________________”< cout<<“请选择(0~2):”; cin>>ch1; while(!(ch1<='3'&&ch1>='0')) { cout<<“数据输入错误,请重新选择(0~2):”; cin>>ch1; } switch(ch1) { case '1': introduction(G);break; case '2' : for(i=0;i shortpath(G,10,i); break; case '3' : dispath(G); break; } }while(ch1!=0);} 六、【运行与测试】 ***************欢迎进入河北大学校园导游系统!************** -----------------------景点名称--------------------------- 主楼 多功能馆 毓秀园 图书馆 操场 留学生楼 七教 八教 九教 成教 南大门 北大门 一教 逸夫楼 博物馆 物理楼 电信楼 化学楼 生科楼 建工楼 北院食堂 南院食堂 竹园 梅园 桂园 菊园 易百超市 北院生活园区 --------------------------- __________________________________________________________ 请选择要进行的操作 1.查询景点信息 2:显示大门到各个地点的最短路径 3:查询两个景点之间的最短路径 0:退出 __________________________________________________________ 请选择(0~2):1 请输入要查询的景点名称 主楼 该景点简介为 是河北大学本部标志性建筑,这H型高大的建筑,正对着河北大学校本部南院黑 校门,此楼于2001年建成。主要为教学、科研、办公服务。 __________________________________________________________ 请选择要进行的操作 1.查询景点信息 2:显示大门到各个地点的最短路径 3:查询两个景点之间的最短路径 0:退出 __________________________________________________________ 请选择(0~2):1 请输入要查询的景点名称 哈哈 输入的名称不存在 __________________________________________________________ 请选择要进行的操作 1.查询景点信息 2:显示大门到各个地点的最短路径 3:查询两个景点之间的最短路径 0:退出 __________________________________________________________ 请选择(0~2):2 南大门到主楼最短路径为50米 主楼←南大门 南大门到多功能馆最短路径为60米 多功能馆←南大门 南大门到毓秀园最短路径为60米 毓秀园←图书馆←南大门 南大门到图书馆最短路径为40米 图书馆←南大门 南大门到操场最短路径为160米 操场←毓秀园←图书馆←南大门 南大门到留学生楼最短路径为180米 留学生楼←操场←毓秀园←图书馆←南大门 南大门到七教最短路径为115米 七教←桂园←毓秀园←图书馆←南大门 南大门到八教最短路径为65米 八教←图书馆←南大门 南大门到九教最短路径为70米 九教←图书馆←南大门 南大门到成教最短路径为75米 成教←八教←图书馆←南大门 南大门到南大门最短路径为0米 南大门 南大门到北大门最短路径为25米 北大门←南大门 南大门到一教最短路径为35米 一教←北大门←南大门 南大门到逸夫楼最短路径为60米 逸夫楼←博物馆←物理楼←北大门←南大门 南大门到博物馆最短路径为45米 博物馆←物理楼←北大门←南大门 南大门到物理楼最短路径为35米 物理楼←北大门←南大门 南大门到电信楼最短路径为60米 电信楼←一教←北大门←南大门 南大门到化学楼最短路径为50米 化学楼←物理楼←北大门←南大门 南大门到生科楼最短路径为145米 生科楼←建工楼←化学楼←物理楼←北大门←南大门 南大门到建工楼最短路径为100米 建工楼←化学楼←物理楼←北大门←南大门 南大门到北院食堂最短路径为115米 北院食堂←化学楼←物理楼←北大门←南大门 南大门到南院食堂最短路径为80米 南院食堂←八教←图书馆←南大门 南大门到竹园最短路径为135米 竹园←七教←桂园←毓秀园←图书馆←南大门 南大门到梅园最短路径为145米 梅园←七教←桂园←毓秀园←图书馆←南大门 南大门到桂园最短路径为95米 桂园←毓秀园←图书馆←南大门 南大门到菊园最短路径为125米 菊园←八教←图书馆←南大门 南大门到易百超市最短路径为145米 易百超市←七教←桂园←毓秀园←图书馆←南大门 南大门到北院生活园区最短路径为159米 北院生活园区←北院食堂←化学楼←物理楼←北大门←南大门 __________________________________________________________ 请选择要进行的操作 1.查询景点信息 2:显示大门到各个地点的最短路径 3:查询两个景点之间的最短路径 0:退出 __________________________________________________________ 请选择(0~2): 请输入要查询的两个景点名称 主楼 七教 主楼到七教最短路径为75米 七教←桂园←毓秀园←主楼 __________________________________________________________ 请选择要进行的操作 1.查询景点信息 2:显示大门到各个地点的最短路径 3:查询两个景点之间的最短路径 0:退出 __________________________________________________________ 请选择(0~2):3 请输入要查询的两个景点名称 桌喽 菊园 输入的名称不存在 __________________________________________________________ 请选择要进行的操作 1.查询景点信息 2:显示大门到各个地点的最短路径 3:查询两个景点之间的最短路径 0:退出 __________________________________________________________ 请选择(0~2): 实 验 报 告 课程名称 导游与领队业务 专 业 旅游管理 班 级 二班 学生姓名 耿朝霞 实验室管理科制 【实验总目的】 通过实验掌握导游接待业务知识及各种接待程序,熟练掌握接待过程中所应遵循的各项法规与政策;通过导游服务技能(如人际交往技能、组团、带团技能、宣传技能、保卫游客安全技能等)的训练及导游语言运用技能、景点讲解技能的训练,提高学生随团带团技巧,培养独立工作能力、组织协调能力和随机应变能力。 【实验要求】 将掌握的导游服务技能运用于实际操作,丰富自己的实践经验,培养在实际操作中发现问题、分析问题、解决问题的能力,全面提高自身综合素质。 【实验具体内容】 1、安排旅游接待计划 2、接团流程 3、实景导游讲解(包括欢迎词和欢送词) 4、问题事故的处理 【实验总结】 实 验 报 告 课程名称 导游与领队业务 专 业 旅游管理 班 级 学生姓名 实验室管理科制 【实验总目的】 通过实验掌握导游接待业务知识及各种接待程序,熟练掌握接待过程中所应遵循的各项法规与政策;通过导游服务技能(如人际交往技能、组团、带团技能、宣传技能、保卫游客安全技能等)的训练及导游语言运用技能、景点讲解技能的训练,提高学生随团带团技巧,培养独立工作能力、组织协调能力和随机应变能力。 【实验要求】 将掌握的导游服务技能运用于实际操作,丰富自己的实践经验,培养在实际操作中发现问题、分析问题、解决问题的能力,全面提高自身综合素质。 【实验具体内容】 1、安排旅游接待计划 (根据个人对知识掌握情况填写) 2、接团流程 (根据个人对知识掌握情况填写) 3、实景导游讲解(包括欢迎词和欢送词)(根据个人对知识掌握情况填写) 4、问题事故的处理 (根据个人对知识掌握情况填写) 【实验总结】 (学生个人根据自身实际情况填写,要求不少于1000字)第二篇:校园导游课程设计实验报告
第三篇:校园导游实验报告——数据结构
第四篇:2011《导游实务》实验报告(定稿)
第五篇:2011《导游实务》实验报告