编写VB程序,功能是根据某用户在学习平台上的学习记录,判断该用户是否完整学习完某课程的所有视频内容。一个课程由若干个视频组成,用户需要观看完该课程所有视频才能完成该课程的学习。用户可以间断的学习视频内容,每次学习都会记录学习数据,重复观看部分不计入有效时长,学习数据包含3项内容:观看的视频编号、开始时间、结束时间。示例如下表:
课程信息表 学习记录表
视频编号
| 视频时长(秒)
|
| 观看视频编号
| 开始时间(秒)
| 结束时间(秒)
|
1
| 3231
| 1
| 0
| 1000
|
2
| 796
| 1
| 300
| 600
|
3
| 2183
| 2
| 0
| 796
|
4
| 2929
| 1
| 700
| 2000
|
| 4
| 500
| 1000
|
4
| 1100
| 2929
|
表中,该课程由4个视频组成,视频时长依次为:3231、796、2183、2929秒。该用户有6条学习记录,其中第1条学习记录表示该用户观看了第1个视频第0秒到第1000秒的内容。6条记录中共有3条观看第1个视频内容的学习记录,观看第一个视频有效时长为2000秒。由于第1、3、4个视频的内容未观看完,因此该用户未完成该课程的学习。
(1)由示例数据可知,该用户要完成本课程的学习,仍需要学习的时间至少为________秒。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Dim a(1 To 20) As Integer 'a(i)存储第i个视频的总时长,单位为秒
Dim bh(1 To 1000) As Integer 'bh(i)存储第i条学习记录的视频编号
Dim stime(1 To 1000) As Integer 'stime(i)存储第i条学习记录的开始时间
Dim etime(1 To 1000) As Integer 'etime(i)存储第i条学习记录的结束时间
Dim n As Integer '该课程的视频总数量,视频总数不超过20个
Dim m As Integer '学习该课程的记录数
Private Sub Form_Load()
'读取课程及学习数据,存入变量n、m及数组a、bh、stime、etime 中
'学习记录己按视频编号为主要关键字、学习开始时间为次要关键字升序排序
'代码略
End Sub
Private Sub Command1_Click()
Dim sum(1 To 20) As Integer
Dim p As Integer, I As Integer, k As Integer
For i= l To n
sum(i)= 0
Next i
p=1
For i=2 To m
If ①__________Then
k= bh(p)
sum(k) = etime(p) - stime(p)
p=i
Else
If stime(i) <= etime(p) Then
If etime(i) > etime(p) Then ②__________
End If
End If
Next i
sum(bh(p)) = etime(p) - stime(p)
For i=l To n
If sum(i) < a(i) Then Exit For
Next i
If ③__________Then
Label1.Caption = "未完成该课程学习"
Else
Label1.Caption = "已完成该课程学习"
End If
End Sub