VB程序设计实验报告

湖北文理学院

VB程序设计课程

实验报告

学    院      物电学院     

专    业      自动化      

班    级       1211       

学    号       2012118064   

姓    名       王亮     

任课教师       王福林     

实验一、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

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()

  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

四、实验总结

实验二、窗体和标准控件

一、实验目的

1.掌握命令按钮、标签及文本框控件的使用方法

2.掌握复选框、单选按钮及框架控件的使用方法

3.掌握列表框和组合框控件的使用方法

4.掌握滚动条和定时器控件的使用方法

二、实验内容

1、命令按钮、标签及文本框控件的使用方法

程序1:在窗体上建立两个标签、两个文本框和两个命令按钮,运行界面如左图所示。要求在运行时,两个文本框中的内容均不允许用户编辑;如果用户在“原文”的文本框中选定所需的内容,单击“复制”命令按钮,则在“输出”文本框中输出选定的内容;如果单击“结束”命令按钮,则结束程序的运行。

程序2建立如下图所示的窗体,要求程序能对输入的“性别”和“邮政编码”、“电话号码”进行校验(性别只允许输入“男”或“女”,邮政编码必须是6位数字,电话号码必须是8位数字)。如果输入的数据不符号要求,则清空相应的文本框,并将插入点置于该框中。所有的校验工作可以在单击“退出”按钮后进行,此时,程序检查所有文本框,如有空白或内容错误,要求继续输入,否则结束程序。

2、复选框、单选按钮及框架控件的使用

程序3在窗体中有一个标签,内有若干文字,要求通过窗体中的复选框或单选按钮确定标签中文字的字体(宋体或黑体)、字号(10号或12号)和字形(是否粗体、是否斜体),请建立应用程序。

3、列表框和组合框控件的使用

程序4编写程序。要求:程序运行初期,在窗体左边的列表框中生成10个由小到大排列的10到100之间的随机整数,单击窗体中“右移”按钮,则左边列表框的10个数移动到右边的列表框中,并由大到小排列,此时“左移”按钮变为有效。单击“左移”按钮,右边列表框中的数又被移到左边的列表框中。单击“退出”按钮或按ESC键,可退出程序。窗体示意图如下。

程序5建立应用程序,窗体如下图所示,有一个简单组合框、三个命令按钮、一个文本框和一个标签。要求:

l  单击“添加”按钮可将输入的内容添加到组合框中

l  单击“删除”按钮可删除组合框中选定的项目

l  单击“统计人数”按钮,可将组合框中的项目总数输出到右边的文本框

l  单击“退出”或按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()

  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不输出

      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被选中

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

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

  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          '在窗体上,将现在的时间赋给标签Label1

End Sub

Private Sub Timer1_Timer()

  Label1.Caption = Time   

                     '在时间控件Time1把现在的时间显示在标签Label1上

End Sub

四、实验总结

实验三、过程

一、实验目的

1.掌握过程的定义和调用的方法

2.掌握典型问题的算法求解

二、实验内容

1、过程的定义和调用

程序1:创建应用程序,要求对输入的非负整数m和n,如果m>=n,则显示组合数的值,否则显示数据出错。

二、典型问题的算法

程序2:利用下列两式求得圆周率π的近似值,忽略级数式中绝对值小于0.000001的项。

以及

程序3:如下图所示,求2-200之间的所有素数,要求每输出五个数据换一行。

程序4:利用随机函数产生20个-500到500的随机整数(包括-500和500),单击窗体时,在窗体上输出这20个数,同时在窗体上显示输出从大到小排好序的这些数。要求以每行5个数的格式显示,如下图所示。

三、实验记录

程序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

程序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)则停止循环

    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)

    Print x(I),                        '输出x(I)

    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

四、实验总结

实验四、图形方法和图形控件

一、实验目的

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                                '清屏

  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

  y = Sin(t)                         '将Sin(t)赋给y

  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

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如下:

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的随机数

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

四、实验总结

   

实验五、菜单、工具栏和状态栏的设计

一、实验目的

1.  掌握下拉式菜单的设计方法

2.  掌握弹出式菜单的设计方法

3.  了解工具栏和状态栏的设计方法

二、实验内容

1、下拉式菜单的设计

程序1建立一个应用程序,该程序窗口中有一个文本框,设计菜单,菜单项如下图所示。编制程序,完成各菜单项的功能。

 

程序2:编写程序。要求:程序运行初期,在窗体左边的列表框中生成10个由小到大排列的10到100之间的随机整数,相应的动态菜单如下图所示;如果选择“转移”菜单下面的“右移”命令,则左边列表框的10个数移动到右边的列表框中,并由大到小排列;再打开“转移”菜单,则只有“左移”命令可用。

2、弹出式菜单的设计

程序3:将程序2中的下拉菜单改成二个弹出式菜单,分别作为两个列表框的快捷菜单,当列表框有数据时,菜单有效,否则无效。窗体如下图所示。

3、工具栏和状态栏的设计

程序4:工具栏的设计。设计一个窗口外观如下图所示的程序,在窗口下方的“请输入”文本框中输入一句名言,选择“编辑”菜单中的“名言展示”命令,或按下工具栏中的“名言展示”按钮,可将这句名言添加到窗口中间的“名言展示”文本框中。类似地,此程序还可以用这两种方法实现以下功能:复位、调整“名言展示”文本框中字体颜色、查看本程序信息、退出。

程序5:状态栏的设计。在程序4的基础上,加上状态栏,在状态栏中显示“名言展示”文本框中展示的名言句数和总长度,以及系统日期和系统时间。

三、实验记录

程序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之间的随机整数

  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,超出则停止循环

List1.AddItem List2.List(Last - i)     

                            '将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

  Last = List1.ListCount - 1                '将List1定的数付给Last

  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的数据设为粗体

  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)

    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

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

四、实验总结

实验六、对话框、多文档界面设计

一、实验目的

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停止循环

    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的过滤器

  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

四、实验总结

相关推荐