试题

试题 试卷

logo

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

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

杭州市民卡是由杭州市人民政府授权发放给市民用于办理个人相关事务和享受公共服务的集成电路卡(IC卡),具有信息储存、身份识别、电子支付等功能。每位市民卡的卡号是唯一的,卡内会记录每位市民的姓名、住址、金额等信息。

        假设共有1000个市民,市民的相关信息都存储在“information.accdb”的data表中,查询程序界面如图所示。工作人员在文本框Text1中输入卡号,单击“开始查询”按钮,如果找到,就在Label1中显示卡内市民姓名和卡内余额;否则显示“查无此人”。请按要求将下列程序补充完整。

Private Sub command1_click()

Dim conn As New ADODB.Connection, rs As New ADODB.Recordset

Dim strSQL As String

Dim a,b as string ‘分别定义姓名、余额

Dim n as integer

conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + App.Path + "\information.accdb"     '打开到数据库的链接

 conn.Open

strSQL ="select xh,xm from data where '卡号=&(Text1.Text) & '" '设置查询的SQL语句

 Set rs.ActiveConnection = conn      '设置rs的ActiveConnection属性,指定与其关联的数据库链接

  rs.Open strSQL   '打开记录集,将从表information中读取的结果保存到记录集rs中

  Label1.Caption = ""

n=0

Do while not rs.EOF

       ①        

a=rs.Fields("姓名")

 b=rs.Fields("余额")

rs.movenext

loop

rs.Close

  conn.close

set rs=nothing

set conn=nothing

             ②       

if n=0 then Label1.caption="查无此人"

End Sub

(1)、程序中①划线处应填入
(2)、程序中②划线处应填入
举一反三
某次考试的流程为先笔试再面试,笔试成绩达到面试资格线的可以入围参加面试。入围面试的资格线根据计划录取人数的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

某学校开设多样化选修课程,学生可以根据个人兴趣和特长选择选修课。假设每门选修课的选课人数不超过40,学生选课的相关信息存放在数据库文件“student.accdb”的data 表中,选课查询程序运行时界面如图所示。

程序功能:在文本框Text1中输入课程号,单击“查询”按钮Command1,在列表框List1中显示选修本课程的学生信息。如果没人选修该课程显示“该课程当前无人报名”。

按此要求将程序补充完整。

Private Sub command1_click()

Dim xh(1 to 40),xm(1 to 40) As String ’学号和姓名的数组

Dim i, num as integer

 Dim conn As New ADODB.Connection,rs As New ADODB.Recordset

 Dim strSQL As String

conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;DataSource=”+App.Path+“ \      ①           ”                 ‘打开到数据库的链接

conn.Open

strSQL=”select xh,xm from     ②     where    ‘课程&(Text1.Text)&’”

‘设置查询的SQL 语句

Set rs.ActiveConnection =conn   ‘设置rs的ActiveConnection属性,指定与其关联的数据库链接

 rs.Open strSQL    ‘打开记录集,将从表student中读取的结果集保存到记录集rs中

 List1.Clear

 num=0

 Do while not rs.EOF

 num=num+1

  xh(num)= rs.Fields(“xh”)

  xm(num)= rs.Fields(“xm”)

  rs.MoveNext

 loop

 rs.Close

 conn.close

 set rs=nothing

 set conn=nothing

 For i=1 to num

list1.additem xh(i)+””+xm(i) Next i

    if num=0 then list1.additem(“该课程当前无人报名”)

End Sub

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

①两位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程序如下,请回答下列问题:

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

⑴预处理。用数组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

返回首页

试题篮