数据结构课程设计交通咨询系统设计

上传人:枫** 文档编号:508061355 上传时间:2023-12-21 格式:DOC 页数:36 大小:125.51KB
返回 下载 相关 举报
数据结构课程设计交通咨询系统设计_第1页
第1页 / 共36页
数据结构课程设计交通咨询系统设计_第2页
第2页 / 共36页
数据结构课程设计交通咨询系统设计_第3页
第3页 / 共36页
数据结构课程设计交通咨询系统设计_第4页
第4页 / 共36页
数据结构课程设计交通咨询系统设计_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《数据结构课程设计交通咨询系统设计》由会员分享,可在线阅读,更多相关《数据结构课程设计交通咨询系统设计(36页珍藏版)》请在金锄头文库上搜索。

1、设计题目:7.3.4交通咨询系统设计P160一、设计要求1问题描述根据不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能的短,出门旅行的旅客希望旅费尽可能的少,而老年人则要求中转次数少。模拟一个全国城市之间的咨询交通程序,为旅客提供两种或三种最优的交通路线。2需求分析二、概要设计1主界面设计(图2.1“交通咨询系统”主菜单)2存储结构设计本系统采用图结构类型存储抽象交通咨询系统的信息。typedef struct TrafficNodechar nameMAX_STRING_NUM; /班次 /MAX_STRING_NUM最为10int StartTime, S

2、topTime; /起止时间 int EndCity; /该有向边指向的顶点在数组中的位置,即该城市编号 int Cost; /票价 TrafficNodeDat;typedef struct VNodeCityType city;int TrainNum, FlightNum; /标记下面Train数组和Flight数组里元素个数 TrafficNodeDat TrainMAX_TRAFFIC_NUM; /数组成员为结构体,记录了到达城市、起止时间、票价和班次 TrafficNodeDat FlightMAX_TRAFFIC_NUM;/ int Cost; /遍历时到达该城市的耗费(时间或者

3、费用) VNodeDat;typedef struct PNodeint City;int TraNo; PNodeDat;3系统功能设计(1)添加城市。添加一个城市的名称(2)删除城市。输入一个城市名称,删除该城市。(3)添加交通路线。输入起始城市、终点城市、航班或火车、车次、起始时间、终点时间和票价(4) 删除交通路线。输入火车或飞机的班次删除该交通路线。(5)查询最小费用路线。输入起始城市、终点城市、航班或火车、车次、起始时间、终点时间查询最小费用路线。三、模块设计1模块设计 无向网操作模块工作区模块主程序模块 (图2.2 模块调用示意图)2系统子程序及功能设计(1)int ShowMe

4、nu()/主菜单(2)void CopyRight()(3)int SeekCity(char *name) /寻找城市(4)int InsertCity(char *Name) /添加城市(5)int SaveSysInfo() /向程序输入数据(6)int DelCity(char *Name) /删除城市(7)int InsertTrain(char *train, char *StartCity, char *EndCity, int StartTime, int EndTime, int cost)/添加火车路线(8)int InsertFlight(char *flight, ch

5、ar *StartCity, char *EndCity, int StartTime, int EndTime, int cost)/添加飞机航线(9)int DelPath(char *name)/删除路线(10)void Dijkstra(int matxDij_MAXNDij_MAXN, int p_start, int p_end, int TravelType)(11)int InitSysData()/存储数据(12)int SearchMinTime(CityType City, CityType EndCity, int CurTime, int curPathNo, int

6、 TravelType)/查询最短时间(13)int CalcMinTime(int StartCity, int EndCity, int TravelType) /显示最短时间(14)int CalcMinCost(int StartCity, int EndCity, int TravelType)/最少花费(15)int main()/主函数3函数主要调用关系图15main()89112754136361223716(图2.3函数主要调用关系图)四、详细设计1数据类型定义(1)全局变量的定义typedef short int CityType;/CityType 定义短整形的变量 ty

7、pedef struct TrafficNodechar nameMAX_STRING_NUM; /班次 /MAX_STRING_NUM最为10int StartTime, StopTime; /起止时间 int EndCity; /该有向边指向的顶点在数组中的位置,即该城市编号 int Cost; /票价 TrafficNodeDat;typedef struct VNodeCityType city;int TrainNum, FlightNum; /标记下面Train数组和Flight数组里元素个数 TrafficNodeDat TrainMAX_TRAFFIC_NUM; /数组成员为结

8、构体,记录了到达城市、起止时间、票价和班次 TrafficNodeDat FlightMAX_TRAFFIC_NUM;/ int Cost; /遍历时到达该城市的耗费(时间或者费用) VNodeDat;typedef struct PNodeint City;int TraNo; PNodeDat; 2系统主要子程序详细设计(1)用户工作区模块的设计int ShowMenu() printf(n|*欢迎使用交通咨询系统*|n);printf(n|-1: 添加城市-|);printf(n|-2: 删除城市-|);printf(n|-3: 添加交通路线-|);printf(n|-4: 删除交通路线

9、-|); printf(n|-5: 查询最小费用路线-|);printf(n|-6: 查询最快路线-|);printf(n|-7: 清除屏幕-|);printf(n|-0: 退出-|n);printf(n|*o(_)o o(_)o *|n);printf(n请输入你的选择:);return 1;(2)用Dijkstra算法求两段路程的最短距离void Dijkstra_Output(int matxDij_MAXNDij_MAXN, int PreCityDij_MAXN, int p_end, int TravelType)int trackDij_MAXN;int i = 0, j, k,

10、 min, tmp, end, cost = 0;j = p_end; tracki+ = j;while (PreCityj = 0)cost += matxPreCityjj;tracki+ = j = PreCityj;printf(nTrack Way:);if (!TravelType)for (i-; i0; i-)printf(n%s:, CityNametracki);end = tracki - 1; min = 32767;for (k = 0; kAdjListtracki.Traink.Cost)min = AdjListtracki.Traink.Cost;tmp =

11、 k;printf(%s, AdjListtracki.Traintmp.name);printf(%2d:%2d-%2d:%2d, AdjListtracki.Traintmp.StartTime / 60, AdjListtracki.Traintmp.StartTime % 60, AdjListtracki.Traintmp.StopTime / 60, AdjListtracki.Traintmp.StopTime % 60);elsefor (i-; i0; i-)printf(n%s:, CityNametracki);end = tracki - 1; min = 32767;

12、for (k = 0; kAdjListtracki.Flightk.Cost)min = AdjListtracki.Flightk.Cost;tmp = k;printf(%s, AdjListtracki.Flighttmp.name);printf(%2d:%2d-%2d:%2d, AdjListtracki.Flighttmp.StartTime / 60, AdjListtracki.Flighttmp.StartTime % 60, AdjListtracki.Flighttmp.StopTime / 60, AdjListtracki.Flighttmp.StopTime % 60);printf(n%s: DESTINATION!, CityNametrack0);printf(nMin Cost : %dn, cost);void Dijkstra(int matxDij_MAXNDij_MAXN, int p_start, int

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题 > 初中试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号