全国铁路最短路径经由问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中南大学数据结构

课程设计报告

题目全国铁路最短路径经由问题

学生姓名任秋峥

指导教师李登

学院信息科学与工程学院

学号 ********** 专业班级电子信息专业0901班

完成时间 2011年6月30号

目录

第一章、课程设计题目 (3)

1、问题描述 (3)

2、基本要求 (3)

3、实现提示 (4)

第二章、全国铁路最短路径经由问题的具体实现 (6)

2.1 需求分析 (6)

2.2 概要设计 (6)

1、设计思路 (6)

2、设计方案 (7)

2.3详细设计 (10)

1、定义结构体 (10)

2、输出车站信息 (10)

3、输出铁路信息 (11)

4、输出道路的信息 (11)

5、查询车站的功能 (11)

6、增加车站信息 (12)

7、增加铁路信息 (12)

8、最短路径的实现 (12)

9、实现所有函数功能 (13)

2.4 测试分析 (13)

1、测试数据 (13)

2、测试过程 (14)

3、测试结果 (14)

2.5用户使用说明 (14)

1 程序运行环境 (14)

2 主界面 (14)

2.6小结 (17)

1 调试过程中遇到的主要问题及解决过程 (17)

2.7总结和体会 (17)

2.8 附录 (18)

1、源程序代码 (18)

2、参考文献 (29)

第一章、课程设计题目

1、问题描述

题目为全国铁路最短路径经由问题

该题目采用我国铁路运输网的数据进行编程和运行验证。

铁路运输网络中由铁路线和火车站的两个主要概念,譬如:1号铁路线表示京广线,2号铁路线表示京沪线等。铁路线对象包括铁路线编号,铁路线名称,起始站编号,终点站编号,该铁路线长度,通行标志(00B客货运禁行,01B货运通行专线,10B客运通行专线,11B客货运通行)。

火车站对象包括所属铁路线编号,车站代码,车站名,车站简称,离该铁路线起点站路程及终点站路程。

2、基本要求

(1)查询某站所属的铁路线

(2)要求具备新增铁路线的管理功能

(3)要求具备新增车站的管理功能

(4)针对客运,货运情况能计算任何一个起始车站到任何一个终点站之间的最短路径。并且要求能够显示出该最短路径的各个火车站的经由顺序

3、实现提示

要在计算机上建立一个交通咨询系统则主要采取图的结构来表示实际的交通网路。我们可以将其转换为一个源点到另一个源点的最短路径,这里我应用了Floyd的算法。下图为简单交通线路

程序分别采用三个结构体来存储信息。views存储车站信息

line存储铁路信息

ways存储道路信息

也可以将以上信息也存入三个文件夹中,在程序中利用fread函数把信息从文件中读出赋给三个结构体。

①在实现查找车站功能时,首先利用fread函数从文件中读取数据,

再调用strcmp函数比较输入车站名与文件存贮的车站名,如果相同,就输出该车站名的相关信息。

②实现最短路径时,利用Floyd的算法。

③在实现增加信息功能时可以利用fprintf函数和fscanf函数向文

件中输入信息,同时文件中记录个数增加1.

第二章、全国铁路最短路径经由问题的具体实现

2.1 需求分析

1、可以直接向客户输出所有铁路和城市的信息

2、可以为客户提供查询车站的功能

3、可以为客户提供查询从一个车站到另一个车站的最短路径的功能

4、可以及时增加新的铁路和车站信息。

2.2 概要设计

1、设计思路

用文件存储信息,从文件中读取信息存储在views、lines、ways三个结构体中。再构造函数,分别实现输出、查询、最短路径、增加信息等功能。在用switch和while的循环语句来调用上述函数来实现功能,属于模块化实现功能。

2、设计方案

①read views()、readlines、readways()函数分别实现输出车站、铁路、道路信息。从文件中读取信息赋给结构体,循环输出。

②search()实现查询车站功能。利用fread函数把文件中的信息赋给结构体后,调用strcmp函数比较输入车站名,如果相同,就输出该车站的相关信息。

③add views()函数实现增加车站信息,可以调用fwrite或者fprintf函数向文件中写入信息。

④Floyd()函数实现最短路径的查询

⑤addllines()函数实现增加铁路线的信息,可以调用fwrite或者

fprintf函数向文件中写入信息。

⑥利用switch循环,在case1——case5情况下,分别调用以上函数

的功能。

⑦构建三个结构体,分别存放城市、铁路、道路的信息。数据结构中图的定义和术语为以下:

ADT Graph{

数据对象V :V是具有相同特性的数据元素的集合,称为顶点集。

数据关系R:

R={VR}

VR={|v,w(-V且P(v,w),表示从v到w的弧,谓词P(v,w)定义了弧的意义或信息}

基本操作P:

CreateGraph(&G,V,VR);

初始条件:V是图的顶点集,VR是图中弧的集合。

操作结果:按V和VR的定义构造图G

DestroyGraph(&G);

初始条件:图G存在

操作结果:销毁图G

LocateVex(G,u);

初始条件:图G存在,u一G中顶点有相同特征

操作结果:若G中存在顶点u, 则返回该顶点在图中位置;否则返回其它信息。

GetVex(G,v);

初始条件:图G存在,v是G中某个顶点

操作结果:返回v的值。

PutVex(&G,v,value);

初始条件:图G存在,v是G中某个顶点

操作结果:对v赋值value

FirstAdjVex(G,v);

初始条件:图G存在,v是G中某个顶点

操作结果:返回v的第一个邻接顶点。若顶点在G中没有邻接顶点,则返回“空”

相关文档
最新文档