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

简介:   3.5 其他辅助操作类 除了上述的三个比较重要的操作类外,完成整个系统操作,需要辅助功能操作类。 3.5.1多媒体操作类CSoundPlay 设计此类的目的是出于对使用者使用软件的体验出发的。
 
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
 
Disjkstra
目录
相关文章
|
1月前
|
监控 数据可视化 数据建模
软件工程之设计分析(2)
软件工程之设计分析(2)
25 0
软件工程之设计分析(2)
|
14天前
|
存储 自然语言处理 算法
【软件设计师—基础精讲笔记6】第六章 结构化开发方法
【软件设计师—基础精讲笔记6】第六章 结构化开发方法
47 0
|
1月前
|
设计模式 关系型数据库 UED
软件工程之设计分析(1)
软件工程之设计分析(1)
29 0
|
9月前
|
测试技术 程序员 开发者
【软件工程】第六章
【软件工程】第六章
|
敏捷开发 存储 安全
软考——软件设计师:第七章:系统开发基础(软件工程&结构化开发)考点总结(完整篇)
软考——软件设计师:第七章:系统开发基础(软件工程&结构化开发)考点总结(完整篇)
软考——软件设计师:第七章:系统开发基础(软件工程&结构化开发)考点总结(完整篇)
|
数据库 Windows
艾伟_转载:基于.NET平台的Windows编程实战(二)—— 需求分析与数据库设计
本系列文章导航 基于.NET平台的Windows编程实战(一)——前言 基于.NET平台的Windows编程实战(二)—— 需求分析与数据库设计 基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写 基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现 基于.NET平台的Windows编程实战(六)—— 题目管理功能的实现   大家都知道一个系统的成败与否关键在于其所做的需求分析是否到位,数据库的设计是否合理。
972 0
|
数据库 Windows
艾伟:基于.NET平台的Windows编程实战(二)—— 需求分析与数据库设计
本系列文章导航 基于.NET平台的Windows编程实战(一)——前言 基于.NET平台的Windows编程实战(二)—— 需求分析与数据库设计 基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写 基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现 基于.NET平台的Windows编程实战(六)—— 题目管理功能的实现   大家都知道一个系统的成败与否关键在于其所做的需求分析是否到位,数据库的设计是否合理。
976 0
软件需求分析读书笔记2
这是第二个读书笔记,通过读这本书真是受益匪浅啊,里面有很多的知识都不知道。要一点点的查,学到的知识也很多。      需求工程有三个主要任务:第一,需求工程必须说明软件系统将被应用的环境极其目标,说明用来达成这些目标的软件功能,还要说明在设计和实现这些功能时上下文环境对软件完成任务所用方式,方法所施加的限制和约束,也即要同时说明软件需要做什么和为什么需要做。
1006 0
|
开发者
软件需求分析读书笔记1
这是关于阅读《需求工程——软件建模与分析》的读书笔记。     刚拿到这本书的时候,看着厚厚的书,就觉得没有心思读下去,不过还是打算坚持吧。就这样开始了。      需求工程-软件建模与分析》这本书分为五部分,这一阶段我主要浏览了绪论与需求获取,大概了解到从软件需求工程的角度出发,以需求开发过程为主线,完整描述了需求获取、需求分析、需求验证、需求规格说明和需求管理等需求工程活动。
1079 0