Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月."— Presentation transcript:

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

2 第4章 选择结构程序设计 1 1 条件表达式 1 关系运算符与关系表达式 <1> 关系运算符 <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) 先作算术运算: > –1.3 And Not y < b (2) 再作关系运算: True And Not False (3) 作非运算: True And True (4) 最后得: True

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

8 可以写出命令按钮Command1的单击(Click)事件代码为: Private Sub Command1_Click()
图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))
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个不同的数,选出其中最大的数。
设计步骤如下: (1) 建立应用程序用户界面与设置对象属性。 (2) 编写程序代码。

11 可以写出命令按钮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语句:
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 * * (w – 50)

17 x = 0.25 * * * (w – 100) 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 * * (w – 100)))

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

19 可以写出命令按钮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 If x < 3000 Then

20 y = 0.9 * x Else If x < 5000 Then y = 0.85 * x y = 0.08 * x 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)事件代码改为
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〈测试条件〉
[〈语句列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%。 设计程序,根据月份和订票张数决定票价的优惠率。 设计步骤如下: (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)

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 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

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

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

43 例4-17】设银行定期存款年利率为:1年期2. 25%,2年期2. 43%,3年期2. 70%,5年期2
例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)事件代码:
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 = : x2 = x3 = 0.027: x5 = 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)

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 = "隶书" Private Sub Option3_Click() Text1.FontName = "黑体" Private Sub Option4_Click() Text1.FontName = "楷体_GB2312"

49 2 复选框 复选框的状态由其Value属性决定: 0 —— 假 —— 真 —— 暗 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 建立用户界面

51 设计步骤如下: (1) 建立应用程序用户界面。 (2) 设置对象属性。 (3) 编写程序代码。 编写命令按钮Command1的Click事件代码: Private Sub Command1_Click() If Text1.Text = "" Then a = InputBox("您忘了输入姓名!", "注意", "请在此输入姓名") If a = "" Or a = "请在此输入姓名" Then Exit Sub Text1.Text = a End If

52 3. 复选框的图形方式 【例4-21】利用图形复选框来控制文本的字体风格,如图4-27所示。 设计步骤如下: (1) 建立应用程序用户界面。 (2) 设置对象属性。 (3) 编写代码。 复选框控件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

53 p1 = Text1.Text + "," p2 = IIf(Option1, "男", "女") + "," p3 = IIf(Option3, "汉族", "少数民族") p4 = ",喜欢:" If Check1.Value = 1 Then p4 = p4 + Check1.Caption + "、" If Check2.Value = 1 Then p4 = p4 + Check2.Caption + "、" If Check3.Value = 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 = ""

54 复选框控件Check2的Click事件代码:
Private Sub Check2_Click() Text1.FontBold = Check2.Value End Sub 复选框控件Check3的Click事件代码: Private Sub Check3_Click() Text1.FontItalic = Check3.Value 复选框控件Check4的Click事件代码: Private Sub Check4_Click() Text1.FontUnderline = Check4.Value

55 习题四 4.1 写出下列各表达式的值。 (1) 2 * 3 >= 8 (2) "BCD" < "BCE"
4.1 写出下列各表达式的值。 (1) 2 * 3 >= (2) "BCD" < "BCE" (3) "12345" <> "12345" & "ABC" (4) Not 2 * 5 <> 11 (5) 4 = 4 And 5 > (6) 8 <> 5 Or Not 10 > (7) 2^3 > 3 And 5 < 10 (8) 3 > 4 And 7 = 5 4.2 用布尔表达式表示下列命题。 (1) n是m的倍数 (2) n是小于正整数k的偶数 (3) | x | ≥ | y | 或x < y (4) x,y其中有一个小于z (5) x,y都小于z (6) y  [–10,–1],并且y  [1,10] 4.3 根据所给条件,列出布尔表达式。 (1) 闰年的条件是:年号(year)能被4整除,但是不能被100整除;或者能被400整除。 (2) 一元二次方程ax2 + bx + c = 0有实根的条件为:a≠ 0,并且b2 – 4ac ≥ 0。

56 (3) 征兵的条件是:男性(sex)年龄(age)在18~20岁之间,身高(size)在1
(3) 征兵的条件是:男性(sex)年龄(age)在18~20岁之间,身高(size)在1.65m以上;或者女性(sex)年龄(age)在16~18岁之间,身高(size)在1.60m以上。 (4) 分房的条件为:已婚(marrigerat),年龄(age)在26岁以上,工作年限(workingage)在5年以上。 4.4 “x是小于100的非负数”,用VB表达式表示正确的是 (1) 0 ≤ x < (2) 0 <= x < 100 (3) 0 <= x And x < (4) 0 <= x Or x < 100 4.5 选择结构的特点是什么?用流程图描述看交通灯通过十字路口的过程。 4.6 输入3个不同的数,将它们从大到小排序。 4.7 任给3个实数,求其中间数(即其值大小居中者)。 4.8 编写程序,任意输入一个整数,判定该整数的奇偶性。 4.9 文本框的PasswordChar属性可以隐蔽用户通过键盘输入的字符。编写程序,利用文本框检查用户口令,如图4-28所示。

57 4.10 键盘输入a、b、c的值,判断它们能否构成三角形的3个边。如果能构成一个三角形,则计算三角形的面积。
4.11 求一元二次方程的根。 4.12 输入一个数字(0~6),用中英文显示星期几。 4.13 给定年号与月份,判断该年是否闰年,并根据给出的月份来判断是什么季节和该月有多少天?(闰年的条件是:年号能被4整除但不能被100整除,或者能被400整除。) 4.14 若基本工资大于等于600元,增加工资20%;若小于600元大于等于400元,则增加工资15%;若小于400元则增加工资10%。请根据用户输入的基本工资,计算出增加后的工资。 4.15 编制程序,根据用户输入的考试成绩(百分制,若有小数则四舍五入),按表4-11的划分标准,输出相应的等级。

58 分 数 等 级 90~100 优秀 80~89 良好 70~79 中等 60~69 及格 < 60 不及格 4.16 输入圆的半径r,利用选项按钮,选择运算:计算面积、计算周长等。 4.17 设计一个计时器,能够设置倒计时的时间,并进行倒计时,如图4-29所示。


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

Similar presentations


Ads by Google