校园导游系统设计与实现

合集下载

校园导游系统课程设计

校园导游系统课程设计

校园导游系统课程设计一、课程目标知识目标:1. 学生能理解校园导游系统的基本概念,掌握其功能结构与操作流程。

2. 学生能运用所学的信息技术知识,结合校园实际情况,设计出实用的校园导游系统。

3. 学生了解并掌握校园导游系统中的地理信息、历史文化等相关知识。

技能目标:1. 学生能够运用所学的编程语言或软件工具,独立或合作完成校园导游系统的设计与制作。

2. 学生通过实践操作,提高自己的信息收集、处理、分析及解决问题的能力。

3. 学生能够通过项目实践,提升自己的团队协作、沟通表达及组织协调能力。

情感态度价值观目标:1. 学生在学习过程中,培养对信息技术的兴趣和爱好,提高主动学习和探究的精神。

2. 学生通过了解校园的历史文化,增强对学校的热爱和自豪感,培养积极向上的情感态度。

3. 学生在团队协作中,学会尊重他人、关心同伴,形成良好的人际关系,树立正确的价值观。

本课程针对中学生设计,结合信息技术学科特点,注重实践操作和团队协作。

课程目标旨在帮助学生将所学知识运用到实际项目中,提高他们的综合能力和素养。

通过本课程的学习,使学生能够更好地了解校园,提升自我解决问题的能力,同时培养他们的团队精神和价值观。

二、教学内容1. 校园导游系统概述- 了解校园导游系统的定义、功能与意义。

- 分析现有校园导游系统的优缺点。

2. 校园地理信息与历史文化- 学习校园地理分布、建筑特点及历史文化背景。

- 收集并整理校园内重要景点的信息。

3. 信息技术应用- 掌握编程语言(如Python)或软件工具(如GIS软件)的基本使用方法。

- 学习数据库管理,整理并存储校园导游信息。

4. 系统设计与制作- 制定校园导游系统的设计方案,明确系统功能模块。

- 学习界面设计,掌握一定的UI设计原则。

- 编程实现校园导游系统的基本功能,如地图导航、景点介绍等。

5. 项目实践与团队协作- 分组进行项目实践,明确分工与协作。

- 定期进行项目进度汇报,交流问题与经验。

校园导游系统设计与实现

校园导游系统设计与实现

校园导游系统设计与实现第一篇:校园导游系统设计与实现校园导游系统设计与实现目录 1.设计要求 2.1需求分析 2.2概要设计2.3各个模块名称和功能 2.4 系统导游主界面2.4.1前台系统2.4.2后台系统2.4.3退出系统 3实验总结参考文献附件1.设计要求设计一个校园导游程序,为来访的客人提供各种信息查询服务。

2.1需求分析⑴设计学校的校园平面图。

选取若干个有代表性的景点抽象成一个无向带权图(无向网),所含景点不少于 30 个。

以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。

⑵存放景点代号、名称、简介等信息供用户查询。

⑶为来访客人提供图中任意景点相关信息的查询。

⑷为来访客人提供图中任意景点之间的问路查询。

⑸可以为校园平面图增加或删除景点或边,修改边上的权值等。

景点距离图2.2概要设计校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。

用图的结点代表景点,用图的边代表景点之间的路径。

所以首先应设计一个图类。

结点值代表景点信息,边的权值代表景点间的距离。

结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。

本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。

计算路径长度和最短路线时可用迪杰斯特拉(Dijkastra)算法实现。

最后用 switch 选择语句选择执行浏览景点信息或查询最短路径。

1、主界面设计为了实现校园导游系统各功能的管理,首先设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。

2、存储结构设计本系统采用图结构类型(mgraph)存储抽象校园图的信息。

其中,各景点间的邻接关系用图邻接矩阵类型(adjmatrix)存储;景点(顶点)信息用结构数组(vexs)存储,其中每个数组元素是一个结构变量,包含景点编号、景点名称及景点介绍三个分量;图的顶点个数及边的条数由分量 vexnum、arcnum 表示,它们是整型数据。

齐鲁工业大学校园导游咨询系统设计报告

齐鲁工业大学校园导游咨询系统设计报告

成绩:__________________ 校园导游系统设计报告学院名称理学院一、系统分析此次课程设计的主要内容是校园导航系统,所谓系统其实也不尽然,只不过是个小小的提示,为来访的客人提供各种信息查询服务。

主要包括:①查看学校的全景图②各个景点的简介③学校主要景点的分布④查看某一景点到其它所有景点的最短路径⑤查询任意两个景点之间的最短路径。

矚慫润厲钐瘗睞枥庑赖。

二、概要设计抽象数据类型的定义:ADT Graph{数据对象 V:V具有相同特性的数组元素的集合,称为顶点集。

数据关系 R:R={VR}VR={<v,w>|v,w∈V且P(v,w),<v,w> 表示从v到w的弧,谓词P(v,w)定义了弧<v,w>的意义或信息}聞創沟燴鐺險爱氇谴净。

基本操作P:CreateGraph(&G,V,VR);初始条件:V是图的顶点集,VR是图中弧的集合。

操作结果:按V和VR的定义构造图G。

DistroyGraph(&G)初始条件:图G存在操作结果:销毁图GLocateVex(G,u);初始条件:图G存在,u和G中顶点有相同的特征。

操作结果:若存在顶点u,则返回该顶点在图中的位置;否则返回其他信息。

GetVex(G,u);初始条件:图G存在,u是图中的顶点。

操作结果:返回u的值。

InsertVex(&G,v);初始条件:图G存在,v和图中的顶点有相同的特性。

操作结果:在图G中新增顶点v.InsertArc(&G,v,w);初始条件:图G存在,v和w是图中的顶点。

操作结果:在图G中增添弧<v,w>,若是无向图,还增添弧<w,v>。

}ADT Graph主程序流程(各函数之间的调用关系):Main();//主函数Initview();//景点信息的初始化InitLength();//各个景点之间距离的初始化log();//登录时的头部showmenu();//登录后的菜单browser();//全景图的浏览browse_view_info();//景点简介的查询browse_view_distribute();//主要景点的分布onetoall();//某一景点到其它所有景点的最短路径onetoone();//查询任意两个景点之间的最短路径三、详细设计#include<stdio.h>#include<string.h>#include<windows.h>#include<conio.h>#include<malloc.h>#define MAX 50#define TRUE 1#define FALSE 0#define INFINITY 10000typedef int **PathMatrix;typedef int *DistancMatrix;typedef struct view{ int no;//景点编号char name[100];//景点名称char briefinfo[1000];//景点简介}view;typedef struct edge{ //pathlength arcs;//两个景点之间的距离int length; char direction[4];//方向}edge;void showmenu(){printf(" 齐鲁工业大学主要景点列表 \n");printf("\t*********************************************************\n"); 残骛楼諍锩瀨濟溆塹籟。

校园导游系统数据结构实习报告

校园导游系统数据结构实习报告

校园导游系统数据结构实习报告校园导游系统数据结构实习报告一、引言随着信息技术的快速发展,数字化校园已成为许多学校的重要建设目标。

其中,校园导游系统作为数字化校园的一部分,对于提高校园文化氛围,方便新生和游客游览校园,增强校园归属感起到了重要作用。

在这次实习中,我们的主要任务是设计和实现一个校园导游系统,采用数据结构技术对校园地图进行建模和优化,以提供高效、便捷的导游服务。

二、系统设计1、数据结构选择:考虑到校园地图的复杂性,我们采用了图(Graph)作为基础数据结构。

图是由节点(顶点)和边组成的集合,可以很好地表示校园中各个地点之间的连接关系。

2、地图表示:我们将校园地图转化为图,其中每个地点对应一个节点,地点之间的路径对应边。

为了更准确地表示实际环境,我们使用了带权重的边,权重表示路径的长度或美观度。

3、导游路径规划:我们使用了最短路径算法,如Dijkstra算法和A*算法,来规划最佳游览路径。

用户可以在系统中设定起点和终点,系统会根据图中的边和权重计算出最短路径。

4、语音导航:系统可以通过用户的手机实时获取位置信息,并使用TTS(Text-to-Speech)技术将规划的路径转化为语音提示,方便用户边听边走。

5、数据库设计:我们设计了一个关系型数据库,用于存储校园地图信息、用户信息等。

通过使用索引和查询优化技术,提高了系统性能。

三、系统实现1、环境配置:我们使用了Python语言和相关的数据结构库来实现系统。

开发环境为Windows 10操作系统,数据库采用了MySQL。

2、代码实现:我们对Python语言和相关库进行了深入学习,掌握了图算法的实现方法。

在实现过程中,我们遇到了一些问题,如最短路径算法的优化、语音导航的实时性等。

通过查阅资料、讨论和实践,我们成功解决了这些问题。

3、测试与调试:我们对系统进行了全面的测试,包括单元测试、集成测试和系统测试。

在测试过程中,我们发现并修复了一些bug,提高了系统的稳定性和可靠性。

校园导游系统实验报告

校园导游系统实验报告

竭诚为您提供优质文档/双击可除校园导游系统实验报告篇一:校园导游图系统数据结构实验报告一.设计目的通过布置具有一定难度的实际程序设计项目,使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法;使学生掌握分析问题,求解问题的方法并提高学生设计编程实现的能力。

二.设计内容用无向网表示学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。

要求能够回答有关景点介绍、游览路径等问题。

游客通过终端可询问:(1)从某一景点到另一景点的最短路径。

(2)游客从公园进入,选取一条最佳路线。

(3)使游客可以不重复地浏览各景点,最后回到出口(出口就在入口旁边)。

[基本要求](1)将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值表示距离.为此图选择适当的数据结构。

(2)把各种路径都显示给游客,由游客自己选择浏览路线。

(3)画出景点分布图于屏幕上。

[实现提示] (1)构造一个无向图g并用邻接矩阵来存储。

(2)利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数组p[i][]来记录,最短路径长度就用一维数组d[i]存放;i的范围:0~20。

(3)一维数组have[]是用来记录最短路径出现顶点的顺序。

(4)根据起点和终点输出最短路径和路径长度。

三.概要设计1.功能模块图;2.各个模块详细的功能描述。

1.浏览校园全景:采用深度遍历遍历图进行所有景点浏览,将遍历景点信息输出2.查看所有游览路线:用户输入一个景点,采用迪杰斯特拉算法将从该景点起所有路径查出并输出在屏幕上3.选择出发点和目的地:用户输入一个出发点和一个目的地编号,采用弗洛伊德算法求出发点到目的地的最短路径4.查看景点信息:直接用编号进行单个景点查询。

四.详细设计重点设计及编码在求最短路径时采用迪杰斯特拉算法//迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,v0为起点voidshortestpath_DIJ(mgraph*g) {//迪杰斯特拉算法,求从顶点v0到其余顶点的最短路经及其带权长度d[v]//若p[v][w]为1,则w是从v0到v的最短路经上的顶点//final[v]类型用于设置访问标志intv,w,i,min,final[20],D[20],p[20][20],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++){fin al[v]=0;//初始化各顶点访问标志D[v]=g->arcs[v0][v].adj;//v0到各顶点v的权值赋值给d[v]for(w=0;wvexnum;w++)//初始化p[][]数组,各顶点间的路径全部设置为空路径0p[v][w]=0;if(D[v]final[v0]=1;//v0的访问标志设为1,v属于s集for(i=1;ivexnum;i++)//对其余g.vexnum-1个顶点w,依次求v到w的最短路径{min=InFInITY;for(w=0;wvexnum;w++)//在未被访问的顶点中,查找与v0最近的顶点vif(!final[w])if(D[w]vexnum;w++)//修改v0到其余各顶点w的最短路径权值d[w]if(!final[w]//修改v0到w的权值d[w]for(x=0;xvexnum;x++)//所有v0到v的最短路径上的顶点x,都是v0到w的最短路径上的顶点p[w][x]=p[v][x];p[w][w]=1;}}for(v=0;vvexnum;v++)//输出v0到其它顶点v的最短路径{if(v0!=v)printf("%s",g->vexs[v0].name);//输出景点v0的景点名for(w=0;wvexnum;w++)//对图中每个顶点w,试探w是否是v0到v的最短路径上的顶点{if(p[v][w]t++;}if(t>g->vexnum-1}}五.测试数据及运行结果1.正常测试数据和运行结果1.浏览校园全部景点信息:2.查看景点信息:3.输出两个景点间的最短路径:2.异常测试数据及运行结果1.当输出错误编号时程序没有反映,继续输入直到输入正确:2.当查询两景点编号相同时的最短路径时,结果如下:篇二:校园导游实验报告[1]校园导游实验报告学号:20XX30457018姓名:熊博班级:09计科1班完成日期:20XX-12-211、问题描述制作陶瓷学院的校园导游图,游客通过终端可询问:(1)从某一景点到另一景点的最短路径。

校园导游系统实验报告

校园导游系统实验报告

竭诚为您提供优质文档/双击可除校园导游系统实验报告篇一:校园导游图系统数据结构实验报告一.设计目的通过布置具有一定难度的实际程序设计项目,使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法;使学生掌握分析问题,求解问题的方法并提高学生设计编程实现的能力。

二.设计内容用无向网表示学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。

要求能够回答有关景点介绍、游览路径等问题。

游客通过终端可询问:(1)从某一景点到另一景点的最短路径。

(2)游客从公园进入,选取一条最佳路线。

(3)使游客可以不重复地浏览各景点,最后回到出口(出口就在入口旁边)。

[基本要求](1)将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值表示距离.为此图选择适当的数据结构。

(2)把各种路径都显示给游客,由游客自己选择浏览路线。

(3)画出景点分布图于屏幕上。

[实现提示] (1)构造一个无向图g并用邻接矩阵来存储。

(2)利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数组p[i][]来记录,最短路径长度就用一维数组d[i]存放;i的范围:0~20。

(3)一维数组have[]是用来记录最短路径出现顶点的顺序。

(4)根据起点和终点输出最短路径和路径长度。

三.概要设计1.功能模块图;2.各个模块详细的功能描述。

1.浏览校园全景:采用深度遍历遍历图进行所有景点浏览,将遍历景点信息输出2.查看所有游览路线:用户输入一个景点,采用迪杰斯特拉算法将从该景点起所有路径查出并输出在屏幕上3.选择出发点和目的地:用户输入一个出发点和一个目的地编号,采用弗洛伊德算法求出发点到目的地的最短路径4.查看景点信息:直接用编号进行单个景点查询。

四.详细设计重点设计及编码在求最短路径时采用迪杰斯特拉算法//迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,v0为起点voidshortestpath_DIJ(mgraph*g) {//迪杰斯特拉算法,求从顶点v0到其余顶点的最短路经及其带权长度d[v]//若p[v][w]为1,则w是从v0到v的最短路经上的顶点//final[v]类型用于设置访问标志intv,w,i,min,final[20],D[20],p[20][20],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++){fin al[v]=0;//初始化各顶点访问标志D[v]=g->arcs[v0][v].adj;//v0到各顶点v的权值赋值给d[v]for(w=0;wvexnum;w++)//初始化p[][]数组,各顶点间的路径全部设置为空路径0p[v][w]=0;if(D[v]final[v0]=1;//v0的访问标志设为1,v属于s集for(i=1;ivexnum;i++)//对其余g.vexnum-1个顶点w,依次求v到w的最短路径{min=InFInITY;for(w=0;wvexnum;w++)//在未被访问的顶点中,查找与v0最近的顶点vif(!final[w])if(D[w]vexnum;w++)//修改v0到其余各顶点w的最短路径权值d[w]if(!final[w]//修改v0到w的权值d[w]for(x=0;xvexnum;x++)//所有v0到v的最短路径上的顶点x,都是v0到w的最短路径上的顶点p[w][x]=p[v][x];p[w][w]=1;}}for(v=0;vvexnum;v++)//输出v0到其它顶点v的最短路径{if(v0!=v)printf("%s",g->vexs[v0].name);//输出景点v0的景点名for(w=0;wvexnum;w++)//对图中每个顶点w,试探w是否是v0到v的最短路径上的顶点{if(p[v][w]t++;}if(t>g->vexnum-1}}五.测试数据及运行结果1.正常测试数据和运行结果1.浏览校园全部景点信息:2.查看景点信息:3.输出两个景点间的最短路径:2.异常测试数据及运行结果1.当输出错误编号时程序没有反映,继续输入直到输入正确:2.当查询两景点编号相同时的最短路径时,结果如下:篇二:校园导游实验报告[1]校园导游实验报告学号:20XX30457018姓名:熊博班级:09计科1班完成日期:20XX-12-211、问题描述制作陶瓷学院的校园导游图,游客通过终端可询问:(1)从某一景点到另一景点的最短路径。

最新校园导游系统设计与实现资料

最新校园导游系统设计与实现资料

校园导游系统设计与实现目录1.设计要求2.1需求分析2.2概要设计2.3各个模块名称和功能2.4 系统导游主界面2.4.1前台系统2.4.2后台系统2.4.3退出系统3实验总结参考文献附件1.设计要求设计一个校园导游程序,为来访的客人提供各种信息查询服务。

2.1需求分析⑴设计学校的校园平面图。

选取若干个有代表性的景点抽象成一个无向带权图(无向网),所含景点不少于30 个。

以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。

⑵存放景点代号、名称、简介等信息供用户查询。

⑶为来访客人提供图中任意景点相关信息的查询。

⑷为来访客人提供图中任意景点之间的问路查询。

⑸可以为校园平面图增加或删除景点或边,修改边上的权值等。

景点距离图2.2概要设计校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。

用图的结点代表景点,用图的边代表景点之间的路径。

所以首先应设计一个图类。

结点值代表景点信息,边的权值代表景点间的距离。

结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。

本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。

计算路径长度和最短路线时可用迪杰斯特拉(Dijkastra)算法实现。

最后用switch 选择语句选择执行浏览景点信息或查询最短路径。

1、主界面设计为了实现校园导游系统各功能的管理,首先设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。

2、存储结构设计本系统采用图结构类型(mgraph)存储抽象校园图的信息。

其中,各景点间的邻接关系用图邻接矩阵类型(adjmatrix)存储;景点(顶点)信息用结构数组(vexs)存储,其中每个数组元素是一个结构变量,包含景点编号、景点名称及景点介绍三个分量;图的顶点个数及边的条数由分量vexnum、arcnum 表示,它们是整型数据。

实验六 简单校园导游程序的设计与实现

实验六   简单校园导游程序的设计与实现

实验六简单校园导游程序的设计与实现本实验的目的是通过对“校园导游”程序段设计与实现来熟练掌握图形结构在实际问题中的应用。

一、问题描述当人们到一个陌生的地方去旅游时,可能会找一个导游为自己在游玩的过程中提供帮助。

导游可以提供很多服务,如介绍参观景点的历史背景等相关信息,推荐到下一个景点的最佳路径,接到旅游者所提出的关于旅游景点的相关问询等。

对于刚刚来到校园的新生,对校园环境不熟悉的情况也是如此,一般都是高年级的学生充当“校园导游”的角色。

如果能够提供一个程序让新生或来访的客人自主地通过与机器“对话”来获得相关的信息的话,将会节省大量的人力和时间,并且所提供的信息应做到尽可能的准确、详尽。

一个成功的校园导游程序可以替代现实生活中这些“校园导游”,更方便大家查询相关的信息。

本次试验需要开发一个简单的校园导游程序,程序的主体功能如下:①显示校园的平面图,为方便用户直观地看到校园的全景示意图,并确定自己的位置。

②为用户提供对平面图中的任意场所相关信息的查询。

③为用户提供对平面图中任意场所的问路查询。

二、数据结构设计由于各个场所通过校园中的道路相连,各个场所和连接它们的道路构成了整个校园的地理环境,所以使用图这种数据结构对它们进行描述。

以图中的顶点代表校园内各个场所,应包含场所名称、代号、简介等信息;以边表示连接各个场所的道路,应包含道路的代号、路径的长度等信息。

顶点和边均使用结构体定义,整个图的数据结构可以采用教材中介绍的各种表示方法,如带权的邻接矩阵。

三、功能(函数)设计1、显示校园平面图的功能模块此模块调用其他工具绘制好的BMP等程序可以识别的图片来显示校园平面图。

平面图中应醒目地标识出场所的准确名称以备用户查询。

2、查询任意场所的相关信息的功能模块此模块接收用户所输入的场所名称,并将场所的简介信息反馈给用户。

3、求单源点到其他各点的最短路径的功能模块此模块计算并记录从校园门口到各个场所的最短路径。

4、任意场所的问路查询的功能模块此模块接收用户所输入的场所名称,并在3中计算出的最短路径集合中找到相关项的信息反馈给用户。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

校园导游系统设计与实现目录1.设计要求2.1需求分析2.2概要设计2.3各个模块名称和功能2.4 系统导游主界面2.4.1前台系统2.4.2后台系统2.4.3退出系统3实验总结参考文献附件1.设计要求设计一个校园导游程序,为来访的客人提供各种信息查询服务。

2.1需求分析⑴设计学校的校园平面图。

选取若干个有代表性的景点抽象成一个无向带权图(无向网),所含景点不少于30 个。

以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。

⑵存放景点代号、名称、简介等信息供用户查询。

⑶为来访客人提供图中任意景点相关信息的查询。

⑷为来访客人提供图中任意景点之间的问路查询。

⑸可以为校园平面图增加或删除景点或边,修改边上的权值等。

景点距离图2.2概要设计校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。

用图的结点代表景点,用图的边代表景点之间的路径。

所以首先应设计一个图类。

结点值代表景点信息,边的权值代表景点间的距离。

结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。

本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。

计算路径长度和最短路线时可用迪杰斯特拉(Dijkastra)算法实现。

最后用switch 选择语句选择执行浏览景点信息或查询最短路径。

1、主界面设计为了实现校园导游系统各功能的管理,首先设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。

2、存储结构设计本系统采用图结构类型(mgraph)存储抽象校园图的信息。

其中,各景点间的邻接关系用图邻接矩阵类型(adjmatrix)存储;景点(顶点)信息用结构数组(vexs)存储,其中每个数组元素是一个结构变量,包含景点编号、景点名称及景点介绍三个分量;图的顶点个数及边的条数由分量vexnum、arcnum 表示,它们是整型数据。

3、系统功能设计本系统除了要完成图的初始化功能外还设置了9个子功能。

图的初始化由initgraph()函数实现。

依据读入的图的顶点个数和边的条数,分别初始化图结构中图的顶点数组和图的邻接矩阵。

9个子功能的设计描述如下。

⑴景点信息查询景点信息查询由函数seeabout()实现。

该功能根据用户输入的景点编号输出该景点的相关信息。

如景点编号、名称等。

⑵学校景点介绍学校景点介绍由函数browsecampus()实现。

当用户选择该功能,系统即能输出学校全部景点的信息:包括景点编号、景点名称及景点介绍。

⑶相邻的景点及其距离为使游客能够知道其周围的景点和路径,方便他们迅速知道其所在位置和周围信息⑷查看浏览线路查看浏览线路由函数shortestpath_dij()实现。

该功能采用迪杰斯特拉(Dijkstra)算法实现。

当用户选择该功能,系统能根据用户输入的起始景点编号,求出从该景点到其他景点的最短路径线路及距离。

当用户选择该功能,系统能根据用户输入的起始景点及目的景点编号,查询任意两个景点之间的最短路径线路及距离。

⑸更改图信息修改一个已有景点的相关信息、删除一个景点及其相关信息、删除一条路径、加一条路径、修改路径长度、添加一个景点⑹数据安全防范设置密码,能保证数据不会被随便更改,由pass()判定密码是否正确,可由changepw()函数修改密码,初始密码为gdufsx⑺写入文件并保存修改打开该软件,若没有graph.txt,则会由系统初始化生成一个graph.txt,若已存在该文档会由该文档中的内容初始化系统。

⑻恢复初始状态若数据已经显得很杂乱并很难修理,就可以启用这个功能⑼退出即退出校园导游系统,由exit(0)函数实现2.3函数结构void initgraph(mgraph &G); //依据读入的图的顶点个数和边的条数,//分别初始化图结构中图的顶点向量数组和图的邻接矩阵void browsecampus(mgraph G); //输出学校全部景点的信息:编号、名称、介绍void cgraph(mgraph &G,Password &pw);//构造无向图和读写文件graph。

txtvoid writetxt(mgraph &G,Password &pw);//写入文件int pass(Password pw); //认证密码的正确与否,正确返回1,错误返回0void reception(mgraph &G); //前台服务函数void seeabout(mgraph &G); //景点信息void shortestpath_dij(mgraph G); //该景点到其他景点的最短路径线路及距离void near(mgraph G); //相邻的景点及其距离void changegraph(mgraph &G,Password &pw); //后台函数,并调用void changeP(mgraph &G,Password &pw); //修改一个已有景点的相关信息void deleteP(mgraph &G,Password &pw); //删除一个景点及其相关信void deleteL(mgraph &G,Password &pw); //删除一条路径void addL(mgraph &G,Password &pw); //添加一条路径void changeL(mgraph &G,Password &pw); //修改路径长度void Add(mgraph &G,Password &pw); //添加一个景点void changepw(mgraph &G,Password &pw); //修改密码void regraph(mgraph &G,Password &pw); //恢复初始状态2.42.4校园导游主界面程序运行,后台对图结构进行初始化,运行结果如图2.4.1。

2.4 主界面2.4.10前台系统前台系统是游客浏览查询界面。

如图2.4.102.4.10 游客浏览界面2.4.11个别景点的相关信息查询景点的相关信息查询是通过seeabout ( )函数来调用输出的,在前台系统输入1,输入任一景点编号即可知道其信息。

运行结果如图2.4.112.4.11 信息查询2.4.12任意两景点间最短路径查询根据用户的需求,在用户输入了起点和终点后计算出最短路径是哪一条路径。

例如起点是3.中国银行,终点是15.教学楼A栋。

运行结果如图2.4.122.4.12 任意两景点间最短路径查询2.4.13输出所有景点信息为方便用户一次性知道所有景点信息,设置了查询所有景点的信息如图2.4.132.4.13 输出所有景点信息2.4.14相邻的景点及其距离为使游客能够知道其周围的景点和路径,方便他们迅速知道其所在位置和周围信息。

如图2.4.142.4.14相邻的景点及其距离2.4.20后台系统输入密码为防止他人随意修改景点信息,需密码验证身份,初始密码为gdufsx,进入后台系统后可修改密码,如图2.4.2002.4.200 输入密码后台服务后台服务具有以下功能:修改一个已有景点的相关信息;删除一个景点及其相关信息;删除一条路径;添加一条路径;修改路径长度;添加一个景点;修改密码;恢复初始状态。

如图2.4.20。

功能如图2.4.21至2.4.282.4.20 后台服务2.4.21修改一个已有景点的相关信息2.4.22 删除一个景点及其相关信息2.4.23删除一条路径2.4.24添加一条路径2.4.25修改路径长度2.4.26 添加一个景点2.4.27修改密码2.4.28恢复初始状态在后台系统输入8,就会询问你是否恢复初始状态,暗“Y”将会使之前一切修改的数据信息都恢复原样,重新初始化。

2.4.28恢复初始状态2.4.3退出系统用户满足了需求之后,只要在主界面菜单处输入0便可退出此次校园导游系统。

运行结果如图2.4.9。

退出系统由于设计者水平有限,本导游图系统的功能还比较简单,没有求出两景点间的多条可行路径供游客选择,无法在界面中显示出地图;由于邻接矩阵是30*30的,所以无法在一个界面中完整简洁的显示出来。

还有个很好的想法也没有实现,就是怎样求出游完所有景点是的最短路径和线路,这样游客就不需要重复走过几个景点。

在这次作业中,我积累了不少经验,提高了动手能力。

在编程序过程中不要急于求成,如果一下字把所有的功能编出来了再去编译,一旦出错,就很难找出是哪里错误了,这就需要一个一个的实现了。

这次作业也让我增加了对文件流的理解。

参考文献[1]严蔚敏,李冬梅,吴伟民.数据结构(C语言版).人民邮电出版社.2011.[2]王珊珊,臧洌,张志航.C++程序设计教程第二版.机械工业出版社.2011//程序名称:校园导游系统设计与实现//程序员:Joebug//编写时间:2015年6月#include <iostream>#include <string.h>#include <stdlib.h>#include <fstream>#include <conio.h>using namespace std;#define N 50#define M 10typedef struct Infor{ //景点结构体char name[20]; //景点名称char inf[100]; //景点信息}Infor;typedef struct{int adj[N][N]; //各景点间的邻接关系用图邻接矩阵类型Infor vexs[N]; //景点(顶点)信息:int vexnum,arcnum; //图的顶点个数及边的条数}mgraph;typedef struct{char p[6];}Password;char inform[30][100]={"信息男宿舍,后面是内环,与风采园相近,前面是南苑9-12栋!","一楼价格还好,但饭菜比较难吃,二楼较贵,饭菜还行!","中国银行营业厅,如果要办理业务,需很早地去排队;有ATM机!","二楼有自强社办公室、校学生会办公室…一楼有健身房!","东西较贵但品类基本齐全!","主要是老师居住。

喜祥数码港要收费,云山数码港在不换硬件条件下免费修!","主要接待外来人员,招待所!","一楼有糖水和奶茶供应,晚上总有很多部门在此开会。

相关文档
最新文档