实用标准文案精彩文档洛阳理工学院课程设计说明书课程名称数据结构课程设计设计课题校园导游程序专业计算机科学与技术班级学号姓名完成日期实用标准文案精彩文档课程设计任务书设计题目:校园导游程序设计内容与要求:[问题描述]用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。[基本要求](1)查询各景点的相关信息;(2)查询图中任意两个景点间的最短路径。(3)查询图中任意两个景点间的所有路径。(4)增加、删除、更新有关景点和道路的信息。指导教师:2016年12月20日课程设计评语成绩:指导教师:_______________年月日实用标准文案精彩文档目录一、问题描述...........................................1二、基本要求............................................1三、测试数据............................................2四、算法思想.............................................3五、模块划分............................................45.1应用函数..........................................45.2.1主函数..........................................55.2.2查询景点信息函数.................................65.2.3查询两景点之间最短路径函数.......................65.2.4查询两景点之间所有路径函数.......................75.2.6删除已有的顶点和路径.............................85.2.7修改已有的顶点和路径.............................9六、数据结构...........................................10七、测试...............................................11八、心得...............................................19九、源程序.............................................20实用标准文案精彩文档一、问题描述用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。二、基本要求(1)查询各景点的相关信息;(2)查询图中任意两个景点间的最短路径。(3)查询图中任意两个景点间的所有路径。(4)增加、删除、更新有关景点和道路的信息。实用标准文案精彩文档三、测试数据菜单函数:依次输入:1,2,3,4,5,6,0分别对应景点信息查询,最短路径查询,所有路径查询,添加景点及路径信息,删除景点及路径信息,修改景点及路径信息,退出。查询景点信息:输入:1,2分别对应按编号查询,按景点名称查询按编号查询:输入编号:1按景点名称查询:输入名称:大明桥最短路径查询:输入起始景点和终点景点编号:1,7所有路径查询:输入起始景点和终点景点编号:2,8添加景点及路径信息:输入新景点序号:9输入新景点名称:南门输入新景点相关信息:充满古韵的门,适合拍照输入到其余各景点的距离:50,100,20…删除景点及路径信息:输入:1,2分别对应按编号查询,按景点名称查询按编号查询:输入需要删除的景点编号:8修改景点及路径信息:输入:1,2分别对应修改景点信息,修改道路信息修改景点信息:输入1,2分别对应修改景点名称,修改景点描述修改景点信息:输入修改序号:1输入修改后的名称:图书馆123实用标准文案精彩文档四、算法思想先利用CreateUDN创建初始无向网,通过main主函数调用显示,操作功能的选择通过Menu函数输出,根据游客需求选择景点信息查询、景点之间最短路径查询、景点之间所有路径查询、添加景点信息、删除景点信息或者修改信息。如果是景点信息查询,在search中完成,再调用SearchMenu选择是按照景点编号或者景点名称查询,游客输入相应内容。如果是景点之间最短路径查询或是景点之间所有路径查询则游客输入起始景点和结束景点;最短路径是用ShortestPath实现,其中运用了迪杰斯特拉算法;所有路径由Searchpath1调用disppath再调用path,在path中通过递归算法实现寻找每一条路并输出。如果是添加景点信息调用Addnewsight函数,游客按照提示依次输入信息内容。如果是删除景点信息,选择按照名称删除或是按照序号删除,再调用Deletesight函数,游客输入相应内容进行删除。如果是修改信息,调用Changesight,Changemenu两个函数,游客按提示选择修改景点信息或者道路信息,再按提示输入修改后得内容。输出使用调用的相应函数。信息保存于文件中。校园导游图添加景点和路径查询所有路径查询最短路径修改景点和路径修改路径修改景点删除景点和路径按编号按名称查询景点信息按编号按名称修改名称修改描述实用标准文案精彩文档五、模块划分5.1应用函数voidCreateUDN(intv,inta);/*造图函数*/voidnarrate();/*说明函数*/voidShortestPath(intnum);/*最短路径函数*/voidoutput(intsight1,intsight2);/*输出函数*/intMenu();/*主菜单*/voidsearch();/*查询景点信息*/intSearchMenu();/*查询子菜单*/voidHaMiTonian(int);/*图的遍历*/voidSearchpath1(MGraphg);/*查询两个景点间的所有路径*/voiddisppath(MGraphg,inti,intj);voidpath(MGraphg,inti,intj,intk);/*确定路径上第k+1个顶点的序号*/voidNextValue(int);voiddisplay();/*显示遍历结果*/intAddnewsight(intn);/*添加新的景点和路径*/intDeletesight();/*删除景点和路径*/voidChangesight();/*修改景点和路径*/intChangemenu();/*修改路径或顶点的选择菜单*/intSightmenu();/*选择需该景点的菜单*/实用标准文案精彩文档5.2.1主函数1.功能:初始图通过main主函数调用显示,操作功能的选择通过Menu函数输出,显示为菜单形式提醒用户进行操作,用户选择后在main主函数中调用各个函数实现各种功能。2.流程图:6101432151输入相应序号结束开始查询信息删除信息所有路径添加信息最短路径修改信息退出景点信息和操作目录实用标准文案精彩文档5.2.2查询景点信息函数1.功能:在main主函数中调用search,打开存储了信息的文件,在显示界面显示已有的景点名称和序号,游客按需求进行序号查询或者名称查询,输入需要查询的序号或者名称后会显示该景点的名称及简介,而后按任意键返回上级菜单选择继续查询或者返回主界面,在查询景点信息函数中实现。2.流程图:5.2.3查询两景点之间最短路径函数1.功能:在main函数中调用narrate函数,打开存储了信息的文件,游客输入起点编号或者终点编号,利用迪杰斯特拉算法由ShortestPath最短路径函数选择一条两点之间的最短路径展示给游客,关闭文件。noyes21开始按编号查询按景点查询结束输入相关信息是否有此景点?没有找到!输出景点信息实用标准文案精彩文档5.2.4查询两景点之间所有路径函数1.功能:当游客输入完毕后,根据之前构建的无向图,执行过程为进层和退层两个阶段。首先开始递归进层,考虑使用基于深度优先思想,在搜素过程中,按照景点编号大小依次访问每一个节点,若访问到一个未被访问且有路径相通的点则将其加入数组P,直到找到目的地,输出第一条路径,然后开始递归退层,按照之前的方式递归访问它的所有未被访问的相邻节点。并通过相应的设置标志visited[]的方式使最终能不重复地走遍所有的简单路径。最后输出这些路径即可。5.2.5添加新的顶点和路径1.功能:在Addnewsight添加新的景点和路径函数中实现,打开存储了信息的文件,输入需要新添加的景点名称,基本信息介绍并依次输入它到原有各景点的距离,将新信息存储到文件中并保存。实用标准文案精彩文档5.2.6删除已有的顶点和路径1.功能:删除不需要的景点信息,并保存删除后的文件,方便下一次浏览。2.流程图:21no结束是否有此景点?输入需要删除的景点删除成功没有找到yes开始按景点编号按景点名称实用标准文案精彩文档5.2.7修改已有的顶点和路径1.功能:修改有误的景点信息,并保存修改后的文件,方便下一次浏览。2.流程图:221221开始修改道路信息结束输入相关信息修改景点信息输入道路信息输入景点编号修改景点名称修改景点描述输入相关信息实用标准文案精彩文档六、数据结构MGraph定义图的类型,其中包含景点,景点之间的距离,景点数和边数。VertexType是景点的结构体,里面包含了景点编号,景点名称,景点描述。ArcCell是边的结构体,其中包含了边的长度即景点之间的距离。typedefstructArcCell{intadj;/*相邻接的景点之间的路程*/}ArcCell;/*定义边的类型*/typedefstructVertexType{intnumber;/*景点编号*/charsight[100];/*景点名称*/chardescription[1000];/*景点描述*/}VertexType;/*定义顶点的类型*/typedefstruct{VertexTypevex[20];/*图中的顶点,即为景点*/ArcCellarcs[20][20];/*图中的边,即为景点间的距离*/intvexnum,arcnum;/*顶点数,边数*/}MGraph;/*定义图的类型*/实用标准文案精彩文档七、测试7.1.测试数据输入:根据游客需求选择景点信息查询、景点之间最短路径查询、景点之间所有路径查询、添加景点信息、删除景点信息或者修改信息。如果是景点信息查询,再选择是按照景点编号或者景点名称查询,游客输入相应内容;如果是景点之间最短路径查询或是景点之间所有路径查询则游客输入起始景点和结束景点;如果是添加景点信息则按照提示依次输入信息内容;如果是删除景点信息,选择按照名称删除或是按照序号删除,再输入相应内容进行删除;如果是修改信息,按提示选择修改景点信息或者道路信息,再按提示输入修改后得内容预期的输出结果:运行程序直接出现各景点及其编号,同时出现操作菜单,其他结果依使用者需求而定,请参见程序后的运行结果。1.菜单函数实用标准文案精彩文档2.查询景点信息(按编号)3.查询景点信息(按名称)实用标准文案精彩文档4.查询两景点之间的最短路径5.查询两点之间的所有路径实用标准文案精彩文档6.添加新的景点及其路径添加过程实用标准文案精彩文档添加后7.删除景点删除过程实用标准文案精彩文档删除后实用标准文案精彩文档8.修改景点信息修改后实用标准文案精彩文档9.文件内容实用标准文案精彩文档八、心得通过对这次对校园导游系统程序编写,我切实体会到了如何编写一个较大的程序。这是我自己相对独立做的最大的一个程序,过程中遇到了各种各样的问题。但同时巩固了课堂上所学的知识,也学到了很多新的东西,也收获了很多。拿到题目,第