Visual Basic程序設(shè)計教程(第3版)第vb5_第1頁
Visual Basic程序設(shè)計教程(第3版)第vb5_第2頁
Visual Basic程序設(shè)計教程(第3版)第vb5_第3頁
Visual Basic程序設(shè)計教程(第3版)第vb5_第4頁
Visual Basic程序設(shè)計教程(第3版)第vb5_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

選擇結(jié)構(gòu)的特點是:根據(jù)所給定的條件為真(即條件成立)與否,決定從各實際可能的不同分支中執(zhí)行某一分支的相應(yīng)操作,并且在任何情況下總有“無論分支多寡,必擇其一”的特性。5.1If語句5.1.1單行結(jié)構(gòu)條件語句If…Then…Else1.單行條件語句If的語法格式單行條件語句比較簡單,其語法格式為:If〈條件〉Then[〈語句組1〉][Else〈語句組2〉]2.單行If語句的使用示例【例5-1】編寫程序,任意輸入一個整數(shù),判定該整數(shù)的奇偶性。5章選擇結(jié)構(gòu)程序設(shè)計【分析】判斷某整數(shù)的奇偶性,就是檢查該數(shù)是否能被2整除。若能被2整除,該數(shù)為偶數(shù);否則為奇數(shù)。被2整除,可以利用Mod運算來完成。(1)建立用戶界面,如圖5-1所示。(2)設(shè)置對象屬性,見表5-1。3)編寫事件代碼。“判定”命令按鈕Command1的Click事件代碼如下:PrivateSubCommand1_Click()DimxAsIntegerx=Val(Text1.Text)Label2.FontSize=20IfxMod2=0ThenLabel2.Caption="偶數(shù)"ElseLabel2.Caption="奇數(shù)"EndSub“清除”命令按鈕Command2的Click事件代碼如下:PrivateSubCommand2_Click()Text1.Text=""EndSub“結(jié)束”命令按鈕Command3的Click事件代碼如下:PrivateSubCommand3_Click()UnloadMeEndSub運行程序,結(jié)果如圖5-2所示。5.1.2塊結(jié)構(gòu)條件語句If…Then…Else…EndIf1.塊If語句的語法格式塊If語句又稱為多行If語句,其語法格式為:If〈條件〉Then〈語句組1〉[Else〈語句組2〉]EndIf2.塊If語句使用示例【例5-3】將例5-1中命令按鈕Command1的Click事件代碼改寫為塊If語句。代碼如下:PrivateSubCommand1_Click()DimxAsIntegerx=Val(Text1.Text)Label2.FontSize=20IfxMod2=0ThenLabel2.Caption="偶數(shù)"ElseLabel2.Caption="奇數(shù)"EndIfEndSub【例5-4】將例5-2中命令按鈕Command1的Click事件代碼改為多行If語句。代碼如下:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx>=0Theny=1+xElsey=12*xEndIfText2.Text=yEndSub【例5-5】已知兩個數(shù)x和y,設(shè)計程序,比較它們的大小,并輸出較大數(shù)。設(shè)計步驟如下。(1)建立用戶界面并設(shè)置對象屬性,如圖5-4所示。(2)編寫事件代碼?!氨容^”命令按鈕Command1的Click事件代碼為:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)y=Val(Text2.Text)Ifx<yThent=xx=yy=tEndIfLabel3.Caption="較大數(shù)為"&Str(x)EndSub5.1.3使用IIf函數(shù)使用IIf函數(shù)也可以實現(xiàn)一些比較簡單的選擇結(jié)構(gòu)。IIf函數(shù)的語法結(jié)構(gòu)為:IIf(〈條件表達式〉,〈真部分〉,〈假部分〉)

語句y=IIf(〈條件表達式〉,〈真部分〉,〈假部分〉)相當于If〈條件表達式〉theny=〈真部分〉Elsey=〈假部分〉【例5-6】使用IIf函數(shù),例5-2中命令按鈕Command1的Click事件代碼可以改寫為:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)

y=IIf(x>=0,1+x,12*x)Text2.Text=y EndSub5.1.4If語句的嵌套1.If語句的嵌套If語句的嵌套是指If或Else后面的語句塊中又包含If語句。語法格式如下:If〈條件1〉ThenIf〈條件2〉Then……EndIf……EndIf【例5-7】鐵路托運行李,從甲地到乙地,規(guī)定每張客票托運費計算方法是:行李重量不超過50千克時,每千克0.25元;超過50千克而不超過100千克時,其超過部分每千克0.35元;超過100千克時,其超過部分每千克0.45元。編寫程序,輸入行李重量,計算并輸出托運的費用(如圖5-5所示)?!痉治觥吭O(shè)行李重量為w千克,應(yīng)付托運費為x元,則托運費公式為:(1)建立應(yīng)用程序用戶界面并設(shè)置對象屬性,如圖5-5所示。(2)編寫程序代碼。寫出命令按鈕Command1的Click事件代碼如下:PrivateSubCommand1_Click()DimwAsSingle,xAsSingle

w=Val(Text1.Text)Ifw<=50Thenx=0.25*wElseIfw<=100Thenx=0.25*50+0.35*(w50)Elsex=0.25*50+0.35*50+0.45*(w100)EndIfEndIfText2.Text=xEndSub【例5-8】某百貨公司為了促銷,采用購物打折的優(yōu)惠辦法,如圖5-6所示。每位顧客一次購物:(1)1000元以上者,按九五折優(yōu)惠。(2)2000元以上者,按九〇折優(yōu)惠。(3)3000元以上者,按八五折優(yōu)惠。(4)5000元以上者,按八〇折優(yōu)惠。編寫程序,輸入購物款數(shù),計算并輸出優(yōu)惠價?!痉治觥吭O(shè)購物款數(shù)為x元,優(yōu)惠價為y元,則優(yōu)惠付款公式為:(1)建立應(yīng)用程序用戶界面并設(shè)置對象屬性,如圖5-6所示。(2)編寫程序代碼。命令按鈕Command1的Click事件代碼如下:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx<1000Then

y=x '1000元以下不優(yōu)惠

Else

Ifx<2000Theny=0.95*x'1000~2000元,九五折

ElseIfx<3000Theny=0.9*x'2000~3000元,九〇折

Else

Ifx<5000Then

y=0.85*x '3000~5000元,八五折

Elsey=0.8*x '5000元以上,八〇折

EndIfEndIfEndIfEndIfText2.Text=yEndSub2.If語句的嵌套格式ElseIfIf語句嵌套格式的語法格式為:If〈條件1〉Then〈語句組1〉ElseIf〈條件2〉Then〈語句組2〉……[Else〈語句組n+1〉]EndIf【例5-9】修改例5-8程序代碼,使用帶ElseIf的塊If語句計算優(yōu)惠價。只需將“計算”命令按鈕Command1的Click事件代碼改寫為:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx<1000Theny=x '1000元以下不優(yōu)惠

ElseIfx<2000Theny=0.95*x '1000~2000元,九五折

ElseIfx<3000Theny=0.9*x '2000~3000元,九○折

ElseIfx<5000Then

y=0.85*x '3000~5000元,八五折

Elsey=0.8*x '5000元以上,八○折

EndIfText2.Text=yEndSub5.2多分支條件選擇語句SelectCase1.SelectCase語句的語法格式SelectCase語句的語法格式為:SelectCase〈測試條件〉[Case〈表達式表1〉〈語句組1〉][Case〈表達式表2〉〈語句組2〉]……[CaseElse〈語句組n+1〉]EndSelect2.SelectCase語句中〈表達式表〉的使用說明Case子句中的〈表達式表〉是一個或多個表達式的列表,形式有以下3種。(1)形式一〈表達式〉【說明】表達式為數(shù)值表達式或字符串表達式,例如:Case3*x(2)形式二〈表達式〉To〈表達式〉【說明】用來指定一個值范圍,較小的值要放在To之前,例如:Case1To10Case"a"To"d"(3)形式三Is〈關(guān)系運算表達式〉【說明】可以配合比較運算符來指定一個數(shù)值范圍。如果沒有提供,則Is關(guān)鍵字會被自動插入。例如:CaseIs<100當使用多個表達式的列表時,表達式與表達式之間要用逗號“,”隔開。例如:Case2,4,6Case10To20,100To200CaseIs<10,Is>30在Case子句中使用多個表達式時,所列表達式的形式可以不相同,既可以使用值,也可以使用條件或范圍,還可以混合使用。例如:Case2,4,6,10To20,Is>303.SelectCase語句使用示例【例5-10】用SelectCase語句修改例5-9中的代碼。將“計算”命令按鈕Command1的Click事件代碼改寫為:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)SelectCasexCaseIs<1000y=xCaseIs<2000y=0.95*xCaseIs<3000y=0.9*xCaseIs<5000y=0.85*xCaseElsey=0.8*xEndSelectText2.Text=yEndSub【例5-11】為某航空公司計算票價的優(yōu)惠率。假設(shè)優(yōu)惠規(guī)定如下。(1)在旅游的旺季7~9月份,如果訂票數(shù)超過20張,票價優(yōu)惠15%;20張以下,優(yōu)惠5%。(2)在旅游的淡季1~5月份、10月份和11月份,如果訂票數(shù)超過20張,票價優(yōu)惠30%;20張以下,優(yōu)惠20%。(3)其他情況一律優(yōu)惠10%。試設(shè)計程序,根據(jù)月份和訂票張數(shù)決定票價的優(yōu)惠率。設(shè)計步驟如下。(1)建立應(yīng)用程序用戶界面并設(shè)置對象屬性,如圖5-7所示。(2)編寫程序代碼。編寫“計算優(yōu)惠率”命令按鈕Command1的Click事件代碼如下:PrivateSubCommand1_Click()DimmAsInteger,nAsInteger,rAsInteger

m=Val(Text1.Text)n=Val(Text2.Text)SelectCasemCaseIs<=5,10,11 '1~5月份、10月份和11月份

Ifn<20Thenr=20Elser=30'超過20張優(yōu)惠30%,20張以下優(yōu)惠20%Case7To9 '7~9月份

Ifn<20Thenr=5Elser=15'超過20張優(yōu)惠15%,20張以下優(yōu)惠5%CaseElse '其他情況優(yōu)惠10%r=10EndSelectLabel4.Caption="所訂機票的優(yōu)惠率為:"&Str(r)&"%"EndSub在本例中,為了使用更加方便,還可以再增加如下代碼。窗體Form的Load(載入)事件代碼:PrivateSubForm_Load()Text1.Text=Month(Date) 'Text1中的默認值為當前月份EndSub文本框Text1的GotFocus(獲得焦點)事件代碼:PrivateSubText1_GotFocus()Text1.SelStart=0 'Text1文本的起點位置為0Text1.SelLength=Len(Text1.Text) '選擇文本的長度EndSub文本框Text1的KeyPress(按鍵)事件代碼:PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13Then'在Text1中按Enter鍵,光標跳到Text2中

IfText1.Text>0AndText1.Text<13ThenText2.SetFocus '設(shè)置焦點

EndIfEndIfEndSub文本框Text2的GotFocus(獲得焦點)事件代碼:PrivateSubText2_GotFocus()Text2.SelStart=0Text2.SelLength=Len(Text2.Text)EndSub文本框Text2的KeyPress(按鍵)事件代碼:PrivateSubText2_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13Then'

在Text2中按Enter鍵,光標跳到Command1中

IfText2.Text>0ThenCommand1.SetFocusEndIfEndSub【例5-12】任給定一年,判斷該年是否為閏年,并根據(jù)給出的月份來判斷是什么季節(jié)和該月有多少天。閏年的條件是:年份能被4整除但不能被100整除,或者能被400整除?!痉治觥扛鶕?jù)閏年條件可得出閏年的邏輯表達式(yMod4=0AndyMod100<>0)Or(yMod400=0)每月的天數(shù)可根據(jù)月份來判定。設(shè)計步驟如下。(1)建立用戶界面,參見圖5-8。(2)設(shè)置對象屬性,見表5-2。(3)編寫事件代碼。編寫“開始”命令按鈕Command1的Click事件代碼:PrivateSubCommand1_Click()DimyAsInteger,mAsInteger,daysAsIntegerDimleapyearAsBoolean '閏年標記

y=Val(Text1.Text) 'y為年份

m=Val(Text2.Text) 'm為月份

'判斷閏年

If(yMod4=0AndyMod100<>0)Or(yMod400=0)Then

leapyear=True 'True為閏年

Label3.Caption="閏年"Else

leapyear=False 'False為非閏年

Label3.Caption="不是閏年"EndIf

'判斷季節(jié)

SelectCasemCase3To5Label4.Caption="春季(Spring)"Case6To8Label4.Caption="夏季(Summer)"Case9To11Label4.Caption="秋季(Autumn)"Case12,1,2Label4.Caption="冬季(Winter)"EndSelect'判斷月中天數(shù)

SelectCasemCase1,3,5,7,8,10,12Label5.Caption="31天!" '大月為31天

Case4,6,9,11Label5.Caption="30天!" '小月為30天

Case2 '判斷2月份的天數(shù)

IfleapyearThendays=29 '閏年為29天

Elsedays=28 '非閏年為28天

EndIfLabel5.Caption=Str(days)+"天"EndSelectText1.SetFocusEndSub編寫“清除”命令按鈕Command2的Click事件代碼:PrivateSubCommand2_Click()Text1.Text=""Text2.Text=""Label3.Caption=""Label4.Caption=""Label5.Caption=""EndSub運行程序,輸入年份和月份后,單擊“開始”按鈕,將輸出結(jié)果,如圖5-9所示。單擊“清除”按鈕,清除文本框中輸入的內(nèi)容。5.3計時器控件1.計時器控件的主要屬性計時器控件的主要屬性有兩個。(1)Enabled屬性該屬性為真時,定時器開始工作;為假時,暫停。(2)Interval屬性Interval(事件間隔)屬性是一個非常重要的屬性,表示兩個計時器事件之間的時間間隔,其值以ms為單位,介于0~64767ms之間,所以最大的時間間隔約為1.5min。2.計時器控件使用示例【例5-13】設(shè)計數(shù)字計時器。(1)建立用戶界面。在窗體上建立一個計時器控件和兩個標簽控件,如圖5-10所示。

(2)設(shè)置對象屬性,見表5-3。(3)編寫程序代碼。編寫計時器控件Timer1的Timer(計時器)事件代碼:PrivateSubTimer1_Timer()Label2.Caption=Time$ '在標簽上顯示當前時間EndSub運行程序,結(jié)果如圖5-11所示?!纠?-14】在窗體上設(shè)計一個能按12小時格式和24小時格式進行轉(zhuǎn)換的數(shù)字時鐘。(1)建立用戶界面。新建一個工程,進入窗體設(shè)計器,增加一個命令按鈕Command1、一個計時器控件Timer1和兩個標簽Label1,Label2,參見圖5-12(a)。其中,計時器控件Timer1可以放在窗體的任何位置。(2)設(shè)置對象屬性,見表5-4。其余對象屬性,參見圖5-12(b)。(3)編寫事件代碼。編寫計時器控件Timer1的Timer(計時器)事件代碼:PrivateSubTimer1_Timer()Label1.Caption=Format(Time,Form1.Tag)IfHour(Time)>12ThenLabel2.Caption="下午"Else

Label2.Caption="上午"EndIfEndSub編寫“改為12小時制”命令按鈕Command1的Click事件代碼:PrivateSubCommand1_Click()IfCommand1.Caption="改為12小時制"ThenForm1.Tag="hh:mm:ssAM/PM"Command1.Caption="改為24小時制"Label2.Visible=TrueElseForm1.Tag="hh:mm:ss"Command1.Caption="改為12小時制"Label2.Visible=FalseEndIfEndSub運行程序,結(jié)果如圖5-13所示。5.4單選鈕和復(fù)選框5.4.1單選鈕控件1.單選鈕控件的主要屬性單選鈕控件的主要屬性,有以下4個。(1)Alignment屬性若Alignment屬性值為0,表示單選鈕在左邊,標題顯示在右邊。這是默認設(shè)置。若Alignment屬性值為1,表示單選鈕在右邊,標題顯示在左邊。(2)Value屬性若Value屬性值為真,表示單選鈕被選定。如果要使某個按鈕成為單選鈕組中的默認按鈕,就要在設(shè)計時將其Value屬性設(shè)置成真。這個按鈕將保持被選中狀態(tài),直到用戶選擇另一個不同的按鈕或用代碼改變它。若Value屬性值為假,表示單選鈕未被選定。這是默認設(shè)置。(3)Style屬性

Style屬性值為0-Standard時,是標準方式。

Style屬性值為1-Graphical時,是圖形方式。(4)Enabled屬性要禁用某個單選鈕,可將其Enabled屬性設(shè)置為假。程序運行時,此單選鈕顯示為淺灰色,表示無法選取。2.選用單選鈕的方法選擇某個單選鈕可以用下面方法之一:在運行期間,單擊選中單選鈕;用Tab鍵定位到單選鈕組,然后在組內(nèi)使用方向鍵定位單選鈕;用代碼將單選鈕的Value屬性設(shè)置為真(即Option1.Value=True);使用在單選鈕標題中指定的快捷鍵。3.單選鈕的事件單選鈕和復(fù)選框都可以接收Click事件,但一般不需要編寫Click事件代碼。因為當用戶單擊單選鈕或復(fù)選框時,它們會自動改變狀態(tài)。4.使用單選鈕組單選鈕的一個特點是當選定其中一個后,其余就自動關(guān)閉。但當需要在同一窗體中建立幾組相互獨立的單選鈕時,就要用框架(Frame)將每一組單選鈕框起來,這樣在一個框架內(nèi)的單選鈕為一組,它們的操作不影響框外其他組的單選鈕。5.單選鈕應(yīng)用示例【例5-15】修改例5-14,使用單選鈕組,在窗體上設(shè)計一個能按12小時格式和24小時格式進行轉(zhuǎn)換的數(shù)字時鐘。(1)修改用戶界面并設(shè)置對象屬性。在例5-14中,刪去命令按鈕Command1,增加一個框架Frame1。選定框架后,在其中增加兩個單選鈕Option1和Option2。新增控件的屬性設(shè)置,見表5-5。(2)編寫新增控件的事件代碼。原例5-14中計時器控件的Timer事件代碼不變:PrivateSubTimer1_Timer()Label1.Caption=Format(Time,Form1.Tag)

IfHour(Time)>12ThenLabel2.Caption="下午"ElseLabel2.Caption="上午"EndIfEndSub編寫“12小時”單選鈕Option1的Click事件代碼:PrivateSubOption1_Click()Form1.Tag="hh:mm:ssAM/PM"Label2.Visible=TrueEndSub編寫“24小時”單選鈕Option2的Click事件代碼:PrivateSubOption2_Click()

Form1.Tag="hh:mm:ss"

Label2.Visible=FalseEndSub運行程序,結(jié)果如圖5-14所示?!纠?-16】輸入圓的半徑r,利用單選鈕,選擇計算面積、周長或面積與周長等。(1)建立用戶界面,參見圖5-15。設(shè)置對象屬性,見表5-6。(2)編寫代碼?;镜拇a是文本框Text1的KeyPress事件代碼:PrivateSubText1_KeyPress(KeyAsciiAsInteger)DimrAsStringIfKeyAscii=13Thenpi=3.14159r=Val(Text1.Text)SelectCaseTrueCaseOption1.Valuen=pi*r*rLabel1.Caption="圓的面積為:"&Str(n)CaseOption2.Valuen=2*pi*rLabel1.Caption="圓的周長為:"&Str(n)

CaseOption3.Valuen=pi*r*rm=2*pi*rLabel1.Caption="圓的面積為:"&Str(n)&Chr(13)&"周長為:"&Str(m)EndSelectText1.SelStart=0Text1.SelLength=Len(Text1.Text)EndIfEndSub文本框Text1的GotFocus事件代碼如下:PrivateSubText1_GotFocus()Text1.SelStart=0Text1.SelLength=Len(Text1.Text)EndSub3個單選鈕具有相同的Click事件代碼:PrivateSubOption1_Click()Text1.SetFocusEndSubPrivateSubOption2_Click()Text1.SetFocusEndSubPrivateSubOption3_Click()Text1.SetFocusEndSub【例5-17】設(shè)計滾動字幕,使“歡迎使用學(xué)生成績管理系統(tǒng)”字樣自右至左地反復(fù)移動。(1)建立用戶界面。(2)設(shè)置對象屬性。屬性修改如圖5-16所示。(3)編寫事件代碼。編寫“開始”命令按鈕Command1的

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論