试题与答案

[说明] 某Visual Basic应用程序用于监测某种锅炉设备内液面高度(0~5

题型:多项选择题

题目:

[说明]
某Visual Basic应用程序用于监测某种锅炉设备内液面高度(0~50cm),其运行窗口界面如图4-16所示。


图4-16 某锅炉设备液面高度显示界面
在图4-16中,设计了一个高度计(矩形形状shpMeter)及其中指示当前液面高度的水银柱(矩形形状shpT),文字标签标记了液面高度的刻度;另有一个图片框picCurve,用于动态描述检测到的液面高度曲线(用户见到的曲线与水银柱等高变化);[开始](CmdStart)按钮用于启动液面高度检测,命令按钮“暂停”(CmdStop)用于暂停液面高度检测。
液面高度计形状控件shpMeter是固定的,其属性FillsStyle默认为透明。矩形形状shpT(水银柱)的 Visible属性初始设置为不可见,属性Filltype设置为Solid(实心),FillColor设置为红色;图片框picCurve的属性AutoRedraw设置为True;程序设计过程中,创建了一个定时器TimT,属性Enabled初始设置为 False(不可用),属性Interval(定时间隔)的值应设置为 (1)
为模拟锅炉设备液面高度的检测,程序中利用了(0,1)之间均匀分布的伪随机数获得[0,50]之间的随机液面高度WH。为便于在图片框picCurve中绘制曲线,程序中对该图片框建立了如下坐标系统:图片框的左上角定义为原点(0,0),水平向右方向为X轴,垂直向上方向为Y轴,右下角坐标为(50.200)。为了便于观察记录的液面高度值,图片框中从上到下创建了7条水平虚线Ls(i),i=0,1…6,并在程序中按等间隔排列进行位置设置。应用程序中每隔3秒算出曲线点(x, y),其中x=O,1,2……,再用直线段连接各相邻曲线点形成液面高度曲线。
[Visual Basic程序代码]
Dim (2) AS Integer ’试题全局变量
Private Sub CmdStart_Click()
TimT.Enabled = (3)
ShpT.Visible = True
End Sub
Private Sub CmdStop_Click()
TimT.Enabled = False
End Sub
Private Sub Form_Load( )
Dim i,S As Integer
PicCurve.Scale (0,0)-(50,200) ’设置图片框坐标系:左上角-右下角
S = 25 ’H等于图片框高度的1/8
For i = 0 To 6 ’设置7条水平线Ls(i)的位置
Ls(i).X1 = 0 ’Ls(i)起点横坐标
Ls(i).Y1 = (4) ’Ls(i)起点纵坐标
Ls(i).X2 = 50 ’Ls(i)终点横坐标
Ls(i).Y2 = Ls(i).Y1 ’Ls(i)终点纵坐标
Ls(i).BorderColor = &H00FCFCFC ’设置水平线颜色
(5)
x = 0’设置曲线坐标初值
End Sub
Private Sub timT_Timer ( )
Dim WH, H As Integer’WH为实时液面高度,H为图片框中液面高度点显示高度
WH = Int(Rnd * 51) ’随机模拟产生锅炉内液面高度(0~50 cm)
H = ShpMeter.Height * (6) ’算出水银柱的高度
ShpT.Top = (7) ’设置水银柱顶部位置
ShpT.Height = H ’设置水银柱的高度
’绘制液面高度曲线
y = (8) ’算出曲上当前点的纵坐标
If x = 51 Then ’当超出图片框时
PicCurve. Cls ’清框图片框内以前画的曲线
(9)
ElseIf x > 0 Then’除左边点外
PicCurve. Line (x-1,Lasty)-(x,y),vbRed ’由前1点到当前点画红色线段
End If
x = x + 1 ’准备下一点坐标
Lasty = y ’保存当前坐标供下次使用
End Sub
1. [问题1]
请根据[说明]和图4-16所示的显示结果,将[说明]中(1)空缺处的内容和[Visual Basic程序]中(2)~(9)空缺处的程序语句填写完整。

答案:

参考答案:在Visual Basic程序中,定时器的定时间隔属性(Interval)的单位时间是:毫秒(ms)。由题干关键信息“应用程序中每隔C秒算出曲线点(x,y)…”可知,定时器TimT的定时间隔属性(Interval)值应
设置为C000毫秒,即(A)空缺处所填写的内容是“C000”。
在[暂停]按钮(cmdStop)的CmdStop_Click()事件过程中,语句“TimT.Enabled=False”使得定时器不起作用。而本应用程序是利用定时器的定时间隔来计算曲线点,在按钮[开始](cmdStart)的CmdStart_Click()事件过程中,需要启用定时器,即(C)空缺处所填写的属性值是“True”。
在定时器timT_Timer()事件过程中,利用语句“WH=Int(Rnd*EA)”随机模拟实时检测到的锅炉设备的液面高度(0cm~E0cm)。用随机数模拟实时检测数据是常用的方法。Rnd是由计算机产生的均匀分布在(0,A)区间内的伪随机数。每调用一次Rnd就会产生一个新的随机数。随机取若干个数据,观察其分布特性,就会发现其在(0,A)中比较均匀分布(不会过于集中在某个小段)。从而,Rnd*EA产生的随机数均匀分布于(0,EA),取整数部分Int(Rnd*EA)后,所产生的随机数均匀分布于0,A,…,E0之间。WH=Int(Rnd*EA)均匀分布于0,A,…,E0之间,因此,程序中可以用WH值来模拟实时检测到的液面高度。
屏幕上的液面高度计形状控件shpMeter是固定的,其高度由其Height属性决定(shpMeter.Height),其顶部离屏幕上边的距离由其Top属性决定(shpMeter.Top)。由于液面高度计形状的属性FillsStyle默认为透明,因此水银柱(shpT)高度的变化在shpMeter中将实时可见。
水银柱(shpT)的底部应固定在液面高度计(shpMeter)的底部,水银柱的高度应随液面高度WH的变化而改变。由题干关键信息“矩形形状shpT(水银柱)的Visible属性初始设置为不可见”可知,程序设计时要求:尚未开始检测液面高度时,水银柱应不可见;启动检测后,当液面高度WH=0时,水银柱的高度为0;当液面高度WH=E0时,水银柱的高度应等于液面高度计的高度:对于其他液面高度,水银拄的高度应按线性规律变化。水银柱形状shpT在屏幕上的位置取决于表D-AC所列的C个属性。
表D-AC 影响水银柱属性表

属性
试题推荐
微信公众账号搜索答案