题库 高中信息

题干

(加试题)小王准备编写一个依据技术学考、加试成绩进行赋分的VB程序,需对成绩进行预处理。预处理算法的基本思想:先从数据库中读取考生的考号、学考、加试成绩,然后进行排序,排序规则是按学考+加试的总分降序,若总分相同按加试成绩降序排列。再根据排序结果给出名次,同分同名,学考、加试成绩相同,则名次相同。
程序运行时,学生数据显示在列表框List1中,单击“计算”按钮Command1,计算结果显示在列表框List2中,程序运行界面如图所示。

实现上述功能的VB程序如下,请回答下列问题:
(1)如图所示,学生总数为1500人,排名前1%的学生可赋分为100,则共有______名学生可赋分为100。
(2)分析数据,可知存放学生成绩的数据表为_________。
(3)请在划线处填入合适的代码。
Dim kh(1 To 1500) As String    '存放学生考号
Dim a(1 To 1500) As Integer    '存放学考成绩
Dim b(1 To 1500) As Integer    '存放加试成绩
Dim pm(1 To 1500) As Integer   '存放排名
Dim n As Integer '存放总人数
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 + "\cj.accdb"
conn.Open
Set rs.ActiveConnection = conn
rs.Open "select * from stu_cj"
List1.AddItem " 考号  " & " 学考  " & "加试"
n = 0
Do While Not rs.EOF '到记录集最后一条记录后退出循环
n = n + 1 '计数
kh(n) = rs.Fields("考号")
a(n) = rs.Fields("学考成绩")
b(n) = rs.Fields("加试成绩")
List1.AddItem kh(n) & "    " & a(n) & "    " & b(n)
rs.MoveNext     '移动到下一条记录
Loop
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer, k As String
For i = 1 To n - 1
For j = n To i + 1 Step -1
If a(j) + b(j) > a(j - 1) + b(j - 1) Or _________________Then
t = a(j): a(j) = a(j - 1): a(j - 1) = t
t = b(j): b(j) = b(j - 1): b(j - 1) = t
k = kh(j): kh(j) = kh(j - 1): kh(j - 1) = k
End If
Next
Next
pm(1) = 1
For i = 2 To n
If a(i) = a(i - 1) And b(i) = b(i - 1) Then
______________
Else
pm(i) = i
End If
Next
List2.Clear
List2.AddItem "排名  " & " 考号  " & " 学考  " & "加试"
For i = 1 To n
List2.AddItem pm(i) & " " & kh(i) & "   " & a(i) & "   " & b(i)
Next
End Sub
上一题 下一题 0.99难度 填空题 更新时间:2019-05-09 08:33:28

答案(点此获取答案解析)