1 / 58

Visual Basic 程序设计教程

Visual Basic 程序设计教程. 机械工业出版社同名教材 配套电子教案. 2003 年 6 月. 第 4 章 选择结构程序设计. 1. 条件表达式. 1. 1 关系运算符与关系表达式 <1> 关系运算符 <2> 关系表达式 关系表达式的格式为 〈 表达式 1〉〈 关系运算符 〉〈 表达式 2〉[〈 关系运算符 〉〈 表达式 3〉…] 布尔运算符与布尔表达式 VB 提供的布尔运算符有: And 、 Or 、 Not 、 Xor 、 Eqv 、 Imp 等 6 种. 3 运算符的优先顺序.

shelly
Download Presentation

Visual Basic 程序设计教程

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Visual Basic 程序设计教程 机械工业出版社同名教材配套电子教案 2003 年 6月

  2. 第4章 选择结构程序设计 1 条件表达式 1 • 1 关系运算符与关系表达式 • <1> 关系运算符 • <2> 关系表达式 • 关系表达式的格式为 • 〈表达式1〉〈关系运算符〉〈表达式2〉[〈关系运算符〉〈表达式3〉…] • 布尔运算符与布尔表达式 • VB提供的布尔运算符有:And、Or、Not、Xor、Eqv、Imp等6种

  3. 3 运算符的优先顺序 【例4-1】设变量x = 4,y = –1,a = 7.5,b = – 6.2,求表达式x + y > a + b And Not y < b的值。 分析:将按下面步骤计算: (1) 先作算术运算: 3 > –1.3 And Not y < b (2) 再作关系运算: True And Not False (3) 作非运算: True And True (4) 最后得: True

  4. 【例4-2】判断某个年份是闰年的根据是年份数满足下述条件之一。【例4-2】判断某个年份是闰年的根据是年份数满足下述条件之一。 (1) 能被4整除,但不能被100整除的年份都是闰年。 (2) 能被100整除,又能被400整除的年份都是闰年。 设变量y表示年份,写出判断y是否闰年的布尔表达式。 解:判断y是否满足条件(1)的布尔表达式是y Mod 4 = 0 And y Mod 100 <> 0 判断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

  5. 2.单条件选择语句IF 1 单行结构条件语句IF…THEN…ELSE 单行If语句的语法格式为 If〈条件〉Then [〈语句序列1〉] [ Else〈语句序列2〉] 【例4-3】输入x,计算y的值。其中:

  6. 设计步骤如下: (1) 建立应用程序用户界面与设置对象属性。 (2) 编写程序代码。 写出命令按钮Command1的单击(Click)事件代码为 Private Sub Command1_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

  7. 【例4-4】学校对学习成绩优良的学生进行奖励,获奖的条件如下:【例4-4】学校对学习成绩优良的学生进行奖励,获奖的条件如下: (1) 所考5门课的总分超过450分。 (2) 每门课的成绩都在88分以上。 (3) 前3门(主课)的成绩都在95分以上,其他两门(非主课)的成绩都在80分以上。 输入某学生5门课的成绩s1、s2、s3、s4、s5,判断他是否能够获奖。 设计步骤如下: (1) 建立应用程序用户界面与设置对象属性。 (2) 编写程序代码。

  8. 图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))

  9. 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) & "," & Str(s2) & "," & Str(s3) & "," & Str(s4) & "," & Str(s5) & Chr(13) & p Label1.Caption = " 该生五门课的成绩分别是:" & Chr(13) & p End Sub

  10. 【例4-5】利用输入框函数输入3个不同的数,选出其中最大的数。【例4-5】利用输入框函数输入3个不同的数,选出其中最大的数。 设计步骤如下: (1) 建立应用程序用户界面与设置对象属性。 (2) 编写程序代码。

  11. 可以写出命令按钮Command1的单击(Click)事件代码为可以写出命令按钮Command1的单击(Click)事件代码为 Private Sub Command1_Click() Dim a As Single, b As Single, c As Single a = Val(InputBox("请输入第1个数:", "输入框", 0)) b = Val(InputBox("请输入第2个数:", "输入框", 0)) c = Val(InputBox("请输入第3个数:", "输入框", 0)) p = " " & a & "," & b & "," & c p = p & "三个数中最大的数是:" If a > b And a > c Then p = p & a If b > a And b > c Then p = p & b If c > a And c > b Then p = p & c Label1.Caption = p End Sub

  12. 2 使用IIF函数 IIf函数的语法结构为 IIf(〈条件表达式〉,〈真部分〉,〈假部分〉) 【例4-6】例4-3中命令按钮Command1的单击(Click)事件代码可以改为 Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) y = IIf(x >= 0, 1 + x, 1 – 2 * x) Text2.Text = y End Sub

  13. 3.块结构条件语句IF…THEN…ELSE…END IF 其语法结构为 If〈条件1〉Then [语句列1] [Else [语句列2]] End If

  14. 【例4-7】将例4-3中命令按钮Command1的单击(Click)事件代码改为多行If语句:【例4-7】将例4-3中命令按钮Command1的单击(Click)事件代码改为多行If语句: Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x >= 0 Then y = 1 + x Else y = 1 – 2 * x End If Text2.Text = y End Sub

  15. 4. IF语句的嵌套 • IF语句的嵌套 • 【例4-8】铁路托运行李,从甲地到乙地,规定每张客票托运费计算方法是行李重量不超过50kg时,0.25元/kg,超过50kg而不超过100kg时,其超过部分按0.35元/kg收费,超过100kg时,其超过部分按0.45元/kg收费。编写程序,输入行李重量,计算并输出托运的费用。 • 设计步骤如下: • (1) 建立应用程序用户界面与设置对象属性。 图4-9 计算托运费

  16. (2) 编写程序代码。 可以写出命令按钮Command1的单击(Click)事件代码为 Private Sub Command1_Click() Dim w As Single, x As Single w = Val(Text1.Text) If w <= 50 Then x = 0.25 * w Else If w <= 100 Then x = 0.25 * 50 + 0.35 * (w – 50) Else

  17. x = 0.25 * 50 + 0.35 * 50 + 0.45 * (w – 100) End If End If Text2.Text = x End Sub 可以将上例中命令按钮Command1的单击(Click)事件代码改为: Private Sub Command1_Click() Dim w As Single, x As Single w = Val(Text1.Text) x = IIf(w <= 50, 0.25 * w, 0.25 * 50 + IIf(w <= 100, 0.35 * (w – 50), 0.35 * 50 + 0.45 * (w – 100))) Text2.Text = x End Sub

  18. 【例4-9】某百货公司为了促销,采用购物打折扣的优惠办法:每位顾客一次购物【例4-9】某百货公司为了促销,采用购物打折扣的优惠办法:每位顾客一次购物 (1) 在1000元以上者,按九五折优惠; (2) 在2000元以上者,按九折优惠; (3) 在3000元以上者,按八五折优惠; (4) 在5000元以上者,按八折优惠。 设计步骤如下: (1) 建立应用程序用户界面与设置对象属性。 (2) 编写程序代码。

  19. 可以写出命令按钮Command1的单击(Click)事件代码为可以写出命令按钮Command1的单击(Click)事件代码为 Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x < 1000 Then y = x Else If x < 2000 Then y = 0.95 * x Else If x < 3000 Then

  20. y = 0.9 * x Else If x < 5000 Then y = 0.85 * x Else y = 0.08 * x End If End If End If End If Text2.Text = y End Sub

  21. 2. IF语句的嵌套格式ELSEIF 其语法结构为 If〈条件1〉Then [语句列1] ElseIf〈条件2〉Then [语句列2] ... [Else [其他语句列]] End If

  22. 【例4-10】在例4-9中使用带ElseIf的块If语句来计算出优惠价,只需将其中命令按钮Command1的单击(Click)事件代码改为【例4-10】在例4-9中使用带ElseIf的块If语句来计算出优惠价,只需将其中命令按钮Command1的单击(Click)事件代码改为 Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x < 1000 Then y = x ElseIf x < 2000 Then y = 0.95 * x

  23. ElseIf x < 3000 Then y = 0.9 * x ElseIf x < 5000 Then y = 0.85 * x Else y = 0.08 * x End If Text2.Text = y End Sub

  24. 多分支条件选择语句SELECT CASE • SELECT CASE结构与语法 • 语句的语法格式为 • Select Case〈测试条件〉 • [Case〈表达式表1〉 • [〈语句列1〉]] • [Case〈表达式表2〉 • [〈语句列2〉]] • ... • [Case Else • [〈其他语句列〉]] • End Select

  25. 2. SELECT CASE结构的应用 【例4-11】在例4-9中使用Select Case语句来计算优惠价,只需将其中命令按钮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

  26. 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.08 * x End Select Text2.Text = y End Sub

  27. 【例4-12】某航空公司规定在旅游的旺季7~9月份,如果订票数超过20张,票价优惠15%,20张以下,优惠5%;在旅游的淡季1~5月份、10月份、11月份,如果订票数超过20张,票价优惠30%,20张以下,优惠20%;其他情况一律优惠10%。【例4-12】某航空公司规定在旅游的旺季7~9月份,如果订票数超过20张,票价优惠15%,20张以下,优惠5%;在旅游的淡季1~5月份、10月份、11月份,如果订票数超过20张,票价优惠30%,20张以下,优惠20%;其他情况一律优惠10%。 设计程序,根据月份和订票张数决定票价的优惠率。 设计步骤如下: (1) 建立应用程序用户界面与设置对象属性。

  28. (2) 编写程序代码。 根据流程图,可以写出命令按钮Command1的单击(Click)事件代码为: Private Sub Command1_Click() Dim 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

  29. Case 7 To 9 If n < 20 Then r = 5 Else r = 15 Case Else r = 10 End Select Label4.Caption = "所订机票的优惠率为:" & Str(r) & "%" End Sub 为了使用更加方便,再增加如下代码。 窗体的Load事件代码:

  30. Private Sub Form_Load() Text1.Text = Month(Date) ' Text1中的默认值为当前月份 End Sub 文本框Text1的GotFocus事件代码: Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub

  31. 文本框Text1的按健(KeyPress)事件代码: Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then ' 在Text1按回车键,光标跳到Text2 If Text1.Text > 0 And Text1.Text < 13 Then Text2.SetFocus End If End If End Sub 文本框Text2的GotFocus事件代码: Private Sub Text2_GotFocus()

  32. Text2.SelStart = 0 Text2.SelLength = Len(Text2.Text) End Sub 文本框Text2的按健(KeyPress)事件代码: Private Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then ' 在Text2按回车键,光标跳到Command1 If Text2.Text > 0 Then Command1.SetFocus End If End Sub

  33. 使用计时器控件 1. 设计一个电子表 【例4-13】在窗体上设计一个数字时钟,如图4-15所示。 图4-16 建立界面与设置属性 图4-15 数字时钟

  34. 设计步骤如下: (1) 建立应用程序用户界面。 (2) 设置对象属性, (3) 编写程序代码。 编写计时器控件Timer1的Timer事件代码: Private Sub Timer1_Timer() Label1.Caption = Format(Time, Form1.Tag) Label2.Caption = IIf(Hour(Time) > 12, "下午", "上午") End Sub

  35. 编写命令按钮Command1的Click事件代码: Private Sub Command1_Click() If Command1.Caption = "改为12小时" Then Form1.Tag = "hh:mm:ss AM/PM" Command1.Caption = "改为24小时" Label2.Visible = True Else Form1.Tag = "hh:mm:ss" Command1.Caption = "改为12小时" Label2.Visible = False End If End Sub

  36. 2.设计一个计时器 【例4-14】一个简单计时器。如图4-17所示。 图4-18 计时器的设计 图4-17 简单计时器

  37. 设计步骤如下: (1) 建立应用程序用户界面与设置对象属性。 (2) 编写程序代码。 编写Command1(开始)的Click事件代码: Private Sub Command1_Click() If Command1.Caption = "&S 暂停" Then Command1.Caption = "&C 继续" 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

  38. 编写Command2(重置)的Click事件代码: Private Sub Command2_Click() Form1.Tag = Timer Label1.Caption = "00:00:00:0" End Sub 编写Timer1的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

  39. 3.设计一个流动字幕板 【例4-15】为一个应用系统设计流动字幕板,如图4-19所示,标题“欲穷千里目,更上一层楼”在窗体中自右至左地反复移动。 图4-19 电子标题板 图4-20 用户界面的设计

  40. 设计步骤如下: (1) 建立应用程序用户界面与设置对象属性 (2) 编写程序代码。 编写命令按钮Command1的Click事件代码: Private Sub Command1_Click() If Command1.Caption = "&S 暂停" Then Command1.Caption = "&C 继续" Timer1.Enabled = False Else Command1.Caption = "&S 暂停" Timer1.Enabled = True End If End Sub

  41. 编写Timer1的Timer事件代码: Private Sub Timer1_Timer() If Label1.Left + Label1.Width > 0 Then Label1.Move Label1.Left – 20 Else Label1.Left = Form1.ScaleWidth End If End Sub 提供简单选择的控件 1.选项按钮 【例4-16】在例4-13中使用选项按钮组来选择时间的格式

  42. 编写新增控件的事件代码。 编写选项按钮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" Label2.Visible = False End Sub

  43. 例4-17】设银行定期存款年利率为:1年期2.25%,2年期2.43%,3年期2.70%,5年期2.88%(不计复利)。今有本金a元,5年以后使用,共有以下6种存法:例4-17】设银行定期存款年利率为:1年期2.25%,2年期2.43%,3年期2.70%,5年期2.88%(不计复利)。今有本金a元,5年以后使用,共有以下6种存法: l存一次5年期。 l存一次3年期,一次2年期。 l存一次3年期,两次1年期。 l存两次2年期,一次1年期。 l存一次2年期,三次1年期。 l存五次1年期。 分别计算各种存法5年后到期时的本息合计

  44. 编写命令按钮Command1的单击(Click)事件代码:编写命令按钮Command1的单击(Click)事件代码: Private Sub Command1_Click() Dim a As Single, y As Single 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

  45. Case Option2.Value y = (1 + 3 * x3) * (1 + 2 * x2) * a Case Option3.Value y = (1 + 3 * x3) * (1 + x1) ^ 2 * 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

  46. Text2.Text = y Text1.SetFocus End Sub 编写文本框Text1的GotFocus事件代码: Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub

  47. 2. 使用图形选项按钮 【例4-18】用图形选项按钮组控制流动字幕中的字体,如图4-23所示。 设计步骤如下: (1) 建立应用程序用户界面与设置对象属性。 (2) 编写程序代码。 依次编写选项按钮Option1~Option4的Click事件代码: Private Sub Option1_Click()

  48. Text1.FontName = "宋体" End Sub Private Sub Option2_Click() Text1.FontName = "隶书" End Sub Private Sub Option3_Click() Text1.FontName = "黑体" End Sub Private Sub Option4_Click() Text1.FontName = "楷体_GB2312" End Sub

  49. 2 复选框 复选框的状态由其Value属性决定: 0 —— 假 1 —— 真 2 —— 暗 1. 使用单个复选框 【例4-19】在上例中,增加复选框,控制选项按钮组的显示。 增加复选框控件Check1的Click事件代码: Private Sub Check1_Click() Option1.Visible = Check1.Value Option2.Visible = Check1.Value Option3.Visible = Check1.Value Option4.Visible = Check1.Value End Sub

  50. 2. 使用多个复选框 【例4-20】设计一个个人资料输入窗口,使用选项按钮组输入性别与民族,使用复选框输入个人爱好,如图4-25所示。 . 图4-25 使用多个复选框 图4-26 建立用户界面

More Related