unt 0.05第五章选择结构程序设计18ElseIf distance 1000 And distance 2000ThenDiscount 0.08ElseIf distance 2000 And distance 3000ThenDiscount 0.1ElseDiscount 0.15End If 计算总运费FreightPriceWeightdistance1 -Discount 输出总运费Label4.Caption FormatFreight 0.00 End Sub第五章选择结构程序设计19If distance 250ThenDiscount 0ElseIf distance 500ThenDiscount 0.02ElseIf distance 1000ThenDiscount 0.05ElseIf distance 2000ThenDiscount 0.08ElseIf distance 3000ThenDiscount 0.1ElseDiscount 0.15End If本例条件语句可以简化为在书写块结构条件语句时可以将If语句、ElseIf子句、Else子句和End If语句左对齐而各语句组向右缩进若干空格以使程序结构更加清楚便于阅读和查错。
第五章选择结构
程序设计201必须以If语句开头End If语句结束。
2ElseIf不能写成Else If即中间不能有空格。
3严格按格式要求书写不可随意换行或将两行合并成一行。
例如对于条件结构If x 0 Theny 1Elsey 2End If 以下两种写法都是错误的写法一Ifx0Theny1Elsey2EndIf写法二Ifx1Theny1Elsey2EndIf4. 注意第五章选择结构程序设计215.3 1. 格式Select Case 测试表达式Case 表达式表1语句组1Case 表达式表2语句组2…Case Else语句组nEnd Select2. 功能根据测试表达式的值按顺序匹配Case后的表达式如果匹配成功则执行该Case下的语句块然后转到End Select语句之后继续执行。
第五章选择结构程序设计22语句组n1T……TTF匹配表达式表1语句组1语句组2F语句组nF匹配表达式表2匹配表达式表n多分支选择语句的功能流程图:第五章选择结构程序设计233. 说明1测试表达式: 数值或字符表达式2Case 后的“表达式表”可以为如下形式: ①表达式1表达式2...如: Case 1 3 5②表达式1 TO 表达式2如: Case 10 TO 30Case A TO Z③Is 关系运算符表达式如: Case Is 10Case Is 0 与Case 0 相同且三种形式可以混用如: Case Is -5 0 5 To 100第五章选择结构程序设计24【例5-3】用多分支选择语句实现输入年份和月份求该月的天数。
分析当月份为1、3、5、7、8、10、12时天数为31天当月份为4、6、9、11时天数为30天当月份为2时如果是闰年则天数为29天否则天数为28天。
某年为闰年的条件是年份能被4整除但不能被100整除或年份能被400整除。
第五章选择结构程序设计25界面设计Text1Text2Text3第五章选择结构程序设计26
代码设计Private Sub Command1_ClickDim Y As Integer M As IntegerY ValText1.Text 输入年份M ValText2.Text 输入月份Select CaseMCase 1 3 5 7 8 10 12Text3.Text 31Case 4 6 9 11Text3.Text 30第五章选择结构程序设计27Case 2 如果月份为2If Y Mod 4 0 And Y Mod 100 0_Or Y Mod 400 0 ThenText3.Text 29ElseText3.Text 28End IfEnd SelectEnd Sub第五章选择结构程序设计281“测试表达式”的类型应与各Case后的表达式类型一致。
2不能在Case后的表达式中使用“测试表达式”中的变量。
例如Select Case XCase X 0 在这里使用了X是错误的Y AbsX…End Select4. 注意第五章选择结构程序设计293“测试表达式”只能是一个变量或一个表达式而不能是变量表或表达式表。
例如检查变量X1、X2、X3之和是否小于零不能写成Select Case X1X2X3 错误写法Case X1X2X3 0…End Select而应该写成Select Case X1X2X3 正确写法Case Is 0…End Select第五章选择结构程序设计304不要在Case后使用布尔运算符表示条件例如要表示条件0 0X1 -B SqrDelta / 2 AX2 -B -SqrDelta / 2 APrint X1 FormatX1 0.000CurrentX 600: CurrentY 1300Print X2 FormatX2 0.000Case Is 0A1 -B / 2 AA2 SqrAbsDelta / 2 A 第五章选择结构程序设计42Print X1 FormatA1 0.000 _FormatA2 0.000 iCurrentX 600CurrentY 1300Print X2 FormatA1 0.000 - _FormatA2 0.000 iEnd SelectEnd Sub第五章选择结构程序设计43【例5-5】设计一个口令检测程序界面如下图当用户输入的口令正确时显示“恭喜您已成功进入本系统”否则显示“口令错请重新输入”。
如果连续两次输入了错误口令在第三次输入完口令后则显示一个消息框提示“对不起您不能使用本系统”然后结束程序的执行。
Text1Label2第五章选择结构程序设计44分析界面中用一个文本框Text1接受口令Text1的属性设置如下PasswordCharMaxLength6要求运行时在用户输入完口令并按回车键时对口令进行判断因此本例使用了文本框Text1的KeyUp事件过程当焦点在文本框时松开键盘任一键后产生KeyUp事件同时返回按键
代码KeyCode。
回车键的KeyCode为13所以程序首先判断如果用户在Text1中按下了回车键表示口令输入完再判断口令是否正确。
Text1的KeyUp事件过程如下第五章选择结构程序设计45Private Sub Text1_KeyUpKeyCodeAs Integer _ Shift As IntegerStatic I As Integer 保存输入错误口令的次数If KeyCode 13 Then 如果按下的键为回车键IfUCaseText1.Text HELLO ThenLabel2.Caption 恭喜您已成功进入本
系统 ElseIf I 0 Or I 1 ThenI I 1Label2.Caption 口令错请重新输入Text1.SelStart 0Text1.SelLength LenText1.TextElse MsgBox 对不起您不能使用本系统: End End IfEnd IfEnd Sub第五章选择结构程序设计46【例5-6】使用单选按钮和复选框对标签文字的颜色和效果进行设置。
通过单选按钮可以将标签的文字设置为红、绿、蓝三种颜色通过复选框可以设置标签上的文字是否具有粗体、斜体和下划线效果。
第五章选择结构程序设计47BorderStyle1 –Fixed SingleAlignment2 –Center字体宋体、常规、一号文字颜色黑色Label1Command1Command2Option1Option3Check1Check3第五章选择结构程序设计48Private Sub Command1_Click 确定If Option1.Value ThenLabel1.ForeColor vbRedElseIf Option2.Value ThenLabel1.ForeColor vbGreenElseIf Option3.Value ThenLabel1.ForeColor vbBlueEnd IfIf Check1.Value 1 Then Label1.FontBold True _Else Label1.FontBold FalseIf Check2.Value 1 Then Label1.FontItalic True _Else Label1.FontItalic False If Check3.Value 1 Then Label1.FontUnderline _ True Else Label1.FontUnderline FalseEnd Sub第五章选择结构程序设计49Private Sub Command2_Click 取消 取消单选按钮的选中状态Option1.Value FalseOption2.Value FalseOption3.Value False 取消复选框的选中状态Check1.Value 0 Check2.Value 0Check3.Value 0 将标签设置为初始状态Label1.ForeColor vbBlackLabel1.FontBold FalseLabel1.FontItalic FalseLabel1.FontUnderline FalseEnd Sub第五章选择结构程序设计50【例5-7】编写应用程序模拟交通管理信号灯。
Timer1Image1Image2Image3