实验报告C语言知识数据结构全国交通模拟咨询.doc
《实验报告C语言知识数据结构全国交通模拟咨询.doc》由会员分享,可在线阅读,更多相关《实验报告C语言知识数据结构全国交通模拟咨询.doc(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#+浙江工商大学计算机与信息工程学院数据结构实验大作业报告专 业: 物流1001 班 级: 1001 学 号: 1012600118 姓 名: 金渐 指导教师: 庄毅 2011年12月8日一、问题描述处于对不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则希望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。【基本要求】(1)提供对城市信息进行编辑(如:添加或删除)的功能。(2)城市之间有两种交通工具:火车和飞机。提供对列车时刻表和飞机航班进行编辑(增设或删除)的功能。(3)
2、提供两种最优决策:最快到达或最省钱到达。全程只考虑一种交通工具。(4)旅途中耗费的总时间应该包括中转站的等候时间。 (5)咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原则和交通工具,输出信息:最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。【测试数据】二、系统设计系统框图:模块说明:本系统共分15个模块1、 主函数2、添加城市3、 查找城市并返回序号4、 删除城市5、 添加列车6、 添加航班7、 删除列车或航班8、 找出最小费用路线9、 打印出最小费用路线10、 初始化系统数据(读入内存)11、 找出最快路线1
3、2、 计算最快路线耗费的时间并打印13、 计算最小费用路线14、 主界面15、 存储信息到文件16、 退出下面是系统总流程图:下面是各模块示意图:三、系统测试1、主界面2、 添加城市模块:输入命令 1 后,将提示输入城市名,而后返回主界面3、删除城市:输入命令2后,提示输入城市名,而后返回主界面4、添加交通路线:输入命令3,提示输入起点站和重点站,并提示选择火车或飞机,而后输入班次、出发时间、到达时间、票价,而后返回主界面原train文件:添加路线后:5、删除路线:输入命令4,输入班次,而后返回主界面原train文件:删除后ttrain文件:6、查询最小费用路线:输入命令5,并输入起点站和重点
4、站,然后选择交通工具结果正确!7、查询时间最短路线:输入命令6,并输入起点站和重点站,然后选择交通工具四、小结从小学家里买了电脑起,我对计算机就相当感兴趣,有事没事就喜欢捣鼓捣鼓。六年级的时候,我的第一台台式电脑就这样被我折腾坏了。高中,我迷上了硬件,一放假就泡论坛,研究攒机。大学,我买了一台真正的属于自己的智能手机魅族M8。买时已经上市超过两年的M8使用的是被微软抛弃的windows CE系统。系统的落后导致了应用程序的匮乏,虽然日常应用勉强可以应付,但是看着android丰富有趣的app不免让人心痒。于是在大一的寒假里我第一次萌生了学习编程的念头。现在,经过了C语言和数据结构的学习之后,编
5、写一个相对大型的程序的机会终于来了,我也憋足了劲想要写出一个优秀的程序,并且选择了一个具有实际价值的模型全国交通咨询系统。第一天,我花了周六10个小时的时间写出了寻找相邻城市旅行时间最短的一个函数,然而这只是系统其中的一个简单的功能。至此,我也就做好了在编写过程中遇到相当大困难的准备。但是,后来的一个星期里,虽然利用了所有的课外时间来思考文件的存储格式以及所有城市间的转车、最低费用、最短时间函数,事情却依然毫无进展。由于期末临近,时间紧迫,我只好求助于网上的资料。查阅之后发现求图的最短路径使用的是我还未学会的迪杰斯特拉算法。在认真研究之后,终于将迪杰斯特拉算法加到了自己的程序之中,完成了最最关
6、键的功能。两个星期后的今天,终于完成了系统的全部功能以及测试。这一次的编程经验,我最大的体会是:代码的编写、调试并不是最困难的部分。最困难的部分在于如何构思出一个巧妙的软件框架、统一的数据输入输出格式以形成一个完整的体系。包括各种全局变量的设定、模块的划分都是需要很长的时间去考虑完善的。五、附录cpp : Defines the entry point for the console application./#include stdafx.h#include #include #include /结构体定义/typedef short int NumType; typedef struct
7、TrafficWay /交通工具信息 记录了班次 起止时间 目的地 价格 char name15; /班次 int DepTime;int ArriveTime; /起止时间,以分钟为单位int DesCity; /目的地的编号int Price; /票价 TrafficWayDat; typedef struct CityNode /城市信息 只记录序号 通过的火车 飞机数 以及所有火车 飞机的结构体 NumType city; /城市的序号int TrainNum,FlightNum; /标记火车列次和飞机航班数TrafficWayDat Train15; /数组成员为结构体,记录了到达城
8、市、起止时间、票价和班次 TrafficWayDat Flight15; CityNodeDat; /节点数据类型typedef struct PathNode /存储路径 的 路点 int City; int FlainNo; /此地应乘的火车或飞机航班的次号 PathNodeDat; /变量定义/CityNodeDat CityInfo33; /System Info ,记录城市信息char CityName3315; /用来记录城市名,第一下标为该城市编号 int NumofCity; /城市数目 PathNodeDat TemPath33; /存储临时路径 PathNodeDat Mi
9、nPath33; /存储目前为止的最小路径 int MinTime/*目前最小时间*/,DepTime/*出发时间*/; int curPath; const char CityFile =city.txt; const char TrainFile =train.txt; const char FlightFile =flight.txt;/添加城市/int AddCity (char *Name) /添加城市 strcpy(CityNameNumofCity,Name); CityInfoNumofCity.city/*int类型*/=NumofCity; CityInfoNumofCit
10、y.FlightNum=0; CityInfoNumofCity.TrainNum=0; NumofCity+; /始终在最后一个空位置return 1; /查找城市并返回序号/int FindNumofCity (char *name) /查找城市并返回城市序号 若无 返回-1 int i; for (i=0;iNumofCity;i+) if (strcmp(name,CityNamei)=0) return i; return -1; /删除城市/int DelCity (char *Name) int city,i,j; city=FindNumofCity(Name); /得到城市序
11、号for (i=city;iNumofCity-1;i+) strcpy(CityNamei,CityNamei+1); /后一个城市序号覆盖要删除的城市序号CityInfoi.FlightNum=CityInfoi+1.FlightNum; /后一个城市的航班数覆盖要删除的城市的航班数CityInfoi.TrainNum=CityInfoi+1.TrainNum; /后一个城市的火车数覆盖要删除的城市的火车数for (j=0;jCityInfoi.FlightNum;j+) CityInfoi.Flightj.Price=CityInfoi+1.Flightj.Price; CityInfo
12、i.Flightj.DesCity=CityInfoi+1.Flightj.DesCity; strcpy(CityInfoi.Flightj.name,CityInfoi+1.Flightj.name); CityInfoi.Flightj.DepTime=CityInfoi+1.Flightj.DepTime; CityInfoi.Flightj.ArriveTime=CityInfoi+1.Flightj.ArriveTime; /覆盖航班信息 NumofCity-;/城市数减少1return 1; /添加列车/int AddTrain (char *train,char *DepCit
13、y,char *DesCity,int DepTime,int EndTime,int cost) /添加列车 int i,j; i=FindNumofCity(DepCity);/起始城市序号 j=FindNumofCity(DesCity); /终点城市序号CityInfoi.TrainCityInfoi.TrainNum.Price=cost; CityInfoi.TrainCityInfoi.TrainNum.DesCity=j; CityInfoi.TrainCityInfoi.TrainNum.DepTime=DepTime; CityInfoi.TrainCityInfoi.Tr
14、ainNum.ArriveTime=EndTime; strcpy(CityInfoi.TrainCityInfoi.TrainNum.name,train); CityInfoi.TrainNum+;/复制各类信息后,列车数+1 return 1; /添加航班/int AddFlight(char *flight,char *DepCity,char *DesCity,int DepTime,int EndTime,int cost) /添加航班 int i,j; i=FindNumofCity(DepCity); j=FindNumofCity(DesCity); CityInfoi.Fl
15、ightCityInfoi.FlightNum.Price=cost; CityInfoi.FlightCityInfoi.FlightNum.DesCity=j; CityInfoi.FlightCityInfoi.FlightNum.DepTime=DepTime; CityInfoi.FlightCityInfoi.FlightNum.ArriveTime=EndTime; strcpy(CityInfoi.TrainCityInfoi.FlightNum.name,flight); CityInfoi.FlightNum+; return 1; /删除列车或航班/int DelPath
16、 (char *name) /删除路径 int i;int j;int flag=0; for (i=0;iNumofCity;i+) for (j=0;jCityInfoi.FlightNum;j+) if (strcmp(CityInfoi.Flightj.name,name)=0) /找到该航班 flag=1;break; /跳出for if (flag) /找到了航班 for (;jCityInfoi.FlightNum-1;j+) CityInfoi.Flightj.Price=CityInfoi.Flightj+1.Price; CityInfoi.Flightj.DesCity=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 试验 报告 讲演 呈文 语言 知识 数据结构 全国 交通 模拟 摹拟 咨询
限制150内