某校秋季运动会共有n名运动员参赛,小明编写了根据号码牌查询学生信息的程序,输入号码牌就能查询该号码牌所属的班级和选手姓名。数组a,b,c分别保存了本次运动会所有选手的号码牌、班级、姓名信息。第i个选手的号码牌保存在a(i)中,对应的班级和姓名保存在b(i)和c(i)中。程序界面如图所示,在文本框Text1中输入号码牌,单击“查询”按钮(Command1),如果找到对应的信息,就显示所属班级和选手姓名;如果没有找到,则显示“未找到”。
(1)
分析程序,可知数据库的文件名为,当前数据表的名称为。
(2)
填入适当的代码,把程序补充完整。
Dim
n As Integer ‘用于存储运动员总人数
Dim
a(1000)As Integer,
b(1000)As String, c(1000)As String
Private
Sub Form_Load( )
Dim conn As New ADODB. Connection
Dim rs As New ADODB. Recordset
conn. ConnectionString ="Provider
=Microsoft. Jet. OLEDB. 4.0;DATA
Source=" &App. Path & "\sport.accdb"
conn.Open
Set rs. ActiveConnection=conn
rs.Open"Select*from号码牌"
Do While Not rs. EOF ‘到记录集rs的最后一条记录后退出循环
n=n+1
a(n)=rs. Fields("号码牌")
‘读取当前记录“号码牌”字段值
b(n)= ① ‘读取当前记录“班级”字段值
c(n)=rs. Fields("姓名") ‘读取当前记录“姓名”字段值
② ‘移动到下一条记录
Loop
‘号码牌按升序排序后,显示在列表框List1中,其他代码略
End
Sub
Private
Sub Command1_Click( )
Dim x As Integer
x=Val(Text1.Text)
pos= ③
If pos>0 Then
Text2.Text=b(pos):Text3.Text=c(pos)
Else
Text2.Text="未找到"
End If
End
Sub
Function Search(Key
As Integer)As Integer
Dim i As Integer,j As Integer
i=1:j=n:Search=0
Do While i<=j
m=Fix((i+j)/2)
If Key=a(m)Then
Search=m:Exit Function
ElseIf ④ Then
j=m-1
Else
i=m+1
End If
Loop
End
Function
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③;④。
答案: 【1】sport.accdb【2】号码牌
【1】rs.Fields("班级")【2】rs.MoveNext【3】Search(x)【4】key <a(m)