实验 3 顺序和分支结构程序设计 实验目的 1. 掌握顺序结构的程序设计思想 2. 掌握命令按钮 (CommandButton) 标签 (Label) 文本框 (TextBox) 编辑框 (EditBox) 等常用控件的使用方法 3. 了解并掌握对话框函数 MessageBox() 的含义与用法 4. 了解和熟悉线条控件 形状控件的画法以及主要属性的用法 实验内容 1. 顺序结构 实训 3-1 编写一应用程序, 其功能是用户在屏幕上输入一华氏温度值, 然后通过公式 5 c (f 32) 转换成摄氏温度并输出, 程序运行的界面如图 3-1 所示 9 图 3-1 实训 3-1 的运行界面 要建立实训 3-1 的运行界面, 可以按照以下的方法和步骤 : 1 单击 文件 菜单中的 新建工程 命令, 新建含有一个窗体的应用程序 2 将鼠标移动到窗体任意空白处 单击右键, 在弹出的快捷菜单中单击 属性 命令, 打开 属性 对话框 在对话框中找到属性 Caption, 在 属性设置框 处输入窗体的标题名 温度的转换 3 在窗体中添加 3 个标签控件 Label1~3,2 个文本框控件 Text1~2 2 个命令按钮控件 Command1~2 4 将文本框 Text2 的 BackColor 属性设置为 &H00E0E0E0&,Locked 属性设置为 True, 其他控件的属性采用自定义即可 5 添加有关事件代码 转换 命令按钮 Command1 的 Click 事件代码如下 : Private Sub Command1_Click() Dim f As Single, c As Single f = Val(Text1.Text) c = 5 * (f - 32) / 9 Text2.Text = Str(Round(c, 2)) - 23 -
Visual Basic 程序设计上机实践教程 结束 命令按钮 Command2 的 Click 事件代码如下 : Private Sub Command2_Click() End 6 按下 F5 功能键启动应用程序 实训 3-2 画面如图 3-3 所示 鸡兔同笼问题 试根据如图 3-2 所示的画面设计求解鸡兔同笼问题 运行后的 图 3-2 鸡兔同笼设计 图 3-3 运行后的画面 分析 : 设 X 为鸡的个数,Y 为兔的个数,M 为鸡和兔的总头数,N 为鸡和兔的总脚数, 则鸡和兔的个数的计算公式是 : 4M X N N 2M, Y 2 2 设计步骤和方法如下 : 1 新建只有一个窗体的应用程序 2 在窗体中添加 4 个标签控件 Label1~4,2 个文本框控件 Text1~2 3 个命令按钮控件 Command1~3 3 各控件的主要属性设置如表 3-1 所示 表 3-1 实训 3-2 窗体及各控件属性值设置 对象名 属性名 属性值 说明 Label1 Caption 鸡有两只脚, 兔有四只脚, 鸡兔同笼 第一个标签的内容 Label2 Caption 设笼中鸡和兔的总头数为 : 第二个标签的内容 Label3 Caption 总脚数为 : 第二个标签的内容 Label4 Caption 问笼中鸡有多少只? 兔有多少只? Label1~4 autosize True 大小自动匹配 Text1~2 Text Command1 Caption 计算 (&C) 第一个命令按钮的标题内容 Command2 Caption 重置 (&S) 第二个命令按钮的标题内容 Command3 Caption 退出 (&Q) 第三个命令按钮的标题内容 4 添加有关事件代码 计算 命令按钮 Command1 的 Click 事件代码如下 : - 24 -
Private Sub Command1_Click() Dim x As Integer, y As Integer 'x 和 y 分别代表鸡 兔的只数 Dim m%, n% m = Val(Text1.Text): n = Val(Text2.Text) x = (4 * m - n) / 2: y = (n - 2 * m) / 2 Label4.Caption = " 笼中有鸡 " & Str(x) & " 只," & " 兔有 " & Str(y) & " 只 " 重置 命令按钮 Command2 的 Click 事件代码如下 : Private Sub Command2_Click() Text1.Text = "" Text2.Text = "" Label4.Caption = " 问笼中鸡有多少只? 兔有多少只?" Text1.SetFocus 退出 命令按钮 Command3 的 Click 事件代码如下 : Private Sub Command3_Click() End 5 按下 F5 功能键, 启动该程序, 观察运行效果 2. 分支结构 实训 3-3 设计一个如图 3-4(a) 所示的用户登录界面, 其运行效果是当未输入用户名时, 将弹出一个对话框显示 必须输入用户名!, 如图 9-5(b) 所示 ; 输入的口令为 8 位数字 ( 假 定为 12345678), 实际口令不显示数字而是显示 8 个星号 *, 如图 9-5(c) 所示 按下回车 键 (Enter) 后, 如果操作正确则弹出 用户信息验证通过, 登录成功! 界面, 如图 9-5(d) 所示, 并关闭窗体的运行 (a) (b) (c) (d) 图 3-4 实训 3-3 程序运行示意图设计步骤如下 : 1 创建一个含有一个窗体的工程, 然后在窗体上添加 2 个标签控件 Label1~2;2 个文本框控件 Text1~2 2 设置窗体标题为 应用 PasswordChar 属性 ;2 个标签 Label1 和 Label2 的标题分别为 用户名 : 和 口令 : 3 设置文本框 Text2 的 PasswordChar 属性值为 *, 设置 MaxLength 属性值为 8 4 分别为 2 个文本框 Text1 和 Text2 的有关事件编写代码 Text1 的 LostFocus 事件编写代码为 : - 25 -
Visual Basic 程序设计上机实践教程 Private Sub Text1_LostFocus() If Text1.Text = "" Then MsgBox " 必须输入用户名!", 0 + 48, " 验证用户名 " Text1.SetFocus Text2 的 LostFocus 事件编写代码为 : Private Sub Text2_LostFocus() If Text2.Text <> "12345678" Then MsgBox " 请输入正确的口令!", 0 + 16, " 口令验证 " Text2.SetFocus Text2 的 KeyPress 事件编写代码为 : Private Sub Text2_KeyPress(KeyAscii As Integer) If Text2.Text = "12345678" Then MsgBox " 用户信息验证通过, 登录成功!", 0 + 64, " 登录成功 " Unload Me 5 保存并运行该窗体 3. 分支结构 If/ 的嵌套 实训 3-4 设计一个如图 3-5 所示的窗体, 窗体功能可以根据输入的学生成绩, 判断其成 绩等级 :90~100 分为优秀,80~89 分为良好,70~79 分为中等,60~69 分为及格,60 分以下为 不及格 图 3-5 实训 3-4 程序运行示意图, 左为设计界面 分析 : 判断学生成绩的等级有 5 个条件, 属于多重判断, 因此需要分支结构 If/ 的嵌套 设计步骤如下 : 1 新建一个工程, 然后在窗体中添加 3 个标签控件 1 个文本框控件 标签 Label3 的 Caption 属性为空, 其他各控件属性自定义即可 2 编写文本框 Text1 的相关事件代码 文本框 Text1 的 Change 事件代码如下 : Private Sub Text1_Change() - 26 -
Dim cj As Single cj = Val(Text1.Text) If cj < 0 Or cj > 100 Then Text1.Text = "" Text1.SetFocus ' 用于判断成绩值是否在 0~100 之间 文本框 Text1 的 KeyPress 事件代码如下 : Private Sub Text1_KeyPress(KeyAscii As Integer) Dim cj As Single cj = Val(Text1.Text) If KeyAscii = 13 Then ' 判断是否按下回车键 If cj >= 90 Then Label3.Caption = " 成绩优秀 " If cj >= 80 Then Label3.Caption = " 成绩良好 " If cj >= 70 Then Label3.Caption = " 成绩中等 " If cj >= 60 Then Label3.Caption = " 成绩及格 " Label3.Caption = " 成绩不及格 " 4. 多分支结构 Select Case/EndSelect 的使用 实训 3-5 的 KeyPress 事件代码 代码如下 : 在实训 3-4 的基础上, 使用多分支结构 Select Case/EndSelect 修改文本框 Text1 Private Sub Text1_KeyPress(KeyAscii As Integer) Dim cj As Single cj = Val(Text1.Text) If KeyAscii = 13 Then Select Case cj Case Is >= 90 Label3.Caption = " 成绩优秀 " Case Is >= 80 Label3.Caption = " 成绩良好 " - 27 -
Visual Basic 程序设计上机实践教程 实训 3-6 End Select Case Is >= 70 Label3.Caption = " 成绩中等 " Case Is >= 60 Label3.Caption = " 成绩及格 " Case Label3.Caption = " 成绩不及格 " 如图 3-6 所示, 在已知字符串中查找指定字符串第一次出现的位置 图 3-6 实训 3-6 程序运行示意图 分析 : 利用函数 Mid(x, i, Len(s)) 来判断已知字符串中是否有待查找的字符串, 其中 :x i 和 s 分别表示已知字符串 查询的位置和待查找字符串 设计步骤如下 : 1 新建一个工程, 然后在窗体中添加 3 个标签控件 1 个文本框控件 标签 Label3 的 Caption 属性为空, 其他各控件属性自定义即可 2 编写相关事件代码 查找结果 命令按钮 Command1 的 Click 事件代码如下 : Private Sub Command1_Click() s = Text2.Text x = Text1.Text n = Len(x) i = 1 line1: If Mid(x, i, Len(s)) = s Then Label3.Caption = " 在第 " + Str(i) + " 位找到了 " + s i = i + 1 If i <= n Then GoTo line1 Label3.Caption = " 没有找到 " + s - 28 -
课后练习 1. 我国现有人口 14 亿, 按人口年增长 0.6% 计算, 多少年后我国人口超过 26 亿? 2. 在键盘上输入一个任意实数, 判断输出是正数 负数或零 3. 输入 a b c 三个数, 按从大到小的次序显示, 如图 3-7 所示 4. 设计一个程序, 在执行时由用户从键盘上键入两个操作数和运算符, 然后根据输入的运算符来改变标签框的内容, 单击 = 命令按钮, 将根据运算符进行相应的运算并将运算结果显示在 运算结果 标签框中 其程序运动界面如图 3-8 所示 图 3-7 第 3 题图图 3-8 第 4 题图 5. 在购买某物品时, 若所花的钱 x 在下述范围内, 则所付钱 y 按对应折扣支付, 支付公式如图 3-9 所示 6. 输入平面直角坐标系中任一点的坐标 (x,y), 判断该点坐标属于哪一个象限, 如图 3-10 所示 x ( x 1000) 0.9 x (1000 x 2000) y 0.8 x (2000 x 3000) 0.7 x ( x 3000) 图 3-9 购物折扣支付公式图 3-10 第 6 题图 - 29 -