数据结构课程设计―城市道路交通咨询系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

榆林学院数据结构课程设计报告题目城市交通咨询系统作者杨朝专业信息管理与信息系统学号1514210121指导老师张慧答辩时间2016.12.18目录1.系统需求分析...................................................11.1用户需求分析.................................................11.2功能需求分析.................................................21.3数据需求分析.................................................21.4小结........................................................32.系统设计..........................................................32.1系统设计功能.................................................32.2每个模块的具体功能。.........................................42.2.1采用C语言定义相关数据类型.............................42.2.2建立邻接矩阵交通网络:.................................42.2.3查询指定城市到其他城市自己建的最短路程:...............62.2.4查询任意两个城市之间的一条最短路径:...................72.3主函数的调用关系图...........................................83.系统测试..........................................................93.1操作说明.....................................................93.2测试数据....................................................103.2.1用户进入界面:........................................103.2.2、具体功能的实现.......................................113.2.3、结束程序.............................................124.总结.............................................................135.致谢.............................................................136.附录.............................................................14数据结构课程设计11.系统需求分析现如今网络非常发达,无论人们出差,旅游或者做其他的出行之时,都会想到道路问题,切不仅仅关心的是交通费用,而且对于里程和所需要的时间等的问题也是同样的关心,在此系统中,完全面向用户,可以用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。且在图中,顶点表示城市,边表示城市之间的交通关系。设计一个交通咨询系统,能够让旅客咨询从任一城市顶点到达另外一个城市之间顶点的最短路径问题(最短里程问题)。对系统分析,主要从以下几个方面进行分析。1.用户需求分析2.功能需求分析3.数据需求分析1.1用户需求分析现如今网络非常发达,无论人们出差,旅游或者做其他的出行之时,都会想到道路问题,切不仅仅关心的是交通费用,而且对于里程和所需要的时间等的问题也是同样的关心,在此系统中,完全面向用户,可以用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。且在图中,顶点表示城市,边表示城市之间的交通关系。设计一个交通咨询系统,能够让旅客咨询从任一城市顶点到达另外一个城市之间顶点的最短路径问题(最短里程问题)。当要查询某两个城市之间的最短交通路线或者其中一个城市到达其余城市的最短路线时,是一个很繁琐的过程。根据用户自己的需求,可以自定义地图,此程序就是主要以满足用户自己的环境与实际情况,在难以计算路程时,可将地图输入进行计算,系统将会为用户提供所用路径最短的出现路线,更好的满足用户需求。以下是针对咨询用户说明其最基本的模块功能。(1)进入程序后,用户可自己设置城市的个数,以及所有城市之间总共的路径,且分别用顶点和边表示城市与路径(2)用户根据自己设置的城市个数和路径数,具体输入每个路径的起始点以及每条路径的长度。(3)进入菜单选择界面(4)选择2,系统为用户进行提供任意城市的交通查询,即查询任意两个城城市交通咨询系统2市之间的一条最短路径。(5)选择1,系统为用户提供指定城市的交通查询,即查询指定城市到其他城市之间的最短路径。如若输入顶点超出范围显示错误,系统回到菜单重新选择(6)选择0,系统推出程序。1.2功能需求分析城市交通咨询系统总体的设计目标:用《数据结构》中的邻接矩阵作数据结构,并结合数据结构有向图的最短路径计算方法,结合相应的数据算法以及c语言的相关知识,编写一个良好的,具有可操作性的,以及能方便用户的使用,包括自定义地图,路径与城市个数可结合实际情况而言,相对操作,简便易懂并无难度。系统在菜单可根据命令进行相应的操作,已满足用户的需求。城市交通系统基本功能根据以上分析,此系统具备以下功能:(1)用户进入后的地图创建界面(明确地图中城市的个数以及路径的个数)(2)地图完善界面(用户自己输入地图中相关路径的起始点以及路径长度)(3)菜单界面包含两条命令(4)命令1求一个城市到所有城市的最短距离(5)命令2求任意的两个城市之间的最短距离(6)回复命令0可推出程序。1.3数据需求分析用邻接矩阵建立交通网络模块VertexTypevexs[MVNum];//顶点数组,类型假定为charAdjmatrixarcs[MVNum][MVNum];//邻接矩阵,类型假定为int型建立邻接矩阵,用函数voidCreateMGraph(MGraph*G,intn,inte){//采用邻接矩阵表示法构造有向图G,n、e表示图的当前顶点数和边数用迪杰斯特拉算法计算某顶点到其余顶点的最短路径用函数voidDijkstra(MGraph*G,intn,inte)来定义此函数采用邻接矩阵表示法构造有向图G,n、e表示图的当前顶点数和边数用弗洛伊德算法求任意一对顶点的最短路径用函数voidFloyd(MGraph*G,intn)来定义。利用费洛伊德算法,求出最短路径。数据结构课程设计31.4小结从各种需求方面下手改编代码,并不断调试,让界面更加友好。不断地尝试上,在各种问题上不断突破,慢慢的完善代码,等最大限度的满足用户需求。这几天短时间的课程设计也让我认识到了自己在这门课程上还面临着许许多多的问题,为以后的具体实践明确了努力方向。同时,城市交通咨询系统的实现,为用户更好的解决了再实际出行时遇到的路径问题,最初的设计也为代码敲定了编写方向。再三考虑后确定了系统的功能,确定什么功能有实现必要,什么功能可有可无。在这样的基础之下使得思路更加清晰。2.系统设计本程序首先是用户编辑界面,用户根据自己的需求编写地图,从而加入顶点的数组之中,创建的地图用邻接矩阵存储,在从主函数之中进行调用,实现对两个算法的调用。用户在输入顶点以及边的信息都会存储,在存储成功之后会提示用户存储成功,之后进入到菜单界面,菜单界面提供两种选择口令,分别可以调运Dijkstra和Floyd算法,调用之后输入相应的口令以及要查询的城市编号,算法会根据邻接矩阵存储的地图进行计算,求出最短路径。在以后使用完系统后,可输入口令0,系统会结束一切运算,退出程序。2.1系统设计功能菜单界面的主要功能有两个:(1)、求一个城市到所有城市的最短距离(2)、求任意的两个城市之间的最短距离城市交通咨询系统主要有三个模块分别为:(1)、邻接矩阵的输入与存储构建交通网络(2)、任意两个城市的最短距离查询(3)、两个指定城市的最短距离查询主界面的模块概念图如图2-1:城市交通咨询系统4图2.12.2每个模块的具体功能。2.2.1采用C语言定义相关数据类型1.定义一个,用来存储顶点信息。typedefstruct{VertexTypevexs[MAX];Adjmatrixarcs[MAX][MAX];}MGraph;..2.定义一个Dijkstra函数voidDijkstra(MGraph*G,intv,intn);3.定义一个Floyd函数voidFloyd(MGraph*G,intn);2.2.2建立邻接矩阵交通网络:任意两个城市的最短距离查询两个指定城市的最短距离查询用户进入系统交通网络构建结果,退出系统数据结构课程设计5图2-2邻接矩阵构造图结构函数数据类型定义:typedefstruct{VertexTypevexs[MAX];Adjmatrixarcs[MAX][MAX];}MGraph;voidCreateMGraph(MGraph*G,intn,inte)//邻接矩阵构成有向图{inti,j,k,w;for(i=1;i=n;i++)G-vexs[i]=(char)i;for(i=1;i=n;i++)for(j=1;j=n;j++)G-arcs[i][j]=IDF;printf(输入%d条边的i,j及w:\n,e);for(k=1;k=e;k++)N开始输入顶点和边数n,e输入i,j,wk=e,k+++结束Y城市交通咨询系统6{scanf(%d,%d,%d,&i,&j,&w);G-arcs[i][j]=w;}printf(有向图的存储结构建立完毕!\n);其中vexs[MAX]保存顶点信息,arcs[MAX][MAX]用于保存边与边之间的信息。在构建时通过输入的边数i,j作为矩阵的行、列确定顶点的出度和入度。用邻接矩阵方法存储图。2.2.3查询指定城市到其他城市自己建的最短路程:图2-3应用狄克斯特拉算法来具体实现这一步的需求。基本思想:设G(V,E)是一个带权有向图,把图中的顶点集合V分成两组,第一组为已经求出的最短路径的顶点集合(用S表示,初始时S中只有一个原点,以后每求得一条最短路径就加入的集合S中,知道全部顶点都加入到集合中),第二组,为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点就如S中。如果两个顶点之间有权值,并且各个路径的权值不同,就把最小的作为顶点与顶点的最短距离。yxz图2-4开始输入顶点v狄克斯特拉算法输出路径,距离结束kvu数据结构课程设计7如图所示若x+yz,则最短的路径就是v=k=u。同理若x+yz,则最短的路径就是v=u,D[v1]=0;S[v1]=1;//原点编号放入s中for(i=2;in;i++){min=IDF;for(w=1;w=n;w++)if(!S[w]&&D[w]min){v=w;min=D[w];}S[v]=1;//修改顶点u放入s中for(w=1;w=n;w++)if(!S[w]&&(D[v]+G-arcs[v][w]D[w])){D[w]=D[v]+G-arcs[v][w];P[w]=v;}}2.2.4查询任意两个城市之间的一条最短路径:其具体的流程图如图2-5所示:图2-5此过程需要应用弗洛伊德算法来具体实现。用邻接矩阵保存图存储后,另外需要存一个二维数组A存放当前顶点之间的最短路径长度。分量A[i][j]表示当前顶点i到j的最短路径长度。弗洛伊德算开始输入起点v,终点w调用弗洛伊德算法

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功