题库 题库

【简答题】

试题七(共15分)
  阅读以下应用说明、Visual Basic 开发说明以及程序代码,将应填入 (n) 的字句写在答题纸的对应栏内。
[应用说明]
  某交通灯演示程序启动后,其运行窗口中包括红绿灯标志以及当前红绿灯状态剩余秒数的动态显示(如下图)。红灯与绿灯持续的时间分别为 30 秒与 40 秒。持续时间结束时,立即变更红绿灯,并重新显示剩余秒数。
   
[Visual Basic开发说明]
  在开发过程中,先在窗体内制作形状“红绿灯框架”(长方形,透明),在该框架中,上部制作形状“红灯”(ShpRed,圆形),默认属性为透明;下部制作形状“绿灯”(ShpGreen,圆形),初始设置其填充方式属性 FillStyle 为实心,填充颜色属性 FillColor 为绿色。
  再设置两个图像框(Image1 在左,Image2 在右),使其能分别装入数字图像文件,以显示当前红绿灯状态剩余的秒数。10 个数字图像文件 N0.bmp~N9.bmp 分别用于显示数字 0、1、…、9,这些文件存放在该应用程序所在目录中,以便在程序运行时按需要选择装入这两个图像框。为使图像文件装入图像框时能自动改变大小以适应图像框,这些图像框的 Stretch 属性都应设置成 (1) 。为使这些数字能每秒变化一次,开发窗体中设置了计时器 Timer1,其 Enable 属性设置成 True,其 Interval 属性设置成 1000。
  程序中,全局变量 Light 用以标志当前红灯(0)或绿灯状态(1),RedT 和 GreenT分别表示红灯或绿灯状态剩余的秒数。
  计时器 Timer1 的定时过程是在该程序启动 1 秒后首次执行的,以后每隔 1 秒执行1 次。开发者应考虑对以下四种情况的处理:绿灯持续、绿灯转红灯、红灯持续、红灯转绿灯。
  过程 LoadNumber 的功能是:将红绿灯剩余秒数 N(2 位整数)分离出两个一位数 i与 j,再将其变换成字符,删除前面可能产生的空格,再将数字图像文件 Ni.bmp 与 Nj.bmp装入两个图像框(其中 i 与 j 应以相应的数字字符代替)。
[Visual Basic程序代码]
  Public Light As Integer, RedT As Integer, GreenT As Integer
  Private Sub Form_Load()
    Light = 1 : GreenT = 40 : RedT = 0        ’初始化设置
  End Sub
  Private Sub Timer1_Timer()              ’计时器定时过程
  If Light = 1 Then                  ’绿灯状态时
    (2)  
  If GreenT > 0 Then                  ’绿灯持续时
    Call LoadNumber(GreenT)              ’调用过程,显示数字 GreenT
  Else                         ’绿灯转红灯时
    ShpRed.FillStyle = 0               ’置红灯形状实心 
    ShpRed.FillColor = vbRed             ’为红灯形状填充红色
    ShpGreen.FillStyle = 1              ’置绿灯形状透明
    Call LoadNumber(30)
    Light = 0 : RedT = 30
  End If
Else’红灯状态时
  RedT = RedT - 1
  If RedT > 0 Then         ’红灯持续时
    Call LoadNumber(RedT)
  Else               ’红灯转绿灯时
    ShpRed.FillStyle = 1
    ShpGreen.FillStyle = 0
    ShpGreen.FillColor = vbGreen
      (3)  
    Light = 1 : GreenT = 40
   End If
  End If
End Sub
  Sub LoadNumber(N As Integer)      ’根据剩余秒数 N 将数字图像装入图像框
  Dim i As Integer, j As Integer
  i = Int( (4) )
  j = (5)
  Image1.Picture = LoadPicture("N"&Trim(Str(i))&".bmp") ’显示十位上的数字
  Image2.Picture = LoadPicture("N"&Trim(Str(j))&".bmp") ’显示个位上的数字
End Sub

参考答案

 (1) True
 (2) GreenT = GreenT - 1
 (3) Call LoadNumber(40)
 (4) N/10
 (5) N -i*10

相关试题