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
正在阅读:
VB实验教案04-08
维莫德吉的合成12-24
2013年全国高考满分作文08-31
门式起重机应急预案11-06
第四章硅酸盐水泥的原料及配料计算06-01
概率阶段测试题(四)含答案12-24
学习社会主义核心价值观心得体会03-09
应聘智力测试题(含答案)01-14
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 教案
- 实验
- 天然药物化学 第6章 萜类和挥发油
- 2017-2023年中国冰箱压缩机行业投资战略研究报告(目录) - 图文
- 党建工作汇报材料(何祖能检查)
- 2015-2016学年下学期期中考试高一年级语文及答案
- sybase replication使用技巧
- 辩论 - 奋斗和机遇哪个更重要(函大学生创业资料)
- 速度知觉实验报告
- 新课改下初中化学教学的探索
- 中国人民解放军队列条令(1997)
- 公司自然灾害应急预案
- 北京中医药大学远程教育《英语1》作业2答案
- “十三五”重点项目-辣椒食品加工项目商业计划书
- 2018届高三第一次模拟考试英语试题
- 博大考神2012年职称英语理工类B级阅读理解真题及参考答案
- 金融统计分析试卷2015版
- 数学建模思想在小学数学教学中的应用研究;2200
- 2018年新教师个人工作总结范文
- 中国地质大学资源学院老师联系方式 - 图文
- 灾难救援课程考试
- 议论文范文