全国交通咨询模拟系统实验报告_第1页
全国交通咨询模拟系统实验报告_第2页
全国交通咨询模拟系统实验报告_第3页
全国交通咨询模拟系统实验报告_第4页
全国交通咨询模拟系统实验报告_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/一、问题描述全国交通咨询模拟:处于对不同目的的旅客对交通工具有不同的要求。例如.因公出差的旅客希望在旅途中的时间尽可能短.出门旅游的游客则希望旅费尽可能省.而老年旅客则要求中转次数最少。编制一个全国城市间的交通咨询程序.为旅客提供两种或三种最优决策的交通咨询。[基本要求]〔1提供对城市信息进行编辑〔如:添加或删除的功能。〔2城市之间有两种交通工具:火车和飞机。提供对列车时刻表和飞机航班进行编辑〔增设或删除的功能。〔3提供两种最优决策:最快到达或最省钱到达。全程只考虑一种交通工具。〔4旅途中耗费的总时间应该包括中转站的等候时间。〔5咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原则和交通工具.输出信息:最快需要多长时间才能到达或者最少需要多少旅费才能到达.并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。XX397乌鲁木齐XX397乌鲁木齐XXXXXX天津XXXXXXXX上海XXXXXXXXXXXXXXXX189221611456681100967639907349676511242305704651622367409255607675140呼和浩特呼和浩特北京北京137137674XXXX674XXXX534842534842XXXX825825XXXX672672数据结构设计和核心算法设计描述:根据题目中的基本要求分析.可以创建系统概念模型.流程设计框图如下:班次2、逻辑结构拆分:班次起止时间城市编号交通工具信息起止时间城市编号交通工具信息票价票价飞机线路总数飞机线路总数火车线路总数火车信息路线信息火车线路总数火车信息路线信息飞机信息飞机信息核心设计:根据上面的流程图和逻辑拆分.对这个问题有了一个比较直观.详细地了解。并且从中也可得知路线的添加即数据的存储是这个系统进行运作的一个基础。而为了便于数据的存储、添加、删除等操作.我选择了储存文件对这些数据进行了存储。将每个信息量放在不同的文件中.可以更有效、直观地对这些数据进行处理。流程图中的7个主要功能模块在主函数中.采用输入选项进入子菜单.但是其他操作都是在路线添加好后进行的.并且为了每一项功能进行完后.系统可以及时回到主交互界面.我采用的是无限循环形式.即while〔1。以邻接表作交通图的存储结构.表示边的结点内除含有邻接点的信息外.包括交通工具、路程中消耗的时间和花费以及出发和到达的时间等多项属性。主控及功能模块层次结构:模块说明:本系统分为个模块1、主函数2、添加城市3、查找城市并返回序号4、删除城市5、添加列车6、添加航班7、删除列车或航班8、找出最小费用路线9、初始化系统数据〔读入内存10、找出最快路线11、计算最快路线耗费的时间并打印12、计算最小费用路线13、主界面14、存储信息到文件15、退出、2、下面是各模块示意图:基本操作:TrafficNodeDat交通工具信息Charname[MAX_STRING_NUM]班次Intstarttime出发时间Intstarttime到达时间Intcost票价UNodeDat路线信息Shortintcity城市编号IntTrainNum火车路线数intFlightNum航班路线数TrafficNodeDatTrain[MAX_TRAFFIC_NUM]火车路线信息TrafficNodeDatFlight[MAX_TRAFFIC_NUM]航班路线信息函数变量声明:#include<stdio.h>#include<string.h>#defineERR0#defineOK1#defineDij_MAXN33#defineMAX_VERTEX_NUM31#defineMAX_STRING_NUM10#defineMAX_TRAFFIC_NUM10constcharCityFile[]="D:\\city.txt";constcharTrainFile[]="D:\\train.txt";constcharFlightFile[]="D:\\flight.txt";typedefshortintCityType;typedefstructTrafficNode{charname[MAX_STRING_NUM];//班次intStartTime,StopTime;//起止时间intEndCity;//该有向边指向的顶点在数组中的位置.即该城市编号intCost;//票价}TrafficNodeDat;typedefstructVNode{CityTypecity;intTrainNum,FlightNum;//标记下面Train数组和Flight数组里元素个数TrafficNodeDatTrain[MAX_TRAFFIC_NUM];//数组成员为结构体.记录了到达城市、起止时间、票价和班次TrafficNodeDatFlight[MAX_TRAFFIC_NUM];//intCost;//遍历时到达该城市的耗费〔时间或者费用}VNodeDat;typedefstructPNode{intCity;intTraNo;}PNodeDat;VNodeDatAdjList[MAX_VERTEX_NUM];//SystemInfocharCityName[MAX_VERTEX_NUM][MAX_STRING_NUM];//城市名.采用第一下标为该城市在本程序中的编号intCityNum;//城市数目PNodeDatPath[MAX_VERTEX_NUM];//存储临时最小时间路径PNodeDatMinPath[MAX_VERTEX_NUM];//存储搜索到当前的最小时间路径intMinTime,StartTime;intcurPath;函数构成:intmain<>{charname[MAX_STRING_NUM];chars_city[MAX_STRING_NUM];chare_city[MAX_STRING_NUM];intCommand,cost;intstartcity,endcity,traveltype;ints_hour,s_minute,e_hour,e_minute;while<1> {ShowMenu<>;//显示菜单scanf<"%d",&Command>;//switch<Command> {case0://退出return0;case1://添加城市InitSysData<>;printf<"\n输入城市名:">;scanf<"%s",&name>;InsertCity<name>;SaveSysInfo<>;printf<"SystemInfoSaveOK!\n">;break;case2://删除城市InitSysData<>;printf<"\n输入城市名:">;scanf<"%s",&name>;DelCity<name>;SaveSysInfo<>;printf<"SystemInfoSaveOK!\n">;break;case3://添加路线InitSysData<>;printf<"起始站城市名:">;scanf<"%s",&s_city>;printf<"终点站城市名:">;scanf<"%s",&e_city>;printf<"类型〔列车0.航班1:">;scanf<"%d",&traveltype>;printf<"输入列车/飞机班次:">;scanf<"%s",&name>;printf<"起始时刻<00:00.24小时制>:">;scanf<"%2d:%2d",&s_hour,&s_minute>;printf<"到达时刻<00:00.24小时制>:">;scanf<"%2d:%2d",&e_hour,&e_minute>;printf<"票价:">;scanf<"%d",&cost>;if<traveltype> {InsertFlight<name,s_city,e_city,s_hour*60+s_minute,e_hour*60+e_minute,cost>; }else {InsertTrain<name,s_city,e_city,s_hour*60+s_minute,e_hour*60+e_minute,cost>; }SaveSysInfo<>;printf<"SystemInfoSaveOK!\n">;break;case4://删除路线InitSysData<>;printf<"输入班次:">;scanf<"%s",&name>;DelPath<name>;SaveSysInfo<>;printf<"SystemInfoSaveOK!\n">;break;case5://最小耗费InitSysData<>;printf<"\n起始城市:">;scanf<"%s",&name>;startcity=SeekCity<name>;if<startcity<0> {printf<"ErrorCityName:Nosuchcity!\n">;break; }printf<"终点城市:">;scanf<"%s",&name>;endcity=SeekCity<name>;if<endcity<0> {printf<"ErrorCityName:Nosuchcity!\n">;break; }printf<"类型<列车0,航班1>:">;scanf<"%d",&traveltype>;if<traveltype!=0&&traveltype!=1> {printf<"ErrorInput!">;break; }CalcMinCost<startcity,endcity,traveltype>;printf<"\n">;break;case6://最短时间路线InitSysData<>;printf<"\n起始城市:">;scanf<"%s",&name>;startcity=SeekCity<name>;if<startcity<0> {printf<"ErrorCityName:Nosuchcity!\n">;break; }printf<"终点城市:">;scanf<"%s",&name>;endcity=SeekCity<name>;if<endcity<0> {printf<"ErrorCityName:Nosuchcity!\n">;break; }printf<"类型<列车0,航班1>:">;scanf<"%d",&traveltype>;if<traveltype!=0&&traveltype!=1> {printf<"ErrorInput!">;break; }CalcMinTime<startcity,endcity,traveltype>;printf<"\n">;break;}}}四、主函数中的各个调用的函数代码具体如下:显示菜单:intShowMenu<>{printf<"\n************MENU************\n">;printf<"1:添加城市\n2:删除城市\n3:添加交通路线\n4:删除交通路线\n5:查询最小费用路线\n6:查询最快路线\n0:退出">;printf<"\n****************************\n">;printf<"\nTypeInYourCommand:">;return1;}查找城市并返回城市序号:intSeekCity<char*name>{inti;for<i=0;i<CityNum;i++> {if<strcmp<name,CityName[i]>==0> {returni; } }return-1;}〔3储存信息到文件:intSaveSysInfo<>{FILE*fp;inti,j,total;fp=fopen<CityFile,"w">;fprintf<fp,"%d\n",CityNum>;for<i=0;i<CityNum;i++> {fprintf<fp,"%s\n",CityName[i]>; }fclose<fp>;total=0;fp=fopen<TrainFile,"w">;for<i=0;i<CityNum;i++> {total+=AdjList[i].TrainNum; }fprintf<fp,"%d\n",total>;for<i=0;i<CityNum;i++> {for<j=0;j<AdjList[i].TrainNum;j++> {fprintf<fp,"%s%s%s",AdjList[i].Train[j].name,CityName[i],CityName[AdjList[i].Train[j].EndCity]>;fprintf<fp,"%2d:%2d%2d:%2d%d\n",AdjList[i].Train[j].StartTime/60,AdjList[i].Train[j].StartTime%60,AdjList[i].Train[j].StopTime/60,AdjList[i].Train[j].StopTime%60,AdjList[i].Train[j].Cost>; } }fclose<fp>;total=0;fp=fopen<FlightFile,"w">;for<i=0;i<CityNum;i++> {total+=AdjList[i].FlightNum; }fprintf<fp,"%d\n",total>;for<i=0;i<CityNum;i++> {for<j=0;j<AdjList[i].FlightNum;j++> {fprintf<fp,"%s%s%s",AdjList[i].Flight[j].name,CityName[i],CityName[AdjList[i].Flight[j].EndCity]>;fprintf<fp,"%2d:%2d%2d:%2d%d\n",AdjList[i].Flight[j].StartTime/60,AdjList[i].Flight[j].StartTime%60,AdjList[i].Flight[j].StopTime/60,AdjList[i].Flight[j].StopTime%60,AdjList[i].Flight[j].Cost>; }}fclose<fp>;return1;}〔4添加城市:intInsertCity<char*Name>{strcpy<CityName[CityNum],Name>;AdjList[CityNum].city=CityNum;AdjList[CityNum].FlightNum=0;AdjList[CityNum].TrainNum=0;CityNum++;return1;}〔5删除城市:intDelCity<char*Name>{intcity,i,j;city=SeekCity<Name>;for<i=city;i<CityNum-1;i++> {strcpy<CityName[i],CityName[i+1]>;AdjList[i].FlightNum=AdjList[i+1].FlightNum;AdjList[i].TrainNum=AdjList[i+1].TrainNum;for<j=0;j<AdjList[i].FlightNum;j++> {AdjList[i].Flight[j].Cost=AdjList[i+1].Flight[j].Cost;AdjList[i].Flight[j].EndCity=AdjList[i+1].Flight[j].EndCity;strcpy<AdjList[i].Flight[j].name,AdjList[i+1].Flight[j].name>;AdjList[i].Flight[j].StartTime=AdjList[i+1].Flight[j].StartTime;AdjList[i].Flight[j].StopTime=AdjList[i+1].Flight[j].StopTime; } }CityNum--;return1;}〔6添加火车路线:intInsertTrain<char*train,char*StartCity,char*EndCity,intStartTime,intEndTime,intcost>{inti,j;i=SeekCity<StartCity>;j=SeekCity<EndCity>;AdjList[i].Train[AdjList[i].TrainNum].Cost=cost;AdjList[i].Train[AdjList[i].TrainNum].EndCity=j;AdjList[i].Train[AdjList[i].TrainNum].StartTime=StartTime;AdjList[i].Train[AdjList[i].TrainNum].StopTime=EndTime;strcpy<AdjList[i].Train[AdjList[i].TrainNum].name,train>;AdjList[i].TrainNum++;return1;}添加航班路线:intInsertFlight<char*flight,char*StartCity,char*EndCity,intStartTime,intEndTime,intcost>{inti,j;i=SeekCity<StartCity>;j=SeekCity<EndCity>;AdjList[i].Flight[AdjList[i].FlightNum].Cost=cost;AdjList[i].Flight[AdjList[i].FlightNum].EndCity=j;AdjList[i].Flight[AdjList[i].FlightNum].StartTime=StartTime;AdjList[i].Flight[AdjList[i].FlightNum].StopTime=EndTime;strcpy<AdjList[i].Flight[AdjList[i].FlightNum].name,flight>;AdjList[i].FlightNum++;return1;}删除路线:intDelPath<char*name>{inti,j,flag=0;for<i=0;i<CityNum;i++> {for<j=0;j<AdjList[i].FlightNum;j++>if<strcmp<AdjList[i].Flight[j].name,name>==0> {flag=1; break; }if<flag> {for<;j<AdjList[i].FlightNum-1;j++> {AdjList[i].Flight[j].Cost=AdjList[i].Flight[j+1].Cost;AdjList[i].Flight[j].EndCity=AdjList[i].Flight[j+1].EndCity;strcpy<AdjList[i].Flight[j].name,AdjList[i].Flight[j+1].name>;AdjList[i].Flight[j].StartTime=AdjList[i].Flight[j+1].StartTime;AdjList[i].Flight[j].StopTime=AdjList[i].Flight[j+1].StopTime; }AdjList[i].FlightNum--; break; }for<j=0;j<AdjList[i].TrainNum;j++>if<strcmp<AdjList[i].Train[j].name,name>==0> {flag=1;break; }if<flag> {for<;j<AdjList[i].TrainNum-1;j++> {AdjList[i].Train[j].Cost=AdjList[i].Train[j+1].Cost;AdjList[i].Train[j].EndCity=AdjList[i].Train[j+1].EndCity;strcpy<AdjList[i].Train[j].name,AdjList[i].Train[j+1].name>;AdjList[i].Train[j].StartTime=AdjList[i].Train[j+1].StartTime;AdjList[i].Train[j].StopTime=AdjList[i].Train[j+1].StopTime; }AdjList[i].TrainNum--; break; } }return1;}〔9打印最小费用路线:voidDijkstra_Output<intmatx[Dij_MAXN][Dij_MAXN],intPreCity[Dij_MAXN],intp_end,intTravelType>{inttrack[Dij_MAXN];inti=0,j,k,min,tmp,end,cost=0; intstartH,startM,endH,endM;//定义四个变量:startH出发的小时.startM出发的分钟.endH到达的小时.endM到达的分钟j=p_end;track[i++]=j;while<PreCity[j]>=0> {cost+=matx[PreCity[j]][j];track[i++]=j=PreCity[j]; }printf<"\nTrackWay:">;if<!TravelType> {for<i--;i>0;i--> { printf<"\n%s:",CityName[track[i]]>; end=track[i-1];min=32767; for<k=0;k<AdjList[track[i]].TrainNum;k++> if<AdjList[track[i]].Train[k].EndCity==end&&min>AdjList[track[i]].Train[k].Cost> { min=AdjList[track[i]].Train[k].Cost; tmp=k; } printf<"%s",AdjList[track[i]].Train[tmp].name>; startH=AdjList[track[i]].Train[tmp].StartTime/60; startM=AdjList[track[i]].Train[tmp].StartTime%60; endH=AdjList[track[i]].Train[tmp].StopTime/60; endM=AdjList[track[i]].Train[tmp].StopTime%60; if<!<startH/10>> { printf<"0">; } printf<"%d:",startH>; if<!<startM/10>> { printf<"0">; } printf<"%d--",startM>; if<!<endH/10>> { printf<"0">; } printf<"%d:",endH>; if<!<endM/10>> { printf<"0">; } printf<"%d\n",endM>;//printf<"%2d:%2d-%2d:%2d",AdjList[track[i]].Train[tmp].StartTime/60,AdjList[track[i]].Train[tmp].StartTime%60,AdjList[track[i]].Train[tmp].StopTime/60,AdjList[track[i]].Train[tmp].StopTime%60>; } }else {for<i--;i>0;i--> {printf<"\n%s:",CityName[track[i]]>;end=track[i-1];min=32767; for<k=0;k<AdjList[track[i]].FlightNum;k++> //这句错了.AdjList[track[i]].Train[k].EndCity改为AdjList[track[i]].Flight[k].EndCity! /*if<AdjList[track[i]].Train[k].EndCity==end&&min>AdjList[track[i]].Flight[k].Cost> {*/ if<AdjList[track[i]].Flight[k].EndCity==end&&min>AdjList[track[i]].Flight[k].Cost> { min=AdjList[track[i]].Flight[k].Cost; tmp=k; } printf<"%s",AdjList[track[i]].Flight[tmp].name>; startH=AdjList[track[i]].Flight[tmp].StartTime/60; startM=AdjList[track[i]].Flight[tmp].StartTime%60; endH=AdjList[track[i]].Flight[tmp].StopTime/60; endM=AdjList[track[i]].Flight[tmp].StopTime%60; if<!<startH/10>> { printf<"0">; } printf<"%d:",startH>; if<!<startM/10>> { printf<"0">; } printf<"%d--",startM>; if<!<endH/10>> { printf<"0">; } printf<"%d:",endH>; if<!<endM/10>> { printf<"0">; } printf<"%d\n",endM>;//printf<"%2d:%2d-%2d:%2d",AdjList[track[i]].Flight[tmp].StartTime/60,AdjList[track[i]].Flight[tmp].StartTime%60,AdjList[track[i]].Flight[tmp].StopTime/60,AdjList[track[i]].Flight[tmp].StopTime%60>; } }printf<"\n%s:DESTINATION!",CityName[track[0]]>;printf<"\nMinCost:%d\n",cost>;}〔10找出最小费用路线voidDijkstra<intmatx[Dij_MAXN][Dij_MAXN],intp_start,intp_end,intTravelType>{intPreCity[Dij_MAXN];//PreCity[i]==-1,neverused;//PreCity>0,theprecityofCityiinti,j,min,pre,pos;for<i=0;i<CityNum;i++> {PreCity[i]=-1; }PreCity[p_start]=-2;while<PreCity[p_end]==-1> {min=-1;for<i=0;i<CityNum;i++>if<PreCity[i]!=-1> {for<j=0;j<CityNum;j++>if<PreCity[j]==-1&&matx[i][j]>0&&<min<0||matx[i][j]<min>> {pre=i;pos=j;min=matx[i][j]; } }PreCity[pos]=pre; }Dijkstra_Output<matx,PreCity,p_end,TravelType>;}〔11初始化系统数据:intInitSysData<>{FILE*fp;inti,j,hour,minute,num,cost;charstmp1[MAX_STRING_NUM];charstmp2[MAX_STRING_NUM];charstmp3[MAX_STRING_NUM];fp=fopen<CityFile,"r">;if<!fp> {printf<"\nError:CannotOpenCityFile...\n">;return-1; }fscanf<fp,"%d",&CityNum>;for<i=0;i<CityNum;i++> {fscanf<fp,"%s",&CityName[i]>;AdjList[i].city=i;AdjList[i].TrainNum=0;AdjList[i].FlightNum=0; }fclose<fp>;fp=fopen<TrainFile,"r">;if<!fp> {printf<"\nError:CannotOpenTrainFile...\n">;return-1; }fscanf<fp,"%d",&num>;for<i=0;i<num;i++> {fscanf<fp,"%s",&stmp1>;fscanf<fp,"%s",&stmp2>;fscanf<fp,"%s",&stmp3>;j=SeekCity<stmp2>;AdjList[j].Train[AdjList[j].TrainNum].EndCity=SeekCity<stmp3>;strcpy<AdjList[j].Train[AdjList[j].TrainNum].name,stmp1>;fscanf<fp,"%d:%d",&hour,&minute>;AdjList[j].Train[AdjList[j].TrainNum].StartTime=hour*60+minute;fscanf<fp,"%d:%d",&hour,&minute>;AdjList[j].Train[AdjList[j].TrainNum].StopTime=hour*60+minute;fscanf<fp,"%d",&cost>;AdjList[j].Train[AdjList[j].TrainNum].Cost=cost;AdjList[j].TrainNum++; }fclose<fp>;fp=fopen<FlightFile,"r">;if<!fp> {printf<"\nError:CannotOpenFlightFile...\n">;return-1; }fscanf<fp,"%d",&num>;for<i=0;i<num;i++> {fscanf<fp,"%s",&stmp1>;fscanf<fp,"%s",&stmp2>;fscanf<fp,"%s",&stmp3>;j=SeekCity<stmp2>;AdjList[j].Flight[AdjList[j].FlightNum].EndCity=SeekCity<stmp3>;strcpy<AdjList[j].Flight[AdjList[j].FlightNum].name,stmp1>;fscanf<fp,"%d:%d",&hour,&minute>;AdjList[j].Flight[AdjList[j].FlightNum].StartTime=hour*60+minute;fscanf<fp,"%d:%d",&hour,&minute>;AdjList[j].Flight[AdjList[j].FlightNum].StopTime=hour*60+minute;fscanf<fp,"%d",&cost>;AdjList[j].Flight[AdjList[j].FlightNum].Cost=cost;AdjList[j].FlightNum++; }fclose<fp>; return1;}〔12找出最快路线:intSearchMinTime<CityTypeCity,CityTypeEndCity,intCurTime,intcurPathNo,intTravelType>{inti;if<City==EndCity> {if<MinTime>CurTime-StartTime> {for<i=0;i<=curPathNo;i++> {MinPath[i].City=Path[i].City;MinPath[i].TraNo=Path[i].TraNo;curPath=curPathNo; }MinTime=CurTime-StartTime; } }else {curPathNo++;Path[curPathNo].City=City;if<!TravelType> {for<i=0;i<AdjList[City].TrainNum;i++> {if<<AdjList[City].Train[i].StartTime>=<CurTime%1440>>&&<AdjList[City].Train[i].StopTime+<CurTime/1440>*1440-StartTime<MinTime>> {Path[curPathNo].TraNo=i;SearchMinTime<AdjList[City].Train[i].EndCity,EndCity,AdjList[City].Train[i].StopTime+<CurTime/1440>*1440,curPathNo,TravelType>; }if<<AdjList[City].Train[i].StartTime<<CurTime%1440>>&&<AdjList[City].Train[i].StopTime+<CurTime/1440>*1440-StartTime<MinTime>> {Path[curPathNo].TraNo=i;SearchMinTime<AdjList[City].Train[i].EndCity,EndCity,AdjList[City].Train[i].StopTime+<CurTime/1440+1>*1440,curPathNo,TravelType>; } } }else{for<i=0;i<AdjList[City].FlightNum;i++> {if<<AdjList[City].Flight[i].StartTime>=CurTime>&&<AdjList[City].Flight[i].StopTime+<CurTime/1440>*1440-StartTime<MinTime>> {Path[curPathNo].TraNo=i;SearchMinTime<AdjList[City].Flight[i].EndCity,EndCity,AdjList[City].Flight[i].StopTime+<CurTime/1440>*1440,curPathNo,TravelType>; }if<<AdjList[City].Flight[i].StartTime<CurTime>&&<AdjList[City].Flight[i].StopTime+<CurTime/1440>*1440-StartTime<MinTime>> {Path[curPathNo].TraNo=i;SearchMinTime<AdjList[City].Flight[i].EndCity,EndCity,AdjList[City].Flight[i].StopTime+<CurTime/1440+1>*1440,curPathNo,TravelType>; } } } }return1;}〔13计算最快路线所需时间并打印:intCalcMinTime<intStartCity,intEndCity,intTravelType>{inti; intstartH,startM,endH,endM;//定义四个变量:startH出发的小时.startM出发的分钟.endH到达的小时.endM到达的分钟MinTime=32767;curPath=0;Path[0].City=StartCity;if<!TravelType> {for<i=0;i<AdjList[StartCity].TrainNum;i++> {Path[0].TraNo=i;StartTime=AdjList[StartCity].Train[i].StartTime;SearchMinTime<AdjList[StartCity].Train[i].EndCity,EndCity,AdjList[StartCity].Train[i].StopTime,0,TravelType>; } }else {for<i=0;i<AdjList[StartCity].FlightNum;i++> {Path[0].TraNo=i;StartTime=AdjList[StartCity].Flight[i].StartTime;SearchMinTime<AdjList[StartCity].Flight[i].EndCity,EndCity,AdjList[StartCity].Flight[i].StopTime,0,TravelType>; } }if<MinTime==32767> {printf<"\nNoaccesstothatdestination!">;return0; }//if<!TravelType>//StartTime=AdjList[StartCity].Train[MinPath[0].TraNo].StartTime;//else//StartTime=AdjList[StartCity].Flight[MinPath[0].TraNo].StartTime;printf<"\nPath:\n">;for<i=0;i<=curPath;i++> {if<!TravelType>printf<"%s:%s",CityName[MinPath[i].City],AdjList[MinPath[i].City].Train[MinPath[i].TraNo].name>;elseprintf<"%s:%s",CityName[MinPath[i].City],AdjList[MinPath[i].City].Flight[MinPath[i].TraNo].name>; startH=AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StartTime/60; startM=AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StartTime%60; endH=AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StopTime/60; endM=AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StopTime%60; if<!<startH/10>> { printf<"0">; } printf<"%d:",startH>; if<!<startM/10>> { printf<"0">; } printf<"%d--",startM>; if<!<endH/10>> { printf<"0">; } printf<"%d:",endH>; if<!<endM/10>> { printf<"0">; } printf<"%d\n",endM>; //printf<"%2S:%2S-%2S:%2S\n",startH>; }printf<"%s:DESTINATION!",CityName[EndCity]>;printf<"\nTimeCost:%2dhour-%2dminute",MinTime/60,MinTime%60>;return1;}〔14计算最小费用路线:intCalcMinCost<intStartCity,intEndCity,intTravelType>{ intma[Dij_MAXN][Dij_MAXN]; inti,j,min,end; for<i=0;i<CityNum;i++> for<j=0;j<CityNum;j++> ma[i][j]=-1; if<TravelType==0> { for<i=0;i<CityNum;i++> { min=32767;j=0; while<j<AdjList[i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论