1、 精选公文范文管理资料 键入文字 键入文字 键入文字校园导游系统实验报告篇一:校园导游实验报告1校园导游实验报告学号:200930457018姓名:熊博班级:09 计科 1 班完成日期:2010-12-211、问题描述制作陶瓷学院的校园导游图,游客通过终端可询问:(1)从某一景点到另一景点的最短路径。(2)游客从公园进入,选取一条最佳路线 3,使游客可以不重复地游览各景点,最后回到出口(出口就在入口处旁边)2、要求(1)将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值表示距离。为此图选择适当的数据结构。(2)把各种路径都显示给游客,由精选公文范文管理资料
2、键入文字 键入文字 键入文字游客自己选择游览路线。(3)画出景点分布图于屏幕上。3、实现提示(1)第一实际是最短路径问题,如果有几条路径长度相同,可选择途径景点较少的路径提供给游客。(2)第二问可采用深度优先搜索,如果有多种路径可选择,则选择带权路径最小的路线提供给游客。2.概要设计:typedef struct ArCellint adj; /路径长度ArCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM;typedef struct/图中顶点表示主要景点,存放景点的信息char name30;int num;int x;精选公文范文管理资料 键入文字 键入
3、文字 键入文字int y;char introduction500;/简介infotype;typedef structinfotype vexsMAX_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()精选
4、公文范文管理资料 键入文字 键入文字 键入文字int k;system(“color cf”);system(“mode con: cols=140 lines=130”);b=InitGraph();system(“cls”);printf(“欢迎您进入景德镇陶瓷学院学校园导游咨询系统n”);printf(“ttn”);Sleep(1000);dowhile(1)printf(“n”);printf(“ 主要景点列表 n”);printf(“n”);printf(“ 操场 游泳馆 n”);printf(“ 3 教 体育馆 n”)(转自:wWw.XiAocAoFanWeN.cOm 小 草 范文
5、网:校精选公文范文管理资料 键入文字 键入文字 键入文字园导游系统实验报告);printf(“ 2 教 1 教 n”);printf(“ 图书馆 2 实验楼n”);printf(“ 9 实验楼 医院 n”);printf(“ 东西办 9#宿舍楼 n”);printf(“ 综合食堂 二三食堂 n”);printf(“ 80 广场大门n”);printf(“ n”);printf(“ttn”);printf(“n”);printf(“1.查看主要景点布局图 n”);printf(“2.查看景点信息 n”);printf(“3.查看某一景点到其他景点精选公文范文管理资料 键入文字 键入文字 键入文字
6、的最短路径n”);printf(“4.查看任意两个景点之间的最短路径 n”);printf(“0.退出系统 n”);printf(“n”);printf(“请输入您的选择选择,按回车键结束:”);scanf(“%d”,if(k5)printf(“输入有误请重新输入,按回车键结束!n”);scanf(“%d”,else break;switch(k)精选公文范文管理资料 键入文字 键入文字 键入文字case 1:jdbrowser();system(“cls”);break;case 2:Search(system(“cls”);break;case 3:dij(system(“cls”);br
7、eak;case 4:floyd(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.vexsi.num=i;strcpy(G.vexs1.name,”操场”);strcpy(G.vexs1.introduction,”足球场,现代化塑胶跑道,人造草坪,锻炼身体的场所”); strcpy(G.vexs2.name,”游泳馆”);strcpy(G.vexs2.introduction,”一般只精选公文范文
8、管理资料 键入文字 键入文字 键入文字是暑假期间开放,水不是很干净”);strcpy(G.vexs3.name,”3 教”);strcpy(G.vexs3.introduction,”多媒体教学场所,设施先进,环境良好”);strcpy(G.vexs4.name,”体育馆”);strcpy(G.vexs4.introduction,”里面有篮球场还有羽毛球场,平时用作羽毛球场地”); strcpy(G.vexs5.name,”2 教”);strcpy(G.vexs5.introduction,”学院第二大教学楼,环境较差”);strcpy(G.vexs6.name,”1 教”);strcpy(
9、G.vexs6.introduction,”学院最大的教学楼,共 5 层,环形建筑,适宜学习”); strcpy(G.vexs7.name,”图书馆”);strcpy(G.vexs7.introduction,”藏书 60万册,设施良好,2 楼为电子阅览室,环境幽雅”);strcpy(G.vexs8.name,”2 实验楼”);strcpy(G.vexs8.introduction,”信息科学与技术学院所在地”);strcpy(G.vexs9.name,”9 实验楼”);strcpy(G.vexs9.introduction,”学校机精选公文范文管理资料 键入文字 键入文字 键入文字房所在地”
10、);strcpy(G.vexs10.name,”医院”);strcpy(G.vexs10.introduction,”校医院,设施不是很齐全,收费较贵”);strcpy(G.vexs11.name,”春晖楼”);strcpy(G.vexs11.introduction,”全体教师办公场所,楼高 12 层,各种设施齐全”); strcpy(G.vexs12.name,”9#宿舍楼”);strcpy(G.vexs12.introduction,”装饰古朴,设施还算齐全,就是挤了点”); strcpy(G.vexs13.name,”综合食堂”);strcpy(G.vexs13.introductio
11、n,”新建标准化食堂,食物种类多,但是价格比较贵。 ”); strcpy(G.vexs14.name,”二三食堂”);strcpy(G.vexs14.introduction,”收费比较便宜的食堂,二楼的套餐还可以,主要是便宜,不过菜有点难吃”);strcpy(G.vexs15.name,”80 广场 “);strcpy(G.vexs15.introduction,”新建的广场,据说由 80 界校友捐赠。 ”);strcpy(G.vexs16.name,”大门”);篇二:校园导游图系统数据结构实验报精选公文范文管理资料 键入文字 键入文字 键入文字告一. 设计目的通过布置具有一定难度的实际程序
12、设计项目,使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法;使学生掌握分析问题,求解问题的方法并提高学生设计编程实现的能力。二. 设计内容用无向网表示学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。游客通过终端可询问: (1)从某一景点到另一景点的最短路径。 (2)游客从公园进入,选取一条最佳路线。(3)使游客可以不重复地浏览各景点,最后回到出口(出口就在入口旁边) 。 基本要求 精选公文范文管理资料 键入文字
13、键入文字 键入文字(1)将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值表示距离为此图选择适当的数据结构。(2)把各种路径都显示给游客,由游客自己选择浏览路线。 (3)画出景点分布图于屏幕上。 实现提示(1)构造一个无向图 G 并用邻接矩阵来存储。(2)利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数组 pi来记录,最短路径长度就用一维数组 di存放;i 的范围:020。(3)一维数组 have是用来记录最短路径出现顶点的顺序。 (4)根据起点和终点输出最短路径和路径长度。三概要设计1功能模块图;2.各个模块详细的功能描述。1.浏览校园全景:
14、采用深度遍历遍历精选公文范文管理资料 键入文字 键入文字 键入文字图进行所有景点浏览,将遍历景点信息输出2.查看所有游览路线:用户输入一个景点,采用迪杰斯特拉算法将从该景点起所有路径查出并输出在屏幕上3.选择出发点和目的地:用户输入一个出发点和一个目的地编号,采用弗洛伊德算法求出发点到目的地的最短路径4.查看景点信息:直接用编号进行单个景点查询。 四详细设计 重点设计及编码在求最短路径时采用迪杰斯特拉算法/ 迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,v0 为起点 void ShortestPath_DIJ(MGraph * G) /迪杰斯特拉算法,求从顶点 v0 到其余顶点的最短路经
15、及其带权长度 dv/若pvw为 1,则 w 是从 v0 到 v 的最短路经上的顶点/finalv类型用于设置访问标志 int v,w,i,min, final20, D20, p2020,t=0,x,flag=1,v0; /vo 为起始景点的精选公文范文管理资料 键入文字 键入文字 键入文字编号 while(flag) printf(“请输入一个起始景点编号:”);scanf(“%d”,if(v0G-vexnum) printf(“景点编号不存在!请重新输入景点编号:”); scanf(“%d”,if(v0=0 for(v=0;vvexnum;v+) finalv=0;/初始化各顶点访问标志
16、Dv=G-arcsv0v.adj;/v0 到各顶点 v 的权值赋值给 dv for(w=0;wvexnum;w+) /初始化 p数组,各顶点间的路径全部设置为空路径 0 pvw=0;if(Dv finalv0=1; /v0 的访问标志设为 1,v 属于 s 集 for(i=1;ivexnum;i+) /对其余 g.vexnum-1 个顶点 w,依次求 v 到 w 的最短路径 min=INFINITY;for(w=0;wvexnum;w+)/在未被访问的顶点中,查找与 v0 最近的顶点 v if(!finalw) if(Dwvexnum;w+)/修改 v0 到其余各顶点 w 的最短路径权值dwi
17、f(!finalw /修改 v0 到w 的权值 dw for(x=0;xvexnum;x+) /所有 v0 到 v 的最短路径上的顶点 x,都是精选公文范文管理资料 键入文字 键入文字 键入文字v0 到 w 的最短路径上的顶点 pwx=pvx; pww=1; for(v=0;vvexnum;v+) /输出 v0 到其它顶点v 的最短路径 if(v0!=v) printf(“%s”,G-vexsv0.name);/输出景点 v0 的景点名for(w=0;wvexnum;w+) /对图中每个顶点w,试探 w 是否是 v0 到 v 的最短路径上的顶点 if(pvwt+; if(tG-vexnum-1
18、 五测试数据及运行结果 1正常测试数据和运行结果1.浏览校园全部景点信息:2.查看景点信息:3.输出两个景点间的最短路径:2异常测试数据及运行结果1.当输出错误编号时程序没有反映,继续输入直到输入正确:2.当查询两景点编号相同时的最短路精选公文范文管理资料 键入文字 键入文字 键入文字径时,结果如下:篇三:校园导游实验报告简单校园导游系统的设计与实现本实验的目的是通过对“校园导游”程序的设计与实现来熟练掌握图形结构在实际问题中的应用。 一.问题描述当人们到一个陌生的地方去旅游时,可能找到一个导游为自己在游玩的过程中提供帮助。导游可以提供多种服务,如介绍参观景点的历史背景等相关信息,推荐到下一个
19、景点的最佳路径,解答旅游者所提出的关于旅游景点的相关查询等。对于刚刚来到校园的新生,对校园环境不熟悉的情况也是如此,一般都是高年级的学生充当“校园导游”的角色。如果能够提供一个程序让新生或来访的客人自主地通过与机器的“对话”来获得相关信息的话,将会节省大量的人力和时间,并且所提供的信息应做到尽可能的准确、详尽。一个成功的校园导游程序可以替代现实生活中的这些“校园导游”,更方便大家查询校园相关的信息。精选公文范文管理资料 键入文字 键入文字 键入文字本次实验需要开发一个简单的校园导游程序,程序的主体功能如下:显示校园平面图,方便用户直观地看到校园的全景示意图,并确定自己的位置。为用户提供对平面图
20、中任意场所相关信息的查询。 为用户提供对平面图中任意场所的问路查询。 二.数据结构设计由于各个场所通过校园中的道路相连,各个场所和连接它们的道路构成了整个校园的地理环境,所以使用图这种数据结构对它们进行描述。以图中的顶点表示校园内各个场所,应包含场所、名称、代号、简介等信息;以边表示连接各个场所的道路,应包含道路的代号、路径的长度等信息。顶点和边都使用结构体定义,整个图的数据结构使用带权的邻接矩阵。如下: typedef structchar *name; int num; char *instr;Vertextype;/定义顶点结构类型 typedef struct int num; int
21、 length;精选公文范文管理资料 键入文字 键入文字 键入文字Edgetype;/ 定义边结构类型 typedef struct Vertextype vexsMaxvernum;Edgetype edgesMaxvernumMaxvernum;int vnumber; int enumber;Graph; /以邻接矩阵存储的图的类型 三、功能函数设计 1、图中包含信息的初始化函数原型为 void get(Graph G.vexs2.name=new char(strlen(“逸夫楼”)+1); strcpy(G.vexs2.name,”逸夫楼”);n= G.vexs2.instr=n;对
22、路径 1 进行初始化: G.edges01.length=200; G.edges01.num=1; 2、主函数3、求单源点到其他各个场所的最短路径的功能模块函数原型为 void shortestpath(Graph G,int v0,int *p,int *D)本模块使用迪杰斯特拉(Dijkstra)算法,该算法的基本思想是:设置两个顶点的集合 S 和 T(T=V-S ) ,集合 S 中存放已找到最短路径的顶点,集合T 中存放当前还未找到最短路径的顶点。初始状态时,集合 S 中只包含单源点 v,然后不断从集合 T 中选取到顶点 v 的路径长度最短的顶点 u 加入到集合 S 中,集合 S 中每加入一个新的顶点 u,都要修改顶点 V到集合 T 中剩余顶点的最短路径值,集合T 中各个顶点的新的最短路径长度值为原来的最短路径长度值与顶点 u 的最短路径加上 u 到该顶点的路径长度中的较小值。此过程不断重复,直到集合 T 中的顶点全部精选公文范文管理资料 键入文字 键入文字 键入文字都加入到 S 中为止。