16.在數據庫的兩張數據表中有各有一批學生的考試成績,小吳要將兩張表中的數據讀取并按成績從高到低排列輸出.成績相同時,第一批學生優先輸出.小吳編寫了一個VB程序,程序運行時,將相關信息分別讀入數組cj和xm的前后兩段,單擊按鈕 Command1 后,在列表框List1中輸出運行結果.實現上述功能的 VB 代碼如下,但加框處代碼有錯,請改正: Dim xm(1to 1000)as string'存儲學生姓名 Dim cj(1to 1000)as integer'存儲學生成績 Dim rs1 as integer'第一批學生人數 Dim rs2 as integer'第二批學生人數 Private Sub Form_Load'該處具體代碼省略 '第1步:從數據庫讀取第1批學生的人數rs1,按成績從高到低的順序將成績存入cj(1)、'cj(2)…cj(rs1)中,姓名存入xm(1)、xm(2)…xm(rs1)中 '第2步:從數據庫讀取第2批學生的人數rs2,按成績從高到低的順序將成績存入'cj(rs1+1)、cj(rs1+2)…cj(rs1+rs2)中,姓名存入xm(rs1+1)、xm(rs1+2)…xm(rs1+rs2)中 End Sub Private Sub Command1_Click i=1'i表示第一批中,尚未輸出的學生中成績最高學生的序號 j=rs1+1'j表示第二批中,尚未輸出的學生中成績最高學生的序號 ‘以下程序開始按成績高低逐個輸出,每次輸出前后兩段中,尚未處理的學生中成績最高的
n=1
‘(1) Do While i<=rs1And j<=rs1+rs2‘兩段都有未輸出的情況,輸出兩段中最大值 n=n+1 If cj(i)>=cj(j) Then k=i:i=i+1 Else k=j:j=j+1 End If List1.AddItem (“第“+Str(n)+“名“+xm(k)+“成績:“+Str(cj(k))) Loop Do While i<=rs1‘剩下第一段還有未輸出的,逐個輸出 n=n+1 List1.AddItem (“第“+Str(n)+“名“+xm(i)+“成績:“+Str(cj(i))) i=i+1 Loop Do While
j<=rs2
‘(2)若第二段還有未輸出的,逐個輸出 n=n+1 List1.AddItem (“第“+Str(n)+“名“+xm(j)+“成績:“+Str(cj(j))) j=j+1 Loop End Sub.
17. 某單位招考公務員,2010年和2011年各有4020名和2000名考生報名,下列VB程序用于統計兩次考試都參加的考生信息.程序界面設計如圖所示,2010年和2011年的考生信息分別顯示在List1和List2中,點擊“統計”按鈕,在List3中顯示兩次考試都參加的考生信息和總人數. (1)實現上述功能的 VB 程序如下,請在橫線處填入合適代碼. Dim a (1To 4020 ) As String Dim b (1To 2000 ) As String Private Sub Form_Load Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim constr as string Constr=“Provider=Microsoft.ace.OLEDB.12.0;“ Constr=constr &“Data Source=“& App.Path+“\data\KaoSheng.jye.ai“ conn.ConnectionString=constr conn.open Dim sql As String ‘將參加2010年下半年考試的考生的身份證號碼按升序存放在a數組中 sql=“select*from kaoshengInfo where year=’2010’order by sfzh asc“ rs.Open sql,conn i=0 Do While Not rs.EOF i=i+1 a(i)=rs(“sfzh”) List1.additem(a(i)) rs.MoveNext Loop ‘將參加2011年下半年考試的考生的身份證號碼按升序存放在b數組中 sql=“select*from kaoshengInfo where year=‘2011’order by sfzh asc“ rs.Open sql,conn i=0 Do While Not rs.EOF i=i+1 b(i)=rs(“sfzh”) List2.additem(b(i)) rs.MoveNext Loop rs.Close End Sub Private Sub Command1_Click Dim bot As Integer,top As Integer,m As Integer Dim i As Integer,ans As integer ans=0 For i=1 To 2000 bot=1 ①
Do While bot<=top m=Fix ( ( bot+top )/2 ) If a ( m )=b ( i ) Then List3.AddItem a ( m ) ②
Exit Do ElseIf ②
Then Top=m-1 Else bot=m+1 End If Loop Next i List3.AddItem“總計”+str(ans)+“人次” End Sub (2)分析上述代碼,在數據庫中用于存放考試信息的數據表名稱是