全国交通资讯模拟数据结构课程设计报告.doc

全国交通资讯模拟数据结构课程设计报告.doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
全国交通资讯模拟数据结构课程设计报告课案

全国交通咨询模拟系统的设计与实现 问题描述 出于不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则期望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。 需求分析 (1) 提供对城市信息进行编辑 ( 如 : 添加或删除 ) 的功能。 (2) 城市之间有两种交通工具:火车和飞机。 (3) 提供两种最优决策 : 最快到达或最省钱到达。全程只考虑一种交通工具。 (4) 旅途中耗费的总时间应该包括中转站的等候时间。 (5) 咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原则和交通工具 , 输出信息 : 最快需要多长时间才能到达或者最少需要多少旅费才能到达 , 并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。 概要设计 因为全国交通咨询模拟中有众多城市之间的连接关系,为实现全国交通咨询系统的开发,采用图类型与邻接表类型来存储城市之间的信息。下面给出他们的ADT的定义。 3.1 抽象数据类型定义如下: typedef struct unDiGraph { int numVerts; //结点 costAdj cost; //邻接矩阵 }unDiGraph,*UNG; 基本操作: unDiGraph* CreateCostG() 操作结果:构造带权(费用)图。 unDiGraph* CreateTimeG() 操作结果:构造带权(时间)图。 构造飞机带权(费用)图。 PathMat *Floyed(unDiGraph *D) 操作结果:Floyed函数 求任意两点的最短路径。 3.2 系统功能模块设计 全国交通咨询模拟系统由4个功能模块组成:添加城市、删除程序、采用火车出行、采用飞机出行 下面给出功能模块图,如图3-1所示。 图3-1全国交通模拟图3-2 系统函数调用关系图 3.4主界面设计 为了实现全国交通咨询模拟系统,需要设计一个含有多菜单项的主控菜单子程序,以链接系统中各个子项目的调用,为了方便用户使用本系统,本系统主控菜单的运行界面如图3-3所示。 详细设计 实现全国交通咨询模拟系统的开发,采用图结构类型存储城市的信息。其中,各城市间的邻接关系用图的邻接矩阵类型存储;城市信息用结构体数组存储,其中每个数组元素是一个结构体变量,包含时间和费用三个分量;图的顶点的个数和边的个数由变量费用、时间大小表示,它们是整型数据。 4.1 数据类型定义 数据存储:有向图、邻接表 函数调用: #include windows.h #include stdio.h #include crtdbg.h #include string.h #includeiostream.h #include malloc.h//引用的文本件 #define INF 65535 //定义一个最大数定为无穷值 #define MAX 13 typedef int costAdj[MAX+1][MAX+1];//图邻接矩阵从1开始记数 int Path[MAX+1][MAX+1];//图邻接矩阵从1开始记数 int o[13],h; typedef struct unDiGraph { int numVerts; //结点 costAdj cost; //邻接矩阵 }unDiGraph,*UNG; //图的定义 costAdj B,L; void pr(int i)//选择城市 void pri()//输出城市 unDiGraph *CreateCostG()//构造带权(费用)图 返回首地址G: unDiGraph *CreateTimeG()//构造带权(时间)图 返回首地址G: unDiGraph *CreateFlyG()//飞机的相关信息 void Floyed(unDiGraph *D,unDiGraph *M) //Floyed函数 求任意两点的最短路径: : void prn_pass(int i,int j) //为了求从i到j的最短路径,只需要调用如下的过程 void time()//求最少时间路径。。 void money()//求最少花费路径 void administrator()//管理员功能 void main()//main函数 4.2 系统子程序详细设计 4.2.1 求最小路径 Void ShortPath_DIJ(AMGraph G, int v0,PathMatrix P, ShortpathTable D) { For(v = 0;v G.vexnum;++v) { Final[v] = FALSE; D[v] = G.arce[v0][v]; For( w

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档