




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上目 录一、需求分析1.问题描述2.基本要求二、概要设计1. 程序流程图2. 数据结构设计三、详细设计1.程序设计思想2.软件模块结构图3.源程序四、调试分析 1.测试数据2.时间复杂度分析3.上机遇到的问题及解决方案4.算法的改进设想五、用户使用手册六、心得体会一、需求分析1.问题描述该题目采用我国铁路运输网的数据进行编程和运行验证。详细可在网上搜索全国铁路局管辖线路示意图,只要全国的主干线就可以了。铁路运输网络中由铁路线和火车站的两个主要概念,譬如:1号铁路线表示京广线,2号铁路线表示京沪线等。铁路线对象包括铁路线编号,铁路线名称,起始站编号,终点站编号,该铁路线长
2、度,通行标志(00B客货运禁行,01B货运通行专线,10B客运通行专线,11B客货运通行)。火车站对象包括所属铁路线编号,车站代码,车站名,车站简称,离该铁路线起点站路程及终点站路程。2.基本要求(1)查询某站所属的铁路线(2)要求具备新增铁路线的管理功能(3)要求具备新增车站的管理功能(4)针对客运,货运情况能计算任何一个起始车站到任何一个终点站之间的最短路径。并且要求能够显示出该最短路径的各个火车站的经由顺序二、概要设计1. 程序流程图(我负责的为除弗洛伊德算法外的设计)结束switch(menu)main开 始readviews();readways();readlines();menu
3、=1menu=2menu=5menu=3menu=4addview();addline();addway();输出谢谢使用.再见.谢梦芳 李婷婷search();short_path();floyed();在这里简单介绍弗洛伊德算法的核心思想:从图的带权邻接矩阵开始,假设从Vi到Vj有弧,则从Vi到Vj存在一条长度为arcsi j的路径,该路径不一定是最小路径,尚需进行n次试探。首先考虑路径(Vi,V0,Vj)是否存在。如果存在,则比较(Vi,Vj)和(Vi,V0,Vj)的路径长度取长度较短者为从Vi到Vj的中间顶点的序号不大于0的最短路径。假如在路径上再增加一个顶点V1,如果(Vi,.,V1
4、)和(V1,.,Vj)分别是当前找到的中间顶点的序号不大于0的最短路径,那么(Vi,V1,,Vj)就有可能是从Vi到Vj的中间顶点的序号不大于1的最短路径。将它和已经得到的Vi到Vj的中间顶点的序号不大于0的最短路径相比较,从中选出中间顶点的序号不大于1的最短路径之后,再增加一个V2继续试探,以此类推,经过n次比较后,即可求出从Vi到Vj的最短路径。2.数据结构设计存储结构:本程序部分函数采用的是文件进行数据的存储,所以采用的是顺序存储结构,如要添加数据,直接在文件里面进行操作就行了。弗洛伊德算法中采用的存储结构是图的邻接矩阵。A.如下为抽象数据类型定义的模板以及抽象数据类型线性表的定义:AD
5、T List数据对象:D=ai| ai ElemSet,i=1,2,3,n,n0数据关系:R1=<ai-1,ai>| ai-1,ai D,i=1,2,3,n基本操作:void readviews()初始条件:views.txt已经存在。操作结果:将 views.txt里面的数据一次存入数组viewsSIZE_view里,并将数组里面的存储数据的个数赋值给全局变量view_count; void readways()初始条件:ways.txt已经存在。操作结果:将 ways.txt里面的数据一次存入数组waysSIZE_way里,并将数组里面的存储数据的个数赋值给全局变量way_co
6、unt;void readlines()初始条件:lines.txt已经存在。操作结果:将 lines.txt里面的数据一次存入数组linesSIZE_line里,并将数组里面的存储数据的个数赋值给全局变量line_count;void search();初始条件:viewsSIZE_view存在,且里面放有相关信息。操作结果:根据用户输入的车站名查找该车站的相关信息并输出;void addview() 初始条件:views.txt已经存在。操作结果:将 views.txt里面的数据一次存入数组viewsSIZE_view里,并将数组里面的存储数据的个数赋值给全局变量view_count;vo
7、id addway()初始条件:ways.txt已经存在。操作结果:将 ways.txt里面的数据一次存入数组waysSIZE_way里,并将数组里面的存储数据的个数赋值给全局变量way_count;void addline()初始条件:lines.txt已经存在。操作结果:将 lines.txt里面的数据一次存入数组linesSIZE_line里,并将数组里面的存储数据的个数赋值给全局变量line_count;void floyed()初始条件: viewsSIZE_view、waysSIZE_way、linesSIZE_line已经存在并且存有相关信息。操作结果:把每个车站到各个车站的最短
8、经由路径及此路径的距离存储在path_info、path_listSIZE_viewSIZE_view数组里;void shortest_path()初始条件:path_info、path_listSIZE_viewSIZE_view存储相关的数据;操作结果:输出输入的两个站的最短距离及经过的所有站;void addadta(int menu)初始条件:views.txt、ways.txt、lines.txt已经存在。操作结果:如果menu=1,则添加车站数据,如果menu=2,则添加路线数据;B.弗洛伊德算法中,数据结构所用到的思想为图的思想,所以数据结构的设计主要的目的为便于图的操作的设计
9、。因此我们用了下面这些数据定义。struct view_info /*城市信息结构*/int id;char name20;int code;char shortname20;char LName100;/经过此站的铁路线名称viewsSIZE_view;struct line_info/铁路线信息结构int Lid;char LName20;int start_id; /始发站int end_id; /终点站int dist; /铁路线长char sign5; /通行标志linesSIZE_line;struct way_info /铁路度的信息结构int station1;int stat
10、ion2;int dist;waysSIZE_way;struct path_info /用于最短路径的查询int count;int pathSIZE_view;三、详细设计1.程序设计思想设计思路:核心问题:求最短路径(弗洛伊德算法)数据模型(逻辑结构):带权有向图输入输出:初始数据是从views.txt、lines.txt、way.txt三个文件中读入,在读入数据后,用户可以根据选项选择相应的功能,不同的功能有不同的数据输入/输出,比如:查询的功能是要求输入要查询的站的名称,然后输出是该站的相关信息;查询最短路径的功能则是输入起点站、终点站的名称,输出则是该段路线距离和经由站等。程序的输
11、入:(1)铁路线信息的输入:依次输入“铁路线代码,铁路线名称,起始站代码, 终点站代码,该铁路线长度、通行标志” ,并且中间以空格隔开。(2)火车站信息的输入:依次输入“车站代码,车站名,车站编号、车站简称,所属铁路线编号” ,并且中间以空格隔开。 程序的输出格式: (1)当显示铁路线或者火车站的信息时,与输入时的格式完全一致 ; (2)输出最短路径的长度,以及最短路径的经由顺序;按照程序功能要求,设计了一下各个功能模块:(1)、文件读取模块文件读取模块包括读取车站信息模块readviews、路段权值信息读取模块readlines、铁路线信息读取模块readlines。这些模块的主要功能为从文
12、件中读取所需的信息。(2)、添加信息模块adddata添加信息模块又包括以下子功能模块:A、添加站点信息模块addview。B、添加路段权值模块addway。C、添加铁路线信息模块addline。(3)查询模块根据用户需求,查询站点信息(4)最短路径查询模块该模块为本软件设计的核心部分。根据该模块可以很方便的找出两个城市的最短路径。该最短路径的算法为常用的弗洛伊德算法。(5)操作菜单模块该模块主要用于与用户的交互,一个界面友好的菜单可以提高软件的人机交互体验。2. 软件模块结构图 voidaddline()voidaddway()voidaddview()voidfloyed()void ma
13、in()voidsearch() voidshort_path() voidadddata(int mune) void readlines() void readways() void readviews() (1)主程序模块,其中主函数为: void main() 新增火车站;新增铁路线;查询火车站的信息;针对客运、货运情况,求两站之间的最短路径及其经由顺寻;退出界面 (2) 文件模块为:void readways(); void readviews(); void readlines()(3)图模块为:Void short_path();void floyed()(4)查询函数和添加函数
14、void search();void adddata(in menu); void addway(); void addline();void addview()函数的调用:进入主函数,调用文件模块各函数以读取数据;选择1或2,则调用void adddata(in menu),其中若选择1,则调用void addview()函数,若选择2,则调用void addline()和void addway()函数;选择3,调用void search()函数进行查询;选择4,调用void short_path()和void floyed()函数以得到最短路径。3.源程序(见附录)四、调试分析1.测试数据
15、数据读取如下:操作界面如下:功能测试截图:输入1,增加车站信息如下:输入2,增加铁路线信息如下:输入3,查询车站信息如下:输入4,查询最短路径如下:输入5,退出界面如下;2.时间复杂度分析程序中图的存储结构为带权邻接矩阵, 其中对邻接矩阵的初始化的时间复杂度为O(n*n); 在求最短路径的时候,用的是弗洛伊德算法,时间复杂度主要在于求每一站到任意站的最短路径由是的for循环,那有三个for循环,所以时间复杂度为O(n3)。3.上机过程中出现的问题及其解决方案(1)刚刚看到题目要求的时候就想到了弗洛伊德算法,但是不知道如何去做,在网站搜索到类似代码,经过修改后,最终得出了源程序。(2)源程序可以
16、运行的时候,忘记添加相关文本文件,所以运行文件的时候会提示文件打开失败,无法进行接下来的功能使用,这时候才想起来要自行添加相关的文本文档,接着问题就解决了。(3)在way.text文本文档中添加各站权值的时候,一开始不知道如何添加,经过思考和查询课本后,明白了添加权值时是以各站编码代表各站,由于是有向图,所以需要添加两站往返权值。(4)在输入信息时,由于是输入汉字,系统不稳定,容易出现刷屏,这个问题,我是向学长寻求帮助并得以解决的。4.算法的改进设想1.程序界面不够美观,需要改进,作为人机交互的界面,应尽量美观舒适,提高人机交互体验。2.铁路交通网的管理还有很多方面,例如删除某些铁路线或火车站
17、五、用户使用手册首先运行可执行文件,执行文件为:test.exe。根据需要选择相应的数字代码:【1】 选择1,增加车站信息。首先输入新车站的id,输入为数字(必须大于所给提示信息),其次输入新车站名称,输入为文字,接着输入新车站的编号,输入为数字(必须大于所给信息),然后输入新车站的简称,输入为英文字母(一般为新车站拼音首字母),接着输入新车站经过的路线,输入为文字。最后选择是否继续,输入为n(不)或y(是)。【2】 选择2,增加铁路线信息。首先输入新铁路线信息的Lid,输入为数字(必须大于所给提示信息),其次输入新铁路线名称,输入为文字,接着分别输入新铁路线的起始站id和终点站id,输入为数
18、字,然后输入距离,输入为数字,通行标志:00B客货运禁行,01B货运通行专线,10B客运通行专线,11B客货运通行,接着输入权值信息,前一站和后一站的编码,输入为数字,两站的距离,输入为数字。最后选择是否继续,输入为n(不)或y(是)。【3】 选择3,查询车站信息。输入需要查询的车站名称,输入为文字。最后选择是否继续,输入为n(不)或y(是)。【4】 选择4,查询最短路径。分别输入需要查询最短路径的起始站和终点站的名称。最后选择是否继续,输入为n(不)或y(是)。【5】选择5,退出程序。六、心得体会本次课程设计我们做的是全国铁路网最经经由问题,功能都实现了,运行顺畅。对于这次的数据结构设计我觉
19、得我们还是挺成功的。以下是我在这次数据结构中的体会。我觉得相比大一做的C语言程序设计而言,这次的程序难了很多,但同时教会了我更多的知识,最重要的就是让我明白了数据结构这门课程的使用价值。以前,在课堂上老师一遍遍的讲到数据结构和编程语言的关系,自从完成了课程设计以后我突然恍然大悟,明白了数据结构和C语言等编程语言的关系。简单的说,它就是一个程序所采用的逻辑结构(有集合,线性表,树和图等)和存储结构(顺序和链表)。只有确定了这些,再加上算法才能写出一个程序。 在写本次程序时,遇到了不少的问题。主要还是对编程语言的不熟悉,虽然总体思路可以明确,但是真的写起来却漏洞百出。因此,我们上网搜索相关资料,找
20、到了类似的源程序,参考源程序之后,我们进行了一系列的改错和完善。遇到不明白的部分,马上询问学长或者优秀的同学,让他们为我们指点迷津。最终把他们都解决了。虽然这次花的时间比较多,但是收获也是很大啊。最重要的收获就是:当遇到问题时,要很高兴的面对它。相信自己一定能解决这个问题。接下来,要沉住气,不断地尝试,不断地调试,最终会把问题给解决的。我认为编程遇到问题是一件很高兴的事情。只有遇到问题,才能有问题解决。解决问题也是一件很开心的事情。 通过本次课程设计,增强了我的调试程序的能力,以及分析程序,分析算法的能力。巩固了我数据结构的知识,对与去年学习的一门学科的温习,让我更了解了弗洛伊德算法,熟练掌握
21、了函数的定义,函数的调用等编程能力。我相信只有自己的能力不断地提高,才能编写出高质量的程序来。 课程设计期间,不得不提的是合作。因为合作我们才能又快又好的完成任务。当今社会,需要一个会思考会设计的人,但是更需要的是一个懂合作,会合作的搭档。只有两个人默契配合,合理分工才能顺利的完成任务。我很开心能和我的搭档一组,我们分工合作,在整个课程设计中遇到问题一起商量,一起解决,让我感受到了合作的快乐。 最后我想说,数据结构是一门很复杂的学科,难懂。但是只要你利用学习到的理论知识去实践,结合实践去分析和理解它,最终你会发现它也不过如此。 在实践的过程中互相帮助很重要,它能让你在困境中体会到快乐,在苦涩的
22、学习中体会友情带来的快乐!附录:#include <fstream>#include <iostream>#include <string>#include <cstdio>#include <iomanip>#include <cstdlib>#define SIZE_view 50#define SIZE_line 100#define SIZE_way 300#define MAXNODE 30 /定义最多节点数#define MAXCOST 10000using namespace std;struct view_
23、info /*城市信息结构*/int id;char name20;int code;char shortname20;char LName100;/经过此站的铁路线名称viewsSIZE_view;struct line_info/铁路线信息结构int Lid;char LName20;int start_id; /始发站int end_id; /终点站int dist; /铁路线长char sign5; /通行标志linesSIZE_line;struct way_info /铁路度的信息结构int station1;int station2;int dist;waysSIZE_way;s
24、truct path_info /用于最短路径的查询int count;int pathSIZE_view;int view_count,line_count,way_count; /用来存储文件中有多少条记录int dist_listSIZE_viewSIZE_view; /定义一个数组struct path_info path_listSIZE_viewSIZE_view; /定义一个path_info结构体变量.void readviews();void readways();void readlines();void search();void addview();void addwa
25、y();void addline();void shortest_path();void floyed();void adddata(int menu);void main()readviews(); cout<<endl<<endl;readlines(); cout<<endl<<endl;readways();while(1)int menu;cout<<endl<<endl;cout<<" 全国铁路运输网经由系统"<<endl;cout<<"*&qu
26、ot;<<endl;cout<<" 1、增加车站信息"<<endl;cout<<" 2、增加铁路线信息"<<endl;cout<<" 3、查询车站信息"<<endl;cout<<" 4、查询最短路径"<<endl;cout<<" 5、退出界面"<<endl;cout<<"*"<<endl; cout<<&quo
27、t;请选择你要的操作代码.1-5):"<<endl;cin>>menu;while(menu<1|menu>5)/cout<<"error!please enter again:"cout<<"错误!请再次输入:" cin>>menu;switch(menu)case 1:case 2:adddata(menu);break;case 3:while(1)search();/cout<<"do you want to continue?(y/n)&qu
28、ot;<<endl;cout<<endl<<"你是否要继续?(y/n)"<<endl;char con;cin>>con;if(con='y');elsebreak;break;case 4:while(1)shortest_path();/cout<<"do you want to continue?(y/n)"<<endl;cout<<endl<<"你是否要继续?(y/n)"<<endl;char
29、 con;cin>>con;if(con='y');/* addline();*/elsebreak;break;case 5:cout<<"谢谢使用.再会."<<endl;getchar();getchar();exit(1);break;void readviews()int i;ifstream infile("views.txt",ios:in); /打开文件/把文件中的个数付给view_count/* infile>>view_count; */if(!infile) /打开文件失
30、败/cerr<<"can't open views.txt!"<<endl;cerr<<"不能打开 views.txt!"<<endl;exit(1);/infile>>view_count;/先读入文件个数for(i=0;i+)infile>>viewsi.id>>>>viewsi.code>>viewsi.shortname>>viewsi.LName;if(i!=0&&viewsi.i
31、d=0)break;view_count=i;/view_count=i;/给出源文件中车站的个数infile.close();/下面是测试用的代码cout<<setiosflags(ios:left);cout<<"城市信息结构"<<endl<<endl;/cout<<setw(8)<<"id"<<setw(9)<<"name"<<setw(8)<<"code"<<setw(12)&
32、lt;<"shortname"<<setw(10)<<"LName"<<endl;cout<<setw(8)<<"序号"<<setw(9)<<"名称"<<setw(8)<<"code"<<setw(12)<<"简称"<<setw(10)<<"经过此站的铁路线名称"<<endl;for(
33、i=0;i<view_count;i+)cout<<setw(8)<<viewsi.id<<setw(9)<<<<setw(8)<<viewsi.code<<setw(12);cout<<viewsi.shortname<<viewsi.LName<<endl;cout<<resetiosflags(ios:left);void readways()/读文件ways.txtint i;ifstream infile("ways
34、.txt",ios:in);/打开文件/* infile>>way_count;*/ /把文件中的记录付给way_countif(!infile) /打开文件失败/cerr<<"can't open ways.txt!"<<endl;cerr<<"不能打开 ways.txt!"<<endl;exit(1);for(i=0;i+)infile>>waysi.station1>>waysi.station2>>waysi.dist;if(i!=0
35、&&waysi.station1=0)break;way_count=i;infile.close();/测试用.输入路段的信息/ cout<<setiosflags(ios:left);/ cout<<setw(12)<<"station1"<<setw(12)<<"station2"<<"dist"<<endl;/ for(i=0;i<way_count;i+)/ / cout<<setw(12)<<w
36、aysi.station1<<setw(12)<<waysi.station2;/ cout<<waysi.dist<<endl;/ / cout<<resetiosflags(ios:left);void readlines()/读文件lines.txtint i;ifstream infile("lines.txt",ios:in);/打开文件/把文件中的记录付给line_countif(!infile) /打开文件失败cerr<<"can't open lines.txt!&qu
37、ot;<<endl;exit(1);/* infile>>line_count; */for(i=0;i+)infile>>linesi.Lid>>linesi.LName>>linesi.start_id;infile>>linesi.end_id>>linesi.dist>>linesi.sign;if(i!=0&&linesi.Lid=0)break;line_count=i;infile.close();/下面的代码为测试时用的cout<<"铁路线信息结
38、构"<<endl<<endl;cout<<setiosflags(ios:left);/ cout<<setw(8)<<"Lid"<<setw(12)<<"LName"<<setw(10)<<"start_id"/ cout<<setw(10)<<"end_id"<<setw(8)<<"dist"<<"sign
39、"<<endl;cout<<setw(8)<<"序号"<<setw(12)<<"路线名称"<<setw(15)<<"始发站的id"cout<<setw(15)<<"终点站的id"<<setw(15)<<"路线长度"<<"通行标志"<<endl;for(i=0;i<line_count;i+)/ cout&l
40、t;<setw(8)<<linesi.Lid<<setw(12)<<linesi.LName<<setw(10)<<linesi.start_id;/ cout<<setw(10)<<linesi.end_id<<setw(8)<<linesi.dist<<linesi.sign<<endl;cout<<setw(8)<<linesi.Lid<<setw(12)<<linesi.LName<<set
41、w(15)<<linesi.start_id;cout<<setw(15)<<linesi.end_id<<setw(15)<<linesi.dist<<linesi.sign<<endl;cout<<resetiosflags(ios:left);/这里输出文本中的信息void search() /cout<<"Please enter the station name:"cout<<"请输入要查询站的名称:"char sta_nam
42、e20;cin>>sta_name; cout<<endl; ifstream infile("views.txt",ios:in); / /* infile>>view_count;*/ if(!infile) cerr<<"can't open views.txt!"<<endl; exit(1); int i,mark; for(i=0;i<view_count;i+)infile>>viewsi.id>>>>view
43、si.code>>viewsi.shortname>>viewsi.LName;infile.close();for(i=0;i<view_count;i+)if(strcmp(sta_name,)=0)/cout<<"the station informations is:n"<<endl;cout<<"站点信息:n"cout<<"*"<<endl;cout<<setiosflags(ios:left);cou
44、t<<setw(8)<<"序号"<<setw(9)<<"名称"<<setw(8)<<"code"<<setw(12)<<"简称"<<setw(10)<<"经过此站的铁路线名称"<<endl;/cout<<setw(8)<<"id"<<setw(9)<<"name"<<
45、setw(8)<<"code"<<setw(12)<<"shortname"<<setw(10)<<"LName"<<endl;cout<<setw(8)<<viewsi.id<<setw(9)<<<<setw(8)<<viewsi.code<<setw(12);cout<<viewsi.shortname<<viewsi.LName&
46、lt;<endl;cout<<resetiosflags(ios:left);cout<<"*"<<endl;break;mark=i;if(mark=view_count-1) /cout<<"sorry, the station is not in here!"<<endl;cout<<"对不起, 你输入的站点不存在!"<<endl;void addview()cout<<"请输入新的车站信息:"<<
47、;endl;/cout<<"Please enter the new view's informations:"<<endl; /输入新的车站信息/cout<<"id(id>"<<viewsview_count-1.id<<"):"cout<<"序号(id>"<<viewsview_count-1.id<<"):"cin>>viewsview_count.id;whil
48、e(1)if(viewsview_count.id<viewsview_count-1.id)cout<<"你输入的数据不合法.请重新输入:"cin>>viewsview_count.id;elsebreak;/cout<<"name:"cout<<"名称:"cin>>viewsview_;cout<<"code(code>"<<viewsview_count-1.code<<"
49、):"cin>>viewsview_count.code;while(1)if(viewsview_count.code<viewsview_count-1.code)cout<<"你输入的数据不合法.请重新输入:"cin>>viewsview_count.id;elsebreak;/cout<<"shortname:"cout<<"简称:"cin>>viewsview_count.shortname;/cout<<"LNam
50、e:"cout<<"经过此站的铁路线名称:"cin>>viewsview_count.LName;cout<<endl;ofstream outfile("views.txt",ios:app); /打开views 文件.并写入数据/* outfile<<view_count<<endl;*/if(!outfile)cerr<<"can't open views.txt!"exit(1);outfile<<endl<<vi
51、ewsview_count.id<<" "<<viewsview_<<" "outfile<<viewsview_count.code<<" "<<viewsview_count.shortname;outfile<<" "<<viewsview_count.LName<<endl;/在文件末尾添加view_count+;outfile.close(); /关闭文件/cout<<
52、;"Successfully!the new station is added"<<endl;cout<<"成功添加新的站点!"<<endl;cout<<"新的站点是:"<<view_count<<endl;void addway()cout<<"Please enter the new way's informations:"<<endl; /输入新的车站信息/cout<<"station
53、1:"cout<<"站1的code:"cin>>waysway_count.station1; /station1 的id/cout<<"station2:"cout<<"站2的code:"cin>>waysway_count.station2; /station2 的id/cout<<"dist:"cout<<"距离:"cin>>waysway_count.dist; /路段的长度ofst
54、ream outfile("ways.txt",ios:app); /打开ways.txt 文件.并写入数据/* outfile<<way_count<<endl;*/if(!outfile)cerr<<"can't open ways.txt!"exit(1);outfile<<endl<<waysway_count.station1<<" "<<waysway_count.station2<<" "outfi
55、le<<waysway_count.dist<<" "<<waysway_count.station2<<" "<<waysway_count.station1;outfile<<" "<<waysway_count.dist;/在文件末尾添加way_count+;outfile.close(); /关闭文件cout<<"Successfully!the new way is added"<<endl;cou
56、t<<"new station number is :"<<way_count<<endl;void addline()/cout<<"Please enter the new line's informations:"<<endl; /输入新铁路信息cout<<"请输入新铁路信息:"<<endl; /输入新铁路信息cout<<"序号(Lid>"<<linesline_count-1.Lid&l
57、t;<"):"cin>>linesline_count.Lid;while(1)if(linesline_count.Lid<linesline_count-1.Lid)cout<<"你输入的数据不合法.请重新输入:"cin>>linesline_count.Lid;elsebreak;/cout<<"LName:"cout<<"名称:"cin>>linesline_count.LName;/cout<<"st
58、art_id:"cout<<"始发站id:"cin>>linesline_count.start_id;/cout<<"end_id:"cout<<"终点站id:"cin>>linesline_count.end_id;/cout<<"dist:"cout<<"距离:"cin>>linesline_count.dist;/cout<<"sign:"cout&l
59、t;<"通行标志:"cin>>linesline_count.sign;ofstream outfile("lines.txt",ios:app); /* outfile<<line_count+1<<endl;*/if(!outfile)cerr<<"can't open lines.txt!"exit(1);outfile<<endl<<linesline_count.Lid<<" "<<linesli
60、ne_count.LName<<" "<<linesline_count.start_id;outfile<<" "<<linesline_count.end_id<<" "<<linesline_count.dist<<" "outfile<<linesline_count.sign;line_count+;outfile.close(); / cout<<"Successfully!the ne
61、w line is added"<<endl;/ cout<<"new station number is :"<<line_count<<endl;cout<<"成功添加新的线路"<<endl;cout<<"新建线路的序号 :"<<line_count<<endl;void floyed() /弗洛伊德算法int i,j,k,m;/包含着count 和path用来存储经过的路径/ for(i=0;i<=view
62、_count;i+)/ for(j=0;j<=view_count;j+)/ dist_listij=MAXCOST;/先对任意两点的距离初始值为无穷for(int t=0;t<=way_count;t+)i=wayst.station1;j=wayst.station2;dist_listij=wayst.dist;/把文件中的数据付给dist_listij=wayst.dist;形式for(i=0;i<=view_count;i+)for(j=0;j<=view_count;j+)if(i=j) /车站到本车站的距离赋值为零dist_listij=0;continue;dist_listij=-1; /先设置任意两点之间的距离为-1.表示这两点不通path_listij.count=0; /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 糖尿病的健康管理
- 项目管理知识库信息检索模板
- 双字短语与句子结构:小学英语语法基础教案
- 《数字经济发展与治理》课件 Ch8. 数字技术的应用场景
- 钟山区南开风电场环境影响报告表
- 新质生产力驱动下的科技创新竞赛
- 环保培训课件 下载
- 2025年度智能社区O2O服务网络共建合作合同
- 2025年特色农产品全国冷链配送及溯源服务合同
- 2025年自然资源厅地质灾害防治与生态修复服务合同
- 本特利传感器简介
- 动漫人物欣赏课件
- 医院新技术、新项目准入申报表
- 项目经理安全目标考核表
- 《HSK标准教程1》第3课课件
- 三级安全教育考试试题及(全)
- 中国古代文学史《第二章:诗经》PPT课件(完整版)
- 云南省地质灾害群测群防手册
- 高级催乳师培训课程讲义
- 第三届韬奋杯全国出版社青编校大赛校对试题(已编辑)
- 关于BT项目主要法律规定
评论
0/150
提交评论