问答题
【应用说明】
某电视台拟开发应用程序来显示戏曲大赛中1~4号四位选手决赛的现场投票情况。该程序从现场观众中(不超过2000人)每0.5秒收集一次对这四位选手的支持票数,并在屏幕上动态显示这四位选手的票柱(以高度反映票数)与累计得票数,如图2-3所示。投票过程限时30秒,每名观众最多为1名选手投票。投票结束后系统通过比较各位选手的累计得票数,显示决赛结果:“*号胜出”(如有单个冠军)或“继续进行PK”(如有多人获得相同的最高票数)。

在开发该程序的过程中创建的主要控件及其初始属性值说明如下:
控件名 | 类型 | 用途 | 初始属性设置 |
ShpM(1to4) | 形状数组 | 显示各选手得票情况 | 矩形,实心,高度0 |
txtM(1to4) | 文本框数组 | 显示各选手得票数 | 0 |
cmdStatr | 命令按钮 | 启动计票 | 标题:开始投票 |
txtResult | 文本框 | 显示决赛结果 | 空 |
Timl | 计时器 | 每半秒收集处理一次 | 间隔时间0.5秒,关闭状态 |
该程序中设置公共变量T动态记录投票时间。四个形状ShpM(1 to 4)动态增长的底线固定。
【Visual Basic程序代码】
Dim T As Integer ’声明全局变量
Private Sub Form_Load()
For i=1 To 4
ShpM(i).Top=2000 : ShpM(i).Height=0 ’初始票柱高度为0
TxtM(i).Text=0
Next i
Timl.Enabled=False : Timl.Interval=500 : T=0
End Sub
Private Sub CmdStart Click()
Timl.Enabled=True ’开始投票
CmdStart.Enabled=False
End Sub
Private Sub Timl Timer()
Dim n(1 To 4) As Integer ’n(1 to 4)为每次收集的票数
Dim i As Integer,j As Integer
Dim G As Integer ’G用于计算最高票数
Dim ng As Integer ’ng用于计算冠军个数
For i=1 To 4
n(i)=... ’收集i号选手的票数,此处省略
TxtM(i).Text=TxtM(i).Text+n(i) ’累计票(VB能进行自动转换)
ShpM(i).Top=ShpM(i).Top-n(i)
ShpM(i).Height=ShpM(i).Height+
(1) ’算出票柱高度
Next i
T=T+1 ’计时
If T=60 Then ’投票时间到
(2) ’停止数据收集处理
ng = 1
G=TxtM(1).Text
For i=2 To 4
If G<TxtM(i).Text Then
G=TxtM(i).Text
ng=
(3) j = i
Else
If G=TxtM(i).Text Then ng=
(4) ’计算冠军个数
End If
Next i
If ng=1 Then
txtResult. Text=
(5) ’单个冠军结果
Else
txtResult. Text="继续进行PK"
End If
End If
End Sub