VB程序设计实验报告
湖北文理学院
VB程序设计课程
实验报告
学 院 物电学院
专 业 自动化
班 级 1211
学 号 2012118064
姓 名 王亮
任课教师 王福林
1
实验一、VB控制结构
一、实验目的
1.掌握选择语句的使用
2.掌握循环语句的使用
二、实验内容
1、选择语句
程序1:创建应用程序。要求:单击窗体可弹出输入框,任意输入三个数,然后按从小到大的顺序输出到窗体上。
程序2:创建应用程序。要求:单击窗体可弹出一输入框,任意输入一个正整数,在窗体上显示该整数是否为素数的字样。
2、循环语句
程序3:创建应用程序。要求:单击窗体可显示一个由“*”组成的平行四边形图案。
程序4:创建应用程序,其功能是显示所有的水仙花数。
三、实验
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
程序1如下:
Private Sub Command1_Click()
Dim a As Integer, b As Integer, c As Integer, t As Integer '
定义a,b,c,t为整形变量
Cls '清屏
a = Val(InputBox("请输入第1个数:")) '给a赋值
b = Val(InputBox("请输入第2个数:")) '给b赋值
c = Val(InputBox("请输入第3个数:")) '给c赋值
If a > b Then t = a: a = b: b = t '如果a>b,把a的值赋给t,b的值赋给a,t的值赋给b
If b > c Then '嵌套,如果b>c
t = b: b = c: c = t '把b的值赋给t,b的值赋给c,t的值赋给c
If a > b Then '再次嵌套,如果a>b
t = a '把a的值赋给t
a = b 'b的值赋给a
b = t 't的值赋给b
End If
End If
2
Print a; "、"; b; "、"; c '输出 a "、"b;"、"; c
End Sub
Private Sub Command2_Click()
End '退出程序
End Sub
程序2如下:
Private Sub Command1_Click()
Dim i As Integer, k As Integer, n As Integer '定义整形变量i,k,n
n = Val(InputBox("任意输入一个整数:")) '给n输入值
i = 2 'i初始值为2
k = Int(n / 2) '为整形的二分之一n的值赋给k
Do While i <= k '当i小于且等于k
If n Mod i = 0 Then '如果n模除i为0
Exit Do '退出循环
Else
i = i + 1 '否则i加1
End If
Loop
If i > k Then Print n; "是素数" Else Print n; "不是素数" '如果i大于k,输出n的值是素数,否则输出n的值不是素数
End Sub
Private Sub Command2_Click()
End ' 退出程序
End Sub
程序3如下:
Private Sub Form_Click()
Dim m As Integer, n As Integer '定义整形变量m,n
Cls '清屏
Print
For m = 1 To 6 'm赋初始值为1,当m大于6停止
Print Tab(15 - m); '第15 - m列开始输出
For n = 1 To 8 'n赋初始值为1,当n大于6停止
Print "*"; '输出*
Next n
Print "" '输出空格
Next m
End Sub
程序4如下:
Private Sub Command1_Click()
3
Dim i As Integer, m As Integer, n As Integer, k As Integer, sxh As Intege
'定义整形变量i,m,n,k,sxk
For i = 100 To 999 'i赋初始值为100,当i大于999,停止循环
m = i \ 100 'i除以100,结果赋给m
n = (i Mod 100) \ 10 'i模除100后的值再除以10,最后结果赋给n
k = i Mod 10 'i模除10后的值赋给k
sxh = m ^ 3 + n ^ 3 + k ^ 3 'sxh作算术运算
If sxh = i Then '如果sxh等于i
Print i, '输出i的值
End If
Next i
End Sub
Private Sub Command2_Click()
End '程序结束
End Sub
四、实验
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
实验二、窗体和
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
控件
一、实验目的
1.掌握命令按钮、标签及文本框控件的使用方法
2.掌握复选框、单选按钮及框架控件的使用方法
3.掌握列表框和组合框控件的使用方法
4.掌握滚动条和定时器控件的使用方法
二、实验内容
1、命令按钮、标签及文本框控件的使用方法
程序1:在窗体上建立两个标签、两个文本框和两个命令按钮,运行界面如左图所示。要求在运行时,两个文本框中的内容均不允许用户编辑;如果用户在“原文”的文本框中选定所需的内容,单击“复制”命令按钮,则在“输出”文本框中输出选定的内容;如果单击“结束”命令按钮,则结束程序的运行。
程序2:建立如下图所示的窗体,要求程序能对输入的“性别”和“邮政编码”、“电话号码”进行校验(性别只允许输入“男”或“女”,邮政编码必须是
4
6位数字,电话号码必须是8位数字)。如果输入的数据不符号要求,则清空相应的文本框,并将插入点置于该框中。所有的校验工作可以在单击“退出”按钮后进行,此时,程序检查所有文本框,如有空白或内容错误,要求继续输入,否则结束程序。
2、复选框、单选按钮及框架控件的使用
程序3:在窗体中有一个标签,内有若干文字,要求通过窗体中的复选框或单选按钮确定标签中文字的字体(宋体或黑体)、字号(10号或12号)和字形(是否粗体、是否斜体),请建立应用程序。
3、列表框和组合框控件的使用
程序4:编写程序。要求:程序运行初期,在窗体左边的列表框中生成10个由小到大排列的10到100之间的随机整数,单击窗体中“右移”按钮,则左边列表框的10个数移动到右边的列表框中,并由大到小排列,此时“左移”按钮变为有效。单击“左移”按钮,右边列表框中的数又被移到左边的列表框中。单击“退出”按钮或按ESC键,可退出程序。窗体示意图如下。
程序5:建立应用程序,窗体如下图所示,有一个简单组合框、三个命令按钮、一个文本框和一个标签。要求:
, 单击“添加”按钮可将输入的内容添加到组合框中
, 单击“删除”按钮可删除组合框中选定的项目
, 单击“统计人数”按钮,可将组合框中的项目总数输出到右边的文本框
, 单击“退出”或按ESC键退出程序
4、滚动条和定时器控件的使用
程序6:编写程序,运行时的界面如下图所示。要求:无论是拖动滚动条上的滚动框,还是单击滚动箭头(数值递增或递减1)或滚动条(数值递增或递减10),均可以在相应的标签中反映当前数值,并动态计算出均值;单击“Reset”按钮,可将各滚动条上的滚动框复位。
程序7:利用定时器控件设计一个数字式时钟应用程序。
三、实验记录
程序1如下:
Private Sub Form_Load()
Text1.Text = "文本框是一个多功能控件,可以显示或者接收用户输入的文本信息。" '给文本框指定内容 End Sub
Private Sub Command1_Click()
Text2.Text = Text1.SelText '在Text1中选定文本赋给Text2 End Sub
Private Sub Command2_Click()
5
End '程序结束
End Sub
程序2如下:
Private Sub Command1_Click()
If Text1 = "" Then
'如果Text1没有输入,当前的激活文本区(焦点)在Text1
Text1.SetFocus
Exit Sub '退出过程
End If
If Text2 = "" Then
'如果Text2没有输入,当前的激活文本区(焦点)在Text2
Text2.SetFocus
Exit Sub '退出过程
End If
If Text3 = "" Then
'如果Text3没有输入,当前的激活文本区(焦点)在Text3
Text3.SetFocus
Exit Sub '退出过程
End If
If Text4 = "" Then
'如果Text4没有输入,当前的激活文本区(焦点)在Text4
Text4.SetFocus
Exit Sub '退出过程
End If
If Text5 = "" Then
'如果Text5没有输入,当前的激活文本区(焦点)在Text5
Text5.SetFocus
Exit Sub '退出过程
End If
End '退出程序
End Sub
Private Sub Text2_LostFocus()
If Text2.Text <> "" Then '如果Text2有输入
If Text2.Text <> "男" And Text2.Text <> "女" Then
'如果Text2输入的内容不是“男”和“女”
Text2.Text = "" '则Text2不输出
6
Text2.SetFocus '当前的激活文本区(焦点)在Text2
End If
End If
End Sub
Private Sub Text4_LostFocus()
If Text4.Text <> "" Then '如果Text4有输入
If Len(Text4.Text) <> 6 Or Not IsNumeric(Text4.Text) Then
'如果Text4输入的内容不是数值或者字符串的长度不为6
Text4.Text="" '则Text4不输出
Text4.SetFocus '当前的激活文本区(焦点)在Text4
End If
End If
End Sub
Private Sub Text5_LostFocus()
If Text5.Text <> "" Then '如果Text5有输入
If Len(Text5.Text) <> 8 Or Not IsNumeric(Text5.Text) Then
'如果Text5输入的内容不是数值或者字符串的长度不为8
Text5.Text="" '则Text5不输出
Text5.SetFocus '当前的激活文本区(焦点)在Text5
End If
End If
End Sub
程序3界面设计(程序设计界面和运行结果界面):
程序3如下:
Private Sub Option1_Click()
Text1.FontName = "宋体" 'Text1中的内容为宋体
End Sub
Private Sub Option2_Click()
Text1.FontName = "黑体" 'Text1中的内容为黑体
End Sub
Private Sub Option3_Click()
Text1.FontSize = 10 'Text1中的内容为字号大小为10号 End Sub
Private Sub Option4_Click()
Text1.FontSize = 12 'Text1中的内容为字号大小为12号 End Sub
Private Sub Check1_Click()
If Check1.Value = 1 Then '如果Check1被选中
7
Text1.FontBold = True 'Text1中的内容变为粗体 Else
Text1.FontBold = False 'Text1中的内容不变 End If
End Sub
Private Sub Check2_Click()
If Check2.Value = 1 Then '如果Check2被选中
Text1.FontItalic = True 'Text1中的内容变为斜体 Else
Text1.FontItalic = False 'Text1中的内容不变 End If
End Sub
程序4如下:
Private Sub Command1_Click()
Dim i As Integer, Last As Integer '定义i和Last为整型变量
Last = List1.ListCount - 1
将List1.ListCount - 1 中被选中的内容赋給Last '
For i = 0 To Last '统计i大于Last 时停止循环
List2.AddItem List1.List(Last - i)
将List2中被选中的内容添加到List1中 '
List1.RemoveItem Last - i '将List1中被选中的内容删除Last - i个
Next i
Command1.Enabled = False 'Command1按钮无效
Command2.Enabled = True 'Command2按钮有效 End Sub
Private Sub Command2_Click()
Dim i As Integer, Last As Integer '定义i和Last为整型变量 Last = List2.ListCount - 1
'将List2.ListCount - 1 中被选中的内容赋給Last For i = 0 To Last '统计i大于Last 时停止循环 List1.AddItem List2.List(Last - i)
'将List1中被选中的内容添加到List2 List2.RemoveItem Last - i '将List2中被选中的内容删除Last - i个
Next i
Command1.Enabled = True 'Command1按钮有效
Command2.Enabled = False 'Command2按钮无效
End Sub
Private Sub Command3_Click()
Unload Me '程序退出
End Sub
8
Private Sub Form_Load()
Dim i As Integer
For i = 0 To 9 '统计i大于9 时停止循环
Randomize
List1.AddItem Int((90 * Rnd) + 10) '给List1中添加内容
Next i
End Sub
程序5如下:
Private Sub Combo1_Change()
If Combo1.Text <> "" Then '如果Combo1输入内容不为空
Command1.Enabled = True 'Command1按钮点击有效
Command1.Default = True 'Command1为默认按钮 Else
Command1.Enabled = False '否则,Command1按钮点击无效,成灰色状态
End If
End Sub
Private Sub Combo1_Click()
Command2.Enabled = True 'Command2按钮点击有效
Command2.Default = True 'Command2为默认按钮
Combo1.SetFocus '赋焦点光标在停放Combo1里 End Sub
Private Sub Command1_Click()
Combo1.AddItem Combo1.Text '添加内容到Combo1中
Combo1.Text = "" 'Combo1输入内容为空
Combo1.SetFocus '赋焦点光标在停放Combo1里 End Sub
Private Sub Command2_Click()
x = Combo1.ListIndex '将Combo1中的内容赋給x
Combo1.RemoveItem x '将Combo1中的内容中的x删除
If x < Combo1.ListCount Then '如果x小于Combo1.ListCount中的值
Combo1.ListIndex = x '将x中的内容赋給Combo1
Else
If x > 0 Then '否则,如果x大于0
Combo1.ListIndex = x - 1 'x-1赋给Combo1
Else
Command2.Enabled = False '否则,Command2按钮点击无效
Command2.Default = False 'Command2不为默认按钮
End If
9
End If
Text1.SetFocus '赋焦点光标在停放text1里 End Sub
Private Sub Command3_Click()
Text1.Text = Combo1.ListCount '将Combo1中的内容赋給Text1
Combo1.SetFocus '赋焦点光标在停放Combo1里 End Sub
Private Sub Command4_Click()
End '程序结束
End Sub
程序6如下:
Private Sub Command1_Click()
HScroll1.Value = 0 '将数值0赋给滚动条HScroll1
HScroll2.Value = 0 '将数值0赋给滚动条HScroll2
HScroll3.Value = 0 '将数值0赋给滚动条HScroll3 End Sub
Private Sub HScroll1_Change()
Label5.Caption = HScroll1.Value
'滚动条HScroll的数值显示在标签Label5上
Average '求其平均值
End Sub
Private Sub HScroll2_Change()
Label6.Caption = HScroll2.Value
'滚动条HScrol2的数值显示在标签Label6上
Average '求其平均值
End Sub
Private Sub HScroll3_Change()
Label7.Caption = HScroll3.Value
'滚动条HScrol3的数值显示在标签Label7上
Average '求其平均值
End Sub
Private Sub Average()
Dim Temp As Double '定义双精度变量Temp
Temp = (HScroll1.Value + HScroll2.Value + HScroll3.Value) / 3
'将滚动条HScroll,HScroll2,HScroll3的平均值之和除以3,结果赋给Temp
Label8.Caption = CStr(Temp) 'Temp的均值显示在标签Label8上 End Sub
程序7如下:
Private Sub Form_Load()
Label1.Caption = Time '在窗体上,将现在的时间赋给标签
10
Label1
End Sub
Private Sub Timer1_Timer()
Label1.Caption = Time
'在时间控件Time1把现在的时间显示在标签Label1上End Sub
四、实验总结
实验三、过程
一、实验目的
1(掌握过程的定义和调用的方法
2(掌握典型问题的算法求解
二、实验内容
1、过程的定义和调用
程序1:创建应用程序,要求对输入的非负整数m和n,如果m>=n,则显示
nC组合数的值,否则显示数据出错。 m
二、典型问题的算法
程序2:利用下列两式求得圆周率π的近似值,忽略级数式中绝对值小于0.000001的项。
35791xxxx,1,1,,6tantan,,,,,,...xx以及 35793
程序3:如下图所示,求2-200之间的所有素数,要求每输出五个数据换一行。
程序4:利用随机函数产生20个-500到500的随机整数(包括-500和500),单击窗体时,在窗体上输出这20个数,同时在窗体上显示输出从大到小排好序的这些数。要求以每行5个数的
格式
pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载
显示,如下图所示。
11
三、实验记录
程序1如下:
Private Sub Command1_Click() If Text1.Text = "" Or Not IsNumeric(Text1.Text) Then
'如果Text1没有输入或者不是字符串
MsgBox "请输入一个非负整数~", , "提示"
'弹出消息框标题为“提示”,内容为"请输入一个非负整数~"
Exit Sub '退出过程
End If
If Text2.Text = "" Or Not IsNumeric(Text2.Text) Then
'如果Text2没有输入或者不是字符串
MsgBox "请输入一个非负整数~", , "提示"
'弹出消息框标题为“提示”,内容为"请输入一个非负整数~"
Text2.SetFocus '此刻焦点指在Text2
Exit Sub '退出过程
End If
If CInt(Text1.Text) > CInt(Text2.Text) Then
'如果输入Text1的整形函数值大于Text2的整形函数值
MsgBox "数据出错,请重新输入~", , "警告"
'弹出消息框标题为“警告”,内容为"数据出错。请重新输入~"
Text1.Text="" 'Text1不输出
Text2.Text="" 'Text1不输出
Text1.SetFocus '此刻焦点指在Text1
Exit Sub '退出过程
End If
n=CInt(Text1.Text) 'Text1的整形函数值赋给n
m=CInt(Text2.Text) 'Text2的整形函数值赋给m
Text3.Text = CStr(Fac(m) / Fac(n) / Fac(m - n))
'组合数做运算,利用阶乘 End Sub
Private Function Fac(ByVal n As Integer) As Double
'函数的调用,定义双精度变量Fac(),整形变量n
Dim i As Integer, Temp As Double '定义整形变量i, Temp
Temp=1 'Temp初值为1
For i = 1 To n '做循环
Temp = Temp * i '做乘积运算
Next i
Fac = Temp '把Temp的值赋给Fac End Function '结束函数 Private Sub Command2_Click()
End '结束程序 End Sub
12
程序2如下:
Private Sub Form_Click()
Dim Pi As Double '定义双精度变量Pi
Pi = 6 * Arctan(1 / Sqr(3)) 'Pi的等式
Print Pi '输出Pi
End Sub
Private Function Arctan(ByVal x As Double) As Double
'函数的调用,定义双精度变量 Arctan(),双精度变量x
Dim m As Long, Temp As Double, s As Double
'定义长整形变量m,双精度变量Temp,s
Temp = 0 'Temp初值赋为0
s = x '把x的值赋给s
m = 1 'm的初值赋为1
Do While Abs(s) >= 0.000001
'做循环,级数式中绝对值大于等于0.000001的项,小于则停止循环。
Temp = Temp + s 'Temp二次赋值
m = m + 2 'm加2
s = -1 * x * x * s / m * (m - 2) 's是的方程式运算
Loop
Arctan = Temp '把temp的值赋给 Arctan End Function
程序3如下:
Private Sub Form_Click()
Dim I As Integer, M As Integer '定义整形变量I、M
M = 0 'M的初值赋为0
For I = 2 To 200 'I的初值赋为2,做加法循环,超出200则停止循环
If Prime(I) Then '用Prime判断I是否是素数,如果I是素数
Print I, '输出I
M = M + 1 'M加1
If M Mod 5 = 0 Then Print '如果M模除5,余数为0,则换行
End If
Next I
End Sub
Private Function Prime(x) As Boolean '函数过程的调用
Dim I As Integer '定义整形变量I
Prime = True 'x为素数,返回True
For I = 2 To Int(Sqr(x))
'I的初值赋为2,做加法循环,超出Sqr(x)则停止循环
13
If x Mod I = 0 Then '如果x模除I,余数为0
Prime = False '则x不是素数,返回False
Exit For '退出循环
End If
Next I
End Function
程序4如下:
Private Sub Form_Click()
Dim x(20) As Integer, M As Integer, Temp As Integer
'定义整形变量x(20)、M、 Temp
Dim I As Integer, J As Integer '定义整形变量I、J
M = 0 'M的初值赋为0
For I = 1 To 20 '做循环
Randomize '随机化
x(I) = Int(Rnd * 1001 - 500)
'随机函数产生20个-500到500的随机整数赋给x(I)
x(I), '输出x(I) Print
M = M + 1 ' M加1
If M Mod 5 = 0 Then Print '如果M模除5,余数为0,则换行
Next I
For I = 1 To 19 ’再做循环,I超出19则停止循环
For J = 1 To 20 - I '内循环,J = 1 ,当J超过20 - I停止循环
If x(J + 1) < x(J) Then '如果x(J + 1) 小于 x(J)
Temp = x(J): x(J) = x(J + 1): x(J + 1) = Temp '交换值
End If
Next J
Next I
Print '输出空格
For I = 1 To 20 '做循环,I超出20则停止循环
Print x(I), '输出x(I)
M = M + 1 ' M加1
If M Mod 5 = 0 Then Print '如果M模除5,余数为0,则换行
Next I
End Sub
四、实验总结
实验四、图形方法和图形控件
一、实验目的
14
1(掌握使用图形方法绘制典型的图形
2(了解图片框和图像控件的区别
3(掌握图片框和图像控件的使用方法
4(掌握直线控件和形状控件的使用方法
5(了解图像处理的基本方法
二、实验内容
1、图形方法的应用
程序1:在窗体上绘制-π到π的正弦曲线,如下图所示。
2、图片框控件和图像控件的使用
程序2:在窗体上左右各放置一个大小相同的图片框和图像框,修改它们的边框式样(BordeStyle属性),使它们的边框一栏。通过Picture属性装入一个同样的位图文件(.bmp),观察两个控件的变化以及其中图形的差异。若装入的
),则图片框和图像控件中的图形又会怎样, 是图元文件(.wmf
程序3:创建应用程序,利用图片框浏览大幅面图形。在窗体放置两个图片框,一个垂直滚动条和一个水平滚动条,如下图所示。在第二个图片框中装入一个大图形,利用两个滚动条改变第二个图片框在第一个图片框中的位置,实现对整幅图形的浏览。
程序4:创建一个测试图像控件特性的应用程序:单击窗体上的“放大”、“缩小”按钮,能使图像框中的图形放大或缩小。
3、直线控件和形状控件的使用
程序5:建立如下图所示的应用程序,通过命令按钮控制直线控件的旋转和形状控件的形状、位置等的变化,掌握直线和形状控件的特点和使用方法。
4、图像处理
程序6:创建应用程序:通过使输出的文本产生微移后叠加,在图片框中输出有立体效果的文本,如下图所示。
三、实验记录
程序1如下:
Private Sub Form_Click()
Const Pi = 3.1415926
Cls '清屏
15
Form1.ScaleTop = 1.5 '窗体左上角y轴的坐标值为1.5
Form1.ScaleLeft = -1.5 * Pi '窗体左上角x轴的坐标值为-1.5*Pi
Form1.ScaleHeight = -3 'y轴刻度总数为-3
Form1.ScaleWidth = 3 * Pi 'x轴刻度总数为3 * Pi
For t = -Pi To Pi Step 0.001
't的初始值为-Pi,步长为0.001,当t大于Pi时,停止循环
x = t '将t赋给x
'将Sin(t)赋给y y = Sin(t)
PSet (x, y) '在(x, y处画点
Next t
End Sub
程序2如下:
Private Sub Form_Click()
Image1.Picture = LoadPicture("C:\作业用图1.jpg") '给图像框装入图片 Picture1.Picture = LoadPicture("C:\作业用图1.jpg") '给图片框装入图片 End Sub
程序3如下:
Private Sub Form_Load() '窗体的初始化
frmwidth = Form1.ScaleWidth
frmheight = Form1.ScaleHeight
Picture1.Move 0, 0, frmwidth - VScroll1.Width, frmheight -
HScroll1.Height
Picture2.Move 0, 0
HScroll1.Top = Picture1.Height
HScroll1.Left = 0
HScroll1.Width = Picture1.Width
HScroll1.Max = Picture2.Width - Picture1.Width
HScroll1.SmallChange = HScroll1.Max / 50
HScroll1.LargeChange = Picture1.Width
HScroll1.Visible = (Picture1.Height < Picture2.Height)
VScroll1.Top = 0
VScroll1.Left = Picture1.Width
VScroll1.Height = Picture1.Height
VScroll1.Max = Picture2.Height - Picture1.Height
VScroll1.SmallChange = VScroll1.Max / 50
VScroll1.LargeChange = Picture1.Height
VScroll1.Value = (Picture1.Width < Picture1.Width)
End Sub
Private Sub Form_Resize() '重载
Call Form_Load
End Sub
16
Private Sub HScroll1_Change() '设置Picture2的水平位置
Picture2.Left = -HScroll1.Value End Sub
Private Sub HScroll1_Scroll() '设置Picture2的水平位置
Picture2.Left = -HScroll1.Value End Sub
Private Sub VScroll1_Change() '滚动条change事件
Picture2.Top = -VScroll1.Value '设置Picture2的垂直位置 End Sub
Private Sub VScroll1_Scroll() '滚动条的滚动属性
Picture2.Top = -VScroll1.Value '设置Picture2的垂直位置 End Sub
Private Sub Command1_Click()
Image1.Width = Image1.Width * 1.2
Image1.Height = Image1.Height * 1.2 End Sub
Private Sub Command2_Click()
Image1.Width = Image1.Width / 1.2
Image1.Height = Image1.Height / 1.2 End Sub
Private Sub Command3_Click()
End
End Sub
程序4如下:
Private Sub Command1_Click()
Picture1.Width = Picture1.Width * 2 '先把图片框的宽度扩展2倍
Picture1.Height = Picture1.Height * 2 '先把图片框的高度扩展2倍 End Sub
Private Sub Command2_Click()
Picture1.Width = Picture1.Width / 2 '先把图片框的宽度缩小二分之一
Picture1.Height = Picture1.Height / 2 '先把图片框的高度缩小二分之一 End Sub
Private Sub Command3_Click()
End '退出程序
End Sub
程序5如下:
17
Private Sub Command1_Click()
Const Pi As Double = 3.1415926 ’定义双精度变量Pi的值
Dim r As Double, x0 As Double, y0 As Double '定义双精度变量r,x0,y0
Dim i As Integer, j As Long '整形变量i长整形变量j
Line1.Visible = True '直线可见
r = Sqr((Line1.X2 - Line1.X1) ^ 2 + (Line1.Y2 - Line1.Y1) ^ 2) / 2
'定义半径r的值
x0 = (Line1.X2 + Line1.X1) / 2
'定义旋转圆心x轴x0的值
y0 = (Line1.Y2 + Line1.Y1) / 2
'定义旋转圆心y轴y0的值
For i = 1 To 360 '1度到360度,超过360度则停止循环
Line1.X1 = x0 - r * Cos(i * Pi / 180) '定义直线首端的坐标
Line1.Y1 = y0 - r * Sin(i * Pi / 180)
Line1.X2 = x0 + r * Cos(i * Pi / 180) '定义直线末端的坐标
Line1.Y2 = y0 + r * Sin(i * Pi / 180)
DoEvents '直线变化
For j = 0 To 2000000 '内循环,连续出现密集点,直线旋转的速度
Next j
Next i
Line1.Visible = False '停止循环后,直线隐藏
End Sub
Private Sub Command2_Click()
Shape1.Visible = True '形状可见
For i = 1 To 36 'i的初始值赋为1,超过36则停止循环
Shape1.Shape = i Mod 6 'i模除6余数表示图形形状
DoEvents '形状旋转
For j = 0 To 20000000 '内循环,连续出现密集点,形状旋转的速度
Next j
Next i
Shape1.Visible = False '停止循环后,形状隐藏
End Sub
Private Sub Command3_Click()
Shape1.Visible = True '形状可见
For i = 0 To 36 'i的初始值赋为0,超过36则停止循环
Shape1.Shape = Int(Rnd * 5) '设置随机形状
Shape1.Width = Int(Rnd * Form1.ScaleWidth)
'形状的宽度为x轴刻度的随机数
Shape1.Height = Int(Rnd * Form1.ScaleHeight)
'形状的高度为y刻度的随机数
Shape1.Left = Int(Rnd * (Form1.ScaleWidth - Shape1.Width))
'形状的左上角x轴的坐标轴为Form1.ScaleWidth - Shape1.Width的随机数
18
Shape1.Top = Int(Rnd * (Form1.ScaleHeight - Shape1.Height))
'形状的左上角y轴的坐标轴为Form1.ScaleHeight - Shape1.Height的随机数
Shape1.FillColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
'定义随机的颜色
DoEvents '形状变化
For j = 0 To 20000000 '内循环,形状旋转的速度
Next j
Next i
Shape1.Visible = False '停止循环后,形状隐藏 End Sub
Private Sub Command4_Click()
End '退出程序
End Sub
程序6如下:
Private Sub Command1_Click()
Picture1.Cls '图片框清屏
Picture1.CurrentX = 150 'Picture1容器基本坐标的X值为150
Picture1.CurrentY = 150 'Picture1容器基本坐标的Y值为150
Picture1.ForeColor = RGB(0, 0, 0) '图片框内容的前景色为黑色
Picture1.Print "迎接新生活~" '图片框输出 "迎接新生活~"
End Sub
Private Sub Command2_Click()
Picture1.Cls '图片框清屏
Picture1.CurrentX = 120 'Picture1容器基本坐标的X值为120
Picture1.CurrentY = 120 'Picture1容器基本坐标的Y值为120
Picture1.ForeColor = RGB(255, 255, 255)'图片框内容的前景色为白色
Picture1.Print "迎接新生活~" '图片框输出 "迎接新生活~"
Picture1.CurrentX = 150 'Picture1容器基本坐标的X值为150
Picture1.CurrentY = 150 'Picture1容器基本坐标的Y值为150
Picture1.ForeColor = RGB(0, 0, 0) '图片框内容的前景色为黑色
Picture1.Print "迎接新生活~" '图片框输出 "迎接新生活~"
Picture1.CurrentX = 180 'Picture1容器基本坐标的X值为180
Picture1.CurrentY = 180 'Picture1容器基本坐标的Y值为180
Picture1.ForeColor = RGB(255, 0, 0) '图片框内容的前景色为红色
Picture1.Print "迎接新生活~" '图片框输出 "迎接新生活~"
End Sub
Private Sub Command3_Click()
Picture1.Cls '图片框清屏
End Sub
19
四、实验总结
实验五、菜单、工具栏和状态栏的设计 一、实验目的
1. 掌握下拉式菜单的设计方法
2. 掌握弹出式菜单的设计方法
3. 了解工具栏和状态栏的设计方法
二、实验内容
1、下拉式菜单的设计
程序1:建立一个应用程序,该程序窗口中有一个文本框,设计菜单,菜单项如下图所示。编制程序,完成各菜单项的功能。
程序2:编写程序。要求:程序运行初期,在窗体左边的列表框中生成10个由小到大排列的10到100之间的随机整数,相应的动态菜单如下图所示;如果选择“转移”菜单下面的“右移”命令,则左边列表框的10个数移动到右边的列表框中,并由大到小排列;再打开“转移”菜单,则只有“左移”命令可用。
2、弹出式菜单的设计
程序3:将程序2中的下拉菜单改成二个弹出式菜单,分别作为两个列表框的快捷菜单,当列表框有数据时,菜单有效,否则无效。窗体如下图所示。
3、工具栏和状态栏的设计
程序4:工具栏的设计。设计一个窗口外观如下图所示的程序,在窗口下方的“请输入”文本框中输入一句名言,选择“编辑”菜单中的“名言展示”命令,或按下工具栏中的“名言展示”按钮,可将这句名言添加到窗口中间的“名言展示”文本框中。类似地,此程序还可以用这两种方法实现以下功能:复位、调整“名言展示”文本框中字体颜色、查看本程序信息、退出。
程序5:状态栏的设计。在程序4的基础上,加上状态栏,在状态栏中显示“名言展示”文本框中展示的名言句数和总长度,以及系统日期和系统时间。
三、实验记录
20
程序1如下:
Private Sub mnuClear_Click()
Text1.Text = "" 'Text1中字体被清除 End Sub
Private Sub mnuExit_Click()
End '退出程序
End Sub
Private Sub mnuArr_Click(Index As Integer)
For i = 0 To 2 '索引值范围为0到2
Next i
Select Case Index '选择Index里情况,按索引值定义字体字号大小
Case 0
Text1.FontSize = 12 'Text1中字体大小为12号
Case 1
Text1.FontSize = 16 'Text1中字体大小为16号
Case 2
Text1.FontSize = 20 'Text1中字体大小为20号
End Select
End Sub
Private Sub mnuColor_Click()
On Error GoTo Err '定义标签
CommonDialog1.ShowColor '弹出颜色对话框
Text1.ForeColor = CommonDialog1.Color '定义Text1中字体颜色 Err:
End Sub
Private Sub mnuAbout_Click()
MsgBox "一个具有下拉菜单的程序" + vbCrLf + "版本:1.0版", , "关于下拉菜单的程序" '弹出MsgBox,显示内容 End Sub
程序2如下:
Private Sub Form_Load()
Dim i As Integer '定义整形变量i
For i = 0 To 9 '给定i的值为0到9,超出则停止循环
Randomize
List1.AddItem Int((90 * Rnd) + 10)
'List1生成10个由10到100之间的随机整数
21
Next i
End Sub
Private Sub mnuMoveLeft_Click()
Dim i As Integer, Last As Integer '定义整形变量i和Last
Last = List2.ListCount - 1 '将List2选定的数付给Last
For i = 0 To Last '给定i的值为0到Last,超出则停止循环
i) List1.AddItem List2.List(Last -
'将List2被选中得数添加到List1中
List2.RemoveItem Last - i '将List2被选中得数删除
Next i
mnuMoveRight.Enabled = True 'mnuMoveRight可见
mnuMoveLeft.Enabled = False 'mnuMoveLeft不可见 End Sub
Private Sub mnuMoveRight_Click()
Dim i As Integer, Last As Integer '定义整形变量i和Last
1 '将List1定的数付给Last Last = List1.ListCount -
For i = 0 To Last '给定i的值为0到Last,超出则停止循环
List2.AddItem List1.List(Last - i)
'将List1选中得数添加到List2中
List1.RemoveItem Last - i ’将List1被选中得数删除
Next i
mnuMoveRight.Enabled = False 'mnuMoveRight不可见
mnuMoveLeft.Enabled = True 'mnuMoveLeft可见 End Sub
Private Sub mnuFileExit_Click()
End ’退出程序
End Sub
程序3如下:
Private Sub Form_Load() '初始化
Dim i As Integer ’定义整形变量i
For i = 0 To 9 ’做循环
Randomize '随机化
List1.AddItem Int((90 * Rnd) + 10) ' 产生10个随机数据
Next i
mnuLeftB.Checked = False ’定义属性
mnuRightI.Checked = False End Sub
Private Sub mnuLeftB_Click() 'mnuLeftB的数据设为粗体
22
If mnuLeftB.Checked = False Then
List1.FontBold = True ’定义属性
mnuLeftB.Checked = True
Else
List1.FontBold = False
mnuLeftB.Checked = False
End If
End Sub
Private Sub mnuRightI_Click() 'mnuRightI的数据设为斜体
If mnuRightI.Checked = False Then
List2.FontItalic = True ’定义属性
mnuRightI.Checked = True
Else
List2.FontItalic = False
mnuRightI.Checked = False
End If
End Sub
Private Sub mnuWindowsColor_Click()
CommonDialog1.ShowColor
Form1.BackColor = CommonDialog1.Color End Sub
Private Sub mnuwindowsExit_Click()
Unload Me
End Sub
Private Sub mnuleftr_Click() '在mnuleftr设置弹出右移
Dim i As Integer, Last As Integer
Last = List1.ListCount - 1
For i = 0 To Last
List2.AddItem List1.List(Last - i)
List1.RemoveItem Last - i
Next i
mnurightl.Enabled = True
mnuLeftR.Enabled = False
mnuRightI.Enabled = True
mnuLeftB.Enabled = False
End Sub
Private Sub mnurightl_Click() '在mnurightl设置弹出左移
Dim i As Integer, Last As Integer
Last = List2.ListCount - 1
For i = 0 To Last
List1.AddItem List2.List(Last - i)
23
List2.RemoveItem Last - i
Next i
mnurightl.Enabled = False
mnuRightI.Enabled = False
mnuLeftR.Enabled = True
mnuLeftB.Enabled = True
End Sub
Private Sub List1_MouseUp(Button As Integer, Shift As Integer, X As Single,
Y As Single) '鼠标事件
If Button = 2 And List1.ListCount <> 0 Then
PopupMenu mnuLeft
End If
End Sub
Private Sub List2_MouseUp(Button As Integer, Shift As Integer, X As Single,
Y As Single) '鼠标事件
If Button = 2 And List2.ListCount <> 0 Then
PopupMenu mnuright
End If
End Sub
程序4如下:
Dim i, j As Integer '定义全局整形变量i Private Sub Form_Activate()
Text2.SetFocus '设置焦点停留在Text2 End Sub
Private Sub Form_Load()
i = 0
SkinH_Attach
End Sub
Private Sub mnuAbout_Click()
MsgBox "本程序1.0版", vbOKOnly, "工具栏的使用"
'点击关于则弹出消息框 End Sub
Private Sub mnuColor_Click() '设置所输入内容的颜色
CommonDialog1.CancelError = True
On Error GoTo Errline
CommonDialog1.ShowColor ’设置主界面的颜色
Text1.ForeColor = CommonDialog1.Color
Text1.Refresh
Text2.SetFocus '设置焦点停留在Text2
Exit Sub
Errline:
End Sub
24
Private Sub mnuDisp_Click()
If Text2.Text <> "" Then '如果Text2中没有内容
Text1.Text = Text1.Text & Text2.Text & vbCrLf
'Text2中的内容显示到Text1中
End If
Text2.Text = "" 'Texe2中没有输入
Text2.SetFocus '设置焦点停留在Text2 End Sub
Private Sub mnuExit_Click()
End '退出程序
End Sub
Private Sub mnuReset_Click()
Text1.Text = "": Text2.Text = "" ' Text1和Text2都复位
Text1.ForeColor = RGB(0, 0, 0) '设置Text1的颜色为黑色
Text2.SetFocus '设置焦点停留在Text2 End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If i = 0 Then
Text1.Text = ""
i = 1
End If
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If j = 0 Then
Text2.Text = ""
j = 1
End If
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
'工具栏的单击事件
Select Case Button.Key
Case "ButReset" '复位
mnuReset_Click
Case "ButDisp" '显示
mnuDisp_Click
Case "ButColor" '颜色
mnuColor_Click
Case "ButAbout" '关于
mnuAbout_Click
Case "ButExit" '退出
mnuExit_Click
End Select
End Sub
25
四、实验总结
实验六、对话框、多文档界面设计 一、实验目的
1(掌握预定义对话框的使用方法
2(掌握通用对话框的使用方法
3(掌握简单的MDI应用程序的设计方法
(了解多文档文本编辑器的设计方法 4
二、实验内容
1、对话框的使用
程序1:使用预定义对话框输入和输出数据。程序如下图所示,用于管理学生成绩。按输入按钮,使用预定义对话框InputBox输入学生人数及每个学生的成绩;使用预定义对话框MsgBox输出总分和平均成绩。
程序2:使用通用对话框进行属性设置。
三、实验记录
程序1如下:
Dim Mark() As Integer, N As Integer '定义全局整形变量Mark()、N Private Sub Command1_Click()
N = InputBox("请输入学生人数:") '输入人数N
ReDim Mark(1 To N) As Integer '重复定义整形变量Mark(1到N)
For i = 1 To N '做for循环,超出N停止循环
Mark(i) = Val(InputBox("请输入第" & Str(i) & "个学生的成绩:"))
'输入学生成绩为函数形式赋给 Mark(i)
Next i
End Sub
Private Sub Command2_Click()
Dim Sum As Integer, Average As Integer '定义整形变量 Sum、Average
Sum = 0 'Sum初值为0
For i = 1 To N '做for循环,超出N停止循环
26
Sum = Sum + Mark(i) '求和运算
Next i
Average = Sum / N '求平均数
MsgBox "总分:" & Str(Sum) & vbCrLf & "平均分:" & Str(Average)
'弹出消息框,输出总分和平均分
End Sub
程序2如下:
Private Sub Command1_Click()
CommonDialog1.CancelError = True '打开CommonDialog1的属性
On Error GoTo Err
CommonDialog1.ShowFont '打开CommonDialog1“字体”对话框
Text1.FontBold = CommonDialog1.FontBold
'设置文本框里内容的字体加粗
Text1.FontItalic = CommonDialog1.FontItalic
'设置文本框里内容的字体为斜体
Text1.FontName = CommonDialog1.FontName
设置文本框里内容的字体名称 '
Text1.FontSize = CommonDialog1.FontSize
'设置文本框里内容的字体字号
Text1.FontStrikethru = CommonDialog1.FontStrikethru
'设置文本框里内容的字体加中划线
Text1.FontUnderline = CommonDialog1.FontUnderline
'设置文本框里内容的字体有下划线
Text1.ForeColor = CommonDialog1.Color
'设置文本框里内容的字体颜色
Err:
End Sub
Private Sub Command2_Click()
CommonDialog1.CancelError = True '打开CommonDialog1的属性
On Error GoTo Err
CommonDialog1.ShowColor
'打开CommonDialog1“颜色”对话框
Form1.BackColor = CommonDialog1.Color
'设置对话框颜色,窗体的背景颜色为一致
Err:
End Sub
Private Sub Command3_Click()
CommonDialog1.CancelError = True '打开CommonDialog1的属性
On Error GoTo Err
CommonDialog1.Filter = "图标文件|*.ico"
'"图标文件|*.ico" 设置为CommonDialog1的过滤器
27
CommonDialog1.ShowOpen '打开CommonDialog1“打开”对话框
Form1.Icon = LoadPicture(CommonDialog1.FileName)
Err:
End Sub
Private Sub Command4_Click()
CommonDialog1.ShowPrinter '打开CommonDialog1“打印机”对话框
For i = 1 To CommonDialog1.Copies '打印的份数,超出则停止打印
Print Text1.Text '输出文本框的内容
Next i
End Sub
四、实验总结
28