导图社区 Visual Basic程序设计单元4顺序结构程序设计
是指避险人认识到某项合法权利正在遭受危险,认识到自己在避免危险;避险人实施避险行为是出于正当意图、动机,也即为了保护合法权利。
编辑于2022-03-20 16:59:09Visual Basic 程序设计
单元4 顺序结构程序设计
单元说明
本单元学习顺序结构程序设计的数据输出、输入和赋值方法,以及顺序结构中常用的几个命令
主要内容包括:
数据输出。用Print方法实现数据输出, 用Label控件实现数据输出, 用MsgBox消息框实现数据输出
程序设计中给变量赋值的方法
数据输入。利用TextBox控件实现数据输入, 用InputBox输入框实现数据输入
几个常用的简单语句。卸载对象语句Unload, 注释语句Rem等
学习目标
会使用Print方法将数据输出到窗体上, 并能实现简单的对齐
能熟练使用标签控件实现数据输出
会使用常用对象的位置属性、字体属性及其他常用属性
会熟练使用赋值语句为变量赋值
会熟练使用卸载语句Unload、注释语句Rem等基本语句
4.1 数据输出
4.1.1 直接输出到窗体
1. 使用Print方法直接输出到窗体
语法格式为[〈对象名〉.] Print [表达式表] [{, | ;}]
说明
如果使用Prnt方法将数据输出到窗体, 应先使用Show(显示) 方法, 否则输出数据不可见
格式中的<对象名>可以是For(窗体) 、Piture Box(图片框) 或Printer(打印机) 。如果省略,则在当前窗体上直接输出
[表达式表]是一个或多个表达式,可以是数值表达式或字符串。对于数值表达式,将输出表达式的值;对于字符串,则照原样输出。如果省略[表达式表],则输出一个空行
逗号分隔符,各输出项按标准输出(分区输出)格式显示,此时,以14个字符宽度为单位将输出行分为若干区段,逗号后面的表达式在下一个区段输出。
分号分隔符,按紧凑格式输出,即各输出项之间无间隔地连续输出
如果省略语句行末尾的分隔符, 则Print方法将自动换行
如果在语句行的末星使用分号分隔符, 则下一个Print输出的内容将紧跟在当前Print所输出的信息后面
如果在语句行的末尾使用逗号分隔符, 则下一个Print输出的内容将在当前Print所输出信息的下一个分区显示
2. 与Print方法有关的函数
为了使数据按指定的格式输出,VB提供了Tab、Spc等函数, 可以与Print方法配合使用
Tab函数
其格式为 Tab(n)
n为数值表达式, 其值为一个整数。Tab函数把显示或打印位置移到由参数n指定的列数,从此列开始输出数据。要输出的内容放在Tab函数后面, 并用分号隔开
通常最左边的列号为1。如果当前的显示位置已经超过n,则自动下移一行。当n大于行的宽度时, 显示位置为n Mod行宽
当在一个Prt方法中有多个Tab函数时, 每个Tab函数对应一个输出项, 各输出项之间用分号隔开
【实例4.2】
Spc函数
在Print方法中, 还可以使用Spc函数对输出进行定位。Spc函数与Tab函数的作用类似,可以互相代替
Spc函数的格式为 Spc(n)
注意:Tab函数从对象的左端开始计数, 而Spc函数只表示两个输出项之间的间隔
3. 使用位置属性和字体属性
要精确地把文本输出到窗体、图片框或打印页上, 可以用位置属性Current X和Current Y。这两个属性分别表示当前输出位置的横坐标与纵坐标
如果要控制所显示或打印文本的大小和外观,可以用VB中的字体属性
属性 名称 属性 名称 FontName 字体名 FontSize 字体大小 FontBold 字体样式粗体 FontStrikthrn 加删除线 FontItalic 字体样式斜体 FontUnderline 加下画线
另外, 还可以在Print方法中用Format函数格式化输出格式
【实例4.3】
把字符串“轻轻松松学VB”按20号字体大小输出到窗体上的(2000,1500)坐标位
4. 清除方法Cls
Cls方法可以清除Form或pictureBox中由Print方法和图形方法在运行时所生成的文本或图形, 清除后的区域以背景色填充
Cls方法的语法格式为 [对象名.] Cls
说明
[对象名] 可以是Form(窗体) 或PictureBox(图片框) , 如果省略[对象名] , 则清除窗体上由Print方法和图形方法在运行时所生成的文本或图形
设计时使用picture属性设置的背景位图和放置的控件不受Cls影响
【实例4.4】
在实例4.3的基础上,增加一个命令按钮,当单击该按钮时,可以清除窗体中的文字内容
5.使用Label控件实现数据输出
Label(标签) 控件主要用来显示(输出) 文本信息, 不能作为输入信息的界面。也就是说Label控件的内容只能用Caption属性来设置或修改, 不能直接编辑。它是VB中最常用的输出文本信息的工具, 完全可以取代Print方法
Label控件的常用属性
(1) Caption属性
用来在标签中显示文本。在缺省情况下,Caption(标题)是Label控件中唯一的可见部分
(2) BorderStyle属性
用来设置标签的边框。该属性可以取两个值,即0和1。默认情况下,该属性值为0,标签无边框。如果把BorderStyle(边框样式)属性设置成1,那么Label就有了一个边框
(3) 其他外观属性
可以通过设置Label控件的BackColor、ForeColor和Font等属性来改变Label的外观
例题
为了使标签的内容居中显示,应把AlignMent属性设置为( )。 A)0 B)1 C)2 D)3
C
6. 赋值语句
[Let]〈名称〉=〈表达式〉 实现两变量的交换
Private Sub Command1_Click() t = Label3.Caption Label3.Caption = Label4.Caption Label4.Caption = t End Sub
4.2 常用基本语句
4.2.2 卸载对象语句Unload
Unload〈 对象名〉
Private Sub Command2_Click() Unload Me ' Me表示按钮所在的窗体对象 End Sub
4.2.3 注释语句Rem
:Rem 〈注释内容〉或 ' 〈注释内容〉
例如: s = pi * r ^ 2 ' 计算圆的面积 v = 4 / 3 * pi * r ^ 3 : Rem 计算球的体积
单元四 巩固与提高答案
一、选择题
1. 要将名为MyForm的窗体显示出来,正确的使用方法是 A)MyForm.Show B)Show.MyForm C)MyForm Load D)MyForm Show
【答】A
2. 如果要将窗体中的某个命令按钮设置成无效状态,应设置命令按钮的( )属性。 A)Value B)Visible C)Enabled D)Default
【答】C
3. 输入代码时,VB可以自动检测( )错误。 A)语法错误 B)编译错误 C)运行错误 D)逻辑错误
【答】A
4. 在VB中,要将一个窗体加载到内存进行预处理但不显示,应使用的语句是( ) A)Load B)Show C)Hide D)Unload
【答】A
5. 以下能在窗体Form1的标题栏中显示"VisualBasic窗体"的语句是 A)Form1.Name="VisualBasic窗体" B)Form1.Title="VisualBasic窗体" C)Form1.Caption="VisualBasic窗体" D)Form1.Text="VisualBasic窗体"
【答】C
6. 对下列程序段,说法正确的是( ) Text1.Top=2000 : Text1.Left=800 A)Text对象的左边界距窗体的左边界是800twip,上边界距窗体的上边界为2000twip B)Text1的左边界距屏幕的左边界为800twip,上边界距屏幕的上边界为2000twip C)Text1对象的宽度为2000twip,高度为800twip D)Text1对象的高度为800点,宽度为2000点
【答】A
7. 单击窗体上的关闭按钮时,触发的事件是 A)Form_Initialize() B)Form_Load() C)Form_Unload() D)Form_Click()
【答】C
8. 用于将屏幕上的对象分组的控件是( ) A)列表框 B)组合框 C)标签 D)框架
【答】D
9. 能够获得一个文本框中被选取文本的内容的属性是 A)Text B)Length C)Seltext D)SelStart
【答】C
10. 用InputBox函数设计的对话框,其功能是( ) A)只能接收用户输入的数据,但不会返回任何信息 B)能接收用户输入的数据,并能返回用户输入的信息 C)既能用于接收用户输入的信息,又能用于输出信息 D)专门用于输出信息
【答】B
二、填空题
1. 下列语句的输出结果为____。 Print Format$(5689.36,″000,000.000″)
【答】005,689.360。
2. 为了使一个窗体从屏幕消失但仍在内存中,所使用的方法或语句为____。
【答】Hide方法
3. 当对象得到焦点时,会触发____事件,当对象失去焦点时将触发____事件。
【答】GotFocus;LostFocus。
4. 新建一个工程,内有两个窗体,窗体Form1上有一个命令按钮Command1,单击该按钮,Form1窗体消失,显示Form2窗体,试补充程序。 Private Sub Command1_Click() ____ Form2.____ End Sub
【答】Me.Hide或者Forml.Hide或者Unload Me;Show。
5. 在文本框中要使键入的所有字符显示为*号,应设置____属性为"*"。
【答】PasswordChar。
三、编程题
1. 设计工程,已知圆的半径r,求圆面积S。
图4-1 建立用户界面
图4-2 设置各控件的属性
图4-3 程序运行结果
【解答】 设圆半径为r,圆面积为S。根据数学知识,已知圆半径r,求圆面积S的公式为:。 设计步骤如下。 (1)建立应用程序用户界面,如图4-1所示。 (2)设置对象属性: Label1的Caption属性为“已知圆半径r=”; Text1的Text属性为空; Command1的Caption属性为“圆面积为:”; Label2的Caption属性为空; Label2的BorderStyle属性为1-Fixed Single。 各控件的属性设置如图4-2所示。 (3)编写程序代码。 写出“圆面积为:”命令按钮Command1的Click事件代码为: Private Sub Command1_Click( ) Const pi = 3.14 Dim r As Single, S As Single r = Val(Text1.Text) S = pi * r ^ 2 Label2.Caption = S End Sub 运行程序时,在文本框输入圆半径的值,单击“圆面积为:”按钮后,输出结果如图4-3所示。
2. 已知平面坐标系中两点的坐标,求两点间的距离。
建立用户界面如图4-5所示
程序运行结果如图4-6所示
【解答】 由数学知识可知,已知两点坐标(xA, yA)、(xB, yB),求两点间距离的计算公式为 建立用户界面如图4-5所示。在该界面中用TextBox控件输入数据,用Label控件输出数据。为了形象地表示两点之间的距离,可用Picture控件插入一幅图,该图用画图软件绘制。 命令按钮Command1的Click事件代码为: Private Sub Command1_Click( ) Dim xa As Single, xb As Single Dim ya As Single, yb As Single Dim s As Single xa = Val(Text1.Text) ya = Val(Text2.Text) xb = Val(Text3.Text) yb = Val(Text4.Text) s = Sqr((xb - xa) ^ 2 + (yb - ya) ^ 2) Label6.Caption = s End Sub 程序运行结果如图4-6所示。
3. 在文本框中输入三种商品的单价、购买数量,计算并输出所用的总金额。
图4-7 计算商品总金额
【解答】 假设第一种商品的单价和购买数量分别是a1和a2,第二种商品的单价和购买数量分别是b1和b2,第三种商品的单价和购买数量分别是c1和c2,所用总金额为x。通过TextBox控件输入这三种商品的单价、购买数量,然后利用公式x = a1*a2+b1*b2+c1*c2进行计算,最后输出x的值。
设计步骤如下。 (1)建立应用程序用户界面,并设置对象属性,如图4-7所示
(2)编写程序代码。 写出Command1_Click( )的事件代码为: Private Sub Command1_Click( ) Dim a1 As Single, b1 As Single, c1 As Single Dim a2 As Integer, b2 As Integer, c2 As Integer Dim x As Single a1 = Val(Text1.Text) a2 = Val(Text2.Text) b1 = Val(Text3.Text) b2 = Val(Text4.Text) c1 = Val(Text5.Text) c2 = Val(Text6.Text) x = a1 * a2 + b1 * b2 + c1 * c2 Text7.Text = x End Sub
4. 设计工程,输出在指定范围内的三个随机数,范围在文本框中输入。
图4-8 设计用户界面
图4-9 生成随机数
【解答】 随机函数Rnd( )可以返回一个(0,1)区间中的随机小数,那么,Rnd * a语句可以返回(0, a)区间中的随机实数(带小数)。 若n, m均为整数,则表达式:Int((m + 1 – n) * Rnd) + n的值是闭区间[ n, m ]中的一个随机整数。
设计步骤如下。 (1)设计程序界面及设置控件属性。新建一个工程,进入窗体设计器,在窗体中增加一个框架控件Frame1,一个命令按钮Command1和三个标签Label1~Label3。选定Frame1,在其中增加两个文本框Text1和Text2以及一些标签。修改对象属性参见表4-1。设置属性后的窗体如图4-8所示。 表4-1 属性设置 对 象 属 性 属 性 值 说 明 Frame1 Caption 请指定随机整数的范围: 框架的标题 Command1 Caption 生成随机数 按钮的标题 Label1~Label3 Caption 0 Text1, Text2 Text 0, 1
(2)编写程序代码。 Private Sub Command1_Click( ) Randomize n = Val(Text1.Text) m = Val(Text2.Text) Label4.Caption = Int((m + 1 – n) * Rnd) + n Label5.Caption = Int((m + 1 – n) * Rnd) + n Label6.Caption = Int((m + 1 – n) * Rnd) + n End Sub 运行程序,在文本框中输入范围值后,单击“生成随机数”按钮,可以不断生成指定范围之内的随机整数,如图4-9所示
5. 使用大小写转换函数设计程序,实现在文本框中输入英文字母,按“转大写”按钮,文本变为大写;按“转小写”按钮,文本变为小写。
【解答】 本题主要使用大小写转换函数UCase( )和LCase( ),另外还用到了KeyUp(键抬起)事件。
设计步骤如下。 (1)建立应用程序用户界面,并设置对象属性。新建一个工程,进入窗体设计器,在窗体中增加一个标签Label1,一个文本框Text1和三个命令按钮Command1~Command3,参照图4-10设置各个对象的属性
(2)设计代码。 首先设计文本框的KeyUp事件代码,使得输入的字符存入文本框的Tag属性中: Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) Text1.Tag = Text1.Text End Sub 编写命令按钮Command1的Click事件代码: Private Sub Command1_Click( ) Text1.Text = UCase(Text1.Tag) End Sub 编写命令按钮Command2的Click事件代码: Private Sub Command2_Click( ) Text1.Text = LCase(Text1.Tag) End Sub 编写命令按钮Command3的Click事件代码: Private Sub Command3_Click( ) Text1.Text = Text1.Tag End Sub
6. 设某职工应发工资x元,试求各种票额钞票总张数最少的付款方案。
【解答】 可以从最大的票额(100元)开始,算出所需的张数,然后在剩下的部分算出较小票额的张数,直到最小票额(1元)
(1)建立应用程序用户界面。新建一个工程,进入窗体设计器,增加一个命令按钮Command1,14个标签Label1~Label14,七个文本框Text1~Text7。用户界面如图4-11(a)所示。
图4-11 建立程序界面与程序运行结果
(2)设置对象属性,参见表4-2。其中标签的标题属性参见图4-11(a)。 表4-2 属性设置 对 象 属 性 属 性 值 说 明 Text1 Text 0 文本框的内容 Text2~Text7 Text 文本框的内容 Alignment 1-Right Justify 文本内容右对齐 Locked True 文本内容只读 Command1 Caption 应付 按钮标题 Default True 窗体的默认按钮
(3)编写程序代码
编写命令按钮Command1的Click事件代码: Private Sub Command1_Click( ) x = Val(Text1.Text) ' x为实发工资数 y = x \ 100 : Text2.Text = y ' 求100元票张数并显示 x = x – 100 * y ' 求剩余款项 y = x \ 50 : Text3.Text = y ' 求50元票张数并显示 x = x – 50 * y ' 求剩余款项 y = x \ 10 : Text4.Text = y ' 求10元票张数并显示 x = x – 10 * y ' 求剩余款项 y = x \ 5 : Text5.Text = y ' 求5元票张数并显示 x = x – 5 * y ' 求剩余款项 y = x \ 2 : Text6.Text = y ' 求2元票张数并显示 x = x – 2 * y : Text7.Text = x ' 求1元票张数并显示 End Sub
编写文本框Text1的Change事件代码: Private Sub Text1_Change( ) ' 当在Text1中输入新数时,清空其他文本框中的内容 Text2.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text6.Text = "" Text7.Text = "" End Sub
【说明】 文本框的Change事件当文本框中的内容被改变时发生。
下面用信息对话框来输出各种票额钞票张数的付款方案,如图4-12所示
图4-12 信息对话框
只需将图4-11中多余的文本框和标签删去,并改写命令按钮的Click事件代码如下:
Private Sub Command1_Click( ) x = val(Text1.Text) ' x为实发工资数 y1 = x \ 100 ' 求100元票张数 x = x Mod 100 ' 求剩余款项 y2 = x \ 50 ' 求50元票张数 x = x Mod 50 ' 求剩余款项 y3 = x \ 10 ' 求10元票张数 x = x Mod 10 ' 求剩余款项 y4 = x \ 5 ' 求5元票张数 x = x Mod 5 ' 求剩余款项 y5 = x \ 2 ' 求2元票张数 x = x Mod 2 ' 求1元票张数 Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) Text1.SetFocus a = "===========================" & Chr(13) a = a & Format(Y1 & "张 百元票,", "@@@@@@@@@@") & _ Format(Y2 & "张 50元票", "@@@@@@@@@@") & Chr(13) a = a & Format(Y3 & "张 10元票,", "@@@@@@@@@@@") & _ Format(Y4 & "张 5元票", "@@@@@@@@@@") & Chr(13) a = a & Format(Y5 & "张 2元票,", "@@@@@@@@@@@") & _ Format(x & "张 1元票", "@@@@@@@@@@") & Chr(13) a = a & "===========================" & Chr(13) a = a & "共计" & Text1.Text & "元" c = MsgBox(a, 0, "应发工资") End Sub
【说明】 文本框的SelStart属性用来设置(或返回)所选择的文本的起始点,如果没有文本被选中,则指出插入点的位置。 SelLength属性用来设置(或返回)所选择的字符数。函数Len( )返回字符串数据的长度。在命令按钮的Click事件代码中调用SetFocus方法,可使光标重新回到输入框Text1。使用Mod运算可以得到相除的余数。
4.4 使用对话框实现数据输入输出
4.4.1 输入框(InputBox)
变量 = InputBox(〈信息内容〉[,〈对话框标题〉][,〈默认内容〉] )
InputBox函数显示一个能接受用户输入数据的对话框,并返回用户在对话框中输入的信息
Private Sub Command1_Click() Dim h As Integer, f As Integer h = Val(InputBox("鸡和兔的总头数", "请输入", 0)) f = Val(InputBox("鸡和兔的总脚数(偶数)", "请输入", 0)) x = (4 * h – f) / 2 y = (f – 2 * h) / 2 Label2.Caption = " 设笼中鸡和兔的总头数为" & h & ", 总脚数为" & f & "。" Label3.Caption = " 则笼中鸡有" & x & "只,兔有" & y & "只。" End Sub
4.4.2 消息框(MsgBox)
变量 = MsgBox(〈消息内容〉[,〈对话框类型〉[,〈对话框标题〉] ] )
MsgBox函数在对话框中显示信息,等待用户单击按钮,并返回一个整数以标明用户单击了哪个按钮
若不需要返回值,则可以使用MsgBox的命令形式
MsgBox〈信息内容〉[,〈对话框类型〉[,〈对话框标题〉]]
4.3 利用文本框进行数据输入
4.3.1 TextBox控件的简单使用
(1) Text属性:文本框中包含的文本内容。
(2) Locked属性:控件是否可编辑。Locked属性值为 True时,文本框内容不可编辑;为False时可编辑
(3) PassWordChar属性:显示在文本框中的替代符,如一串“*”号等。主要用于口令的输入
1、在文本框中要使键入的所有字符显示为*号,应设置 ( ) 属性为"*"。
【答】PasswordChar
(4) MaxLength属性:显示在文本框中的字符数,超出部分不接收,并同时发出嘟嘟声
4.3.2 多行文本的输入
4.3.3 焦点与Tab键序
焦点就是光标,当对象具有“焦点”时才能响应用户输入
当控件的Visible和Enabled属性值为True时,控件才能接收焦点。
某些控件不具有焦点,如标签、框架、计时器等
TabIndex属性:决定控件接收焦点的顺序
TabStop属性:决定焦点是否能够停在该控件上
例题
1、当对象得到焦点时,会触发 ( ) 事件,当对象失去焦点时将触发 ( ) 事件
【答】GotFocus;LostFocus
4.3.4 Frame控件
Private Sub Command1_Click() Dim h As Integer, m As Integer, s As Integer Dim x As Long h = Val(Text1.Text) m = Val(Text2.Text) s = Val(Text3.Text) x = h * 3600 + m * 60 + s Label1.Caption = "共计秒数" & Str(x) & "秒" End Sub