1、二级 VISUAL+BASIC 机试 37 及答案解析(总分:100.00,做题时间:90 分钟)一、B1 基本操作题/B(总题数:1,分数:30.00)1.注意:下面出现的“考生文件夹”均为 c:/wexam/25160001。 请根据以下各小题的要求设计 Visual Basic 应用程序(包括界面和代码)。 (1) 在 Form1 的窗体上建立一个主菜单,标题为“操作”,名称为Op,该菜单有两个子菜单,其标题分别为“显示”和“清除”,其名称分别为 Dis 和 Clea。编写适当的事件过程,程序运行后,如果单击“操作”菜单中的“显示”命令,则在窗体上显示“等级考试”;如果单击“清除”命令,
2、则清除窗体上显示的内容。程序的运行情况如图 14-1 所示。 注意:存盘时必须存放在考生文件夹下,工程文件名为 sjt1.vbp,窗体文件名为 sjt1.frm。 (2) 在 Form1 的窗体上画一个标签,其名称为 Lab1;再画一个列表框,其名称为 L1,通过属性窗口向列表框中添加若干个项目,每个项目的具体内容不限,编写适当的事件过程。程序运行后,如果双击列表框中的任意一项,则把列表中的项目数在标签中显示出来。程序中不准使用任何变量,运行情况如图 14-2 所示。 注意:存盘时必须存放在考生文件夹下,工程文件名为 sjt2.vbp,窗体文件名为 sjt2.frm。 (分数:30.00)_二
3、、B2 简单应用题/B(总题数:1,分数:40.00)2.注意:下面出现的“考生文件夹”均为 c:/wexam/25160001。 (1) 在考生文件夹下有工程文件sjt3.vbp 及窗体文件 sjt3.frm,该程序是不完整的,请在有?号的地方填入正确内容,然后删除?及所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹。如图 14-3 所示。 本题描述如下:在名称为 Form1,标题为“调用系统对话框”的窗体上有一个文本框和六个命令按钮及一个通用对话框,通过 CommonDialog 实现对系统一些对话框的调用。请将“打开”按钮的功能补充完整,并限制打开的类型为可执行文件(
4、*.com 和*.exe),默认打开文件类型为.exe 文件。 (2) 在考生文件夹下有工程文件jft4.vbp 及窗体文件 jft4.frm,该程序是不完整的,请在有?号的地方填入正确内容,然后删除?及所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹。 本题描述如下:在窗体上有一个名为 P1 的图片框,有一个名为 C1,标题为“输入参数”的命令按钮,有两个单选按钮,名称分别是Op1 和 Op2,标题分别是“画圆环”和“画方框”。要求程序运行后,选中两个单选按钮中的一个,再点击命令按钮 C1,在弹出的输入对话框中输入相应的参数值,则在图片框上画出相应的图形。程序运行界面如图
5、 14-4 所示。 (分数:40.00)_三、B3 综合应用题/B(总题数:1,分数:30.00)3.注意:下面出现的“考生文件夹”均为 c:/wexam/25160001。 在考生文件夹下有工程文件 sjt5.vbp及窗体文件 sjt5.frm,该程序是不完整的,请在有?号的地方填入正确内容,然后删除?及所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹,相应的 dat 文件也保存到考生文件夹下,否则没有成绩。 本题描述如下: 在名称为 Form1 的窗体上有五个 Labe1 控件和两个命令按钮,数据文件worker.dat,存放工人的编号、姓名、性别和体重。按“开始”按钮
6、后,能从考生文件夹下的worker.dat 中读出数据并把体重大于平均体重的工人的所有数据写入考生文件夹下的 worker1.dat 文件中;执行完毕,“开始”按钮变成“完成”,且无效。程序运行界面如图 14-5 所示。 (分数:30.00)_二级 VISUAL+BASIC 机试 37 答案解析(总分:100.00,做题时间:90 分钟)一、B1 基本操作题/B(总题数:1,分数:30.00)1.注意:下面出现的“考生文件夹”均为 c:/wexam/25160001。 请根据以下各小题的要求设计 Visual Basic 应用程序(包括界面和代码)。 (1) 在 Form1 的窗体上建立一个主
7、菜单,标题为“操作”,名称为Op,该菜单有两个子菜单,其标题分别为“显示”和“清除”,其名称分别为 Dis 和 Clea。编写适当的事件过程,程序运行后,如果单击“操作”菜单中的“显示”命令,则在窗体上显示“等级考试”;如果单击“清除”命令,则清除窗体上显示的内容。程序的运行情况如图 14-1 所示。 注意:存盘时必须存放在考生文件夹下,工程文件名为 sjt1.vbp,窗体文件名为 sjt1.frm。 (2) 在 Form1 的窗体上画一个标签,其名称为 Lab1;再画一个列表框,其名称为 L1,通过属性窗口向列表框中添加若干个项目,每个项目的具体内容不限,编写适当的事件过程。程序运行后,如果
8、双击列表框中的任意一项,则把列表中的项目数在标签中显示出来。程序中不准使用任何变量,运行情况如图 14-2 所示。 注意:存盘时必须存放在考生文件夹下,工程文件名为 sjt2.vbp,窗体文件名为 sjt2.frm。 (分数:30.00)_正确答案:()解析:解析 在窗体上建立好控件后,先设置控件属性,再编写事件过程。Visual Basic 中,菜单被看作控件,具有属性和事件。菜单由“菜单编辑器”来创建。在窗体上打印信息通过 Print 方法方法来实现。清除在窗体上的打印的信息要通过 Cls 方法来实现Cls 方法清除运行时 Form 或 PictureBox 所生成的图形和文本:语法:Ob
9、ject.Clsobject 代表一个对象表达式。如果省略 object,则默认为当前的 Form 窗体。解题步骤:第一步:打开“菜单编辑器”,建立菜单并设置菜单属性。菜单的属性设置见表 14-1。表 14-1 控 件 属 性 设 置 值菜单 名字 标题 Op 操作菜单 名字 标题 Dis 显示菜单 名字 标题 Clea 清除第二步:编写程序代码。参考代码:Private Sub Clea_Click()ClSEnd SubPrivate Sub Dis_Click()Print “等级考试“End Sub第三步:调试并运行程序。第四步:按题目要求存盘。(2) 解析 在窗体上建立好控件后,先设
10、置控件属性,再编写事件过程。双击控件触发 DblClick 事件,ListCount 属性返回列表框中表项的数量。列表框中的表项可以通过“属性”窗口的 List 属性设置,也可以通过 AddItem 方法在程序中添加。本题是通过属性窗口来设置的。解题步骤:第一步:建立界面并设置控件属性。程序中用到的控件及其属性见表 14-2。表 14-2 控 件 属 性 设 置 值标签 Name Lab1列表框 Name L1第二步:编写程序代码。参考代码:Private Sub L1_DblClick()Lab1.Caption=L1.ListCountEnd Sub第三步:调试并运行程序。第四步:按题目要
11、求存盘。二、B2 简单应用题/B(总题数:1,分数:40.00)2.注意:下面出现的“考生文件夹”均为 c:/wexam/25160001。 (1) 在考生文件夹下有工程文件sjt3.vbp 及窗体文件 sjt3.frm,该程序是不完整的,请在有?号的地方填入正确内容,然后删除?及所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹。如图 14-3 所示。 本题描述如下:在名称为 Form1,标题为“调用系统对话框”的窗体上有一个文本框和六个命令按钮及一个通用对话框,通过 CommonDialog 实现对系统一些对话框的调用。请将“打开”按钮的功能补充完整,并限制打开的类型为可
12、执行文件(*.com 和*.exe),默认打开文件类型为.exe 文件。 (2) 在考生文件夹下有工程文件jft4.vbp 及窗体文件 jft4.frm,该程序是不完整的,请在有?号的地方填入正确内容,然后删除?及所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹。 本题描述如下:在窗体上有一个名为 P1 的图片框,有一个名为 C1,标题为“输入参数”的命令按钮,有两个单选按钮,名称分别是Op1 和 Op2,标题分别是“画圆环”和“画方框”。要求程序运行后,选中两个单选按钮中的一个,再点击命令按钮 C1,在弹出的输入对话框中输入相应的参数值,则在图片框上画出相应的图形。程序运
13、行界面如图 14-4 所示。 (分数:40.00)_正确答案:()解析:解析 文本框中显示的文本由 Text 属性设置;命令按钮的标题由 Caption 属性设置,单击命令按钮触发 Click 事件。通用对话框是一种 ActiveX 控件,通常情况下,启动 Visual Basic 后,在工具箱里没有通用对话框控件,用户必须手动将它添加到工具箱里才可以使用:限制打开对话框的文件类型应对Filter 属性进行设置。 可以通过下列步骤将通用对话框控件添加到工具箱中: 执行“工程”菜单中的“部件”命令,打开“部件”对话框; 在对话框中选择“控件”选项卡,然后在控件列表框中选择“Microsoft C
14、ommon Dialog Control 6.0”; 单击“确定”按钮,通用对话框即被添加到工具箱中。解题步骤: 第一步:编写程序代码。 程序提供的代码: Option Explicit Private Sub Commandl_Click() Dim i As Integer CommonDialog1.CancelError=True On Error GoTo Cancel CommonDialog1.Action=5 For i=1 To CommonDialog1.Copies PrintForm Next i Cancel: End Sub Private Sub Command2
15、_Click() CommonDialog1.CancelError=True On Error GoTo Cancel CommonDialog1.HelpCommand=&HB CommonDialog1.HelpFile=“C:/windows/help/windows.hlp“ CommonDialog1.Action=6 Cancel: End Sub Private Sub Command3_Click() CommonDialog1.CancelError=True On Error GoTo Cancel CommonDialog1.Action=3 Text1.ForeCol
16、or=CommonDialog1.Color Cancel: End Sub Private Sub Command4_Click() CommonDialog1.Flags=&H3& Or &H1& Or &H2& CommonDialog1.CancelError=True On Error GoTo Cancel CommonDialog1.Action=4 Text1.FontBold=CommonDialog1.FontBold Text1.FontItalic=CommonDialog1.FontItalic Text1.FontStrikethru=CommonDialog1.F
17、ontStrikethru Text1.FontName=CommonDialog1.FontName Text1.FontSize=CommonDialog1.FontSize Cancel: End Sub Private Sub Command5_Click() End End Sub Private Sub Command6_Click() CommonDialog1.CancelError=True On Error GoTo Cancel CommonDialog1.Filter=“(可执行文件*.exe) *.exe|?| (可执行文件*.com) *.com|?“ Common
18、Dialog1.FilterIndex=? CommonDialog1.Action=? Shell CommonDialog1.filename, ? Cancel: End Sub 参考代码: Option Explicit Private Sub Command1_Click() Dim i As Integer CommonDialog1.CancelError=True On Error GoTo Cancel CommonDialog1.Action=5 For i=1 To CommonDialog1.Copies PrintForm Next i Cancel: End Sub
19、 Private Sub Command2_Click() CommonDialog1.CancelError=True On Error GoTo Cancel CommonDialogl.HelpCommand=&HB CommonDialogl.HelpFile=“C:/windows/help/windows.hlp“ CommonDialogl.Action=6 Cancel: End Sub Private Sub Command3_Click() CommonDialog1.CancelError=True On Error GoTo Cancel CommonDialog1.A
20、ction=3 Text1.ForeColor=CommonDialog1.Color Cancel: End Sub Private Sub Command4_Click() CommonDialog1.Flags=&H3& Or &H1& Or &H2& CommonDialog1.CancelError=True On Error GoTo Cancel CommonDialog1.Action=4 Text1.FontBold=CommonDialog1.FontBold Text1.FontItalic=CommonDialog1.FontItalic Text1.FontStrik
21、ethru=CommonDialog1.FontStrikethru Text1.FontName=CommonDialog1.FontName Text1.FontSize=CommonDialog1.FontSize Cancel: End Sub Private Sub Command5_Click() End End Sub Private Sub Command6_Click() CommonDialog1.CancelError=True On Error GoTo Cancel CommonDialog1.Filter=_ “(可执行文件*.exe) *.exe|*.exe| (
22、可执行文件*.com) *.com|*.com“ CommonDialog1.FilterIndex=0 CommonDialog1.Action=1 Shell CommonDialog1.FileName,1 Cancel: End Sub 第二步:调试并运行程序。第三步:按题目要求存盘。 (2) 解析 程序中用到了 Circle 方法、Line 方法和 InputBox 函数。 Circle 方法在对象上画圆、椭圆或弧。 语法:Object.CircleStep(x,y),radius,color,start,end,aspect Line 方法在对象上画直线和矩形。 语法:object
23、.LineStep(x1,1)Step(x2,y2),color,BF InputBox 函数在一个对话框中显示提示,等待用户输入正文或按下按钮,并返回包含文本框内容的 String。 语法:InputBox(prompt,titledefault,xpos,ypos,helpfile,context)解题步骤: 第一步:编写程序代码。 程序提供的代码: Private Sub C1_Click() Dim a As Single Dim b As Single Dim t As Single On Error Resume Next If Op1.Value=True Then a=Inpu
24、tBox (“输入圆环的内径(输入值必须大于 0 且小于 800) “, _ “输入参数“,100) b=InputBox (“输入圆环的外径(输入值必须大于 0 且小于 900) “, _ “输入参数“,200) If ab Then t=? a=b b=t End If P1.Cls P1.FillStyle=? P1.FillColor=vbBlack Pi.Circle (1500,1000), ? P1.FillColor=vbButtonFace P1.Circle (1500,1000), a End If If Op2.Value=True Then a=InputBox (“
25、输入方框的长度(输入值必须大于 0 且小于 3000) “, _ “输入参数“,100) b=InputBox(“输入方框的宽度(输入值必须大大于 0 且小于 1800) “, _ “输入参数“,200) P1.Cls P1.Line (100, 100)-(100+a, 100+b) , , ?F End If End Sub 参考代码: Private Sub C1_Click() Dim a As Single Dim b As Single Dim t As Single On Error Resume Next If Op1.Value=True Then a=InputBox (“
26、输入圆环的内径(输入值必须大于 0 且小于 800) “, _ “输入参数“,100) b=InputBox (“输入圆环的外径(输入值必须大于 0 且小于 900) “, _ “输入参数“,200) If ab Then t=a a=b b=t End If P1.Cls P1.FillStyle=0 P1.FillColor=vbBlack P1.Circle (1500, 1000) , b P1.FillColor=vbButtonFace Pi.Circle (1500, 1000) , a End If If Op2.Value=True Then a=InputBox (“输入方
27、框的长度(输入值必须大于 0 且小于3000) “, _ “输入参数“,100) b=InputBox (“输入方框的宽度(输入值必须大于 0 且小于 1800) “, _ “输入参数“, 200) P1.Cls P1.Line (100, 100)-(100+a, 100+b) , , BF End If End Sub 第二步:调试并运行程序。 第三步:按题目要求存盘。三、B3 综合应用题/B(总题数:1,分数:30.00)3.注意:下面出现的“考生文件夹”均为 c:/wexam/25160001。 在考生文件夹下有工程文件 sjt5.vbp及窗体文件 sjt5.frm,该程序是不完整的,
28、请在有?号的地方填入正确内容,然后删除?及所有注释符(即号),但不能修改其他部分。存盘时不得改变文件名和文件夹,相应的 dat 文件也保存到考生文件夹下,否则没有成绩。 本题描述如下: 在名称为 Form1 的窗体上有五个 Labe1 控件和两个命令按钮,数据文件worker.dat,存放工人的编号、姓名、性别和体重。按“开始”按钮后,能从考生文件夹下的worker.dat 中读出数据并把体重大于平均体重的工人的所有数据写入考生文件夹下的 worker1.dat 文件中;执行完毕,“开始”按钮变成“完成”,且无效。程序运行界面如图 14-5 所示。 (分数:30.00)_正确答案:()解析:解
29、析 本题主要是考查对文件的读写,对文件进行操作之前必须打开文件,使用 Open 语句,其格式为: Open 文件名For 方式Access 存取类型锁定As#文件号Len=记录长度 Close 语句关闭Open 语句所打开的输入/输出文件。其格式为: Closefilenumberlist filenumberlist 是可选参数,为一个或多个文件号。 对文件操作完之后,必须关闭文件,使用 Close 语句关闭文件。解题步骤: 第一步:编写程序代码。 程序提供的代码: Private Sub COMEXIT_Click() End End Sub Private Sub COMSTART_Cl
30、ick() Dim i As Integer Dim total As Integer Dim aver As Single Dim num(10) , namstring(10) , sexstring(10) , wages(10) MyFile1=App.Path & “/“ & MyFile2=App.Path & “/“ & Open MyFile1 For Input As #1 Open MyFile2 For Output As #2 For i=1 To 10 Input ?, num(i) , namstring(i) , sexstring(i) , wages(i) t
31、otal=total+wages(i) Next i aver=?/10 For i=1 To 10 If ? Then Write #2, num(i) , namstring(i) , sexstring(i) , wages(i) Next i COMSTART.Caption=? COMSTART.Enabled=? End Sub 参考代码: Private Sub COMEXIT_Click() End End Sub Private Sub COMSTART_Click() Dim i As Integer Dim total As Integer Dim aver As Sin
32、gle Dim num(10) , namstring(10) , sexstring(10) , wages(10) MyFilel=App.Path & “/“ & “worker.dat“ MyFile2=App.Path & “/“ & “worker1.dat“ Open MyFilel For Input As #1 Open MyFile2 For Output As #2 For i=1 To 10 Input #1, num(i) , namstring(i) , sexstring(i) , wages(i) total=total+wages(i) Next i aver=total / 10 For i=1 To 10 If wages(i)aver Then Write #2, num(i) , namstring(i) , sexstring(i) , wages(i) Next i COMSTART.Caption=“完成“ COMSTART.Enabled=False End Sub 第二步:调试并运行程序。 第三步:按题目要求存盘。