1、国家二级 VF 机试-试卷 74-1 及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.在考生文件夹下,打开 selldb 数据库,完成如下基本操作: (1)创建“客户表”(客户号,客户名,销售金额),其中:“客户号”为字符型,宽度为 4;“客户名”为字符型,宽度为 20;“销售金额”为数值型,宽度为 9(其中小数 2 位)。 (2)为第 1 小题创建的“客户表”建立一个主索引,索引名和索引表达式均为“客户号”。 (3)为“部门成本表”增加一个字段,字段名为“备注”,数据类型为字符型,宽度为 20。 (4)
2、先选择“客户表”为当前表,然后使用报表设计器中的快速报表功能为“客户表”创建一个文件名为 p_s 的报表。快速报表建立操作过程均为默认。最后,给快速报表增加一个标题,标题为“客户表一览表”。(分数:2.00)_二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.(1)打开程序文件 cylinderprg,请按要求修改程序并运行程序。 (2)以表 employeedbf 和ordersdbf 中数据为基础,使用 SQL 命令检索订单数最多的前 3 名职工的职工号、姓名和订单数,检索结果按订单数降序排序存入表 newcoundbf,同时将所用 SQL 命令存入文件
3、 newtxt 中。(分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.设计一个名为“bd2”的表单,表单的标题为“零件装配情况”。表单中有一个表格控件和两个命令按钮“查询”和“关闭”。运行表单时,单击“查询”命令按钮后。要求表格中显示产品编号“0003”所使用的零件的零件名称、规格和数量。单击“关闭”按钮关闭表单。(分数:2.00)_国家二级 VF 机试-试卷 74-1 答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.在考生文件夹下,打开 sel
4、ldb 数据库,完成如下基本操作: (1)创建“客户表”(客户号,客户名,销售金额),其中:“客户号”为字符型,宽度为 4;“客户名”为字符型,宽度为 20;“销售金额”为数值型,宽度为 9(其中小数 2 位)。 (2)为第 1 小题创建的“客户表”建立一个主索引,索引名和索引表达式均为“客户号”。 (3)为“部门成本表”增加一个字段,字段名为“备注”,数据类型为字符型,宽度为 20。 (4)先选择“客户表”为当前表,然后使用报表设计器中的快速报表功能为“客户表”创建一个文件名为 p_s 的报表。快速报表建立操作过程均为默认。最后,给快速报表增加一个标题,标题为“客户表一览表”。(分数:2.0
5、0)_正确答案:(正确答案:(1)在命令窗口执行命令: MODIFY DATABASE SELLDB ,打开 SELLDB 数据库设计器。 在数据库设计器中右击鼠标,选择【新建表】快捷菜单命令。在弹出的“新建表”对话框中单击“新建表”图标按钮,然后在弹出的“创建”对话框的“输入表名”框中输入“客户表”,单击“保存”按钮打开表设计器。 根据题意,在表设计器中逐行输入每个字段的字段名,并设置字段类型和宽度,然后单击“确定”按钮。此时系统会弹出一个对话框询问“现在输入数据记录吗?”,本题不要求录入数据,单击“否”按钮。 (2)在数据库设计器中右击刚建立的“客户表”,选择【修改】快捷菜单命令,打开“客
6、户”表设计器,在“字段”选项卡中选中“客户号”,在“索引”列中选择“升序”,然后在“索引”选项卡中修改其“类型”为“主索引”,单击“确定”按钮保存表结构修改。 (3)在命令窗口执行命令: ALTER TABLE 部门成本表 ADD 备注 C(20) ,新增表字段。 (4)在命令窗口执行命令: USE 客户表 ,打开“客户表”。 在命令窗口执行命令: CREATE REPORT P-S ,打开报表设计器,然后执行【报表】【快速报表】菜单命令,在弹出的“快速报表”对话框中单击“确定”按钮新建快速报表,预览和保存报表设计。 执行【报表】【标题总结】菜单命令,在弹出的“标题总结”对话框中分别勾选“标题
7、带区”,单击“确定”按钮可以看到报表设计器中添加了“标题”带区。 通过“报表控件”工具栏向报表的“标题”带区添加一个标签控件,并输入标签标题:客户表一览表,适当地调整标签的位置,保存报表修改。)解析:解析:本题考查了数据表的建立及修改;索引的建立;快速报表的创建。 创建数据库表时,需要先打开数据库文件,可以使用命令打开表设计器,也可以通过数据库设计器打开表设计器建立表和修改表结构。 表索引也可以在表设计器中建立,在表设计器的“字段”选项卡中可先建立一个普通索引,然后在“索引”选项卡中修改索引类型。 快速报表的建立需要在报表设计器中进行,在报表设计器中可以通过菜单命令启动建立快速报表的功能,建立
8、快速报表前应先指定报表的数据源。二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_解析:4.(1)打开程序文件 cylinderprg,请按要求修改程序并运行程序。 (2)以表 employeedbf 和ordersdbf 中数据为基础,使用 SQL 命令检索订单数最多的前 3 名职工的职工号、姓名和订单数,检索结果按订单数降序排序存入表 newcoundbf,同时将所用 SQL 命令存入文件 newtxt 中。(分数:2.00)_正确答案:(正确答案:(1)步骤 1:在命令窗口执行命令: MODIFY COMMANDcylinder ,打开cylinderpr
9、g 程序,代码如下: *本程序的功能为输入圆柱体的半径和高,计算圆柱体表面积。 *请将程序修改为函数调用方式(注意不得增删语句行)。 SET TALK OFF CLEAR LOCAL carea INPUT “请输入圆柱体的半径“ TO r INPUT “请输入圆柱体的高“ TO h DO cya WITH r,h,carea ?“圆柱体的表面积为:“,carea RETURN PROCEDURE cya PARAMETERS a,b,C LOCAL pai pai=314159 c=2*(pai*a2)+2*pai*a*b RETURN ENDPROC 修改程序中的错误行,修改后的程序如下:
10、 SET TALK OFF CLEAR LOCAL carea &定义局部变量 local INPUT “输入圆柱体的半径:“ TO r &从键盘输入一个半径值 INPUT “输入圆柱体的高:“ TO h &从键盘输入一个高值 carea=cya(r,h) &调用模块程序,转到 PROCEDURE 命令行执行程序,按值方式传递参数 ?“圆柱体的表面积是:“,carea RETURN PROCEDURE cya &过程的开始,并命名过程名为 cya PARAMETERS a,b,c &声明的行参变量被看作是模块程序中的私有变量 LOCAL pai pai=314159 c=2*(pai*a2)+
11、2*pai*a*b &计算圆柱体表面积的表达式 RETURN c &将计算的表达式值返回上级模块 ENDPROC 步骤 2:保存文件修改,在命令窗口执行命令: DO YZTPRG ,执行程序文件。 (2)步骤 1:在命令窗口执行命令: MODIFY FILE new ,打开文本编辑器编写 SQL 命令。 步骤 2:在编辑器中输入如下程序代码(以下程序是通过查询设计器生成): SELECT TOP 3 Employee职工号,Employee姓名,COUNT(*)订单数; FROM employee INNER JOIN orders; ON Employee职工号=Orders职工号; GRO
12、UP BY Employee职工号; ORDER BY 3 DESC; INTO TABLE newcoundbf 步骤3:在命令窗口执行命令:DO NEWTXT,执行文件(注意:执行文件时,文件后缀名僦不能缺省)。)解析:解析:(1)本题主要考查的是模块的定义和调用。模块是一个相对独立的程序段,它可以被其他模块所调用,也可以去调用其他的模块。通常,把被其他模块调用的模块称为子程序,把调用其他模块而没有被其他模块调用的模块称为主程序。题中给出了两个模块,其中,上面的一部分,即第一个“RETURN”前面的代码是主程序,下面的模块 cya 作为子程序被主程序调用。模块调用的格式有两种:一种是使用D
13、O 命令:DO过程名WITH实参 1,实参 2,.,本题中使用的就是这种方法:“DO cya WITH r,h,carea”,其中 cya 是调用的子程序名,r、h、carea 是传递给子程序的实参,分别代表半径、高和表面积;而在子程序 cya 中则定义了 a、b、c 三个变量作为行参对应接收主程序传递过来的实参,并计算出表面积的值 c。在这种方法调用中,当实参为变量时,将按址传递,即不是将实参的值传递给形参,而是将存放实参的内存中的存储单元的地址传递给形参,因此形参和实参具有相同的存储单元地址,也就是说,形参和实参共用同一存储单元,实际上是同一个变量,这时,在调用子程序时,如果形参的值发生了
14、改变,那么对应的实参的值也将随着改变。故在本题中,当子程序结束时,求出的 c 的值即是主程序中carea 的值。另一种调用方法是函数调用的方法,格式为:过程名(实参 1,实参 2,)。在这种调用方式中,默认情况下都是按值传递,即系统计算出实参的值,并把它们赋值给相应的行参变量。这样,当子程序结束时,行参变量被释放,计算的结果将会随行参的消失而消失,而不能将运算后形参的值再传递给实参,实参的值并不会改变。所以,在本题中,当用函数调用方式时,要想在主程序中输出carea 的值,应该在子程序的最后返回计算的表面积值 C。而在主程序中,应当将调用函数返回的值赋值给 carea 变量,即“carea=a
15、rea(r,h)”这时,实参就变成了两个:r、h,而子程序的行参有三个:a、b、c。这样是可以的。我们说在调用模块时,系统会自动把实参一一传递给对应的行参,行参的数目不能少于实参的数目,因为传递过来的每一个实参都要有对应的行参接收,如果行参的数目比实找不到地址的信件一样,不知该送去哪里,这时系统就会产生运行时错误。但是,行参的数目可以多于实参的数目,这时,多余的行参变量取初值逻辑假(F)。 (2)本题要求利用 SQL 语句进行查询,用到了 employ 和order 两张表,可以使用联接查询。因为要查找订单数最多的前两名职工,应该按职工号分组,并求出每一组中记录的个数,即是每个职工的订单数,要
16、分别使用 group by 短语和 count()计数函数;另外,因为只查找最多的前两名,应该按降序排序,并使用 top 短语;将查询结果保存在永久表中,应使用 INTO TABLE 短语。三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_解析:6.设计一个名为“bd2”的表单,表单的标题为“零件装配情况”。表单中有一个表格控件和两个命令按钮“查询”和“关闭”。运行表单时,单击“查询”命令按钮后。要求表格中显示产品编号“0003”所使用的零件的零件名称、规格和数量。单击“关闭”按钮关闭表单。(分数:2.00)_正确答案:(正确答案:选择【文件】【新建】命令,选择“表单”,单击“新建文件”按钮打开表单设计器,将 Caption 属性值修改为“零件装配情况”;单击表单控件工具栏上的“命令按钮”控件图标,为表单添加两个命令按钮 Command1、Command2;单击表单控件工具栏上的“表格”控件图标,再添加一个表格控件。 分别选择两个命令按钮,在按钮属性窗口中将命令按钮 Command1 的 Caption 属性值修改为“查询”,将命令按钮 Command2 的 Caption 属性值修改为“关闭”,如图 71-1 所示。双击“关闭”命令按钮,在 Click 事件中输入代码:ThisFormRelease,用来关闭表单。 )解析: