1 题目介绍
1.1 问题描述
出于不同目的的旅客对交通工具和交通路径有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则期望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个交通咨询系统程序,为旅客提供最优决策的交通咨询。
1.2 需求分析提供对城市信息进行编辑的功能,包括交通信息的增加,删除,修改。
城市之间有两种交通工具:火车和飞机。
提供两种最优决策 : 最快到达或最省钱到达。全程只考虑一种交通工具。
咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原则和交通工具 , 输出信息 : 最快需要多长时间才能到达或者最少需要多少旅费才能到达。
2 系统功能分析
2.1 概要分析
交通咨询系统包括交通信息的查询,交通信息的增加与修改,最省时间与最省钱的路线的生成。
2.2 功能结构分析
为了实现交通咨询系统的作用,系统包含功能如图所示。
3 数据结构设计
3.1 抽象数据类型定义typedefstructunDiGraph
{
intnumVerts;//结点
costAdj cost;//邻接矩阵
}unDiGraph,*UNG;
基本操作:
unDiGraph*CreateCostG()
操作结果:构造带权(费用)图。
unDiGraph*CreateTimeG()
操作结果:构造带权(时间)图。
构造飞机带权(费用)图。
PathMat*Floyed(unDiGraph*D)
操作结果:Floyed函数 求任意两点的最短路径。
3.2 预存数据结构
为了便于系统测试使用,在系统初始化时便存入了预留的数据。
3.2.1 预存城市信息及编号
1.成都
2.兰州
3.石家庄
4.郑州
5.武汉
6.贵阳
3.2.2预存交通信息
成都与郑州之间的火车行程的时间为2,费用为4。
成都与兰州之间的火车行程的时间为3,费用为5。
成都与武汉之间的火车行程的时间为1,费用为3。
武汉与郑州之间的火车行程的时间为1,费用为2。
兰州与武汉之间的火车行程的时间为3,费用为6。
兰州与石家庄之间的火车行程的时间为1,费用为3。
武汉与贵阳之间的火车行程的时间为5,费用为2。
贵阳与石家庄之间的火车行程的时间为2,费用为4。
贵阳与兰州之间的火车行程的时间为4,费用为1。
成都与武汉之间的飞机行程的时间为3,费用为3。
成都与兰州之间的飞机行程的时间为1,费用为1。
兰州与石家庄之间的飞机行程的时间为2,费用为5。
兰州与贵阳之间的飞机行程的时间为4,费用为2。
石家庄与贵阳之间的飞机行程的时间为3,费用为1。
武汉与贵阳之间的飞机行程的时间为2,费用为3。
武汉与石家庄之间的飞机行程的时间为3,费用为4。
4 功能模块设计
实现全国交通咨询模拟系统的开发,采用图结构类型存储城市的信息。其中,各城市间的邻接关系用图的邻接矩阵类型存储;城市信息用结构体数组存储,其中每个数组元素是一个结构体变量,包含时间和费用三个分量;图的顶点的个数和边的个数由变量费用、时间大小表示,它们是整型数据。
4.1 主要功能模块设计
全国交通咨询模拟系统由4个功能模块组成:添加城市、删除程序、采用火车出行、采用飞机出行
下面给出功能模块图,如图所示。
4.2 主要函数调用关系图
ADT内基本操作函数之间的函数调用关系图,如图所示。
4.3 费洛伊德算法求最小路径初始化:D[u,v]=A[u,v]
For k:=1 to n
For i:=1 to n
For j:=1 to n
If D[i,j]>D[i,k]+D[k,j] Then
D[i,j]:=D[i,k]+D[k,j];
算法结束:D即为所有点对的最短路径矩阵
5 调试与运行结果
5.1 主界面设计
为了实现全国交通咨询模拟系统,需要设计一个含有多菜单项的主控菜单子程序,以链接系统中各个子项目的调用,为了方便用户使用本系统,本系统主控菜单的运行界面如图所示。
5.2 运行结果及分析
交通资讯系统调试成功后在本地运行结果如下:
查看城市
选择最短时间路线的两种方式
选择以火车的方式出行
坐火车从石家庄到贵阳的最短时间路线与所花费的金额
从成都到贵阳的最少花费与时间
管理员程序
增添新城市 沧州
增添石家庄到沧州的火车费用
增添石家庄到沧州的火车时间
坐火车从石家庄到沧州的最短时间