资源预览内容
第1页 / 共53页
第2页 / 共53页
第3页 / 共53页
第4页 / 共53页
第5页 / 共53页
第6页 / 共53页
第7页 / 共53页
第8页 / 共53页
第9页 / 共53页
第10页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
全国交通咨询模拟系统靱据结构课程设计报告为全国交通咨询模拟系统#目录X 需求分析4二*个人工作 5概要设计1.主程序流程图:62.创建图算法流程图:7!1!源程序1945程序结果5. 3设计和调试分析4950程序设计体会全国交通咨询模拟系统一、需求分析旅客对由于出行目的的不同对交通工具的要求也有不同。例如,因公事出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则希望旅费尽可能省, 而老年旅客则要求中转次数最少。为了能满足广大旅客的需求,方便旅客出行, 就此编制一个全国城市间的交通咨询程序,为旅客提供两种或者三种最优决策 的交通咨询,达到如下的基本要求:(1)提供对城市信息进行编辑(如:添加和删除)的功能 (2) 城市之间有两种交通工具:火车和飞机。提供对列车时刻表和飞机航 班表进行编辑(增加或删除)的功能。(3) 提供两种最优决策:最快到达和最省钱到达。全程只考虑一种交通工 具。(4) 旅途中耗费的总时间应该包括中转站的等候时间。(5) 咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、 最优决策原则和交通工具,输出信息:最快需要多长时间才能到达或 者最少需要多少旅费才能到达,并详细说明依次于何时乘哪趟列车或 哪一次班机到何地。(6) 通过对比以及用户操作基本达到旅客出行的便利。二、个人工作此次课程设计是对全国城市交通图列车时刻表及飞机航班表的编辑。此 次课设是利用VC工具在dos环境下实现全国交通的咨询与管理。通过此次程序 可以对全国城市之间火车与飞机进行两方面的咨询,即最少的时间与最少的费 用的咨询,从而方便旅客的出行。通过此次课程设计,我要学会怎样用在 VCdos 环境下编程,而且要通过此次课程设计加深对数据结构的理解,在设计中用邻 接表作交通图的存储结构,表示边的结点中除含有邻接点的信息外,还包括交 通工具、路程中消耗的时间和花费以及出发和到达的时间等属性。图中顶点城 市的信息,包括城市名称、城市编号和依附该顶点的边的指针。在程序中,利用迪杰斯特拉算法求花钱最少和花时间最少的交通方式。#三、概要设计1.主程序流程图:CreateGraOpe nGraph_Main Me nu(SaveGraph_DestoryGra#2.创建图算法流程图:3.打开图算法流程图:读出边Y上i+4. 主菜单操作算法流程图:SwitcCasInqui re MeCasbreCasMan age_Men5. 咨询菜单流程图Inq uire_MeSwitchCasCasCasInquire_MoInquire_Ti6. 咨询钱最少模块图Inq uire_Mo输I Niiin put M oney(LeastMo neyPaLeastMo neyPaprint Money(N结in put_M oney( print_Money(#7. input_Money(Graph G, int &st,int &sn)算法流程图输入终止8. inputVex(G,st算法流程图丿输入城市名NRetu输出城9. LocateVex(G,name,)算法流程图4.*-J71RetuRetur10. print_Money(GT,p)算法流程图11. ShortestTimePath(GT,st,nd,p算法流程图12. Manage_Menu(GT,GP)算法流程图丿SwitchCasCasCasCasll11City EdTrain_EPlane_E13. City_Edit(GT,GP)算法流程图输入 n斗 删除城市及结输出错误输丿入n14. Train_Edit(GT,GP)算法流程图离 J Y I输入 n删除列I * N重新输入b-1只是参数不同,注释:部分算法的设计思想相同, 故省略部分程序流程图。四、源程序#define MAXVTXNUM 30/ 图中顶点数的最大值#*边和图类型*typedef struct信息 弧的信息int ivex;int jvex;char Number10; int Money;定义各车次及航班的/起始点号/终点号/车次号费用intStartTime;起始时间(秒)intEndTime;终止时间(秒)intTime;中途时间(秒)Edgelnfo;/边的信息typedef struct EdgeNode/ 边 的 信息弧结点Edgelnfo elem;EdgeNode *nextEdge;EdgeNode, *EdgePtr;/边的结点类型,指向边的指针typedef struct/城市信息头结点char cityName10;int cityNumber;EdgePtr firstEdge;/指向的一条依附该顶点的边的指针Vnode;顶点类型typedef struct/ 图的结构Vnode AdjlistMAXVTXNUM; 邻接表int vexNum, edgeNum; II图中的顶点数 和边数int FlagMAXVTXNUM; II标志是否是图中的顶点,0表示不是,1表示是Graph;*图类型的基本操作*typedef structint vx,vy; IIvx为路径的起点,vy为路径的终 占 八、EdgeInfo p; 路径中边的信息Edge;typedef structEdge edgesMAXVTXNUM; II 路径中边 的序列:edgesi表示从起点到i的最短路径 int len;路径中边的数目Path;*基 本 操*void copyPath (Path & p1,Path & p2)/复制路径p仁p2int i;for(i=0;ivp2.1 en;i+)p1 edgesi vx=p2 .edgesi vx;p1 edgesi vy=p2 .edgesi vy; p1.edgesi.p =p2.edgesi.p;p1l en=p2.1 en;void SetPath(Path & pa, int v, int w, EdgeInfo t) /设置pa从v到w的第一条边,边的信息为tpa. edges0 vx=v;pa. edges0 vy=w;pa. edges0 .p=t;paen=1;#include viostream hint TimeChange(int hour,int minute)/把输入的小时和分钟树转换成分钟的形式,忽略天数if(minute60) hour=hour+minute/60; minute=minute%60;if(hour24) hour=hour%24;#include #include #include #include Graph .h#include Time h#include Path .h#define NULL 0bool OpenGraph_T(Graph & G); bool OpenGraph_P(Graph & G);int Main_Menu(Graph & GT,Graph & GP); bool SaveGraph_T(Graph G);bool SaveGraph_P(Graph G);void main()Graph GT;/火车交通图Graph GP;飞机交通图CreateGraph(GT); /建立空的火车交通图CreateGraph(GP); /建立空的飞机交通图OpenGraph_T(GT); 打开已经存在火车的 数据OpenGraph_P(GP); 打开已经存在飞机的数据保存火车数据/保存飞机数据求取最少钱数和最短Main_Menu(GT,GP); SaveGraph_T(GT); SaveGraph_P(GP); DestoryGraph(GT);DestoryGraph(GP);/* 迪杰斯特拉算法时间*void LeastMoneyPath(Graph G, int st, int nd,Path & pathA)/st:起点号,nd:终点号,结果存储在pathA 中/path包括路径的长度,起点,终点和路径信丿息/利用迪杰斯特拉算法的基本思想求图G中从顶点st到nd的一条
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号