毕业设计——第三章 开发方法及系统实现(4)

 

3.5 其他辅助操作类

除了上述的三个比较重要的操作类外,完成整个系统操作,需要辅助功能操作类。

3.5.1多媒体操作类CSoundPlay

设计此类的目的是出于对使用者使用软件的体验出发的。在传统的软件使用过程中,除了多媒体播放器外,其他大部分软件总是“鸦雀无声”,而使用者疲倦的使用着各种软件,却都是千篇一律。音乐却可是使人放松,给人灵感,同时能使人心情舒畅,听听音乐可以唤醒人的潜意识,能更好的工作学习。因此,考虑到用户的良好的使用体验要求,设计了该类实现多媒体文件的播放功能。

在此类中,实现了最基本的多媒体文件wav、mp3等常见的多媒体文件播放功能。该部分的实现主要由CSoundPlay类操作完成。

CSoundPlay类的成员方法如下:

表 3-7 CSoundPlay类的成员方法


名称

参数

返回值

说明

CSoundPlay

 

 

构造函数

PlaySound

string

 

播放声音

3.5.2图像导出类CMapExport

综合前面的叙述,在选择使用MapObjects进行系统开发时,考虑到了其支持的文件对象的相对MapInfo多,而且,为了保存用户操作后的图像文件,必须对地图上的图形数据进行保存处理。该部分的工作是由CMapExport类来完成的。

表格 2 CMapExport类的成员方法


名称

参数

返回值

说明

CMapExport

 

 

构造函数

Init

 

 

变量初始化

Export

mapType

 

图像导出

3.6 核心算法与相应关键技术详述

3.6.1一点到所有点的最短路径    

这里采用图论里最经典的Dijkstra[8]算法,只是每一段路经的长度都用正向阻力值和逆向阻力值计算。最短路径和最佳路径在算法上区分不大。只是阻力值确定的方式,但是需要特别注意的是,正向阻力值和逆向阻力值需要分别考虑。Dijkstra算法的基本思想如下:

(1) 问题描述:设图G=(V,E),v0∈V,求从点V0出发到其他点的最短路径。

(2) 算法描述:设图G 中有n个点,设置一个集合U,存放已经求出的最短路径的点。V-U是尚未确定最短路径的点集合,每个点对应一个距离值。集合U中点的距离值是从点V0到该点的最短路径长度,集合V-U中的点的距离值是从点V0到该点的只包含以集合U中点为中间点的最短路径长度。初始时,集合U中只有V0,点V0对应的距离值为0,集合V-U中点Vi的距离值为边(v0,vi)的权值(i=1,2,…,n-1),如果v0和vi无直接相连的边,则vi的距离值为∞,在集合V-U 中选择距离最小的点vmin加入集合U,然后对集合V-U中的各点的距离值进行修正。如果加入点vmin为中间点后,使v0到vi的距离值比原来的距离值更小,则修改vi的距离值。如此反复操作,直到从v0出发可以到达的所有点都在集合U中为止。

(3) 算法实现:设置一个CMapControl类的数组p[n],存放点v0到其他各个点的最短路径及最短路径长度。设D(i,j)为点vi到点vj的距离。

(a) 初始时,集合U中只有点V0,从点V0到其他点Vi(i=1,2,…,n-1)的最短路径长度为边(v0,vi)的长度。如果点v0和vi不是直接相连,则假设存在一条从v0到vi长度为无穷(小于0)的边。

(b) 在集合V-U 中找出距离值最小的点vmin,将其加入到集合U,从点vo到vmin的最短路径长度就是vmin的距离值,

(c) 调整集合V-U中点的距离之。如果将新加入的点vmin作为中间点后,vo到vi(vi∈V-U)的距离值更小,则应修改vi的距离值。即:如果p[i].dLength〉p[min].dLength+D(min,i),则将点vi的距离值改为p[min].dLeng+D(min),并将路径上vi的前趋点改为vmin,即:p[i].nPreNode=min

(d) 重复(b)、(c)操作,直到集合V-U中的点都加入集合U中为止。

(4) 图形描述:

表格 3 Dijkstra 举例数据[6]


管段

权值

0-1

0.41

1-2

0.51

2-3

0.50

4-3

0.36

3-5

0.38

3-0

0.45

0-5

0.29

5-4

0.21

1-4

0.32

4-2

0.32

5-1

0.29

 

时间: 2024-10-29 03:21:54

毕业设计——第三章 开发方法及系统实现(4)的相关文章

毕业设计——第三章 开发方法及系统实现(6)(完结)

  第四章     技术经济分析 (1) 可视的.无纸化数据管理平台:由于工程在不同的建设时期,都会产生大量的原始资料,如果没有一个全面的数据管理,在进行工程规划和设计时,往往需要凭借记忆或者翻阅大量设备的原始资料来查找所需的资料.而在GIS系统中,不但可以方便.快速地找到所需数据,提高工作效率,而且可以省去用于这方面档案资料维护所消耗的人力和财力. (2) 强大的绘图检索功能:用户不但能快速.方便地进行数据检索查询,而且还具有事故区域分析检索和警报提示功能: (3) 统一.完善的指挥调度中心:

毕业设计——第三章 开发方法及系统实现(5)

  3.6.2两线交点 这里采用了数学里面的两直线的交点的算法. (1) 问题描述:已知两直线上的两点Line1(pt10,pt11),Line2(pt20,pt21),求交点PtX: (2) 算法描述:先根据直线上的两点,求出两直线方程,根据两直线方程求出其交点. (3) 算法实现:设置两直线Line1(pt10,pt11),Line2(pt20,pt21): (a) 初始时,先检查两直线的点是否为特殊点,比如:pt10.X与pt11.X的值是否相同,如果相同,则返回特殊值: (b) 根据两直

毕业设计——第三章 开发方法及系统实现(2)

  3.3 地图操作类CMapControl详述 3.3.1地图操作类CMapControl 类的成员属性和方法 表 3-2 CMapControl类中实现的成员属性[5] 名称 数据类型 说明 ErrorCode int 该类中形成的错误信息 LintPtCount int 管线点的总数 mapZoomFull MapObjects2.Rectange 图层缩放处理 Message string 消息(包括错误信息) Model global.Model 当前模式 objMap AxMapOb

毕业设计——第三章 开发方法及系统实现(3)

  3.4.2数据操作类CDbProcess方法的具体实现 3.4.2.1 控件的初始化 由于在此次开发过程中,我们使用了DataGrid控件来存储基本的数据,因此在使用该控件时,必须对其进行初始化.初始化过程就相当于数据的重新安排以及数据表格的生成,生成的数据必须有利于后面的地图控件对数据的读取,同时,也需考虑到如何方便使用者读取数据. 为了满足地图控件的要求,首先考虑地图上最基本的点对象的三维坐标系统信息的存储,这些基本的信息是必须记住的,在随后的算法计算当中会使用到这些数据.因此,在数据中

C#2.0语言规范(三)匿名方法

规范 第三章 匿名方法原著:Microsoft Corporation原文:http://msdn.microsoft.com/vcsharp/team/language/default.aspx (SpecificationVer2.doc)翻译:lover_P出处: -------------------------------------------------------------------------------- [内容] 3.1 匿名方法表达式 3.2 匿名方法签名 3.3 匿

Win10 IoT C#开发 2 - 创建基于XAML的UI程序 及 应用的三种部署方法

原文:Win10 IoT C#开发 2 - 创建基于XAML的UI程序 及 应用的三种部署方法 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一章我们讲了Raspberry安装Win10 IoT系统及搭建Visual Studio 2015开发环境的方法(http://www.cnblogs.com/cloudtech/p/5562120.html)

Android艺术开发探索第三章————View的事件体系(下)

Android艺术开发探索第三章----View的事件体系(下) 在这里就能学习到很多,主要还是对View的事件分发做一个体系的了解 一.View的事件分发 上篇大致的说了一下View的基础知识和滑动,现在我们再来聊聊一个比较核心的知识点,那就是事件分发了,而且他还是一个难点,我们更加应该掌握,View的滑动冲突一直都是很苦恼的,这里,我们就来一起探索一下 1.点击事件的传递规则 我们分析的点击事件可不是View.OnClickListener,而是我们MotionEvent,即点击事件,关于M

Android艺术开发探索第三章——View的事件体系(上)

Android艺术开发探索第三章----View的事件体系(上) 我们继续来看这本书,因为有点长,所以又分了上下,你在本片中将学习到 View基础知识 什么是View View的位置参数 MotionEvent和TouchSlop VelocityTracker,GestureDetector和Scroller View的滑动 使用scrollTo/scrollBy 使用动画 改变布局参数 各种滑动方式的对比 弹性滑动 使用Scroller 通过动画' 使用延时策略 这章的概念偏自定义View方

Win8系统中无线零配置服务开发方法教程

  现在我们的生活根本离不开无线网络,这已经成为我们生活的一部分,所以一旦电脑的无线网连不上,很多网络依赖患者就会暴跳如雷,完全影响我们正常的生活.有时候我们检查网卡的设置.路由器的开启情况,都想去解决不能上网的问题,其实我们忽略到一点,就是win8系统中有个无线零配置服务,是无线网络自动配置的服务,对于我们网络的正常运行很重要,如果我们平时没有开启的话,win8网络就无法使用,所以赶紧跟随小编来学习下win8如何启用无线零配置服务把! Win8启用无线零配置服务方法 第一步:我们需要进入系统服