可視化程序設(shè)計第4章 選擇結(jié)構(gòu)程序設(shè)計.ppt_第1頁
可視化程序設(shè)計第4章 選擇結(jié)構(gòu)程序設(shè)計.ppt_第2頁
可視化程序設(shè)計第4章 選擇結(jié)構(gòu)程序設(shè)計.ppt_第3頁
可視化程序設(shè)計第4章 選擇結(jié)構(gòu)程序設(shè)計.ppt_第4頁
可視化程序設(shè)計第4章 選擇結(jié)構(gòu)程序設(shè)計.ppt_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第4章 選擇結(jié)構(gòu)程序設(shè)計,4.1 條件表達式,1 關(guān)系運算符與關(guān)系表達式 比較兩個運算量之間的關(guān)系,關(guān)系表達式的運算結(jié)果為邏輯 量。若關(guān)系成立,結(jié)果為True,若關(guān)系不成立,結(jié)果為 False。VB中的關(guān)系運算符如下表所示。,關(guān)系運算的規(guī)則如下: (1)當(dāng)兩個操作式均為數(shù)值型,按數(shù)值大小比較。 (2)字符串比較,則按字符的ASCII碼值從左到右一一比較,直到出現(xiàn)不同的字符為止.。 例: ABCDE ABRA 結(jié)果為 False,(3)數(shù)值型與可轉(zhuǎn)換為數(shù)值型的數(shù)據(jù)比較, 如:29189 ,按數(shù)值比較,結(jié)果為False。 (4)數(shù)值型與不能轉(zhuǎn)換成數(shù)值型的字符型比較, 如:77 sdcd ,不能比較

2、,系統(tǒng)出錯。 (5)“Like”運算符是VB6.0新增加的。 其使用格式為:str1 Like str2,2 邏輯運算符與邏輯表達式 邏輯運算符:Not,And,Or Xor,說 明: (1)邏輯運算符的優(yōu)先級不相同,Not(邏輯非)最高,但它低于關(guān)系運算。 (2)VB中常用的邏輯運算符是Not、And和Or。它們用于將多個關(guān)系表達式進行邏輯判斷。 例如: 數(shù)學(xué)上表示某個數(shù)在某個區(qū)域時用表達式: 10X=10 And X20 如果寫成如下形式將是錯誤的: 10=x20 或 10=x Or x20,3 運算符的優(yōu)先順序,算術(shù)運算符-字符串運算符-關(guān)系運算符-布爾運算符 【例4-1】設(shè)變量x =

3、4,y = 1,a = 7.5,b = 6.2,求表達式x + y a + b And Not y 1.3 And Not y b (2) 再作關(guān)系運算: True And Not False (3) 作非運算: True And True (4) 最后得: True,【例4-2】判斷某個年份是閏年的根據(jù)是年份數(shù)滿足下述條件之一。 (1) 能被4整除,但不能被100整除的年份都是閏年。 (2) 能被100整除,又能被400整除的年份都是閏年。 設(shè)變量y表示年份,寫出判斷y是否閏年的布爾表達式。 解:判斷y是否滿足條件(1)的布爾表達式是y Mod 4 = 0 And y Mod 100 0 判

4、斷y是否滿足條件(2)的布爾表達式是y Mod 100 = 0 And y Mod 400 = 0 兩者取“或”,即得判斷閏年的布爾表達式 y Mod 4 = 0 And y Mod 100 0 Or y Mod 100 = 0 And y Mod 400 = 0,4.3單條件選擇語句IF,1. 單行結(jié)構(gòu)條件語句IFTHENELSE If條件Then 語句序列1 Else語句序列2 【例4-3】輸入x,計算y的值。其中:,設(shè)計步驟如下: (1) 建立應(yīng)用程序用戶界面與設(shè)置對象屬性。 (2) 編寫程序代碼。 寫出命令按鈕Command1的單擊(Click)事件代碼為 Private Sub Co

5、mmand1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x = 0 Then y = 1 + x Else y = 1 2 * x Text2.Text = y End Sub,【例4-4】學(xué)校對學(xué)習(xí)成績優(yōu)良的學(xué)生進行獎勵,獲獎的條件如下: (1) 所考5門課的總分超過450分。 (2) 每門課的成績都在88分以上。 (3) 前3門(主課)的成績都在95分以上,其他兩門(非主課)的成績都在80分以上。 輸入某學(xué)生5門課的成績s1、s2、s3、s4、s5,判斷他是否能夠獲獎。 設(shè)計步驟如下: (1) 建立應(yīng)用程序用戶界

6、面與設(shè)置對象屬性。 (2) 編寫程序代碼。,圖4-5 判斷能否獲獎,可以寫出命令按鈕Command1的單擊(Click)事件代碼為: Private Sub Command1_Click() Dim s1 As Single, s2 As Single, s3 As Single, s4 As Single, s5 As Single Dim p As String s1 = Val(InputBox(請輸入第1門課的成績:, 輸入框, 0) s2 = Val(InputBox(請輸入第2門課的成績:, 輸入框, 0) s3 = Val(InputBox(請輸入第3門課的成績:, 輸入框, 0

7、),s4 = Val(InputBox(請輸入第4門課的成績:, 輸入框, 0) s5 = Val(InputBox(請輸入第5門課的成績:, 輸入框, 0) t1 = (s1 + s2 + s3 + s4 + s5 = 450) t2 = (s1 = 88 And s2 = 88 And s3 = 88 And s4 = 88 And s5 = 88) t3 = (s1 = 95 And s2 = 95 And s3 = 95 And s4 = 80 And s5 = 80) If t1 Or t2 Or t3 Then p = 可以獲獎! Else p = 不能獲獎! p = Str(s1

8、) Is 60,2. SELECT CASE結(jié)構(gòu)的應(yīng)用,【例4-11】在例4-9中使用Select Case語句來計算優(yōu)惠價,只需將其中命令按鈕Command1的單擊(Click)事件代碼改為 Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) Select Case x Case Is 1000 y = x,Case Is 2000 y = 0.95 * x Case Is 3000 y = 0.9 * x Case Is 5000 y = 0.85 * x Case Else y = 0

9、.8 * x End Select Text2.Text = y End Sub,【例4-12】某航空公司規(guī)定在旅游的旺季79月份,如果訂票數(shù)超過20張,票價優(yōu)惠15%,20張以下,優(yōu)惠5%;在旅游的淡季15月份、10月份、11月份,如果訂票數(shù)超過20張,票價優(yōu)惠30%,20張以下,優(yōu)惠20%;其他情況一律優(yōu)惠10%。 設(shè)計程序,根據(jù)月份和訂票張數(shù)決定票價的優(yōu)惠率。 設(shè)計步驟如下: (1) 建立應(yīng)用程序用戶界面與設(shè)置對象屬性。,(2) 編寫程序代碼。 根據(jù)流程圖,可以寫出命令按鈕Command1的單擊(Click)事件代碼為: Private Sub Command1_Click() Dim

10、m As Integer, n As Integer, r As Integer m = Val(Text1.Text) n = Val(Text2.Text) Select Case m Case Is = 5, 10, 11 If n 20 Then r = 20 Else r = 30,Case 7 To 9 If n 20 Then r = 5 Else r = 15 Case Else r = 10 End Select Label4.Caption = 所訂機票的優(yōu)惠率為: & Str(r) & % End Sub 為了使用更加方便,再增加如下代碼。 窗體的Load事件代碼:,Pr

11、ivate Sub Form_Load() Text1.Text = Month(Date) Text1中的默認值為當(dāng)前月份 End Sub 文本框Text1的GotFocus事件代碼: Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub,文本框Text1的按健(KeyPress)事件代碼: Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then 在Text1按回車鍵,光標跳到Text

12、2 If Text1.Text 0 And Text1.Text 13 Then Text2.SetFocus End If End If End Sub 文本框Text2的GotFocus事件代碼: Private Sub Text2_GotFocus(),Text2.SelStart = 0 Text2.SelLength = Len(Text2.Text) End Sub 文本框Text2的按健(KeyPress)事件代碼: Private Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then 在Text2按回車鍵,光

13、標跳到Command1 If Text2.Text 0 Then Command1.SetFocus End If End Sub,4.5使用計時器控件,1.用途 計時器控件(Timer)又稱時鐘、定時器控件,用于有規(guī)律地定時執(zhí)行指定的工作,常常用于編寫不需要與用戶進行交互就可直接執(zhí)行的代碼,如計時、倒計時、動畫等。在程序運行階段,時鐘控件不可見。 2 屬 性 (1)Interval屬性 取值范圍在0 64767 ,單位:為毫秒(0.001秒),表示計時間隔。若將Interval屬性設(shè)置為0或負數(shù),則計時器停止工作。缺省設(shè)置為 0 (2)Enabled屬性 設(shè)置為True,而且Interval

14、屬性值大于0,則計時器開始工(以Interval屬性值為間隔,觸發(fā)Timer事件)。 設(shè)置為False可使時鐘控件無效,即計時器停止工作。缺省設(shè)置為True,3 方 法 Timer控件沒有方法。 4 事 件 時鐘控件只有Timer事件 當(dāng)Enabled屬性值為True且Interval屬性值大于0時, 該事件以Interval屬性指定的時間間隔發(fā)生 常常將需要定時執(zhí)行的操作放在Timer事件過程中,計時器控件 應(yīng)用舉例,1. 設(shè)計一個電子表,【例4-13】在窗體上設(shè)計一個數(shù)字時鐘,如圖4-15所示。,圖4-16 建立界面與設(shè)置屬性,圖4-15 數(shù)字時鐘,設(shè)計步驟如下: (1) 建立應(yīng)用程序用戶

15、界面。 (2) 設(shè)置對象屬性, (3) 編寫程序代碼。 編寫計時器控件Timer1的Timer事件代碼: Private Sub Timer1_Timer() Label1.Caption = Format(Time, Form1.Tag) Label2.Caption = IIf(Hour(Time) 12, 下午, 上午) End Sub,編寫命令按鈕Command1的Click事件代碼: Private Sub Command1_Click() If Command1.Caption = 改為12小時 Then Form1.Tag = hh:mm:ss AM/PM Command1.Ca

16、ption = 改為24小時 Label2.Visible = True Else Form1.Tag = hh:mm:ss Command1.Caption = 改為12小時 Label2.Visible = False End If End Sub,2.設(shè)計一個計時器,【例4-14】一個簡單計時器。如圖4-17所示。,圖4-17 簡單計時器,圖4-18 計時器的設(shè)計,設(shè)計步驟如下: (1) 建立應(yīng)用程序用戶界面與設(shè)置對象屬性。 (2) 編寫程序代碼。 編寫Command1(開始)的Click事件代碼: Private Sub Command1_Click() If Command1.Cap

17、tion = &S 暫停 Then Command1.Caption = &C 繼續(xù) Timer1.Enabled = False Else Command1.Caption = &S 暫停 If Label1.Caption = 00:00:00:0 Then Form1.Tag = Timer Timer1.Enabled = True End If End Sub,編寫Command2(重置)的Click事件代碼: Private Sub Command2_Click() Form1.Tag = Timer Label1.Caption = 00:00:00:0 End Sub 編寫Ti

18、mer1的Timer事件代碼: Private Sub Timer1_Timer() m = Timer Form1.Tag n0 = (m * 10) Mod 10 m = Int(m) n1 = Format(m Mod 60, 00.) n2 = Format(m 60) Mod 60, 00:) n3 = Format(m 3600, 00:) Label1.Caption = n3 & n2 & n1 & n0 End Sub,3.設(shè)計一個流動字幕板,【例4-15】為一個應(yīng)用系統(tǒng)設(shè)計流動字幕板,如圖4-19所示,標題“欲窮千里目,更上一層樓”在窗體中自右至左地反復(fù)移動。,圖4-19

19、電子標題板 圖4-20 用戶界面的設(shè)計,設(shè)計步驟如下: (1) 建立應(yīng)用程序用戶界面與設(shè)置對象屬性 (2) 編寫程序代碼。 編寫命令按鈕Command1的Click事件代碼: Private Sub Command1_Click() If Command1.Caption = &S 暫停 Then Command1.Caption = &C 繼續(xù) Timer1.Enabled = False Else Command1.Caption = &S 暫停 Timer1.Enabled = True End If End Sub,編寫Timer1的Timer事件代碼: Private Sub Tim

20、er1_Timer() If Label1.Left + Label1.Width 0 Then Label1.Move Label1.Left 20 Else Label1.Left = Form1.ScaleWidth End If End Sub,4.6 提供簡單選擇的控件 4.6.1選項按鈕,1 用途 單選鈕(OptionButton)也稱作選擇按鈕。一組單選鈕控件可以提供一組彼此相互排斥的選項,任何時刻用戶只能從中選擇一個選項,實現(xiàn)一種“單項選擇”的功能,被選中項目左側(cè)圓圈中會出現(xiàn)一黑點。 2. 重要屬性 (1) Caption:文本標題。設(shè)置單選鈕的文本注釋內(nèi)容。 (2) Alig

21、nment屬性: 0:Left Justify(缺省設(shè)置)控件鈕在左邊,標題顯示在右邊。 1:Right Justify 控件鈕在右邊,標題顯示在左邊。 (3)Value 屬性 True: 單選鈕被選定 False: 單選鈕未被選定(缺省設(shè)置),(4) Style 屬性 0-Standard: 標準方式 1-Graphical:圖形方式,3 方法 SetFocus方法是單選鈕控件最常用的方法,可以在代碼中 通過該方法將Value屬性設(shè)置為True。 與命令按鈕相同,使用該方法之前,必須要保證單選鈕處 于可見和可用狀態(tài)(即Visible與Enabled屬性值均True)。 4 事件 Click事

22、件是單選鈕控件最基本的事件,一般情況用戶無 需為單選鈕編寫Click事件過程,因為當(dāng)用戶單擊單選鈕 時,它會自動改變狀態(tài)。,選項按鈕組應(yīng)用舉例 【例4-16】在例4-13中使用選項按鈕組來選擇時間的格式 編寫新增控件的事件代碼。 編寫選項按鈕Option1的Click事件代碼: Private Sub Option1_Click() Form1.Tag = hh:mm:ss AM/PM Label2.Visible = True End Sub 編寫選項按鈕Option2的Click事件代碼: Private Sub Option2_Click() Form1.Tag = hh:mm:ss L

23、abel2.Visible = False End Sub,例4-17】設(shè)銀行定期存款年利率為:1年期2.25%,2年期2.43%,3年期2.70%,5年期2.88%(不計復(fù)利)。今有本金a元,5年以后使用,共有以下6種存法: l 存一次5年期。 l 存一次3年期,一次2年期。 l 存一次3年期,兩次1年期。 l 存兩次2年期,一次1年期。 l 存一次2年期,三次1年期。 l 存五次1年期。 分別計算各種存法5年后到期時的本息合計,編寫命令按鈕Command1的單擊(Click)事件代碼: Private Sub Command1_Click() Dim a As Single, y As S

24、ingle Dim x1 As Single, x2 As Single Dim x3 As Single, x5 As Single a = Val(Text1.Text) x1 = 0.0225: x2 = 0.0243 x3 = 0.027: x5 = 0.0288 Select Case True Case Option1.Value y = (1 + 5 * x5) * a,Case Option2.Value y = (1 + 3 * x3) * (1 + 2 * x2) * a Case Option3.Value y = (1 + 3 * x3) * (1 + x1) 2 *

25、a Case Option4.Value y = (1 + 2 * x2) 2 * (1 + x1) * a Case Option5.Value y = (1 + 2 * x2) * (1 + x1) 3 * a Case Option6.Value y = (1 + x1) 5 * a End Select,Text2.Text = y Text1.SetFocus End Sub 編寫文本框Text1的GotFocus事件代碼: Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text

26、) End Sub,圖形選項按鈕應(yīng)用舉例 將選項按鈕設(shè)計成圖形按鈕的形式,【例4-18】用圖形選項按鈕組控制流動字幕中的字體,如圖4-23所示。 設(shè)計步驟如下: (1) 建立應(yīng)用程序用戶界面與設(shè)置對象屬性。 (2) 編寫程序代碼。 依次編寫選項按鈕Option1Option4的Click事件代碼: Private Sub Option1_Click(),Text1.FontName = 宋體 End Sub Private Sub Option2_Click() Text1.FontName = 隸書 End Sub Private Sub Option3_Click() Text1.Font

27、Name = 黑體 End Sub Private Sub Option4_Click() Text1.FontName = 楷體_GB2312 End Sub,4.6.2 復(fù)選框 1 用途 復(fù)選框(CheckBox)也稱作檢查框、選擇框。一組復(fù)選框控件可以提供多個選項,它們彼此獨立工作,所以用戶可以同時選擇任意多個選項,實現(xiàn)一種“不定項選擇”的功能。選擇某一選項后,該控件將顯示,而清除此選項后,消失。,檢查框被選中,2. 重要屬性 Caption、Alignment、Style與單選鈕相同 復(fù)選框的Value 屬性與單選按鈕不同,其值為數(shù)值型數(shù)據(jù),可取0,1,2,復(fù)選框與單選按鈕Value

28、屬性的比較,4 事件 Click事件是檢查框控件最基本的事件。用戶一般無需為檢查框編寫Click事件過程,但其對Value屬性值的改變遵循以下規(guī)則: 單擊未選中的檢查框時,Value屬性值變?yōu)?; 單擊已選中的檢查框時,Value屬性值變?yōu)?; 單擊變灰的檢查框時,Value屬性值變?yōu)?。,復(fù)選框應(yīng)用舉例 1. 使用單個復(fù)選框 【例4-19】在上例中,增加復(fù)選框,控制選項按鈕組的顯示。 增加復(fù)選框控件Check1的Click事件代碼: Private Sub Check1_Click() Option1.Visible = Check1.Value Option2.Visible = Chec

29、k1.Value Option3.Visible = Check1.Value Option4.Visible = Check1.Value End Sub,2. 使用多個復(fù)選框,【例4-20】設(shè)計一個個人資料輸入窗口,使用選項按鈕組輸入性別與民族,使用復(fù)選框輸入個人愛好,如圖4-25所示。 .,圖4-25 使用多個復(fù)選框 圖4-26 建立用戶界面,設(shè)計步驟如下: (1) 建立應(yīng)用程序用戶界面。 (2) 設(shè)置對象屬性。 (3) 編寫程序代碼。 編寫命令按鈕Command1的Click事件代碼: Private Sub Command1_Click() If Text1.Text = Then

30、a = InputBox(您忘了輸入姓名!, 注意, 請在此輸入姓名) If a = Or a = 請在此輸入姓名 Then Exit Sub Text1.Text = a End If,p1 = Text1.Text + , p2 = IIf(Option1, 男, 女) + , p3 = IIf(Option3, 漢族, 少數(shù)民族) p4 = ,喜歡: If Check1.Value = 1 Then p4 = p4 + Check1.Caption + 、 If Check2.Value = 1 Then p4 = p4 + Check2.Caption + 、 If Check3.Va

31、lue = 1 Then p4 = p4 + Check3.Caption + 、 If Check4.Value = 1 Then p4 = p4 + Check4.Caption + 、 aa = p1 + p2 + p3 + IIf(p4 = ,喜歡:, ,無愛好。, p4) Label4.Caption = Left(aa, Len(aa) 1) + 。 Text1.SetFocus End Sub 編寫文本框Text1的Change事件代碼: Private Sub Text1_Change() Label4.Caption = End Sub,3. 復(fù)選框的圖形方式 【例4-21】

32、利用圖形復(fù)選框來控制文本的字體風(fēng)格,如圖4-27所示。,設(shè)計步驟如下: (1) 建立應(yīng)用程序用戶界面。 (2) 設(shè)置對象屬性。 (3) 編寫代碼。 復(fù)選框控件Check1的Click事件代碼: Private Sub Check1_Click() Check2.Enabled = Check1.Value Check3.Enabled = Check1.Value Check4.Enabled = Check1.Value Check1.Caption = IIf(Check4.Caption = 鎖上, 打開, 鎖上) End Sub,復(fù)選框控件Check2的Click事件代碼: Priva

33、te Sub Check2_Click() Text1.FontBold = Check2.Value End Sub 復(fù)選框控件Check3的Click事件代碼: Private Sub Check3_Click() Text1.FontItalic = Check3.Value End Sub 復(fù)選框控件Check4的Click事件代碼: Private Sub Check4_Click() Text1.FontUnderline = Check4.Value End Sub,習(xí)題四 4.1 寫出下列各表達式的值。 (1) 2 * 3 = 8 (2) BCD 12345 & ABC (4) Not 2 * 5 11 (5) 4 = 4 And 5 2 + 2 (6) 8 5 Or Not 10

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論