vb教学资源.docx
《vb教学资源.docx》由会员分享,可在线阅读,更多相关《vb教学资源.docx(79页珍藏版)》请在冰豆网上搜索。
vb教学资源
计算球的表面积和体积
题目:
有一个圆球,其半径为12,求它的表面积和体积。
示例
运行效果:
单击“计算”按钮后:
单击"结束"按钮,结束程序。
制作过程:
第一步:
设计程序界面
在窗体上摆放两个按钮。
假设名字分别为command1和command2,6个标签
第二步:
设置对象属性
通过设置对象属性,可以让对象显示合适的文字、具有合适的大小,外观等。
对象名
属性名
设置值
窗体
Caption
计算球的体积和表面积
窗体
Icon
选择一个图标文件作为程序的图标
窗体
MaxButton
false
Command1
Caption
计算
Command2
Caption
结束
label1
Caption
有一个圆球,其半径为12,求它的表面积和体积
label2
Caption
答案:
label3
Caption
体积:
label4
Caption
表面积:
label5
Caption
(清空)
label6
Caption
(清空)
设置好后的界面如下:
第三步:
编写代码
切换到代码编写窗口.
在资源管理窗口上面,有两个切换按钮,单击
可以切换到代码编写窗口,单击
可以切换到界面设计窗口
然后在代码编写窗口的左上边选择合适的对象,在窗口的右上边选择合适的事件,在相应的事件过程中编写代码。
以下是参考代码:
单击改变文字大小
题目:
单击按钮,改变窗体上文字的大小 示例
运行效果:
单击“72磅”按钮后的效果:
单击“结束”按钮,结束程序。
编程步骤:
第一步:
设计程序界面
在窗体上摆放两个按钮,假设名字分别为command1、command2
在窗体上放置一个标签框,假设名字为label1
第二步:
设置对象属性
通过设置对象属性,可以让对象显示合适的文字、具有合适的大小,外观等。
对象名
属性名
设置值
窗体
Caption
设置文字大小
窗体
Icon
选择一个图标
窗体
MaxButton
False
Command1
Caption
72磅
Command2
Caption
结束
Label1
Caption
看清没有!
设置完成后的效果如下图:
第三步:
编写代码
切换到代码编写窗口,然后选择合适的对象和事件,在相应的事件过程中编写代码。
求圆的面积和周长
题目
在程序运行时,用户可以输入圆的半径,然后单击计算,输出结果到标签框中。
示例
在半径处输入圆的半径。
单击计算输出周长和面积。
单击“清除”清除三个文本框中的内容。
单击结束按钮,结束程序。
分析:
(1)这个程序需要用户在程序运行时输入圆的半径,所以需要使用文本框。
(2)程序输出周长和面积,这两个结果是不需要人编辑的,只是给人看,所以可以使用文本框。
(3)事件分析:
当用户单击“计算”按钮时,程序计算并输出,所以这些代码应写到“计算”按钮的单击事件中。
编写程序
第一步:
设计程序界面
在窗体上摆放标签框、文本框、按钮。
第二步:
设置对象属性
通过设置对象属性,可以让对象显示合适的文字、具有合适的大小,外观等。
对象
属性
设置
窗口
caption
计算圆面积和周长
窗口
Maxbutton
False
窗口
Icon
一个图标文件
label1
caption
半径
label2
caption
周长
label3
caption
面积
label4
caption
空
label5
caption
空
text1
text
空
command1
caption
计算
command2
caption
清空
command3
caption
结束
另外,还可以用鼠标拖动,设置窗口的大小,最后效果如下图所示:
第三步:
编写代码
切换到代码编写窗口,然后选择合适的对象和事件,在相应的事件过程中编写代码。
简单文本编辑器
题目:
用VB设置一个简单的文本编辑器,它能自动适应窗体的大小,同时能进行一些文本编辑时常见的操作,如删除,插入,拷贝等操作。
示例
程序运行时效果
能进行一些简单的编辑操作:
放大缩小窗口时,文本窗口可以自动适应窗口的大小。
分析
(1)在运行时,让用户输入信息,这可以用文本框实现。
文本框本身支持右键单击并能弹出相应的菜单,所以并不需要对右键单击等功能进行编程!
(这么强大的功能居然不需要编码!
!
)。
(2)文本框自动适应窗口的大小。
用事件驱动的方式描述为:
当窗口的大小发生改变时,文本框的大小发生改变。
窗口大小发生改变的事件为窗口的resize事件。
所以需要对窗口的resize事件编写相应代码。
编写过程
第一步:
界面设计
在窗体上放置一个文本框对象。
第二步:
属性设置
对象名
属性
设置
Form1
Caption
简易文本编辑器
Form1
MaxButton
False
Form1
Icon
一个图标文件
Text1
Text
空
Text1
MultiLine
True
Text1
ScrollBars
3-Both
设置后的效果为:
第三步:
代码编写
PrivateSubForm_Resize()
text1.Width=form1.Width-200
text1.Height=form1.Height-500
text1.Left=0
text1.Top=0
EndSub
注册
任务:
上节课我们做了一个计算器程序。
取得了很大的成功,用户众多。
为了保障开发者的利益,要求使用者使用正版软件,进行注册。
程序示例:
单击“注册”按钮,出现输入注册码窗口:
输入正确注册码(假设为haohaoxuexi):
输入错误注册码:
运行程序
制作过程:
添加对象
1、添加“注册”按钮
在第一个窗体(form1)上添加一个按钮,假设这个按钮的名字为:
command7。
设置其caption为:
“注册”
2、在工程资源管理器上用鼠标右键单击窗体,在弹出菜单中选择“添加”→“添加窗体”。
添加第二个窗体(form2)。
在第二个窗体上摆放一个标签框(label1)。
(2)设置第二个窗体
设置第二个窗体的样子如下图所示:
假设在这个窗体中,文本框的名字为:
Text1,按钮的名字为:
command1和command2.
编写代码
PrivateSubCommand1_Click()
IfText1.Text="haohaoxuexi"Then
MsgBox("谢谢您使用正版软件,您的支持是我们前进的动力!
")
Form2.Hide
Else
MsgBox("注册号码错误")
Text1.Text=""
Text1.SetFocus
EndIf
EndSub
PrivateSubCommand2_Click()
Text1.Text=""
Form3.Hide
EndSub
注:
SetFoucus是一个方法,其作用是:
将焦点移至指定的控件或窗体;
Show也是一个方法,显示窗体;相反方法Hide是隐藏窗体。
MsgBox是消息框语句。
它的语法是:
MsgBox(“要显示的字符串”)
成绩评定
题目:
编写一个程序,根据用户输入的分数,给出相应的优、良、及格、不及格评定。
示例
成绩评定的标准是:
>=85 优
>=75并且<85良
>=60并且<75及格
<60 不及格
任务分析:
在这个任务中,不是简单是判断出两种结果,而是比较复杂的判断,可能要判断多次。
给出一个成绩chengji,怎样通过程序给一个相应的等级呢?
可以考虑如下的方法:
ifchengji>=85then
dengji="优"
elseifchengji>=75then
dengji="良"
elseifchengji>60then
dengji="及格"
else
dengji="不及格"
endif
想一想,你还能想出其他判断方法吗?
程序编写过程
一、设计界面和属性
在窗口中添加如下的对象,并设置属性,使显示效果如下:
二、编写代码
假设“评定”按钮的名称为:
command1。
输入成绩的文本框名称为:
text1。
显示等级的标签名称为:
label3
PrivateSubCommand1_Click()
得到用户输入的成绩
chengji=Val(Text1.Text)
'根据成绩设置等级
Ifchengji>=85Then
dengji="优"
ElseIfchengji>=75Then
dengji="良"
ElseIfchengji>60Then
dengji="及格"
Else
dengji="不及格"
EndIf
'显示等级
Label3.Caption=dengji
EndSub
试一试:
可否不通过IF语句的嵌套实现本程序的功能
颜色随机变
题目:
如下图,单击按钮时,文字的背景和文字的颜色都能发生随机的改变。
演示
分析:
要用到RGB函数来合成颜色,而要生成随机的颜色,只要让RGB函数的三原色的分量都是随机的,那么合成的颜色也是随机的。
可以把文字放到一个标签框中,那么改变文字的背景就是改变标签框的背景属性BackColor,而改变文字的颜色就是改变标签的Forecolor属性
制作方法:
1.在窗体上放置合适的对象,并设置属性。
比如设置标签框的文本大小等。
2.假设:
“变背景颜色”按钮的名字为Command1,而“变文字颜色”按钮的名字为Command2.那么两个按钮的单击事件过程为:
PrivateSubCommand1_Click()
Label1.BackColor=RGB(Rnd*255,Rnd*255,Rnd*255)
EndSub
PrivateSubCommand2_Click()
Label1.ForeColor=RGB(255*Rnd,255*Rnd,255*Rnd)
EndSub
制作电子时钟 演示
(一)第一版本:
下面我们来做一个电子时钟。
为了做一个电子时钟,我们需要能取得系统当前的时间,然后把取得的时间显示在文字框中即可。
为了取得系统的时间,可以使用time函数。
这个程序可以做成以下样子:
代码只需在按钮的单击事件过程中写一行:
PrivateSubCommand1_Click()
Label1.Caption=Time
EndSub
单击按钮时,就可以查看当前的时间了。
如下图:
程序示例
这个程序有个很明显的不足:
它显示的时间不是变化的。
如果我们要查看当前的最新时间,需要再单击一下“查看时间”按钮。
为什么会这样?
因为取得当前时间并显示出来的代码是写在按钮单击事件过程中的,只有按钮的单击事件发生,才会执行这些代码。
如果你想像通过的电子时钟一样,看到它每秒都随时变化,那么对不起,请每秒钟单击一下按钮!
!
!
!
如果有办法让“取时间并显示的代码”的代码每秒钟都执行一下,就不用我们如此的劳累了。
Vb已经为大家准备好了一个定时工具--Timer对象。
(二)改进版本
Timer是哪里?
工具箱中有一个控件,它的图标就是一个秒表。
双击这个图标,就可以把Timer对象添加到窗体上。
(注意:
Timer对象在程序运行的时候是不显示出来的,所以没有必要调整它的大小及位置,放在哪儿就可以)
把这个对象放在窗体上,运行是,它每过一定时间,就会自动发生一个Timer事件。
间隔时间由它的属性Interval指定。
所以如果把Interval设置为1000(单位为毫秒),并把上面的代码写到它的Timer事件中,就可以每过一秒执行一次了,更像一个实用的电子时钟了。
滚动字幕特效
任务:
做一个字幕滚动特效,文字从窗口的右边慢慢滚动到窗体的左边,然后再从窗体的右边出现。
示例
分析:
我们已经知道,每个Windows窗口都有一个坐标系,对象在窗口中的位置是通过其属性Left和Top来标识的。
如下图所示:
当我们移动对象时,它的Left和Top属性会发生变化。
同样,当我们改变其Left或Top属性时,对象的位置也会相应的属性变化。
要让一个对象向左移动,只要不断地减小它的left属性就可以了。
比如要让标签框向左移动:
Label1.Left=Label1.Left-50
每次执行这个语句,标签都会向左移动一点。
而如果把这个语句放到时钟的时钟事件中,标签就可以不断向左移动了。
为了让标签从窗口左边消失后,再次从窗口的右边出现,只要添加如下一个判断就可以了:
If(Label1.Left+Label1.Width<=0)Then
Label1.Left=Form1.Width
EndIf
制作方法:
在窗体上放置一个标签和时钟对象,设置相应的属性。
把以下这些代码写到Timer事件过程中,每过一定时间执行一次标签的移动操作就可以了。
代码如下:
PrivateSubTimer1_Timer()
Label1.Left=Label1.Left-50
If(Label1.Left+Label1.Width<=0)Then
Label1.Left=Form1.Width
EndIf
EndSub
鼠标技能测试
任务:
编写“鼠标技能测试”程序,程序运行时,一个按钮在窗体上随机跑动。
当用鼠标单击它时,显示文字表扬一下用户,比如:
"你好棒哦!
",如果没有点中,也给出提示,如:
“哎呀,没有点着(-_-)”。
示例
编写思路:
一、怎样让按钮在窗口范围内随机移动
让按钮的Left和Top属性取随机值就可以了。
Left的随机值的范围是:
(0,窗口宽度-按钮宽度),按钮Top的随机值的范围是:
(0,窗口高度-按钮高度)
二、在按钮被击中时,怎样显示信息
在按钮的单击事件中,设置标签的Caption属性为相应的提示信息。
三、怎样判断鼠标没有击中按钮
没有击中按钮,一定是点到了窗体上啦!
!
四、没有点中按钮怎样处理
在窗体的单击事件中,显示相应的提示信息
制作过程:
一、在窗体上放置一个标签、一个按钮、一个时钟,假设按钮的名称为:
Command1,标签的名称为:
Label1,窗体的名称为:
Form1,时钟的名称为:
Timer1
二、编写如下的代码:
PrivateSubCommand1_Click()
Label1.Caption="你好棒哦!
"
EndSub
PrivateSubForm_Click()
Label1.Caption="哎呀,没点着(-_-)"
EndSub
PrivateSubTimer1_Timer()
Command1.Left=Rnd*(Form1.Width-Command1.Width)
Command1.Top=Rnd*(Form1.Height-Command1.Height)
EndSub
加法练习器
任务:
做一个两位数的加法练习器,能随机出题并能判断对错。
示例
分析:
在这个作品中,主要解决两个问题:
1、怎样随机产生一个两位数
2、怎样判断用户输入的答案是否正确
对第一个问题:
两位数,就是在区间[10,99]之间的数。
根据公式:
Fix(Rnd*(b-a+1))+a,可知通过Fix(Rnd*90)+10,可以得到。
对第二个问题:
只要判断前两个标签框的数的各是否等于文本框的数,就可以了。
制作过程:
1、放置对象:
在窗体上放置如下的一些对象:
2、设置属性
让界面看起来如下:
在上图中,为了让标签看起来有“凹”下去看感觉,只要设置它的BorderStyle=1就可以了。
3、编写代码
PrivateSubCommand1_Click()
a=Fix(Rnd*90+10)
b=Fix(Rnd*90+10)
Label1.Caption=a
Label3.Caption=b
EndSub
PrivateSubCommand2_Click()
IfVal(Label1.Caption)+Val(Label3.Caption)=Val(Text1.Text)Then
Label5.Caption="正确!
"
Else
Label5.Caption="再检查一下!
"
EndIf
EndSub
空中娇子
任务描述:
画面上每过1秒,自动随机显示不同的图片。
示例
任务分析:
一、图片放在哪里
把图片分别放到image框中,如果有9张,则它们的名字分别为:
Image1,Image2,Image3,Image4,……Image9
把这些图片的Visible属性全部设置为False,让它们在程序运行时看不见。
二、在哪里写代码
因为每过一定时间自动显示不同图片,显然需要在Timer对象的Timer事件中编写代码。
三、怎样随机选图
每次Timer事件发生时,怎样从9张图片中随机挑选一张显示出来呢?
我们可以随机产生一个[1,9]区间内的随机整数。
x=Fix(Rnd*9)+1
当产生的数是1时,则显示第1张图片;为2时,则显示第2张图片……。
它的代码模式为:
x=Fix(Rnd*9)+1
if x=1then
显示第一张图片
endif
if x=2then
显示第2张图片
endif
……
……
四、图片怎样显示
在窗体上放置一个Image10,它就是显示图片的地方。
显示第1张图片,就是Image10.Picture=Image1.Picture
显示第2张图片,就是Image10.Picture=Image2.Picture
……
……
完成任务:
一、设置界面
在窗体上放置9个Image,假设它们的名字分别是:
Image1,Image2,Image3,…………,Image9。
在这些Image中分别放置图片,因为这些Image不直接显示出来,只是作为图片的“仓库”使用,所以不必太在意它们的位置与大小等。
在窗体上放置一个Image框,假设名字为Image10。
为它设置合适的大小和位置。
如下图所示:
二、设置属性
对象名
属性
设置值
form1
caption
空中娇子
form1
borderstyle
1-fixedsingle
image1
visiable
false
image2
visiable
false
……
……
……
image9
visiable
false
Image10
Stretch
True
Timer1
Interval
1000
三、编写代码
拍蚊子程序
任务描述:
制作一个拍蚊子的小游戏,程序运行时,一只蚊子在屏幕上每过一定时间位置随机变化。
游戏者用鼠标击中这只蚊子,可以加1分。
在1分钟的时间内,看你能得多少分。
示例
任务分析:
在这个任务中,显示图片,判断是否击中等都已经很容易实现,但怎样才能实现加分操作和倒计时呢?
得分和倒计时。
这些数据在窗口打开的过程中都是有效的,所以它们是一个模块级的全局变量。
只要把这些数据保存在全局变量中,并在相应的事件中用n=n-1形式的计数算法(累加算法的一种特例)即可。
任务实现:
一、设置界面
在窗体上放置相应的对象,用来保存得分和剩余时间等。
在窗体上放置两个image框,用来保存两张图片,一张是活蚊子,一张是死蚊子。
把两个image都设置为隐藏。
放置一个timer对象,用来控制图片移动和倒计时。
二、编写代码
Dimm '保存打中次数
Dimt '保存倒计时
'再玩一次
PrivateSubCommand1_Click()
Command1.Visible=False
m=0
t=60
Timer1.Enabled=True
EndSub
'没有打着(单击到窗体了!
)
PrivateSubForm_Click()
Ifm>0Thenm=m-1 '减分
Label3.Caption="没有打着!
"
Label3.Visible=True
EndSub
'窗体加载时,对全局变量进行初始化
PrivateSubForm_Load()
t=60
m=0
EndSub
'打中了蚊子
PrivateSubImage1_Click()
Beep 'PC喇叭响一声
m=m+1'计分
'隐藏活蚊子,并在活蚊子的位置显示出死蚊子的图片
Image1.Visible=False
Image2.Left=Image1.Left
Image2.Top=Image1.Top
Image2.Visible=True
'显示相应提示信息
Label3.Caption="真棒!
"
Label3.Visible=True
EndSub
'时钟事件发生时
PrivateSubTimer1_Timer()
'隐藏死蚊子
Image2.Visible=False
'产生蚊子下一次出现的位置并设置
X=Rnd*(Form1.Width-Image1.Width)
Y=Rnd*(Form1.Height-Image1.Height)
Image1.Left=X
Image1.Top=Y
'在新位置显示活蚊子
Ima