1、国家二级 VF 机试-试卷 75-2 及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.在考生文件夹下完成如下操作: 1新建一个名为“学生”的数据库。 2将“学生”、“选课”、“课程”3 个自由表添加到新建的数据库“学生”中。 3通过“学号”字段为“学生”表和“选课”表建立永久联系。 4为上面建立的联系设置参照完整性约束:更新和删除规则为“级联”,插入规则为“限制”。(分数:2.00)_二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.在考生文件夹下,打开 Ecommer
2、ce 数据库,完成如下简单应用: 1使用报表向导建立一个简单报表。要求选择客户表 Customer 中所有字段;记录不分组;报表样式为随意式;列数为“1”,字段布局为“列”,方向为“纵向”;排序字段为“会员号”,升序;报表标题为“客户信息一览表”;报表文件名为myreport。 2使用命令建立一个名称为 sb_view 的视图,并将定义视图的命令代码存放到命令文件pview.prg 中。视图中包括客户的会员号(来自 Customer 表)、姓名(来自 Customer 表)、客户所购买的商品名(来自 article 表)、单价(来自 OrderItem 表)、数量(来自 OrderItem 表
3、)和金额(OrderItem.单价*OrderItem.数量),结果按会员号升序排序。(分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.设计名为 mystock 的表单(控件名,文件名均为 mystock)。表单的标题为:“股票持:有情况”。表单中有两个文本框(text1 和 text2)和两个命令按钮即“查询”(名称为 Command1)和“退出”(名称为Command2)。 运行表单时,在文本框 text1 中输入某一股票的汉语拼音,然后单击“查询”,则 text2 中会显示出相应股票的持有数量。 单击“退出”按钮关闭表单。(分数:2
4、.00)_国家二级 VF 机试-试卷 75-2 答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.在考生文件夹下完成如下操作: 1新建一个名为“学生”的数据库。 2将“学生”、“选课”、“课程”3 个自由表添加到新建的数据库“学生”中。 3通过“学号”字段为“学生”表和“选课”表建立永久联系。 4为上面建立的联系设置参照完整性约束:更新和删除规则为“级联”,插入规则为“限制”。(分数:2.00)_正确答案:(正确答案:在 Visual FoxPro 主窗口中按下组合键 Ctrl+N,系统弹出“新建”对话
5、框,在文件类型中选择“数据库”,单击“新建文件”按钮,在弹出的对话框的“数据库名”处输入“学生”,单击“保存”按钮。 2打开考生文件夹下的“学生”数据库,打开数据库菜单选择“添加表(A)”,在弹出的“打开”对话框中,选定考生文件夹下的“学生”表,再单击“确定”按钮即可。这样表“学生”就添加到了“学生”数据库中,用同样的方法,将“选课”表、“课程”表也添加到“学生”数据库中。 3在数据库设计器中选中表“学生”,在主菜单中选择“修改(Y)”,弹出表设计器,选择表设计器“索引”标签,在索引名列中填入“学号”,在索引类型列中选择“主索引”,在索引表达式列中填入“学号”,单击“确定”按钮以保存表结构。用
6、类似的方法为“选课”表建立必要的索引。在数据库设计器中,选中“学生”表中的索引“学号”将其拖动到表“选课”的“学号”的索引上并松开,这样两个表之间就建立起了永久联系。 4在第 3 题建立好永久联系之后,在“学生”表和“选课”表的“学号”索引之间有一条线,单击这条表示两个表之间联系的线(线会加粗),此时在主菜单中选择“数据库”中的“编辑参照完整性(I)”,系统弹出“参照完整性生成器”对话框,在“更新规则”标签中,选择“级联”规则,在“删除”规则中选择“级联”,在“插入规则”中选择“限制”,单击“确定”按钮保存所编辑的参照完整性。)解析:二、简单应用题(总题数:2,分数:4.00)3.简单应用题(
7、)(分数:2.00)_解析:4.在考生文件夹下,打开 Ecommerce 数据库,完成如下简单应用: 1使用报表向导建立一个简单报表。要求选择客户表 Customer 中所有字段;记录不分组;报表样式为随意式;列数为“1”,字段布局为“列”,方向为“纵向”;排序字段为“会员号”,升序;报表标题为“客户信息一览表”;报表文件名为myreport。 2使用命令建立一个名称为 sb_view 的视图,并将定义视图的命令代码存放到命令文件pview.prg 中。视图中包括客户的会员号(来自 Customer 表)、姓名(来自 Customer 表)、客户所购买的商品名(来自 article 表)、单价
8、(来自 OrderItem 表)、数量(来自 OrderItem 表)和金额(OrderItem.单价*OrderItem.数量),结果按会员号升序排序。(分数:2.00)_正确答案:(正确答案:1执行“文件”菜单中的“新建”命令,在出现的“新建”对话框中选中“报表”后按“向导”按钮,将出现向导选取对话框,在该对话框中选取“报表向导”后按“确定”按钮,将会出现报表向导的“步骤 1-字段选取”对话框。在该对话框中的“数据库和表”下面的列表框中选中Customer 表,单击“”按钮把 Customer 表中的所有字段移到“选定字段”列表框中。单击“下一步”按钮,将会出现报表向导的“步骤 2-分组记
9、录”对话框。该对话框不需设置,直接按“下一步”按钮,将会出现报表向导的“步骤 3-选择报表样式”对话框。在该对话框中选择报表样式为“随意式”,然后单击“下一步”按钮,将会出现报表向导的“:步骤 4-定义报表布局”对话框,在该对话框中设置列数为1,字段布局为列,方向为纵向,然后单击“下一步”按钮,将会出现报表向导的“步骤 5-排序记录”对话框。在该对话框中的“可用的字段或索引标识”列表框中选中“会员号”字段,按“添加”按钮,把选定的“会员号”字段添加到“选定字段”列表框中,选中“升序”单选钮,然后单击“下一步”按钮,将会出现报表向导的“步骤 6 一完成”对话框。在该对话框中输入报表标题为“客户信
10、息一览表”,然后按“完成”按钮。此时将出现“另存为”对话框,输入文件名为“myreport”后按“保存”按钮,报表设计完成。 2建立视图的命令格式为 CREATE VIEW 视图名 AS SELECT 语句 本题建立视图的 SELECT 语句中涉及 3 个表,应在这 3 个表之间建立连接。Customer 表与 OrderItem 表之间可根据客户号字段值相等进行连接,OrderItem 表和 Article 表之间应根据商品号字段值相等进行连接。视图中还包含一个计算字段“金额”,可定义为“Orderitem.数量*Orderitem.单价 AS 金额”。排序可用 ORDER BY 子句来实现
11、。 故本题的创建视图命令如下: CREATE VIEW sb_view AS; SELECT Customer.会员号,Customer.姓名,Article.商品名,Orderitem.单价,; Orderitem.数量,Orderitem.数量 * Orderitem.单价 AS 金额; FROM ecommerce! customer INNER JOIN ecommerce! orderitem; INNER JOIN ecommerce! article; ON Article.商品号=Orderitem.商品号; ON Customer.会员号=Orderitem.会员号; ORD
12、ER BY Customer.会员号 新建一个程序文件,输入上述命令,保存时把该程序文件命名为“pview.prg”。)解析:三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_解析:6.设计名为 mystock 的表单(控件名,文件名均为 mystock)。表单的标题为:“股票持:有情况”。表单中有两个文本框(text1 和 text2)和两个命令按钮即“查询”(名称为 Command1)和“退出”(名称为Command2)。 运行表单时,在文本框 text1 中输入某一股票的汉语拼音,然后单击“查询”,则 text2 中会显示出相应股票的持有数量。 单击“退出
13、”按钮关闭表单。(分数:2.00)_正确答案:(正确答案:第一步:在 Visual FoxPro 主窗口中按下组合键 Ctrl+N,系统弹出“新建”对话框,在文件类型中选择“表单”,单击“新建文件”按钮,系统将打开表单设计器;或直接在命令窗口中输入 crea form mystock。 第二步:单击工具栏按钮“表单控件工具栏”,在弹出的“表单控件”对话框中,选中“命令按钮”控件,在表单设计器中拖动鼠标,这样在表单上得到一个“命令按钮”控件command1,用类似的方法为表单加入一个“命令按钮”控件 command2,两个“文本框”控件 text1 和text2。 相关控件的属性值如下所示: 对
14、象 属性 属性值 Form1 Name mystock Caption 股票持有情况 Command1 Caption 查询 Command2 Caption 退出 *命令按钮 command1(查询)的 Click 事件代码如下* SELECT Stock_s1.持有数量; FROM stock! stock_name INNER JOIN stock! Stock_s1; ON Stock_name.股票代码=Stock_s1.股票代码; WHERE Stock_name.汉语拼音=alltrim(thisform.text1.value); INTO ARRAY TEMP THISFORM.TEXT2.VALUE=TEMP *命令按钮command2(退出)的 Click 事件代码如下* thisform.release)解析: