交通咨询系统设计_第1页
交通咨询系统设计_第2页
交通咨询系统设计_第3页
交通咨询系统设计_第4页
交通咨询系统设计_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录 1 概述 1 1.1 课 程设计 名称 .1 1.2 课 程设计 目的 .1 2 系 统 分析 .2 2.1 问题 描述 .2 2.2 设计 要求 .2 2.3 课 程设计 内容 2 3 概要设计 .2 3.1 定 义相关的数据 类 型 .2 3.2 总 体结 构图 .2 图5.1 .3 3.3 模 块调 用图 .3 图5.2 3 4 详细设计 .3 4.1建立一个有向图的存储结构 3 4.2 迪杰斯特拉算法 3 4.3 费 洛伊德算法 3 4.4 主函数流程图 .4 5运行与测试 .6 实例的运行数据 .6 图5.4 .6 5.1 有向 图 的存储结构建立 .6 5.2 单 源最短路径 7 5.3 任意一对顶点间最短路径 7 6 总结与心得 8 7 参考文献 .8 8 附 录 (程序源代 码) .8 1 概述 1.1 课程设计名称 交通咨询系统设计(最短路径问题) 1.2 课程设计目的 充分了解并掌握最短路径问题及其应用,根据有向 图的存 储结构解决实际问题。 2 系统 分析 2.1 问题描述 对于该设计,可用一个图结构来表示交通网 络系统,利用 计 算机建立一个交通咨询系统。图中顶 点表示城市,边表示城市之间 的交通关系。 这个交通系统可以回答 2.2 设计要求 1、建立交通网络的存储结构 2、提供一个城市到任意城市最短路径查询功能 3、提供任意两个城市间最短路径 查询功能 4、提供程序测试算法 5、界面友好 2.3 课程设计内容 设计一个交通咨询系统,能让旅客咨询从任一个城市定点到另一个城市定点之间的最短路径或 最低花费或最少时间等问题。对于不同的咨询要求、可 输入城市 间的路程或所需时间或所需花 费。 3 概要 设计 3.1 定义相关的数据类型 采用邻接矩阵定义图: typedef struct VertexType vexsMVNum;/顶点数组、 类型假定为char型 Adjmatrix arcsMVNumMVNum;/邻接矩阵、 假定为int 型 MGraph; 建立 图的存储结构 #include #include #define MVNum 100/最大顶点数 #define Maxint 32767 enum booleanFALSE,TRUE; typedef char VertexType; typedef int Adjmatrix; typedef struct VertexType vexsMVNum;/顶点数组、 类型假定为char型 Adjmatrix arcsMVNumMVNum;/邻接矩阵、 假定为int 型 MGraph; /MGraph是以邻接矩阵存储的图类型 3.2 总体结构图 图5.1 3.3 模块调用图 交通咨询管理系统 建立 有向 图的 存储 结构 单源 路径 查询 问题 任意 一对 顶点 间最 短路 径 主函数 main 创建有向图 void MGraph 打印系统 菜单 调用费洛伊德算 法void Floyd 调用迪杰斯特算 法void dijkstra 图5.2 4 详细设计 4.1建立一个有向图的存储结 构 有向图的邻接矩阵是不对称的,实现其算法,我们只需要输入有向图的有向边及权值即可。采 用邻接矩阵表示法构造有向图G ,输入图中顶点个数和边数,初始化邻接矩阵,紧跟着系统提 示输入边及权值,则系统提示有向图的存储结构建立完毕。 4.2 迪杰斯特拉算法 为了解决单源路径问题,我们提出了迪杰斯特拉算法,它主要是按路径长度递增产生顶点的 最短路径算法,其实现如下: 初始化S和D,置空最短路径终点集,置初始的最短路径值; Sv1=TRUE;Dv1=0;/S集初始时只有源点,源点到源点的距离为0; While(S集中顶点数 #include #define MVNum 100 /最大顶点数 #define Maxint 32767 enum boolean FALSE,TRUE ; typedef char VertexType; typedef int Adjmatrix; typedef struct VertexType vexsMVNum; /顶点数组,类型假定为 char型 Adjmatrix arcsMVNumMVNum; /邻接矩阵,假定为int 型 MGraph; int D1MVNum,P1MVNum; int DMVNumMVNum,PMVNumMVNum; void CreateMGraph(MGraph *G,int n,int e) /采用 邻接矩阵 表示法构造有向图G,n,e表示图的当前顶点数和 边数 int i,j,k,w; for(i=1;ivexsi=(char)i; for(i=1;iarcsij=Maxint; /初始化邻接矩阵 printf(“输入%d条边的i,j以及w:n“,e); for(k=1;karcsij=w; printf(“有向图的存储结构建立完毕!n“); void Dijkstra(MGraph *G,int v1,int n) /用Dijkstra 算法求有向 图G的 v1顶点到其他顶点v的最短路径 Pv及其权Dv /设G是有向图的邻接矩阵,若边不存在,则Gij=Maxint /Sv为真当且仅当v属于s,即已求得从v1到v得最短路径 int D2MVNum,P2MVNum; int v,i,w,min; enum boolean SMVNum; for(v=1;varcsv1v; /置初始的最短路径值 if(D2varcsvwarcsvw; P2w=v; printf(“路径长度 路径n“); for(i=1;iarcsij!=Maxint) Pij=j; else Pij=0; Dij=G-arcsij; for(k=1;k%d“,k); k=Pkw; print

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论