版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
VisualBasic程序設(shè)計(jì)
第九講
第四章程序流程的控制
(一)
2011-7-10
1
關(guān)系表達(dá)式
布爾表達(dá)式
選擇結(jié)構(gòu)
循環(huán)結(jié)構(gòu)
常用控件的使用
2011-7-102
§4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式
4.1.1關(guān)系運(yùn)算符VB提供六種關(guān)系運(yùn)算符
關(guān)系物理意義例子說明
運(yùn)算符
<小于若x=5,y=2求x<y的值值為False
小于等于若x=2,y=4求x〈=y的值值為True
<=表4?1
>大于“3”>8值為False
>=大于等于0>=(1<5)值為True
—等于若乂="wer”求x="wer”值為True
<>2011-7-]0不等于"asd"v>"qwe”值為True3
4.1.2關(guān)系表達(dá)式
LVB中的關(guān)系表達(dá)式格式為:
v表達(dá)式1>v關(guān)系運(yùn)算符,v表達(dá)式2>[v關(guān)系運(yùn)算符>
v表達(dá)式3>],...]
2.說明:
(1)其中〈表達(dá)式〉可為算術(shù)表達(dá)式、字符串表達(dá)式
和日期型表達(dá)式。
(2)關(guān)系表達(dá)式求值的次序是先求關(guān)系運(yùn)算符兩邊
表達(dá)式的值,再求關(guān)系表達(dá)式的值。關(guān)系表達(dá)式的
值為Boolean型,只有兩個(gè)值True和False。
(3)若關(guān)系運(yùn)算符兩邊為算術(shù)表達(dá)式時(shí),則應(yīng)先計(jì)
算算術(shù)表達(dá)式的值,再進(jìn)行關(guān)系比較。
1?蜀A?1
(4)若關(guān)系運(yùn)算符兩邊為字符串表達(dá)
式時(shí),按字符串中每個(gè)字母的ASCII
碼逐一進(jìn)行比較,若比較的前幾個(gè)
字母的ASCII碼都一樣,而當(dāng)比較到
后面哪一個(gè)字母不一樣,則哪個(gè)字
母的ASCII碼數(shù)值大,則對應(yīng)的字符
串就大。
2011-7-105
例如:
“qwert”>="qweRt”的值為True。
常見字符的ASCH值大小排列如下:
“空格”v"O"vTv…v“9”
v“A"v“B"v.?.v“Z”
v“a"v“b”v...v“z”
若關(guān)系運(yùn)算符兩邊為日期型表達(dá)式
時(shí),按日期的先后次序,日期在前的值
小。
2011-7-106
例如:
#08/24/98#>#10/23/96#值為True。
#09/13/00#<#09/12/99#值為False。
3.注意:
因?yàn)楦↑c(diǎn)數(shù)在計(jì)算機(jī)內(nèi)不能精確表示,
所以在VB中不能用“=”來比較兩個(gè)單精度
或雙精度數(shù)的浮點(diǎn)數(shù)。
例如:
5.0*4.0=20.0在數(shù)學(xué)上是成立的,而
在VB中其值可能為False。若需要比較兩個(gè)
浮點(diǎn)數(shù)時(shí),則應(yīng)寫成下列形式:
Abs(5.0*4.0-x)<=le-5若(5.0*4.0-x)的絕
款值小于等于le?5時(shí),則認(rèn)為x整扇*4小
在VBe不能把數(shù)學(xué)中的不等區(qū)
10〈xW20表示成10<x<=20,若表示
成10<x<=20這種形式,不論x為柯
值關(guān)系表達(dá)式10<x<=20的值都為
True。
關(guān)系表達(dá)式10<x<=20相當(dāng)于
(10<x)<=20由于(10<x)的值
無論為True(-l)或False(O)都小于20,
所以10vxv=20的值總為True。這顯
然與數(shù)學(xué)中的不等式的意義不同。
2011-7-108
§4.2布爾運(yùn)算符和布爾表達(dá)式
對于不能用關(guān)系表達(dá)式表示的較復(fù)雜
的條件可用布爾表達(dá)式來表示。如上面提
判的數(shù)學(xué)不等式lOvxO,在VB中,應(yīng)表
示成x>10Andx<=20o
4.2.1布爾運(yùn)算符和布爾表達(dá)式
1.布爾運(yùn)算符。
VB中共有六種布爾運(yùn)算符,它們是:
And、Or、Not、Xor>Eqv和Imp。
2011-7-109
表4?2布爾運(yùn)算符
布爾運(yùn)算符物理意義舉例說明
And邏輯與運(yùn)算2<3And5>3與運(yùn)算兩邊的表達(dá)式都為真
值為True時(shí)結(jié)果為真,否則為假。
Or邏輯或運(yùn)算Or5>0或運(yùn)算兩邊的表達(dá)式只要有一
值為True個(gè)為真,結(jié)果就為真(True)
兩邊都為假時(shí)結(jié)果才為假。
Not邏輯非運(yùn)算Notx>=6非運(yùn)算對表達(dá)式的值取反。
Xor邏輯異或運(yùn)算"a''v"b"Xor5<0異或運(yùn)算兩邊表達(dá)式的值不
值為True同,則結(jié)果為真,相等時(shí)結(jié)
果為假。
Eqv邏輯等運(yùn)算3<2Eqv(3-邏輯等運(yùn)算兩邊表達(dá)式的值
l)<0相同,則結(jié)果為真,不相同
值為True時(shí),結(jié)果為假。
2011-7-1010
表4?2布爾運(yùn)算符(續(xù))
布爾運(yùn)算符物理意義舉例說明
Imp邏輯隱含運(yùn)3<2Imp3>0邏輯隱含運(yùn)算第一個(gè)表達(dá)式
算值為True的值為假(False)則第二個(gè)
3<2Imp5<2表達(dá)式不論值為什么值,結(jié)果
值為True都為真(True)
3>0Imp2>0若第一個(gè)表達(dá)式值為真,則
值為True第二表達(dá)式為真時(shí)結(jié)果為真。
5>3Imp3<2為假時(shí)結(jié)果為假。
值為False
11
表4-3布爾運(yùn)算真值表
abaAndbaOrbNotaaXorbaEqvb
TrueTrueTrueTrueFalseFalseTrue
TrueFalseFalseTrueFalseTrueFalse
FalseTrueFalseTrueTrueTrueFalse
FalseFalseFalseFalseTrueFalseTrue
2011-7-1012
422VB運(yùn)算符的優(yōu)先級
VB運(yùn)算符的優(yōu)先級:
算術(shù)運(yùn)算符運(yùn)算級最高,關(guān)系運(yùn)算符次
之,布爾運(yùn)算符優(yōu)先級別最低。
在算術(shù)運(yùn)算符中,括號最優(yōu)先,其它優(yōu)
先次序依次是函數(shù)、乘方(人)、乘或除(*
或/)、整除(\)、求余(Mod)、加加減
(+或?)O
在關(guān)系運(yùn)算符中,六個(gè)運(yùn)算符的級別相
同。
在布爾運(yùn)算符中最常用的三個(gè)布爾運(yùn)算
符中,Not最高,And次之,Or最低。
1??>1
表4.4VB運(yùn)算符的優(yōu)先級
運(yùn)算優(yōu)先級運(yùn)算符運(yùn)算符類型
1A(乘方運(yùn)算)
2-(求負(fù)數(shù))
算術(shù)運(yùn)算符
3*或/(乘或除)
4\(整除)
5Mod(求余數(shù))
6+或-(加或減)
7&(字符串連接運(yùn)算)字符串運(yùn)算符
8<=或<或>=或>或=或<>關(guān)系運(yùn)算符
9Not(非運(yùn)算)布爾運(yùn)算符
10And(與運(yùn)算)
用11-7-1014
Or(或運(yùn)算)
已知:a=3.5,b=5.0,c=2.5,d=1.0則
下列表達(dá)式的運(yùn)算次序?yàn)椋?/p>
a>=0.0anda+c>b+dorNotTrue
②True①6.巳口6.0
③False
②False
__________)
Y
④False
J
----------Y------
⑤False
最同結(jié)果為False。15
§4.3選擇結(jié)構(gòu)
4.3.1If.…一Then......語句
1.行If語句格式如下:
Ifv條件表達(dá)式,Then卜語句組1>][Elsev語句組2>]
2.塊If結(jié)構(gòu)格式如下:
Ifv條件表達(dá)式〉Then
[語句組1]
[Else
[語句組2]]
EndIf
2011-7-1016
3.說明:
(1)If語句后面的V條件表達(dá)式,可以是前面
講的算術(shù)表達(dá)式、關(guān)系表達(dá)式和布爾表達(dá)
式,執(zhí)行該結(jié)構(gòu)時(shí)應(yīng)先計(jì)算V條件表達(dá)式〉
值,然后根據(jù)V條件表達(dá)式>值確定程序的
流向。
(2)當(dāng)v條件表達(dá)式〉的值為真,執(zhí)行Then
后面語句組1中各語句;當(dāng)v條件表達(dá)式,
的值為假,則執(zhí)行Eke后面的語句組2中各
語句。無論是執(zhí)行語句組1或執(zhí)行語句組2
中各語句執(zhí)行完后,接著應(yīng)執(zhí)行型些
2011-7-1017
(3)在VB中數(shù)值表達(dá)式的值為非0時(shí),則
條件表達(dá)式的值為真,數(shù)值表達(dá)式的值為0
時(shí)條件表達(dá)式的值為假。
(4)第一種形式的If結(jié)構(gòu),沒有配對的End
If語句;若Then后面的語句組1省略,則必
須有Else語句及其后的語句組2;若Else語
句省略,則語句組1是必選項(xiàng)。第二種If結(jié)
構(gòu)必須有配對的結(jié)束語句EndIf,不能省
略。其Then后面的兩個(gè)可選項(xiàng)也必須選其
中之一。
2011-7-1018
【例4?1】計(jì)算分段函數(shù):
Y=l+x(x口0)
LY=l+2*x(x<0)
工程設(shè)計(jì)步驟如下:
(1)啟動VB后選“新建工程”的“標(biāo)準(zhǔn)
EXE”出現(xiàn)一個(gè)窗體,在此窗體上添加一
個(gè)標(biāo)簽控件一個(gè)文本框和二個(gè)命令按鈕如
下頁圖4?1左圖所不。
(2)設(shè)置窗體及各控件的屬性如下頁圖4-1
右圖所不。
2011-7-10IDI'Z19
圖4-1計(jì)算分段函數(shù)的界面設(shè)計(jì)及屬性設(shè)置
2011-7-1020
(3)編寫代碼如下:
編寫單擊“計(jì)算函數(shù)值”按鈕執(zhí)行的代碼。
PrivateSubCommandl_Click()
Rem使用輸入對話框提示輸入自變量的值
x=Val(InputBox(“自變量的值”,“請輸入”))
Ifx>=0Theny=1+xElsey=1+2*x
Textl.Text=y
EndSub
2011-7-1021
編寫單擊“退出”按鈕執(zhí)行的代碼。
PrivateSubCommand2_Click()
UnloadMe
EndSub
(4)運(yùn)行結(jié)果。按工具欄上的執(zhí)行按
鈕出現(xiàn)如圖4?1右圖所示的界面。單
擊“計(jì)算函數(shù)的值”按鈕出現(xiàn)輸入對
話框如圖4?2左圖所示,輸入數(shù)值后,
出現(xiàn)最后的結(jié)果如圖4?2右圖所示。
2011-7-1022
分科的州的值
函數(shù)值Y=
圖4?2計(jì)算分段函數(shù)的運(yùn)行結(jié)果
2011-7-1023
4.3.2嵌套的If語句
如果上面的塊If結(jié)構(gòu)中的Then下面的語
句組1或者在Else下面的語句組2又包含另外
的If結(jié)構(gòu)稱If語句的嵌套,如:
Ifv條件表達(dá)式1>Then
[Ifv條件表達(dá)式2>Then、
語句組1
當(dāng)表達(dá)式1
Else的值為真時(shí)
語句組2執(zhí)行的語句
組。
EndIf]
2011-7-10
4.3.2嵌套的If語句
Else
[Ifv條件表達(dá)式3>
Then
當(dāng)表達(dá)式1
語句組3的值為假時(shí)
Else執(zhí)行的語句
語句組4
EndIf]
EndIf
2011-7-1025
塊IF嵌套的N?S結(jié)構(gòu)化流程圖表示
條件表達(dá)式1
YN
條件表達(dá)式2條件表達(dá)式3
YNYN
語句組1語句組2語句組3語句組4
2011-7-1026
【例4?2】簡單密碼驗(yàn)證程序。
工程設(shè)計(jì)步驟如下:
(1)在窗體上添加二個(gè)個(gè)標(biāo)簽控件、一個(gè)
文本框控件和二個(gè)命
令按鈕。
如圖4-3所示。
(2)設(shè)置窗體與各控
件的屬性如表4?5所示。
圖4-3
2011-7-1027
表4?5簡單密碼驗(yàn)證程序中窗休及各控件的屬性的設(shè)
置
對象屬性屬性值說明
FormlCaption簡單密碼驗(yàn)證程標(biāo)題
序
Label1Caption空用作輸出
AutosizeTrue自動調(diào)節(jié)尺寸以適應(yīng)內(nèi)
容
Backcolor白色設(shè)背景色為白色
BorderStyle1-FixedSingle有邊框,邊框?yàn)榘夹蔚?/p>
BackStyle1-Opaque
-H行二16一28
表4-5簡單密碼驗(yàn)證程序中窗休及各控件的屬性的設(shè)置(續(xù))
對象屬性屬性值說明
Label2Caption請輸入密碼:
AutosizeFalse不能自動調(diào)節(jié)尺寸
BorderStyle0-None沒有邊框
Command1Caption確定標(biāo)題
Command2Caption退出標(biāo)題
TextlText空用于用戶輸入密碼
Passwordchar*輸入密碼時(shí)顯示的字符
2011-7-1029
判斷密碼程序N-S結(jié)構(gòu)化流程圖
2011-7-1030
在窗體的聲
明段中聲明
(3)代碼編寫如下的變量在窗
DimPassAsString體的各個(gè)模
塊都起作用
DimintDAsInteger
編寫單擊命令按鈕“確定”所執(zhí)行的代碼。
PrivateSubCommandl_Click()
IfTextl.Text=PassThen
intD=3
Labell.Caption="密碼正確,_
可以進(jìn)入系統(tǒng)!”
Else
2011-7-1031
intD=intD-1
MsgBox”密碼錯(cuò)誤!”
IfintD=0ThenEnd,行IF結(jié)構(gòu)
Labell.Caption="仔細(xì)想想,還有“
&_
Str(intD)&"次!”
Textl.SetFocus
使文本框重
EndIf薪獲得焦點(diǎn)
EndSub
2011-7-1032
編寫單擊命令按鈕“退出”所執(zhí)行的代碼。
PrivateSubCommand2_Click()
End
EndSub
編寫窗體的Form_Load()事件所執(zhí)行的代碼。
PrivateSubForm_Load()
Pass=''Hello''
intD=3
EndSub
2011-7-1033
(4)按F5鍵運(yùn)行工程,在文本框中輸入密
碼后,單擊“確定”按鈕。若密碼輸入正確,
則在框中顯示“密碼正確,可以進(jìn)入系
統(tǒng)!”。
若密碼錯(cuò)誤則信息
輸出框顯示密碼錯(cuò)
誤,按“確定”按鈕
后出現(xiàn)提示允許再
輸入兩次。
結(jié)果如圖4-4和
圖4-5所示。
圖4-4密碼正確顯示結(jié)果
2011-7-1034
圖46密碼錯(cuò)誤信息輸出框顯示密碼錯(cuò)誤,
并且提示允許再輸入兩次
2011-7-1035
【例4?3】求平均值和最小數(shù)。
設(shè)計(jì)工程界面如圖4-6左圖所示。
界面上有三個(gè)文本框,三個(gè)標(biāo)簽和四個(gè)命令
按鈕。
圖4-6求最小數(shù)和平均數(shù)工程界面的設(shè)置
2011-7-1036
該工程要求:
(1)在“輸入數(shù)據(jù):”文本框的下面輸
入數(shù)據(jù),按回車鍵或者單擊“確定”按
鈕,輸入的數(shù)據(jù)就顯示在“數(shù)據(jù)列表:”
下面的文本框中。如果輸入的不是數(shù)據(jù),
則給出提示"請輸入數(shù)字J
(2)單擊“統(tǒng)計(jì)”按鈕在“輸出結(jié)果:”
下面的文本框輸出結(jié)果,顯示共有多少
數(shù)、最小值和生均值所示。如果沒有輸
入,則給出提示“無有效的輸入數(shù)據(jù)!no
(3)“數(shù)據(jù)列表:”和“輸出結(jié)果:”
下面的文本框中不允許用戶編輯。
2011-7-1037
表4-6求最小數(shù)和平均值工程窗體及控件屬性設(shè)置值
對象屬性屬性值說明
Textl(名稱)Textln程序引用名
Text
Text2(名稱)TextOut程序引用名
Text
LockedTrue用戶不能編輯此文本框
MultiLineTrue使文本框接收多行文本
ScrollBars2-Vertical有垂直滾動條
2011-7-11038
表4-6求最小數(shù)和平均值工程窗體及控件屬性設(shè)置值(續(xù))
對象屬性屬性值說明
Text3(名稱)TextResult程序引用名
LockedTrue用戶不能編輯此文本框
MultiLineTrue
Text
Command1DefaultTrue表示按回車鍵即為確定
Command3CancelTrue表示按ESC即為退出
2011-7-1039
(3)編寫代碼如下:
DimnAsInteger,SumAsSingle」
MinAsSingle
編寫單擊“確定”所執(zhí)行的命令代碼
PrivateSubCommandl_Click()
IfNotIsNumeric(Textln.Text)Then
MsgBox”請輸入數(shù)字”
Textln.Text=""若文本框中輸入
的不是數(shù)字則在
Textln.SetFocus消息框中提示:
ExitSub請輸入數(shù)字
EndIf
2011-7-1040
若文本框是第
一次輸入數(shù)字
11=11+]/則把它顯示在
Ifn=1Then/輸出的文本框
中同時(shí)保存在
TextOut.Text=Textln.Text變量Min中,否
則輸出的文本
Min=Val(Textin)框顯示的內(nèi)容
再加上新輸入
Else的內(nèi)容。
TextOut.Text=TextOut.Text&
Chr(13)&Chr(10)&Textln.Text
2011-7-1041
IfVal(Textln)<MinThen
Min=Val(Textln)
EndIf\
EndIf若文本框
Sum=Sum+Val(Textln)中輸入的
數(shù)字小于
Textln.Text=變量Min
Textln.SetFocus的值,則把
新輸入的
EndSub值送入變
量Min中.
2011-7-1042
編寫單擊“統(tǒng)計(jì)”按鈕所執(zhí)行的代碼
PrivateSubCommand2_Click()
DimsiAsString,s2AsString」
s3AsString,hhAsString
<Ifn=0Then
MsgBox”無有效的輸入數(shù)據(jù)!”
ExitSub若n=0則表示沒有
〔EndIf輸入數(shù)字。在消
息框中提示:無
有效的輸入數(shù)據(jù)!
2011-7-1043
si="共計(jì)"&Str(n)&"個(gè)數(shù)”
s2="最小值:“&Str(Min)
s3="平均值:"&Str(Sum/n)
hh=Chr(13)&Chr(lO)
TextResult.Text=si&hh&s2&
hh&s3&hh
EndSub
2011-7-1044
編寫單擊“清除”按鈕所執(zhí)行的代碼
PrivateSubCommand4_Click()
TextResult.Text=
TextOut.Text=
n=0:Sum=0
Textln.SetFocus
EndSub
2011-7-1045
編寫Form_Activate發(fā)生時(shí)事件執(zhí)行的代碼
PrivateSubForm_Activate()
n=0:Sum=0
Textln.SetFocus
EndSub
編寫單擊“退出”按鈕所執(zhí)行的代碼
PrivateSubCommand3_Click()
End
EndSub
2011-7-1046
(4)運(yùn)行結(jié)果。按F5鍵運(yùn)行工程,
在出現(xiàn)的畫面中“輸入數(shù)據(jù)”下面
的文本框中輸入數(shù)據(jù),每輸入1個(gè)數(shù)
據(jù)接著按“確定”按鈕,被輸入的
數(shù)據(jù)就在“數(shù)據(jù)列表”下面的文本
框中顯示出來,輸入完數(shù)據(jù)后單擊
“統(tǒng)計(jì)”按鈕,就在“輸出結(jié)果”
下面的文本框中顯示出結(jié)果如圖4?7
所示。
2011-7-1047
圖4?7求最小數(shù)和平均數(shù)工程運(yùn)行結(jié)果
2011-7-1048
4.3.3Ilf函數(shù)
VB中還提供Hf函數(shù)用來實(shí)現(xiàn)一些比較簡
單的選擇結(jié)構(gòu)。
Ilf函數(shù)的格式如下:
Ilf(v條件表達(dá)式〉,〈語句1>,v語句2>)
說明:
同上面提到的IF語句一樣,<條件表達(dá)
式,可為算術(shù)表達(dá)式、關(guān)系表達(dá)式和布爾表
達(dá)式。當(dāng)條件表達(dá)式的值為真時(shí),執(zhí)行語
句1;為假時(shí),執(zhí)行語句2。當(dāng)選擇結(jié)構(gòu)中
無論v條件表達(dá)式〉的值為真還是假,都只
執(zhí)行一個(gè)語句時(shí)可使用IIF函數(shù)。
2011-7-1049
語句:
y=IIf(v條件表達(dá)式>,V語句1>,<語句2>)
相當(dāng)于:
Ifv條件表達(dá)式>Thenv語句1>Elsev語句2>
例44中計(jì)算分段函數(shù)完全可以使用IIF函
數(shù)編寫。其中的If…Else結(jié)構(gòu)可用如下代碼
替換即可,其運(yùn)行結(jié)果完全相同。
y=IIf(x>=0,1+x,1+2*x)
2011-7-1050
4.3.4多分支的If選擇結(jié)構(gòu)
1.多分支的If結(jié)構(gòu)如下:
Ifv條件1>Then
[語句組1]
[Elselfv條件2>Then
[語句組2]]
???
[Elselfv條件n>Then
[語句組n]]
[Else
[語句組n+1]]
EndIf
2011-7-1051
2.多分支IF結(jié)構(gòu)的N?S結(jié)構(gòu)化流程圖
判斷條件
IFElseIf????????????ElseIfElse
條件1成立條件2成立條件n成立
執(zhí)行語執(zhí)行語執(zhí)行語執(zhí)行語
句組1句組2????????????句組n句組n+1
2011-7-1052
3.說明:
多分支的塊If結(jié)構(gòu)由If語句開始,
EndIf語句結(jié)束,中間的Elself語句和
Else語句是可選項(xiàng)。
(1)執(zhí)行時(shí),先判斷If語句后面的條件1,
如果條件1值為真,則執(zhí)行語句組1中的
各語句,執(zhí)行完后再執(zhí)行EndIf語句;
(2)若條件1的值為假,則判斷條件2,如
果條件2的值為真,則執(zhí)行語句組2中的
各語句,執(zhí)行完后再執(zhí)行EndIf語
2011句;…口53
(3)若條件n?l的值為假,則判斷條件n,
如果條件n的值為真,則執(zhí)行語句組n中
的各語句,執(zhí)行完后再執(zhí)行EndIf語句;
否地執(zhí)行Else后面語句組n+1中的各語句,
執(zhí)行完后再執(zhí)行EndIf語句。
(4)在多分支的塊If結(jié)構(gòu)中根據(jù)需要可以
有多個(gè)Elself語句,但最多只能有一個(gè)
Eke語句,使用時(shí)一定要注意。
2011-7-1054
【例4?4】某商場對顧客購物實(shí)行打折銷售。規(guī)定
如下:
購物款v500元沒有折扣
500元v購物款01000元折扣5%
1000元v購物款01500元折扣8%
1500元v購物款02000元折扣10%
2000元v購物款02500元折扣15%
購物款>2500元折扣20%
設(shè)計(jì)工程,當(dāng)輸入購物款時(shí)按“計(jì)算”按鈕
就可以輸出折扣后應(yīng)交的實(shí)際購物款。
2011-7-1055
工程設(shè)計(jì)步驟如下:
(1)新建“標(biāo)準(zhǔn)EXE”工程,在出現(xiàn)的窗
體上添加兩個(gè)標(biāo)簽、兩個(gè)文本框和兩個(gè)
命令按鈕,如函令8所示。
(2)設(shè)置窗體和控件的屬性如圖4?8所示。
2011-7-10圖4?8購物打折銷售計(jì)算應(yīng)付款工程的界面設(shè)置56
(3)編寫代碼如下:
編寫單擊“計(jì)算”按鈕應(yīng)執(zhí)行下列代碼。
PrivateSubCommandl_Click()
DimxAsSingle,yAsSingle
x=Val(Textl.Text)
Ifx<=500Then
y=x
Elselfx<=1000Then
y=(l-0.05)x
Elselfx<=1500Then
2011-7-1057
y=(l-0.08)x
Elselfx<=2000Then
y=(l-04)*x
Elselfx<=2500Then
y=(l-0.15)*x
Else
y=(l-0.2)*x
EndIf
Text2.Text=''實(shí)際交款:n&y&八元"
EndSub
2011-7-1058
編寫單擊“清除”按鈕執(zhí)行下列代碼。
PrivateSubCommand2click()
Text1.Text=
Textl.Text=
EndSub
(4)運(yùn)行工程。按F5運(yùn)行工程,出現(xiàn)運(yùn)行
畫面后,在“請輸入購物款”的右邊的文
本框中輸入實(shí)際購物款,然后單擊“計(jì)算”
得到實(shí)際應(yīng)付款數(shù)顯示在第二個(gè)文本框中
如圖4?9所示。
2011-7-1059
圖4?9計(jì)算“實(shí)際應(yīng)付款數(shù)”工程運(yùn)行結(jié)果
2011-7-1060
【例4?5】設(shè)計(jì)一個(gè)流動字幕,如圖4?10所示。
工程設(shè)計(jì)步驟如下:
(1)新建“標(biāo)準(zhǔn)EXE”工程,在出現(xiàn)的窗體上
添加一個(gè)命令按鈕、一個(gè)標(biāo)簽和一個(gè)計(jì)時(shí)器
設(shè)計(jì)界面如圖4?10所示。
(2)設(shè)置窗體及控件的屬性如圖4?10所示。
其中計(jì)時(shí)器的Interval屬性設(shè)置為10,Enable
設(shè)為False。注意此時(shí)的命令按鈕“開始”上
有一個(gè)熱鍵S,是在給命令按鈕設(shè)置Caption
屬性時(shí)加上的只要在選中的字母前面加上一
個(gè)符號即可。
2011-7-1061
圖4?10設(shè)計(jì)一個(gè)流動字幕工程界面及屬性設(shè)置
2011-7-1062
PrivateSubCommandl_Click()
,IfCommandl.Caption="開始&S''Then
Commandl.Caption="暫停&S”
Timer1.Enabled=True
ElselfCommandl.Caption="暫停&SnThen
)Commandl.Caption="繼續(xù)&C''
'Timerl.Enabled=False
Else
Commandl.Caption="暫停&S''
ITimerl.Enabled=True
EndIf
EndSub
2011-7-1063
返回/設(shè)置對
PrivateSubTimerl_Timer()象的寬度。
IfLabell.Left+Labell.Width>0Then
Labell.MoveLabell.Left-50
Else
Labell.Left=Forml.ScaleWidth
EndIf
EndSub返回/設(shè)置對
象內(nèi)部的水平
度量單位數(shù)。
2011-7-1064
(4)運(yùn)行程序。單擊“開始”命令按
鈕,則字幕開始從右向左移動,直到
在左邊消失,然后接著又從右邊開始
向左邊移動。此時(shí)單擊“暫停”按鈕,
則字幕停止移動。若想繼續(xù)移動字幕,
再單擊“繼續(xù)”按鈕。請注意該程序
中只有一個(gè)命令按鈕就可以控制各種
情況。如開始、暫停和繼續(xù)。
2011-7-1065
圖4-11流動字幕工程運(yùn)行結(jié)果
2011-7-1066
【例4-6】求一元二次方程的根。
分析:一元二次方程的根,有以下幾種情況:
(1)當(dāng)a#)時(shí),設(shè)delta=b?-4ac。
當(dāng)判別式delta>0時(shí),方程有兩個(gè)不同的實(shí)根;
當(dāng)判別式delta=0時(shí),方程有兩個(gè)相同的實(shí)根;
當(dāng)判別式deltav0時(shí),方程有兩個(gè)共甄復(fù)根。
(2)當(dāng)a=0,若b和時(shí),則方程有一個(gè)根。
當(dāng)a=0,若b=0時(shí),則方程無意義。
2011-7-1067
工程設(shè)計(jì)步驟如下:
(1)新建“標(biāo)準(zhǔn)EXE”工程。在出現(xiàn)的窗體
上添加兩個(gè)框架、五個(gè)標(biāo)簽、三個(gè)文本框
和兩個(gè)命令按鈕,其中框架1中包括三個(gè)文
本框和三個(gè)標(biāo)簽,框架2中包括一個(gè)標(biāo)簽,
如圖4-12所示。
(2)設(shè)置窗體及控件的屬性如圖4?12所示。
2011-7-1068
圖4-12求方程的根工程界面設(shè)計(jì)和屬性設(shè)置
2011-7-1069
(3)編寫代碼如下:
編寫單擊“計(jì)算方程根”命令按鈕所執(zhí)行
的代碼
PrivateSubCommandl_Click()
DimaAsSingle,bAsSingle,cAsSingle
DimsbAsSingle,xbAsSingle,rcAs
Single
a=Val(Textl.Text)
b=Val(Text2.Text)
c=Val(Text3.Text)
2011-7-1070
Ifa<>0Then
delta=bA2-4*a*c
rc=?b/(2*a)
Ifdelta>0Then
sb=Sqr(delta)/(2a)
Labell.Caption="方程有兩個(gè)實(shí)根"
pl="xl="&Str(rc+sb)
p2="x2="&Str(rc-sb)
Labell.Caption=pl&Chr(13)&p2
2011-7-1071
Elselfdelta=0Then
Label2.Caption="方程有兩個(gè)相等的實(shí)根”
Labell.Caption=nxl=x2n&Str(rc)
Else
xb=Sqr(-delta)/(2*a)
Label2.Caption="方程有兩個(gè)的虛根"
pl=nxl=M&Str(rc)&&IIf(xb=1,_
Str(xb))&""
p2="x2=''&Str(rc)&"&IIf(xb=1,_
Str(xb))&"i"
Labell.Caption=pl&Chr(13)&p2
EndIf
Else
M???1
cIfb<>0Then
y="b/c
Label2.Caption”方程僅有一個(gè)根”
}Labell.Caption"x=''&Str(y)
|Else
Labell.Caption="方程無意義!”
Labell.Caption_,,,,
'EndIf
EndIf
EndSub
2011-7-1073
編寫單擊“退出”命令按鈕所執(zhí)行的代碼
PrivateSubCommand2_Click()
End
EndSub
(4)運(yùn)行程序。在出現(xiàn)的界面上。根據(jù)提
示,首先在三個(gè)文本框中輸入一元二次
方程的三個(gè)系數(shù)。然后單擊Commandl
命令按鈕”計(jì)算方程根”就可得到相應(yīng)
方程的根如圖4-13所示。
2011-7-1074
圖4-13求一元二次方程根的工程運(yùn)行結(jié)果
4.3.5fflSelectCase語句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)
2011-7-1075
VB中還提供SelectCase語句用來實(shí)現(xiàn)多分支結(jié)構(gòu)
1.SelectCase語句的一般格式如下:
SelectCasev選擇表達(dá)式〉
[Casev表達(dá)式列表1>
[v語句組1>]]
[Casev表達(dá)式列表2>
卜語句組2>]]
[Casev表達(dá)式列表n>
[v語句組n>]]
[CaseElse
[v語句組n+l>]]
坳瞬elect76
多分支選擇結(jié)構(gòu)流程圖
SelectCasev選擇表達(dá)式,
CaseCaseCase
????????????CaseElse
情況1情況2情況n
執(zhí)行語執(zhí)行語執(zhí)行語執(zhí)行語
句組1句組2????????????句組n句組n+1
EndSelect
2011-7-1077
2.說明:
(1)v選擇表達(dá)式〉為必選項(xiàng),用來指出被選
擇的表達(dá)式或變量名。可以是任何數(shù)值和字
符串表達(dá)式。
(2)在Case子句中,v表達(dá)式列表,為必選參
數(shù),用來測試是否有與選擇表達(dá)式匹配的表
達(dá)式或變量名,它必須是常量而且必須與選
擇表達(dá)式或變量的類型一致。
(3)在Case子句中,v表達(dá)式列表,可以是一
個(gè)或多個(gè)表達(dá)式的值,如表4?7所示。
2011-7-1078
表4-7Case表達(dá)式列表的形式
形式示例說明
表達(dá)式Case50*b數(shù)值和字符串表達(dá)式
表達(dá)式To表達(dá)式Case1To10用來指定1個(gè)數(shù)值范圍。
Case“a'To"m"
Is關(guān)系表達(dá)式CaseIs>200可以配合比較運(yùn)算符來
CaseIs<=5,8,20指定1個(gè)數(shù)值范圍。這里
Is是關(guān)鍵字。
2011-7-1079
(4)當(dāng)使用多個(gè)表達(dá)式列表時(shí),表達(dá)式各
項(xiàng)之間應(yīng)用逗號“,”隔開。
(5)〈語句組〉是一條或多條語句為可選參
數(shù),當(dāng)v表達(dá)式列表,中有值與〈選擇表達(dá)
式》相匹配時(shí)執(zhí)行。
(6)CaseElse語句用于指明其他語句序列,
當(dāng)v選擇表達(dá)式〉與所有的Case子句中v表
達(dá)式列表》中的值都不匹配時(shí),執(zhí)行Case
Else后面的語句,雖然不是必須的。但若
在SelectCase結(jié)構(gòu)中加上CaseElse語句,
就可用來處理一些不可預(yù)見的〈選擇表達(dá)
式>的值。
2011-7-1080
下列Case子句的寫法是正確的:
Dimx
SelectCasex
Case1
Case“a”
Case2,3,8
Case1To5
Case1,6To9
Case1To3,6To8
CaseIs<12,Is>20
WoSelect81
下列Case子句的寫法是不正確的,程
序運(yùn)行時(shí)并不發(fā)生錯(cuò)誤,但是運(yùn)行結(jié)果并
不是所預(yù)料的,應(yīng)避免此類寫法。
Dimx
SelectCasex
Casex=l
Casex="a”
Casex>12Andx<=20
EndSelect
2011-7-1082
【例4?7】例4?4題中計(jì)算打折銷售款的
程序也可用SelectCase結(jié)構(gòu)編寫,具體
程序代碼如下所示。
編寫單擊Commandl命令按鈕“計(jì)算”
執(zhí)行的代碼。
PrivateSubCommandl_Click()
DimxAsSingle,yAsSingle
x=Val(Textl.Text)
2011-7-1083
SelectCasex
X為選擇
CaseIs<=500表達(dá)式。
y=x
CaseIs<=1000
y=(i-0.05)
CaseIs<=1500
y=(l-0.08)
CaseIs<=2000
y=(i?o])*
2011-7-1084
CaseIs<=2500
y=(l-0.15)*x
CaseElse
y=(l-0.2)*x
EndSelect
Text2.Text=''實(shí)際交款:"&y&"元"
EndSub
2011-7-1085
編寫單擊“清除”按鈕應(yīng)執(zhí)行下列代
PrivateSubCommand2click()
Textl.Text=
Text2.Text=''''
EndSub
2011-7-1086
【例4?8】某航空公司規(guī)定在旅游的旺季5,
7?10月份,如果訂票數(shù)超過20張票價(jià)優(yōu)惠
15%,20張以下,優(yōu)惠5%;在旅游的淡
季1?4月份,11月份,12月份,如果訂票
數(shù)超過20張,票價(jià)優(yōu)惠30%,20張以下,
優(yōu)惠20%;其他情況一律優(yōu)惠10%。
設(shè)計(jì)程序,根據(jù)月份和訂票數(shù)決定票價(jià)優(yōu)
惠率。
分析:根據(jù)題意,畫出流程圖如下頁所示。
2011-7-1087
2011-7-1088
設(shè)計(jì)工程步驟如下:
(1)在窗體設(shè)計(jì)器上添加兩個(gè)文框、四個(gè)標(biāo)
簽和一個(gè)命令按鈕。
(2)設(shè)置各控件的屬性如下圖所示:
2011-7-1089
(3)編寫程序代碼
編寫單擊命令按鈕1的事件過程代碼如下
PrivateSubCommandl_Click()
DimmAsInteger,nAsInteger,rAsInteger
IfTextl.Text<0OrTextl.Text>=13Then
MsgBox”請重新輸入月份“
Textl.SetFocus
ExitSub
EndIf
m=Val(Textl.Text)
n=Val(Text2.Text)
2011-7-1090
(SelectCasem
CaseIs<=4,11,12
Ifn<20Thenr=20Elser=30
Case5,7To10
Ifn<20Thenr=5Elser=15
CaseElse
r=10
IEndSelect
Label4.Caption=,,所訂機(jī)票的優(yōu)惠率
為:”
&麗(r)&91
為了使用更方便,再增加如下代碼
PrivateSubForm_Load()
,Textl中的默認(rèn)后為當(dāng)前月份
Text1.Text=Month(Date)
EndSub
編寫Textl獲得焦點(diǎn)事件發(fā)生時(shí)的代碼
PrivateSubTextl_GotFocus()
Textl.SelStart=0
Textl.SelLength=Len(Textl.Text)
EndSub
2011-7-1092
編寫Textl_KeyPress事件發(fā)生時(shí)的代碼
PrivateSubTextl_KeyPress(KeyAsciiAsInteger)
z-IfKeyAscii=13Then
rlfText1.Text>0AndText1.Text<13Then
(yTextl.SetFocus
〔EndIf
EndIf
EndSub
2011-7-1093
編寫Text2_KeyPress事件發(fā)生時(shí)的代碼
PrivateSubText2_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
rIfTextl.Text>0Then
Commandl.SetFocus
(else
Textl.SetFcous
<EndIf
EndIf
EndSub
2011-7-1094
編寫Textl獲得焦點(diǎn)事件發(fā)生時(shí)的代碼
PrivateSubText2_GotFocus()
Text2.SelStart=0
Textl.SelLength=Len(Text2.Text)
EndSub
(4)按F5鍵運(yùn)行結(jié)果,分別輸入不同的值
和運(yùn)行結(jié)果如下頁圖4-14所示。
2011-7-1095
2011-7-10圖4?1496
SuccesswithMoneyandJoy
附熠人生心語
?成功是一種觀念
?致富是一種義務(wù)
?快樂是一種權(quán)利
?每個(gè)人都有能力、有義
務(wù)、有權(quán)利辦到成功
致富快樂
附贈人生心語
成成功不是打敗別人
功成功不是超越別人
成功不是名、利、權(quán)的獲得
致?lián)碛薪】档纳眢w
豐足的物質(zhì)生活
富平衡的心理狀態(tài)
又才能擁有成功
快
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 嬰幼兒早期教育服務(wù)質(zhì)量研究-洞察分析
- 小微企業(yè)網(wǎng)絡(luò)營銷效果評估-洞察分析
- 藥品價(jià)格與社會保險(xiǎn)聯(lián)動-洞察分析
- 稀疏概率圖學(xué)習(xí)-洞察分析
- 心理彈性培養(yǎng)在教育中的實(shí)踐-洞察分析
- 舞蹈藝術(shù)中的身體審美觀念變遷-洞察分析
- 藝術(shù)社區(qū)發(fā)展評價(jià)體系-洞察分析
- 虛擬化技術(shù)安全挑戰(zhàn)-洞察分析
- 投資咨詢行業(yè)國際化挑戰(zhàn)-洞察分析
- 現(xiàn)代藝術(shù)與生態(tài)材料應(yīng)用-洞察分析
- 課程教學(xué)目標(biāo)達(dá)成度評價(jià)表
- 造紙行業(yè)崗位安全操作規(guī)程匯編
- 陜西西安浐灞生態(tài)區(qū)管理委員會招聘考試真題2022
- 保安先進(jìn)班組事跡范文(28篇)
- DRG付費(fèi)改革理論考核試題題庫與答案
- 氣動輸送管道安裝工藝
- 2006年考研英語一真題及答案詳細(xì)解析
- 新時(shí)代職業(yè)英語《 通用英語1》教學(xué)課件U5
- 物業(yè)企業(yè)安全生產(chǎn)責(zé)任清單參考模板
- 建筑給水鋼塑復(fù)合管管道工程技術(shù)規(guī)程
- 機(jī)架結(jié)構(gòu)設(shè)計(jì)
評論
0/150
提交評論