VB实验教案

更新时间:2024-04-08 02:35:01 阅读量: 综合文库 文档下载

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

实验一 简单Visual Basic程序设计

一、实验目的

1. 熟悉Visual Basic开发环境以及各种窗口的使用; 2. 掌握创建一个简单的Visual Basic工程的全过程;

二.实验项目

【项目一】创建一个类似于QQ登陆界面的应用程序。

图 1-1 创建对象

2. 属性设置

对象的相关属性设置见表1-1。

表1-1 登录界面的属性设置 对象 Form1 Label1 Label2 Text1 Text2 Command1 Command2 属性 Caption Caption Caption Text Text Passworchar Caption Caption 属性值 登陆 QQ号 密码 * 确定 取消 3.代码编写 Private Sub Command2_Click() End End Sub

4.保存工程 5.调试运行

【项目二】编程实现内容互换的小游戏。 1.创建对象

根据案例要求在窗体中添加两个标签,两个命令按钮,并排列好位置。界面如图1-3所

示。

图1-3 内容互换程序对象

2.属性设置

本题的属性设置见表1-2。

表1-2 各控件的属性设置 对象 Form1 Label1 属性 Caption Caption Borderstyle Autosize Caption Label2 Borderstyle Autosize Command1 Command2 Name Caption Name Caption 属性值 交换小游戏 欢迎您进入 1 True VB 6.0 1 True cmdSwap 交换 cmdExit 退出 3.代码编写 双击窗体,在弹出的代码窗口中,按照【案例二】中给的方法,编写如下代码: Private Sub cmdExit_Click() End End Sub

Private Sub cmdSwap_Click() Dim s As String s = Label1.Caption Label1.Caption = Label2.Caption Label2.Caption = s End Sub 4.保存

5.调试运行

实验二 选择结构程序设计

一、实验目的

1.掌握单分支语句的使用; 2.掌握多分支语句的使用;

3.熟悉采用选择结构解决实际问题。 二、实验项目

【项目一】输入三角形的三边a,b,c的值,判断它们能否构成一个三角形。如果能,则计算三角形的面积,否则给出错误信息。

界面设计如下

属性设置

对象 Form1 Text1 Text2 Text3 Text4 Command1 Command2 command3 程序代码如下

Private Sub Command1_Click() Dim a As Single Dim b As Single Dim c As Single

Dim s As Single Dim l As Single

属性 Caption Text Text Text Text Caption Caption Caption 设定值 项目3-1 计算面积 重输 退出 a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text)

If a <= 0 Or b <= 0 Or c <= 0 Then Text4.Text = \边长必须为正数\

If a + b > c And a + c > b And b + c > a Then l = (a + b + c) / 2

s = Sqr(l * (l - a) * (l - b) * (l - c)) Text4.Text = \面积为:\Else

Text4.Text = \不能构成三角形\End If End Sub

Private Sub Command2_Click() Text1.Text = \Text2.Text = \Text3.Text = \Text4.Text = \End Sub

Private Sub Command3_Click() End End Sub

调试运行

(1)单击“重输”命令按钮,在txtA,txtB,txtC中分别输入-1,2,1,单击“计算面积”按钮,txt1中显示“边长必须为正数”。

(2)在txtA,txtB,txtC中分别输入3,4,5,单击“计算面积”按钮,txt1中显示“面积为:6”;

(3)单击“重输”命令按钮,在txtA,txtB,txtC中分别输入1,1,4,单击“计算面积”按钮, txt1中显示“不能构成三角形”;

【项目三】计算个人所得税。

依照《中华人民共和国个人所得税法》,工资、薪金所得按以下步骤计算缴纳个人所得税:每月取得工资收入后,先减去个人承担的基本养老保险金、医疗保险金、失业保险金,以及按省级政府规定标准缴纳的住房公积金,再减去个人所得税起征点(如2012年起征点为:3500元),为应纳税所得额,按5%至45%的分级超额累进税率计算缴纳个人所得税(如表所示)。计算公式是:

应纳个人所得税税额=应纳税所得额×适用税率-速算扣除数

例如:某公司职员在扣除三险一金后的月收入为10000元,位于上表中的第3档。对应的税率为20%,速算扣除数为525,则应纳税额为(10000元-个税起征点3500元)=6500元,个税=6500×20%-525元=775元。

请设计一个简单的应用程序,输入职工扣除基本养老保险金等费用之后的月工资收入,

自动计算输出当月应缴纳个人所得税总额。参考界面如图3-2-5所示。

级数 1 2 3 4 5 6 7 扣除三险一金后月收入(元) <4500元 4500元-7500元 7500元-12000元 12000元-38000元 38000元-58000元 58000元-83000元 >83000元 税率(%) 5 10 20 25 30 35 45 速算扣除数(元) 0 75 525 975 2725 5475 13475 具体实现步骤如下: 1.界面设计

根据题目要求在窗体中添加两个标签,两个文本框和一个命令按钮,并排列好位置。界面如图3-2-5所示。

图3-2-5个人所税计算效果图

2.属性设置

本题的属性设置如表3-2-3所示。

表3-2-3各控件的属性设置 对象 Form1 Label1 Label2 Text1 Text2 属性 Caption Caption Caption Text Text 设定值 项目3-3 请输入月收入: 个人所得税为: 计算所得税

Command1 Caption

3.代码编写

编写Command1的单击事件过程。 Private Sub Command1_Click() Dim x As Single

x = Val(Text1.Text) - 3500 Select Case Val(Text1.Text) Case Is <= 3500 Text2.Text = 0 Case Is < 4500

Text2.Text = x * 0.05 Case Is < 7500

Text2.Text = x * 0.1 - 75 Case Is < 12000

Text2.Text = x * 0.2 - 525 Case Is < 38000

Text2.Text = x * 0.25 - 975 Case Is < 58000

Text2.Text = x * 0.3 - 2725 Case Is < 8300

Text2.Text = x * 0.35 - 5475 Case Else

Text2.Text = x * 0.45 - 13475 End Select End Sub 4.调试运行

单击工具栏中的“启动”按钮,在文本框一中输入个人月收入“10000”,单击“计算所得税”,

5.保存

以“项目3-3”为名称分别保存窗体文件和工程文件。

实验三 循环结构程序设计

一、实验目的

1.掌握For语句的使用;

2.掌握While…Wend语句的使用;

3.掌握Do{While|Until}…Loop与Do…Loop{ While|Until }两种结构的使用; 4.掌握如何设置循环条件,防止死循环。 二、实验项目 2.1 循环结构1

1.设计程序计算sum=1+2+3+…..+n(n由用户输入)---理论课本P102 4-12 界面设计如下:

程序代码如下:

Private Sub Command1_Click() Dim sum As Integer Dim I As Integer Dim N As Integer

N = Val(InputBox(\sum = 0

For I = 1 To N sum = sum + I Next I Print sum

End Sub

思考:如何将此代码中for语句改成while语句 结果: while I<=N sum=sum+I wend

2.计算0-100之间所有偶数的和,用while….Wend循环实现----理论课本P104 4-15

对象界面设计如下:

程序代码如下:

Private Sub Command1_Click() Dim sum As Integer Dim i As Integer sum = 0 i = 2

While i <= 100 sum = sum + i i = i + 2 Wend Print sum End Sub 运行结果如下:

思考:如何将while…wend改写为for语句? 结果:

程序代码如下:

Private Sub Command1_Click() Dim sum As Integer Dim i As Integer sum = 0

For i=2 To 100 Step 2 sum = sum + i Next i Print sum End Sub

3.改写代码,计算sum=1+2+3+…..+n(n由用户输入),假如对象界面如此设计,代码该如何改写?

程序代码如下:

Private Sub Command1_Click() Dim sum As Integer Dim I As Integer Dim N As Integer N = Val(Text1.Text) I=1 sum = 0 While I <= N

sum = sum + I I = I + 1 Wend

Text2.Text = sum End Sub

运行结果如下:

4. 编写程序计算:假设某乡镇企业现有产值400000元,如果保持年增长率为11%,试问多少年后该企业的产值可以翻一番。 设计界面如下

程序代码如下:

Private Sub Command1_Click() Dim a As Double Dim y As Integer a = Val(Text1.Text)

Do Until a >= Val(Text1.Text) * 2 a = a + a * Val(Text2.Text) y = y + 1 Loop

Label3.Caption = \产值翻番需要\年\End Sub

Private Sub Command2_Click() End End Sub

运行结果如下:

思考:如何用while…wend改写代码? 结果:

Private Sub Command1_Click() Dim a As Double Dim y As Integer a = Val(Text1.Text) y = 0

While a <= Val(Text1.Text) * 2 a = a + a * Val(Text2.Text) y = y + 1 Wend

Label3.Caption = \产值翻番需要\年\End Sub

Private Sub Command2_Click() End End Sub

5. 在窗体上输出如图3-3-3所示图形。

程序代码如下:

Private Sub Form_Click() Dim a As String For i = 1 To 8

a = String(i * 2 - 1, \

Print Tab(10); Space(8 - i); a; Spc(5); a = String((9 - i) * 2 - 1, \Print a Next i End Sub

或者Print Tab(10); Space(8 - i); a; Spc(5); String((9 - i) * 2 - 1, \

2.1 循环结构2

1.计算1-100之间所有自然数之和,比较Do循环的几种形式 设计界面如下:

程序代码如下:

1.Do While...loop循环 Dim n As Integer Dim sum As Integer n = 1 sum = 0

Do While n <= 100 sum = sum + n n = n + 1 Loop

Print \

2.Do Until...loop循环

Dim n As Integer Dim sum As Integer n = 1 sum = 0

Do Until n > 100 sum = sum + n n = n + 1

Loop

Print \

3.Do … loop While循环

Dim n As Integer Dim sum As Integer n = 1 sum = 0 Do

sum = sum + n n = n + 1

Loop While n <= 100 Print \

4.Do … loop until循环

Dim n As Integer Dim sum As Integer n = 1 sum = 0 Do

sum = sum + n n = n + 1 Loop Until n > 100 Print \

2.求两个整数的最大公约数、最小公倍数 分析:最大公约数算法使用“辗转相除法”,最小公倍数=(m*n)/最大公约数 程序代码如下:

Private Sub Form_Click()

Dim m As Integer Dim n As Integer Dim mn As Integer Dim r As Integer Dim t As Integer

m = Val(InputBox(\n = Val(InputBox(\mn = m * n

If m < n Then t = m

m = n n = t End If

r = m Mod n

Do While r <> 0 m = n n = r

r = m Mod n Loop

Print \最大公约数=\

Print \最小公倍数=\

End Sub

实验四 常用控件

一、实验目的

1.熟练掌握在窗体上建立控件的方法及编写事件过程的程序设计 2.掌握单选按钮、复选框、框架控件的常用属性、事件和方法; 3.掌握列表框、组合框的常用属性、事件和方法; 4.掌握滚动条、计时器的使用;

5.掌握基于图形界面的应用程序方法和图形控件及图形方法的使用; 二、实验项目

【项目一】框架应用程序。要求:标签内的文本字号有10号或20号两种选择,字体有宋体或黑体两种选择,且可以对标签文字自由进行加粗、倾斜、前景色和背景色的同时设置或设置部分效果。前景色和背景色的颜色随机选择。

界面设计如下

代码设计如下

Private Sub Check1_Click() If Check1.Value = 1 Then

Label1.FontItalic = True Else

Label1.FontItalic = False End If End Sub

Private Sub Check2_Click() If Check2.Value = 1 Then Label1.FontBold = True Else

Label1.FontBold = False End If End Sub

Private Sub Check3_Click() Dim x As Integer x = Int(16 * Rnd)

If Check3.Value = 1 Then

Label1.ForeColor = QBColor(x) Else

Label1.ForeColor = QBColor(0) End If End Sub

Private Sub Check4_Click() Dim x As Integer x = Int(16 * Rnd)

If Check4.Value = 1 Then

Label1.BackColor = QBColor(x) Else

Label1.BackColor = &H8000000F End If End Sub

Private Sub Option1_Click() Label1.FontSize = 10 End Sub

Private Sub Option2_Click() Label1.FontSize = 20 End Sub

Private Sub Option3_Click() Label1.FontName = \宋体\

End Sub

Private Sub Option4_Click() Label1.FontName = \黑体\End Sub 运行结果如下

【项目二】设计一个组合框和一个列表框的应用程序。要求:当程序运行后,先在组

合框中列出1至20之间能被3整除的整数作为组合框控件的列表项。若双击组合框中的某列表项后,则将该选项自动添加到列表框中显示,且同时删除掉组合框中的该项;若单击列表框中的某列表项后,则也将该选项自动追加到组合框中显示,同时也删除掉列表框中的该项。

项目分析:这是一个组合框和列表框属性、方法正确理解和应用的案例,使用它们的AddItem方法添加列表项,RemoveItem方法删除列表项。 界面设计如下:

代码设计如下:

Private Sub Form_Load() Dim m As Integer

For m = 1 To 20

If m Mod 3 = 0 Then Combo1.AddItem m End If Next m End Sub

Private Sub Combo1_DblClick() List1.AddItem Combo1.Text

Combo1.RemoveItem Combo1.ListIndex End Sub

Private Sub List1_Click() Dim i As Integer i = List1.ListIndex If i <> -1 Then

Combo1.AddItem List1.List(i) List1.RemoveItem i End If End Sub

【项目三】设计一个加载图片程序。分别使用一个图像框和一个图片框加载同一副图

片,当使用命令按钮改变图像框的Stretch属性值和图片框的AutoSize属性值后,观察图片的效果。

分析:无论是图像框(Image)还是图片框(Picture)都是使用该控件Picture属性加载图片。该属性既可以在属性窗口中直接设置,也可以在程序运行中使用LoadPicture函数加载。

本例使用LoadPicture函数加载。

界面设计如下:

属性设置如下:

默认对象名 Form1 Image1 Picture1 Command1 属性 Name Caption Name Stretch Name AutoSize Name 设定值 frmForm 项目4-3 Img1 True P1 False Cmd1 Caption 属性设置 代码设计如下:

Private Sub Form_Load() Img1.Width = 3200 Img1.Height = 2800 P1.Width = 3200 P1.Height = 2800

Img1.Picture = LoadPicture(\常用控件\\美女.jpg\ P1.Picture = LoadPicture(\常用控件\\美女.jpg\End Sub

Private Sub Cmd1_Click() If Img1.Stretch = False Then Img1.Stretch = True Img1.Width = 3200 Img1.Height = 2800 Else

Img1.Stretch = False End If

If P1.AutoSize = False Then P1.AutoSize = True Else

P1.AutoSize = False P1.Width = 3200 P1.Height = 2800 End If

If Cmd1.Caption = \属性设置\ Cmd1.Caption = \取消属性设置\Else

Cmd1.Caption = \属性设置\ End If End Sub

运行结果如下:

实验五 数组程序设计

一、实验目的

1. 掌握数组的声明及其使用;

2. 理解静态数组和动态数组的区别; 3. 掌握与数组有关的常用算法; 4. 掌握控件数组的建立和编程。 三.实验项目

【项目一】编程完成以下操作:(1)构成一个三行四列的数组a,其值为[0,20]之间的随机整数,并输出该数组;(2)将数组a第一行与第三行交换,输出交换后的数组。 分析:

1.三行四列,需要声明一个二维数组a(3,4);

2.[0-20]的整数,随机函数表达式写为int(rnd*21);

3.交换第一行和第三行,需要从第一列到第四列循环,依次交换这两列的每一行的元素; 界面设计

本项目只需要一个窗体,不涉及界面设计。 代码设计

Private Sub Form_Click() Dim a(3, 4)

Dim i As Integer, j As Integer Randomize

Print \原数组为:\

For i = 1 To 3

For j = 1 To 4

a(i, j) = Int(Rnd * 21) Print a(i, j); Next j Print Next i

For j = 1 To 4 t = a(1, j) a(1, j) = a(3, j) a(3, j) = t Next j

Print \交换第一行和第三行后的数组为:\

For i = 1 To 3 For j = 1 To 4 Print a(i, j); Next j Print Next i

End Sub 运行结果:

【项目二】用文本框控件数组设计一个比赛评分程序。要求在文本框中输入7个评委的评分,单击“评分”按钮,在文本框中显示去掉最高分和最低分后的平均成绩。 分析:1.建立一个标签控件数组,用于显示1-7评委编号

2.建立文本框控件数组,用于填写每个评委的分数 3.借助循环求出数组最大值、最小值

4.(数组元素总和-最高分-最低分)/5=选手最后得分 界面设计如下:

代码设计如下:

Private Sub Command1_Click() Dim i As Integer

Dim min As Single, max As Single, sum As Single min = Val(Text1(0).Text) max = Val(Text1(0).Text) sum = Val(Text1(0).Text) For i = 1 To 6

If Val(Text1(i).Text) < min Then min = Val(Text1(i).Text)

If Val(Text1(i).Text) > max Then max = Val(Text1(i).Text)

sum = sum + Val(Text1(i).Text) Next i

Text2.Text = max Text3.Text = min

Text4.Text = (sum - max - min) / 5 End Sub

Private Sub Command2_Click() For i = 0 To 6 Text1(i).Text = \Next i

Text2.Text = \Text3.Text = \Text4.Text = \End Sub

Private Sub Command3_Click() End End Sub

运行结果如下:

【项目三】随机生成20个5~60的整数,存放在数组a中,执行“计算”命令,则把该数组

中大于25的元素在文本框中显示出来,并把它们的和显示在标签中。执行“排序”命令,将数组从小到大排序并显示在文本框中。 分析:

1.用表达式Int(Rnd*56+5)生成5~60的整数 2.选用一种排序方法,将数组元素排序

3.通过循环将每个数组元素同25比较,若该元素大于25则连接,并累加。 界面设计如下:

代码设计如下:

Option Base 1

Dim a(20) As Integer Dim sum As Integer

Dim s1 As String, s2 As String

Private Sub Form_Load() For i = 1 To 20

a(i) = Int(Rnd * 56 + 5) s1 = s1 & a(i) & \ Next i

Text1.Text = s1 End Sub

Private Sub Command1_Click() For i = 1 To 19 For j = i + 1 To 20 If a(i) > a(j) Then t = a(i) a(i) = a(j) a(j) = t End If Next Next

For i = 1 To 20

Text2.Text = Text2.Text & a(i) & \Next End Sub

Private Sub Command2_Click() For i = 1 To 20

If a(i) > 25 Then sum = sum + a(i) s2 = s2 & a(i) & \ End If Next i

Text3.Text = s2

Label4.Caption = \大于25元素的总和为:\End Sub

运行结果如下:

实验六 过程程序设计

一、实验目的

1. 掌握Sub子过程和Function函数过程的定义及其调用方法。 2.掌握按值传递和按地址传递的两种参数传递方法。 3.掌握变量和过程的作用域的使用。 4.掌握递归调用的使用方法。 二、实验项目

【项目一】编写Sub子过程计算S=1+(1+2)+(1+2+3)+?+(1+2+3+?+n)的值。其中n的值由窗体上的文本框Text1输入,S的值由窗体上的文本框Text2输出 界面设计如下:

代码设计如下:

Sub sum(n As Integer, m As Integer) Dim i As Integer m = 0 For i = 1 To n

m = m + i Next i End Sub

Private Sub Command1_Click() Dim n As Integer, m As Integer

Dim i As Integer

n = Val(Text1.Text) s = 0

For i = 1 To n

Call sum(i, m) s = s + m Next i

Text2.Text = s End Sub

Private Sub Command2_Click() End End Sub 运行结果如下:

【项目二】编写Function函数过程计算S=1!+3!+5!的值,并在窗体上输出其结果。 本项目不需要进行界面设计 代码设计如下:

Function Fact(N As Integer) As Double Dim i As Integer, F As Double F = 1

For i = 1 To N F = F * i Next i Fact = F End Function

Private Sub Form_Click() Dim s As Double

s = s + Fact(1) + Fact(3) + Fact(5) Print \End Sub

运行结果如下:

【项目三】编写代码实现两种不同的参数传递方式调用过程,其中按值传递由窗体上的命令按钮command1实现,按地址传递由窗体上的命令按钮command2实现,并在窗体上输出相应的结果。 界面设计如下:

代码设计如下:

Sub S1(ByVal X, ByVal Y, ByVal Z) X = X + 1 Y = Y + 1 Z = Z + 1 End Sub

Sub S2(ByRef X, ByRef Y, ByRef Z) X = X + 1 Y = Y + 1 Z = Z + 1 End Sub

Private Sub Command1_Click() A = 1: B = 2: C = 3

Print \按值传递前:\Call S1(A, B, C)

Print \按值传递后:\ End Sub

Private Sub Command2_Click()

A = 1: B = 2: C = 3

Print \按地址传递前:\ Call S2(A, B, C) Print \按地址传递后:\End Sub 运行结果如下:

实验七 用户界面程序设计

一、实验目的

1.掌握鼠标事件和键盘事件中参数的意义及使用; 2.掌握Visual Basic菜单编辑器的使用;

3.掌握下拉式菜单和弹出式菜单的设计方法; 二、实验项目

【项目一】设计一个简单的记事本应用程序,界面如下图所示。

各菜单项标题可参考Windows系统“附件”中的记事本,具体要求如下:

(1)文本框只有垂直滚动条,具有自动换行功能。 (2)菜单中某个命令不可用时,其颜色变成浅灰色。

(3)设计快捷菜单,当在窗体上单击右键时弹出如下图所示的快捷菜单。

界面设计如下:

设计完成的菜单编辑器状态如图所示

代码设计如下:

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then

PopupMenu File End If End Sub

Private Sub Save_Click() CD1.Action = 2 End Sub

Private Sub Open_Click() CD1.ShowOpen Save.Enabled = True End Sub

Private Sub Exit_Click() End End Sub

【项目二】创建一个多重窗体的应用程序,该程序包含两个窗体,一个欢迎窗口,一个登录窗

口,启动程序后,首先显示欢迎窗口,当用户单击欢迎窗体后,显示登录窗口并且卸载掉欢迎窗口。

界面设计如下:

代码设计如下:

打开Form1的代码窗口,输入代码: Private Sub Form_Click() Unload Me Form2.Show End Sub

打开Form2的代码窗口,输入代码: Private Sub Command1_Click() If Text1 = \ If Text2 = \

MsgBox \登录成功,欢迎加入\ Else

MsgBox \口令不对,重新输入\ End If Else

MsgBox \用户名错误,重新输入\ End If End Sub

Private Sub Command2_Click() End End Sub

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

Top