16.
(2017·浙江模拟)
公司年会,领导要小李编写一个小程序,用于抽奖,小李将参加年会的人员姓名、手机号保存在一个access数据库中库名:年会嘉宾.accdb 数据表名为:联系人
程序设计的主要思路是:窗体装入时读出所有嘉宾的姓名和手机号,保存在两个数据中,从text1中取得要抽奖的人数,用随机函数产生1~num间的数作为中奖号,从数据中读出对应的姓名和手机号,手机号中间4位用“新年快乐”代替。已抽中过的姓名和手机号从数据中删除,以防止重复中奖。
Dim sname(1 To 1000) As String ‘用于保存嘉宾姓名
Dim phone(1 To 1000) As String ‘用于保存嘉宾手机号
Dim num As Integer ‘未抽奖人数
Private Sub Command1_Click()
Dim n As Integer ‘拟抽奖人数
Randomize
n = Val(Text1.Text)
List1.Clear
If
① Then
For i = 1 To n
k = Int(Rnd * num) + 1
List1.AddItem Str(i) + " " + sname(k) + " " +
② For j = k To num
sname(j) = sname(j + 1)
phone(j) = phone(j + 1)
Next j
num =
③ Next i
Else
List1.AddItem "剩余的数据不足!"
End If
End Sub
Rem 下列程序段用于从数据库中读取嘉宾的姓名和手机号,分别保存在全局变量sname()和phone()两个数组中,设嘉宾个数不超过1000个。
Private Sub Form_Load()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString = "provider=microsoft.ace.oledB.12.0;data source=" & App.Path & "\年会嘉宾.accdb "
conn.Open
Set rs.ActiveConnection = conn
rs.Open "select * from 联系人"
num = 0
Do While Not rs.EOF And num < 1000
num = num + 1
phone(num) = rs.Fields("联系电话")
sname(num) = rs.Fields("姓名")
rs.MoveNext
Loop
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
End Sub