(1) 按分数从高到低排序。若分数相同,则按学号进行升序排序。
(2) 以班级为单位,排出从 1 号开始的机房座位表。 章老师编写了一个位置编排功能的 VB 程序,运行界面如下图所示。
在文本框 Text1 中输入班级名称,单击“读数据库”按钮 Command1 后,从数据库读取数 据并显示在列表框 List1 中;单击“编排”按钮 Command2,在列表框 List2 中输出学号、姓名、 成绩和位置信息。
![](https://img.xkw.com/dksih/QBM/2020/7/1/2496128856891392/2535708148252672/STEM/fa51b73a59154c4f8366ed4a5577c5ca.png?resizew=319)
实现以上功能的 VB 程序如下,请回答下列问题:
(1)分析程序,可知数据库的文件名为
(2)请在划线处填入合适的代码。
Dim n As Integer
Dim xh(1 To 40) As Integer, xm(1 To 40) As String, cj(1 To 40) As Integer
Private Sub Command1_Click()
'本过程在文本框 Text1 中输入班级名称,从数据库中读取指定班级的学号、姓名和成绩
的
'数据分别存储在数组 xh,xm 和 cj 中
Dim conn As New ADODB.Connection
conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source="+ App.Path + "\js.accdb"
conn.Open
Dim rs As New ADODB.Recordset rs.ActiveConnection = conn
rs.Open "select * from 技术"
'本过程的其他语句略
End Sub
Private Sub Command2_Click()
Dim wz(1 To 40) As Integer
Dim i As Integer, j As Integer
List2.AddItem "学号" & " " & "姓 名" & " " & "成绩" & " " & "位置"
For i = 1 To n
Next i
For i = 1 To n
For j = 1 To n
If
wz(i) = wz(i) + 1
End If
Next j
List2.AddItem adj(Str(xh(i))) + adj(xm(i)) + adj(Str(cj(i))) + adj(Str(wz(i)))
Next i
End Sub
Function adj(c As String) As String '固定输出 5 个字符长度
Dim i As Integer
For i = 1 To 5 - Len(c)
adj = adj + " "
Next i
End Function
相似题推荐
编写VB程序,实现统计功能:程序运行时,在列表框List1中显示所有学生的学号和两次的选考成绩,在文本框Text1中输入提升分值V,单击“统计”按钮Command1后,将提升分值不小于指定分值的记录,按从高到低的顺序显示在列表框List2中.程序界面如图所示.
![](https://img.xkw.com/dksih/QBM/2021/11/15/2851794192203776/2853785733931008/STEM/a511996d-dba1-414a-abde-0ea688bf04ba.png?resizew=460)
请回答下列问题:
(1)根据程序运行界面,“统计两次选考提分情况”是窗体Form1的
(2)请在划线处填入合适的代码.
(3)程序中加框处代码有错,请改正.
Const n=50’学生数
Dim num(1 To n) As String, a(1 To 2*n) As Integer
Private Sub Form Load()
本过程读取学号、首考和二考的数据分别存储在数组num和a中,其中数组a存储两次成绩,例如a(1)、a(2)存放第1个学生的首考和二考成绩,a(3)、a(4)存放第2个学生的首考和二考成绩,以此类推,并在List1中显示,代码略
End Sub
Private Sub Command1_Click()
Dim v As Integer, k As Integer, i As Integer, t1 As Integer, t As String
Dim ts1 As Integer, ts2 As Integer, tf As Integer
v=Va1(Text1. Text)
List2.AddItem “学号” + “ ” + “提分情况”
i=1
Do While True
ts1=a(2*k)-a(2*k-1)
For j=i+1 To n
ts2=a(2*j)-a(2*j-1)
If ts2 > ts1 Then
k=j
End If
Next j
If ts1 >= v Then
If k <> i Then
t=num(i):num(i)=num(k):num(k)=t
t1=a(2*i-1):a(2*i-1)=a(2*k-1):a(2*k-1)=t1
t1=a(2*i):a(2*i)=a(2*k):a(2*k)=t1
End If
List2. AddItem num(i)+ “ 提升” + Str(tf)+ “分”
i=i+1
Else
Exit Do
End If
Loop
List2. AddItem “共有”+ Str(k)+ “个学生提升”+Str(v)+ “分及以上”
End Sub
![](https://img.xkw.com/dksih/QBM/2020/7/24/2512363915313152/2512890612097024/STEM/c4764e7cdd124af2ab3951b63d0b09f0.png?resizew=488)
电影的关注度信息存放在数据库文件“ Movie.accdb”的“T_Movie”表中,如图所示。
![](https://img.xkw.com/dksih/QBM/2020/7/24/2512363915313152/2512890612097024/STEM/f6d3fa855fe84b3ca8dd1f40c3b22c8b.png?resizew=460)
VB应用程序的功能如下:程序运行时,列表框List1中显示从数据表中读取的电影编号和电影关注度数据。单击“排序”按钮Command1,在列表框List2中显示按电影关注度降序排序后的结果。代码如下:
Dim a(1 To 100) As String `定义存储电影编号的数组a
Dim b(1 To 100) As Integer `定义存储电影关注度的数组b
Dim n As Integer `定义存储电影总数的变量n
Private Sub Command1_Click( )
Dim t1 As String, t2 As Integer
![](https://img.xkw.com/dksih/QBM/2020/7/24/2512363915313152/2512890612097024/STEM/bf077a387f2d42bfb3ca7151c395c94e.png?resizew=277)
For i=1 To n
List2.AddItem a(i)+"-----"+Str(b(i))
Next i
End Sub
Private Sub Form_Load( )
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString="provide=Microsoft.ACE.OLEDB.12.0;datasource="&App.Path&"\Movie.accdb"
conn.Open
set rs.ActiveConnection=conn
rs.Open "SELECT*FROM T_Movie"
n=0
Do While Not rs.EOF
n=n+1
a(n)=rs.Fields("电影编号")
b(n)=rs.Fields("电影关注度")
List1.AddItem a(n)+"-----"+Str(b(n))
rs.MoveNext
Loop
rs.Close
conn.Close
End Sub
回答下列问题:
(1)分析程序,可知连接的数据库文件名为_________,程序中打开的数据表名为_________。
(2)当“Form_Load( ) ”事件处理过程运行结束时,变量n的值为_________。
(3)加实线框中的代码采用的排序算法为___________________________。
(4)为实现上述功能,程序中画线处的代码:①_________________;②___________________。