高考浙江版高考信息技术 模拟演练 20.docx

上传人:b****5 文档编号:29809724 上传时间:2023-07-27 格式:DOCX 页数:11 大小:87.96KB
下载 相关 举报
高考浙江版高考信息技术 模拟演练 20.docx_第1页
第1页 / 共11页
高考浙江版高考信息技术 模拟演练 20.docx_第2页
第2页 / 共11页
高考浙江版高考信息技术 模拟演练 20.docx_第3页
第3页 / 共11页
高考浙江版高考信息技术 模拟演练 20.docx_第4页
第4页 / 共11页
高考浙江版高考信息技术 模拟演练 20.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

高考浙江版高考信息技术 模拟演练 20.docx

《高考浙江版高考信息技术 模拟演练 20.docx》由会员分享,可在线阅读,更多相关《高考浙江版高考信息技术 模拟演练 20.docx(11页珍藏版)》请在冰豆网上搜索。

高考浙江版高考信息技术 模拟演练 20.docx

高考浙江版高考信息技术模拟演练20

第6节 VB访问Access数据库

模拟演练

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

①两位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)根据程序运行界面中的数据及数组a各元素的含义,数组元素a(8)和a(9)的值为    (填序号:

A.6.2和5.6/B.5.8和6.2/C.6.1和5.5)。

 

(2)分析程序,可知数据库的文件名为    。

 

(3)请在划线处填入合适的代码。

Dima(0To210)AsSingle’数组大小满足处理要求

Dimd(1To30)AsSingle’依次各选手的难度分

Dime(1To30)AsSingle’依次各选手的完成分

Dimf(1To30)AsSingle’依次各选手的最终得分

PrivateSubCommand1_Click()

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

DimconnAsNewADODB.Connection

 DimrsAsNewADODB.Recordset

 connConnectionString=“provider=Microsoft.ACE.OLEDB.12.0;datasource=”+“成绩.accdb”

 conn.Open

 Setrs.ActiveConnection=conn

 ’本过程的其他语句略

EndSub

PrivateSubCommand2_Click()

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

DimiAsInteger,jAsInteger,nAsInteger,pAsInteger

DimmaxAsSingle,minAsSingle,sumSingle

  ①   

Fori=1Ton

  p=(i-1)*7+1

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

  sum=0

  max=a(p+2):

min=a(p+2)

  Forj=p+2Top+6

   sum=sum+a(j)

   Ifa(j)>maxThenmax=a(j)

     ②  min=a(j) 

  Nextj

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

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

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

 Nexti

EndSub

答案 

(1)C

(2)成绩.accdb

(3)①n=a(0) ②Ifa(j)

解析 本题综合考查算法的程序实现和VB访问数据库。

(1)根据程序运行界面中的数据及数组a各元素的含义,知数组元素a(8)和a(9)的平均值为5.8分,也就是第二位选手的难度分为5.8分,只有C选项的平均分为5.8分。

(2)数据库的文件名的扩展名格式为“accdb”,通过分析数据库连接部分代码,容易找出数据库的文件名为“成绩.accdb”。

(3)①变量n代表参赛选手的人数,根据题意,数组元素a(0)为参赛选手人数,所以需要将数组元素a(0)的值赋给变量n,即n=a(0);②通过分析得知变量min代表五位E组裁判打“完成分”的最低分。

通过连续求数组中最值的算法得出②处答案为Ifa(j)

2.某单位招考公务员,2010年和2011年分别有4020名和2000名考生报名,下列VB程序用于统计两次考试都参加的考生信息。

程序界面设计如图所示,2010年和2011年的考生信息分别显示在List1和List2中,点击“统计”按钮,在List3中显示两次考试都参加的考生信息和总人数。

(1)实现上述功能的VB程序如下,请在横线处填入合适代码。

Dima(1To4020) As String

Dimb(1To2000) As String

Private Sub Form_Load()

DimconnAsNewADODB.Connection

DimrsAsNewADODB.Recordset

DimconstrAsstring

constr=“Provider=Microsoft.ace.OLEDB.12.0;”

constr=constr&“DataSource=”&App.Path+“\data\KaoSheng.accdb”

conn.ConnectionString=constr

conn.open()

DimsqlAsString

’将参加2010年下半年考试的考生的身份证号码按升序存放在a数组中

sql=“select*fromkaoshengInfo where year=‘2010’orderbysfzhasc”

rs.Opensql,conn

i=0

DoWhileNotrs.EOF

 i=i+1

 a(i)=rs(“sfzh”)

 List1.additem(a(i))

 rs.MoveNext

Loop

’将参加2011年下半年考试的考生的身份证号码按升序存放在b数组中

sql=“select*fromkaoshengInfo whereyear=‘2011’orderbysfzhasc”

rs.Opensql,conn

i=0

DoWhileNotrs.EOF

 i=i+1

 b(i)=rs(“sfzh”)

 List2.additem(b(i))

 rs.MoveNext

Loop

rs.Close

EndSub

PrivateSubCommand1_Click()

Dim bot AsInteger,top As Integer,m As Integer

Dim i As Integer,ans As Integer

ans=0

 For i=1 To 2000

  bot=1

    ①   

  Do While bot<=top

    m=Fix((bot+top)/2)

    If a(m)=b(i) Then

      List3.AddItem a(m)

        ②   

      Exit Do

    ElseIf  ③   Then 

      top=m-1

    Else

      bot=m+1

    EndIf

  Loop

 Next i

 List3.AddItem“总计”+str(ans)+“人次”

End Sub

(2)分析上述代码,在数据库中用于存放考试信息的数据表名称是       。

 

答案 

(1)①top=4000 ②ans=ans+1 ③a(m)>b(i) 

(2)kaoshengInfo

解析 本题考查数据库的使用和对分查找。

(1)题目中需要找出两年都参加的人数,采取的做法是枚举考生较少的一年的人,也就是b数组,同时利用对分法去验证枚举到的人在另一年(a数组中)是否存在。

对分的上界为bot,下界为top,分别为1和4000,若查找到则输出并将ans加1,否则当查找值b(i)小于中间值a(m)时,改变下界,是一个标准的对分查找程序。

(2)注意到程序中的“select*fromkaoshengInfo whereyear=‘2011’orderbysfzhasc”。

这是数据库查询语句,表示从kaoshengInfo这张数据表中查询,whereyear=‘2011’表示查询所有2011年的记录。

3.小王为学校教务处编写了一个排考场座位的VB程序。

考场采用“6排5列”共30人的模式。

程序执行后,考生的考号与姓名显示在列表框List1中,单击“考场座位”按钮Command1,考场号与座位显示在Text1中,程序运行界面如图a所示,考生数据存放在数据库文件“kaochang.accdb”中,数据表如图b所示。

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

(1)当“Form_Load()”事件处理过程运行结束时,变量x的值为     。

 

(2)请在横线处填入合适的代码。

PrivateSubCommand1_Click()

DimyAsInteger

DimstartAsInteger   ’考场第1位数据元素的下标

DimpaAsInteger’数据库导入VB时学生数据下标

DimpbAsInteger’考场座位数据下标

DimiAsInteger,jAsInteger,kAsInteger,mAsInteger

start=1

pa=start

recCount=x-1

IfrecCountMod30<>0Then

     ①    

  Fori=1Toy  ’将当前考生人数添加到30的整数倍

    recCount=recCount+1

    sName(recCount)=“”

  Nexti

EndIf

Forj=1TorecCount/30

  pa=start

  pb=start

  Fori=1To30

    kcsName(pb)=sName(pa)

    pb=pb+1

    IfiMod5=0Then

      pa=start+i\5

    Else

         ②    

    EndIf

  Nexti

  start=start+30

Nextj

Text1.Text=""

start=1

Fork=1TorecCount/30

  m=start

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

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

  Fori=1To6

    Forj=1To5

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

      m=m+1

    Nextj

    Text1.Text=Text1.Text+vbCrLf

  Nexti

  Text1.Text=Text1.Text+vbCrLf+vbCrLf

     ③    

Nextk

EndSub

PrivateSubform_load()

DimmyconnAsNewADODB.Connection

DimmyrecordAsNewADODB.Recordset

myconn.ConnectionString=“provider=microsoft.ace.oledb.12.0;datasource=e:

\kaochang.accdb”

myconn.Open

strsql="select*from三中"

myrecord.Openstrsql,myconn

 x=1

 List1.AddItem“考号  姓名”

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

DoWhileNotmyrecord.EOF

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

 List1.AddItemkh(x)+“”+sName(x)

 x=x+1

 myrecord.MoveNext

Loop

myrecord.Close

EndSub

答案 

(1)43

(2)①y=30-recCountMod30

②pa=pa+6

③start=start+30

解析 

(1)数据库名称是kaochang.accdb,数据表名称是“三中”,注意数据表是没有扩展名的。

变量x记录读取到的学生数据的数组下标,当x=42时,DoWhileNotmyrecord.EOF是指到数据表的最后一条记录后退出循环,当前条件成立,还在数据表内,所以继续执行,x=x+1,x为43,跳出循环。

(2)①IfrecCountMod30<>0Then

    y=30-recCountMod30

    Fori=1Toy

      recCount=recCount+1

      sName(recCount)=""

    Nexti

    EndIf

选择嵌套循环结构的作用:

首先判断学生人数是不是30的倍数,若不是,求出相差人数,通过循环结构将加入的数组元素赋值为空字符串。

②IfiMod5=0Then

  pa=start+i\5

 Else

  pa=pa+6

 EndIf

本段选择结构的作用:

当i不是5的倍数时,是考场中的一行,根据题图示意,应该下标加6。

③Fork=1TorecCount/30

  m=start

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

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

  Fori=1To6

  ’此处略

  Nexti

  Text1.Text=Text1.Text+vbCrLf+vbCrLf

  start=start+30

 Nextk

此处程序段的作用:

分考场显示学生姓名,Fork=1TorecCount/30表示根据考场个数确定循环次数。

第2考场时,开始的kcsName数组下标加30。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1