全国铁路运输网最佳经由问题数据结构课程设计1(2)

2019-01-03 17:33

void addway()

初始条件:ways.txt已经存在。

操作结果:将 ways.txt里面的数据一次存入数组ways[SIZE_way]里,并将数组里面的存储数据的个数赋值给全局变量way_count; void addline()

初始条件:lines.txt已经存在。

操作结果:将 lines.txt里面的数据一次存入数组lines[SIZE_line]里,并将数组里面的存储数据的个数赋值给全局变量line_count; void floyed()

初始条件: views[SIZE_view]、ways[SIZE_way]、lines[SIZE_line]已经存在并且存有相关信息。

操作结果:把每个车站到各个车站的最短经由路径及此路径的距离存储在path_info、path_list[SIZE_view][SIZE_view]数组里; void shortest_path()

初始条件:path_info、path_list[SIZE_view][SIZE_view]存储相关的数据; 操作结果:输出输入的两个站的最短距离及经过的所有站; void addadta(int menu)

初始条件:views.txt、ways.txt、lines.txt已经存在。

操作结果:如果menu=1,则添加车站数据,如果menu=2,则添加路线数据;

B.弗洛伊德算法中,数据结构所用到的思想为图的思想,所以数据结构的设计主要的目的为便于图的操作的设计。因此我们用了下面这些数据定义。 struct view_info /*城市信息结构*/ {

int id; char name[20]; int code;

char shortname[20];

char LName[100];//经过此站的铁路线名称

}views[SIZE_view];

struct line_info//铁路线信息结构 {

int Lid; char LName[20]; int start_id; //始发站 int end_id; //终点站 int dist; //铁路线长 char sign[5]; //通行标志

}lines[SIZE_line];

struct way_info //铁路度的信息结构 {

int station1; int station2; int dist;

}ways[SIZE_way];

struct path_info //用于最短路径的查询 { };

三、详细设计 1.程序设计思想 设计思路:

核心问题:求最短路径(弗洛伊德算法) 数据模型(逻辑结构):带权有向图 输入输出:

初始数据是从views.txt、lines.txt、way.txt三个文件中读入,在读入数据后,用户可以根据选项选择相应的功能,不同的功能有不同的数据输入/输出,比如:查询的功能是要求输入要查询的站的名称,然后输出是该站的相关信息;查询最

int count;

int path[SIZE_view];

短路径的功能则是输入起点站、终点站的名称,输出则是该段路线距离和经由站等。

程序的输入:(1)铁路线信息的输入:依次输入“铁路线代码,铁路线名称,起始站代码, 终点站代码,该铁路线长度、通行标志” ,并且中间以空格隔开。(2)火车站信息的输入:依次输入“车站代码,车站名,车站编号、车站简称,所属铁路线编号” ,并且中间以空格隔开。

程序的输出格式: (1)当显示铁路线或者火车站的信息时,与输入时的格式完全一致 ; (2)输出最短路径的长度,以及最短路径的经由顺序; 按照程序功能要求,设计了一下各个功能模块: (1)、文件读取模块

文件读取模块包括读取车站信息模块readviews、路段权值信息读取模块readlines、铁路线信息读取模块readlines。这些模块的主要功能为从文件中读取所需的信息。

(2)、添加信息模块adddata

添加信息模块又包括以下子功能模块: A、添加站点信息模块addview。 B、添加路段权值模块addway。 C、添加铁路线信息模块addline。 (3)查询模块

根据用户需求,查询站点信息 (4)最短路径查询模块

该模块为本软件设计的核心部分。根据该模块可以很方便的找出两个城市的最短路径。该最短路径的算法为常用的弗洛伊德算法。 (5)操作菜单模块

该模块主要用于与用户的交互,一个界面友好的菜单可以提高软件的人机交互体验。

2. 软件模块结构图

void main() void readviews() void readways() void readlines() void adddata(int mune) void void short_path() search() void addview() void addway() void addline() void floyed()

(1)主程序模块,其中主函数为:

void main() { 新增火车站;新增铁路线;查询火车站的信息;针对客运、货运情况,求两站之间的最短路径及其经由顺寻;退出界面 } (2) 文件模块为:

void readways(); void readviews(); void readlines() (3)图模块为:

Void short_path();void floyed() (4)查询函数和添加函数

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.测试数据 数据读取如下:

操作界面如下:


全国铁路运输网最佳经由问题数据结构课程设计1(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:最新2017年秋六年级上册语文期末试卷长春版考试质量检测监测试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: