一、实验目的
1.熟悉常用的输入和输出的方法。
2.掌握 InputBox 函数和 MsgBox 函数的用法。
3.掌握编写顺序结构程序的一般步骤。
二、实验内容
1.设计一个计算圆面积的程序。
要求:利用 InputBox 函数输入圆的半径,利用 MsgBox 显示最后的计算结果。
2.设计一个简单的水果商店结算程序。
要求:利用文本框输入香蕉、梨子、苹果三类水果的单价和重量,自动计算最后的总金
额,顾客付款后自动计算应得的找零。程序运行界面如图 5-1 所示。
图 5-1 程序运行界面3.编写程序将一个 4 位整数反序输出。
要求:采用 InputBox 函数输入这个 4 位整数,反序后的结果显示在窗体上。
三、实验指导
1.设计一个计算圆面积的程序。
【思路】
此题要求利用 InputBox 函数输入圆的半径,在单击窗体的事件中定义一个单精度型变量
r,将从 InputBox 对话框中输入的数据赋给 r,但是要注意的是 r 为单精度型变量,而从对话
框中返回的数据为字符型变量,因此需要用 Val 函数将字符型数据转换为数值类型。
获得 r 的值后就可以利用赋值计算圆面积 s 了,该结果要求用 MsgBox 来输出,则常量字
符串与变量 s 之间要用“&”符号进行连接,并需要利用 Str 函数将数值型变量 s 转换为字符
类型。
【实验步骤】
(1)界面设计。该例由于采用各函数完成输入和输出操作,因此新建窗体后无须界面设
计,直接进行代码设计即可。
(2)代码设计。窗体 Form1 的单击事件代码如下:
Private Sub Form_Click() Dim r As Single, s As Single
r = Val(InputBox("请输入半径:", "输入")) s = 3.1415 * r * r
MsgBox "圆面积为" & Str(s), vbInformation + vbOKOnly, "计算结果" End Sub
(3)运行程序。运行程序时单击窗体,在弹出的对话框中输入 3,如图 5-2 所示,则窗
体上显示的结果如图 5-3 所示。
图 5-2 输入半径 图 5-3 显示结果【注意】
(1)MsgBox 函数的用法,参考配套教材上涉及到的 MsgBox 函数运用实例。
(2)本例的实现可以采用多种方法,既可以利用文本框、标签等控件,也可以采用各种
输入输出函数或者 Print 方法等,在做完该实验后,可尝试采用其他方法来实现。
2.设计一个简单的水果商店结算程序。
【思路】
本例中需要设计若干文本框用于输入三类水果的单价以及购买的重量,程序中定义若干
变量,分别从这些文本框中获得对应的值,通过计算得到总金额,最后将总金额输出到对应的
标签中。找零的过程类似,结果输出到文本框内。
【实验步骤】
(1)界面设计。双击“工具箱”上的控件按钮,分别向窗体添加 9 个标签控件、8 个文
本框和 3 个命令按钮,注意调整各个控件的大小和位置。界面设计如图 5-4 所示。
(2)属性设置。在窗体中选择不同的控件,在属性窗口中设置它们的属性。属性设置见
表 5-1。
图 5-4 界面设计 图 5-5 已设置属性的设计界面 表 5-1 属性列表 对象 属性 属性值 作用 Name Label1 Label Caption 单价/斤 Name Label2 Label Caption 重量(斤) Name Label3 Label Caption 香蕉 Name Label4 Label Caption 梨子 Name Label5 Label Caption 苹果 Name Label6 Label Caption 合计: Name Label7 显示总计 Label Caption 空白 Name Label8 Label Caption 实付: Name Label9 Label Caption 找零: Name Text1 输入香蕉单价 TextBox Text 空白 Name Text2 输入梨子单价 TextBox Text 空白续表 对象 属性 属性值 作用 Name Text3 输入苹果单价 TextBox Text 空白 Name Text4 输入香蕉重量 TextBox Text 空白 Name Text5 输入梨子重量 TextBox Text 空白 Name Text6 输入苹果重量 TextBox Text 空白 Name Text7 输入实付金额 TextBox Text 空白 Name Text8 显示找零金额 TextBox Text 空白 Name Command1 CommandButton Caption 计算 计算总金额 Name Command2 CommandButton Caption 清空 清空文本框 Name Command3 CommandButton Caption 找零 计算找零
各对象属性设置完成后,设计状态下的窗体如图 5-5 所示。
(3)代码设计。
Command1 按钮实现计算功能,其单击事件代码如下:
Private Sub Command1_Click()
Dim bp As Single, bw As Single 'bp 代表香蕉单价,bw 代表香蕉重量 Dim pp As Single, pw As Single 'pp 代表梨子单价,pw 代表梨子重量 Dim ap As Single, aw As Single 'ap 代表苹果单价,aw 代表苹果重量 Dim suma As Single
bp = Val(Text1) bw = Val(Text4) pp = Val(Text2) pw = Val(Text5) ap = Val(Text3) aw = Val(Text6) '各变量从文本框中获得值 suma = bp * bw + pp * pw + ap * aw '计算总金额 Label7.Caption = suma 'Label7 中显示总金额 End Sub
Text1 = "" Text2 = "" Text3 = "" Text4 = "" Text5 = "" Text6 = "" Label7.Caption = "" Text7 = "" Text8 = "" End Sub
Command3 按钮实现找零功能,其单击事件代码如下:
Private Sub Command3_Click()
Dim sum As Single, pay As Single, ret As Single sum = Val(Label7.Caption) '获得总金额
pay = Val(Text7) '获得实付 ret = pay - sum '计算找零 Text8 = ret '输出结果 End Sub
(4)运行程序。运行程序时对应输入顾客购买的水果单价及重量,单击“计算”按钮,
就会出现合计的金额;当顾客付款后,在“实付”对应的文本框内输入金额,单击“找零”按
钮,对应文本框中则出现找零金额。单击“清空”按钮,用于清空显示数据的控件,方便下一
次计算。某次结算的运行结果见图 5-1。
3.编写程序将一个 4 位整数反序输出。
【思路】
该程序的算法一般有如下两种:
(1)利用 Mod 函数和“\”运算依次分离出该 4 位整数的千位、百位、十位和个位数字
给 4 个变量,再重新将这 4 个变量组合成反序的 4 位数即可。
(2)将这个 4 位数转换为字符串来处理。利用 Left、Right 和 Mid 函数取它的各位字符,
最后将取出的字符用字符连接符“&”重新组合成反序字符串。
【实验步骤】
(1)界面设计。在窗体上添加 1 个标签和 1 个文本框,Text1 用于输入一个 4 位整数,
反序后的数值利用 Print 方法直接显示在窗体上。注意标签和文本框的位置要稍微偏下,留出
窗体显示的位置。另外设计两个按钮,分别采用算法 1 和算法 2 来解决反序的问题。
(2)属性设置。在窗体中选择不同的控件,在属性窗口中设置它们的属性。属性设置见
表 5-2。
表 5-2 属性列表 对象 属性 属性值 Name Label1 Label Caption 输入一个四位数: Name Text1 TextBox Text 空白续表 对象 属性 属性值 Name Command1 CommandButton Caption 反序 1 Name Command2 CommandButton Caption 反序 2
各对象属性设置完成后,设计状态下的窗体如图 5-6 所示。
图 5-6 已设置属性的设计界面(3)代码设计。
Command1 的单击事件代码如下:
Private Sub Command1_Click() Dim m As Integer, n As Integer
Dim a As Integer, b As Integer, c As Integer, d As Integer m = Val(Text1) a = m \ 1000 '取千位数 b = (m - a * 1000) \ 100 '取百位数 c = (m - a * 1000 - b * 100) \ 10 '取十位数 d = m Mod 10 '取个位数 Print d * 1000 + c * 100 + b * 10 + a '反序输出 End Sub
【注意】
此方法只能解决各位数不为 0 的 4 位数反序,若有某位数为 0,则只能采用 Command2
对应的程序。
Command2 的单击事件代码如下:
Private Sub Command2_Click() Dim n As String
Dim a As String, b As String, c As String, d As String n = Trim(Text1)
a = Left(n, 1) '取千位数 b = Mid(n, 2, 1) '取百位数 c = Mid(n, 3, 1) '取十位数 d = Right(n, 1) '取个位数
Print d & c & b & a '反序输出 End Sub