全国铁路运输网最佳经由问题_第1页
全国铁路运输网最佳经由问题_第2页
全国铁路运输网最佳经由问题_第3页
全国铁路运输网最佳经由问题_第4页
全国铁路运输网最佳经由问题_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上#include<fstream>#include<iostream>#include<string>#include<stdio.h>#include<iomanip>#define SIZE_view 50#define SIZE_line 100#define SIZE_way 300#define MAXNODE 30 /定义最多的顶点数#define MAXCOST 1000/自己写的头文件/#include<addview.h>/ / using namespace std;struc

2、t view_info /*城市信息结构*/ int id; char name20; int code; char shortname20; char LName100;/ 经过此车站的铁路线名称 viewsSIZE_view; struct line_info /铁路线信息结构int Lid;char LName20;int start_id; /始发站idint end_id; /终点站idint dist; /铁路线长度int sign;/通行标志linesSIZE_line;struct way_info /铁路度的信息结构int station1;int station2;int

3、dist;waysSIZE_way;struct path_info /用于最短路径的查询 int count; int pathSIZE_view; ; int view_count,line_count,way_count;/用来存储文件中有多少条记录 void readviews() int i; ifstream infile("views.txt",ios:in); /打开文件 infile >>view_count ; /把文件中的记录赋值给view_count if(!infile) /打开文件失败 cerr<<"open e

4、rror!"<<endl; exit(1); /infile>>view_count;/ 先读入文件个数 for(i=0;i<view_count;i+) infile>>viewsi.id>>>>viewsi.code>>viewsi.shortname>>viewsi.LName; /view_count=i;/给出原文件中车站的个数 infile.close(); cout<<" "<<"id"<&

5、lt;" "<<"name"<<" "<<"code"<<" "<<"shortname"<<" "<<"LName"<<endl; for(i=0;i<view_count;i+) cout<<" "<<viewsi.id<<" "<<viewsi

6、.name<<" "<<viewsi.code <<" "<<viewsi.shortname<<" "<<viewsi.LName<<endl; void readways() /读文件ways.txt int i; ifstream infile("ways.txt",ios:in); /打开文件 infile>>way_count; /把文件中的记录赋值给way_count if(!infile) /打开文件失败

7、cerr<<"open error!"<<endl; exit(1); for(i=0;i<way_count;i+) infile>>waysi.station1>>waysi.station2>>waysi.dist; infile.close(); /测试用,输出路段的信息 cout<<" "<<"station1"<<" "<<"station2"<<"

8、 "<<"dist"<<endl; for(i=0;i<way_count;i+) cout<<" "<<waysi.station1<<" "<<waysi.station2<<" "<<waysi.dist<<endl ;void readlines() /读文件lines.txt int i; ifstream infile("lines.txt",ios:in);

9、/打开文件 infile>>line_count; /把文件中的记录赋值给line_count if(!infile) /打开文件失败 cerr<<"open error!"<<endl; exit(1); for(i=0;i<line_count;i+) infile>>linesi.Lid>>linesi.LName>>linesi.start_id>>linesi.end_id>>linesi.dist>>linesi.sign; infile.close

10、(); /* cout<<" "<<"Lid"<<" "<<"LName"<<" "<<"start_id"<<" "<<"end_id"<<" "<<"dist"<<" "<<"sign"<<endl;

11、 for(i=0;i<view_count;i+) cout<<" "<<linesi.Lid<<" "<<linesi.LName<<" "<<linesi.start_id <<" "<<linesi.end_id<<" "<<linesi.dist<<" "<<linesi.sign<<endl; */ /这里

12、是输出文件中的信息 void search () /查询车站信息(所在的铁路线) cout<<"please enter the station name:" char sta_name20; cin>>sta_name; /输入要查询的名字 cout<<endl; ifstream infile("views.txt ",ios:in); /读文件 infile >>view_count ; /读出文件记录的个数 if(!infile) /打开文件失败 cerr<<"open err

13、or!"<<endl; exit(1); int i,mark; for(i=0;i<view_count;i+) infile>>viewsi.id>>>>viewsi.code>>viewsi.shortname>>viewsi.LName; infile.close(); for(i=0;i< view_count;i+) if(strcmp(sta_name,views )=0) /找到车站 cout<<"the station'

14、s informations is:n"<<endl; cout<<" "<<"id"<<" "<<"name"<<" "<<"code"<<" "<<"shortname"<<" "<<"LName"<<endl; cout<<&q

15、uot; "<<viewsi.id<<" "<< <<" "<< views i.code <<" "<< views i.shortname<<" "<< views i.LName <<endl; break; mark=i; if(mark=( view_count -1) /若没有找到,输出提示 cout<<"sorry,the sta

16、tion is not in here"<<endl;void addview() cout<<"please enter the new view's informations:"<<endl; /输入新车站信息 cout<<"id:" cin>>viewsview_count.id; cout<<"name:" cin>>viewsview_; cout<<"code:" cin

17、>>viewsview_count.code; cout<<"shortname:" cin>>viewsview_count.shortname; cout<<"LName:" cin>>viewsview_count.LName; ofstream outfile("views.txt",ios:app); /打开views文件,并且写入数据 outfile<<view_count<<endl; if(!outfile) /文件打开失败 cerr&

18、lt;<"open error!"<<endl; exit(1); outfile<<viewsview_count.id<<" "<<viewsview_<<" "<<viewsview_count.code <<" " <<viewsview_count.shortname<<" "<<viewsview_count.LName<<en

19、dl; /在文件末尾添加 view_count=view_count+1; outfile.close(); /关闭文件 cout<<"successfully! the new station is added"<<endl; cout<<"now station number is:"<<view_count<<endl; void addway() cout<<"please enter the new way's informations:"<

20、;<endl; /输入新车站信息 cout<<"station1:" cin>>waysway_count.station1; / station1的id cout<<"station2:" cin>>waysway_count.station2; /station2的id cout<<"dist:" cin>>waysway_count.dist; /路段的长度 ofstream outfile("ways.txt",ios:app);

21、 /打开way.txt文件 outfile<<way_count<<endl; if(!outfile) /文件打开失败 cerr<<"open error!"<<endl; exit(1); outfile<<waysway_count.station1<<" "<<waysway_count.station2<<" "<<waysway_count.dist; /在文件末尾添加 outfile.close(); /关闭文件

22、cout<<"successfully! the new station is added"<<endl; way_count=way_count+1; cout<<"now station number is:"<<view_count<<endl; void addline() cout<<"please enter the new line's informations:"<<endl; /输入新铁路线信息 cout<<&qu

23、ot;Lid:" cin>>linesline_count.Lid; cout<<"LName:" cin>>linesline_count.LName; cout<<"start_id:" cin>>linesline_count.start_id; cout<<"end_id:" cin>>linesline_count.end_id; cout<<"dist:" cin>>linesline_

24、count.dist; cout<<"sign:" cin>>linesline_count.sign; ofstream outfile("lines.txt",ios:app); /打开文件 outfile <<line_count << endl; if(!outfile) /文件打开失败 cerr<<"open error!"<<endl; exit(1); outfile<<linesline_count.Lid<<"

25、"<<linesline_count.LName<<" "<<linesline_count.start_id <<" " <<linesline_count.end_id<<" "<<linesline_count.dist<<linesline_count.sign<<endl; /在文件末尾添加 outfile.close(); /关闭文件 cout<<"successfully! the

26、new line is added"<<endl; line_count=line_count+1; cout<<"now line number is:"<<line_count<<endl; /-void floyed() /弗洛伊德(Floyed)算法 int i, j, k, m, start_num, end_num; /i,j用来表示起始点和终点int dist_listSIZE_viewSIZE_view; /定义了一个数组 view_count=view_count+1;struct path_inf

27、o path_listSIZE_viewSIZE_view; /定义了一个path_info结构的变量,包含着count和path用来存储经过的路径for(i=1;i<=view_count;i+) /这里开始读文件,先让所有的线都为最大值for(j=1;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

28、(i =0; i< view_count; i+) for (j= 0; j<view_count; j+) if (i = j) dist_listij = 0; continue; dist_listij = -1; path_listij.count = 0; for (k = 0; k< way_count; k+) / if (waysk.station1 = i && waysk.station2 = j) /把起始点和终点分别给予i,j dist_listij = waysk.dist; path_listij.count = 2; path_l

29、istij.path0 = i; path_listij.path1 = j; break; for (k = 0; k<= view_count-1; k+) for (i = 0; i < view_count; i+) for (j = 0; j< view_count; j+) if (i = k | j = k | i = j) continue; if (dist_listik = -1 | dist_listkj = -1) continue; if ( (dist_listij = -1) | (dist_listij != -1) &&(di

30、st_listik + dist_listkj < dist_listij) dist_listij = dist_listik + dist_listkj;/shortestij=shortestik+shortestkj;path_listij.count = path_listik.count + path_listkj.count - 1; /pathij=k;for (m = 0; m < path_listik.count; m+) path_listij.pathm = path_listik.pathm; for (m = 0; m < path_listkj

31、.count; m+) path_listij.pathm+path_listik.count = path_listkj.pathm+1; cout<<" Floyed table:n"cout<<" All views in the school:n"for (i = 0; i < view_count-1; i+) cout<<" "<<i+1<<":"<<<<endl;cout<<&q

32、uot; Please input the start number: "cin>>start_num;cout<<" Please input the end number: "cin>>end_num;cout<<endl<<endl;cout<<"From"<<viewsstart_<<"to"<<viewsend_;if (dist_liststart_numend_nu

33、m = -1) cout<<"no way."<<endl;else cout<<"distance is "<<dist_liststart_numend_num<<", and path is :"/dist_list用来表示两点间的长度k = path_liststart_numend_num.path0-1; /path_list用来保存路径pathm在这里表明是通过的那个车站的cout<<;for (m = 1; m < pa

34、th_liststart_numend_num.count; m+) k = path_liststart_numend_num.pathm-1; /这里应该也是int型,k是经过的路径的id cout<<"->"<<; cout<<endl<<endl; void main()readviews(); readlines() ;readways(); while(1)int menu;cout<<endl<<endl<<endl<<endl;cout<<" 全国铁路运输网最佳经由系统 "<<endl;cout<<"*"<<endl;cout<<" 1:增加车站信息 "<<endl;cout<<" 2:增加铁路线信息 "<<endl; cout<<" 3:查询车站信息 "<<endl;cout<<

温馨提示

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

评论

0/150

提交评论