试题

试题 试卷

logo

题型:综合题 题类:模拟题 难易度:困难

浙江省杭州市2015年高考模拟命题比赛信息技术(1)

小明利用所学的知识帮助语文老师设计一个语文学考等级查询系统,要求如下:输入某个等级,就能查出该等级的所有学生学号和姓名,并统计出该等级学生的人数,以便语文老师方便了解学生的学考情况。语文学考成绩分A、B、C、D、E五个等级,学生信息存储在数据库文件“stugrade.accdb”的数据表“Chinese”中,数据表“Chinese”的结构如图1所示。

VB程序运行界面如图2所示,在文本框Text1中输入查询的等级,单击“查询”按钮Command1,在列表框List1中显示所有该等级的学生学号和姓名,并按照学号从小到大排序,并在标签Label2处显示学生的人数,如果人数为0,则在列表框中显示“没有该等级的学生”。按此要求编写程序如下,但加框处代码有错误,请改正。

Private Sub Command1_Click()

Dim stuna(1 To 100) As String '存放学生姓名的数组定义为stuna

Dim stunum(1 To 100) As String '存放学生学号的数组定义为stunum

Dim i As Integer, j As Integer, n As Integer

Dim t As String


'连接数据库

Dim cn As New ADODB.Connection

Dim rs As New ADODB.Recordset

Dim strSQL As String

cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + App.Path + "\stugrade.accdb"

cn.Open

strSQL = "select * from Chinese where 语文等级='" + Text1.Text + "'"

Set rs.ActiveConnection = cn

rs.Open strSQL

n = 0

Do While Not rs.EOF

   n = n + 1

   stuna(n) = rs.Fields("姓名").Value

   stunum(n) = rs.Fields("学号").Value

   rs.NextMove          '①

Loop

rs.Close

cn.Close

Set rs = Nothing

Set cn = Nothing


List1.Clear '清除列表框

If n = 0 Then

   List1.AddItem "没有该等级的学生"

Else

   For i = 1 To n - 1       '按姓名排序

      For j = n To i + 1 Step -1

         If stuna(j) < stuna(j - 1) Then       '②

            t = stunum(j): stunum(j) = stunum(j - 1): stunum(j - 1) = t

            t = stuna(j): stuna(j) = stuna(j - 1): stuna(j - 1) = t

         End If

     Next j

   Next i

   For i = 1 To n

      List1.AddItem stunum(i) + "  " + stuna(i)

   Next i

   Label2.Caption = "该等级的学生共有" + Str(n) + "名"

End If

End Sub

(1)、下划线处①有错,应改为
(2)、下划线处②有错,应改为
举一反三
【加试题】某公司需要设计一个生日查询系统:输入某个日期,就能查出在这天生日的所有员工姓名,并统计出生人人数,以便于公司提前为员工准备生日礼物。员工信息存储在数据库文件“员工信息.mdb”的数据表“members”中,数据表“members”的结构如下:

VB应用程序界面如上图所示,在文本框text1中输入查询的日期(以月日形式,如0623),单击“查询”按钮,在列表框中显示所有这个日子出生的员工姓名(按姓名排序),并在Label3处显示员工数量,如果人数为0,则在列表框中显示“本天没有员工生日”。

解决此问题的VB程序如下,阅读程序并完成后面的问题。

‘定义存放员工姓名的数组na

Private Sub CmsqClick()

  Dim n As Integer , i As Integer , j As Integer

  Dim t1 As String

  ‘连接数据库获取数据

  Dim cn As new connection

  Dim rs As new recordest

  Dim str1 As String , str2 As String

     str1 =”driver=Microsoft access driver(*.mdb)”;dbq=”&app.path”&”员工信息.mdb”

     cn.open str1

     str2 = “select * form members where 生日 =’“ + text1.text + ”’”

     rs.open str2 , cn.adOpenDynamic ,adLockOptimistic

     n = 0

     Do While Not Rs.EOF

       n = n + 1

       na(i) = rs.Fields(“姓名”).value

       rs.MoveNext

     Loop 

     rs.close

     cn.close

‘按姓名排序

If n = 0 Then

  List1.AddItem “本天没有员工生日”

Else

  For i = 1 to n-1

    For j = 1 to n+1 Step -1

      If na(j) < na(j-1) Then

        t1 = na(j) :     ①      : na(j-1) = t1

      End If

    Next j

   Next i

   For i = 1 to n

     List1.AddItem     ②   

   Next i

   Label3.Caption = “这天共” + Str(n) + “位员工生日”

  End If

End Sub

求老师想按学生的成绩进行评级,分数和等级对应关系如下表:

分数

0~59

60~69

70~79

80~89

90~99

等级

E级

D级

C级

B级

A级

现要求根据上表统计出各等级学生人数占总人数的比例。小李编写了一个VB程序帮助老师实现该功能:程序运行时,将每位学生的得分(两位整数)存储到数组a中,并在列表框List1

中显示。单击“统计”按钮后,在列表框List2中显示从A级至E级,各等级的人数占总人数的百分比例(四舍五入保留整数)。程序运行界面如图所示:

请阅读代码,并回答以下问题:

Dim n As Integer

Dim a(1 To 50) As Integer

Private Sub Form_Load( )

    Dim adocn As New ADODB. Connection

    Dim adors As New ADODB. Recordset

    Dim str1 As String

    adocn.ConnectionString = "Provider = Microsof.ACE.OLEDB.12.0;Data source=" +App. Path +”\school. accdb”

    adocn. Open

    str1 =“select * from students”

    ardors.Open str1, adocn

    '将每个学生的得分读入数组a中,并在列表框list1中显示,统计学生总人数n

    '代码略

End Sub

Private Sub Comd1_C1ick( )

    Dim cou As Integer,k as Integer

    Dim b(0 To 4) As Integer

    Const dj = “A级B级C级D级E级”

    For i=1 Ton

    k=a(i)\10-5

    If k<0 Then     ①    

    b(k)= b(k) + 1

    Next i

    For i=0 To 4

      cou =       '⑶改错

      List2. AddItem       ②      + Str(cou) +“%”

    Next i

End Sub

返回首页

试题篮