试题

试题 试卷

logo

题型:填空题 题类:模拟题 难易度:困难

浙江省杭州市2015年高考信息技术模拟卷8

王五为学生们设计了学校食堂学生校园卡查询系统,在终端机上输入学生的校园卡卡号,可以查出该卡对应的学生姓名及相应的余额。

校园卡信息存储在一个综合的数据库“school.mdb”,其中的“Yue”数据表用来存储学生的校园卡基本信息,包括学号(num)、姓名(name)、余额(money),括号内的为对应字段名。下列VB程序用来实现根据学号查询并显示学生姓名及余额,运行界面如图所示:

数据库文件与应用程序在同一文件夹中,在文本框Text1中输入学生的学号,单击“查询”按钮,在标签Label4、Label5中分别显示学生姓名和余额。

Private Sub Command1_Click()

 Dim adocn As new connection

 Dim adors As new recordeset

 Dim str1 As string,str2 as string

 Str1=”driver=microsoft access driver(*.mdb);dbq=”&app.path&”\    ①      .mdb”

 Adon.open str1

 Str2=”select * from Yue where    ②     =’”+text1.text+”’”

 Adors.open str2,adocn,adOpenDynamic,adLockOptimistic

 If adors.eof then

  Msgbox”你输入的学号不存在!”

 Else

  Label4. caption =adors.Fields(“name”).value

       ③         =adors.Fields(“money”).value

 Endif

 Adors.close

 Adocn.close

End Sub

为了实现上述目标,在画线处填入合适的语句或表达式:

举一反三
某仓库货物查询系统,数组id保存货物编号(货物编号已经按照从小到大的顺序保存),数组n保存货物名称,数组c保存货物数量。数组中的数据信息一一对应。该系统提供3种查询方式,查询优先级最高的是按编号查询,其次是按名称查询,最低的是按数量查询(在输入多个查询条件的情况下,只按照优先级高的条件进行查询,其中按数量查询可以查询到所有货物数量小于输入值的结果)并将查询结果在list1中显示。程序界面如图2-1所示。

部分程序代码如下:

Public number As String  '货物编号

Public na As String  '货物名称

Public co As String  '货物数量

Private Sub Command1Click()

Dim flag As Integer  '查询结果标志

number = Text1.Text

na = Text2.Text

co = Text3.Text

If (number = "" And na = "" And co = "") Then MsgBox ("你还没有输入查询条件") ’第一种情况

If number <> ""Then ’第二种情况

flag = searchnum(1, n)  'n 表示总的货物种类数量

List1.AddItem id(flag) + n(flag) + c(flag)

  If flag = -1 Then MsgBox ("查询无结果,检查是否输入有误")

End If

If na <> "" Then  ‘第三种情况

flag = searchna(1, n)  'n 表示总的货物种类数量

List1.AddItem id(flag) + n(flag) + c(flag)

  If flag = -1 Then MsgBox ("查询无结果,检查是否输入有误")

End If

If co <> "" Then ‘第四种情况

flag = searchco(1, n)

If flag = 0 Then MsgBox ("查询无结果,检查是否输入有误")

End If

End Sub

Function searchnum(i, j) As Integer  '按编号查询函数

Dim m As Integer

Do While i <= j

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

If id(m) = number Then

searchnum = m: Exit Function  '查询到结果返回值并结束该函数

End If

If id(m) > number Then         Else i = m + 1

Loop

searchnum = -1

End Function

Function searchna(i, j) As Integer  '按名称查询函数

For i = 1 To j Step 1

If n(i) = na Then searchna = i: Exit Function

Next i

searchna = -1

End Function

Function searchco(i, j) As Integer  '按货物数量函数

Dim f As Integer

f = 0

For i = 1 To j Step 1

If        Then

List1.AddItem id(i) + n(i) + c(i)

f = 1

End If

Next i

searchco (f)

End Function

回答下列问题:

【加试题】编写VB程序,实现如下功能:单击“生成密文”按钮Command2,在文本框Text3中产生与每个小写字母对应的密文(每个明文字母对应1个不重复的密文字母)。在文本框Text1中输入单词字符串,单击“加密”按钮Command1后,进行逐个字符加密,加密方法:在“明文”中找到相应字符,再得到明文对应位置的密文,并在文本框Text2中显示对应密文(运行效果如图17所示)。实现上述功能的VB代码如下:

 

Dim m2 As String

Private Sub Command1Click()

Dim flag(1 To 26) As Boolean

Dim num As Integer,t As Integer

Randomize

num = 1

Text3.Text = " "

For i = 1 To 26

    flag(i) = False

Next i

Do While num <= 26

    x = Int(Rnd * 26) + 97

          ①      

    If  flag(t) = False Then

    m2 = m2 + Chr(x)

    num = num + 1

      ②       

    End If

Loop

Text3.Text = m2

End Sub

Private Sub Command2Click()

Dim s As String, m As String, result As String

Dim k As String, c As Integer

s = Text1.Text

m = "abcdefghijklmnopqrstuvwxyz"

For i = 1 To Len(s)

    k = Mid(s, i, 1)

    If  k >= "A" And k <= "Z"  Then

    k = Chr(Asc(k) + 32)

    End If

    c = 1: continue = True

    Do While       ③       

    If k = Mid(m, c, 1) Then

    continue = False

    End If

    c = c + 1

    Loop

   ④     

Next i

Text2.Text = result

End Sub

程序①处的代码是{#blank#}1{#/blank#}

程序②处的代码是{#blank#}2{#/blank#}

程序③处的代码是{#blank#}3{#/blank#}

程序④处的代码是{#blank#}4{#/blank#}

编写一个成绩查找程序,只要输入成绩,即可输出其排名、同分数的人数以及比此分高的人数。具体算法思路如下:

⑴预处理。用数组a存放不同的分值,数组b存放相同分数的人数,数组s存放高于此分数的人数,数组下标表示名次。依次从数据库读取每个学生的成绩(数据库中每个学生的成绩已降序存储,即从高到低排列),当读入数与前一个数相同时,该名次的人数加1,当读入数与前一个数不同时,名次加1,即数组下标加1,存储当前分数,求高于本分数的人数并存储。

举例:如果数据库中有一组成绩(降序):95,95,93,93,92,91,90,按上述算法处理,三个数组的最终结果如图所示。

数组/下标

1

2

3

4

5

a

95

93

92

91

90

b

2

2

1

1

1

s

0

2

4

5

6

⑵对需要查找的成绩二分查找。读入需要查找的成绩x,在数组a中二分查找成绩,若找到,输出名次、相同分数的人数和高于本分数的人数;若找不到,输出“查无此分”。

程序代码如下,在横线处填入合适的代码。

Dim rank As Integer

Dim a(1 to 1000) As Integer     ‘存放不同的分数值

Dim b(1 to 1000) As Integer     ‘存放相同分数的人数

Dim s(1 to 1000) As Integer     ‘存放高于此分数的人数

rank=0

Private Sub Form_Load()

 Dim conn As New ADODB.Connection

 Dim rs As New ADODB.Recordset

 Dim tmp As Integer, n As Integer

 tmp=-1: n=0

 conn.ConnectionString=“provider=Microsoft.ACE.OLEDB.12.0;data source=“App.Path+”Score.accdb”

 conn.open

 Set rs.ActiveConnection=conn

 rs.open “Select * from score”

 n=0

 Do While Not rs.EOF

   n=n+1

   mark=rs.fields(“成绩”)

   If mark=tmp Then      ‘当前读入分数与上一个分数相同,则对应名次的人数增加1

  b(rank)=b(rank)+1

   Else     ‘当前读入分数与上一个分数不同时

    rank={#blank#}1{#/blank#}    ‘名次增加1

    a(rank)={#blank#}2{#/blank#}   ‘存储当前分数到数组a中

    s(rank)={#blank#}3{#/blank#}   ‘求高于本分数的人数并存储至数组s

    b(rank)=1     ‘将自身统计入同分人数

   End If

     {#blank#}4{#/blank#}   ‘更新上一个分数

  rs.Movenext

 Loop

End Sub

Private Sub Command1_Click()

  Dim x As Integer, low As Integer, high As Integer, mid As Integer

  x=Val(Text1.Text)

  low=1: high=rank

  mid=(low+high)\ 2

  Do While low <=high and {#blank#}5{#/blank#}

    mid=(low+high)\ 2

    If a(mid) < x Then

      high=mid-1

    Else

      low=mid+1

    End If

  Loop

  If a(mid)=x Then

    Label1.Caption=“名次:“+mid+”同分人数:“+b(mid)+”高于此分人数:”+s(mid)

  Else

    Label1.Caption=“查无此分”

  End If

End Sub

返回首页

试题篮