1、实习报告一、前言实习时间2012 年 12 月 2112 月 26 日实习地点杨凌职业技术学院南校区机房实习目的1、熟练掌握 VisuaBasic 语言的语法规则,VisualBasic 程序调试一般方法和技巧,并能利用 VisuaBasic 语言实现简单程序的设计。2、掌握基本的模块设计与实现数据文件读写、人机界面设计等;3、熟练运用测量平差及程序设计知识,编写测量程序;4、进一步巩固VB 程序设计课程中所学到的知识,熟练掌握并综合运用所学的编程技巧。实习要求保持学习态度端正,尽量完善作业达到高质量高数量的作业二、实习任务及内容1、进入主界面面应有登陆界面,类似于“学生成绩查询系统”界面。2
2、、设计并实现系统的主界面,界面的名称可以自己取,比如测量程序集等3、编辑如下列表内容:一级菜单 二级菜单水平角计算竖直角计算角度计算 角度与弧度转换坐标正算坐标反算坐标方位角推算极坐标放样数据计算坐标计算 多边形面积与周长计算距离相对误差计算距离计算 视距测量计算三、实习过程编辑主界面打开 VB 在 form1 中添加“用户名” 、 “密码” 、 “登陆” 、 “帮助”控件,以及修改对应的名称,并编辑如图所示的代码: 右单击窗体添加,并添加窗体;在 Visual Basic 中,是通过菜单编辑器建立和管理菜单的,其打开方式为:在工具菜单编辑器中;对 form2 进行一级、二级菜单编辑,并注意一
3、级菜单和二级菜单的区别三角高程计算高程计算 闭合水准路线计算导线计算 附合导线计算地形图分副与编号 地形图分副与编号帮助主窗体:接下来对各个二级菜单中的程序进行编辑:1、进行对闭合水准路线计算的界面设置如下点击“输入测站数及测站数”按钮输入基本信息,在点击计算,就和已在界面上显示出计算结果;分别双击各个按钮进行编程:2、对于地形图分幅与编号,围绕其核心公式:Lw=(Z-31)*6+(d-1) LLe=Lw+LBs=(H-1)*4+(4/B -c) BBn= Bs+B其代码为:3、角度弧度转换:输入角度的各项数值,点击“角度-弧度”就和显示出弧度值,同理也可实现弧度到角度的转换4、距离相对误差计
4、算:5、三角高程界面设置及代码:根据地形测量理论知识所知,在界面中需设置如图所示的控件,在输入已知数据框中输入数值,有核心计算公式 h=Dtan()+i-V 即可算出高差,所以在编写代码时围绕其核心公式进行编程:6、视距测量:视距测量分为平整场地和倾斜场地的视距,故有如下设计视距测量计算同三角高程测量很类似,在此不作过多解释其代码如下:7、角度计算:角度是空间点与点相互关系的基本量之一,也是测量的基本量之一。测量角度的目的是为了确定地面点的相互位置关系。角度测量包括两方面的内容:一是水平角测量,二是竖直角测量。水平角用于确定地面点的平面位置,竖直角用于确定地面点的高程,针对此进行如下设置:a、
5、水平角;b、竖直角:8、坐标计算地形平面控制测量要确定控制点的平面坐标,就必须建立一个平面坐标系统。测量上采用的平面坐标系统是经过高斯投影得到的高斯平面直角坐标系,其计算过程涉及到方位角推算、坐标正算、坐标反算等一些基本计算。a、坐标正算是由起始坐标、两点间的平距及坐标方位角计算得来:Xb=Xa+Sab*CosabYb=Ya+ Sab*Sosab由此即可对坐标正算进行编程:b、坐标反算是根据起点和终点的坐标,计算直线的水平距离和坐标方位角;Rab=arctan(|y|/|x|)Sab=(y)2+(x)2)坐标反算界面设置及编程:C、方位角推算即由已知方向和相关水平夹角推算直线的坐标方位角;如下
6、图,在工程中输入沿直线前进方向的起始方位角、以起始方向为基准,顺时针到待求直线的夹角,就可推算出待求直线的方位角:到此为止所需编辑的二级菜单下的工程全部结束,接下来将这些所有的二级下的工程关联在界面主窗体下,这样在主窗体中可实现对所有工程的集中应用。打开界面工程,在右边窗体中将所有的工程加载进去;然后在 form2 的代码编辑栏中对加载进来的工程进行关联:本次实习内容到此结束,希望在以后的学习生活中有一个好的收获!实习心得VB 测量程序设计实训是地信测绘专业必修的一门实践课程。本实训课程的任务是让学生在学习了Visual Basic 程序设计课程后,能够熟练掌握所学的知识,并能加以综合运用,解
7、决测绘专业实际问题的能力,避免重复性工作,提高工作效率,充分发挥计算机编程语言在测绘工作中的作用。为期一个星期的 VB 实习已经结束,在这些天的实习过程中,收获的确不小,熟练的掌握了 VB 并综合运用所学的编程技巧。时间匆匆转眼间,我们已经完成实习的任务。然而,这次实习让我学习了很多东西,也让我发现了自己的很多不足。通过本次实习,不仅使我在理论上对 VB 程序设计有了进一步认识,而且在实践能力上也得到了提高,真正的做到了学以致用,亲身感受到理论与实际的相结合,对我来说受益匪浅。我相信这次实训对于我以后的学习、工作都会有很大的帮助。这次实训的内容是测量基本用算程序的编写,根据地形测量的基本原理,
8、编写代码完成各个程序的计算。在编辑过程中,需要对程序进行多次调试,直至能正确显示结果为止;在实训过程中还必须做到以下几点:1、必须详细准确的做好用户需求分析,否则做出的东西可能与用户的要求相差甚远。本系统的用户需求分析就不太详细,只是凭自己的浅显知识来做的,因此有许多疏漏。2、虚心请教,是我此次顺利完成课题的关键,学习别人的先进技术和思想,补己之短,才能开发好软件。3、通过本次设计,端正了我的学习态度,提高了实践能力。使我认识到应该以严谨的科学态度勇于去实践和探索。通过这次实习,使我对 VB 有了更深刻的了解和认识,也是我对以后的 VB学习有了信息和兴趣。这次实习使我进一步了解对 vb 设计的
9、方法和一些小技巧,还有各种控件的使用与实现,都比以前操作更熟练了。但是我还需要继续努力,要更懂得把理论和实践联系起来,才能学到真正的学以致用这次 VB 程序系统设计既是一个学习的过程,也是一个实际工作的过程,它使我获得了一些开发系统的经验。但是,由于本人技术水平十分有限,而且在相对来说比较短的时间内不可能进行充分的准备和设计,因此感到有些遗憾和失望,在系统的功能和完善性方面,还存在着很大的不足,相信在以后的学习生活中,定能提高我的水平,为自己撑起一片天!系名:交通与测绘工程学院班级:地信 11001 班姓名:王莹周学好:11040630110附录:闭合水准路线代码:Dim a As Integ
10、er, b As DoubleDim n() As DoubleDim h() As DoubleDim h0() As DoubleDim h1() As DoublePrivate Sub Command1_Click()frontsize = 12b = InputBox(“请输入已知高程“)a = InputBox(“请输入测站数“)ReDim n(a, 2)For i = 1 To an(i, 2) = InputBox(“请输入观测高差“)Next iEnd SubPrivate Sub Command2_Click()ReDim h(a)ReDim h1(a)ReDim h0(a
11、)s = 0Print Tab(15); “观测高差“; Tab(25); “实测高差“; Tab(35); “改正数“; Tab(45); “改正高差“; Tab(55); “高程“For i = 1 To ah(i) = n(i, 2)s = s + h(i)Next if1 = Format(-(s / a), “000.0000“)f = (Int(f1 * 1000 + 0.5) / 1000For i = 1 To ah1(i) = h(i) + fh0(i) = b + h1(i)Print Tab(15); n(i, 2); Tab(25); h(i); Tab(35); f;
12、 Tab(45); h1(i); Tab(55); h0(i)Next iguancegaocha = 0: gaocha0 = 0: gaocha1 = 0PrintFor i = 1 To aguancegaocheng = guancegaocheng + n(i, 2)gaocha0 = gaocha0 + h(i)gaocha1 = gaocha1 + h1(i)Next iPrint “总和“; Tab(15); guancegaocheng; Tab(25); gaocha0; Tab(35); f; Tab(45); gaocha1End SubPrivate Sub Comm
13、and3_Click()ClsEnd SubPrivate Sub Command4_Click()Unload bhszlxjs26End Sub视距测量代码:Const pi As Double = 3.14159265358979Private Sub Command1_Click()Dim ss, xs As Doubless = Val(Text2)xs = Val(Text3)Text4 = Trim(Str(ss - xs)Text5 = Label23 * (ss - xs)End SubPrivate Sub Command2_Click()EndEnd SubPrivate
14、 Sub Command3_Click()Dim , a, b, c, m, n As Doublem = Val(Text7)n = Val(Text8)Text9 = Str(m - n)a = Val(txt_a)b = Val(txt_b)c = Val(txt_c) = (c / 3600 + b / 60 + a) * pi) / 180Text13 = (100 * (m - n) * Cos() * Cos()Text13 = Round(Text13, 3)End SubPrivate Sub Command4_Click()Unload jlcl23End SubPriva
15、te Sub Command5_Click()Text2 = “Text3 = “Text4 = “Text5 = “End SubPrivate Sub Command6_Click()Text6 = “Text7 = “Text8 = “Text9 = “Text13 = “txt_a = “txt_b = “txt_c = “End Sub角度弧度转换代码:Const Pi = 3.14159265358979Private Sub Command1_Click()Text1.Text = “Text2.Text = “Text3.Text = “Text4.Text = “End Su
16、bPrivate Sub Command2_Click()a = (Text1.Text)b = Text2.Textc = Text3.Textd = a + b / 60 + c / 3600d = d * Pi / 180Text4.Text = Format(d, “0.000000“)End SubPrivate Sub Command3_Click()d = Text4.Textd = d * 180 / Pia = Int(d)d = (d - a) * 60b = Int(d)d = (d - b) * 600c = Int(d) / 10#Text1.Text = aText
17、2.Text = bText3.Text = cEnd SubPrivate Sub Text1_Change()a = Val(Text1.Text)b = Val(Text2.Text)c = Val(Text3.Text)d = a + b / 60 + c / 3600d = d * Pi / 180Text4.Text = Format(d, “0.000000“)End SubPrivate Sub Text2_Change()a = Val(Text1.Text)b = Val(Text2.Text)c = Val(Text3.Text)d = a + b / 60 + c /
18、3600d = d * Pi / 180Text4.Text = Format(d, “0.000000“)End SubPrivate Sub Text3_Change()a = Val(Text1.Text)b = Val(Text2.Text)c = Val(Text3.Text)d = a + b / 60 + c / 3600d = d * Pi / 180Text4.Text = Format(d, “0.000000“)End SubPrivate Sub Command4_Click()Unload jdhdzh4End Sub坐标方位角推算代码:Private Sub Com
19、mand1_Click()Dim qd, qf, qm, ld, lf, lm, jg, zjz As Doubleqd = Val(Text1)qf = Val(Text2)qm = Val(Text3)ld = Val(Text4)lf = Val(Text5)lm = Val(Text6)If qd = 180 Thenjg = qd - 180Elsejg = qd + 180zjz = Round(Trim(Str(jg + qf / 60 + qm / 3600 + ld + lf / 60 + lm / 3600), 3)If zjz = 360 ThenText7.Text = zjz - 360ElseIf zjz 0 ThenText7.Text = zjz + 360End IfEnd IfEnd SubPrivate Sub Command2_Click()Unload zbfwjts20End SubPrivate Sub Command3_Click()Text1 = “Text2 = “Text3 = “Text4 = “Text5 = “Text6 = “Text7 = “End Sub