程序访问数据库 知识点题库

【加试题】某公司需要设计一个生日查询系统:输入某个日期,就能查出在这天生日的所有员工姓名,并统计出生人人数,以便于公司提前为员工准备生日礼物。员工信息存储在数据库文件“员工信息.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

  1. (1) 程序序中涉及的排序算法是,排序方式为(填:升序/降序)。
  2. (2) “查询”按钮的对象名是
  3. (3) 程序中画线处应填入:①  ②  
小月设计了一个VB程序,用于对全班55名同学的体质调查分析,该程序能将55名同学的身高与体重录入到数据库中,之后通过如图所示的VB应用程序计算出这些同学的BMI指数,并按BMI指数从小到大进行排序,并显示这些学生的体质情况。

    注:BMI指数的计算公式为:BMI=体重(千克)除以身高(米)的平方(kg/m2)。 BMI<18.5为偏瘦(表明营养不足);BMI=18.5~24.9为体重正常;BMI=25~29.9为超重;BMI>30为肥胖。

该VB应用程序的代码如下:

Dim stuBMI(1 To 55) As Single

Dim stuName(1 To 55) As String

Private Sub Command1_Click()

    Dim k As Integer, i As Integer, j As Integer

    Dim t1 As Single, t2 As String

    Dim Results As String

    For i = 1 To 54        

        For j = i + 1 To 55

            If stuBMI(j) < stuBMI(k) then      ②    

        Next j

        If  k<>I  Then  

            t1 = stuBMI(i): stuBMI(i) = stuBMI(k): stuBMI(k) = t1

            t2 = stuName(i): stuName(i) = stuName(k): stuName(k) = t2

        End If

    Next i

List1.AddItem "姓名" + vbTab + "BMI指数" + vbTab + "结果"  

    For i = 1 To 55

        If stuBMI(i) < 18.5 Then

            Results = "偏瘦"

        ElseIf stuBMI(i) >= 18.5 And stuBMI(i) < 25 Then

            Results = "正常"

        ElseIf stuBMI(i) >= 25 And stuBMI(i) < 30 Then

            Results = "超重"

        Else

            Results = "肥胖"

        End If

        List1.AddItem stuName(i) + vbTab + str(stuBMI(i)) + vbTab + Results

    Next i

End Sub

Private Sub Form_load()

    Dim conn As New ADODB.Connection

    Dim rs As New ADODB.Recordset

    Dim strSQL As String

    Dim i As Integer

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

    conn.Open

    strSQL = "SELECT * FROM Student"

    Set rs.ActiveConnection = conn

    rs.Open strSQL

    i = 0

    Do While Not rs.EOF

        i = i + 1

        stuName(i) = rs.Fields("StuName")

        stuBMI(i) = Round(rs.Fields("Weight") / rs.Fields("height") ^ 2, 1)

        rs.MoveNext

    Loop

    rs.Close

    conn.Close

    Set rs = Nothing

    Set conn = Nothing

End Sub

  1. (1) 学生数据存入的数据库文件是
  2. (2) 程序中加框①处的代码有误,正确的VB代码是
  3. (3) 程序中划线②处应该填入的代码是
  4. (4) 该程序按BMI指数从小到大排序的过程属于算法思想。
【加试题】居民身份证号码由十七位数字本体码和一位数字校验码组成。从左至右依次为:六位地址码,八位出生日期码,三位顺序码和一位校验码。校验码生成步骤如下:

①把身份证前 17 位的每个数字和加权系数相乘并累加求和。身份证号码前17位数的加权系数见下表:

身份证号位数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

加权系数

7

9

10

5

8

4

2

1

6

3

7

9

10

5

8

4

2

②根据步骤①求得的和值,与11做取余运算得到序号,再根据序号提取校验码字符。如:所得和值除以11的余数为“0”,则对应的校验码为“1”。如下表:

序号

0

1

2

3

4

5

6

7

8

9

10

校验码

1

0

X

9

8

7

6

5

4

3

2

    若步骤②中提取的校验码和身份证号最后一位相同,则校验通过,否则校验失败。

    某人根据上述原理设计了一个身份证校验VB程序,功能如下:程序启动时从数据库student.accdb中读入全校学生身份证数据(全校共15个班级),并在列表框List1中显示,单击“校验”按钮Command1,在列表框List2中输出各班身份证号出错学生的信息和出错人数,若某班无出错学生,则不显示。程序界面如图所示。实现上述功能的VB程序如下,请回答下列问题:

  1. (1) 某人身份证号的前17位为“33900520000101007”,根据上述步骤可计算出该身份证号的第18位校验码是
  2. (2) 请在划线处填上合适的代码。

    Const max = 1000

    Dim n As Integer  '存放学生人数

    Dim sfzh(1 To max) As String, xm(1 To max) As String  

    '数组sfzh、xm分别存放学生身份证号、姓名

    Dim bj(1 To max) As Integer, flag(1 To max) As Boolean

    '数组bj、flag分别存放学生班级、身份证校验结果

    Dim cw(1 To 15) As Integer   '数组cw存放各班身份证号出错人数

    Function check(x As String) As Boolean

    '本函数功能:校验身份证号x,若校验通过返回True;否则返回False

      Dim i As Integer, sum As Integer, xh As Integer, jym As String

      Dim a(1 To 18) As Integer, w(1 To 18) As Integer

    jym = "10X98765432" : sum = 0

      For i = 18 To 2 Step -1

    a(i) = Val(Mid(x, 19 - i, 1))

      Next i

      For i = 18 To 1 Step -1

    w(i) = 2 ^ (i - 1) Mod 11

      Next i

      For i = 2 To 18

    sum = sum + a(i) * w(i)

      Next i

    xh = sum Mod 11

      If = Mid(x, 18, 1)  Then check = True Else check = False

    End Function

    Private Sub Form_Load()

      '本过程从数据库中读入指定数据到数组sfzh、xm、bj,并在List1中显示

      Dim conn As New ADODB.Connection

      Dim rs As New ADODB.Recordset

    conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source=" + App.Path + "\student.accdb"

    conn.Open

      Set rs.ActiveConnection = conn

    rs.Open "select * from stu"

    '本过程其它语句略,学生人数存变量n,数组cw各元素初值置为0

    End Sub

    Private Sub Command1_Click()

      Dim i As Integer, j As Integer

      For i = 1 To n

        If  check(sfzh(i)) Then flag(i) = True Else flag(i) = False

      Next i

      For i = 1 To 15

        For j = 1 To n

         If  bj(j) = i And flag(j) = False Then

           

          List2.AddItem sfzh(j) + "  " + xm(j)

         End If

        Next j

        If cw(i) > 0 Then

          List2.AddItem Str(i) + "班共有以上" + Str(cw(i)) + "个身份证号错误"

          List2.AddItem ""

        End If

      Next i

    End Sub

某次考试的流程为先笔试再面试,笔试成绩达到面试资格线的可以入围参加面试。入围面试的资格线根据计划录取人数的200%划定,即如果考试最终录取x人,则第2*x名选手的笔试分数为面试资格的分数线(该分若有同分者可一同参与面试)。现在编写VB程序功能如下:自动读取数据库中考生考号和笔试成绩,依次存储在数组kh(i)、cj(i)中,并显示在List1列表框中。单击“入围划线”按钮Command1,面试分数线显示在文本框Text2中,入围面试最终人数显示在Text3中,进入面试的考生的考号和笔试成绩显示在List2列表框中,如果成绩相同,则按考号由小到大的顺序显示。程序界面如图所示。

 

Dim kh(1 to 500) As string,cj(1 to 500) 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+”\BSCJ.accdb”

conn.Open

set rs.activeconnection=conn

rs.Open“select*FROM scoreinfo”

‘本过程其他代码略 End Sub

Private Sub Command1_Click()

Dim m As Integer,i As Integer,j As Integer

Dim t1 As Integer,t2 As String,flag As Boolean For i = 1 To n-1    ‘排序

For j =      ①         If cj(i)<cj(j) Then

t1 = cj(i):cj(i) = cj(j):cj(j) = t1

t2 = kh(i):kh(i) = kh(j):kh(j) = t2 Elseif cj(i) = cj(j) And kh(i) > kh(j) Then

t2 = kh(i):kh(i) = kh(j):kh(j) = t2

End If Next j

Next i

m =         ②        

If m <= n Then   ‘统计进入面试人数

i = m

flag = False

Do While        ③        If cj(i) = cj(i+1) Then

i = i+1 Else

flag = True End If

Loop

Text2.text = Str(cj(m)) Text3.text = Str(i)

For j = 1 To i

List2.AddItem kh(j) + “ ” + Str(cj(i)) Next j

Else

Text2.Text=”面试人数超过总人数了” End If

End Sub

  1. (1) 读取的数据表名为
  2. (2) (单选)可以填在①处的代码是(  )
    A . i+1 To n B . n To i+1 C . 1 To n-i
  3. (3) 请在②、③划线处填入适当的代码。

最新国际体操竞赛的评分规则简单描述如下:

①两位D组裁判分别打“难度分”,取平均值作为该参赛选手的最终难度分。

②五位E组裁判分别打“完成分”,在5个E组打分结果中,去掉一个最高分和一个最低分,然后取平均值作为该参赛选手的最终完成分。

③难度分和完成分之和,即该参赛选手的最终得分。

例如:某参赛选手打分如下:

D组裁判打分

E组裁判打分

6.5

6.9

9.5

9.0

8.3

8.8

7.6

该选手“难度分”为(6.5+6.9)/2=6.7。E组裁判打分去掉一个最高分和一个最低分之后,计算“完成分”为(9.0+8.3+8.8)/3=8.7。所以该选手最终得分为6.7+8.7=15.4分。

小杜编写一个VB程序:程序运行时从数据库读取参赛选手人数和参赛选手的打分数据,依次存储在数组a中;单击“统计”按钮,依据数组a中的相关数据统计各选手的“难度分”“完成分”和“最终得分”,并在列表框List1中输出。数组a各元素的含义如下,程序运行界面如图所示。

数组元素

数组元素的含义

a(0)

存储参赛人数n

a(1)

a(1)和a(2)为第1位选手的D组两位裁判的打分。

a(3)、a(4)、…、a(7)为第1位选手的E组五位裁判的打分

a(7)

a(8)

a(8)和 a(9)为第2位选手的D组两位裁判的打分。

a(10)、a(11)、…、a(14)为第2位选手的E组五位裁判的打分

a(14)

实现上述功能的VB程序如下,请回答下列问题:

  1. (1) 根据程序运行界面中的数据及数组a各元素的含义,数组元素a(8)和a(9)的值为(填序号:A .6.2和5.6/B .5.8和6.2/C .6.1和5.5)。
  2. (2) 分析程序,可知数据库的文件名为
  3. (3) 请在划线处填入合适的代码。

    Dim a(0 To 210) As Single ‘数组大小满足处理要求

    Dim d(1 To 30) As Single ‘依次各选手的难度分

    Dim e(1 To 30) As Single ‘依次各选手的完成分

    Dim f(1 To 30) As Single ‘依次各选手的最终得分

    Private Sub Command1_Click()

    ‘本过程从数据库读取相关数据,存储在数组a中

    Dim conn As New ADODB.Connection

     Dim rs As New ADODB.Recordset

     conn ConnectionString=“provider=Microsoft.ACE.OLEDB.12.0; data source=”+“成绩.accdb”

     conn.Open

     Set rs.ActiveConnection=conn

     ‘本过程的其他语句略

    End Sub

    Private Sub Command2_Click()

    ‘依据数组a中的相关数据统计各班级平均分

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

    Dim max As Single, min As Single, sum Single

        

    For i=1 To n

      p=(i-1)*7+1

      d(i)=(a(p)+a(p+1))/2

      sum=0

      max=a(p+2) : min=a(p+2)

      For j=p+2 To p+6

       sum=sum+a(j)

       If a(j) > max Then max=a(j)

          min=a(j)

      Next j

      e(i)=(sum-max-min)/3

      f(i)=d(i)+e(i)

    List1.AddItem Str(i)+“ ”+Str(d(i))+“ ”+Str(e(i))+“ ”+Str(f(i))

     Next i

    End Sub

小王为学校教务处编写了一个排考场座位的VB程序。考场采用“6排5列”共30人的模式。程序执行后,考生的考号与姓名显示在列表框List1中,单击“考场座位”按钮Command1,考场号与座位显示在Text1中,程序运行界面如图a所示,考生数据存放在数据库文件“kaochang.accdb”中,数据表如图b所示。

实现上述功能的VB程序如下,请回答下列问题:

  1. (1) 当“Form_Load()”事件处理过程运行结束时,变量x的值为
  2. (2) 请在横线处填入合适的代码。

    Private Sub Command1_Click()

    Dim y As Integer

    Dim start As Integer   ‘考场第1位数据元素的下标

    Dim pa As Integer     ‘数据库导入VB时学生数据下标

    Dim pb As Integer     ‘考场座位数据下标

    Dim i As Integer, j As Integer, k As Integer, m As Integer

    start=1

    pa=start

    recCount=x-1

    If recCount Mod 30 <> 0 Then

      ① 

      For i=1 To y     ‘将当前考生人数添加到30的整数倍

        recCount=recCount+1

        sName(recCount)=“”

      Next i

    End If

    For j=1 To recCount / 30

      pa=start

      pb=start

      For i=1 To 30

        kcsName(pb)=sName(pa)

        pb=pb+1

        If i Mod 5=0 Then

          pa=start+i \ 5

        Else

         ②

        End If

      Next i

      start=start+30

    Next j

    Text1.Text=""

    start=1

    For k=1 To recCount / 30

      m=start

      Text1.Text=Text1.Text+“第”+Str(k)+“考场”+vbCrLf

      ‘vbCrLf为换行标志符,实现Text1中内容换行显示

      For i=1 To 6

        For j=1 To 5

          Text1.Text=Text1.Text+“”+kcsName(m)

          m=m+1

        Next j

        Text1.Text=Text1.Text+vbCrLf

      Next i

      Text1.Text=Text1.Text+vbCrLf+vbCrLf

        ③

    Next k

    End Sub

    Private Sub form_load()

    Dim myconn As New ADODB.Connection

    Dim myrecord As New ADODB.Recordset

    myconn.ConnectionString=“provider=microsoft.ace.oledb.12.0;data source=e:\kaochang.accdb”

    myconn.Open

    strsql="select*from三中 "

    myrecord.Open strsql,myconn

      x=1

      List1.AddItem“考号  姓名”

      List1.AddItem“--------------”

    Do While Not myrecord.EOF

     ‘读取数据库数据,存入数组kh(x)、sName(x)中,代码略

      List1.AddItem kh(x)+“ ”+sName(x)

      x=x+1

      myrecord.MoveNext

    Loop

    myrecord.Close

    End Sub

【加试题】摘苹果游戏。游戏中的苹果树结了n个苹果,每个苹果有一个地面高度和摘它所需要的力气,要摘到苹果,必须具备高度和力气两个条件,每摘一个苹果都要用掉一定的力气。小林的可用力气是个有限值s,小林手伸直后能摘的最大高度为b,她可以借助的梯子的高度为a。游戏中苹果的高度和所需力气分别存储在数组h和数组c中。

程序运行界面如题图所示。运行程序后,输入梯子高度a、手伸直高度b、可用力气s的值,单击“计算”按钮(Command1),在文本框Text4中输出小林最多能摘得的苹果数ans。

  1. (1) 如图所示,树上的苹果总数为15。若将可用力气修改为90,则小林最多能摘得苹果的总数是
  2. (2) 相应程序如下,在程序划线处填入适当的语句和代码,把程序补充完整。

    Dim c(1 To 100) As Integer

    Dim h(1 To 100) As Integer

    Dim d(1 To 100) 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 + "\GameDate.accdb"

      ‘从数据库中读取n个苹果的摘取所需力气和高度存放在数组c和h中,并显示在List1中,代码略

    End Sub

    Private Sub Command1_Click()

      Dim a As Integer, b As Integer, s As Integer

    Dim i As Integer, j As Integer, m As Integer

      a = Val(Text1.Text)        ‘梯子高度

      b = Val(Text2.Text)        ‘手伸直高度

      s = Val(Text3.Text)        ‘可用力气

      m = 0

      For i = 1 To n         ‘将所有能够摘得的苹果所需力气存储到数组d中

         If  

           m = m + 1

           d(m) = c(i)

         End If

      Next

      For i = 1 To m - 1

        k = i

        For j = i + 1 To m

          If  Then k = j

        Next

        If k <> i Then

          t = d(k): d(k) = d(i): d(i) = t

        End If

     Next

      ans = 0         ‘用剩余的力气去摘最多的苹果

      For i = 1 To m

        If s >= d(i) Then

           

            ans = ans + 1

     End If

      Next

      Text4.Text = Str(ans)

    End Sub

已知数组a中存储了某次考试某一指定科目的相关数据,数组a各元素的含义如表所示:

数组元素

数组元素的含义

a(1)

存储班级数n

a(2)

从a(2)到a(n+1)依次存储1、2、…、n班学生的人数

a(n+1)

a(n+2)

从a(n+2)开始依次存储1班每个学生的单科成绩,2班每个学生的单科成绩、……、n班每个学生的单科成绩

张老师依据数组a中的相关数据编写了VB程序来统计各班平均分。

程序功能如下:在文本框Text1中输入科目名称,单击“读取数据库”按钮Command1程序从数据库读取数据;单击“开始统计”按钮Command2程序进行统计处理,结果输出在列表框List1中。程序运行界面如图所示。

  1. (1) 根据程序运行界面中的数据及数组a各元素的含义,数组元素a(5)的值为(填写数值)。
  2. (2) 请在划线处填入合适的代码。

    Dim a (1 To 600) As Integer数组大小满足处理要求 Private Sub Command1_Click ( )

    ‘本过程从数据库读取指定科目的各相关数据,存储在数组a中

    ‘本过程语句略

    End Sub

    Private Sub Command2_Click ( )

    ‘依据数组a中的相关数据统计各班级平均分

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

      Dim p As Integer, sum As Integer, aver As Single

            ①     

      p=n+2

      For i =1 To n

        sum= 0

        For j=1 To a (i+1)

                ②     

          p=p+1

        Next j

        aver= sum/a (i +1)

        List1 AddItem Str(i)+ “” n+ str(a(i+1)) + “” + Str(aver)

      Next i

    End Sub

     ② 

以下VB代码片段用于从数据库中读取数据:

Dim conn As New ADODB Connection

Dim rs As New ADODB. Recordset

conn ConnectionString =“Provider = Microsoft. ACE. OLEDB. 12.0; DATA Source =" & App. Path &"\ data accdb”

Set rs.ActiveConnection = conn

rs. Open “select * from table”

n = 0

Do While Not rs EOF

  n=n+1

  rs.MoveNext

Loop

下列对于以上代码的理解正确的有(  )

①连接的数据库文件名是“data”

②“ConnectionString”是conn对象的属性值

③查询的数据表名称是“table”

④程序运行后,变量n的值表示该数据表中记录的总数

⑤省略语句“rs. MoveNext”,程序也可以正常运行

A . ①②③④ B . ②③④ C . ③④⑤ D . ③④
小王与小李合作编写一个成绩统计的VB程序:小王编写一个过程,该过程从数据库读取某一指定科目的相关数据,存储在数组a中;小李编写一个过程,该过程依据数组a中的相关数据统计各班级平均分,小王与小李约定的数组a各元素含义如下表所示。

数组元素

数组元素的含义

a(1)

存储班级数n

a(2)

从a(2)到a(n+1)依次存储第

1、第2、……第n个班级的人数

a(n+1)

a(n+2)

从a(n+2)开始依次存储第1个班级每个学生的单科成绩、第2个班级每个学生的单科成绩、……、第n个班级每个学生的单科成绩

程序功能如下:在文本框Text1中输入科目名称,单击“读数据库”按钮Command1,程序从数据库读取数据;单击“开始统计”按钮Command2,程序进行统计处理,结果输出在列表框List1中。程序运行界面如图所示。

实现上述功能的VB程序如下,请回答下列问题:

  1. (1) 根据程序运行界面中的数据及数组a各元素的含义进行分析,数组元素a(5)的值为(填写数值)。
  2. (2) 分析程序,可知数据库的文件名为
  3. (3) 请在划线处填入合适的代码。

    Dim a(1 To 600)As Integer   '数组大小满足处理要求

    Private Sub Command 1_Click()

      '本过程由小王完成,从数据库读取指定科目的各相关数据,存储在数组a中

      Dim conn As New ADODB.Connection

      Dim rs As New ADODB.Recordset

       conn.ConnectionString =" provider = Microsoft. ACE.

       OLEDB.12.0;datasource="+"Score.Accdb"

       conn.Open

       Set rs.ActiveConnection=conn

       '本过程的其他语句略

    End Sub

    Private Sub Command 2_Click()

      '本过程由小李完成,依据数组a中的相关数据统计各班级平均分

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

      Dim p As Integer,sum As Integer,aver As Single

             ①       

      p=n+2

      For i=1 To n

        sum=0

        For j=1 To a(i+1)

                 ②    

          p=p+1

        Next j

        aver=sum/a(i+1)

        Listl. Addltem Str(i)+""+Str(a(i+1))+""+Str(aver)

      Next i

    End Sub

     ②

为促进学生学习中互帮互助,每次考后章老师都会按成绩重新编排机房上课位置,编排要求如下:

①按分数从高到低排序。若分数相同,则按学号进行升序排序。

②以班级为单位,排出从1号开始的机房座位表。章老师编写了一个位置编排功能的VB程序,在文本框Text1中输入班级名称,单击“读数据库”按钮Command1后,从数据库读取数据并显示在列表框List1中;单击“编排”按钮Command2,在列表框List2中输出学号、姓名、成绩和位置信息。运行界面如下图所示。

实现以上功能的 VB 程序如下,请回答下列问题:

  1. (1) 分析程序,可知数据库的文件名为
  2. (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       ②        Then 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

     ② ③

用Python访问Access数据库一般可分为以下几个步骤:

第一步:建立与的连接;第二步:根据需要;第三步:访问记录集,;第四步:根据需要把处理好的数据中;第五步:与数据库的连接。

下列说法正确的是(      )
A . 未优化过的选择排序和冒泡排序,比较次数肯定是相同的,所以交换次数也肯定相同 B . 对包含7个数据的有序数组a进行对分查找,平均查找次数为17/7次 C . VB 调用数据库时,rs.fields(1)指的是调用某数据表中某条记录第 1 个字段的值 D . 使用选择排序时,若某一遍排序时,并没有数据进行交换,说明数据已经有序
现有一个 VB 程序,用于读取某数据库中“book”数据表的数据,其中部分代码如下:

Dim conn As ADODB.Connection

Dim rs As New ADODB.Recordset

Dim a(1 To 100) As String

conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;data Source=" & App.Path & "\Mydata.accdb"

Set rs.ActiveConnection = conn

rs.Open "SELECT * FROM book"

n = 0

Do While Not

   

    a(n) = rs.Fields("name")

   

Loop

上述程序段中方框处可选语句为:

①n = n + 1   ②rs.MoveNext   ③rs.BOF   ④rs.EOF

则方框处语句依次可为(    )

A . ③②① B . ②①④ C . ④②① D . ④①②
班主任需要统计学生某三天在校走路强度,数据库“zoulu.acdb”的“info”表中存放了学生每天的走路步数(分别存放于字段Mon、tue、wed中),如图所示:

某VB应用程序的功能如下:程序运行时在列表框List中依次显示数据库表“info”中每个人的编号、每天的走路步数,单击“计算”按钮Command1后,在List2中依次显示每个人的编号和每个人平均走路步数(平均走路步数=三天的走路总步数/3),程序的运行结果如图所示。

代码如下:

Dim b(1 To 100)As String     '定义存储编号的数组b

Dim m(1 To 100)As single     '定义存储第一天的走路步数的数组m

Dim s(1 To 100)As single       '定义存储第二天的走路步数的数组s

Dim w(1 To 100)As single      '定义存储第三天的走路步数的数组w

Dim p(1 To 100)As Single      '定义存储平均步数的数组p

Dim n As Integer                    '定义存储人数的变量n

Private Sub Command1_Click()

    For i=1 To        

        p(i)=(m(i))+s(i)+w(i))/3

    Next i

    List2. Clear

    For i=1 To n                '在List2中显示每个人的编号和平均步数

        List2. AddItem b(i)+ "平均走路步数为"+         +"步"

    Next i

End Sub

Private Sub Form_Load()

    Dim conn As New ADOD

    A.Connection                                      '定义 Connection对象实例conn

    Dim rs as New adode. Recordset       '定义Recordset对象实例rs

    conn. Connection String="provider= Microsoft. ACE OLEDB 12.0; DATA Source=" & App. Path & "\zoulu. accdb"

    conn Open

    rs. ActiveConnection=conn

    rs Open "Select*From info"

    n=0

    Do While not rs.EOF

        n=n+1

        b(n)=rs. fields("id")

        m(n)=rs. fields("mon")

        s(n)=rs. fields("sue")

        w(n)=rs. fields("wed")

        rs. MoveNext

    Loop

    rs Close

    conn. Close

    Set conn=Nothing

    Set conn= Nothing

    List1. Clear

    For i=1 To n                        '在 List1中显示每个人的编号、每天的走路步数

        List1. AddItem b(i)+" "+Str(m(i))+" "+Str((i))+" "+Str(w(i))

    Next i

End Sub

请回答下列问题:

  1. (1) 当虚线框中的代码运行结束时,变量n的值为
  2. (2) 为实现上述功能,程序中划线处的代码为①;②
有如下VB程序段:

Dim conn As New ADODB.Connection

Dim rs As New ADODB.Recordset

conn.ConnectionString="provider=Microsoft.ACE.OLEDB.12.0;data sourc="

+App.Path+"\socre.accdb"

Conn.Open

Set rs.ActiveConnection=conn

Rs. Open"Selec*from cj"

n=1

Do While Not rs.EOF

Score(n)=rs.fields("成绩"):Name(n)=rs.fields("姓名")

n=n+1:rs.MoveNext

Loop

下列说法中不正确的是(   )

A . 定义的ADO的Connection对象实例名称是“conn” B . 连接的数据库文件名是“\socre.accdb” C . 查询的数据表名是“cj” D . 该程序段运行后,可知所查询的数据表共有n-1条记录
学校需要统计学生的作业完成数,需要将学生的完成数按从高到低显示,下列程序模拟该信息处理过程,程序在数据库stud中找到的学生信息(编号和完成次数),并将所有学生按照完成数从高到低显示。先将所有学生的编号和完成次数从数据库stud的info表中ID和finshed两字段中取出分别保存在数组a和数组b中,第i个学生的编号保存在a(i)中,对应的作业完成次数保存在b(i)中。

数据库文件“stud. accdb”信息如图所示。

程序界面如图所示,左边列表框List1中显示所有学生信息(包括编号和完成次数),单击“排序”按钮(Command),所有编号按照作业完成次数从高到低显示在列表框List2中。

代码如下:

Dim conn As New ADODB. Connection

Dim rs As New ADODB. Recordset

Dim n As Integer

Dim a(500)As String

Dim b(500)As Integer

Private Sub Fom Load()

    Dim i As Integer

    conn. Connection String="Provider=Mi-crosoft. AC

    A.OLEDB. 12.0;DATA Source="& App. Path &"\stud. accdb"

    conn Open

    Set rs. Active Connection=conn

    rs. Open "Select*From info"

    n=0

    Do While not rs.EOF            '到记录集最后一条记录后退出循环

        n=n+1

        a(n)=rs. fields("id")

        b(n)=rs. fields("finshed")

        rs. MoveNext                 '移动到下一条记录

    Loop

    For i=1 To n

        List1. AddItem a(i)+" "+Str(b(i))

    Next i

    rs. Close

    conn. Close

    Set rs= Nothing

    Set conn= Nothing

End sub

Private Sub Command1_Click()

    Dim i As Integer, j As Integer, t1 As Integer, t2 As String, k As Integer

    For i=1 To n-1             'n表示学生总数

        k=i           'k保存第i大的数,一开始假定是a(i)

        For j=i+1 To n

            If b(k)<b(j) Then k=j            '比较完成数

                ①      

            If    ②      Then

                t1=b(i): b(i)=b(k): b(k)=t1           '交换完成次数

                t2=a(i): a(i)=a(k): a(k)=t2           '交换编号

            End If

        Next j

    Next i

    For i=1 To n          '在列表框List2中输出排序结果

        Listt2. Addltem a(i)+" "+Str(b(i))

    Next i

End sub

  1. (1) 当“Form_Load()”事件处理过程运行结束时,变量n的值为
  2. (2) 加虚线框中的代码采用的排序算法为
  3. (3) 为实现上述功能,程序中划线处的代码为①;②
某校进行模拟考,现有25名学生的语数英三门课的成绩(按百分制)存储在数据库student.accdb中的数据表cj中,现取出各学生成绩存储在cj( )数组中,成绩存放如下:

运行程序,点击“数据导入”按钮后,在列表框list1中显示所有数据。点击“排序"按钮,按总分从高到低计算名次(成绩相同的名次相同),并按排名先后在列表框list2中显示,数据要求对齐。程序运行界面如图16-1所示:

  1. (1) 观察程序及界面,可知“排序”按钮的对象名为
  2. (2) 实现上述程序功能的VB程序段如下,请在划线出填入合适的代码。

    Dim cj(1 To 100) As Integer

    Dim b(1 To 301) As Integer     '分数为i的人数存入b(i)

    Private Sub Cmdl_ Click( )

        Dim conn As New ADODB.Connection

        Dim rs As New ADODB.Recordset

        conn.ConnectionString = "Provider =Microsoft.ACE.OLEDB.12.0;Data Source= " &App.Path& "\studentaccdb"

        conn.Open

        Set rs.ActiveConnection = conn

        rs.Open "SELECT*FROM cj"

        n =1

        Do While Not rs.EOF

            cj(n)= rs.Fields("语文"):cj(n+1) = rs.Fields("数学")

            cj(n+2) = rs.Fields("英语"):cj(n+3) = cj(n)+cj(n+1)+cj(n+3)

           

            rs.MoveNext

        Loop

        rs.Close:conn.Close

        '此处代码略,用来实现将数据在list1中输出

    End Sub

    Private Sub paixu_ Click( )

        Dim mc As Integer

        '预处理求b数组的值

        For j=4 To 100 Step 4

           

        Next j

        '以下程序用于计算名次并按要求对齐输出

        mc=1:b(301)=0

        List2.AddItem"语文"+"数学"+"英语"+"总分"+"名次

        List2.AddItem "------------------------------------------------"

        For i=300 To 1 Step -1

           

            If b(i) <> 0 Then

                For c=4 To 100 Step 4

                    If cj(c) = i Then

                        List2.AddItem

                    End If

                Next c

            End If

        Next i

    End Sub

    '以下函数输出时数据s时,不足7位末尾补空格

    Function gs(s As Integer) As String

        Dim cd As String

        ed = CStr(s)

        For i=1 To 7 -Len(cd)

            cd= cd+" "

        Next i

        gs = cd

    End Function

高考期间,为了提高学生的学习效率和保证膳食营养,学校开展“教室就餐”,食堂提供A/B/C/D四种套餐,学生通过网络订餐,订餐后的数据都存在数据库中,套餐字母均为大写。现需要设计一程序,在窗体加载时,读取数据库中学生的订餐情况,并按班级编号升序排列,以班级+姓名+订餐情况输出至列表框List1中,在文本框Text1中输入班级,单击命令按钮Command1统计该班级的订餐情况,程序运行如图所示。

  1. (1) 分析如下程序,可知数据库的文件名为
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Dim xm (1 To 1000) As String, bj(1 To 1000) As Integer

    Dim tc1 (1 To 1000) As String, tc2(1 To 1000) As String ,n As Integer

    Private Sub Form Load( )

    '从数据库中按班级、学号有序地读取学生的姓名、班级、中午套餐、晚上套餐,依次存入xm、bj、tc1、tc2数组中,总人数存入n中,部分代码如下,其余代码略

        Dim conn As New ADODB.Conncction

        Dim rs As New ADODB.Recordset

        conn ConncctionString = "provider=Microsoft.ACE.OLEDB.12.0;data source=" + "jiucan.accdb"

        conn.Open

        Set rs.ActiveConnection = conn

    End Sub

        Private Sub Command1_Click()

        Dim k As Integer, i As Integer, t As Integer, m As Integer, s1 As String, s2 As Integer Dim zc (1 To 4) As Integer, wc (1 To 4) As Integer      '用于统计套餐数量

        Dim bs (0 To 20) As Integer , ljs (0 To 20) As Integer

        t = Val (Text1. Text):m = 0

        For i = 1 To 4          '为数组赋初始值

            zc(i) = 0: wc(i) = 0

        Next i

        For i = 0 To 20         '为数组赋初始值

            bs(i) = 0: ljs(i) = 0

        Next i

        For i = 1 To n – 1            '按班级编号进行升序排序

           

            For j = i To n- 1

                If bj(j) < bj(k) Then k = j

            Next j

            s1 = xm(i): xm (i) = xm (k): xm (k) = s1

            s2 = bj(i): bj (i) = bj (k): bj (k) = s2

    s1 = tc1(i): tc1 (i) = tc1 (k): tc1 (k) = s1

            s1 = tc2(i): tc2 (i) = tc2 (k): tc2 (k) = s1

            bs(bj(i)) = bs(bj(i)) + 1

            If bs(bj(i)) = 1 Then

        Next i

        bs(bj(i)) = bs(bj(i)) + 1

        For i = 1 To m

           

        Next i

        For i = ljs(t) - bs(t) + 1 To ljs(t)

    zc(fx(tc1(i))) = zc(fx(tc1(i))) + 1

            wc(fx(tc2(i))) = wc(fx(tc2(i))) + 1

        Next i

        '查询班级的用餐情况,在列表框 List 中输出,代码略

    End Sub

    Function fx(a As String) As Integer

       

    End Function

某自主选车牌号系统,可以实现采用个性车牌选号码。当机动车所有人通过自编自排方式输入车牌号码,系统会进行号牌查询,如果还没有被使用,则提出信息“选车牌号码成功!”否则提示信息“车牌号码已被使用!”假设已使用车牌号码(数量小于30000个)的数据存放在数据库文件的chepai 数据表num-ber字段,选号程序的VB代码如下,程序运行时界面如图所示。机动车所有人在文本框Text1中输入自编自排车牌号码后,单击“检索”按钮Command1,在标签框Label3中显示结果。

解决此问题的算法流程图如下图所示:

相应的VB程序如下,在程序①和②划线处,填入适当的语句或表达式,把程序补充完整。

Dim cp(1 To 30000) As String

'存放已使用的车牌号码

Dim plate As String

'输入的自主编制车牌号码

Dim num As Integer

'已使用车牌号码的数量

Private Sub Command1_Click()

    Dim f As Boolean, i As Integer, j As Integer, m As Integer

    Label3. Caption=“”

    i= 1:j= num

    plate=“浙A”& Text1. Text

    f= False

    Do While (i <=j) And Not f

        m=Fix((i+j) / 2)

        If plate= cp(m) Then

            f= True

        Else

            If plate<cp(m) Then

                j=m-1

            Else

                    ①   

            End If

        End If

    Loop

    If f Then

        Label3. Caption=“车牌号码已被使用!”

    Else

        Label3. Caption=“选车牌号码成功!”

    End if

End Sub

Private Sub Form_ Load( )

    Dim conn As New ADODB. Connection,rs

    As New ADODB. Recordset

    Dim strSQL As String

    conn. ConnectionString =“Provider = Mi-crosoft. ACE. OLEDB.12. 0;Data Source=” +App. Path+“\chepai. accdb”

    conn. ( )pen

    '设置查询的SQL语句,从数据表chepai 中选取number列数据,并按升序排序。

    strSQL=“SELECT number FROM chepai order by number asc'

    Set rs. ActiveConnection= conn

    rs. Open strSQL

    num=0

    Do While     ②    

        num= num+1

        cp( num) = rs. Fields(“number”)

        rs. MoveNext

    Loop

    rs. Close

    conn. Close

End Sub

  1. (1) 程序查找的数据库文件名称是
  2. (2) 在程序划线处填入适当的语句或表达式,把程序补充完整。