您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 实验报告C语言数据结构全国交通模拟咨询
浙江工商大学计算机与信息工程学院数据结构实验大作业报告专业:物流1001班级:1001学号:1012600118姓名:金渐指导教师:庄毅2011年12月8日一、问题描述处于对不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则希望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。【基本要求】(1)提供对城市信息进行编辑(如:添加或删除)的功能。(2)城市之间有两种交通工具:火车和飞机。提供对列车时刻表和飞机航班进行编辑(增设或删除)的功能。(3)提供两种最优决策:最快到达或最省钱到达。全程只考虑一种交通工具。(4)旅途中耗费的总时间应该包括中转站的等候时间。(5)咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原则和交通工具,输出信息:最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。【测试数据】二、系统设计系统框图:模块说明:本系统共分15个模块1、主函数2、添加城市3、查找城市并返回序号4、删除城市5、添加列车6、添加航班7、删除列车或航班8、找出最小费用路线9、打印出最小费用路线10、初始化系统数据(读入内存)11、找出最快路线12、计算最快路线耗费的时间并打印13、计算最小费用路线14、主界面15、存储信息到文件16、退出下面是系统总流程图:下面是各模块示意图:三、系统测试1、主界面2、添加城市模块:输入命令1后,将提示输入城市名,而后返回主界面3、删除城市:输入命令2后,提示输入城市名,而后返回主界面4、添加交通路线:输入命令3,提示输入起点站和重点站,并提示选择火车或飞机,而后输入班次、出发时间、到达时间、票价,而后返回主界面原train文件:添加路线后:5、删除路线:输入命令4,输入班次,而后返回主界面原train文件:删除后ttrain文件:6、查询最小费用路线:输入命令5,并输入起点站和重点站,然后选择交通工具结果正确!7、查询时间最短路线:输入命令6,并输入起点站和重点站,然后选择交通工具四、小结从小学家里买了电脑起,我对计算机就相当感兴趣,有事没事就喜欢捣鼓捣鼓。六年级的时候,我的第一台台式电脑就这样被我折腾坏了。高中,我迷上了硬件,一放假就泡论坛,研究攒机。大学,我买了一台真正的属于自己的智能手机——魅族M8。买时已经上市超过两年的M8使用的是被微软抛弃的windowsCE系统。系统的落后导致了应用程序的匮乏,虽然日常应用勉强可以应付,但是看着android丰富有趣的app不免让人心痒。于是在大一的寒假里我第一次萌生了学习编程的念头。现在,经过了C语言和数据结构的学习之后,编写一个相对大型的程序的机会终于来了,我也憋足了劲想要写出一个优秀的程序,并且选择了一个具有实际价值的模型——全国交通咨询系统。第一天,我花了周六10个小时的时间写出了寻找相邻城市旅行时间最短的一个函数,然而这只是系统其中的一个简单的功能。至此,我也就做好了在编写过程中遇到相当大困难的准备。但是,后来的一个星期里,虽然利用了所有的课外时间来思考文件的存储格式以及所有城市间的转车、最低费用、最短时间函数,事情却依然毫无进展。由于期末临近,时间紧迫,我只好求助于网上的资料。查阅之后发现求图的最短路径使用的是我还未学会的迪杰斯特拉算法。在认真研究之后,终于将迪杰斯特拉算法加到了自己的程序之中,完成了最最关键的功能。两个星期后的今天,终于完成了系统的全部功能以及测试。这一次的编程经验,我最大的体会是:代码的编写、调试并不是最困难的部分。最困难的部分在于如何构思出一个巧妙的软件框架、统一的数据输入输出格式以形成一个完整的体系。包括各种全局变量的设定、模块的划分都是需要很长的时间去考虑完善的。五、附录cpp:Definestheentrypointfortheconsoleapplication.//#includestdafx.h#includestdio.h#includestring.h#includestdlib.h/////////////////////////////////////结构体定义////////////////////////////////typedefshortintNumType;typedefstructTrafficWay//交通工具信息记录了班次起止时间目的地价格{charname[15];//班次intDepTime;intArriveTime;//起止时间,以分钟为单位intDesCity;//目的地的编号intPrice;//票价}TrafficWayDat;typedefstructCityNode//城市信息只记录序号通过的火车飞机数以及所有火车飞机的结构体{NumTypecity;//城市的序号intTrainNum,FlightNum;//标记火车列次和飞机航班数TrafficWayDatTrain[15];//数组成员为结构体,记录了到达城市、起止时间、票价和班次TrafficWayDatFlight[15];}CityNodeDat;//节点数据类型typedefstructPathNode//存储路径的路点{intCity;intFlainNo;//此地应乘的火车或飞机航班的次号}PathNodeDat;/////////////////////////////////////////变量定义//////////////////////////////////////CityNodeDatCityInfo[33];//SystemInfo,记录城市信息charCityName[33][15];//用来记录城市名,第一下标为该城市编号intNumofCity;//城市数目PathNodeDatTemPath[33];//存储临时路径PathNodeDatMinPath[33];//存储目前为止的最小路径intMinTime/*目前最小时间*/,DepTime/*出发时间*/;intcurPath;constcharCityFile[]=city.txt;constcharTrainFile[]=train.txt;constcharFlightFile[]=flight.txt;//////////////////////////////////////////////添加城市////////////////////////////intAddCity(char*Name)//添加城市{strcpy(CityName[NumofCity],Name);CityInfo[NumofCity].city/*int类型*/=NumofCity;CityInfo[NumofCity].FlightNum=0;CityInfo[NumofCity].TrainNum=0;NumofCity++;//始终在最后一个空位置return1;}////////////////////////////查找城市并返回序号///////////////////////////////intFindNumofCity(char*name)//查找城市并返回城市序号若无返回-1{inti;for(i=0;iNumofCity;i++)if(strcmp(name,CityName[i])==0)returni;return-1;}/////////////////////////////////////删除城市///////////////////////intDelCity(char*Name){intcity,i,j;city=FindNumofCity(Name);//得到城市序号for(i=city;iNumofCity-1;i++){strcpy(CityName[i],CityName[i+1]);//后一个城市序号覆盖要删除的城市序号CityInfo[i].FlightNum=CityInfo[i+1].FlightNum;//后一个城市的航班数覆盖要删除的城市的航班数CityInfo[i].TrainNum=CityInfo[i+1].TrainNum;//后一个城市的火车数覆盖要删除的城市的火车数for(j=0;jCityInfo[i].FlightNum;j++){CityInfo[i].Flight[j].Price=CityInfo[i+1].Flight[j].Price;CityInfo[i].Flight[j].DesCity=CityInfo[i+1].Flight[j].DesCity;strcpy(CityInfo[i].Flight[j].name,CityInfo[i+1].Flight[j].name);CityInfo[i].Flight[j].DepTime=CityInfo[i+1].Flight[j].DepTime;CityInfo[i].Flight[j].ArriveTime=CityInfo[i+1].Flight[j].ArriveTime;}//覆盖航班信息}NumofCity--;//城市数减少1return1;}////////////////////////////////////////////////添加列车//////////////////////////////////////////////intAddTrain(char*train,char*DepCity,char*DesCity,intDepTime,intEndTime,intcost)//添加列车{inti,j;i=FindNumofCity(DepCity);//起始城市序号j=FindNumofCity(DesCity);//终点城市序号CityInfo[i].Train[CityInfo[i].TrainNum].Price=cost;CityInfo[i].Train[CityInfo[i].TrainNum].DesCity=j;CityInfo[i].Train[CityInfo[i].TrainNum].DepTime=DepTime;CityInfo[i].Train[CityInfo[i].TrainNum].ArriveTime=EndTime;strcpy(CityInfo[i].Train[CityInfo[i].TrainNum].name,train);CityInfo[i].TrainNum++;//复制各类信息后,列车数+1return1;}//////////////////////////////////////////////添加航班////////////////////////////intAddFlight(char*flight,char*DepCity,char*DesCity,intDepTime,intEndTime,intcost)//添加航班{inti,j;i=FindNumofCity(DepCity);j=FindNumofCity(DesCity);CityInfo[i].Flight[CityInfo[i].FlightNum].Price=cost;CityInfo[i].Flight[CityInfo[i].FlightNum].DesCity=j;CityInfo[i].Flight[CityInfo[i].FlightNum].DepTime=DepTime;CityInfo[i].Flight[CityInfo[i].FlightNum].ArriveTime=EndTime;strcpy(CityInfo[i].Train[CityInfo[i].FlightNum].name,flight);CityInfo[i].FlightNum++;return1;}////////
本文标题:实验报告C语言数据结构全国交通模拟咨询
链接地址:https://www.777doc.com/doc-5658721 .html