资源预览内容
第1页 / 共44页
第2页 / 共44页
第3页 / 共44页
第4页 / 共44页
第5页 / 共44页
第6页 / 共44页
第7页 / 共44页
第8页 / 共44页
第9页 / 共44页
第10页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
(交通运输)数据结构课程 设计交通咨询系统设计 (交通运输)数据结构课程 设计交通咨询系统设计 TrafficNodeDat; typedefstructVNode CityTypecity; intTrainNum,FlightNum;/标记下面 Train 数组和 Flight 数组里元素个数 TrafficNodeDatTrainMAX_TRAFFIC_NUM;/数组成员为结构体,记录了到达城 市、起止时间、票价和班次 TrafficNodeDatFlightMAX_TRAFFIC_NUM; /intCost;/遍历时到达该城市的耗费(时间或者费用) VNodeDat; typedefstructPNode intCity; intTraNo; PNodeDat; 3系统功能设计3系统功能设计 (1)添加城市。添加一个城市的名称 (2)删除城市。输入一个城市名称,删除该城市。 (3)添加交通路线。输入起始城市、终点城市、航班或火车、车次、起始时间、 终点时间和票价 (4)删除交通路线。输入火车或飞机的班次删除该交通路线。 (5)查询最小费用路线。输入起始城市、终点城市、航班或火车、车次、起始 时间、终点时间查询最小费用路线。 三、模块设计三、模块设计 1模块设计1模块设计 (图 2.2 模块调用示意图) 2系统子程序及功能设计2系统子程序及功能设计 (1)intShowMenu()/主菜单 (2)voidCopyRight() (3)intSeekCity(char*name)/寻找城市 (4)intInsertCity(char*Name)/添加城市 (5)intSaveSysInfo()/向程序输入数据 (6)intDelCity(char*Name)/删除城市 (7) intInsertTrain(char*train,char*StartCity,char*EndCity,intStartTime,in tEndTime,intcost)/添加火车路线 (8) intInsertFlight(char*flight,char*StartCity,char*EndCity,intStartTime, intEndTime,intcost)/添加飞机航线 (9)intDelPath(char*name)/删除路线 (10) voidDijkstra(intmatxDij_MAXNDij_MAXN,intp_start,intp_end,intTrave lType) 无向网操作模块 (11)intInitSysData()/存储数据 (12) intSearchMinTime(CityTypeCity,CityTypeEndCity,intCurTime,intcurPathNo,i ntTravelType)/查询最短时间 (13)intCalcMinTime(intStartCity,intEndCity,intTravelType)/显示最短 时间 (14)intCalcMinCost(intStartCity,intEndCity,intTravelType)/最少花费 (15)intmain()/主函数 3函数主要调用关系图3函数主要调用关系图 (图 2.3 函数主要调用关系图) 四、详细设计四、详细设计 1数据类型定义1数据类型定义 (1)全局变量的定义 typedefshortintCityType;/CityType 定义短整形的变量 typedefstructTrafficNode charnameMAX_STRING_NUM;/班次/MAX_STRING_NUM 最为 10 intStartTime,StopTime;/起止时间 intEndCity;/该有向边指向的顶点在数组中的位置,即该城市编号 intCost;/票价 TrafficNodeDat; typedefstructVNode 15main () 89 1 12 754 13 6 3 6 1 2 237 16 CityTypecity; intTrainNum,FlightNum;/标记下面 Train 数组和 Flight 数组里元素个数 TrafficNodeDatTrainMAX_TRAFFIC_NUM;/数组成员为结构体,记录了到达城 市、起止时间、票价和班次 TrafficNodeDatFlightMAX_TRAFFIC_NUM; /intCost;/遍历时到达该城市的耗费(时间或者费用) VNodeDat; typedefstructPNode intCity; intTraNo; PNodeDat; 2系统主要子程序详细设计2系统主要子程序详细设计 (1)用户工作区模块的设计 intShowMenu() printf(n|*欢迎使用交通咨询系统*|n); printf(n|-1:添加城市-|); printf(n|-2:删除城市-|); printf(n|-3:添加交通路线-|); printf(n|-4:删除交通路线-|); printf(n|-5:查询最小费用路线-|); printf(n|-6:查询最快路线-|); printf(n|-7:清除屏幕-|); printf(n|-0:退出-|n); printf(n|*o(_)oo(_)o*|n); printf(n 请输入你的选择:); return1; (2)用 Dijkstra 算法求两段路程的最短距离 voidDijkstra_Output(intmatxDij_MAXNDij_MAXN,intPreCityDij_MAXN, intp_end,intTravelType) inttrackDij_MAXN; inti=0,j,k,min,tmp,end,cost=0; j=p_end;tracki+=j; while(PreCityj=0) cost+=matxPreCityjj; tracki+=j=PreCityj; printf(nTrackWay:); if(!TravelType) for(i-;i0;i-) printf(n%s:,CityNametracki); end=tracki-1;min=32767; for(k=0;kAdjListtracki.Tra ink.Cost) min=AdjListtracki.Traink.Cost; tmp=k; printf(%s,AdjListtracki.Traintmp.name); printf(%2d:%2d-%2d:%2d,AdjListtracki.Traintmp.StartTime/60,Ad jListtracki.Traintmp.StartTime%60,AdjListtracki.Traintmp. StopTime/60,AdjListtracki.Traintmp.StopTime%60); else for(i-;i0;i-) printf(n%s:,CityNametracki); end=tracki-1;min=32767; for(k=0;kAdjListtracki.Fli ghtk.Cost) min=AdjListtracki.Flightk.Cost; tmp=k; printf(%s,AdjListtracki.Flighttmp.name); printf(%2d:%2d-%2d:%2d,AdjListtracki.Flighttmp.StartTime/60,A djListtracki.Flighttmp.StartTime%60,AdjListtracki.Flighttm p.StopTime/60,AdjListtracki.Flighttmp.StopTime%60); printf(n%s:DESTINATION!,CityNametrack0); printf(nMinCost:%dn,cost); voidDijkstra(intmatxDij_MAXNDij_MAXN,intp_start,intp_end,intTrave lType) intPreCityDij_MAXN;/PreCityi=-1,neverused; /PreCity0,theprecityofCityi inti,j,min,pre,pos; for(i=0;iCityNum;i+) PreCityi=-1; PreCityp_start=-2; while(PreCityp_end=-1) min=-1; for(i=0;iCityNum;i+) if(PreCityi!=-1) for(j=0;j0pos=j;min=matxij; PreCitypos=pre; Dijkstra_Output(matx,PreCity,p_end,TravelType); 五、测试分析五、测试分析 1.添加城市 在主菜单下,用户输入 1,添加城市名称。 (图 2.4添加城市) 2删除城市 在主菜单下,用户输入 2,删除已添加城市名称。 (图 2.5删除城市) 3添加交通路线 在主菜单下,用户输入 3,已添加城市名称。添加起始城市、终点城市名称、乘 车类型、乘车班次、起始时刻、终点时刻、和票价。 (图 2.6添加交通路线) 4删除交通路线 输入班次号,删除交通路线 (图 2.7删除交通路线) 5查询最小费用交通路线 (图 2.8查询最小费用交通路线) 6查询最快交通路线 (图 2.9查询最快交通路线) 7清除屏幕 8退出 六、用户手册六、用户手册 使用本系统时,用户需先向程序添加城市后,在已有城市基础上添加已有城市的 路线和使用各项功能。 七、调试报告七、调试报告 程序运行无错误,但当系统输入其他无储存内容时程序会意外中断,代码需要优 化。 八、程序清单八、程序清单 #includestdafx.h #include #include #include #defineERR0 #defineOK1 #defineDij_MAXN100 #defineMAX_VERTEX_NUM100 #defineMAX_STRING_NUM100 #defineMAX_TRAFFIC_NUM100 constcharCityFile=; constcharTrainFile=; constcharFlightFile=; typedefshortintCityType;/CityType 定义短整形的变量 typedefstructTrafficNode charnameMAX_STRING_NUM;/班次/MAX_STRING_NUM 最为 10 intStartTime,StopTime;/起止时间 intEndCity;/该有向边指向的顶点在数组中的位置,即该城市编号 intCost;/票价 TrafficNodeDat; typedefstructVNode CityTypecity; intTrainNum,FlightNum;/标记下面 Train 数组和 Flight 数组里元素个数 TrafficNo
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号