毕业设计(论文)基于VB6.0测量工具箱程序设计_第1页
毕业设计(论文)基于VB6.0测量工具箱程序设计_第2页
毕业设计(论文)基于VB6.0测量工具箱程序设计_第3页
毕业设计(论文)基于VB6.0测量工具箱程序设计_第4页
毕业设计(论文)基于VB6.0测量工具箱程序设计_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

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

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

8、exgrid控件等知识。2.1 vb6.0简介 vb是visual basic的简称,vb是从basic语言发展而来的,是windows环境下快速开发应用程序的可视化工具。其中,visual是指开发图形用户界面的方法,是指直观的编程方法。basic是指basic语言。之所以叫做visual basic,就是因为它使用了basic语言作为代码。作为程序设计语言,vb的主要特点为:(1)面向对象的可视化设计平台;(2)事件驱动的编程机制;(3)结构化的设计语言;(4)充分利用windows资源;(5)具有开放的数据库功能与网络支持。 1991年,微软公司为了简化windows应用程序的开发过程,推

9、出了visual basic 1.0版,它极大的改变了人们对windows的看法,以及使用windows的方式。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年发布的

10、visual studio 2005套件中的visual basic 2005。但是由于visual 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

11、vb6.0的优越性目前使用较多的编程语言有visual basic、visual foxpro等,它们各有特点,分别适合不同的领域。从学习角度上讲,vb的简单和可视化、面向对象等特点,也非常适合作为一门语言来学习。作为高质量的开发软件,vb6.0具有以下显著的优点:2.2.1 简单易学visual basic在继承了basic语言简单易用的基础上,改造了basic语言中复杂冗长且极易出错的“面条式”结构,而是以接近于人类自然语言和逻辑思维方式的结构化程序设计语言取代之,使其更加流畅、自然。用vb编写程序代码,如同用英文跟计算机交代工作任务一样。vb的编程器支持彩色代码,还可以自动进行语言检查,

12、同时具有强大且使用灵活的调试器和编译器,这些都使得vb程序设计从学习到使用都非常简单方便。2.2.2 面向对象的可视化程序设计面向对象的程序设计是当代程序设计的主流,既符合人们的思维和解决问题的逻辑,又是开发大型程序的必须。这里,“对象”是一个比较抽象的概念,可以理解成封装了一些代码和数据的集合,能够完成一定的动作和功能。vb中的对象主要分为窗体和控件两类。窗体是用户工作区,所有控件都在窗体中集成,从而构成应用程序的界面;控件是指“空的对象”或基本对象,是应用程序的图形用户界面的一个组件,对其属性可以进行不同的设置,从而构成不同的对象。vb这种可视化的用户界面设计功能,把程序设计人员从繁琐复杂

13、的界面设计中解脱出来。可视化编程环境的“所见即所得”功能,使界面设计如同积木游戏一样,从而使我们感觉到编程也是一种享受。2.2.3 事件驱动的编程机制事件驱动机制是vb区别于其他高级语言的显著特点。vb没有明显的主程序概念,程序员要做的就是面向不同的对象分别编写它们的事件过程。事件驱动应用程序的典型事件序列如下:启动应用程序,加载和显示窗体。窗体和控件接受事件。如果在相应的事件过程中存在代码,则执行代码。然后,应用程序等待下一次事件。2.2.4 高度的可扩充性vb为用户提供的扩充途径包括:支持第三方软件商为其开发的可视化控件对象;支持访问动态链接库dll;支持访问应用程序接口api。2.2.5

14、 广泛支持的二次开发能力vb与microsoft系列软件天然的结合,使得编程变得非常容易。在word文档上增加一些实现简单功能的按钮和滚动条;在excel表格的基础上进一步开发适合自己应用的表格程序等,都非常方便快捷。而且众多测绘专业软件都支持vba,使得vb也成为专业人士进行二次开发的很好选择。例如autocad可以用vba实现有关的界面和功能。2.2.6 强大的数据库访问能力vb中提供了强大的数据库管理和存取操作能力。利用数据控件和数据库管理窗口,能直接编辑和访问access,foxpro等,通过访问或建立连接的方式使用并操作后台大型网络数据库,如sql server,oracle等 。v

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

16、环语句和条件型循环语句。for循环是计数型循环语句,而while循环和do循环语句属于条件型循环语句。2.3.1.1 for循环for循环用于实现循环次数已知的循环结构,程序按照此种结构中指明的循环次数来执行循环体部分。for循环格式如下:for循环变量=初始值to终值step步长 循环体 exit for 循环体next循环变量2.3.1.2 do循环和while循环do循环和while循环都属于条件循环结构,它们都是通过判断一个条件的成立与否来决定是执行循环体语句还是结束循环。它们与for循环最大的差别在于:for循环用于循环次数已知的情况,执行一定次数后即可结束循环;而do循环和whil

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

18、体 loopwhile和until条件(2) 格式二dowhile和until条件 语句体 满足某条件时exit do语句体 loop2.3.1.3 循环的嵌套在一个循环体内又包含了一个完整循环的循环结构称为循环的嵌套。循环的嵌套对for循环、do循环和while循环都适用。对于循环嵌套,要注意以下两点:(1) 内循环变量与外循环变量不能同名;(2) 外循环必须包含内循环,不能交叉。如: for ii=1 to 100for jj=1 to 50 next jjnext ii2.3.2 数组在实际应用中经常要处理同一性质的成批数据,有效的办法是通过数组来存取。而数组与循环相结合编写出的程序就有

19、了无穷的威力。 例1:求15个观测值(等权)的均值和方差。若使用简单变量来存储15个观测值,则需要15个变量v1,v2,v15,如果各观测值不等权,还需另外定义相应的15个变量存储15个观测对应的权p1,p2,p15。这样写出的程序会十分复杂,而且只能处理15个观测值的情况,当观测值数增加或减少时,则需修改程序,十分不方便。若观测值数增加到几百个甚至上万个时,这样编写代码是难以忍受的。当使用数组时,不但可扩展性好,而且结合循环,只要很少的代码就可以实现这一工作。其实现代码如下: dim v(1 to 15) as double dim aver#,squa#,i% aver=0: squa=0

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

21、,其中元素的类型可以为各种基本类型的混合。一个数组可以是一维的,也可以是多维的,vb中最多允许数组有60维。一般可以将数组分成两类,一类是固定数组,该数组的大小始终保持不变;另一类是动态数组,该数组的大小在程序运行时可以改变。2.3.2.1 固定数组固定数组分为一维数组和多维数组。声明一个固定数组时,必须给定数组使用的有效范围。以一维数组为例,声明时在数组名后跟一个用括号括起来的上界(默认下界为0)。声明格式如下:dim 数组名(下标)as类型2.3.2.2 动态数组事先不知道数组的大小时,可以先声明该数组为动态数组,等需要时再用redim语句指定数组的大小。声明动态数组时不需要给出数组的长度

22、,只需保留一个空维数表。创建动态数组的步骤为:(1)声明数组为动态数组,只需给数组附以一个空维数表。例如,声明一个整型动态数组matrix,可以使用如下语句:dim matrix() as integer(2)在需要指定数组大小时,再使用redim语句分配数组中实际元素的个数。redim 数组名(数组长度-1),例如,给上例的matrix数组指定元素个数为9时,可以使用如下语句:redim matrix(8) as integer。2.3.3 过程将程序分割成较小的逻辑部件可以简化程序设计任务,这些部件称为过程。vb的过程根据是否有返回值分为子过程和函数过程两类。2.3.3.1 子过程子过程(

23、sub过程)是在响应事件时执行的代码块。将模块中的代码分成子过程后,在应用程序中查找和修改代码更容易。子过程的定义方法如下:private|publicstaticsub过程(参数表) 语句end sub每次调用过程都会执行sub 和end sub之间的语句,可以将子过程放入标准模块、类模块和窗体模块中。按照默认规定,所有模块中的子过程为public,这意味着在应用程序中可随处调用它们。2.3.3.2 函数过程vb除了内部函数,如sqr()、sin()和chr()等,还可用function语句编写自己的函数(function)过程。函数过程的语法是:private|publicstaticfu

24、nction函数过程名(参数表) as类型 语句end sub与sub过程一样,function过程也是一个独立的过程,可读取参数、执行一系列语句并改变其参数的值。与sub过程不同的是,function过程可返回一个值给调用的过程。2.3.4 批量数据控件vb中可以输入和显示批量数据的控件很多,如伸缩格网(flexgrid)、数据格网(datagrid)、数据列表框(datalistbox)、数据组合框(datacombobox)等。下面详细介绍flexgrid控件。flexgrid控件是vb提供的一个输入和显示批量数据的控件。与列表框和组合框不同的是,它不但可以输入和显示单列数据,还可以输入

25、和显示多列(二维表格)数据,并且可以显示行号和列标头,非常适合测量程序中批量数据的输入和显示。当然,flexgrid控件本身并不能进行数据的输入和显示处理,它只是提供一个界面和相应的属性、事件和方法,具体要实现什么样的功能,需要使用者自行编程实现。 flexgrid控件是activex控件,需要通过“工程-部件”命令选择microsoft flexgrid control6.0选项,将flexgrid控件添加到工具箱。添加到窗体的flexgrid控件如图2-1所示。新添加的flexgrid控件默认名为msflexgrid1,默认有两行两列,共4个网格。其中第一行为列表头,第一列为行号栏,它们与

26、其他网格的区别只是外观不同。flexgrid的常见属性有cols(列)、rows(行)、col(当前操作网格列号)row(当前操作网格行号)、text(存取当前操作网格的内容)、mosepointer、(设置鼠标在控件上移动时的形状)。在设计状态,右键单击窗体上的flexgrid控件,选择“属性”菜单项,弹出属性页对话框,如图2-2所示。图2-1 flexgrid控件图2-2 flexgrid控件的属性页下面举例说明flexgrid控件的使用:使用flexgrid控件输入一个33矩阵,实现矩阵中所有元素的值增倍或减半。新建一个工程,在窗体上添加一个flexgrid控件和2个命令按钮,在属性页中

27、将flexgrid控件设置成4行4列,修改命令按钮的caption属性和name属性并将flexgrid控件的mosepointer属性设置为3-flexbeam。程序设计界面如图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: .t

28、ext = i next iend withend sub上述代码中,使用了with语句来简化代码。接着来实现flexgrid控件的数据输入操作。flexgrid控件自身并不能接受键盘输入数据,需要编程实现,并且要先判断输入的是不是数字字符。keypress事件具体代码如下:private sub msflexgrid1_keypress(keyascii as integer)with msflexgrid1 if isnumeric(chr(keyascii) then .text = .text & chr(keyascii) elseif keyascii = 8 then退格符的as

29、cii码值是8 if len(.text) 0 then .text = left(.text, len(.text) - 1) end if end withend sub由于按下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增倍和减半功能具体实现代码如下:priv

30、ate sub command1_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 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

31、) / 2 next j next iend withend sub程序执行时的界面如图2-4所示:图2-4 flexgrid控件程序执行界面2.4 测量常用基本程序汇编本节主要介绍使用vb6.0编写基本测量程序的过程,包括vb语言基础和测量基本知识。综合运用vb和测量的基本知识编写出真正适合自己的应用程序。本节的主要内容为:四舍六入,奇进偶不进、计算两点间的距离和坐标方位角、角度与弧度的换算、坐标正反算等。2.4.1 四舍六入,奇进偶不进 在测量中数值的取位遵循“四舍六入、奇进偶不进”。如果小数点后保留3位,即要求对千分位即取位至毫米上的数值进行“四舍六入、奇进偶不进”的判断。分以下三种情况

32、:(1)千分位后面的数值小于等于四,如2.3421,此时直接舍弃小数点后第四位以后的数值;(2)千分位后面的数值大于等于六,如2.3427,此时小数点后第三位直接进1;(3)小数点后面第四位是数值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 = mi

33、d(b, 4, 1) 得到小数点后第三位select case ccase is 5if c = 6 thentext2.text = format(a, 0.000)elseif c = 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)数

34、学模型由两个已知点求这两点间的距离和坐标方位角是测量学中经常用到的计算,在其它的测量综合编程中,计算两点间距离和坐标方位角是其重要的基础。本程序可用于根据两已知点a、b坐标计算a、b两点间的距离和坐标方位角,在计算坐标方位角时先计算出象限角,然后通过象限角与方位角的关系转化为方位角。主要计算公式为: 求两点距离:s = sqr(x 2 + y 2) 求坐标方位角: = atn(y / x)本程序主要应用到vb中乘方运算符()和平方根函数sqr()。(2)其程序执行界面如图2-6所示:图2-6 计算两点间距离和坐标方位角(3)主要代码为:private sub command1_click()d

35、im xa#, ya#, xb#, yb#, x#, y#, tana#, ab#, du%, fen%, miao%, s#const pi = 3.14159265358979xa = val(text1.text): 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)text

36、5.text = sif abs(x) 0 then ab = 90 else ab = 270 end ifelse tana = y / x ab = atn(tana) ab = ab * 180 / pi if 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 = (dufenm

37、iao - du) * 100fen = fix(dufenmiao)miao = (dufenmiao - fen) * 100jiaodu = du + fen / 60 + miao / 3600dutohu = jiaodu * pi / 180text2.text = format(dutohu, 0.000000)end sub2.4.4 弧度化角度本程序是将弧度转化为“度”的形式,以利于显示输出。用到的主要公式为:弧度(rad)度(deg):度(deg)度、分、秒:fix()函数的使用。其程序执行界面如图2-8所示:图2-8 弧度化角度其主要代码为:const pi = 3.14

38、159265private sub command1_click()dim du#, fen#, miao#hu = val(text1.text)hu = hu * 180 / pi: du = fix(hu)hu = (hu - du) * 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 + mi

39、ao / 10000if hutodu ab (根据x,y的符号判断rab与ab的关系,从而得到方位角)rab称为象限角,求方位角ab时,有如下规律:x y 方位角 rab pirab pirab 2*pirab同时还要注意落到坐标轴上的情况,如x、y其中一个或两个等于零。在本程序的编写中要注意反正切函数atn()和取绝对值函数abs()的运用。其程序执行界面如图2-10所示:图2-10 坐标反算其主要代码为:const pi = 3.14159265358979private sub command1_click()dim xa!, ya!, xb!, yb!, jl!, r1#, r2#,

40、 dfm!, ds%, fs%, ms%const pi = 3.1415926xa = val(text1.text)ya = val(text2.text)xb = val(text4.text)yb = val(text3.text)jl = 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 = pi

41、elseif (xb - xa) 0.000001 and yb = ya thenr2 = (3 / 2) * piend ifend ifend ifend ifif xb xa and yb ya thenr1 = atn(abs(xb - 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 - x

42、a) 0.000001 thenr2 = 2 * pi - r1end ifend ifend ifend ifend ifdfm = r2 * 180 / pids = fix(dfm)fs = fix(dfm - ds) * 60)ms = fix(dfm - ds) * 60 - fs) * 60)text5.text = format(jl, 0.000)text6.text = ds & 度 & fs & 分 & ms & 秒end sub第3章 测量工具箱的创建思路设计测量工具箱是本次毕业设计的课题,在测量中,对数据处理时有时候要用到很多的程序。测量工具箱就是把编写的测量程序进行一

43、下汇总,是对毕业设计成果的一种汇总,并且方便对所编的程序进行集中管理,同时运用起来也方便,所以要构成测量程序集。本论文设计中的测量工具箱采用“菜单”的形式进行编辑,菜单是应用程序的组成部分之一,它一般由菜单栏和下拉菜单组成,如vb系统集成环境中的菜单栏。从结构上看,菜单可分成若干级,第一级是菜单栏,它包括若干菜单项。菜单项为横向排列,每一菜单项都可对应一个下拉式菜单,子菜单中的选项竖向排列,同时子菜单中的每一项又可以有自己的下拉菜单。本论文设计中把菜单分成两级,把所编写的测量程序纳入其中。3.1 界面分析及设计步骤将主窗体的caption属性设置为“测量程序集”,并适当调整窗体的大小。其设计步

44、骤为:(1) 建立菜单,启动vb6.0,进入编程界面,建立菜单的过程是先列出菜单的组成,然后在“菜单编辑器”窗口按照菜单组成进行设计,设计完后,再把各菜单项与代码连接起来;(2)打开“菜单编辑器”,点击“工具”菜单的“菜单编辑器”命令,窗体上显示出“菜单编辑器”,如图3-1所示;(3)输入并把代码连接到菜单上,在“标题栏”中输入“基本程序”,在“名称”栏中输入“jiben”字样,然后点击“下一个”,再点击“”符号,即编辑二级标题,在“标题栏”和 “名称”栏中分别输入相应的程序名称,此时可以设置快捷键,最后点“确定”,显示出如图3-2所示的界面;(4)重复上一步,直到所有要添加的程序都输入完为止

45、。图3-1 菜单编辑器图3-2菜单编辑器的输入3.2添加窗体及代码完成菜单的编辑工作之后,单击“确定”按钮,系统将检查菜单的有效性,若检查通过,即保存该菜单并返回到窗体上显示其主菜单项;否则,系统将显示对话框提示相应错误信息。当需要放弃或取消本次编辑菜单的操作时,可以单击“取消”命令按钮。 调整好各控件的位置和属性,如表1所示,窗体执行界面如图3-3所示,测量工具箱中的导线平差界面如图3-4所示:表3-1 各窗体属性设置窗体名属性值fspjcaption水平角计算fcbcaption测边交会fqfcaption前方交会fdxcaption单导线平差计算图3-3 窗体执行界面图3-2 导线平差由

46、于菜单中包含很多程序,所以要添加很多窗体,其步骤为: (1)首先并把菜单所在窗体的name属性修改为“frm1”;(2)点击“工程”菜单的“添加窗体”命令,选择“存在”选项卡,找到本工程所在目录,会显示该目录下的所有窗体文件,选择任意一个想要添加的窗体,并修改其name属性。(3)重复上一步,直到所有要添加的窗体都添加到工程中为止。在命令按钮的click事件过程中编写代码(由于此代码较多且多雷同,故只选取前方交会、单导线平差、侧边交会、水平角计算和退出程序的代码),调用相应窗体,并隐藏主窗体:private sub cebian_click()frm1.hide: fqf.showend subprivate sub daoxian_click()frm1.hide: fdx.showend subprivate sub qianfa

温馨提示

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

评论

0/150

提交评论