毕业设计论文基于VB60测量工具箱程序设计

上传人:痛*** 文档编号:139591564 上传时间:2022-08-22 格式:DOC 页数:42 大小:510KB
收藏 版权申诉 举报 下载
毕业设计论文基于VB60测量工具箱程序设计_第1页
第1页 / 共42页
毕业设计论文基于VB60测量工具箱程序设计_第2页
第2页 / 共42页
毕业设计论文基于VB60测量工具箱程序设计_第3页
第3页 / 共42页
资源描述:

《毕业设计论文基于VB60测量工具箱程序设计》由会员分享,可在线阅读,更多相关《毕业设计论文基于VB60测量工具箱程序设计(42页珍藏版)》请在装配图网上搜索。

1、黄河水利职业技术学院毕业论文设计基于VB6.0测量工具箱程序设计学生姓名: 学号: 指导教师:川 李孝雁 职称: 讲师 专 业: 工程测量技术 系部: 测绘工程系 2010年6月14日黄河水利职业技术学院毕业设计登记表 2010年 6 月 14 日学生姓名晁双彬专业工程测量技术班级0701班设计题目基于VB6.0测量工具箱程序设计指导教师评语: 签字辩论委员会考评小组评语: 辩论组长:成绩: 辩论委员会主任:摘 要基于VB6.0的集成开发环境在测量工作中具有重要意义,是测绘人员必须掌握的一门实用、有效的专业技能。随着测绘技术的不断开展,计算机在现代测绘科学中的应用越来越广泛,已经深入到从理论研

2、究到实际生产的方方面面,如坐标解算、数据处理、施工放样计算、地理信息数据加工和管理等。使用计算机程序处理测量数据,不但方便、快速,而且准确、具有可重复性。它综合性很强,涉及面不仅包括控制测量学、测量平差、工程测量学等测量专业内容,还涉及数据结构、数组与过程、编程技术等多方面内容。编写的程序在测量作业中起到了很大的作用,方便了计算,节约了时间,提高了工作效率并且能够保证计算结果准确可靠。同时,为以后熟练使用卡西欧计算器奠定了根底。本设计课题将VB语言与测量程序设计进行了有机结合。本论文的主要目的是使我们在学习VB语言编程的同时,能够结合测绘专业的例子,一方面可以稳固测绘专业知识,另一方面可以掌握

3、运用VB语言编写程序解决测绘专业问题的能力。关键词:VB、导线、程序设计目 录摘要第1章 绪论 .1 1.1 测量程序设计的出发点 .11.2 测量程序设计的重要性 .11.3 测量程序设计的过程 .1第2章 测量程序设计根底 .1 2.1 VB6.0简介.2 2.2 VB6.0的优越性.2 2.3 测量中批量数据的处理.3 2.4 测量常用根本程序汇编.9 第3章 测量工具箱的创立思路.173.1 界面分析及设计步骤.173.2 主窗体界面及代码.18 3.3 考前须知.20第4章 VB测量程序设计.21 4.1 三角形三点坐标求内角.21 4.2 线路测量实习成绩评定.23 4.3 前方交

4、会.24 4.4 测边交会.26 4.5 多测回水平角计算.28 4.6 基于VBA的Excel测量程序在工程测量中的运用.31第5章 结束语.35参考文献.36致 谢.37第1章 绪论本章主要介绍为什么要进行测量程序设计以及测量程序设计的重要性,最后说明测量程序设计的过程。1.1 测量程序设计的出发点在实际的测量中,有时候要自己进行数据处理,或者是进行必要的计算。如果待处理的数据有上千个甚至更多,例如在诸如工程施工放样、大坝平安监测、地图绘制等测绘工作中,都必然涉及到海量的数据传输、存储、检索、处理等工作这时候仅仅靠手算是不能满足的,所以要利用软件即程序进行处理。1.2 测量程序设计的重要性

5、如今,能够进行编程的语言很多,例如VB、VF、C+等,通过这些语言编写出来的测量程序简单易用、方便快速、功能强大、应用广泛,适合测量专业人员使用,极大地方便了测量工作者,节约了时间,提高了效率。从学习角度上讲,VB的简单和可视化、面向对象等特点,也非常适合作为一门语言来学习,所以本论文所编写的程序均采用VB编写。1.3 测量程序设计的过程要想进行测量程序设计,一方面,要掌握测量专业知识,比方测量平差根底等;另一方面,要有一定的VB知识,比方数组、过程等。只有这样才能够熟练的编写测量程序。对于测绘专业的学生来说,编写专业相关的程序也是一个深化测量根底知识的过程,当用设计程序来解决一个测量问题时,

6、例如导线计算,必须先弄清楚计算导线的步骤:需要哪些数据,经过哪些检核计算,如何算出最后的导线点坐标等。明确了这些处理步骤以后,再把这些步骤用计算机能够识别的指令编写出来并送入计算机执行,计算机才能按照我们的要求对指定的数据求解。计算机能执行的指令序列成为程序,而编写程序的过程称为程序设计。由此可知,编写测量程序的过程,也是对测量根底知识复习、稳固和加深的过程。当然,一个程序并不是从最开始就十分契合待解决的实际问题,也不能一成不变,只有通过反复的使用,不断根据实际应用的需要反复改良,才能真正编写出适合实际的测量程序来。一般来说,利用VB6.0创立测量程序有以下6个主要步骤:1 综合分析,建立数学

7、模型。2 创立应用程序界面。3 设置窗体和控件的属性。4 编写代码。5 运行和调试应用程序。6 保存程序。第二章 测量程序设计根底本论文中的测量程序是利用VB语言编写出来的,所以要对掌握VB的相关知识并且能够熟练运用,在测量综合程序的编写过程中用到了很多的根本程序,从而构成它们的子程序,为此要编写出根本的测量程序,测量中的数据往往是批量的,所以能够进行批量处理。本章主要介绍了VB6.0的相关知识、简单的根本程序,例如角度弧度的转化、坐标正反算等,还写出了对测量批量数据处理的相关知识,例如数组、过程等以及批量数据处理FlexGrid控件等知识。2.1 VB6.0简介 VB是Visual Basi

8、c的简称,VB是从BASIC语言开展而来的,是Windows环境下快速开发应用程序的可视化工具。其中,Visual是指开发图形用户界面的方法,是指直观的编程方法。Basic是指BASIC语言。之所以叫做Visual Basic,就是因为它使用了BASIC语言作为代码。作为程序设计语言,VB的主要特点为:1面向对象的可视化设计平台;2事件驱动的编程机制;3结构化的设计语言;4充分利用Windows资源;5具有开放的数据库功能与网络支持。 1991年,微软公司为了简化Windows应用程序的开发过程,推出了Visual Basic 1.0版,它极大的改变了人们对Windows的看法,以及使用Win

9、dows的方式。1992年、1993年两年间,在Visual Basic1.0的根底上又相继推出了Visual Basic 2.0版和Visual Basic 3.0版。1995年,随着Windows 95轰轰烈烈的发布,Visual Basic 4.0版也随之问世。1997年,微软公司推出了Visual Basic 5.0版。1998年推出了Visual Basic 6.0版。微软公司在推出英文版的同时,也推出了中文版,从而大大的方便了中国用户。Visual Basic的最新版本是2006年发布的Visual Studio 2005套件中的Visual Basic 2005。但是由于Visu

10、al Basic 2005对运行环境要求较严格,所以目前使用者较少。 现在拥有最多用户的Visual Basic版本依然是Visual Basic 6.0,它包括三种版本:学习班、专业版和企业版。三种版本适合于不同的用户层次。 Visual Basic 6.0是专门为Windows 9x/NT/2000等32位操作系统设计的。用Visual Basic 6.0的编译器可以自动生成32位应用程序,可脱离Visual Basic 6.0的运行环境,且运行速度更快、更平安,适合在多任务环境下运行。2.2 VB6.0的优越性目前使用较多的编程语言有Visual Basic、Visual FoxPro等

11、,它们各有特点,分别适合不同的领域。从学习角度上讲,VB的简单和可视化、面向对象等特点,也非常适合作为一门语言来学习。作为高质量的开发软件,VB6.0具有以下显著的优点:2.2.1 简单易学Visual Basic在继承了BASIC语言简单易用的根底上,改造了BASIC语言中复杂冗长且极易出错的“面条式结构,而是以接近于人类自然语言和逻辑思维方式的结构化程序设计语言取代之,使其更加流畅、自然。用VB编写程序代码,如同用英文跟计算机交代工作任务一样。VB的编程器支持彩色代码,还可以自动进行语言检查,同时具有强大且使用灵活的调试器和编译器,这些都使得VB程序设计从学习到使用都非常简单方便。2.2.

12、2 面向对象的可视化程序设计面向对象的程序设计是当代程序设计的主流,既符合人们的思维和解决问题的逻辑,又是开发大型程序的必须。这里,“对象是一个比较抽象的概念,可以理解成封装了一些代码和数据的集合,能够完成一定的动作和功能。VB中的对象主要分为窗体和控件两类。窗体是用户工作区,所有控件都在窗体中集成,从而构成应用程序的界面;控件是指“空的对象或根本对象,是应用程序的图形用户界面的一个组件,对其属性可以进行不同的设置,从而构成不同的对象。VB这种可视化的用户界面设计功能,把程序设计人员从繁琐复杂的界面设计中解脱出来。可视化编程环境的“所见即所得功能,使界面设计如同积木游戏一样,从而使我们感觉到编

13、程也是一种享受。2.2.3 事件驱动的编程机制事件驱动机制是VB区别于其他高级语言的显著特点。VB没有明显的主程序概念,程序员要做的就是面向不同的对象分别编写它们的事件过程。事件驱动应用程序的典型事件序列如下:启动应用程序,加载和显示窗体。窗体和控件接受事件。如果在相应的事件过程中存在代码,那么执行代码。然后,应用程序等待下一次事件。2.2.4 高度的可扩充性VB为用户提供的扩充途径包括:支持第三方软件商为其开发的可视化控件对象;支持访问动态链接库DLL;支持访问应用程序接口API。2.2.5 广泛支持的二次开发能力VB与Microsoft系列软件天然的结合,使得编程变得非常容易。在Word文

14、档上增加一些实现简单功能的按钮和滚动条;在Excel表格的根底上进一步开发适合自己应用的表格程序等,都非常方便快捷。而且众多测绘专业软件都支持VBA,使得VB也成为专业人士进行二次开发的很好选择。例如AutoCAD可以用VBA实现有关的界面和功能。2.2.6 强大的数据库访问能力VB中提供了强大的数据库管理和存取操作能力。利用数据控件和数据库管理窗口,能直接编辑和访问Access,FoxPro等,通过访问或建立连接的方式使用并操作后台大型网络数据库,如SQL Server,Oracle等 。VB6.0还具有功能强大、使用方便的ADO技术,支持所有的OLE DB数据库厂商。2.3 测量中批量数据

15、的处理在测量中,测量数据往往都是大量的数据同时处理,例如一个水准网就有几十个点,需要列很多方程进行平差,很难想象使用一个一个的简单变量和一条一条的简单语句来处理这些数据。本节将介绍批量数据处理的几个工具:循环、数组和过程。数组可以存储批量的数据,而循环那么可以重复屡次执行某些语句,过程那么进一步将某些程序封装起来以便于重用。另外本章还将介绍批量数据处理控件等。2.3.1 循环结构编写程序时经常需要对某条或某些语句重复执行屡次,这可以利用各种循环结构来实现。VB中提供了两种类型的循环语句,即计数型循环语句和条件型循环语句。For循环是计数型循环语句,而While循环和Do循环语句属于条件型循环语

16、句。2.3.1.1 For循环For循环用于实现循环次数的循环结构,程序按照此种结构中指明的循环次数来执行循环体局部。For循环格式如下:For循环变量=初始值To终值Step步长 循环体 Exit For 循环体Next循环变量2.3.1.2 Do循环和While循环Do循环和While循环都属于条件循环结构,它们都是通过判断一个条件的成立与否来决定是执行循环体语句还是结束循环。它们与For循环最大的差异在于:For循环用于循环次数的情况,执行一定次数后即可结束循环;而Do循环和While循环用于不知道循环次数的情况。1 While循环While循环比较简单,其格式如下: While条件 循

17、环体 Wend与前面的For循环比较可以看出,For语句的格式比较紧凑,表达丰富;但是While语句比较简单灵活、易于理解,对于有一个判断条件、循环次数未知的循环尤其适用。2 Do循环Do循环也是根据某个条件是否成立来决定能否执行相应的循环体局部,与While循环不同的是,Do循环有两种格式,既可以在初始位置检验条件是否成立,也可以在执行一遍循环体后的结束位置判断条件是否成立,能否进入下一次循环。Do循环的两种格式如下:(1) 格式一: Do 语句体 满足某条件时Exit Do语句体 LoopWhile和Until条件(2) 格式二DoWhile和Until条件 语句体 满足某条件时Exit

18、Do语句体 Loop2.3.1.3 循环的嵌套在一个循环体内又包含了一个完整循环的循环结构称为循环的嵌套。循环的嵌套对For循环、Do循环和While循环都适用。对于循环嵌套,要注意以下两点:(1) 内循环变量与外循环变量不能同名;(2) 外循环必须包含内循环,不能交叉。如: For ii=1 To 100For jj=1 To 50 Next jjNext ii2.3.2 数组在实际应用中经常要处理同一性质的成批数据,有效的方法是通过数组来存取。而数组与循环相结合编写出的程序就有了无穷的威力。 例1:求15个观测值等权的均值和方差。假设使用简单变量来存储15个观测值,那么需要15个变量V1,

19、V2,V15,如果各观测值不等权,还需另外定义相应的15个变量存储15个观测对应的权P1,P2,P15。这样写出的程序会十分复杂,而且只能处理15个观测值的情况,当观测值数增加或减少时,那么需修改程序,十分不方便。假设观测值数增加到几百个甚至上万个时,这样编写代码是难以忍受的。当使用数组时,不但可扩展性好,而且结合循环,只要很少的代码就可以实现这一工作。其实现代码如下: Dim v(1 to 15) as double Dim aver#,squa#,i% Aver=0: squa=0 For i = 1 to 15 v(i)=InputBox(输入& i & 个观测值) aver=aver+

20、v(i) Next i aver=aver/15 print 平均值为;aver数组并不是一种数据类型,而是一组相同类型的变量的集合。在程序中使用数组的最大好处是用一个数组名代表逻辑上相关的一批数据,用下标来区分数组中的不同元素,并与循环语句结合使用,以简化程序,实现批量数据的处理。数组内的元素是连续存放的,而且有上、下两个边界限制数组内元素的个数和数组的起始位置及结束位置。一般情况下,一个数组中的元素类型必须相同,可以是前面讲过的各种根本类型。特殊的是当数组类型指定为Variant时,其中元素的类型可以为各种根本类型的混合。一个数组可以是一维的,也可以是多维的,VB中最多允许数组有60维。一

21、般可以将数组分成两类,一类是固定数组,该数组的大小始终保持不变;另一类是动态数组,该数组的大小在程序运行时可以改变。2.3.2.1 固定数组固定数组分为一维数组和多维数组。声明一个固定数组时,必须给定数组使用的有效范围。以一维数组为例,声明时在数组名后跟一个用括号括起来的上界默认下界为0。声明格式如下:Dim 数组名下标As类型2.3.2.2 动态数组事先不知道数组的大小时,可以先声明该数组为动态数组,等需要时再用Redim语句指定数组的大小。声明动态数组时不需要给出数组的长度,只需保存一个空维数表。创立动态数组的步骤为:(1)声明数组为动态数组,只需给数组附以一个空维数表。例如,声明一个整型

22、动态数组Matrix,可以使用如下语句:Dim Matrix() As Integer(2)在需要指定数组大小时,再使用Redim语句分配数组中实际元素的个数。Redim 数组名数组长度-1,例如,给上例的Matrix数组指定元素个数为9时,可以使用如下语句:Redim Matrix(8) As Integer。2.3.3 过程将程序分割成较小的逻辑部件可以简化程序设计任务,这些部件称为过程。VB的过程根据是否有返回值分为子过程和函数过程两类。2.3.3.1 子过程子过程Sub过程是在响应事件时执行的代码块。将模块中的代码分成子过程后,在应用程序中查找和修改代码更容易。子过程的定义方法如下:P

23、rivate|PublicStaticSub过程(参数表) 语句End Sub每次调用过程都会执行Sub 和End Sub之间的语句,可以将子过程放入标准模块、类模块和窗体模块中。按照默认规定,所有模块中的子过程为Public,这意味着在应用程序中可随处调用它们。2.3.3.2 函数过程VB除了内部函数,如Sqr()、Sin()和Chr()等,还可用Function语句编写自己的函数Function过程。函数过程的语法是:Private|PublicStaticFunction函数过程名(参数表) As类型 语句End Sub与Sub过程一样,Function过程也是一个独立的过程,可读取参数

24、、执行一系列语句并改变其参数的值。与Sub过程不同的是,Function过程可返回一个值给调用的过程。2.3.4 批量数据控件VB中可以输入和显示批量数据的控件很多,如伸缩格网FlexGrid、数据格网DataGrid、数据列表框DataListBox、数据组合框DataComboBox等。下面详细介绍FlexGrid控件。FlexGrid控件是VB提供的一个输入和显示批量数据的控件。与列表框和组合框不同的是,它不但可以输入和显示单列数据,还可以输入和显示多列二维表格数据,并且可以显示行号和列标头,非常适合测量程序中批量数据的输入和显示。当然,FlexGrid控件本身并不能进行数据的输入和显示

25、处理,它只是提供一个界面和相应的属性、事件和方法,具体要实现什么样的功能,需要使用者自行编程实现。 FlexGrid控件是ActiveX控件,需要通过“工程-部件命令选择Microsoft FlexGrid Control6.0选项,将FlexGrid控件添加到工具箱。添加到窗体的FlexGrid控件如图2-1所示。新添加的FlexGrid控件默认名为MSFlexGrid1,默认有两行两列,共4个网格。其中第一行为列表头,第一列为行号栏,它们与其他网格的区别只是外观不同。FlexGrid的常见属性有Cols列、Rows行、Col当前操作网格列号Row当前操作网格行号、Text存取当前操作网格的

26、内容、MosePointer、设置鼠标在控件上移动时的形状。在设计状态,右键单击窗体上的FlexGrid控件,选择“属性菜单项,弹出属性页对话框,如图2-2所示。图2-1 FlexGrid控件图2-2 FlexGrid控件的属性页下面举例说明FlexGrid控件的使用:使用FlexGrid控件输入一个33矩阵,实现矩阵中所有元素的值增倍或减半。新建一个工程,在窗体上添加一个FlexGrid控件和2个命令按钮,在属性页中将FlexGrid控件设置成4行4列,修改命令按钮的Caption属性和Name属性并将FlexGrid控件的MosePointer属性设置为3-flexBeam。程序设计界面如

27、图2-3所示。图2-3 FlexGrid控件演示程序设计界面首先是在窗体的Load事件中初始化FlexGrid控件,显示列标号和行号,代码如下:Private Sub Form_Load()Dim i%, j%With MSFlexGrid1 For i = 1 To 3 .Row = 0: .Col = i: .Text = i Next i For i = 1 To 3 .Col = 0: .Row = i: .Text = i Next iEnd WithEnd Sub上述代码中,使用了With语句来简化代码。接着来实现FlexGrid控件的数据输入操作。FlexGrid控件自身并不能接

28、受键盘输入数据,需要编程实现,并且要先判断输入的是不是数字字符。KeyPress事件具体代码如下:Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)With MSFlexGrid1 If IsNumeric(Chr(KeyAscii) Then .Text = .Text & Chr(KeyAscii) ElseIf KeyAscii = 8 Then退格符的ASCII码值是8 If Len(.Text) 0 Then .Text = Left(.Text, Len(.Text) - 1) End If End WithEnd Sub由于

29、按下Delete键并不触发KeyPress事件,Delete键的KeyCode值为46,为了实现Delete键功能,将文本清空。具体代码如下:Private Sub MSFlexGrid1_KeyUp(KeyCode As Integer, Shift As Integer)If KeyCode = 46 Then MSFlexGrid1.Text = End IfEnd Sub增倍和减半功能具体实现代码如下:Private Sub Command1_Click() 将元素数值变为原来的两倍Dim i%, j%With MSFlexGrid1 For i = 1 To 3 For j = 1

30、To 3 .Row = i: .Col = j: .Text = Val(.Text) * 2 Next j Next iEnd WithEnd SubPrivate Sub Command2_Click() 将元素数值变为原来的一半Dim i%, j%With MSFlexGrid1 For i = 1 To 3 For j = 1 To 3 .Row = i: .Col = j: .Text = Val(.Text) / 2 Next j Next iEnd WithEnd Sub程序执行时的界面如图2-4所示:图2-4 FlexGrid控件程序执行界面2.4 测量常用根本程序汇编本节主要

31、介绍使用VB6.0编写根本测量程序的过程,包括VB语言根底和测量根本知识。综合运用VB和测量的根本知识编写出真正适合自己的应用程序。本节的主要内容为:四舍六入,奇进偶不进、计算两点间的距离和坐标方位角、角度与弧度的换算、坐标正反算等。2.4.1 四舍六入,奇进偶不进 在测量中数值的取位遵循“四舍六入、奇进偶不进。如果小数点后保存3位,即要求对千分位即取位至毫米上的数值进行“四舍六入、奇进偶不进的判断。分以下三种情况:1千分位后面的数值小于等于四,如2.3421,此时直接舍弃小数点后第四位以后的数值;2千分位后面的数值大于等于六,如2.3427,此时小数点后第三位直接进1;3小数点后面第四位是数

32、值5,如2.2425,此时判断千分位,如果是奇数,那么千分位进1,如果是偶数,那么千分位后面数值舍弃。其程序执行界面如图2-5所示:图2-5 四舍六入,奇进偶不进主要代码为:Private Sub Command1_Click()Dim a#, b#, c#, d#a = Val(Text1.Text)b = a - Fix(a) 获得小数局部c = Mid(b, 5, 1) 得到小数点后第四位d = Mid(b, 4, 1) 得到小数点后第三位Select Case cCase Is 5If c = 6 ThenText2.Text = Format(a, 0.000)ElseIf c =

33、4 ThenText2.Text = Format(a, 0.000)End IfCase Is = 5If d Mod 2 = 0 ThenText2.Text = Format(a, 0.000) - 0.001ElseIf d Mod 2 0 ThenText2.Text = Format(a, 0.000)End IfEnd SelectEnd Sub2.4.2 计算两点间的距离和坐标方位角1数学模型由两个点求这两点间的距离和坐标方位角是测量学中经常用到的计算,在其它的测量综合编程中,计算两点间距离和坐标方位角是其重要的根底。本程序可用于根据两点A、B坐标计算A、B两点间的距离和坐标方

34、位角,在计算坐标方位角时先计算出象限角,然后通过象限角与方位角的关系转化为方位角。主要计算公式为: 求两点距离:s = Sqr(X 2 + Y 2) 求坐标方位角: = Atn(Y / X)本程序主要应用到VB中乘方运算符和平方根函数Sqr。2其程序执行界面如图2-6所示:图2-6 计算两点间距离和坐标方位角3主要代码为:Private Sub Command1_Click()Dim Xa#, Ya#, Xb#, Yb#, X#, Y#, tana#, ab#, du%, fen%, miao%, s#Const pi = 3.14159265358979Xa = Val(Text1.Text

35、): Ya = Val(Text2.Text)Xb = Val(Text3.Text): Yb = Val(Text4.Text)X = Xb - Xa: Y = Yb - YaIf Abs(X) 0.00000001 Then MsgBox 除数为零,请检查坐标输入是否正确! Text1.SetFocus Exit SubEnd Ifs = Sqr(X 2 + Y 2)Text5.Text = sIf Abs(X) 0 Then ab = 90 Else ab = 270 End IfElse tana = Y / X ab = Atn(tana) ab = ab * 180 / pi If

36、 X 0 And Y 度度弧度。其程序执行界面如图2-7所示:图2-7 角度化弧度其主要代码为:Const pi = 3.14159265Private Sub Command1_Click()Dim du%, fen%, miao%, jiaodu#dufenmiao = Val(Text1.Text)du = Fix(dufenmiao)dufenmiao = (dufenmiao - du) * 100fen = Fix(dufenmiao)miao = (dufenmiao - fen) * 100jiaodu = du + fen / 60 + miao / 3600dutohu =

37、 jiaodu * pi / 180Text2.Text = Format(dutohu, 0.000000)End Sub2.4.4 弧度化角度本程序是将弧度转化为“度的形式,以利于显示输出。用到的主要公式为:弧度RAD度DEG:度DEG度、分、秒:Fix函数的使用。其程序执行界面如图2-8所示:图2-8 弧度化角度其主要代码为:Const pi = 3.14159265Private Sub Command1_Click()Dim du#, fen#, miao#hu = Val(Text1.Text)hu = hu * 180 / pi: du = Fix(hu)hu = (hu - d

38、u) * 60: fen = Fix(hu)hu = (hu - fen) * 60: miao = Fix(hu + 0.5)If miao = 60 Then fen = fen + 1: miao = 0End IfIf fen = 60 Then du = du + 1: fen = 0End Ifhutodu = du + fen / 100 + miao / 10000If hutodu AB 根据X,Y的符号判断RAB与AB的关系,从而得到方位角RAB称为象限角,求方位角AB时,有如下规律:X Y 方位角 RAB piRAB piRAB 2*piRAB同时还要注意落到坐标轴上的情

39、况,如X、Y其中一个或两个等于零。在本程序的编写中要注意反正切函数Atn和取绝对值函数Abs的运用。其程序执行界面如图2-10所示:图2-10 坐标反算其主要代码为:Const pi = 3.14159265358979Private Sub Command1_Click()Dim Xa!, Ya!, Xb!, Yb!, jl!, r1#, r2#, dfm!, ds%, fs%, ms%Const pi = 3.1415926Xa = Val(Text1.Text)Ya = Val(Text2.Text)Xb = Val(Text4.Text)Yb = Val(Text3.Text)jl =

40、 Sqr(Xa - Xb) 2 + (Ya - Yb) 2)If Xb = Xa And (Yb - Ya) 0.000001 Thenr2 = 0ElseIf (Xb - Xa) 0.000001 And Yb = Ya Thenr2 = pi / 2ElseIf Xb = Xa And (Yb - Ya) 0.000001 Thenr2 = piElseIf (Xb - Xa) 0.000001 And Yb = Ya Thenr2 = (3 / 2) * piEnd IfEnd IfEnd IfEnd IfIf Xb Xa And Yb Ya Thenr1 = Atn(Abs(Xb -

41、Xa) / Abs(Yb - Ya)If (Yb - Ya) 0.000001 And (Xb - Xa) 0.000001 Thenr2 = r1ElseIf (Yb - Ya) 0.000001 Thenr2 = pi - r1ElseIf (Yb - Ya) 0.000001 And (Xb - Xa) 0.000001 And (Xb - Xa) 0.000001 Thenr2 = 2 * pi - r1End IfEnd IfEnd IfEnd IfEnd Ifdfm = r2 * 180 / pids = Fix(dfm)fs = Fix(dfm - ds) * 60)ms = F

42、ix(dfm - ds) * 60 - fs) * 60)Text5.Text = Format(jl, 0.000)Text6.Text = ds & 度 & fs & 分 & ms & 秒End Sub第3章 测量工具箱的创立思路设计测量工具箱是本次毕业设计的课题,在测量中,对数据处理时有时候要用到很多的程序。测量工具箱就是把编写的测量程序进行一下汇总,是对毕业设计成果的一种汇总,并且方便对所编的程序进行集中管理,同时运用起来也方便,所以要构成测量程序集。本论文设计中的测量工具箱采用“菜单的形式进行编辑,菜单是应用程序的组成局部之一,它一般由菜单栏和下拉菜单组成,如VB系统集成环境中的菜单

43、栏。从结构上看,菜单可分成假设干级,第一级是菜单栏,它包括假设干菜单项。菜单项为横向排列,每一菜单项都可对应一个下拉式菜单,子菜单中的选项竖向排列,同时子菜单中的每一项又可以有自己的下拉菜单。本论文设计中把菜单分成两级,把所编写的测量程序纳入其中。3.1 界面分析及设计步骤将主窗体的Caption属性设置为“测量程序集,并适当调整窗体的大小。其设计步骤为:(1) 建立菜单,启动VB6.0,进入编程界面,建立菜单的过程是先列出菜单的组成,然后在“菜单编辑器窗口按照菜单组成进行设计,设计完后,再把各菜单项与代码连接起来;2翻开“菜单编辑器,点击“工具菜单的“菜单编辑器命令,窗体上显示出“菜单编辑器

44、,如图3-1所示;3输入并把代码连接到菜单上,在“标题栏中输入“根本程序,在“名称栏中输入“jiben字样,然后点击“下一个,再点击“符号,即编辑二级标题,在“标题栏和 “名称栏中分别输入相应的程序名称,此时可以设置快捷键,最后点“确定,显示出如图3-2所示的界面;4重复上一步,直到所有要添加的程序都输入完为止。图3-1 菜单编辑器图3-2菜单编辑器的输入3.2添加窗体及代码完成菜单的编辑工作之后,单击“确定按钮,系统将检查菜单的有效性,假设检查通过,即保存该菜单并返回到窗体上显示其主菜单项;否那么,系统将显示对话框提示相应错误信息。当需要放弃或取消本次编辑菜单的操作时,可以单击“取消命令按钮

45、。 调整好各控件的位置和属性,如表1所示,窗体执行界面如图3-3所示,测量工具箱中的导线平差界面如图3-4所示:表3-1 各窗体属性设置窗体名属性值FSPJCaption水平角计算FCBCaption测边交会FQFCaption前方交会FDXCaption单导线平差计算图3-3 窗体执行界面图3-2 导线平差由于菜单中包含很多程序,所以要添加很多窗体,其步骤为: 1首先并把菜单所在窗体的Name属性修改为“Frm1”;2点击“工程菜单的“添加窗体命令,选择“存在选项卡,找到本工程所在目录,会显示该目录下的所有窗体文件,选择任意一个想要添加的窗体,并修改其Name属性。3重复上一步,直到所有要添

46、加的窗体都添加到工程中为止。在命令按钮的Click事件过程中编写代码由于此代码较多且多雷同,故只选取前方交会、单导线平差、侧边交会、水平角计算和退出程序的代码,调用相应窗体,并隐藏主窗体:Private Sub cebian_Click()Frm1.Hide: FQF.ShowEnd SubPrivate Sub daoxian_Click()Frm1.Hide: FDX.ShowEnd SubPrivate Sub qianfang_Click()Frm1.Hide: FCB.ShowEnd SubPrivate Sub shuipingjiao_Click()Frm1.Hide: FSPJ

47、.ShowEnd SubPrivate Sub tuichu_Click()Frm1.Hide: FrmH.ShowEnd Sub主窗体的执行界面如上图3-3所示,单击任一程序可以调用相应的计算程序,点击“退出,结束程序运行。3.3 考前须知为了能在执行完相应的计算后回到主窗体,还需要将5个执行窗体上的“退出“按钮都修改成“返回,并将其Click事件中的代码“End修改为:Frm1.Show:Unload Me由于添加的各窗体在设计时都没有修改窗体的Name属性,因此所有窗体的默认名都是Form1,如果不把工程中已有的窗体名修改成其它名字,新的窗体添加时,会发生重名错误,因此在添加窗体时必须修

48、改好前面的窗体名,再添加新的窗体,添加完马上要修改窗体名,才能继续添加。第4章 VB测量程序设计本章将运用VB语言中的顺序结构和选择结构等比较简单的结构进行编程,并总结VB程序中数据的输入和输出方法等相关内容。本章将要介绍的测量程序有:三角形三点坐标求内角、前方交会、测边交会、水平角计算等4.1 三角形三点坐标求内角本程序是由三角形的三点坐标求三个内角值,其主要设计步骤为:先利用求距离的公式推算出三边长,然后利用余弦公式得出各角的余弦值,最后利用反余弦公式得出内角值。由于VB6.0编程中不能直接运用反余弦公式,所以本程序的关键步骤是将反余弦函数转化为反正切函数,只有这样才能运行。另外本程序还包

49、括了弧度化角度的子程序。其用到的主要公式为:求距离的公式:Sa = Sqr(Xc - Xb) 2 + (Yc - Yb) 2) Sb = Sqr(Xc - Xa) 2 + (Yc - Ya) 2) Sc = Sqr(Xa - Xb) 2 + (Ya - Yb) 2)求余弦值的公式:Cosa = (Sb 2 + Sc 2 - Sa 2) / (2 * Sb * Sc)Cosb = (Sa 2 + Sc 2 - Sb 2) / (2 * Sa * Sc)Cosc = (Sb 2 + Sa 2 - Sc 2) / (2 * Sb * Sa)反余弦函数转化为反正切函数:ArcCos x = Atn(S

50、qr(1 / x) 2 - 1)其程序执行界面如图4-1所示:图4-1 三角形三边求内角代码如下:Private Sub Command1_Click()Const pi = 3.14159265Dim Xa#, Ya#, Xb#, Yb#, Xc#, Yc#, #, #, #Dim Sa#, Sb#, Sc#, Cosa#, Cosb#, Cosc#Xa = Val(Text1.Text): Ya = Val(Text2.Text)Xb = Val(Text3.Text): Yb = Val(Text4.Text)Xc = Val(Text5.Text): Yc = Val(Text6.Text)Sa = Sqr(Xc - Xb) 2 + (Yc - Yb) 2) Sb = Sqr(Xc - Xa) 2 + (Yc - Ya) 2) Sc = Sqr(Xa - Xb) 2 + (Ya - Yb) 2) Cosa = (Sb 2 + Sc 2 - Sa 2) / (2 * Sb * Sc)Cosb = (Sa 2 + Sc 2 - Sb 2) / (2 * Sa * Sc)Cosc = (Sb 2 + Sa 2 - Sc 2) / (2 * Sb * Sa) = (ArcCos(Cosa) * 180 / pi

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!