Visua lBasic实验实训指导书.docx
《Visua lBasic实验实训指导书.docx》由会员分享,可在线阅读,更多相关《Visua lBasic实验实训指导书.docx(37页珍藏版)》请在冰豆网上搜索。
![Visua lBasic实验实训指导书.docx](https://file1.bdocx.com/fileroot1/2023-1/8/5c4d6297-265c-47c9-b12c-ab95db804992/5c4d6297-265c-47c9-b12c-ab95db8049921.gif)
VisualBasic实验实训指导书
Visual
Basic
实
验
实
训
指
导
书
前言
《VisualBasic程序设计》是一门实践性很强的课程,在教学过程中应十分重视实践环节,加强动手能力的培养。
初学程序设计的学生往往在老师讲课时能听得懂,自己动手时却不知如何下手,为此我们特编写了此《VisualBasic程序设计实验指导书》,与课程的理论教材配套使用。
全书分为两大部分:
实验和实训。
其中实验包括了7个实验项目,主要内容包括VisualBasic语言基础(数据类型、运算符、表达式的使用),三种程序设计结构,数组的应用,基本控件的属性、方法与事件及其使用,文件系统控件的使用,菜单编辑器的使用及菜单的设计和多窗体应用的程序设计。
每个实验项目有实验目的、实验内容和问题讨论三部分组成。
实验的参考程序多样,界面丰富多彩,具有开拓思维的启发作用。
实训包含五个小程序,分别是调色板、计算器、记事本、看图器和时钟。
通过实训主要是培养学生基本的编程思路和掌握简单的算法,了解VisualBasic开发小型应用程序的整个过程。
本书在取材与编写上立足与教材同步,但又不失自己独立性与完整性,可单独作为VisualBasic程序设计的上机实例使用。
书中所有参考程序都可以在VisualBasic6.0企业版下正常运行。
目录
实验一:
数据类型、运算符、表达式的使用2
实验一:
数据类型、运算符、表达式的使用3
实验一:
数据类型、运算符、表达式的使用4
实验二:
三种程序设计结构5
实验三:
数组的应用7
实验四:
基本控件的属性、方法与事件及其应用11
实验五:
文件系统控件的使用16
实验六:
菜单编辑器的使用及菜单的设计18
实验七:
多窗体应用程序的设计22
实训24
课程学时分配34
实验说明35
实验一:
数据类型、运算符、表达式的使用
[实验目的]
1.掌握VB数据类型的基本概念。
2.掌握变量、常量的定义方法、各种运算符和表达式的使用。
[实验内容]
1.先手工计算下列表达式的值,然后上机验证(在立即窗口中完成)。
(1)8Mod3*2/5
(2)7/3*3*(4^3)Mod5
(3)”abc”+”123”&”456”
(4)297.5+”0.5”
(5)4<8and5<>6
(6)flaseornot(3+4>=7)
(7)(falseandtrue)ornot(trueorfalse)
(8)1/3*3<>1
2.当
(1)a=27,b=4
(2)a=27,b=-4(3)a=-27,b=4(4)a=-27,b=-4,分别求a/b,a\b,aModb的值,并总结运算符/、\、Mod的区别
3.设a,b,c为布尔型变量,且a=true,b=false,c=true,求下列表达式的值(先手工计算,后上机验证)
(1)aAndNotbImpc
(2)NotaEquNotb
(3)notaandb
(4)(notbOrc)and(bOrc)
(5)not(aOrb)and(bandc)
(6)aXorbOrc
[问题讨论]
1.简述各种运算符、表达式综合使用的运算顺序。
2.区别运算符/、\、Mod。
3.如何在立即窗口中验证表达式的值。
实验二:
三种程序设计结构
[实验目的]
1.掌握Let语句、Print方法、InputBox函数、MsgBox函数及过程、注释语句的用法。
2.熟悉选择结构程序设计,灵活使用有关选择结构语句(行If语句、块If语句、情况语句、选择结构的嵌套)解决实际问题。
3.熟悉循环结构程序设计,灵活使用各种循环语句解决实际问题。
[实验内容]
1.顺序结构
编制程序:
自由落体运动的位移公式为:
S=1/2*g*t^2+V0t。
其中V0为初始速度;g为重力加速度;t为经历的时间;求位移量S。
要求:
将g定义成符号常量,V0和t的值用InputBox函数输入。
代码如下:
PrivateSubForm_click()
DimV0assingle,tassingle
Constg=9.8
V0=Val(InputBox(”请输入初速度”,”输入对话框”))
S=1/2*g*t^2+V0t
Print“位移为:
”;S
EndSub
2.选择结构
编程序求一元二次方程:
a*x^2+b*x+c=0的两个根。
PrivateSubForm_click()
Dima,b,c,det,x1,x2
a=Val(InputBox(“请输入二次项系数”,”输入数据”))
b=Val(InputBox(“请输入一次项系数”,”输入数据”))
c=Val(InputBox(“请输常数项”,”输入数据”))
ifa=0Then
Print”二次项系数不能为0”
Else
det=b*b-4*a*c
Ifdet>=0Then
x1=(-b+sqr(det))/(2*a)
x2=(-b-sqr(det))/(2*a)
Print“x1=”;x1
Print“x2=”;x2
Else
Print“x1=”;str((-b)/(2*a));”+”str(Abs(sqr(-det))/2*a)&”i”
Print“x2=”;str((-b)/(2*a));”-”str(Abs(sqr(-det))/2*a)&”i”
EndIf
EndIf
EndSub
3.循环结构
编程乘法口诀表:
PrivateSubForm_click()
Dimiasinteger,jasinteger
Fori=1to9
Forj=1toI
Printi;”*”;j;”=”;i*j
Next
Next
EndSub
[问题讨论]
1.试分析If—Then—Else结构和SelectCase结构的异同点。
2.在For…Next循环中,试分析循环初值、终值和步长的关系。
3.ExitDo语句的作用是什么?
它可以在哪些循环中使用?
4.练习
(1)设计一个程序显示10个两位整数的随机数。
(2)用InputBox$函数输入一个正整数,若输入正确,计算其平方根
(3)求百钱买百鸡问题。
实验三:
数组的应用
[实验目的]
1.掌握数组的定义方法。
2.正确理解和使用数组元素的下标,掌握数组元素的使用、赋值、输入和输出。
3.使用数组解决实际问题。
[实验内容]
1.静态数组
随机产生10个两位整数,找出其最大值、最小值和平均值
设计步骤如下:
建立应用程序用户界面与设置对象属性。
编写代码。
考虑到要在不同的过程中使用数组,所以首先在模块的通用段声明数组:
Dima(1To10)AsInteger
随机整数的生成由窗体的Load事件代码完成:
PrivateSubForm_Load()
DimpAsString
Randomize
p=""
Fori=1To10
a(i)=Int(Rnd*90)+10
p=p&Str(a(i))&","
Next
Label1.Caption=LTrim(Left(p,Len(p)–1))
EndSub
“重置”按钮Command1的Click事件代码:
PrivateSubCommand1_Click()
Form_Load
Text1.Text=""
Text2.Text=""
Text3.Text=""
EndSub
求最大、最小以及平均值由“确定”按钮Command2的Click事件代码完成:
PrivateSubCommand2_Click()
DimnAsInteger,mAsInteger,sAsSingle
min=100:
max=10:
s=0
Fori=1To10
Ifa(i)>nThenmax=a(i)
Ifa(i)s=s+a(i)
Next
Text1.Text=max
Text2.Text=min
Text3.Text=s/10
EndSub
最后是“关闭”按钮Command3的Click事件代码:
PrivateSubCommand3_Click()
UnloadMe
EndSub
(1)在“重置”按钮的Click事件代码中,通过调用窗体的Load事件过程来重新产生随机数。
(2)如果要求产生的随机整数互不相同,应改写窗体的Load事件代码:
PrivateSubForm_Load()
DimpAsString
Randomize
p=""
Fori=1To10
Do
x=Int(Rnd*90)+10
yes=0
Forj=1Toi-1
Ifx=a(j)Thenyes=1:
ExitFor'如与前面的元素相同,则返回到Do循环
Next'重新产生随机数
LoopWhileyes=1
a(i)=x
p=p&Str(a(i))&","
Next
Label1.Caption=LTrim(Left(p,Len(p)-1))
EndSub
2.动态数组
编程序,输出杨辉三角形(国外称Pascal三角形)
建立应用程序用户界面与设置对象属性。
编写代码。
在模块的通用段声明数组一个动态数组:
Dima()
为了使输入所需项数并按回车后可以得到各项,编写文本框Text1的按健(KeyPress)事件代码:
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
DimnAsInteger
IfKeyAscii=13Then
n=Val(Text1.Text)
Ifn>16Then
MsgBox"请不要超过16"
ExitSub
EndIf
ReDima(n,n)
Fori=1Ton
a(i,1)=1:
a(i,i)=1
Next
p=Format(1,"!
@@@@")&Chr(13)
p=p&Format(1,"!
@@@@")&Format(1,"!
@@@@@")&
Fori=3Ton
p=p&Format(a(i,1),"!
@@@@")
Forj=2Toi–1
a(i,j)=a(i–1,j–1)+a(i–1,j)
p=p&Format(a(i,j),"!
@@@@@")
Next
p=p&Format(a(i,i),"!
@@@@@")&Chr(13)
Next
MsgBoxp,0,"杨辉三角形"
EndIf
EndSub
[问题讨论]
1.静态数组与动态数组的使用。
2.常用数组解决的问题有那些?
实验四:
基本控件的属性、方法与事件及其应用
[实验目的]
1.图片框、图像框、单选钮、复选钮、组合框、列表框的练习和比较。
2.掌握定时器、框架、滚动条的应用。
[实验内容]
1.设计程序,利用图片框的属性和方法加载、清除图形。
如图所示
2.定时器
利用定时器显示当前系统时间,同时用图像框显示三个笑脸。
3.单选按钮、复选按钮、框架
PrivateSubCheck1_Click()
IfCheck1.ValueThen
Text1.FontBold=True
Else
Text1.FontBold=False
EndIf
EndSub
PrivateSubCheck2_Click()
IfCheck2.ValueThen
Text1.FontItalic=True
Else
Text1.FontItalic=False
EndIf
EndSub
PrivateSubCheck3_Click()
IfCheck3.ValueThen
Text1.FontUnderline=True
Else
Text1.FontUnderline=False
EndIf
EndSub
PrivateSubOption1_Click()
Text1.FontName="宋体"
EndSub
PrivateSubOption2_Click()
Text1.FontName="楷体_gb2312"
EndSub
PrivateSubOption3_Click()
Text1.FontSize=18
EndSub
PrivateSubOption4_Click()
Text1.FontSize=36
EndSub
4.列表框、组合框
代码:
Dimpos(7)AsString
PrivateSubForm_Load()
Command1.Font.Size=12
Command1.Caption="退出"
WithList1
.FontSize=12
.AddItem"东岳泰山"
.AddItem"南岳衡山"
.AddItem"中岳嵩山"
.AddItem"西岳华山"
.AddItem"北岳恒山"
.AddItem"五台山山"
.AddItem"黄山"
.AddItem"峨眉山"
.Selected(0)=True
EndWith
pos(0)="在山东泰安市境内"
pos
(1)="在湖南衡山县境内"
pos
(2)="在河南登封县境内"
pos(3)="在陕西华阴县境内"
pos(4)="在山西浑源县境内"
pos(5)="在山西五台山境内"
pos(6)="在安徽南部境内"
pos(7)="在四川乐山地区"
Text1.FontSize=12
Text1=List1.Text+pos(0)
EndSub
PrivateSubList1_Click()
DimiAsInteger
Fori=0To(List1.ListCount-1)
IfList1.Selected(i)=TrueThen
Text1=List1.Text+pos(i)
EndIf
NextI
EndSub
5.计时器、滚动条
代码如下:
OptionExplicit
DimrAsInteger,gAsInteger,bAsInteger
PrivateSubCommand1_Click()
Timer1.Enabled=True
EndSub
PrivateSubCommand2_Click()
Timer1.Enabled=False
EndSub
PrivateSubTimer1_Timer()
RandomizeTimer
r=Int(Rnd*256)
g=Int(Rnd*256)
b=Int(Rnd*256)
HScroll1.Value=r
Label4.Caption=r
HScroll2.Value=g
Label5.Caption=g
HScroll3.Value=b
Label6.Caption=b
Text1.ForeColor=RGB(r,g,b)
EndSub
[问题讨论]
1.列表框与组合框有什么区别?
2.单选按钮与复选按钮的区别?
3.什么是容器控件,它有什么样的特点?
4.滚动条的 Change事件与Scroll事件有什么不同?
实验五:
文件系统控件的使用
[实验目的]
1.掌握驱动器列表框、目录列表框、文件列表框三个文件系统控件的使用。
2.掌握三个文件系统控件的组合方法。
3.图像框的使用。
[实验内容]
制作一个如下图所示的图片查看器:
要求:
1。
驱动器列表框、目录列表框、文件列表框必须配合使用,并且在目录名位置显示路径。
2.能够通过列表框中文件类型的选择可使在文件列表框中显示该类型的文件。
3.图片在图像框中显示
PrivateSubCombo1_Click()
File1.Pattern=Combo1.Text
File1.Path=Dir1.Path
EndSub
PrivateSubDir1_Change()
File1.Path=Dir1.Path
Label4.Caption=Dir1.Path
EndSub
PrivateSubDrive1_Change()
Dir1.Path=Drive1.Drive
EndSub
PrivateSubFile1_Click()
Text1.Text=File1.FileName
Image1.Picture=LoadPicture(File1.Path+"\"+Text1.Text)
EndSub
PrivateSubForm_Load()
Label4.Caption=Dir1.Path
Combo1.AddItem("*.jpg")
Combo1.AddItem("*.ico")
Combo1.Text="*.jpg"
File1.Pattern="*.jpg"
EndSub
[问题讨论]
1.驱动器列表框、目录列表框、文件列表框三个文件系统控件如何配合使用。
2.文件列表框Pattern属性的使用。
3.讨论一下能否用图片框代替图像框。
实验六:
菜单编辑器的使用及菜单的设计
[实验目的]
1.熟练掌握窗口菜单的规划、设计和使用方法。
2.掌握弹出式菜单设计和使用方法。
3.掌握工具栏设计和应用方法。
[实验内容]
1.菜单
(1)菜单编辑器的使用
(2)下拉式菜单
利用菜单来控制标题板的内容、字体、字体风格等,如图所示
打开菜单编辑器设计菜单。
写菜单项代码。
编写“文本内容”项Txt的Click事件代码:
PrivateSubTxt_Click()
temp=InputBox("请输入标题板的新内容","输入",Label1.Caption)
Iftemp<>""Then
Label1.Caption=temp
EndIf
EndSub
编写“文本字体”中4个菜单选项的Click事件代码:
PrivateSubsong_Click()
Label1.FontName="宋体"
EndSub
PrivateSubli_Click()
Label1.FontName="隶书"
EndSub
PrivateSubkai_Click()
Label1.FontName="楷体"
EndSub
PrivateSubhei_Click()
Label1.FontName="黑体"
EndSub
编写“文本风格”中3个菜单选项的Click事件代码:
PrivateSubbld_Click()
bld.Checked=Notbld.Checked
Label1.FontBold=bld.Checked
EndSub
PrivateSubItl_Click()
Itl.Checked=NotItl.Checked
Label1.FontItalic=Itl.Checked
EndSub
PrivateSubUndrln_Click()
Undrln.Checked=NotUndrln.Checked
Label1.FontUnderline=Undrln.Checked
EndSub
(3)菜单控件数组
(4)菜单项的可用与不可能
(5)弹出式菜单
语法为:
[〈窗体名〉.]PopupMenu〈菜单名〉[,flags[,x[,y[,boldcommand]]]]
将上例用弹出式菜单实现,(如图所示)。
只需增加标签和窗体的MouseDown事件代码:
PrivateSubLabel1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2Then
PopupMenuStyl,6
EndIf
EndSub
PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2Then
PopupMenuNam,6
EndIf
EndSub
2.工具栏
(1)用手工方式制作工具栏
(2)使用Toolbar控件与ImageList控件
设计如下程序:
修改应用程序用户界面
通过“属性页”对话框来设置工具栏控件与图像列表控件的属性
(3)修改及编写程序代码。
修改窗体的事件代码:
PrivateSubForm_Resize()
WithText1
.Top=Toolbar1.Height
.Left=0
.Height=Form1.ScaleHeight-Toolbar1.Height
.Width=Form1.ScaleWidth
EndWith
EndSub
编写工具栏按钮的事件代码:
PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)
n=Button.Index
SelectCasen
Case2,3,4
File_Click(n-2)
具有Office97风格的工具栏
Case6
Text1.FontBold=Button.Value
Case7
Text1.FontItalic=Button.Value
Case8
Text1.FontUnderline=Button.Value
EndSelect
EndSub
[问题讨论]
1.菜单栏、工具栏在创建时应注意哪些问题?
2.弹出式菜单创建的语法格式。
实验七