信息技术必修2第九单元模拟演练6_第1页
信息技术必修2第九单元模拟演练6_第2页
信息技术必修2第九单元模拟演练6_第3页
信息技术必修2第九单元模拟演练6_第4页
信息技术必修2第九单元模拟演练6_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2020版3年高考2年模拟电子资源第6节VB访问Access数据库模拟演练1.最新国际体操竞赛的评分规则简单描述如下:两位D组裁判分别打“难度分”,取平均值作为该参赛选手的最终难度分。五位E组裁判分别打“完成分”,在5个E组打分2果中,去掉一个最高分和一 个最低分,然后取平均值作为该参赛选手的最终完成分。难度分和完成分之和,即该参赛选手的最终得分。例如:某参赛选手打分如下:D组裁判打E组裁判打分分6.56.99.59.08.38.87.6该选手“难度分”为(6.5+6.9)/2=6.7 。E组裁判打分去掉一个最高分和一个最 低分之后,计算“完成分”为(9.0+8.3+8.8)/3=8.7。所以

2、该选手最终得分为6.7+8.7=15.4 分。小杜编写一个 VB程序:程序运行时从数据库读取参赛选手人数和参赛选手的打 分数据,依次存储在数组a中;单击“统计”按钮,依据数组a中的相关数据统计 各选手的“难度分” “完成分”和“最终得分”,并在列表框List1中输出。数 组a各元素的含义如下,程序运行界面如图所示。数组数组元素的含义元素a(0)存储参赛人数na(1)十入八a(1)和a(2)为第1位选手的D组两位裁判的打分。a(3)、a(4)、a为第1位选手的E组五位裁判的打分a(8)十一,、山一八a(8)和a(9)为第2位选手的D组两位裁判的打分。a(10)、a(11)、a(14)为第2位选手

3、的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)分析程序,可知数据库的文件名为 。请在划线处填入合适的代码。Dim a(0 To 210) As SingleDim d(1 To 30) As SingleDim e(1 To 30) As SingleDim f(1 To 30) As Single'数组大小满足处理要求'依次各选手的难度分'依次各选手的完成分'依次各

4、选手的最终得分Private Sub Command1_Click()'本过程从数据库读取相关数据,存储在数组a中Dim conn As New ADODB.ConnectionDim rs As New ADODB.Recordsetconn ConnectionStri ng= "provider=Microsoft.ACE.OLEDB.12.0; data source=" + "成绩.accdb”conn.OpenSet rs.ActiveConnection=conn'本过程的其他语句略End SubPrivate Sub Command

5、2_Click()'依据数组a中的相关数据统计各班级平均分Dim i As Integer, j As Integer, n As Integer, p As IntegerDim max As Single, min As Single, sum SingleFor i=1 To n p=(i-1)*7+1 d(i)=(a(p)+a(p+1)/2 sum=0max=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 je(i)=(sum-max-min

6、)/3f(i尸d(i)+e(i)List1.AddItem Str(i)+ “ " +Str(d(i)+“ " +Str(e(i)+“ " +Str(f(i)Next iEnd Sub答案(1)C成绩.accdb(3) n=a(0)If a(j)<min Then解析 本题综合考查算法的程序实现和 VB访问数据库。(1)根据程序运行界面中 的数据及数组a各元素的含义,知数组元素a(8)和a(9)的平均值为5.8分,也就 是第二位选手的难度分为5.8分,只有C选项的平均分为5.8分。(2)数据库的文 件名的扩展名格式为“ accdb”,通过分析数据库连接部分代

7、码,容易找出数据库 的文件名为“成绩.accdb”。(3)变量n代表参赛选手的人数,根据题意,数组 元素a(0)为参赛选手人数,所以需要将数组元素a(0)的值赋给变量n,即n=a(0); 通过分析得知变量min代表五位E组裁判打“完成分”的最低分。通过连续求 数组中最值的算法得出处答案为If a(j)<min Then 。2.某单位招考公务员,2010年和2011年分别有4 020名和2 000名考生报名,下 列VB程序用于统计两次考试都参加的考生信息。程序界面设计如图所示,2010年和2011年的考生信息分别显示在 List1和List2中,点击“统计”按钮,在 List3中显示两次考

8、试都参加的考生信息和总人数。(1)实现上述功能的VB程序如下,请在横线处填入合适代码。Dim a (1 To 4020 )As StringDim b (1 To 2000 )As StringPrivate Sub Form_Load()Dim conn As New ADODB.ConnectionDim rs As New ADODB.RecordsetDim constr As stringconstr= "Provider=Microsoft.ace.OLEDB.12.0; ”constr=constr &"Data Source= " &

9、; App.Path+ “KaoSheng.accdb”conn.ConnectionString=constrconn.open()Dim sql As String'将参加2010年下半年考试的考生的身份证号码按升序存放在a数组中sql= "select * from kaoshengInfo where year= '2010' order by sfzh力ascrs.Open sql,conni=0Do While Not rs.EOFi=i+1a(i)=rs( “sfzh ” )List1.additem(a(i)rs.MoveNextLoop

10、9;将参加2011年下半年考试的考生的身份证号码按升序存放在b数组中sql= "select * from kaoshengInfo where year= '2011' order by sfzh asc” rs.Open sql,conn i=0Do While Not rs.EOFi=i+1b(i)=rs(“sfzh ” )List2.additem(b(i)rs.MoveNextLooprs.CloseEnd SubPrivate Sub Command1_Click ()Dim bot As Integer , top As Integer , m As I

11、ntegerDim i As Integer ,ans As Integerans=0For i=1 To 2000bot=1Do While bot <=topm=Fix ( ( bot+top ) / 2 )If a ( m )=b ( i ) ThenList3.AddItem a ( m )Exit DoElseIf Thentop=m-1Elsebot=m+1End IfLoopNext iList3.AddItem“总计” +str(ans)+ “人次”End Sub分析上述代码,在数据库中用于存放考试信息的数据表名称答案(1)top=4000 ans=ans+1 a(m)&

12、gt;b(i)(2) kaoshengInfo解析 本题考查数据库的使用和对分查找。(1)题目中需要找出两年都参加的人数,采取的做法是枚举考生较少的一年的人, 也就是b数组,同时利用对分法去验证枚举到的人在另一年 (a数组中)是否存在。 对分的上界为bot,下界为top,分别为1和4 000,若查找到则输出并将ans力口 1, 否则当查找值b(i)小于中间值a(m)时,改变下界,是一个标准的对分查找程序。(2)注意到程序中的 “ select * from kaoshengInfo where year= '2011' order by sfzh asc "。这是数据

13、库查询语句,表示从kaoshengInfo这张数据表中查 询,where year= '2011'表示查询所有 2011年的记录。3.小王为学校教务处编写了一个排考场座位的VB程序。考场采用“6排5歹共30人的模式。程序执行后,考生的考号与姓名显示在列表框 List1中,单击“考场座位”按钮Command传场号与座位显示在 Text1中,程序运行界面如图a所示,考生数据存放在数据库文件“ kaochang.accdb ”中,数据表如图b所示。实现上述功能的VB程序如下,请回答下列问题: 当"Form_Load()”事件处理过程运行结束时,变量x的值为(2)请在横线处填

14、入合适的代码。Private Sub Command1_Click()Dim y As IntegerDim 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 Integerstart=1pa=startrecCount=x-1If recCount Mod 30 <> 0 ThenFor i=1 To y '将当前考生人数添加到

15、30的整数倍recCount=recCount+1sName(recCount尸Next iEnd IfFor j=1 To recCount / 30pa=startpb=startFor i=1 To 30kcsName(pb)=sName(pa)pb=pb+1If i Mod 5=0 Thenpa=start+i 5ElseEnd IfNext istart=start+30Next jTextl.Text="" start=1For k=1 To recCount / 30m=startText1.Text=Text1.Text+ “第” +Str(k)+ “考场”

16、 +vbCrLf 'vbCrLf为换行标志符,实现Textl中内容换行显示For i=1 To 6For j=1 To 5Text1.Text=Text1.Text+ "" +kcsName(m)m=m+1Next jText1.Text=Text1.Text+vbCrLfNext iText1.Text=Text1.Text+vbCrLf+vbCrLfNext kEnd SubPrivate Sub form_load()Dim myconn As New ADODB.ConnectionDim myrecord As New ADODB.Recordsetmyc

17、onn.ConnectionString= "provider=microsoft.ace.oledb.12.0;data source=e:kaoch ang.accdb”myconn.Openstrsql="select*from 三中"myrecord.Open strsql,myconnx=1List1.AddItem ”考号 姓名”List1.AddItem " ”Do While Not myrecord.EOF'读取数据库数据,存入数组kh(x)、sName(x)中,代码略Listl.AddItem kh(x)+ “ "

18、+sName(x) x=x+1myrecord.MoveNextLoopmyrecord.CloseEnd Sub答案43(2)y=30-recCount Mod 30pa=pa+6 start=start+30解析(1)数据库名称是kaochang.accdb,数据表名称是“三中”,注意数据表 是没有扩展名的。变量x记录读取到的学生数据的数组下标,当x=42时,Do While Not myrecord.EOF是指到数据表的最后一条记录后退出循环,当前条件成立,还 在数据表内,所以继续执行,x=x+1,x为43,跳出循环。 If recCount Mod 30 <> 0 Theny=30-recCount Mod 30For i=1 To yrecCount=recCount+1sName(recCount)=""Next iEnd If选择嵌套循环结构的作用:首先判断学生人数是不是 30的倍数,若不是,求出相 差人数,通过循环结构将加入的数组元素赋值为空字符串。 If i Mod 5=0 Thenpa=start+i 5Elsepa=pa+6End If本段选择结构的作用:当i不是5的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论