VB案例ALL2Word格式.docx
《VB案例ALL2Word格式.docx》由会员分享,可在线阅读,更多相关《VB案例ALL2Word格式.docx(62页珍藏版)》请在冰豆网上搜索。
按钮)。
(5)控件绘制及属性设置步骤:
单击工具箱的控件在窗体的合适位置画出一个矩形区域用鼠标选中该控件通过属性窗口设置属性
本案例中各控件属性的设置:
窗口标题的设置:
选中窗体窗口在属性窗口查找Caption属性在Caption属性的右端输入“存款计算器”,如图1-4。
图1-4图1-5
标签标题的设置:
选中标签控件在属性窗口查找Caption属性在Caption属性的右端输入显示的文字
标签字体的设置:
选中标签控件在属性窗口查找Font属性单击右端的
按钮在打开的对话框中设置显示的文字的字体、字型、大小。
如图1-5。
文本框属性的设置:
选中文本框在属性窗口查找Text属性选中默认值按“Delete”键将其删除
命令按钮标题的设置:
选中命令按钮在属性窗口查找Caption属性在Caption属性的右端输入“计算”
(6)对象事件过程的建立
打开代码窗口创建事件的模板模板中输入代码
有二种方法打开代码窗口:
方法一:
双击要对其编写事件过程的控件,打开代码窗口,显示该控件默认事件的模板。
若该控件的事件不是默认事件,则应在“过程列表框”中选择与选中对象相关的事件,单击所选事件后,显示该事件的模板。
方法二:
单击工程资源管理器窗口中的
按钮,打开代码窗口,在代码窗口的“对象列表框”中选择对象,如图1-6;
在“过程列表框”中选择与选中对象相关的事件,如图1-7,单击所选事件后,显示该事件的模板。
本案例事件过程的建立:
●双击“显示”按钮,打开代码窗口,显示默认的Click事件的模板。
●在代码窗口的“对象列表框”中分别选择文本框对象;
在“过程列表框”中选择事件LostFocus后,显示该事件的模板。
图1-6对象列表框图1-7过程列表框
(7)设计程序,输入代码
编写Command1_Click事件,将文本框中输入的数据(字符型)转换为数值型,送到变量中,由这些变量通过公式求出结果,通过MsgBox函数将结果输出。
对三个文本框分别编写三个LostFocus()事件过程,当输入非数字字符时,清除文本框内容文本框内容,焦点重新定位在该文本框中。
注意:
代码应在模板过程体的光标处开始输入,如图1-8。
。
图1-8
(8)运行程序
单击工具栏中的启动按钮“
”运行程序。
此时,程序开始运行,文本框中的数据输入后,单击“计算”按钮,显示结果,如图1-9。
(9)保存文件
在选择“文件”→“保存工程”菜单命令,或单击工具栏中的“保存工程”按钮。
由于是第一次保存文件,因此在弹出的文件另存为对话框中提示保存窗体文件,将窗体文件保存在指定文件夹下并起名为Vbsy1_1.frm,此时,系统会继续提示保存工程文件,将工程文件也保存在指定文件夹下并起名为Vbsyl_1.vbp。
图1-9
(10)VB程序的错误类型和调试
在VB中,常见错误可分为三种:
1)语法错误程序编辑时输入错误或编译时语言成分错,系统会检查出来,显示“编译错误”并提示用户纠正。
例如:
表达式未输入完毕,按回车键,如图1-10。
图1-10
2)运行时错误程序没有语法错,但运行时出错,当单击“调试”按钮,程序停留在引起错误的那一句上,要求用户修改。
字符串“利息”与数值型变量lx用“+”运算符连接,运行时出错,当单击“调试”按钮,程序停留在引起错误的语句上,如图1-11,此时,将“+”改为“&
”,单击“
”(此时为继续按钮),程序继续执行下面的语句。
图1-11
3)逻辑错误程序正常运行后得不到预期的结果,可通过设置断点进行调试。
将lxs=lx*0.05语句,输入为lxs=lx*0.5,程序正常运行后,利息税比实际要高许多。
如何找出逻辑错误?
一般采用设置断点和利用Debug.Print方法在“立即”窗口显示相关变量的值的方法来找出错误所在。
下面介绍设置断点和逐语句跟踪相结合的方法。
步骤为:
●设置断点
选择怀疑错误的地方作为断点,可通过如下方法设置断点:
Ø
在如图1-12中光标所在处单击
光标所在的语句处按F9键
设置断点后,单击工具栏中的启动按钮“
”运行程序,程序运行到该断点处停下,进入中断模式,把鼠标指向在此之前所关心的变量、属性、表达式处,稍微停一下,鼠标下方便显示该变量值,如图1-13所示。
图1-12
图1-13
●逐语句跟踪
跟踪断点以后语句的执行情况,可按F8或选择“调试”菜单的“逐语句”执行,如图1-14。
图1-14
3.常见问题
(1)标点符号错误
在VB中只允许使用西文标点,进入VB后不要使用中文标点符号。
(2)Name属性和Caption属性混淆
Name属性的值用于在程序中唯一地标识该控件对象,在窗体上不可见,编程时使用;
而Caption属性的值是在窗体上显示的内容。
(3)语句书写位置错
在VB中,除了在“通用声明”段利用Dim等对变量声明语句外,其他任何语句都应在事件过程中,否则运行时会显示“无效外部过程”的信息。
若要对模块级变量进行初始化工作,则一般放在Form_Load()事件过程中。
(4)无意形成控件数组
若要在窗体上创建多个相同的控件,如案例中三个文本框,不要先创建一个文本框,然后对该控件进行复制、粘贴。
(此时创建的是一个控件数组)。
(5)打开工程时找不到对应的文件
若打开工程时显示“文件未找到”,原因可能是:
文件复制时少复制了某个文件(.vbp工程文件和.frm窗体文件要一起复制)或将窗体文件等改名。
若窗体文件被改名,解决方法:
通过记事本打开.vbp工程文件,修改窗体文件名;
如图1-15。
图1-15
通过“工程”菜单的“添加窗体”中的“现存”选项,将改名后的窗体加入工程。
(6)数据合法性检查中引起程序的死循环
为了确保三个文本框中输入的是数字字符,当输入其它字符时要求重新输入,应对三个文本框分别编写三个LostFocus()事件。
但如果用以下代码:
PrivateSubText1_LostFocus()PrivateSubText2_LostFocus()PrivateSubText3_LostFocus()
IfNotIsNumeric(Text1)ThenIfNotIsNumeric(Text2)ThenIfNotIsNumeric(Text3)Then
Text1="
"
Text2="
Text3="
Text1.SetFocusText3.SetFocusText3.SetFocus
EndIfEndIfEndIf
EndSubEndSubEndSub
当Text1输入错要继续在Text2输入时,焦点在Text2处不停地闪动,程序产生死循环。
原因是当焦点定位到Text2时,激发Text1_LostFocus事件,当判断Text1文本框输入数据错时,执行Text1.SetFocus,使焦点从Text2拉回到Text1;
而又激发Text2_LostFocus事件,此时Text2文本框内没有输入数据,又执行Text2.SetFocus,使焦点从Text1拉回到Text2,如此交错造成死循环。
程序产生死循环时,按Ctrl+Break结束程序的执行。
解决Text1输入错时死循环的问题,只要把PrivateSubText2_LostFocus()事件的If表达式IfNotIsNumeric(Text2)Then改为:
IfText2<
>
"
AndNotIsNumeric(Text2)Then即可。
四.实验报告要求
1.实验准备
2.报告内容
实验日期________指导教师________
实验题目:
实验环境:
(调试程序所使用的软硬件环境)
流程图
源程序清单:
(调试好的源程序代码)
主要标识符说明:
(源程序中主要标识符含义说明)
实验结果:
(程序运行结果)
实验总结(分析实验中所遇到的一些问题,分析错误原因,如何进行调试)
五.实验思考题
1.若存入金额、年数、年利率从键盘输入,结果在文本框中显示,则程序应如何修改?
2.结果是否一定要通过单击按钮才能求得?
还有什么方法?
3.在设计阶段,对窗体、标签等控件直接设置了属性,若要通过代码设置,应放在什么事件中?
如何实现?
六.参考样例
1流程图
计算本息金额总数的流程图:
2设计界面
程序运行结果见图1-16实验界面。
图1-16
3程序代码
OptionExplicit
PrivateSubCommand1_Click()
Dima!
b!
c!
lx!
lxs!
bl!
a=Val(Text1.Text)
b=Val(Text2.Text)
c=Val(Text3.Text)
lx=a*b*c/100'
求利息
lxs=lx*0.5'
求利息税
bl=Format(a+lx-lxs,"
0.00"
)'
求本利保留两位小数
MsgBox("
利息:
&
lx&
vbCrLf&
利息税:
lxs&
到期本息:
bl)
EndSub
PrivateSubText1_LostFocus()
IfNotIsNumeric(Text1.Text)Then
Text1.Text="
Text1.SetFocus
EndIf
PrivateSubText2_LostFocus()
IfNotIsNumeric(Text2.Text)AndText2<
Then
Text2.Text="
Text2.SetFocus
PrivateSubText3_LostFocus()
IfNotIsNumeric(Text3.Text)AndText3<
Text3.Text="
Text3.SetFocus
《VB程序设计》案例二——选择结构设计四则运算测试
(1)掌握分支程序(选择结构)的设计方法。
(2)熟悉单分支语句、多分支语句的使用方法。
(3)掌握程序的编辑、编译以及调试过程。
(4)了解编写程序时算法的作用。
(5)熟悉流程图,并能画简单的流程图。
1.用选择结构语句实现——四则运算测试程序
设计一个四则运算的测试程序,界面如图2-1所示。
运算符和运算数据均由随机函数随机产生,用单选按钮提供可选答案,当选择某一答案后,立即将判断结果在标签中显示。
图2-1
2.用选择结构语句实现——个人所得税计算器
编写一个所得税计算器。
在文本框中输入工资或薪金总额,四金(住房公积金、基本养老保险金、医疗保险金、失业保险金)总额(假设输入的值不含小数),单击“计算”按钮,在标签上显示应缴纳的所得税。
界面如图2-2所示。
图2-2
目前我国个人所得税起征点2000元。
工资、薪金所得个人所得税税率表如下:
级数
当月应纳税所得额
税率
速算扣除数
1
不超过500元
5%
2
超过500元至2,000元的部分
10%
25
3
超过2000元至5,000元的部分
15%
125
4
超过5000元至20,000元的部分
20%
375
5
超过20000元至40,000元的部分
25%
1375
6
超过40000元至60,000元的部分
30%
3375
7
超过60000元至80,000元的部分
35%
6375
8
超过80,000元至100,000元的部分
40%
10375
9
超过100,000元的部分
45%
15375
计算公式是:
应纳个人所得税税额=应纳税所得额×
适用税率-速算扣除数
王某当月取得工资收入9000元,当月个人承担四金共计1000元,则王某当月应纳税所得额=9000-1000-2000=6000元。
应纳个人所得税税额=6000×
20%-375=825元。
四则运算的测试程序:
四则运算的测试程序的出题功能可通过随机函数产生2个操作数,显示在2个标签内;
四则运算符可产生1~4的随机整数op,分别对应加、减、乘、除。
在4个单选按钮的Caption属性上随机产生4个可选答案,其中有一个用正确答案Result设置,并记录正确答案位置。
所得税计算器
根据题意,通过先求出当月应纳税所得额,根据其的不同取值,实现不同的分支操作。
(1)进入VB6.0环境,设计界面。
(2)编写Command1_Click事件,随机产生2个操作数,再随机产生1个1到4之间的随机整数op,对应一种运算,计算出正确答案Result。
(3)窗体上创建一个控件数组Option1,用随机产生的4个可选答案设置单选按钮的Caption属性,再用0~3的随机整数对应一个单选按钮,并将Caption属性设置为Result。
Fori=0To3'
产生可选答案
Option1(i).Value=False
Option1(i).Caption=Int(Rnd*101)
Nexti
i=Int(Rnd*4)
Option1(i).Caption=result
(4)在单选按钮的Click事件判定单选按钮的Caption属性值是否与Result相同。
(5)在窗体启动时调用,产生第一道题。
(2)在文本框中输入工资或薪金总额、四金总额,利用公式:
应纳税所得额=工资-四金-起征金额
求出应纳税所得额n。
利用SelectCase…EndSelect多分支结构语句来实现不同的分支操作。
SelectCasen
Case0To500:
y=n*0.05
Case501To2000:
y=n*0.1-25
Case2001To5000:
y=n*0.15-125
Case5001To20000:
y=n*0.2-375
Case20001To40000:
y=n*0.25-1375
Case40001To60000:
y=n*0.3-3375
Case60001To80000:
y=n*0.35-6375
Case80001To100000:
y=n*0.4-10375
CaseIs>
100000:
y=n*0.45-15375
CaseElse:
y=0
EndSelect
3.常见问题分析
(1)单选按钮的Click事件无法判定出正确答案。
正确答案Result在出题时产生,选择答案时要使用,变量涉及到两个事件,故需要将Result的声明放在通用对象中。
否则在单选按钮的Click事件中Result的值为0。
(2)可选答案中的正确答案无法随机变动位置。
先在4个单选按钮上产生随机数,再将正确答案随机赋予其中的一个。
如果改变顺序,将增加程序难度。
(3)If语句要严格按格式书写,即关键字Then、Else后面的语句块必须换行书写;
单行式的If语句必须在一行上书写。
不能为如下形式:
Ifx>
yThenMsgBox("
yes"
)或Ifx>
yThen
Else:
MsgBox("
no"
)MsgBox("
)
EndIfElse
)
(4)逻辑表达式的书写不要与数学上的表示混淆,如数学上表示0<
n<
500,在VB中该式子不会造成语法错而是逻辑错误,假设n为1000,先求出0<
n的值即-1,再-1与500比较,显然导致结果错误。
该逻辑表达式应写为:
n>
0Andn<
500
(5)SelectCase…EndSelect语句中SelectCase后面只能含有一个变量或一个表达式,且后面的Case表达式列表中的“表达式列表”也要严格遵循规定的语法规则,不能出现SelectCase变量或表达式中使用的变量或运算符,如:
Casen>
=0Andn<
=500:
500Andn<
=2000:
……
上述语句不会产生语法错误,但会得出错误的结果。
原因是Case后面的n>
=500表达式没有判断功能,而是将其值求出,即值0或-1。
n的值是与0或-1比较。
(1)实验准备
①预习分支语句,熟悉选择结构程序设计方法。
②根据实验内容要求,画出程序流程图,并根据流程图编好实验源程序。
(2)报告内容
1.四则运算出题程序若要考虑只能大数减小数,两数要能整除且除数不能为0,则程序应如何修改?
2.供选择的四个随机产生的答案,如何使它们不重复?
3.试用多分支结构语句If…Then…ElseIf…EndIf来编写所得税计算器程序。
比较If…Then…ElseIf…EndIf语句与SelectCase…EndSelect语句的使用。
3.为了确保程序运行的正确性,应如何对所得税计算器程序进行数据的合法性检查?
4.如何将所得税计算器扩充为更全面的功能。
图2-3
图2-4
图2-5
Dimi,result
Dimnum1AsInteger,num2AsInteger,opAsInteger
num1=Int(Rnd*10+0)
num2=Int(Rnd*10+0)
op=Int(Rnd*4+1)
Label1=num1:
Label3=num2
SelectCaseop'
设置界面运算符,获得正确答案
Case1
Label2.Caption="
+"
result=num1+num2
Case2
-"
result=num1-num2
Case3
×
result=num1*num2
Case4
÷
result=Format(num1/num2,"
#0.####"
Fori=0To3'
Option1(i).Caption=result
Label4.Visible=False
PrivateSubForm_Load()
Command1_Click
PrivateSubOption1_Click(IndexAsInteger)
IfIsEmpty(i)ThenExitSub
IfOption1(Index).Caption=resultThen
Label4.Caption="
正确,你很聪明!
Else
很遗憾,做错了!
EndIf
Label4.Visible=True
所得税