VisualBasic程序设计实验指导 与习题解答 ·...
Transcript of VisualBasic程序设计实验指导 与习题解答 ·...
普通高等教育“十二五”重点规划教材·计算机系列
中国科学院教材建设专家委员会“十二五”规划教材
VisualBasic程序设计实验指导
与习题解答
段昌敏 主 编
涂 祥 副主编
北 京
科
学出版社
职教技术出版中心
www.abook.cn
内 容 简 介
本书是根据教育部高等学校计算机科学与技术教学指导委员会关于“计算机程序设计基础课程教学基本要求”编写而成的,是与《VisualBasic程序设计》(段昌敏主编,科学出版社)配套的实训教材。为配合主教材的章
节顺序和知识点,本书的第一部分包含13个配套实验,实验内容具有很强
的代表性,能够体现出所在章节的重点和难点;第二部分根据大量教学实例
并结合历年“全国计算机等级考试”试题以及模拟试题,精心挑选和编辑了
练习题,题目涵盖各种典型操作和算法,实训性强、综合性强、代表性强;第三部分是参考答案,包含本书第二部分习题的参考答案和《VisualBasic程
序设计》课后习题的参考答案。本书可作为高等院校非计算机专业“VisualBasic程序设计”课程的实
验教材,也可供相关工程技术人员和计算机爱好者学习使用。
图书在版编目(CIP)数据
VisualBasic程序设计实验指导与习题解答/段昌敏主编.—北京:科学出版社,2012 (普通高等教育“十二五”重点规划教材·计算机系列 中国科学院教材建设专家委员会“十二五”规划教材) ISBN978-7-03-036306-0
Ⅰ.①V… Ⅱ.①段… Ⅲ.①BASIC语言-程序设计-高等学校-教学参考资料 Ⅳ.①TP312
中国版本图书馆CIP数据核字(2012)第309155号
责任编辑:戴 薇 刘文军/责任校对:刘玉靖
加工编辑:张 静/版式设计:科地亚盟
责任印制:吕春珉/封面设计:科地亚盟
印刷
科学出版社发行 各地新华书店经销
* 2013年7月第 一 版 开本:787×10921/16
2013年7月第一次印刷 印张:113/4字数:267000
定价:23.00元
(如有印装质量问题,我社负责调换< >)销售部电话010-62134988 编辑部电话010-62135763-2003
版权所有,侵权必究
举报电话:010-64030229;010-64034315;13501151303
教育部高等学校计算机科学与技术教学指导委员会在提出高等学校3个层次的计算
机课程体系结构(“计算机文化基础”、“计算机技术基础”、“计算机应用基础”)的基础上,又提出了“计算机模块化”的教育体系。对于非计算机专业的学生来说,学习高级语言程
序设计,掌握一门面向对象的程序设计方法是非常必要的。学习和掌握计算机程序设计的最重要的一个环节就是实践,理论课程的学习必须通
过上机实训以检测和验证程序设计的准确性和差错率。只有这样,才能够加深理解程序
设计的精髓和思想,才能够把VisualBasic程序设计学习好。全书分为3部分,第一部分根据《VisualBasic程序设计》编写了相关的13个实验。
每一个实验都包括实验目的、实验内容,进行了科学的安排,紧扣教材的内容,并体现出相
关内容的重点和难点,从而达到实训的目的。实验内容包括VisualBasic6.0环境和程序
设计、VisualBasic简单程序设计、顺序结构/选择结构程序设计、循环结构程序设计、数组
的定义、数组的高级应用、子过程和函数的定义、参数传递、过程与变量的作用域、常用内
部控件的使用、图形的制作、界面设计以及文件管理等。有些实验配有思考题,大多数是
以本实验为核心,进行思维拓展的训练。第二部分是编者根据多年来的教学实例,并结合历年“全国计算机等级考试二级
VisualBasic语言程序设计”试题以及模拟试题,精心挑选和编写而成的练习题,题目包含
各种典型操作和算法,实训性强、综合性强、代表性强。第三部分是参考答案,包含本书第二部分习题的参考答案和《VisualBasic程序设计》
课后习题的参考答案。本书由段昌敏策划、统稿并担任主编,由涂祥担任副主编。由于编者水平有限,书中难免存在不足或者疏漏之处,恳请读者批评指正!
段昌敏
2012年10月
科
学出版社
职教技术出版中心
www.abook.cn
前言
第一部分 实验指导 1…………………………………………………………………………
实验1 集成开发环境和程序设计入门 2………………………………………………
实验2 简单程序设计 4…………………………………………………………………
实验3 顺序结构-选择结构程序设计 9………………………………………………
实验4 循环结构程序设计(一) 12……………………………………………………
实验5 循环结构程序设计(二) 16……………………………………………………
实验6 数组的定义 19…………………………………………………………………
实验7 数组的高级应用 26……………………………………………………………
实验8 子过程和函数的定义 28………………………………………………………
实验9 参数传递、过程与变量的作用域 32……………………………………………
实验10 常用内部控件的使用 37………………………………………………………
实验11 图形的制作 42…………………………………………………………………
实验12 界面设计 46……………………………………………………………………
实验13 文件管理 52……………………………………………………………………
第二部分 习题训练 57………………………………………………………………………
第1章 VisualBasic概述 58……………………………………………………………
第2章 面向对象程序设计基础 61……………………………………………………
第3章 VisualBasic程序设计基础 64…………………………………………………
第4章 VisualBasic控制结构 72………………………………………………………
第5章 数组及应用 84…………………………………………………………………
第6章 过程 97…………………………………………………………………………
第7章 常用控件及对象 117……………………………………………………………
第8章 图形操作 136……………………………………………………………………
第9章 可视化界面程序设计 138………………………………………………………
第10章 文件 140………………………………………………………………………
第11章 VisualBasic与数据库 145……………………………………………………
第三部分 参考答案 148………………………………………………………………………
习题参考答案 149…………………………………………………………………………
《VisualBasic程序设计》课后习题参考答案 155………………………………………
参考文献 181……………………………………………………………………………………
第一部分
实 验 指 导
科
学出版社
职教技术出版中心
www.abook.cn
2
实验1 集成开发环境和程序设计入门
一、 实验目的
1)掌握VisualBasic6.0启动和退出的方法。
2)熟悉VisualBasic6.0的集成开发环境。
3)掌握VisualBasic6.0程序设计的基本步骤。
4)掌握基本控件(窗体、标签、命令按钮和文本框)的基本使用方法。
二、 实验内容
【实验1-1】 认识VisualBasic6.0集成开发环境
启动VisualBasic6.0,创建一个“标准EXE”工程。了解VisualBasic6.0集成开发
环境下各组成部分及其作用。
1)在VisualBasic6.0集成开发环境中分别寻找“对象”窗口、“属性”窗口、工程资源
管理器、“窗体布局”窗口、“工具箱”窗口,熟悉它们的默认位置。
2)通过在“视图”菜单或工程资源管理器中切换显示代码窗口和“窗体”窗口。
3)在“视图”菜单中选择“立即窗口”命令,观察刚刚显示的“立即”窗口。
4)分别将各部分关闭,然后在“视图”菜单中选择对应的命令将其显示。
【实验1-2】 简单的程序设计
编写一个简单的应用程序。要求窗体的标题为“简单VB实验”,窗体中有一个标题
为“显示”的按钮,单击该按钮后在窗体上显示红色文字“湖北民族学院”。
1.界面设计
在窗体中创建1个命令按钮、1个标签,如图1-1所示。
图1-1 实验1-2窗体界面设计
2.属性设置
窗体中各个对象的属性按照表1-1进行设置。
第一部分 实验指导 3
表1-1 属性设置
对象名称 属性名称 属性值
Form1 Caption 简单VB实验
Label1 ForeColor 红色
Command1 Caption 显 示
图1-2 实验1-2程序运行结果
3.程序代码
Private Sub Command1_Click( )
Label1.Caption="湖北民族学院"
End Sub
4.运行程序
运行程序后,单击“显示”命令按钮,结果
如图1-2所示。
5.存盘
以“学号+VB1”为文件名对工程和窗体
进行存盘。思考:
为什么以上两种方法中在颜色的设置上有所不同?
【实验1-3】 控件属性应用
通过编程修改控件的属性。
1.界面设计
在窗体中创建1个标签、1个命令按钮。初始设计界面如图1-3所示。
图1-3 实验1-3窗体界面设计
2.属性设置
窗体中各个对象的属性按照表1-2进行设置。
表1-2 属性设置
对象名称 属性名称 属性值
Form1 Caption 设计界面
Label1 Caption 欢迎使用VB6.0
Command1 Caption 单击此处
科
学出版社
职教技术出版中心
www.abook.cn
4
3.程序代码
Private Sub Command1_Click( )
Form1.Caption="编程后界面"
Label1.Caption="第一个 VB 程序"
Command1.Caption="运行结果"
End Sub
图1-4 实验1-3程序运行结果
运行程序后,单击“单击此处”命令按钮,结果如图1-4所示。
4.存盘
以“学号+VB2”为文件名对工程和窗体
进行存盘。提示:
可 以 通 过 以 下 两 种 方 法 设 置 对 象 的
属性。
1)在设计模式下,通过属性窗口对该属
性进行修改或设置。
2)在运行模式下,通过程序语句动态地更改对象的属性。修改对象属性的语句格式如下。对象名.属性名称=新设置属性值
实验2 简单程序设计
一、 实验目的
1)掌握常量和变量、表达式的基本概念和正确书写格式。
2)掌握赋值语句和常用函数的正确使用方法。
3)掌握输入、输出对话框(InputBox和 MsgBox)的基本使用方法。
二、 实验内容
【实验2-1】 随机数的应用
编写程序,使得单击一次按钮可以产生一个[60,90]之间的随机数并显示在标签
Label1上,并求出该数的正弦值,将结果写在标签Label2上。
1.界面设计
在窗体中创建1个命令按钮、2个标签。
2.属性设置
窗体中各个对象的属性按照表2-1进行设置。
第一部分 实验指导 5
表2-1 属性设置
对象名称 属性名称 属性值
Form1 Caption 随机数的正弦值
Command1 Caption 下一个随机数
Label1 CaptionLabel2 Caption
3.程序代码
Private Sub Command1_Click( )
Dim x!, y!
Randomize
x=Rnd*31+60
y=Sin(x)
Label1.Caption="随机数(60-90):" & Str(x)
Label2.Caption= "正弦值:" & Str(y)
End Sub
4.运行程序
运行程序,结果如图2-1所示。
图2-1 实验2-1程序运行界面
5.存盘
以“学号+随机数”为文件名对工程和窗体进行存盘。思考:
怎样产生一个[60,90]之间的随机数?
【实验2-2】 温度转换
编写一个华氏温度(F)与摄氏温度(C)之间转换的应用程序,其中F与C之间的关系
为F=9/5C+32。
1.界面设计
在窗体中创建2个命令按钮、2个标签、2个文本框。
科
学出版社
职教技术出版中心
www.abook.cn
6
2.属性设置
窗体中各个对象的属性按照表2-2进行设置。
表2-2 属性设置
对象名称 属性名称 属性值
Form1 Caption 温度转换
Command1 Caption ≫
Command2 Caption ≪
Label1 Caption 华氏温度
Label2 Caption 摄氏温度
Text1 Text
Text2 Text
3.程序代码
Private Sub Command1_Click( )
Dim f! , c!
f=Val(Text1.Text)
c=(f-32)*5/9
Text2=Str(c)
End Sub
Private Sub Command2_Click( )
Dim f! , c!
c=Val(Text2.Text)
f=9 / 5*c+32
Text1 = Str(f)
End Sub
4.运行程序
运行程序,结果如图2-2所示。
图2-2 实验2-2程序运行界面
5.存盘
以“学号+温度”为文件名对工程和窗体进行存盘。
【实验2-3】 圆的计算
求圆的面积及圆柱体的体积。
第一部分 实验指导 7
1.界面设计
在窗体中创建2个命令按钮、4个标签和4个文本框。
2.属性设置
窗体中各个对象的属性按照表2-3进行设置。
表2-3 属性设置
对象名称 属性名称 属性值
Command1 Caption 求圆的面积
Command2 Caption 求圆柱的体积
Label1 Caption 圆的半径
Label2 Caption 圆柱的高
Label3 Caption 圆的面积
Label4 Caption 圆柱的体积
Text1、Text2、Text3、Text4 Text
3.程序代码
Private Sub Command1_Click( )
Dim r As Single, s As Single
r=Val(Text1.Text)
s=3.14159*r*r
Text3.Text=Str(s)
End Sub
Private Sub Command2_Click( )
Dim r!, h!, v!
r=Val(Text1.Text)
h=Val(Text2)
v=3.14159*r*r*h
Text4=v
End Sub
4.运行程序
运行程序,结果如图2-3所示。
图2-3 实验2-3程序运行界面
科
学出版社
职教技术出版中心
www.abook.cn
8
5.存盘
以“学号+圆”为文件名对工程和窗体进行存盘。
【实验2-4】 收费系统
编写一个简单的网吧收费系统。根据不同的上机时间x,上机费用y可以按以下公
式计算收费:
y=
2x x<32×0.9x 3≤x<52×0.8x 5≤x<102×0.75x 10≤
ì
î
í
ïïï
ïï
x1.界面设计
在窗体中创建1个命令按钮、2个标签和2个文本框。
2.属性设置
窗体中各个对象的属性按照表2-4进行设置。
表2-4 属性设置
对象名称 属性名称 属性值
Command1 Caption 计费
Label1 Caption 上机时间
Label2 Caption 上机费用
Text1、Text2 Text
3.程序代码
Private Sub Command1_Click( )
Dim x!, y!
x=Val(Text1)
IF x<3 Then
y=2*x
ElseIF x<5 Then
y=2*0.9*x
ElseIF x<10 Then
y=2*0.8*x
Else
y=2*0.75*x
End IF
Text2=Str(y)
End Sub
4.运行程序
运行程序,结果如图2-4所示。
第一部分 实验指导 9
图2-4 程序界面
5.存盘
以“学号+收费系统”为文件名对工程和窗体进行存盘。
实验3 顺序结构-选择结构程序设计
一、 实验目的
1)掌握顺序结构程序设计的一般方法。
2)掌握选择结构程序设计的一般方法。
3)掌握赋值语句的使用。
二、 实验内容
【实验3-1】 顺序结构的应用
输入一个圆的半径,计算它的面积。
1.界面设计
在窗体中创建3个标签、1个文本框和1个命令按钮。初始界面如图3-1所示。
图3-1 实验3-1窗体界面设计
2.属性设置
窗体中各个对象的属性按照表3-1进行设置。
科
学出版社
职教技术出版中心
www.abook.cn
10
表3-1 属性设置
对象 属性 属性值
Label1 Caption 请输入半径r:
Label2 Caption 圆的面积S为:
Label3CaptionBorderStyle 1-FixedSingle
Text1 TextCommand1 Caption 计算圆的面积
3.程序代码
Private Sub Command1_Click( )
Dim r As Single, area As Single
r=Text1.Text
area=3.14*r*r
Label3.Caption=area
End Sub
4.运行程序
运行程序后,在文本框中输入圆的半径,然后单击“计算圆的面积”按钮,即可在标签中
图3-2 实验3-1程序运行结果
输出圆的面积。程序运行结果如图3-2所示。
5.存盘
以“学号+面积”为文件名对工程和窗体
进行存盘。思考:
1)如何将求出的面积值在新建的文本框
中显示?
2)如果给定另一个参数———高,则应在
窗体中应如何设计对象? 如何求出对应参数
的圆锥体的体积?
【实验3-2】 选择结构的应用
税务部门征收个人所得税,规定如下。
图3-3 实验3-2窗体界面设计
1)个人收入≤3000元,免税。
2)3000元<个人收入≤5000元,按2%纳税。
3)个人收入>5000元,5000元按2%纳
税,超过5000元的部分按5%纳税。编程实现上述操作。
1.界面设计
在窗体中创建1个标签、1个文本框和2个命令按钮。初始界面如图3-3所示。
第一部分 实验指导 11
2.属性设置
窗体中各个对象的属性按照表3-2进行设置。
表3-2 属性设置
对象 属性 属性值
Label1 Caption 请输入个人收入:
Text1 Text
Command1 Caption 计算个税
Command2 Caption 退 出
3.程序代码
方法一:Private Sub Command1_Click( )
Dim m As Single,Dim r As Single
m=InputBox( "输入金额" )
IF m<=3000 Then
r=0
ElseIF m<=5000 Then
r=m*0.02
Else
r=5000*0.02+( m-5000 )*0.05
End IF
Print "应缴纳个人所得税:" ; r ; "元"
End Sub
Private Sub Command2_Click( )
End
End Sub
方法二:Private Sub Command1_Click( )
Dim m As Single , Dim r As Single
m=InputBox( "输入金额" )
Select Case money
Case Is <=3000
r=0
Case Is>5000
r=5000*0.02+(money-5000)*0.05
Case Else
r=m*0.02
End Select
Print "应缴纳个人所得税:" ; r ; "元"
End Sub
科
学出版社
职教技术出版中心
www.abook.cn
12
Private Sub Command2_Click( )
End
End Sub
4.运行程序
运行程序后,在文本框中输入个人收入,然后单击“计算个税”命令按钮,就会在标签
中输出应该缴纳的个人所得税。程序运行结果如图3-4所示。
图3-4 实验3-2程序运行结果
实验4 循环结构程序设计(一)
一、 实验目的
1)掌握循环结构的书写格式。
2)掌握For…Next循环结构程序设计方法。
3)掌握Do…While循环结构程序设计方法。
4)掌握循环的控制,防止无限循环。
二、 实验内容
【实验4-1】 For…Next循环结构基本应用
求1~100间所有奇数之和。
1.界面设计
在窗体中创建1个标签、1个文本框和1个命令按钮。初始界面如图4-1所示。
图4-1 实验4-1窗体界面设计
第一部分 实验指导 13
2.属性设置
窗体中各个对象的属性按照表4-1进行设置。
表4-1 属性设置
对象 属性 属性值
Label1 Caption 1~100间所有奇数之和:
Text1 Text
Command1 Caption 计 算
3.程序代码
Private Sub Command1_Click( )
For i=1 To 100 Step 2
s=s+i
Next i
Text1.Text=s
End Sub
4.运行程序
运行程序,单击“计算”命令按钮,将在文本框中输出相应的结果,如图4-2所示。
图4-2 实验4-1程序运行结果
5.存盘
以“学号+奇数和”为文件名对工程和窗体进行存盘。
思考:
1)在步长为默认值的情况下,如何求出正确结果?
2)如何求1~100间所有偶数之和?
【实验4-2】 For…Next循环结构高级应用
编程计算S=1+22+333+4444+…+n…n,其中n≤9。
1.界面设计
在窗体中创建1个标签、1个文本框和1个命令按钮。初始界面如图4-3所示。
2.属性设置
窗体中各个对象的属性按照表4-2进行设置。
科
学出版社
职教技术出版中心
www.abook.cn
14
图4-3 实验4-2窗体界面设计
表4-2 属性设置
对象 属性 属性值
Label1 Caption 1+22+333+4444+…+n…n=:
Text1 Text
Command1 Caption 计 算
3.程序代码
Private Sub Command1_Click( )
Dim s As Long , t As Long
s= 1
For n=1 to 9
t=0
For i = 1 to n
t=t*10+n
Next i
s=s+t
Next n
Text1.Text=s
End Sub
4.运行程序
运行程序,单击“计算”命令按钮,将在文本框中输出相应的结果,如图4-4所示。
图4-4 实验4-2程序运行结果
5.存盘
以“学号+数列和”为文件名对工程和窗体进行存盘。
第一部分 实验指导 15
【实验4-3】 Do…While循环结构应用
编程实现:目前世界人口约为65亿,如果以每年1.358%的速度增长,那么多少年后
世界人口达到或超过80亿?
1.程序代码
Private Sub Form_Click( )
Dim p As Double
Dim r As Single
p=6500000000#
r=0.01358
n=0
Do While p<8000000000#
p=p*( 1+r )
n=n+1
Loop
Debug.Print n ; "年后," ; "世界人口达" ; p
End Sub
运行程序后,单击窗体,在“立即”窗口输出结果为:16 年后,世界人口达 8065696496.49987
2.存盘
以“学号+人口”为文件名对工程和窗体进行存盘。
【实验4-4】 Exit的应用
编程求自然数的和,当和超过50000时结束计算,输出总和、所加的最后一个数以及
循环次数。程序代码如下。Private Sub Form_Click( )
Dim s As Long
For i =1 To 100000
n=n+1
s=s+i
IF s>50000 Then
Exit For
End IF
Debug.Print "所加总和为:s=" ; s
Debug.Print "所加的最后一个数为: " ; i
Debug.Print " 循环次数为: " ; n
Next i
End Sub
运行程序后,单击窗体,在“立即”窗口输出结果为:
科
学出版社
职教技术出版中心
www.abook.cn
16
所加总和为:s= 50086
所加的最后一个数为: 316
循环次数为: 316
实验5 循环结构程序设计(二)
一、 实验目的
1)在循环结构中使用各种函数。
2)掌握循环结构的嵌套应用。
二、 实验内容
【实验5-1】 求完数
求1~1000之间的所有完数和。所谓完数是指能被该数整除的所有数(不包括该数
本身)的和正好等于该数,如28=1+2+4+7+14,28即是完数。
1.界面设计
在窗体中创建2个标签、2个文本框和2个命令按钮。初始界面如图5-1所示。
图5-1 实验5-1窗体界面设计
2.属性设置
窗体中各个对象的属性按照表5-1进行设置。
表5-1 属性设置
对象 属性 属性值
Label1 Caption 所有的完数和为:
Label2 Caption 各个完数分别为:
Text1 TextText2 Text
Command1 Caption 计 算
Command1 Caption 退 出
3.程序代码
Private Sub Command1_Click( )
第一部分 实验指导 17
For i=1 To 1000
s=0
For j=1 To i/2
IF I Mod j=0 Then
s=s+j
End IF
Next j
IF i=s Then
Text1.Text=Text1.Text+" " +Str( s )
s1=s1+s
End IF
Next i
Text2=s1
End Sub
Private Sub Command2_Click( )
End
End Sub
4.运行程序
运行程序,单击“计算”按钮,将在文本框中输出相应的结果,如图5-2所示。
图5-2 实验5-1程序运行结果
5.存盘
以“学号+完数”为文件名对工程和窗体进行存盘。思考:
如完数之类的特殊数列,包括奇数、偶数、素数、水仙花数等,如何利用循环程序设计
实现数列的找寻?
【实验5-2】 找零
编程实现:将一张面值为100元的人民币等值换成若干张5元、1元和0.5元的零
钞,要求每种零钞不少于1张,一共100张,问有哪几种组合?
科
学出版社
职教技术出版中心
www.abook.cn
18
1.程序代码
Private Sub Form_Click( )
Print "5 元 1 元 0.5 元"
For i=1 To 20
For j=1 To 100-i
k=100-i-j
IF 5*i+1*j+0.5*k=100 Then
Print I, j, k
End IF
Next j
Next i
End Sub
2.运行程序
运行程序,结果如图5-3所示。
图5-3 实验5-2程序运行结果
3.存盘
以“学号+找零”为文件名对工程和窗体进行存盘。
【实验5-3】 求素数
利用For…Next循环和 While…Wend循环的嵌套求3位数的素数。
注意:
所谓3位数的素数就是指包含在100~999之间的素数。
1.程序代码
Private Sub Form_Click( )
For n=100 To 999
k=Int( Sqr( n ) )
i=2
swit=0
While i<=k And swit=0
IF n Mod i=0 Then
第一部分 实验指导 19
swit=1
Else
i=i+1
End IF
Wend
IF swit=0 Then
d=d+1
IF d Mod 5=0 Then
Print n ; " " ;
Else
Print n ; " " ;
End IF
End IF
Next n
End Sub
2.运行程序
运行程序,结果如图5-4所示。
图5-4 实验5-3程序运行结果
3.存盘
以“学号+素数1”为文件名对工程和窗体进行存盘。
实验6 数组的定义
一、 实验目的
1)掌握数组的基本概念。
2)掌握数组的声明和引用。
科
学出版社
职教技术出版中心
www.abook.cn
20
3)掌握一维、二维数组的定义和引用。
4)掌握矩阵的表示方法以及操作方法。
5)对比一维数组和二维数组。
6)进一步熟悉数组的基本操作,特别是LBound和UBound等函数的使用。
二、 实验内容
【实验6-1】 数组的定义
1.界面设计
在窗体中创建2个命令按钮,标题名称分别为“数组元素赋值”和“数组元素输出”,如图6-1所示。要求通过单击命令按钮以实现数组元素的赋值和数组元素的输出。
图6-1 实验6-1窗体界面设计
2.属性设置
窗体中各个对象的属性按照表6-1进行设置。
表6-1 属性设置
对象名称 属性名称 属性值
Command1 Caption 数组元素赋值
Command2 Caption 数组元素输出
3.程序代码
Dim a( 1 To 5 ) As Integer '定义一个大小为 5 的整型数组
'赋值命令按钮事件过程代码
Private Sub Command1_Click( )
For i=1 To 5
a(i)=Int(InputBox("请给第" & i & "个数组元素赋值: ") )
Next i
End Sub
'显示数组元素命令按钮事件过程代码
Private Sub Command2_Click( )
For i=1 To 5
Print "第" & i & "个数组元素是:";a(i)
第一部分 实验指导 21
Next i
End Sub
4.运行程序
运行程序后,单击“数组元素赋值”命令按钮,为数组的每个元素赋值,然后单击“数组
图6-2 实验6-1程序运行结果
元素输出”命令按钮,结果如图6-2所示。
5.存盘
以“学号+数组”为文件名对工程和窗体进
行存盘。思考:
1)如何改变数组元素的定义格式,以使用
不同个数的数组元素?
2)如何改变对数组元素的赋值方法?
3)如何处理数组元素的定义个数与数组元素的应用个数之间的多少问题?
【实验6-2】 数组的应用
1.界面设计
在窗体中创建3个命令按钮,在程序代码中定义3个3行4列的二维数组,要求单击
图6-3 实验6-2窗体设计界面
“第一矩阵”和“第二矩阵”命令按钮时,可分别
在窗体中显示第一个和第二个数组元素的值,数组元素的值通过键盘输入。通过单击“求和”命令按钮将在窗体中显示前面两个数组元素对
应元素的和。初始界面如图6-3所示。
2.属性设置
窗体中各个对象的属性按照表6-2进行
设置。
表6-2 属性设置
对象名称 属性名称 属性值
Command1 Caption 第一矩阵
Command2 Caption 第二矩阵
Command3 Caption 求 和
3.程序代码
Dim a(3, 4) As Integer
Dim b(3, 4) As Integer
Dim c(3, 4) As Integer
'第一矩阵数组元素赋值事件过程
Private Sub Command1_Click( )
Print "第一矩阵为: "
For i=1 To 3
科
学出版社
职教技术出版中心
www.abook.cn
22
For j=1 To 4
a( i , j )=InputBox("请给位于第"& i & "行"& j & "列的数组元素赋值:")
Print a( i , j );
Next j
Next i
End Sub
'第二矩阵数组元素赋值事件过程
Private Sub Command2_Click( )
Print "第二矩阵为: "
For i=1 To 3
For j=1 To 4
b( i , j )=InputBox("请给位于第" & i & "行" & j & "列的数组元素赋值:")
Print b( i , j );
Next j
Next i
End Sub
'第三矩阵数组元素赋值事件过程
Private Sub Command3_Click( )
Print "第三矩阵为:"
For i=1 To 3
For j=1 To 4
c( i , j )=a( i , j )+b( i , j )
Print c( i , j );
Next j
Next i
End Sub
4.运行程序
运行程序后,单击“第一矩阵”命令按钮产生矩阵A,单击“第二矩阵”命令按钮产生矩
图6-4 实验6-2程序运行结果
阵B,最后单击“求和”命令按钮,将产生前面
两个矩阵之和,即第三矩阵C,结果如图6-4所示。
5.存盘
以“学号+矩阵”为文件名对工程和窗体
进行存盘。思考:
1)过程中如何定义二维数组?
2)过程中如何定义二维数组元素的输出
格式?
第一部分 实验指导 23
3)如何正确选择一维数组与二维数组?
【实验6-3】 矩阵的应用
利用随机数(假设范围为10~100)产生一个4行4列的矩阵A,根据需求设计控件,并完成如下要求。
1)求矩阵的两对角线元素之和。
2)求矩阵的最大值和其下标。
3)分别输出矩阵的上三角和下三角元素。
4)将矩阵的第1行元素与第4行元素交换位置,即第1行变为第4行,第4行变为第
1行。
5)将矩阵的两对角线元素均设为1,其余均设为0。
6)保存。以学号为文件名对工程和窗体进行存盘。相关参考程序如下。Option Base 1
Dim a(4, 4)
'窗体载入初始化数组
Private Sub Form_Load( )
For i=LBound( a , 1) To UBound( a , 1)
For j=LBound( a , 2) To UBound( a , 2)
a( i , j )=Int(91*Rnd)+10
Next j
Next i
End Sub
'显示原始矩阵
Private Sub Command1_Click( )
For i=LBound( a , 1) To UBound( a , 1)
For j=LBound( a , 2) To UBound( a , 2)
a( i , j)=Int(91*Rnd)+10
Next j
Next i
Picture1.Cls
Picture1.Print "原始矩阵为:"
For i=LBound( a , 1) To UBound( a , 1)
For j=LBound( a , 2) To UBound( a , 2)
Picture1.Print Tab( (j-1)*4+1); a( i , j );
Next j
Picture1.Print
Next i
End Sub
'对角线之和
科
学出版社
职教技术出版中心
www.abook.cn
24
Private Sub Command2_Click( )
Dim s1, s2 's1 记录左对角线之和,s2 记录右对角线之和
s1=0: s2=0
For i=LBound( a , 1) To UBound( a , 1)
For j=LBound( a , 2) To UBound( a , 2)
IF i=j Then s1=s1+a( i , j )
IF i=5-j Then s2=s2+a( i , j )
Next j
Next i
Picture2.Cls
Picture2.Print "左对角线之和: "; s1
Picture2.Print "右对角线之和: "; s2
End Sub
'求最大值
Private Sub Command3_Click( )
Dim max, d1, d2 'max 记录最大值,d1 记录第 1 维下标,d2 记录第 2 维下标
max=a(1, 1)
For i=LBound( a , 1) To UBound( a , 1)
For j=LBound( a , 2) To UBound( a , 2)
IF a( i , j)>max Then
max=a( i , j)
d1=i
d2=j
End IF
Next j
Next i
Picture3.Cls
Picture3.Print "矩阵最大值为: " ; max
Picture3.Print "其位置(下标)为: 第" ; d1; "行,第" ; d2;"列"
End Sub
'上三角元素
Private Sub Command4_Click( )
Picture4.Cls
Picture4.Print "上三角矩阵为:"
For i=LBound( a , 1) To UBound( a , 1)
For j=i To UBound( a , 2)
Picture4.Print Tab((j-1)*4+1); a( i , j);
Next j
Picture4.Print
Next i
End Sub
'下三角元素
第一部分 实验指导 25
Private Sub Command5_Click( )
Picture5.Cls
Picture5.Print "下三角矩阵为:"
For i=LBound( a , 1) To UBound( a , 1)
For j=LBound( a , 2) To i
Picture5.Print a( i , j);
Next j
Picture5.Print
Next i
End Sub
'第 1 行和第 4 行交换位置
Private Sub Command6_Click( )
For j=LBound( a , 2) To UBound( a , 2)
tmp=a( 1 , j)
a( 1 , j)=a( 4 , j)
a( 4 , j)=tmp
Next j
Picture6.Cls
Picture6.Print "交换位置后的矩阵为:"
For i=LBound( a , 1) To UBound( a , 1)
For j=LBound( a , 2) To UBound( a , 2)
Picture6.Print Tab( (j-1)*4+1); a( i , j);
Next j
Picture6.Print
Next i
End Sub
'置数操作
Private Sub Command7_Click( )
For i=LBound( a , 1) To UBound( a , 1)
For j=LBound( a , 2) To UBound( a , 2)
IF i=j Or i= 5-j Then
a( i , j)=1
Else
a( i , j)=0
End IF
Next j
Next i
Picture7.Cls
Picture7.Print "重置后的矩阵为:"
For i=LBound( a , 1) To UBound( a , 1)
For j=LBound( a , 2) To UBound( a , 2)
Picture7.Print Tab((j-1)*4+1); a( i , j);
科
学出版社
职教技术出版中心
www.abook.cn
26
Next j
Picture7.Print
Next i
End Sub
实验7 数组的高级应用
一、 实验目的
1)进一步熟悉并掌握数组的定义以及应用。
2)复习并掌握数组的排序算法。
3)掌握合并排序算法。
二、 实验内容
【实验7-1】 数组排序
1.设计界面
如图7-1(a)所示,在窗体中创建1个标签、1个文本框、1个图片框和1个命令按钮,要求在文本框中输入杨辉三角的显示行数n,然后根据n值首先在标签中显示直角三角
形的杨辉三角形图案,然后通过修改源程序,将图案显示为等腰三角形,如图7-1(b)所示。
2.属性设置
窗体中各个对象的属性按照表7-1进行设置。
表7-1 属性设置
对象名称 属性名称 属性值
Label1 Caption 行数:
Picture1
Text1 Text
Command1 Caption 确定
3.程序代码
Dim a( ) As Integer, n As Integer
Private Sub Form_Click( )
Form1.Cls
n=Val( InputBox("请任意输入杨辉三角显示行数: " ) )
ReDim a( 1 To n, 1 To n )
For i=1 To n
a( i, 1 )=1
For j=2 To i
a( i, j )=a( i-1, j-1 )+a( i-1, j )
第一部分 实验指导 27
Next j
Next i
y=3
For i=1 To n
Picture1.Print Tab( y );
For j= 1 To i
Picture1.Print Format( a( i, j ), "! @@@ @@@@ " );
Next j
Next i
End Sub
4.存盘
以“学号+杨辉三角”为文件名对工程和窗体进行存盘。
图7-1 杨辉三角
【实验7-2】 控件数组
1.设计界面
在窗体中创建包含4个命令按钮的控件数组,当单击不同的按钮时,在窗体右侧的图
片框中显示不同的颜色。
2.属性设置
窗体中各个对象的属性按照表7-2进行设置。
表7-2 属性设置
对象名称 属性名称 属性值 Index
Command1 Caption 蓝色 0
Command2 Caption 红色 1
Command3 Caption 绿色 2
Command4 Caption 黄色 3
科
学出版社
职教技术出版中心
www.abook.cn
28
3.程序代码
Private Sub Command1_Click( Index As Integer )
Select Case Index
Case 0
Picture1.BackColor=vbBlue
Case 1
Picture1.BackColor=vbRed
Case 2
Picture1.BackColor=vbGreen
Case 3
Picture.BackColor=vbYellow
End Select
End Sub
4.运行程序
运行程序,结果如图7-2所示。
图7-2 实验7-2程序运行结果
5.存盘
以“学号+控件数组”为文件名对工程和窗体进行存盘。
实验8 子过程和函数的定义
一、 实验目的
1)掌握子过程和函数的定义。
2)掌握子过程和函数的调用格式。
二、 实验内容
【实验8-1】 子过程的定义和调用
编写一个求长方形面积的子过程,要求调用该子过程并在文本框中输入长方形的长
和宽后,可求出其面积。
1.设计界面
在窗体中创建3个标签、3个文本框和1个命令按钮,要求单击命令按钮时,根据标
第一部分 实验指导 29
签所对应的文本框的内容求面积,如图8-1所示。
图8-1 实验8-1窗体界面设计
2.属性设置
窗体中各个对象的属性按照表8-1进行设置。
表8-1 属性设置
对象名称 属性名称 属性值
Label1 Caption 长:
Label2 Caption 宽:
Label3 Caption 面积:
Text1 Text
Text2 Text
Text3 Text
Command1 Caption 求面积
3.程序代码
Private Sub command1_click( )
Dim m, n
m=Val(Text1.Text)
n=Val(Text2.Text)
Recarea m , n
Call Recarea(m , n)
End Sub
Sub Recarea(a , b)
Dim area
area=a*b
Text3.Text=area
End Sub
4.运行程序
运行程序后,在两个文本框中分别输入矩形的长和宽,单击“求面积”命令按钮,矩形
所对应的面积就会在第3个文本框中显示,结果如图8-2所示。
科
学出版社
职教技术出版中心
www.abook.cn
30
图8-2 实验8-1程序运行结果
5.存盘
以“学号+面积”为文件名对工程和窗体进行存盘。思考:
1)如何定义子过程?
2)如何完成子过程的调用?
【实验8-2】 函数的定义和调用
编写一个求素数的函数,并调用该函数求3~1000之间的素数。
1.界面设计
在窗体中创建1个文本框、1个标签和1个命令按钮,文本框用于显示3~1000的各个
数是否为素数,标签用于显示素数的个数,命令按钮用于启动对象,初始界面如图8-3所示。
图8-3 实验8-2窗体界面设计
2.属性设置
窗体中各个对象的属性按照表8-2进行设置。
表8-2 属性设置
对象名称 属性名称 属性值
Text1 TextLabel1 Caption
Command1 Caption 3~1000之间的素数
第一部分 实验指导 31
3.程序代码
Private Sub command1_click( )
For i=3 To 100
IF prime(i) Then
n=n+1
Text1=Text1+Str(i)+"是一个素数! " +vbCrLf
Else
Text1.Text=Text1.Text+Str(i)+"不是一个素数!" +vbCrLf
End IF
Next i
Label1.Caption="3~ 1000 之间共有" +Str(n)+"个素数!"End Sub
Function prime(j)
k=Int(Sqr(j))
x=2
swit=True
While x<=k And swit=True
IF j Mod x=0 Then
swit=False
Else
x=x+1
End IF
Wend
prime=swit
End Function
4.运行程序
运行程序后,单击“3~1000之间的素数”命令按钮,结果如图8-4所示。
图8-4 实验8-2程序运行结果
5.存盘
以“学号+素数2”为文件名对工程和窗体进行存盘。
科
学出版社
职教技术出版中心
www.abook.cn
32
思考:
1)如何定义函数?
2)如何完成子过程的调用?
3)函数的定义和调用与子过程的定义和调用有什么区别?
实验9 参数传递、过程与变量的作用域
一、 实验目的
1)掌握子过程和函数中参数的值传递方式和地址传递方式。
2)掌握数组作为参数如何传递的过程。
3)掌握过程的作用域。
4)掌握变量的作用域。
二、 实验内容
【实验9-1】 参数传递
编写一个求任意数的平方的函数,调用该函数求1~10的平方数。
1.设计界面
在窗体中创建1个标签和1个命令按钮,要求单击该命令按钮,在标签中显示1~10的平方数,初始界面如图9-1所示。
图9-1 实验9-1窗体界面设计
2.属性设置
窗体中各个对象的属性按照表9-1进行设置。
表9-1 属性设置
对象名称 属性名称 属性值
Label1 Caption
Command1 Caption 求平方
第一部分 实验指导 33
3.程序代码
Private Sub Command1_Click ( )
For i=1 To 10
t=0
Call x( i , t )
Label1.Caption=Label1.Caption & i & "的平方为:" & t & vbCrLf
Next i
End Sub
Private Sub x( j , k )
k=j*j
End Sub
4.运行程序
运行程序后,单击“求平方”命令按钮,结果如图9-2所示。
图9-2 实验9-1程序运行结果
5.存盘
以“学号+平方”为文件名对工程和窗体进行存盘。思考:
对照以上实验程序,分析与以下几段程序代码的区别。程序代码一:Private Sub Command1_Click ( )
For i=1 To 10
t=0
Call x( i , t )
Label1.Caption=Label1.Caption & i & "的平方为:" & t & vbCrLf
Next i
End Sub
Private Sub x( ByVal j , ByVal k )
k=j*j
End Sub
科
学出版社
职教技术出版中心
www.abook.cn
34
程序代码二:Private Sub Command1_Click ( )
For i=1 To 10
t=0
Call x( i , (t) )
Label1.Caption=Label1.Caption & i & "的平方为:" & t & vbCrLf
Next i
End Sub
Private Sub x(j , k )
k=j*j
End Sub
程序代码三:Private Sub Command1_Click ( )
For i=1 To 10
Call x( i , (t) )
Label1.Caption=Label1.Caption & i & "的平方为:" & t & vbCrLf
Next i
End Sub
Private Sub x( ByVal j , ByVal k )
k=j*j
End Sub
*【实验9-2】 过程的综合应用
汉诺塔问题:传说印度教的主神梵天创造世界时,在印度北部佛教圣地贝拿勒斯圣庙
中,安放了一块黄铜板,板上插着3根针,在其中1根针上自下而上放着由大到小的64个
圣盘。这就是所谓的汉诺塔,梵天要僧侣们按下面的规律把64个盘子移到另一根针上。
1)一次只能移一个盘子。
2)盘子只允许在3根针上存放。
3)永远不允许大盘压小盘。梵天称,当把这64个盘子全部移到另一根针上时,就是世界毁灭之日。请编制程序
解决该问题。程序代码如下。Dim pan(10) As Shape
Dim l(3) As Integer
Dim p(3) As Integer
Dim k As Integer
Dim h(3, 10) As Integer
Dim num As Integer
Private Sub Command1_Click( )
For i=1 To num
第一部分 实验指导 35
h(1, i)=i
Next i
p(1)=num
k=0
Call han(num, 1, 2, 3)
s=l(1): l(1)=l(3): l(3)=s
For i=1 To 3
p(i)=0
Next i
End Sub
Private Sub Form_Activate( )
num=Val(Text1.Text)
For i=1 To num
pan(i).Left=pan(i).Tag
pan(i).Visible=True
Next
For i=num+1 To 10
pan(i).Visible=False
Next i
For i=1 To 3
l(i)=Line1(i-1).x1
Next i
End Sub
Private Sub Form_Load( )
For i=1 To 10
Set pan(i)=Shape1(i-1)
pan(i).Tag=pan(i).Left
Next i
End Sub
Private Sub han(m As Integer, u As Integer, v As Integer, w As Integer)
IF m=1 Then
Call yd(u, w)
Else
Call han(m-1, u, w, v)
Call yidong(u, w)
Call han(m-1, v, u, w)
End IF
End Sub
Private Sub yd(x As Integer, y As Integer)
a=p(x)
科
学出版社
职教技术出版中心
www.abook.cn
36
b=p(y)+1
h(Y, b)=h(x, a)
pan(h(y, b)).Top=200
Call ys(0.1)
pan(h(y, b)).Left=l(y)-pan(h(y, b)).Width/2
Call ys(0.2)
pan(h(y, b)).Top=1700-p(y)*100
Call ys(0.1)
p(x)=a-1
p(y)=b
k=k+1
Label3.Caption="移动了"+LTrim(Str(k))+"次"
Form1.Refresh
End Sub
Private Sub ys(pausetime)
Dim start
start=Timer
Do While Timer<start+pausetime
Loop
End Sub
Private Sub Text1_Change( )
n=Val(Text1.Text)
IF n>2 And n<10 Then
Form_Activate
End IF
End Sub
【实验9-3】 过程的作用域
调用标准模块的全局过程求阶乘。窗体模块级程序代码如下,如图9-3(a)所示。Private Sub Command1_Click( )
Print Tab( 20 ) ; "p="; ( Module1.fac(3)+Module1.fac(5) )/fac(7)
End Sub
标准模块全局级过程代码如下,如图9-3(b)所示。Public Function fac( n ) As Single
p=1
For i=1 To n
p=p*i
Next i
第一部分 实验指导 37
fac=p
End Function
图9-3 标准模块全局过程调用代码窗口
在主调过程中,3次调用位于标准模块中的全局函数过程中,2次完整地表述了调用
方法,第3次调用则采用了默认表述。
【实验9-4】 变量的作用域
当下列程序运行时,单击窗体和命令按钮后,写出程序运行结果。Public x As Integer
Private Sub Form_Load( )
x=10
End Sub
Private Sub Form_Click( )
Dim x As Integer
x=10
Print x
Print Form1.x
End Sub
Private Sub Command1_Click( )
Print x
End Sub
实验10 常用内部控件的使用
一、 实验目的
1)掌握单选按钮、复选框和框架的使用方法。
2)掌握列表框控件和组合框控件的使用方法。
3)掌握时钟控件的使用方法。
4)掌握图片框控件和图像框控件的使用方法。
5)掌握滚动条控件的使用方法。
科
学出版社
职教技术出版中心
www.abook.cn
38
二、 实验内容
【实验10-1】 单选按钮、复选框和框架
对文本框中文本的字体、字型和颜色进行修改。
1.设计界面
在窗体中创建一个由单选按钮、复选框和框架组成的综合对象,如图10-1所示。
图10-1 实验10-1设置属性后的界面
2.属性设置
窗体中各个对象的属性按照表10-1进行设置。
表10-1 控件属性
Name属性 Caption属性值 Name属性 Caption属性值
Option1(0) 仿宋(F) Option2(1) 绿 色
Option1(1) 宋体(S) Option2(2) 蓝 色
Option1(2) 楷体(K) Frame1 字体
Check1(0) 粗体(B) Frame2 字型
Check1(1) 斜体(I) Frame3 颜色
Check1(2) 下划线(U) Text1 VB高级语言程序设计!
Option2(0) 红 色
3.程序代码
Option Explicit
Private Sub Form_Load( )
Text1.FontSize=20
Text1.FontName="黑体"
End Sub
Private Sub Option1_Click(Index As Integer)
Select Case Index
第一部分 实验指导 39
Case 0
Text1.FontName="仿宋_GB2312"
Case 1
Text1.FontName="宋体"
Case 2
Text1.Font.Name = "楷体_GB2312"
End Select
End Sub
Private Sub Option2_Click(Index As Integer)
Select Case Index
Case 0
Text1.ForeColor=RGB(255, 0, 0)
Case 1
Text1.ForeColor=VBGreen
Case 2
Text1.ForeColor=BBlue
End Select
End Sub
Private Sub Check1_Click(Index As Integer)
IF Check1(Index).Value=1 Then
Select Case Index
Case 0
Text1.Font.Bold=True
Case 1
Text1.FontItalic=True
Case 2
Text1.Font.Underline=True
End Select
Else
Select Case Index
Case 0
Text1.FontBold=False
Case 1
Text1.Font.Italic=False
Case 2
Text1.FontUnderline=False
End Select
End IF
End Sub
4.运行程序
运行程序,选择仿宋、粗体、斜体、蓝色,结果如图10-2所示。
科
学出版社
职教技术出版中心
www.abook.cn
40
图10-2 实验10-1程序运行界面
【实验10-2】 成绩评分系统
1.设计界面
在窗体中创建6个独立的科目标签、6个由控件数组组成的文本框、6个由控件数组
组成的检查框以及所对应的6个科目标签、1个总分标签、1个统计结果标签和1个统计
命令按钮。初始界面如图10-3所示。
图10-3 实验10-2窗体界面设计
2.属性设置
窗体中各个对象的属性按照表10-2进行设置。
表10-2 控件属性
Name属性 Caption属性值 Name属性 Caption属性值
Label1 语 文 Command1 统 计
Label2 数 学 Check1(0) Check1
Label3 英 语 Check1(1) Check2
Label4 物 理 Check1(2) Check3
Label5 化 学 Check1(3) Check4
Label6 体 育 Check1(4) Check5
Label7 总 分 Check1(5) Check6
Label8 Text1(0)
第一部分 实验指导 41
续表
Name属性 Caption属性值 Name属性 Caption属性值
Text1(1) Text1(4)
Text1(2) Text1(5)
Text1(3)
3.程序代码
Private Sub Form_Load( )
For i=0 To 5
Text1(i).Text=" "
Next i
Label8=" "
End Sub
Private Sub Text1_lostFocus(Index As Integer)
a=Val(Text1(Index).Text)
IF a <0 Or a >100 Or Not IsNumeric(Text1(Index).Text) Then
MsgBox " 不是有效成绩!"
Text1(Index).Text=""
Text1(Index).SetFocus
End IF
End Sub
Private Sub Command1_Click( )
s=0
For i=0 To 5
IF Check1(i).Value=Checked Then
s=s+Val(Text1(i).Text)
End IF
Next i
Label8=s
End Sub
4.运行程序
运行程序,任意选择4门科目,统计结果如图10-4所示。
图10-4 实验10-2程序运行结果
科
学出版社
职教技术出版中心
www.abook.cn
42
实验11 图形的制作
一、 实验目的
1)掌握VisualBasic的坐标系统。
2)掌握VisualBasic的基本绘图方法。
3)理解绘图过程中其他相关的基本概念。
二、 实验内容
【实验11-1】 绘制“金刚石”
设计一个窗体,用画线条的方法,在窗体中绘制出“金刚石”的图形。
1.界面设计
在窗体中创建1个命令按钮,标题名称为“绘制”,1个图片框。初始界面如图11-1所示。
图11-1 实验11-1窗体界面设计
2.属性设置
窗体中各个对象的属性按照表11-1进行设置。
表11-1 属性设置
对象名称 属性名称 属性值
Command1 Caption 绘 制
Picture1
3.程序代码
Private Sub Command1_Click( )
Const pi=3.14159
Picture1.ForeColor=RGB( Rnd*255 , Rnd*255 , Rnd*255 )
第一部分 实验指导 43
Picture1.Cls
n=10
x0=Picture1.Width / 2
y0=Picture1.Height / 2
r=y0*0.9
Dim px( ) , py( ) As Double
ReDim px(n) , py(n)
For i = 1 To n
px( i )=y0+r*Cos( i*2*pi / n )
py( i )=y0+r*Sin( i*2*pi / n )
For j=1 To i-1
Picture1.Line ( px( i ) , py( i ) )-( px( j ) , py( j ) )
Next j
Next i
End Sub
4.运行程序
运行程序后,单击“绘制”按钮,则显示如图11-2所示的图案。
图11-2 实验11-1程序运行结果
5.存盘
以“学号+金刚石”为文件名对工程和窗体进行存盘。
思考:
1)在编程过程中如何修改图案角个数?
2)如何使图形变得更大?
【实验11-2】 动态点阵图
设计一个窗体,以图片框为画板,在画板上绘制动态的点阵。
科
学出版社
职教技术出版中心
www.abook.cn
44
1.界面设计
在窗体中创建2个命令按钮、1个图片框和1个计时器控件,初始界面如图11-3所示。
图11-3 实验11-2窗体界面设计
2.属性设置
窗体中各个对象的属性按照表11-2进行设置。
表11-2 属性设置
对象名称 属性名称 属性值
command1 Caption 开 始
command2 Caption 结 束
Picture1
Timer1Enabled False
Interval 40
3.程序代码
Dim x , y As Integer , r As Integer
Private Sub Command1_Click( )
Command1.Caption =" 继续…"
Timer1.Enabled=True
Command1.Enabled=False
Command2.Enabled=True
End Sub
Private Sub Command2_Click( )
Timer1.Enabled=False
Command2.Enabled=False
Command1.Enabled=True
End Sub
Private Sub Form_load( )
Picture1.AutoRedraw=True
Picture1.DrawWidth=4
第一部分 实验指导 45
x=Picture1.Width / 2
y=Picture1.Height / 2
r=1000
End Sub
Private Sub timer1_timer( )
Static i As Single
Picture1.Cls
i=i+0.2
For j=1 To 32
Picture1.PSet (x+Cos((i+j)*3.14 / 16)*r, y+Sin((i + j)*3.14 / 16)*r) , _
QBColor(1)
Next j
For j=1 To 16
Picture1.PSet (x+Cos((i+j)*3.14 / 8)*r / 2, y+Sin((i+j)*3.14 / 8) _
*r / 2), QBColor(1)
Next j
For j=1 To 32
Picture1.PSet (x+Cos((i+j)*3.14 / 16)*r*3 / 4, y+Sin((i+j)*3.14 / 16) _
*r*3 / 4), QBColor(1)
Next j
For j=1 To 16
Picture1.PSet (x+Cos((i+j)*3.14 / 8)*r / 4, y+Sin((i+j)*3.14 / 8) _
*r / 4), QBColor(1)
Next j
End Sub
4.运行程序
运行程序后,单击“开始”按钮,则显示如图11-4所示的点阵图。
图11-4 实验11-2程序运行结果
科
学出版社
职教技术出版中心
www.abook.cn
46
5.存盘
以“学号+点阵图”为文件名对工程和窗体进行存盘。
思考:
1)在编程过程中如何增加点阵的圈数?
2)如何改变点阵的颜色?
3)如何描述椭圆的点阵图?
4)如何将点阵图修改为水平方向的对称陀螺形状?
实验12 界 面 设 计
一、 实验目的
1)了解通用对话框的特征。
2)掌握通用对话框的使用方法。
3)了解菜单的使用方法和功能。
4)掌握窗体菜单的设计方法。
二、 实验内容
【实验12-1】 设计通用对话框
在窗体中利用通用对话框创建一个文本编辑器,文本编辑器由RichTextBox控件生
成,“新建”、“打开”、“另存为”、“格式”、“颜色”由1个命令按钮控件数组生成。
1.设计界面
在窗体中利用通用对话框创建一个文本编辑器,在文本编辑器中使用水平滚动条和
垂直滚动条;由6个命令按钮组成命令按钮控件数组,对应的名称分别为“新建”、“打开”、“另存为”、“格式”、“颜色”、“退出”,如图12-1所示。
图12-1 实验12-1窗体界面设计
第一部分 实验指导 47
2.属性设置
窗体中各个对象的属性按照表12-1进行设置。
表12-1 属性设置
对象名称 属性名称 属性值
RichTextBox1 Text
CommonDialog1
Command1 Caption 新建
Command1 Caption 打开
Command1 Caption 另存为
Command1 Caption 格式
Command1 Caption 颜色
Command2 Caption 退出
3.程序代码
Private Sub Command1_Click( Index As Integer )
Select Case Index
Case 0
Call fnew
Case 1
Call fopen
Case 2
Call fsave
Case 3
Call cfont
Case 4
Call ccolor
End Select
End Sub
Private Sub fnew( )
IF Trim( RichTextBox1.Text ) <>" " Then
t=MsgBox("是否保存" , vbYesNo+vbInformation+vbDefaultButton2 )
IF t=vbYes Then
Call Fsave
RichTextBox1.Text=" "
Else
RichTextBox1.Text=" "
End IF
End IF
End Sub
Private Sub Fopen( )
IF Trim( RichTextBox1.Text ) <>" " Then
科
学出版社
职教技术出版中心
www.abook.cn
48
t=MsgBox("是否放弃保存", vbYesNo+vbInformation+vbDefaultButton2 )
IF t=vbYes Then
CommonDialog1.Filter="txt 文件(*.txt)|*.txt|所有文件|*.*"
CommonDialog1.Action=1
RichTextBox1.FileName=CommonDialog1.FileName
End IF
Else
CommonDialog1.Filter="txt 文件(*.txt)|*.txt|所有文件|*.*"
CommonDialog1.Action=1
RichTextBox1.FileName=CommonDialog1.FileName
End IF
End Sub
Private Sub Fsave( )
CommonDialog1.Filter="txt 文件(*.txt)|*.txt"
CommonDialog1.Action=2
RichTextBox1.SaveFile ( CommonDialog1.FileName )
End Sub
Private Sub cfont( )
CommonDialog1.Flags=cdlCFBoth Or cdlCFEffects
CommonDialog1.ShowFont
RichTextBox1.SelFontName=CommonDialog1.FontName
RichTextBox1.SelFontSize=CommonDialog1.FontSize
RichTextBox1.SelBold=CommonDialog1.FontBold
RichTextBox1.SelItalic=CommonDialog1.FontItalic
RichTextBox1.SelUnderline=CommonDialog1.FontUnderline
RichTextBox1.SelStrikeThru = CommonDialog1.FontStrikethru
RichTextBox1.SelColor=CommonDialog1.Color
End Sub
Private Sub ccolor( )
CommonDialog1.Action=3
RichTextBox1.SelColor=CommonDialog1.Color
End Sub
Private Sub command2_click( )
End
End Sub
4.运行程序
运行程序后,在文本编辑器中任意录入一些文本内容,通过选择其中一部分文本内
容,并单击文本框下面的按钮,就可以对选中的文本内容进行选择性的操作。示例操作结
果如图12-2所示。
5.存盘
以“学号+文本编辑器”为文件名对工程和窗体进行存盘。
第一部分 实验指导 49
图12-2 实验12-1程序运行结果
思考:
1)编程过程中是否可以用简单文本框替换文本编辑器?
2)编程过程中如何设置水平滚动条和垂直滚动条?
【实验12-2】 设计菜单
在窗体中放置一个文本框,设计一个含“字体”菜单和“颜色”菜单的菜单系统。其中,“字体”菜单包含“粗体”、“斜体”和“自定义”3个命令;“颜色”菜单包含“红色”、“绿色”、“蓝色”和“自定义”命令。另外,可通过鼠标右键打开“颜色”菜单。
1.设计界面
在窗体中创建一个CommonDialog和一个命令按钮,通过菜单编辑器完成相应的菜
单设计。初始界面如图12-3所示。
图12-3 实验12-2窗体界面设计
2.属性设置
窗体中各个对象的属性按照表12-2和表12-3进行设置。
科
学出版社
职教技术出版中心
www.abook.cn
50
表12-2 标题名称
标题 名称 标题 名称
字体 DFont ……蓝色 Blue颜色 Color ……绿色 Green
……红色 Red
表12-3 属性设置
控件名称 属性 属性值
Text1 TextCommand1 Caption 存 盘
Command2 Caption 退 出
3.程序代码
Private Sub DFont_Click( )
CommonDialog1.Flags=cdlCFBoth Or cdlCFEffects
CommonDialog1.ShowFont
IF CommonDialog1.FontName>" " Then
Text1.FontName=CommonDialog1.FontName
End IF
Text1.FontSize=CommonDialog1.FontSize
Text1.FontBold=CommonDialog1.FontBold
Text1.FontItalic=CommonDialog1.FontItalic
Text1.FontStrikethru=CommonDialog1.FontStrikethru
Text1.FontUnderline=CommonDialog1.FontUnderline
Text1.ForeColor=CommonDialog1.Color
End Sub
Private Sub color_Click( )
IF Text1.Text=" " Then
Red.Enabled=False
Blue.Enabled=False
Green.Enabled=False
Else
Red.Enabled=True
Blue.Enabled=True
Green.Enabled=True
End IF
End Sub
Private Sub red_Click( )
Text1.ForeColor=vbRed
End Sub
Private Sub blue_Click( )
Text1.ForeColor=vbBlue
End Sub
Private Sub green_Click( )
第一部分 实验指导 51
Text1.ForeColor=vbGreen
End Sub
Private Sub DColor_Click( )
CommonDialog1.CancelError=False
CommonDialog1.ShowColor
Text1.ForeColor=CommonDialog1.Color
End Sub
Private Sub Command1_Click( )
CommonDialog1.CancelError=True
CommonDialog1.DefaultExt="TXT"
CommonDialog1.FileName="lbw.txt"
CommonDialog1.Filter="Text files(*.txt)|*.TXT| ALL Files(*.*)|*.*"
CommonDialog1.FilterIndex=1
CommonDialog1.DialogTitle="Save File As (*.TXT) "
CommonDialog1.Flags=vbOFNOverwritePrompt Or vbOFNPathMustExist
CommonDialog1.Action=2
End Sub
Private Sub Command2_Click( )
End
End Sub
4.运行程序
运行程序后,在文本框中任意录入一些文本内容,通过选择菜单命令,就可以对选中
的文本内容进行选择性的操作。操作结果如图12-4所示。
图12-4 实验12-2程序运行结果
5.存盘
以“学号+菜单”为文件名对工程和窗体进行存盘。思考:
1)编程过程中如何选择性地对文本进行操作?
2)编程过程中如何加载新的菜单选项?
科
学出版社
职教技术出版中心
www.abook.cn
52
实验13 文 件 管 理
一、 实验目的
1)掌握顺序文件、随机文件、二进制文件的使用方法。
2)掌握文件打开和关闭的方法。
3)掌握文件的读写方法。
4)了解文件系统控件的使用。
二、 实验内容
【实验13-1】 顺序文件
利用文件系统控件、组合框、文本框,制作一个文件浏览器,要求组合框限定文件列表
框中显示文件的类型,如选中"*.txt"文件。当在文件列表框选中要显示的文件时,在文
本框中显示该文件的内容。
1.界面设计
在窗体中创建1个驱动器列表框、1个目录列表框、1个文件列表框、1个组合框以及
1个文本框。初始界面如图13-1所示。
图13-1 实验13-1窗体界面设计
2.属性设置
窗体中各个对象的属性按照表13-1进行设置。
表13-1 属性设置
对象名称 属性名称 属性值
Drive1
Dir1
File1
Combo1 Style 2
Text1Multilinetrue True
ScrollBars 3
第一部分 实验指导 53
3.程序代码
Private Sub Drive1_Change( )
Dir1.Path=Drive1.Drive
End Sub
Private Sub Dir1_Change( )
File1.Path=Dir1.Path
End Sub
Private Sub File1_Click( )
Text1.Text=""
IF Right( Dir1.Path, 1)="\"Then
f=Dir1.Path & File1.FileName
Else
f=Dir1.Path & "\" & File1.FileName
End IF
Open f For Input As # 1
Do While Not EOF(1)
Line Input # 1 , s
Text1.Text=Text1.Text+s+vbCrLf
Loop
Close #1
End Sub
Private Sub Combo1_Click( )
Select Case Combo1.Text
Case "所有文件(*.*)"
filetype="*.*"
Case "图片文件(*.jpg)"
filetype="*.jpg"
Case "文本文件(*.txt)"
filetype="*.txt"
End Select
File1.Pattern=filetype
End Sub
Private Sub Form_Load( )
Combo1.AddItem "所有文件(*.*)"
Combo1.AddItem "图片文件(*.jpg)"
Combo1.AddItem "文本文件(*.txt)"
Combo1.ListIndex=2
End Sub
4.运行程序
运行程序后,选择某一个驱动器,在其中选择某一个文件夹,再选择“文本文件
(*.txt)”类型,在文件列表框中就会列出相应的文件,选中某一个文件,在右侧的文本框
科
学出版社
职教技术出版中心
www.abook.cn
54
中就会显示文件的内容,结果如图13-2所示。
图13-2 实验13-1程序运行结果
5.存盘
以“学号+顺序文件”为文件名对工程和窗体进行存盘。思考:
1)如何显示图片格式文件?
2)如何显示音频格式文件?
【实验13-2】 随机文件
设计一个窗体,将某个学生的学号、姓名、性别、成绩输入到一个名为“xs.dat”的随机
文件中。
1.界面设计
在窗体中创建5个标签、4个文本框、2个单选按钮和2个命令按钮。初始界面如
图13-3所示。
图13-3 实验13-2窗体界面设计
2.属性设置
4个文本框使用Text1控件数组,2个单选按钮使用Option1控件数组。窗体中各个对象的属性按照表13-2进行设置。
第一部分 实验指导 55
表13-2 属性设置
对象名称 属性名称 属性值
Label1 Caption 学 号
Label2 Caption 姓 名
Label3 Caption 性 别
Label4 Caption 年 龄
Label5 Caption 成 绩
Text1 Text
Option1 Caption 男
Option1 Caption 女
Command1 Caption 输入信息
Command2 Caption 退 出
3.程序代码
Private Sub Command1_Click( )
Dim no As String*5
Dim name As String*10
Dim sex As String*2
Dim age As Integer
Dim cj As Single
no=Text1(0).Text
name=Text1(1).Text
sex=IIF(Option1(0).Value, "男" , "女")
age=Val(Text1(2).Text)
cj=Val(Text1(3).Text)
Write #1 , no , name , sex , age , cj
For i=0 To 3
Text1( i ).Text=" "
Next i
Option1(0).Value=True
Text1(0).SetFocus
End Sub
Private Sub Command2_Click( )
Close #1
End
End Sub
Private Sub Form_Load( )
Open "xs.dat" For Append As #1
End Sub
4.运行程序
运行程序后,在相应的文本框中录入学生的信息,如图13-4所示。退出后可以在默
认目录下找到并打开文件“xs.dat”,即可看到所录入学生的相关信息,如图13-5所示。
科
学出版社
职教技术出版中心
www.abook.cn
56
图13-4 学生信息录入状态
图13-5 随机文件存储结果
5.存盘
以“学号+随机文件”为文件名对工程和窗体进行存盘。思考:
1)如何添加照片信息?
2)如何实现随机文件的覆盖操作?