您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 连云港景点导游咨询系统
淮海工学院计算机工程学院课程设计报告设计名称:数据结构课程设计选题名称:连云港市景点导游咨询姓名:学号:专业班级:系(院):计算机工程学院设计时间:设计地点:计算机实验室、教室指导教师评语:签名:年月日成绩:数据结构课程设计报告第1页,共20页1.课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。2.课程设计任务与要求:任务:[问题描述]用无向网表示连云港市旅游景点平面图,图中顶点表示主要景点,存放景点编号、名称、简介等信息,图中边表示景点间的道路,存放路径长度信息。[基本要求](1)查询各景点的相关信息;(2)查询图中任意两个景点间的最短路径(3)查询图中任意两个景点间的所有路径(4)可动态添加景点,加后可查询该景点到其它景点的最短路径要求:1、要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。2设计的题目按要求完成,并具要有一定的深度和难度。3、程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释;4、每位同学需提交可独立运行的程序;5、每位同学需独立提交设计报告书,要求编排格式统一、规范、内容充实;数据结构课程设计报告第2页,共20页3.课程设计说明书一需求分析该连云港市景点导游咨询系统是为了旅游机构和个人对连云港市旅游景点的了解,手工操作时效率很低。因此设计了一个简便的景点导游咨询系统。此程序系统功能:①录入各景点信息:定义无向网存储景点名称及权值,以顺序表L存储;②功能选择:Caidan输出菜单建立系统功能列表;③查看各景点信息:Search函数搜索出定义的景点信息,包括:景点编号、景点名称、景点简介等;④查询两景点的最短路径:Dijkstra算法查询两景点间最短路径;⑤添加景点:将原有定义的内容放到顺序表中,在顺序表的尾部插入新增内容,在将全部内容存入邻接矩阵中;⑥程序结束:退出。(1)在程序中输入一个具体景点名称,需要向游客展示出该景点的所有信息,包括景点编号、景点名称、景点门票、景点简介等;(2)程序员输入游客所在地,以及想前往的下一个景点,利用Dijkstra算法得到到达目的地最短路径;(3)程序员输入游客所在地,以及想前往的另一个景点时,程序向用户提供所有路径。(4)程序员可添加景点,添加后可查询该景点到其它景点的最短路径;详细的列出连云港市景点信息,对比选择、优质选择,提高工作效率。二概要设计1、基本操作:CreateGraph(G):创建图G。LocateVertex(G,v):确定顶点v在图g中的位置。GetVertex(G,i):取出图g中的第i个顶点的值。FirstAdjVertex(G,v):求图G顶点v的第一个邻接点,若v无邻接点或图G中无顶点v,则函数值为“空”。NextAdjVertex(G,v,w):已知w是图G中顶点v的某个邻接点,求顶点v的下一个邻接点(紧跟在w后面),若w是v的最后一个邻接点,则函数值为“空”。InsertVertex(G,u):在图G中增加一个顶点u。InsertArc(G,v,w):在图G中增加一条从顶点v到顶点w的弧。TraverseGraph(G):按照某种次序,对图G的每个结点进行访问且只进行一次。2、系统中子程序及功能要求:(1)ChushihuaPath(MGraphg,inti,intj):初始化访问标志与路径条数;(2)Path(MGraphg,inti,intj,intk):确定第k+1个顶点的序号,k初始值为0;(3)ShortestPath(MGraphg,inti):输出最短路径;(4)ShortestPath_Dijkstra(g,i,j):Dijkstra算法求从顶点v0到顶点p的最短路径;数据结构课程设计报告第3页,共20页(5)Search(G,v)用于查找并向游客展示景点所有信息,即数据类型中定义的信息;(6)Chaname(MGraphg):查询景点的信息;(7)Chaallpath(MGraphg):查询两个景点间的所有路径;(8)Chashortpath(MGraphg):查询两个景点间的最短路径;(9)Add(MGraphg):动态添加景点。3.系统程序功能结构图图1系统程序功能结构图三详细设计图的邻接矩阵表示法定义#defineMAXV最大景点数;#defineINF极大值权值的初始化#defineAdjType权值(景点间距离)Typedefenum{DG,DN,UDG,UDN}GraphKind;typedefcharVertexDatd;//顶点数据(景点名)类型typedefstructArcNode{AdjTypeadj;}ArcNode;Typedefstruct{VertexDatdvexs[MAXV];//顶点向量ArcNodearcs[MAXV][MAXV];//邻接矩阵查询景点信息景点信息录入查询路径初始化景点信息动态添加景点信息按名称查景点信息查询最短路径查询全部路径连云港市景点导游咨询管理系统数据结构课程设计报告第4页,共20页intvexnum;//景点数intarcnum;//路径条数GraphKindkind;//图的种类标志}AdjMatrix;//(AdjacencyMatrixGraph)typedefstructInterestNode{intnum;//顶点编号charname[MAXSIZE];//顶点名称charintroduce[MAXLEN];//顶点信息描述}InterestNode;typedefstructMGraph{intedges[MAXV][MAXV];intvexnum,arcnum;VertexTypevexs[MAXV];}MGraph;#defineElemTypeint//线性表定义顺序存储typedefstruct{ElemTypeelem[MAXSIZE]intlast;}Seqlist;typedefstruct{InterestNodeelem[MAXV];intlength;}intvisited[MAXV];intp[MAXV];创建连云港市景点地图:voidCreateGraph(g,inti,j,b[];char*c,*d){inti,j;intb[11]={1,2,3,4,5,6,7,8,9,10};char*c[11]={各个景点名称};数据结构课程设计报告第5页,共20页char*d[11]={字符串指针数组,用来给每个顶点的简介信息进行赋值};MGraphg;//创建一个无向网intA[11][11]={景点的相关简介进行赋值};g.vexnum=顶点个数;g.arcnum=顶点边数;//建立无向网的邻接矩阵for(i=0;i图的顶点个数;i++){给每个顶点一个编号;给每个顶点一个名称;给每个顶点加上信息,即作为景点的简介信息;}}动态添加景点voidAdd(MGraphg,inti,j){一次输入添加新增景点的名称,简介.将景点数加一个值;将点数加一个值;路径增加以前的路径数;for(intj=0;jg.vexnum;j++){输入该新增加的景点到每个景点的路径长度矩阵的行列交换}}查询景点的信息:voidSearch(MGraphg,inti,intj,chars){inti;chars;while(1)//可提供循环查询,当输入为‘N’'或‘n’时,结束循环{cout“请输入你要查询的景点:”endl;数据结构课程设计报告第6页,共20页cini;for(intj=0;j图的顶点个数;j++){//输出信息}cout“您是否要继续查询?(按任意键继续或按n退出):”;cins;if(s=‘N’||s=‘n’)break;}}图2查询景点流程图查询景点间的游览路径voidChaallpath(MGraphg){inti,j;chars;while(1)//可提供循环查询,当输入为‘N’'或‘n’时,结束循环{//输入起点与终点;输入景点与第i景点名是否相同输出该景点是否是最后一个景点该景点不存在yesyesnonoi=i+1数据结构课程设计报告第7页,共20页MathPath(MGraphg,inti,intj)//调用MathPath函数,用来输出两个景点间的所有路径cout“您是否要继续查询?(按任意键继续或按n退出):”;cins;if(s=‘N’||s=‘n’)break;}}查询两个景点间的最短路径:Chashortpath(MGraphg){inti,j;chars;while(1)////可提供循环查询,当输入为‘N’'或‘n’时,结束循环{输入起点与终点Dijkstra(g,i,j);//调用Dijkstra函数,用来输出两个景点间的最短路径Cout“您是否要继续查询?(按任意键继续或按n退出):”;Cins;if(s=‘N’||s=‘n’)break;}}数据结构课程设计报告第8页,共20页四编程实现与调试分析1.在这次编写算法是花费时间最长的错误:errorC2440:'=':cannotconvertfrom'char*'to'char[30]'Therearenoconversionstoarraytypes,althoughthereareconversionstoreferencesorpointerstoarrays发现是前后两者赋值变量不同类型一个是char型一个是char[]数组型,经过很长时间的查找书籍和上网查询错误原因及解决方法是将g.vexs[i].name=c[i];改为strcpy(g.vexs[i].name,c[i]);2.这个问题也是纠结了很久,第一次只能显示出所有路径是这种开始主菜单景点信息初始化查找景点基本信息两景点间最短路径动态添加新景点景点门票景点简介景点名称景点编号两景点间所有路径查询信息显示结束程序退出YN图3系统功能结构图数据结构课程设计报告第9页,共20页寻找错误原因,花费了大量的时间进行排查.最终在反复研究程序代码中发现在voidPath(MGraphg,inti,intj,intk)中在其中的递归条用该函数时,未及时将visited[s]初始化,后添加了该语句visited[s]=0;完美解决了该项的错误.成功后实现结果,该错误是我明白了变量应该及时的对其初始化五用户手册1.运行程序,首先出现主菜单和副菜单;主菜单包括:1,查询连云港各景点相关信息;2,查询连云港两景点的所有游览路径;3,查询连云港两景点间的最短路径;4,输入您要添加的景点;5,退出本程序.副菜单包括:1:花果山2:连岛3:连岛海底世界4:孔望山5:船山6:孔雀沟风景区7:桃花涧8:枫树湾9:东海温泉10:秦山岛旅游渡假区2.首先进行功能选项:有效输入为1,2,3,4,5分别进入不同的功能区域.数据结构课程设计报告第10页,共20页3.景点间的信息查询有效输入为1,2,3.....9,10.本程序提供简单操作界面,根据提示便可得到您所需要查询的相关信息及各种服务,希望给您带来便利,操作界面.六测试成果(1)主界面情况(2)副界面情况(3)相关信息查询(4)两景点间所有浏览路径数据结构课程设计报告第11页,共20页(5)两景点间的最短路径(6)新景点添加功能数据结构课程设计报告第12页,共20页七附录(源程序清单)#includeiostream#includes
本文标题:连云港景点导游咨询系统
链接地址:https://www.777doc.com/doc-2002887 .html