VB实习报告

更新时间:2023-12-27 04:10:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

第一部分 实习目标和要求 …………………………………………..2

一 实习目标………………………………………2 二 实习要求………………………………………2 三、时间安排第二部分 第三部分 一、

………………………………………2

程序编写…………………………………3

实 习 1 ………………………………………………………..3 实 习 2……………………………………………………… ..3 实 习 3 ……………………………………………………….4 实 习 4……………………………………………………… .5 实 习 5……………………………………………………… .5 实 习 6………………………………………………………..6 实 习 7………………………………………………………..7 实 习 8………………………………………………………..8 实 习 9………………………………………………………..9. 实 习10……………………………………………………….9. 实 习 11………………………………………………………10 实 习 12………………………………………………………11 实 习 13………………………………………………………12 实 习 14………………………………………………………13 实 习 15…………………………………………………… …14 实 习 16……………………………………………………….16 实 习 17……………………………………………………….20

总 结…………………………………...22

……………………………………………………………..22

1

实习心得

第一部分 实习目标和要求

一、 实习目标

通过该课程设计的操作与实践,使学生在了解使用VB程序设计方法、掌握面向对象程序设计的相关理论知识和设计技巧的基础上,能够将理论教学中涉及到的知识点 贯穿起来,通过对各个实习任务的练习,应用VB实现测量数据的程序处理;从而提高面向对象程序设计的综合设计能力、应用VB来解决测量中的数据处理等问题的实践能力

二、 实习要求

1.认真努力作业。巩固所学VB语言基本知识。

2.鼓励多种形式的学习活动。如与同学展开讨论,请教老师,查阅图书资料,上网搜索信息等。

3.程序的功能要求。按个人能力可做适当的增减。有能力的,应实现更多的功能。

4.按时提交作业。课程设计作业包括全部VB软件工程文件和课程设计报告。 5.珍惜上机机会。上机期间不做与课程设计无关的事。 6.按照计划进行设计。

三、时间安排

周数 第 十五 周 时间 第一天 第二天 第三天 第四天 第五天 实习内容 实习任务的安排、组织学生、资料收集(实习1—2) 实习(实习3—实习6) 实习(实习7—实习11) 实习(实习12—实习16) 实习17 、成果整理 指导教师 赵淑湘 赵淑湘 赵淑湘 赵淑湘 赵淑湘

2

第二部分 程序编写

1、判断闰年:年号(intyear)能被4整除,但不能被100 整除;或能被400整除 程序代码:

'函数\的功能是判断年号intyear是否为闰年,rn—闰年 Function rn(intyear As Integer)

If intyear Mod 4 = 0 And intyear Mod 100 <> 0 Then rn = \闰年\

ElseIf intyear Mod 400 = 0 Then rn = \闰年\ Else rn = \End If

End Function 运行情况如图1:

图1 函数rn()的运行界面

2.一元二次议程ax2+bx+c=0存在实根的条件:a不等于0,且b2-4ac大于等于0。

程序代码:

'函数\的功能是判断一元二次方程ax2+bx+c=0是否实根; 'ryycfc --一元二次方程 Function ryycfc(a, b, c)

If a <> 0 And b ^ 2 - 4 * a * c >= 0 Then ryycfc = \有实根\ Else

ryycfc = \无实根\ End If

End Function 运行情况如图2:

3

图2 函数ryycfc()的运行界面

3.输入三个数a,b,c,输出三者之中最大数 程序编码:

'函数dxbj的功能是三个数的大小比较,输出最大的数,dxbj的意思是大小比较

Function dxbj(a, b, c) If a > b And b > c Then dxbj = a End If

If a > b And c > b Then dxbj = a End If

If b > a And a > c Then dxbj = b End If

If b > a And c > a Then dxbj = b End If

If c > b And b > a Then dxbj = c End If

If c > b And a > b Then dxbj = c End If

End Function

运行情况: 如图3

图3函数dxbj()的运行界面

4

4.公民缉拿所得税,假定按规定超过800元起征收2%,800——1600元之间征收3%,1600——5000元之间征收4%,5000——20000元之间征收6%,20000——200000元之间征收10%,超过200000征收25%。输入收入,计算出所得税。 程序编码:

'函数ns的功能是计算所得税,ns的意思是个人要缴纳的金额 Function ns(a) If a <= 800 Then ns = a * 0.02 End If

If a > 800 And a <= 1600 Then

ns = 800 * 0.02 + (a - 800) * 0.03 End If

If a > 1600 And a <= 5000 Then

ns = 800 * 0.02 + (a - 1600) * 0.04 + (a - 2400) * 0.03 End If

If a > 5000 And a <= 20000 Then

ns = 800 * 0.02 + (a - 1600) * 0.04 + (a - 2400) * 0.03 + (a - 5000) * 0.06 End If

If a > 20000 And a <= 200000 Then

ns = 800 * 0.02 + (a - 1600) * 0.04 + (a - 2400) * 0.03 + (a - 5000) * 0.06 + (a - 20000) * 0.1 End If

If a > 200000 Then

ns = 800 * 0.02 + (a - 1600) * 0.04 + (a - 2400) * 0.03 + (a - 5000) * 0.06 + (a - 20000) * 0.1 + (a - 200000) * 0.25 End If

End Function 运行情况:如图4

图4函数ns()的运行界面

5.小猴在一天摘了若干个桃子,当天吃掉一半多一个;第二天接着吃了剩下的桃子的一半多一个,以后每天都吃剩下的桃子的一半多一个,到第7天早上要吃时发现只剩下一个,问小猴那天共摘了多少个桃子? 程序编码:

5

'函数tz的功能是计算小猴那天共摘了多少个桃子 Function tz() m = 1

For i = 1 To 6 n = (m + 1) * 2 m = n Next i tz = n

End Function 运行情况:如图5

图5函数tz()的运行界面

6.已知XYZ+YZZ=532,其中X,Y和Z为0~9的数字,编程求出X、Y和Z。 程序编码:

'函数xyz的功能是满足式子XYZ+YZZ=532的成立 Function xyz() For x = 1 To 9 For y = 1 To 9 For z = 0 To 9

If (100 * x + 10 * y + z) + (100 * y + 10 * z + z) = 532 Then xyz = \ End If Next z Next y Next x

End Function 运行情况:如图6

6

图6函数xyz()的运行界面

7.某次大奖赛,有7个评委打分,满分为100分。对一名参赛者,输入7个评委的打分分数,去掉一个最高分、一个最低分后,求出平均分为该参赛者得分。编写程序输入评委的打分,输出参赛者得分。 程序编码:

'函数js_Click的功能是计算参赛者得分。 Option Base 1

Private Sub js_Click() Dim pf(7) As Single

Dim su, ma, mi, aver As Single Dim i As Integer pf(1) = Val(p1.Text) pf(2) = Val(p2.Text) pf(3) = Val(p3.Text) pf(4) = Val(p4.Text) pf(5) = Val(p5.Text) pf(6) = Val(p6.Text) pf(7) = Val(p7.Text) ma = pf(1) mi = pf(1) For i = 1 To 7 su = su + pf(i) If ma < pf(i) Then ma = pf(i) End If

If mi > pf(i) Then mi = pf(i) End If Next i

aver = (su - ma - mi) / 5 zd.Text = Trim(Str(mi)) pj.Text = Trim(Str(aver)) End Sub

Private Sub qc_Click() p1.Text = \ p2.Text = \ p3.Text = \

7

p4.Text = \ p5.Text = \ p6.Text = \ p7.Text = \ zg.Text = \ zd.Text = \ pj.Text = \End Sub

Private Sub tc_Click() Unload xsdf End Sub

运行情况:如图7

图7函数js_Click()的运行界面

8.求S=1-1/2+1/3-1/4+…+1/99-1/100的值。 程序编码:

'函数s的功能是计算S=1-1/2+1/3-1/4+…+1/99-1/100的值 Function s()

Dim n As Integer Dim su As Double su = 0

For n = 1 To 100

su = su + (-1) ^ (n + 1) / n Next n s = su End Function 运行情况:如图8

图8函数s()的运行界面

8

9.求所有的水仙花数。所谓水仙花数是指一个三位数,它的各位数字的立方和等于该数本身。例如:因为153=13+53+33,所以153是水仙花数。 程序代码:

'函数sxh的功能是统计水仙花数,sxh –水仙花。 Function sxh For X=0 to 9 For Y=0 to 9 For Z=0 to 9

If 100*X+10*Y+Z=X^3+Y^3+Z^3 then Sxh=sxh&” ”& 100*X+10*Y+Z End if Next Z Next Y Next X

End function 运行情况如图9

图9 函数sxh的运行界面 10、让用户输入5个数字,然后按照大小顺序输出。 程序编码: Function px() Const n = 5

Dim a(n) As Integer Dim t, j, i As Integer

a(1) = 25: a(2) = 8: a(3) = 9: a(4) = 20: a(5) = 6 For i = 1 To n

For j = i + 1 To n If a(i) < a(j) Then t = a(i) a(i) = a(j) a(j) = t End If Next j Next i

For i = 1 To n

9

px = a(1) & \ Next i End Function

运行情况如图10:

图10 函数px的运行界面

11、编一程序,先将10位评委对10位参赛歌手的评分(10分制)存入一个二维实型数组score(i,j)中,(其中i代表歌手,j代表评委),对每一位歌手,分别去掉它的最高分和一个最低分,计算并输出其余8个 分数的平均值。 程序编码: Option Base 1

Private Sub js_Click() Dim pf(10) As Single

Dim su, ma, mi, aver As Single Dim i As Integer pf(1) = Val(p1.Text) pf(2) = Val(p2.Text) pf(3) = Val(p3.Text) pf(4) = Val(p4.Text) pf(5) = Val(p5.Text) pf(6) = Val(p6.Text) pf(7) = Val(p7.Text) pf(8) = Val(p8.Text) pf(9) = Val(p9.Text) pf(10) = Val(p10.Text) ma = pf(1) mi = pf(1)

For i = 1 To 10 su = su + pf(i) If ma < pf(i) Then ma = pf(i) End If

If mi > pf(i) Then

10

mi = pf(i) End If Next i

aver = (su - ma - mi) / 8 zgf.Text = Trim(Str(ma)) zdf.Text = Trim(Str(mi)) df.Text = Trim(Str(aver)) End Sub

Private Sub qc_Click() p1.Text = \ p2.Text = \ p3.Text = \ p4.Text = \ p5.Text = \ p6.Text = \ p7.Text = \ p8.Text = \ p9.Text = \ p10.Text = \ zgf.Text = \ zdf.Text = \ df.Text = \End Sub

Private Sub tc_Click() Unload xsdf End Sub

运行情况如图11

图11 函数js_Click()的运行界面

12、随机产生10个1~100的正整数放入数组,显示产生的数,求最大值、最小值及平均值。 程序编码:

Function px()

11

Const n = 5

Dim a(n) As Integer Dim t, j, i As Integer

a(1) = 25: a(2) = 8: a(3) = 9: a(4) = 20: a(5) = 6 For i = 1 To n For j = i + 1 To n If a(i) < a(j) Then t = a(i) a(i) = a(j) a(j) = t End If Next j Next i

For i = 1 To n

px = a(1) & \ \ \ \ \ Next i

End Function

运行情况如图:

图12为函数px的运行界面 13、度转度分秒。 程序代码:

Option Explicit

Const pi As Double = 3.14159265358979

'dzdfm--含义为\度转度分秒\功能是将度转换为度分秒输出. Function dzdfm(jd As Double) As Variant Dim fh As Integer

Dim d, f, m As Variant fh = Sgn(jd) jd = Abs(jd) d = Int(jd)

f = Int((jd - d) * 60)

12

m = ((jd - d) * 60 - f) * 60

dzdfm = (d + f / 100 + m / 10000) * fh End Function

运行情况如图13所示

图13 dzdfm函数运行界面

14、度分秒转度。 程序代码:

Option Explicit

Const pi As Double = 3.14159265358979

'dfmzd--含义为\度分秒转度\功能是将度分秒转换为度输出. Function dfmzd(dfm As Double) As Double Dim fh As Integer Dim d As Integer Dim f As Integer Dim m As Double fh = Sgn(dfm) dfm = Abs(dfm) d = Int(dfm)

f = Int((dfm - d) * 100)

m = ((dfm - d) * 100 - f) * 100

dfmzd = (d + f / 60 + m / 3600) * fh End Function 运行情况如图14

图14 dfmzd函数运行界面

13

15、支导线计算。 程序代码:

Private Function zdxjs(dh As Range, gcj As Range, bc As Range, yzzb As Range, Optional zyj As Integer = 0, Optional jd As Integer = 3) As Variant Dim js(-1 To 50, 1 To 8) As Variant Dim yzb(1 To 4) As Variant Dim dhi As Variant Dim GCJi As Variant Dim bci As Variant Dim yzzbi As Variant Dim AH As Double Dim bcsum As Variant Dim gcjsum As Double Dim n As Integer Dim i As Integer js(-1, 1) = \点号\

js(-1, 2) = \观测角\° ' \ js(-1, 3) = \坐标方位角\° js(-1, 4) = \边长D\ js(-1, 5) = \ΔX\ js(-1, 6) = \ΔY\ js(-1, 7) = \ js(-1, 8) = \ js(0, 1) = 1 js(0, 2) = 2 js(0, 3) = 3 js(0, 4) = 4 js(0, 5) = 5 js(0, 6) = 6 js(0, 7) = 7 js(0, 8) = 8 i = 0

For Each dhi In dh i = i + 1

js(i, 1) = dhi.Value Next dhi n = i i = 1

For Each GCJi In gcj i = i + 1

js(i, 2) = GCJi.Value Next GCJi i = 1

For Each bci In bc

14

' \

i = i + 1

js(i, 4) = bci.Value Next bci i = 0

For Each yzzbi In yzzb i = i + 1

yzb(i) = yzzbi.Value Next yzzbi

js(1, 7) = yzb(1) js(1, 8) = yzb(2) js(2, 7) = yzb(3) js(2, 8) = yzb(4)

js(1, 3) = zbfsfwj(js(1, 7), js(1, 8), js(2, 7), js(2, 8)) For i = 2 To n - 1 AH = js(i - 1, 3)

js(i, 3) = FWJTS(AH, DFMZHD(js(i, 2)), zyj)r Next i

For i = 2 To n - 1

js(i, 5) = Round(js(i, 4) * Cos(js(i, 3)), jd) js(i, 6) = Round(js(i, 4) * Sin(js(i, 3)), jd) Next i

For i = 3 To n

js(i, 7) = js(i - 1, 7) + js(i - 1, 5) js(i, 8) = js(i - 1, 8) + js(i - 1, 6) Next i

For i = 2 To n - 1

js(i, 2) = DFMKG(js(i, 2)) js(i, 3) = HDZDFMKG(js(i, 3)) Next i

js(1, 3) = HDZDFMKG(js(1, 3)) For i = 2 To 6 js(n, i) = \ Next i

js(1, 2) = \ For i = 4 To 6 js(1, i) = \ Next i zdxjs = js End Function

运行情况如图15所示

15

图15 支导线函数运行界面 16、复合导线计算。 程序代码:

Private Function dxjs(dh As Range, gcj As Range, bc As Range, yzzb1 As Range, yzzb2 As Range, Optional zyj As Integer = 0, Optional jd As Integer = 3) As Variant

Dim js(-1 To 50, 1 To 11) As Variant Dim yzzbsz1(1 To 4) As Variant Dim yzzbsz2(1 To 4) As Variant Dim dhi As Variant Dim GCJi As Variant Dim bci As Variant Dim yzzb1i As Variant Dim yzzb2i As Variant Dim gcjsum As Variant Dim vbsum As Variant Dim vxsum As Double Dim vysum As Double Dim fb As Double Dim YZFWJ2 As Double Dim fx As Integer Dim fy As Integer Dim n As Integer Dim i As Integer js(-1, 1) = \点号\

js(-1, 2) = \观测角\° ' \ js(-1, 3) = \改正角\

16

js(-1, 4) = \坐标方位角\° ' \ js(-1, 5) = \边长D\ js(-1, 6) = \ΔX\ js(-1, 7) = \ js(-1, 8) = \ΔY\ js(-1, 9) = \ js(-1, 10) = \ js(-1, 11) = \ js(0, 1) = 1 js(0, 2) = 2 js(0, 3) = 3 js(0, 4) = 4 js(0, 5) = 5 js(0, 6) = 6 js(0, 7) = 7 js(0, 8) = 8 js(0, 9) = 9 js(0, 10) = 10 js(0, 11) = 11 i = 0

For Each dhi In dh i = i + 1

js(i, 1) = dhi.Value Next dhi n = i i = 1

For Each GCJi In gcj i = i + 1

js(i, 2) = GCJi.Value Next GCJi i = 1

For Each bci In bc i = i + 1

js(i, 5) = bci.Value Next bci i = 0

For Each yzzb1i In yzzb1 i = i + 1

yzzbsz1(i) = yzzb1i.Value Next yzzb1i zzb2i In yzzb2 i = i + 1

yzzbsz2(i) = yzzb2i.Value Next yzzb2i

17

js(1, 10) = yzzbsz1(1) js(1, 11) = yzzbsz1(2) js(2, 10) = yzzbsz1(3) js(2, 11) = yzzbsz1(4) js(n - 1, 10) = yzzbsz2(1) js(n - 1, 11) = yzzbsz2(2) js(n, 10) = yzzbsz2(3) js(n, 11) = yzzbsz2(4)

js(1, 4) = zbfsfwj(yzzbsz1(1), yzzbsz1(2), yzzbsz1(3), yzzbsz1(4)) js(n - 1, 4) = zbfsfwj(yzzbsz2(1), yzzbsz2(2), yzzbsz2(3), yzzbsz2(4))。 YZFWJ2 = js(n - 1, 4) gcjsum = 0

For i = 2 To n - 1 AH = js(i - 1, 4)

gcjsum = gcjsum + DFMZJD(js(i, 2))

js(i, 4) = FWJTS(AH, DFMZHD(js(i, 2)), zyj) Next i

fb = (js(n - 1, 4) - YZFWJ2) * 180 / PI * 3600 fb = Sgn(fb) * Round(Abs(fb), 0) js(n - 1, 4) = YZFWJ2 ' If zyj = 0 Then fb = -fb End If

js(n + 1, 3) = fb vbsum = 0

For i = 2 To n - 2

js(i, 3) = Sgn(fb) * Int(Abs(fb) / (n - 2)) vbsum = vbsum + js(i, 3) Next i

js(n - 1, 3) = fb - vbsum For i = 2 To n - 1 AH = js(i - 1, 4)

js(i, 4) = FWJTS(AH, DFMZHD(js(i, 2)) + js(i, 3) / (180 / PI * 3600), zyj) Next

vxsum = 0 vysum = 0 bcsum = 0

For i = 2 To n - 2

js(i, 6) = Round(js(i, 5) * Cos(js(i, 4)), jd) vxsum = vxsum + js(i, 6)

js(i, 8) = Round(js(i, 5) * Sin(js(i, 4)), jd) vysum = vysum + js(i, 8) bcsum = bcsum + js(i, 5)

18

Next

js(n + 1, 6) = vxsum js(n + 1, 8) = vysum

fx = Int((vxsum - (js(n - 1, 10) - js(2, 10))) * 1000) fy = Int((vysum - (js(n - 1, 11) - js(2, 11))) * 1000) vxsum = 0 vysum = 0

For i = 2 To n - 3

js(i, 7) = -1 * Sgn(fx) * Int(Abs(fx) * js(i, 5) / bcsum) vxsum = vxsum + js(i, 7)

js(i, 9) = -1 * Sgn(fy) * Int(Abs(fy) * js(i, 5) / bcsum) vysum = vysum + js(i, 9) Next i

js(n - 2, 7) = -fx - vxsum js(n - 2, 9) = -fy - vysum For i = 3 To n - 2

js(i, 10) = js(i - 1, 10) + js(i - 1, 6) + js(i - 1, 7) / 1000 js(i, 11) = js(i - 1, 11) + js(i - 1, 8) + js(i - 1, 9) / 1000 Next i

js(n + 1, 1) = \Σ\ js(n + 1, 5) = bcsum js(n + 1, 7) = -fx js(n + 1, 9) = -fy

js(n + 1, 2) = DZDFMKG(gcjsum) js(n + 1, 3) = fb For i = 2 To 9 js(n, i) = \ Next i

For i = 5 To 9

js(n - 1, i) = \ Next i

For i = 2 To 9 If i <> 4 Then js(1, i) = \ End If Next i

js(n + 1, 4) = \ js(n + 1, 10) = \ js(n + 1, 11) = \

js(n + 2, 1) = \辅肋\计算\

js(n + 2, 2) = \容≤±\+ Str$(Round(12 * Sqr(n - 1), 0)) + \+ \+ Space$(5) + \+ Str$(fy) + \+ Space(5) + Chr(10) + \+ Str$(Round(Sqr(fx ^ 2 + fy ^ 2), 1)) _

19

+ \2 + fy ^ 2) * 1000)) For i = 2 To n - 1

js(i, 2) = DFMKG(js(i, 2)) js(i, 4) = HDZDFMKG(js(i, 4)) Next i

js(1, 4) = HDZDFMKG(js(1, 4)) dxjs = js End Function

运行情况如图16所示

图 16 附合导线函数运行界面 17、取位函数。

程序编码:

Private Sub cmd_qw_Click()

Dim numysz, numqwrsz As Double Dim qwz As Integer Dim n, fh As Integer

numysz = Val(txt_ysz.Text) fh = Sgn(numysz) If numysz < 0 Then numysz = Abs(numysz) End If

n = Val(txt_qws)

If (Int(numysz * 10 ^ n) + 0.6) * 10 <= Int(numysz * 10 ^ (n + 1)) Then

numqwrsz = (Int(numysz * 10 ^ n) + 1) / 10 ^ n

ElseIf (Int(numysz * 10 ^ n) + 0.5) * 10 = Int(numysz * 10 ^ (n + 1)) Then

qwz = (Int(numysz * 10 ^ n) / 10 - Int(numysz * 10 ^ (n - 1))) * 10

20

本文来源:https://www.bwwdw.com/article/qo0x.html

Top