首页 全国计算机等级考试VFP上机题库及答案(100套精选)2013最新版

全国计算机等级考试VFP上机题库及答案(100套精选)2013最新版

举报
开通vip

全国计算机等级考试VFP上机题库及答案(100套精选)2013最新版全国计算机等级考试VFP上机题库及答案(100套精选)2013最新版 第 1 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 注意:基本操作题为4道SQL题,请将每道题的SQL命令粘贴到SQL1.txt文件,每条命令占一行,第1道题的命令是第1行,第2道题的命令是第2行,以此类推;如果某道题没有做相应行为空。 1、利用SQL SELECT命令将表stock_sl.dbf复制到stock_bk.dbf。 2、利用SQL INSERT命令插入记录("600028",4.36, 4.60, 5500)...

全国计算机等级考试VFP上机题库及答案(100套精选)2013最新版
全国计算机等级考试VFP上机题库及答案(100套精选)2013最新版 第 1 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 注意:基本操作题为4道SQL题,请将每道题的SQL命令粘贴到SQL1.txt文件,每条命令占一行,第1道题的命令是第1行,第2道题的命令是第2行,以此类推;如果某道题没有做相应行为空。 1、利用SQL SELECT命令将表stock_sl.dbf复制到stock_bk.dbf。 2、利用SQL INSERT命令插入 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 ("600028",4.36, 4.60, 5500)到stock_bk.dbf表。 3、利用SQL UPDATE命令将stock_bk.dbf表中"股票代码"为"600007"的股票"现价"改为8.88。 4、利用SQL DELETE命令删除stock_bk.dbf表中"股票代码"为"600000"的股票。 二、简单应用(2小题,每题20分,计40分) 1、在考生文件夹下建立数据库sc2,将考生文件夹下的自由表score2添加进sc2中。根据score2表建立一个视图score_view,视图中包含的字段与score2表相同,但视图中只能查询到积分小于等于1500的信息。然后利用新建立的视图查询视图中的全部信息,并将结果按积分升序存入表v2。 2、建立一个菜单filemenu,包括两个菜单项"文件"和"帮助","文件"将激活子菜单,该子菜单包括"打开"、"存为"和"关闭"三个菜单项;"关闭"子菜单项用SET SYSMENU TO DEFAULT命令返回到系统菜单,其他菜单项的功能不做要求。 三、综合应用(1小题,计30分) 在考生文件夹下有学生成绩数据库XUESHENG3,包括如下所示三个表文件以及相关的索引文件: 1、XS.DBF(学生文件:学号 C8,姓名 C8,性别 C2,班级 C5;另有索引文件XS.IDX,索引键:学号) 2、CJ.DBF(成绩文件:学号 C8,课程名 C20,成绩 N5.1;另有索引文件CJ.IDX,索引键:学号) 3、CJB.DBF(成绩表文件:学号 C8,班级 C5,姓名 C8,课程名 C12,成绩N5.1)。设计一个名为XS3的菜单,菜单中有两个菜单项"计算"和"退出"。 程序运行时,单击"计算"菜单项应完成下列操作: 将所有选修了"计算机基础"的学生的"计算机基础"成绩,按成绩由高到低的顺序填到成绩表文件CJB.DBF中(事前须将文件中原有数据清空)。单击"退出"菜单项,请使用SET SYSMENU TO DEFAULT命令使程序终止运行。(注:相关数据表文件存在于考生文件夹下) 基本操作题答案:(注意:文本文件易生成错) 1、select * from stock_sl into table stock_bk 2、insert into stock_bk value("600028", 4.36, 4.60, 5500) 3、update stock_bk set 现价=8.88 where 股票代码="600007" 4、delete from stock_bk where 股票代码="600000" 简单应用题提示: 1、可用设计器做,也可用命令做。 2、set sysmenu to default 不能简写,原样照抄。第1小题命令如下: create view score_view as sele * from score2 where 积分<=1500 sele * from score_view order by 积分 into table v2 综合应用题答案: “计算”菜单项的过程代码为: close all sele xs.学号,班级,姓名,课程名,成绩 from xs,cj where xs.学号=cj.学号 and 课程名="计算机基础" order by 成绩 ; desc into array aaa delete from cjb insert into cjb from array aaa “退出”菜单项的命令代码为: set sysmenu to default 第 2 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下完成下列操作(在"成绩管理"数据库中完成): 1、为"学生"表在"学号"字段上建立升序主索引,索引名和索引表达式均为学号。 2、为"学生"表的"性别"字段定义有效性规则,规则表达式为:性别$"男女",出错提示信息是:"性别必须是男或女"。 3、在"学生"表的"性别"和"年龄"字段之间插入一个"出生日期"字段,数据类型为"日期型"(修改表结构)。 4、用SQL的UPDATE命令将学生"王三风"的出生日期修改为1983年5月1日,并将该语句粘贴在SQL2.TXT文件中(第一行、只占一行)。 二、简单应用(2小题,每题20分,计40分) 1、根据考生文件夹下的txl表和jsh表建立一个查询query2,查询出单位是"南京大学" 的所有教师的姓名、职称、电话,要求查询去向是表,表名是query2.dbf,并执行该查询。 2、建立表单enterf,表单中有两个命令按钮,按钮的名称分别为cmdin和cmdout,标题分别为"进入"和"退出"。 三、综合应用(1小题,计30分) 在考生文件夹下有仓库数据库CK3,包括如下所示两个表文件: CK(仓库号C(4),城市C(8),面积N(4));ZG(仓库号C(4),职工号C(4),工资N(4))。设计一个名为ZG3的菜单,菜单中有两个菜单项"统计"和"退出"。程序运行时,单击"统计"菜单项应完成下列操作:检索出所有职工的工资都大于1220元的职工所管理的仓库信息,将结果保存在wh1数据表(WH1为自由表)文件中,该文件的结构和CK数据表文件的结构一致,并按面积升序排序。单击"退出"菜单项,请使用SET SYSMENU TO DEFAULT命令使程序终止运行。(注:相关数据表文件存在于考生文件夹下) 基本操作题答案: 4、UPDA 学生 SET 出生日期={^1983-05-01} WHER 姓名="王三风" 简单应用题提示: 本题必须用设计器做要注意二点, 1 选表必须先选jsh表,后选txl表; 选字段必须按次序选jsh.姓名,jsh.职称,txl.电话。其它情况均不得分,请务必注意。 综合应用题答案: “统计”菜单项的过程代码为: Clos all SELECT * FROM CK WHERE 仓库号 NOT IN (SELECT 仓库号 FROM ZG WHERE 工资<=1220) AND 仓库号 IN (SELECT 仓库号 FROM ZG); ORDER BY 面积 INTO TABLE wh1 “退出”菜单项的命令代码为:SET SYSMENU TO DEFAULT (原样抄命令,不能省) 第 3 套 一、基本操作(共四小题,第1和2题是7分、第3和4题是8分) 1、请在考生文件夹下建立一个数据库KS4。 2、将考生文件夹下的自由表STUD、COUR、SCOR加入到数据库KS4中。 3、为STUD表建立主索引,索引名和索引表达式均为学号;为COUR表建立主索引,索引名和索引表达式均为课程编号; 为SCOR表建立两个普通索引,其中一个索引名和索引表达式均为学号;另一个索引名和索引表达式均为课程编号。 4、在以上建立的各个索引的基础上为三个表建立联系。 二、简单应用(2小题,每题20分,计40分) 1、在考生文件夹中有一个数据库STSC,其中有数据库表STUDENT、SCORE和COURSE。利用SQL语句查询选修了"网络工程"课程的学生的全部信息,并将结果按学号降序存放在NETP.DBF文件中(库的结构同STUDENT,并在其后加入课程号和课程名字段)。 2、在考生文件夹中有一个数据库STSC,其中有数据库表STUDENT,使用一对多报表向导制作一个名为CJ2的报表,存放在考生文件夹中要求:选择父表STUDENT 表中学号和姓名字段,从子表SCORE中选择课程号和成绩,排序字段选择学号(升序),报表式样为简报式,方向为纵向。报表标题为"学生成绩表"。 三、综合应用(1小题,计30分) 在考生文件夹下有工资数据库WAGE3,包括数据表文件: ZG(仓库号C(4),职工号C(4),工资N(4))。 设计一个名为TJ3的菜单,菜单中有两个菜单项"统计"和"退出"。 程序运行时,单击"统计"菜单项应完成下列操作:检索出工资小于或等于本仓库职工平均工资的职工信息,并将这些职工信息按照仓库号升序,在仓库号相同的情况下再按职工号升序存放到EMP1(EMP1为自由表)文件中,该数据表文件和ZG数据表文件具有相同的结构。单击"退出"菜单项,请使用set sysmenu to default命令使程序终止运行(注:相关数据表文件存在于考生文件夹下) 简单应用题答案: 1、sele student.*,course.课程号,课程名 from student,course,score where 课程名="网络工程" and ; student.学号=score.学号 and score.课程号=course.课程号 order by student.学号 desc into table netp 综合应用题答案: “统计”菜单项的过程代码为: SELECT 仓库号,AVG(工资) AS AvgGZ FROM ZG GROUP BY 仓库号 INTO CURSOR pj SELECT ZG.* FROM ZG,pj WHERE ZG.仓库号=pj.仓库号 AND ZG.工资<=pj.AvgGZ ORDER BY zg.仓库号,职工号 INTO TABLE EMP1 “退出”菜单项的命令代码为:set sysmenu to default 第 4 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 1、请在考生文件夹下建立一个项目WY。 2、将考生文件夹下的数据库KS4加入到新建的项目WY中去。 3、利用视图设计器在数据库中建立视图 NEW_VIEW,视图包括GJHY表的全部字段(顺序同GJHY中的字段)和全部记录。 4、从表HJQK中查询"奖级"为一等的学生的全部信息(HJQK表的全部字段),并按分数的降序存入新表NEW1中。 二、简单应用(2小题,每题20分,计40分) 1、在考生文件夹下,有一个数据库CADB,其中有数据库表ZXKC和ZX。表结构如下:ZXKC(产品编号,品名,需求量,进货日期);ZX(品名,规格,单价,数量)。 在表单向导中选取一对多表单向导创建一个表单。要求:从父表zxkc中选取字段产品编号和品名,从子表zx中选取字段规格和单价,表单样式选取"阴影式",按钮类型使用"文本按钮",按产品编号升序排序,表单标题为"照相机",最后将表单存放在考生文件夹中,表单文件名是form2。 2、在考生文件夹中有数据库CADB,其中有数据库表ZXKC和ZX。建立单价大于等于800,按规格升序排序的本地视图CAMELIST,该视图按顺序包含字段产品编号、品名、规格和单价,然后使用新建立的视图查询视图中的全部信息,并将结果存入表v_camera。 三、综合应用(1小题,计30分) 在考生文件夹下有仓库数据库CHAXUN3包括三个表文件:ZG(仓库号 C(4),职工号 C(4),工资 N(4));DGD(职工号 C(4),供应商号 C(4),订购单号 C(4),订购日期 D,总金额 N(10));GYS(供应商号 C(4),供应商名 C(16),地址 C(10))。 设计一个名为CX3的菜单,菜单中有两个菜单项"查询"和"退出"。程序运行时,单击"查询"应完成下列操作:检索出工资多于1230元的职工向北京的供应商发出的订购单信息,并将结果按总金额降序排列存放在ord1文件(和DGD文件具有相同的结构,ord1为自由表)中。单击"退出"菜单项,请使用set sysmenu to default命令使程序终止运行。(注:相关数据表文件存在于考生文件夹下) 基本操作题答案: 4、sele * from hjqk where 奖级="一等" order by 分数 DESC into table NEW1 简单应用题: 2、Open data cadb create view CAMELIST as sele 产品编号,zx.品名,规格,单价 from zx,zxkc where 单价>=800 and zx.品名=zxkc.品名 ; order by 规格 sele * from CAMELIST into table v_camera 综合应用题答案: “查询”菜单项的过程代码为: SELECT * FROM DGD WHERE 职工号 IN (SELECT 职工号 FROM ZG WHERE 工资>1230); AND 供应商号 IN (SELECT 供应商号 FROM GYS WHERE 地址="北京") ORDER BY 总金额 DESC INTO TABLE ord1 “退出”菜单项的命令代码为:SET SYSMENU TO DEFAULT 第 5 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 1、打开数据库PROD_M及数据库设计器,其中的两个表的必要的索引已经建立,为这两个表建立永久性联系。 2、设置CATEGORY表中"种类名称"字段的默认值为:"饮料"。 3、为PRODUCTS表增加字段:优惠价格 N(8,2)。 4、如果所有商品的优惠价格是在进货价格基础上减少12%,计算所有商品的优惠价格。 二、简单应用(2小题,每题20分,计40分) 1、在考生文件夹中有一个数据库GCS,其中GONGCH表结构如下:GONGCH(编号C(4),姓名C(10),性别C(2),工资N(7,2),年龄N(2),职称C(10))。现在要对GONGCH表进行修改,指定编号为主索引,索引名和索引表达式均为编号;指定职称为普通索引,索引名和索引表达式均为职称;年龄字段的有效性规则在25至65之间(含25和65),默认值是45。 2、在考生文件夹中有数据库GCS,其中有数据库表GONGCH。在考生文件夹下设计一个表单,该表单为GCS库中GONGCH表窗口式输入界面,表单上还有一个名为cmdCLOSE的按钮,标题名为"关闭",点击该按钮,使用 ThisForm.release退出表单。最后将表单存放在考生文件夹中,表单文件名是C_FORM。提示:在设计表单时,打开GCS数据库设计器,将GONGCH表拖入到表单中就实现了GONGCH表的窗口式输入界面,不需要其他设置或修改。 三、综合应用(1小题,计30分) 在考生文件夹下有仓库数据库GZ3,包括两个表文件:ZG(仓库号C(4),职工号C(4),工资N(4));DGD(职工号C(4),供应商号C(4),订购单号 C(4),订购日期D,总金额N(10))。首先在GZ3库中建立工资表:GJ3(职工号C(4),工资N(4)); 设计一个名为YEWU3的菜单,菜单中有两个菜单项"查询"和"退出"。程序运行时,单击"查询"应完成下列操作:检索出与供应商S7、S4和S6都有业务联系的职工的职工号和工资,并按工资降序存放到所建立的GJ3文件中。单击"退出"菜单项,请使用set sysmenu to default命令使程序终止运行。(注:相关数据表文件存在于考生文件夹下) 基本操作题答案: 4、Update PRODUCTS set 优惠价格=进货价格*(1-0.12) 综合应用题答案: 先在命令窗口输入下列命令: OPEN DATABASE GZ3 CREATE TABLE GJ3(职工号 C(4),工资 N(4)) “查询”菜单项的过程代码为: SELECT 职工号 FROM DGD WHERE 供应商号 IN ("S4","S6","S7") GROUP BY 职工号 HAVING COUNT(DISTINCT 供应商号)=3 ; INTO CURSOR aaa SELECT ZG.职工号,工资 FROM ZG,aaa WHERE ZG.职工号=aaa.职工号 ORDER BY 工资 DESC INTO ARRAY bbb INSERT INTO GJ3 FROM ARRAY bbb 第 6 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 1、在考生文件夹下建立数据库KS7;并将自由表SCOR加入数据库中。 2、按下面给出的表结构。给数据库添加表STUD: 字段 字段名 类型 宽度 小数 1 学号 字符型 2 2 姓名 字符型 8 3 年龄 数值型 2 0 4 性别 字符型 2 5 院系号 字符型 2 3、为表STUD建立主索引,索引名为学号,索引表达式为学号,为表SCOR建立普通索引,索引名为学号,索引表达式为学号。 4、STUD表和SCOR表必要的索引已建立,为两表建立永久性的联系。 二、简单应用(2小题,每题20分,计40分) 1、在考生文件夹中有一个学生数据库STU,其中有数据库表STUDENT存放学生信息,使用菜单设计器制作一个名为STMENU的菜单,菜单包括"数据操作"和"文件"两个菜单栏。 每个菜单栏都包括一个子菜单。菜单结构如下: 能不做要求。 三、综合应用(1小题,计30分) 在考生文件夹下有学生管理数据库BOOKS,数据库中有score表(含有学号、物理、高数、英语和学分5个字段,具体类型请查询表结构),其中前4项已有数据。请编写符合下列要求的程序并运行程序:设计一个名为myform的表单,表单中有两个命令按钮,按钮的名称分别为CMDYES和CMDNO,标题分别为"计算"和"关闭"。程序运行时,单击"计算"按钮应完成下列操作:(1)计算每一个学生的总学分并存入对应的学分字段。学分的计算方法是:物理60分以上(包括60分)2学分,否则0分;高数60分以上(包括60分)3学分,否则0分;英语60分以上(包括60分)4学分,否则0分。(2)根据上面的计算结果,生成一个新的表xf,(要求表结构的字段类型与score表对应字段的类型一致),并且按学分升序排序,如果学分相等,则按学号降序排序。单击"关闭"按钮,程序终止运行。 简单应用题答案: 1 create view order_view as sele * from order1 where 金额<1000 sele * from order_view order by 订单编号 into table v1 综合应用题答案: 重要提示,CMDYES和CMDNO要大写 Command1的click事件代码为: update score set 学分=0 update score set 学分=学分+2 where 物理>=60 update score set 学分=学分+3 where 高数>=60 update score set 学分=学分+4 where 英语>=60 sele * from score order by 学分,学号 desc into table xf.dbf Command2的Click事件代码为:thisform.release 第 8 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 1、在考生文件夹下建立项目SALES_M。 2、在新建立的项目中建立数据库CUST_M。 3、把自由表CUST和ORDER1加入到新建立的数据库中。 4、为确保ORDER1表元组唯一,请为ORDER1表建立候选索引,索引名为订单编号,索引表达式为订单编号。 二、简单应用(2小题,每题20分,计40分) 1、根据order1表和cust表建立一个查询query1,查询出公司所在地是"北京"的所有公司的名称、订单日期、送货方式,要求查询去向是表,表名是query1.dbf,并执行该查询。 2、建立表单my_form,表单中有两个命令按钮,按钮的名称分别为cmdYes和cmdNo,标题分别为"登录"和"退出"。 三、综合应用(1小题,计30分) 在考生文件夹下有股票管理数据库stock,数据库中有表stock_sl、stock_fk表。stock_sl的表结构是股票代码C(6)、买入价N(7.2)、现价N(7.2)、持有数量N(6)。stock_fk的表结构是股票代码C(6)、浮亏金额N(11.2)。 请编写并运行符合下列要求的程序:设计一个名为menu_lin的菜单,菜单中有两个菜单项"计算"和"退出"。程序运行时,单击"计算"菜单项应完成下列操作:(1)将现价比买入价低的股票信息存入stock_fk表,其中:浮亏金额=(买入价-现价)*持有数量(注意要先把表的stock_fk内容清空)。(2) 根据stock_fk表计算总浮亏金额,存入一个新表stock_z中,其字段名为浮亏金额,类型为N(11.2),该表最终只有一条记录(该表属于库STOCK)。单击"退出"菜单项,请使用set sysmenu to default命令使程序终止运行。 综合应用题答案: “计算”菜单项的命令代码为: OPEN DATA STOCK SELECT 股票代码,(买入价-现价)*持有数量 AS 浮亏金额 FROM STOCK_SL WHERE 买入价>现价 INTO ARRAY aaa DELETE FROM STOCK_FK INSERT INTO STOCK_FK FROM ARRAY aaa SELECT SUM(浮亏金额) FROM STOCK_FK INTO ARRAY bbb CREATE TABLE STOCK_Z(浮亏金额 N(11,2)) INSERT INTO STOCK_Z FROM ARRAY bbb “退出”菜单项的命令代码为:set sysmenu to default 第 9 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 1、在考生文件夹下打开数据库CUST_M,为CUST表建立主索引,索引名为客户编号,索引表达式为客户编号。 2、CUST表和ORDER1表中必要的索引已经建立,为两表建立永久性联系。 3、为CUST表增加字段:客户等级C(2),字段值允许为空。 4、为ORDER1表"金额"字段增加有效性规则:金额大于零,否则提示:金额必须大于零。 二、简单应用(2小题,每题20分,计40分) 1、在考生文件夹中有一个数据库SDB,其中有数据库表STUDENT2,SC和COURSE2。三个表如下所示:STUDENT2(学号,姓名,年龄,性别,院系编号);SC(学号,课程号,成绩,备注)。COURSE2(课程号,课程名,先修课号,学分)。有一个程序dbtest3.prg,该程序的功能是定义一个视图VS1,检索选课门数是3门以上的每个学生的学号、姓名、平均成绩、最低分、选课门数和院系编号,并按平均成绩降序排序。请修改程序中的错误,并调试该程序,使之正确运行。不得增加或删减程序行。 2、在考生文件夹下有一个数据库CUST_M,数据库中有CUST和ORDER1两个表。请使用菜单设计器制作一个名为MY_MENU的菜单,菜单只有"浏览"一个菜单项。浏览菜单项中有"客户"、"订单"和"退出"三个子菜单: "客户"子菜单使用SELECT * FROM CUST命令对CUST表查询; "订单"子菜单使用SELECT * FROM ORDER1命令对ORDER1表查询;"退出"子菜单使用SET SYSMENU TO DEFAULT命令返回系统菜单。 三、综合应用(1小题,计30分) 在考生文件夹下有学生管理数据库stu_3,数据库中有score_fs表,其表结构是学号C(10)、物理I、高数I、英语I和平均分N(6.2)。成绩如果用-1表示,说明学生没有选学该门课程。其中,该表前四项已有数据。请编写并运行符合下列要求的程序:设计一个名为form_my的表单,表单中有两个命令按钮,按钮的名称分别为cmdyes和cmdno,标题分别为"统计"和"关闭"。程序运行时,单击"统计"按钮应完成下列操作:(1)计算每一个学生的平均分存入平均分字段。注意:分数为-1不记入平均分,例如一个学生的三门成绩存储的是90,-1,70,平均分应是80。(2)根据上面的计算结果,生成一个新的表PJF,该表只包括学号和平均分两项,并且按平均分的降序排序,如果平均分相等,则按学号升序排序。单击"关闭"按钮,程序终止运行。 简单应用题答案: 1 第一处将 ”use ” 改为:”open ”, 第二处将”course2”改为:”sc ”, 第三处将 ”成绩”改为:”平均成绩 desc” 2 注意: 命令必须写完整. 综合应用题答案: “统计”命令按钮的CLICK事件代码为: clos all USE SCORE_FS GO TOP DO WHILE NOT EOF() STORE 0 TO RS,PJF IF 物理<>-1 THEN RS=RS+1 PJF=PJF+物理 ENDIF IF 高数<>-1 THEN RS=RS+1 PJF=PJF+高数 ENDIF IF 英语<>-1 THEN RS=RS+1 PJF=PJF+英语 ENDIF IF RS<>0 THEN REPLACE 平均分 WITH PJF/RS ENDIF ENDDO SELECT 学号,平均分 FROM SCORE_FS ORDER BY 平均分 DESC,学号 INTO TABLE PJF “退出”按钮的CLICK的事件代码为:THISFORM.RELEASE 第 10 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 1、在考生文件夹下建立项目SALES_M。 2、把考生文件夹中的数据库CUST_M加入SALES_M项目中。 3、为CUST_M数据库中CUST表增加字段:联系电话C(12),字段值允许"空" 4、为CUST_M数据库中ORDER1表"送货方式"字段设计默认值为"铁路"。 二、简单应用(2小题,每题20分,计40分) 1、在考生文件夹下,有一个数据库SDB,其中有数据库表STUDENT、SC和COURSE。表结构如下:STUDENT(学号,姓名,年龄,性别,院系号);SC(学号,课程号,成绩,备注);COURSE(课程号,课程名,先修课程号,学分)。在表单向导中选取一对多表单向导创建一个表单。要求:从父表STUDENT中选取字段学号和姓名,从子表SC中选取字段课程号和成绩,表单样式选"浮雕式",按钮类型使用"文本按钮",按学号降序排序,表单标题为"学生成绩",最后将表单存放在考生文件夹中,表单文件名是form1。 2、在考生文件夹中有一数据库SDB,其中有数据库表STUDENT,SC和COURSE。建立成绩大于等于60分,按学号升序排序的本地视图GRADELIST,该视图按顺序包含字段学号、姓名、成绩和课程名,然后使用新建立的视图查询视图中的全部信息,并将结果存入表v_grade。 三、综合应用(1小题,计30分) 在考生文件夹下有股票管理数据库stock_4,数据库中有stock_mm表和stock_cc表,stock_mm的表结构是股票代码C(6)、买卖标记L(.T.表示买进,.F.表示卖出)、单价N(7.2)、本次数量N(6)。stock_cc的表结构是股票代码C(6)、持仓数量N(8)。 stock_mm表中一只股票对应多个记录,stock_cc表中一只股票对应一个记录 (stock_cc表开始时记录个数为0)。 请编写并运行符合下列要求的程序:设计一个名为menu_lin的菜单,菜单中有两个菜单项"计算"和"退出"。 程序运行时,单击"计算"菜单项应完成下列操作:(1)根据stock_mm统计每只股票的持仓数量,并将结果存放到stock_cc表。计算方法:买卖标记为.T.(表示买进),将本次数量加到相应股票的持仓数量;买卖标记为.F.(表示卖出),将本次数量从相应股票的持仓数量中减去。(注意:stock_cc表中的记录按股票代码从小到大顺序存放)。(2)将stock_cc表中持仓数量最少的股票信息存储到自由表stock_x中(与stock_cc表结构相同)。单击"退出"菜单项,请使用set sysmenu to default命令使程序终止运行。 简单应用题答案: 1 open data sdb create view GRADELIST AS sele student.学号,姓名,成绩,课程名 from student,sc,course where 成绩>=60 and ; student.学号=sc.学号 and sc.课程号=course.课程号 order by student.学号 sele * from GRADELIST into table v_grade 综合应用题答案: “计算”菜单项的过程代码为: SELECT 股票代码,SUM(本次数量) AS 持仓数量 FROM STOCK_MM WHERE 买卖标记 GROUP BY 股票代码 INTO CURSOR aaa SELECT 股票代码,SUM(本次数量) AS 持仓数量 FROM STOCK_MM WHERE NOT 买卖标记 GROUP BY 股票代码 INTO CURSOR bbb SELECT aaa.股票代码,(aaa.持仓数量-bbb.持仓数量) AS 持仓数量 FROM aaa,bbb WHERE aaa.股票代码=bbb.股票代码 ; ORDER BY aaa.股票代码 INTO ARRAY ccc DELETE FROM STOCK_CC INSERT INTO STOCK_CC FROM ARRAY ccc SELECT * TOP 1 FROM STOCK_CC ORDER BY 持仓数量 INTO TABLE STOCK_X “退出”菜单项的命令代码为:set sysmenu to default 第 11 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 1、在考生文件夹下建立项目MARKET。 2、在项目MARKET中建立数据库PROD_M。 3、把考生文件夹中自由表CATEGORY和PRODUCTS加入到PROD_M数据库中。 4、为CATEGORY表建立主索引,索引名primarykey,索引表达式为分类编码;为PRODUCTS表建立普通索引,索引名regularkey,索引表达式为分类编码。 二、简单应用(2小题,每题20分,计40分) 1、在考生文件夹中有一个数据库SDB,其中STUDENT表结构如下:STUDENT(学号C(2),姓名C(8),年龄N(2),性别C(2),院系号C(2));现在要对STUDENT表进行修改,指定学号为主索引,索引名和索引表达式均为学号;指定院系号为普通索引,索引名和索引表达式均为院系号;年龄字段的有效性规则在12至30之间(含12和30),默认值是16,性别字段有效性规则是'男'或'女',默认值是'男'。 2、在考生文件夹中有一个数据库SDB,其中有数据库表STUDENT、SC和COURSE。表结构如下:STUDENT(学号,姓名,年龄,性别,院系号);SC(学号,课程号,成绩,备注);COURSE(课程号,课程名,先修课程号,学分)。在考生文件夹下有一个程序test.prg,该程序的功能是检索选修课程门数等于3门或3门以上,每门课程成绩大于或等于70分的每个学生的学号、姓名、性别、平均成绩、最低分和选课门数,并将结果存放到表new_test中。请修改程序中的错误,并调试该程序,使之正确运行。考生不得增加或删减程序行。 三、综合应用(1小题,计30分) 在考生文件夹下有学生管理数据库stu_five:CHENGJI表(学号C(9)、课程号C(3)、成绩I)用于记录学生的考试成绩,其中一个学生可以有多项记录(登记一个学生的多门成绩)。KECHENG表(课程号C(3)、课程名C(10)、最高分I、学号C(9))的内容是所开课程,一门课程只有一个记录(表中有固定的已知数据)。请编写并运行符合下列要求的程序:设计一个名为form_my的表单,表单中有两个命令按钮,按钮的名称分别为cmdyes和cmdno,标题分别为"统计"和"关闭"。程序运行时,单击"统计"按钮应完成下列操作:(1)计算每门课程的最高分,并将结果存入KECHENG表的最高分字段,同时将得此最高分的学生的学号存入该表的学号字段。(2) 根据上面的计算结果,生成一个新的表jiangli,该表按顺序含有来自KECHENG表的课程名和最高分两个字段,并且按最高分降序排序。单击"关闭"按钮,程序终止运行。 简单应用题答案: 1、重要提示,必须写成:性别=‘男’OR 性别=‘女’,否则不得分。 2、第一处将 “while” 改为:”where”, 第二处将”sum”改为:”count ”, 第三处将“to”改为:”into table “ 综合应用题答案: “统计”命令按钮的CLICK事件代码为: Clos all SELECT 2 USE KECHENG INDEX ON 课程号 TO KC SELECT 1 USE CHENGJI DO WHILE NOT EOF() SELECT 2 SEEK A->课程号 IF 最高分成绩 REPLACE 最高分 WITH A->成绩,学号 WITH A->学号 ENDIF SELECT 1 ENDDO SELECT 课程名,最高分 FROM KECHENG ORDER BY 最高分 INTO TABLE JIANGLI 表单样式为阴影式;按钮类型为图片按钮;排序字段选择学号(升序);表单标题为"学生信息数据输入维护",最后将表单存放在考生文件夹中,表单文件名为T1。 2、在考生文件夹中有一个数据库STSC,其中有数据库表STUDENT存放学生信息,使用菜单设计器制作一个名为SMENU1的菜单,菜单包括"数据维护"和"文件"两个菜单栏。每个菜单栏都包括一个子菜单。菜单结构如下: 数据维护 数据表格式输入 其中:数据表格式输入菜单项对应的过程包括下列4条命令:打开数据库STSC的命令,打开表STUDENT的命令,BROWSE命令,关闭数据库的命令。退出菜单项对应命令SET SYSMENU TO DEFAULT,使之可以返回到系统菜单。 三、综合应用(1小题,计30分) 在考生文件夹下有学生管理数据库stu_7,该库中有CHENGJI表和XUESHENG表,各表结构如下:(1) CHENGJI表(学号C(9)、课程号C(3)、成绩N(7.2)),该表用于记录学生的考试成绩,一个学生可以有多项记录(登记一个学生的多门成绩)。(2) XUESHENG表(学号C(9)、姓名C(10)、平均分N(7.2)),该表是学生信息,一个学生只有一个记录(表中有固定的已知数据)。请编写并运行符合下列要求的程序:设计一个名为form_stu的表单,表单中有两个命令按钮,按钮的名称分别为CMDYES和CMDNO,标题分别为"统计"和"关闭"。 程序运行时,单击"统计"按钮应完成下列操作:(1) 根据CHENGJI表计算每个学生的平均分,并将结果存入XUESHENG表的平均分字段。(2) 根据上面的计算结果,生成一个新的自由表pingjun,该表的字段按顺序取自XUESHENG表的学号、姓名和平均分三项,并且按平均分升序排序,如果平均分相等,则按学号升序排序。单击"关闭"按钮,程序终止运行。 重要提示,CMDYES和CMDNO要大写。 简单应用题答案: “数据表格式输入”菜单项的过程代码为: Open database STSC Use student Browse Close database “退出”菜单项的命令代码为:set sysmenu to default 综合应用题答案: “统计”按钮的CLICK事件代码为: clos all USE XUESHENG DO WHILE NOT EOF() SELECT AVG(成绩) FROM CHENGJI WHERE 学号=XUESHENG.学号 INTO ARRAY aaa REPLACE 平均分 WITH aaa(1,1) ENDDO SELECT 学号,姓名,平均分 FROM XUESHENG ORDER BY 平均分,学号 INTO TABLE PINGJUN “关闭”按钮的CLICK事件代码为:thisform.release 第 14 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 1、打开考生文件夹下的STSC数据库,为STUDENT表建立主索引,索引名为学号,索引表达式为学号。 2、为SCORE表建立普通索引,索引名为学号,索引表达式为学号,并根据建立的索引建立STUDENT表和SCORE表之间的联系。 3、为以上联系指定参照完整性,其中插入规则为"限制",更新规则和删除规则为"级联"。 4、逻辑删除STUDENT表中学号为"S5"的记录。 二、简单应用(2小题,每题20分,计40分) 1、在考生文件夹中有一个数据库STSC,其中有数据库表STUDENT、SCORE和COURSE。利用SQL语句查询选修了"C++"课程的学生的全部信息,并将结果按学号升序存放在CPLUS.DBF文件中(库的结构同STUDENT,并在其后加入课程号和课程名字段)。 2、在考生文件夹中有一个数据库STSC,其中有数据库表STUDENT,使用报表向导制作一个名为P1的报表,存放在考生文件夹中。要求:选择 STUDENT表中所有字段,报表式样为经营式;报表布局:列数为1,方向为纵向,字段布局为列;排序字段选择学号(升序)报表标题为"学生基本情况一览表"。 三、综合应用(1小题,计30分) 在考生文件夹下有职员管理数据库staff_8,数据库中有YUANGONG表和ZHICHENG表,YUANGONG的表结构是职工编码C(4)、姓名C(10)、职称代码C(1)、工资N(10.2)。ZHICHENG的表结构是职称代码C(1)、职称名称C(8)、增加百分比N(10,2),然后编写并运行符合下列要求的程序:设计一个名为staff_m的菜单,菜单中有两个菜单项"计算"和"退出"。程序运行时,单击"计算"菜单项应完成下列操作:在表yuangong中增加一新的字段:新工资 N(10,2)。现在要给每个人增加工资,请计算YUANGONG表的新工资字段,方法是根据ZHICHENG表中相应职称的增加百分比来计算:新工资=工资*(1+增加百分比/100);单击"退出"菜单项对应命令SET SYSMENU TO DEFAULT,使之可以返回到系统菜单,程序终止运行。 简单应用题答案: 1、Sele student.*,course.课程号,课程名 from student,score,course where 课程名="C++" and student.学号=score.学号 and ; Score.课程号=course.课程号 order by student.学号 into table cplus 综合应用题答案: “计算”菜单项的过程代码为: USE ZHICHENG IN 2 USE YUANGONG IN 1 ALTER TABLE YUANGONG ADD 新工资 N(10,2) SELECT 2 DO WHILE NOT EOF() SELECT 1 UPDATE YUANGONG SET 新工资=工资*(1+ZHICHENG.增加百分比/100) WHERE YUANGONG.职称代码=ZHICHENG.职称代码 SELECT 2 ENDDO “退出”菜单项的命令代码为:SET SYSMENU TO DEFAULT 第 15 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 1、在考生文件夹下建立数据库STSC。 2、把自由表STUDENT、COURSE、SCORE加入到数据库中。 3、为SCORE表的"成绩"字段建立有效性规则:成绩大于等于零,否则提示信息:成绩必须大于等于零。 4、为STUDENT表建立主索引,索引名为PRIMARYKEY,索引表达式为学号。 二、简单应用(2小题,每题20分,计40分) 1、在考生文件夹中有一个商品数据库COMMDB,其中有数据库表SP存放商品信息,使用菜单设计器制作一个名为SMENU的菜单,菜单包括"数据操作"和"文件"两个菜单栏。每个菜单栏都包括一个子菜单。菜单结构如下: 数据操作 其中:数据输出子菜单对应的过程完成下列操作:打开数据库COMMDB,使用SQL的SELECT语句查询数据库表SP中所有信息,然后关闭数据库。退出菜单项对应的过程含有命令SET SYSMENU TO DEFAULT,使之可以返回到系统菜单。 2、在考生文件夹中有一个数据库SDB,其中有数据库表STUDENT2、SC和COURSE2。三个表如下所示:STUDENT2(学号,姓名,年龄,性别,院系编号);SC(学号,课程号,成绩,备注);COURSE2(课程号,课程名,先修课号,学分)。用SQL语句查询"数据库"课程的考试成绩在85分以上(含85分)的学生的全部信息并将结果按学号升序存入自由表NINE.DBF文件中(库的结构同STUDENT2,并在其后加入成绩字段)。 三、综合应用(1小题,计30分) 考生文件夹下有学生管理数据库stu_nine,数据库中有score1表,其库结构是学号C(10)、少数民族L、优秀干部L、三好生L、考试成绩I、总成绩I。其中,前五项已有数据。请编写并运行符合下列要求的程序:设计一个名为form_stu的表单,表单中有两个命令按钮,按钮的名称分别为CMDYES和CMDNO,标题分别为"计算"和"关闭"。程序运行时,单击"计算"按钮应完成下列操作:(1) 计算每一个学生的总成绩。总成绩的计算方法是:考试成绩+加分,加分的规则是:如果该生是少数民族(相应数据字段为.T.)加分5分,优秀干部加分10分,三好生加分20分,加分不累计,取最高的。例如,如果该生既是少数民族又是三好生,加分为20分。如果都不是,总成绩=考试成绩;(2) 根据上面的计算结果,生成一个新的自由表ZCJ,该表只包括学号和总成绩两项,并按总成绩的升序排序,如果总成绩相等,则按学号的升序排序。单击"关闭"按钮,程序终止运行。 简单应用题答案: 1、“数据输出”的过程代码为: open data commdb sele * from sp clos data “退出”的命令代码为:set sysmenu to default 2、sele student2.*,成绩 from student2,sc,course2 where student2.学号=sc.学号 and sc.课程号=course2.课程号 and ; 课程名="数据库" and 成绩>=85 order by student2.学号 into table nine 综合应用题答案: “计算”命令按钮的CLICK事件代码为: USE SCORE1 DO WHILE NOT EOF() STORE 0 TO JF DO CASE CASE 三好生 JF=20 CASE 优秀干部 JF=10 CASE 少数民族 OTHERWISE ENDCASE REPLACE 总成绩 WITH 考试成绩+JF ENDDO SELECT 学号,总成绩 FROM SCORE1 ORDER BY 总成绩,学号 INTO TABLE ZCJ “关闭”命令按钮的CLICK事件代码为:thisform.release 第 16 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 1、在考生文件夹下建立项目STSC_M。 2、把数据库STSC加入到STSC_M项目中。 3、打开STSC数据库,三个表中必要的索引已经建立,为三个表建立永久性联系。 4、为COURSE表增加字段:开课学期 I。 二、简单应用(2小题,每题20分,计40分) 1、在考生文件夹中有数据库STSC,其中有数据库表STUDENT、SCORE和COURSE。三个表如下所示:STUDENT(学号,姓名,性别,院系,出生日期);SCORE(学号,课程编号,成绩);COURSE(课程编号,课程名称,开课院系,开课学期)。 在考生文件夹下有一个程序dbtest4.prg,该程序的功能是检索选课门数是3门以上的(包括3门)每个学生的学号、姓名、平均成绩、最低分、选课门数和院系,并按平均成绩降序排序,同时将结果存放到表TEST1中, 请修改程序中的错误,并调试该程序,使之正确运行。不得增加或删减程序行。 2、在考生文件夹中有数据库STSC,其中有数据库表STUDENT、SCORE和COURSE。三个表如下所示:STUDENT(学号,姓名,性别,院系,出生日期);SCORE(学号,课程编号,成绩);COURSE(课程编号,课程名称,开课院系,开课学期)。使用CREATE QUERY命令建立一个文件名为QUSC.QPR的查询,要求含有学号、姓名、成绩和课程名称,按课程名称升序排序,查询去向是表(表名是QUSC.DBF),然后执行该查询。 三、综合应用(1小题,计30分) 在考生文件夹下有职员管理数据库staff_10,数据库中的YUANGONG表结构是职工编码C(4)、姓名C(10)、夜值班天数I、昼值班天数I、加班费N(10.2)。ZHIBAN表结构是值班时间C(2)、每天加班费N(7.2),ZHIBAN表中只有两条记录,分别记载了白天和夜里的每天加班费 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 。 请编写运行符合下列要求的程序:设计一个名为staff_m的菜单,菜单中有两个菜单项"计算"和"退出"。程序运行时,单击"计算"菜单项应完成下列操作:(1)计算YUANGONG表的加班费字段值,计算方法是:加班费=夜值班天数*夜每天加班费+昼值班天数*昼每天加班费 (2)根据上面的结果,将员工的职工编码、姓名、加班费存储到的自由表staff_d中,并按加班费降序排列,如果加班费相等,则按职工编码的升序排列。单击"退出"菜单项,请使用set sysmenu to default命令使程序终止运行。 简单应用题答案: 1、“sum”改为“count”,第二处加“desc”, 第三处改为:into table test1。改好后运行。 综合应用题答案: “计算”菜单项的过程代码为: SELECT 每天加班费 FROM ZHIBAN WHERE 值班时间="昼" INTO ARRAY zhou SELECT 每天加班费 FROM ZHIBAN WHERE 值班时间="夜" INTO ARRAY ye UPDATE YUANGONG SET 加班费=夜值班天数*ye(1)+昼值班天数*zhou(1) SELECT 职工编码,姓名,加班费 FROM YUANGONG ORDER BY 加班费 DESC,职工编码 INTO TABLE STAFF_D “退出”菜单项的命令代码为:SET SYSMENU TO DEFAULT 第 17 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 1. 创建一个新的项目"客户管理"。 2. 在新建立的项目"客户管理"中创建数据库"订货管理"。 3. 在"订货管理"数据库中建立表order_list,表结构如下: 客户号 字符型(6) 订单号 字符型(6) 订购日期 日期型 总金额 浮动型(15.2) 4. 为order_list表创建一个主索引,索引名和索引表达式均是"订单号"。 二、简单应用(2小题,每题20分,计40分) 1. 将order_list1表中的全部记录追加到order_list表中,然后用SQL SELECT语句完成查询:按总金额降序列出所有客户的客户号、客户名及其订单号和总金额,并将结果存储到results表中(其中客户号、客户名取自customer表,订单号、总金额取自order_list表)。 2. 打开form1表单,并按如下要求进行修改(注意:最后保存所做的修改):(1) 表单中有5个随机排列的命令按钮,不要移动或改变"基准按钮"位置(否则影响成绩),然后使其他命令按钮与"基准按钮"左部对齐;(2) 在这组命令按钮的右边添加一个表格控件,并将它的RecordSourceType属性设置为"表",然后设置另一个相关属性使在表格控件中显示customer表的记录。 三、综合应用(1小题,计30分) 当order_detail表中的单价修改后,应该根据该表的"单价"和"数量"字段修改order_list表的总金额字段,现在编写程序实现此功能,具体要求和注意事项如下:(1) 根据order_detail表中的记录重新计算order_list表的总金额字段的值;(2) 一条order_list记录可以对应几条order_detail记录;(3) 在编程前应保证在基础操作中正确地建立了order_list表,在简单应用中为该表追加了记录(注意只能追加一次);(4) 最后将order_list表中的记录按总金额降序排序存储到od_new表中(表结构与order_list表完全相同);(5) 将程序保存为prog1.prg文件。 简单应用题答案: 1、Append from order_list1 INTO TABLE OD_MOD USE OD_MOD DO WHILE NOT EOF() SELECT AAA.总金额 FROM AAA WHERE AAA.订单号=OD_MOD.订单号 INTO ARRAY BBB REPLACE 总金额 WITH BBB(1) ENDDO SELECT * FROM OD_MOD ORDER BY 总金额 INTO CURSOR CCC SELECT * FROM CCC INTO TABLE OD_MOD 第 19 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 1. 打开"订货管理"数据库,并将表order_list添加到该数据库中。 2. 在"订货管理"数据库中建立表customer,表结构描述如下: 客户号 字符型(6) 客户名 字符型(16) 地址 字符型(20) 电话 字符型(14) 3. 为新建立的customer表创建一个主索引,索引名和索引表达式均是"客户号"。 4. 将表order_detail从数据库中移出,并永久删除。 二、简单应用(2小题,每题20分,计40分) 1. 将customer1表中的全部记录追加到customer表中,然后用SQL SELECT语句完成查询:列出目前有订购单的客户信息(即有对应的order_list记录的customer表中的记录),同时要求按客户号升序排序,并将结果存储到results表中(表结构与customer表结构相同)。 2. 打开并按如下要求修改form1表单文件(最后保存所做的修改):(1) 在"确定"命令按钮的click事件(过 程)下的程序有两处错误,请改正之;(2) 设置Text2控件的有关属性,使用户在输入口令时显示"*"(星号)。 三、综合应用(1小题,计30分) 使用报表设计器建立一个报表,具体要求如下:(1) 报表的内容(细节带区)是order_list表的订单号、订购日期和总金额;(2) 增加数据分组,分组表达式是 "order_list.客户号",组标头带区的内容是"客户号",组注脚带区的内容是该组订单的"总金额"合计;(3) 增加标题带区,标题是 "订单分组汇总表(按客户)",要求是3号字、黑体,括号是全角符号;(4) 增加总结带区,该带区的内容是所有订单的总金额合计。最后将建立的 报表文件保存为report1.frx文件。 提示:在考试的过程中可以使用"显示→预览"菜单查看报表的效果。 简单应用题答案: 1、clos all use customer append from customer1 sele * from customer where 客户号 IN (sele dist 客户号 from order_list) order by 客户号 into table results 2、第一处改为:if thisform.text1.value = thisform.text2.value, 第二处改为:thisform.release 将text2的passwordchar属性设置为 * 第 20 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下的"订货管理"数据库中完成如下操作: 1. 将order_detail、order_list和customer表添加到数据库。 2. 为order_list表创建一个主索引,索引名和索引表达式均是"订单号"。 3. 建立表order_list和表order_detail间的永久联系(通过"订单号"字段)。 4. 为以上建立的联系设置参照完整性约束:更新规则为"限制",删除规则为"级联",插入规则为"限制"。 二、简单应用(2小题,每题20分,计40分) 1. 列出客户名为"三益贸易公司"的订购单明细 (order_detail)记录将结果先按"订单号"升序排列,同一订单的再按"单价"降序排列,并将结果存储到results表中(表结构与order_detail表结构相同)。 2. 考生文件夹下有一个form1表单文件,其中三个命令按钮click事件下的语句都是错误的,请按如下要求进行修改(最后保存所做的修改):(1) 单击"刷新标题"命令按钮时,使表单的标题为"简单应用";(2) 单击"订单记录" 命令按钮时,使表格控件中显示order_list表中的记录;(3) 单击"关闭表单" 命令按钮时,关闭表单。注意:每处错误只能在原语句上进行修改,不可以增加语句。 三、综合应用(1小题,计30分) 首先为order_detail表增加一个新字段:新单价(类型与原来的单价字段相同),然后编写满足如下要求的程序:根据order_list 表中的"订购日期"字段值确定order_detail表的"新单价"字段的值,原则是:订购日期为2001年的"新单价"字段的值为原单价的90%,订购日期为2002年的"新单价"字段的值为原单价的110%(注意:在修改操作过程中不要改变order_detail表记录的顺序),将order_detail表中的记录存储到od_new表中(表结构与order_detail表完全相同);最后将程序保存为prog1.prg,并执行该程序。接着再利用 Visual Foxpro的"快速报表"功能建立一个的简单报表,该报表内容按顺序含有order_detail表的订单号、器件号、器件名、新单价和数量字段的值,将报表文件保存为report1.frx。 简单应用题答案: 1、 sele order_detail.* from order_detail,order_list,customer wher customer.客户号=order_list.客户号 and order_list.; 订单号=order_detail.订单号 and 客户名=“三益贸易公司” order by order_detail.订单号,单价 desc into table results 2、“刷新标题”命令按钮的CLICK事件代码为:Thisform.caption=“简单应用” “订单记录”命令按钮的CLICK事件代码为:Thisform.grid1.recordsource=“order_list.dbf” “关闭表单”命令按钮的CLICK事件代码为:Thisform.release 综合应用题答案:PROG1.PRG的内容如下: SELECT 订单号 FROM ORDER_LIST WHERE YEAR(订购日期)=2001 INTO CURSOR AAA DO WHILE NOT EOF() UPDATE ORDER_DETAIL SET 新单价=单价*0.9 WHERE 订单号=AAA.订单号 ENDDO SELECT 订单号 FROM ORDER_LIST WHERE YEAR(订购日期)=2002 INTO CURSOR BBB DO WHILE NOT EOF() UPDATE ORDER_DETAIL SET 新单价=单价*1.1 WHERE 订单号=BBB.订单号 ENDDO SELECT * FROM ORDER_DETAIL INTO TABLE OD_NEW 第 21 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 1. 打开"订货管理"数据库,并将表order_detail添加到该数据库中。 2. 为表order_detail的"单价"字段定义默认值为NULL。 3. 为表order_detail的"单价"字段定义约束规则:单价 > 0 ,违背规则时的提示信息是:"单价必须大于零"。 4. 关闭"订货管理"数据库,然后建立自由表customer,表结构如下: 客户号 字符型(6) 客户名 字符型(16) 地址 字符型(20) 电话 字符型(14) 二、简单应用(2小题,每题20分,计40分) 1. 列出总金额大于所有订购单总金额平均值的订购单(order_list)清单(按客户号升序排列),将结果存到results表中(表结构与order_list表结构相同)。 2. 利用Visual Foxpro的"快速报表"功能建立一个满足如下要求的简单报表:(1) 报表的内容是 order_detail表的记录(全部记录,横向);(2) 增加"标题带区",然后在该带区中放置一个标签控件,该标签控件显示报表的标题"器件清单";(3) 将页注脚区默认显示的当前日期改为显示当前的时间;(4) 最后将建立的 报表保存为report1.frx。 三、综合应用(1小题,计30分) 首先将order_detail表全部内容复制到od_bak表,然后对od_bak表编写完成如下功能的程序:1. 把"订单号"尾部字母相同并且订货相同("器件号"相同)的订单合并为一张订单,新的"订单号"就取原来的尾部字母,"单价"取最低价,"数量" 取合计;2. 结果先按新的"订单号"升序排序,再按"器件号"升序排序;3. 最终记录的处理结果保存在od_new表中;4. 最后将程序保存为prog1.prg,并执行该程序。 简单应用题答案: 1、Sele * from order_list where 总金额>(sele avg(总金额) from order_list) order by 客户号 into table results 综合应用题答案:程序PROG1.PRG内容如下: USE OD_BAK COPY STRUCTURE TO OD_NEW SELECT RIGHT(订单号,1) AS 新订单号,器件名,器件号,RIGHT(订单号,1)+器件号 AS NEWNUM FROM OD_BAK GROUP BY NEWNUM ; ORDER BY 新订单号,器件号 INTO CURSOR AAA DO WHILE NOT EOF() SELECT MIN(单价) AS 最低价,SUM(数量) AS 数量合计 FROM OD_BAK WHERE RIGHT(订单号,1)=AAA.新订单号 AND ; 器件号=AAA.器件号 INTO ARRAY BBB INSERT INTO OD_NEW VALUES (AAA.新订单号,AAA.器件号,AAA.器件名,BBB(1,1),BBB(1,2)) ENDDO 第 22 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 1. 创建一个新的项目sdb_p,并在该项目中创建数据库sdb。 2. 将考生文件夹下的自由表student和sc添加到sdb数据库中。 3. 在sdb数据库中建立表course,表结构如下: 字段名 类型 宽度 课程号 字符型 2 课程名 字符型 20 学时 数值型 2 随后向表中输入6条记录,记录内容如下(注意大小写): 课程号 课程名 学时 c1 C++ 60 c2 Visual FoxPro 80 c3 数据结构 50 c4 JAVA 40 c5 Visual BASIC 40 c6 OS 60 4. 为course表创建一个主索引,索引名为cno、索引表达式为"课程号"。 二、简单应用(2小题,每题20分,计40分) 1. 根据sdb数据库中的表用SQL SELECT命令查询学生的学号、姓名、课程名和成绩,结果按 "课程名"升序排序,"课程名"相同时按"成绩"降序排序,并将查询结果存储到sclist表中。 2. 使用表单向导选择student表生成一个名为form1的表单。要求选择student表中所有字段,表单样式为"阴影式";按钮类型为"图片按钮";排序字段选择"学号"(升序);表单标题为"学生基本数据输入维护"。 三、综合应用(1小题,计30分) 1.打开基本操作中建立的数据库sdb,使用SQL的CREATE VIEW命令定义一个名称为SVIEW的视图,该视图的SELECT语句完成查询:选课数是3门以上(不包括3门)的每个学生的学号、姓名、平均成绩、最低分和选课数,并按"平均成绩" 降序排序。最后将定义视图的命令代码存放到命令文件T1.PRG中并执行该文件。接着 利用报表向导制作一个报表。要求选择SVIEW视图中所有字段;记录不分组;报表样式为"随意式";排序字段为 "学号"(升序);报表标题为"学生成绩统计一览表";报表文件名为pstudent。 2.设计一个名称为form2的表单,表单上有"浏览"(名称为Command1)和"打印"(Command2)两个命令按 钮。鼠标单击"浏览"命令按钮时,先打开数据库sdb,然后执行SELECT语句查询前面定义的SVIEW视图中的记录(两条命令不可以有多余命令),鼠标单击"打印"命令按钮时,调用报表文件pstudent浏览报表的内容(一条命令,不可以有多余命令)。 简单应用题答案: 1、 sele student.学号,姓名,课程名,成绩 from student,sc,course where student.学号=sc.学号 And sc.课 程号=course.课程号; order by 课程名,成绩 desc into table sclist 综合应用题答案: 1、程序T1.PRG的内容如下: CREATE VIEW SVIEW AS SELECT SC.学号,姓名,AVG(成绩) AS 平均成绩,MIN(成绩) AS 最低分,COUNT(课程号) AS 选课数 ; FROM SC,STUDENT WHERE SC.学号=STUDENT.学号 GROUP BY STUDENT.学号 HAVING COUNT(课程号)>3 ORDER BY 平均成绩 DESC 2、“浏览”命令按钮的CLICK的事件代码为: open database sdb select * from sview “打印”命令按钮的CLICK的事件代码为: report form pstudent.frx preview 第 23 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下的数据库salarydb中完成如下操作: 1. 在数据库salarydb中建立表dept,表结构如下: 字段名 类型 宽度 部门号 字符型 2 部门名 字符型 20 随后在表中输入5条记录,记录内容如下: 部门号 部门名 01 制造部 02 销售部 03 项目部 04 采购部 05 人事部 2. 为dept表创建一个主索引(升序),索引名和索引表达式均是"部门号"。 3. 通过"部门号"字段建立salarys表和dept表间的永久联系。 4. 为以上建立的联系设置参照完整性约束:更新规则为"级联";删除规则为"限制";插入规则为"限制"。 二、简单应用(2小题,每题20分,计40分) 1. 使用报表向导建立一个简单报表。要求选择salarys表中所有字段;记录不分组;报表样式为"随意式";列数为"1",字段部局为"列",方向为"纵向";排序字段为"雇员号"(升序);报表标题为 "雇员工资一览表";报表文件名为print1。 2. 在考生文件夹下有一个名称为form1的表单文件,表单中的两个命令按钮的click事件下的语句都有错误,其中一个按钮的名称有错误。请按如下要求进行修改,修改完成后保存所做的修改:(1) 将按钮"刘缆雇员工资"名称修改为"浏览雇员工资";(2) 单击"浏览雇员工资"命令按钮时,使用SELECT命令查询salarys表中所有字段信息供用户浏览;(3) 单击"退出表单"命令按钮时,关闭表单。注意:每处错误只能在原语句上进行修改,不能增加语句行。 三、综合应用(1小题,计30分) 1.请编写名称为change_c的程序并执行;该程序实现下面的功能:将雇员工资表salarys进行备份,备份文件名为baksals.dbf;利用"人事部"向"财务部"提供的雇员工资调整表c_salary1的"工资",对salarys表的"工资"进行调整(请注意:按"雇员号"相同进行调整,并且只是部分雇员的工资进行了调整,其他雇员的工资不 AS 实发工资 FROM SALARYS ORDER BY 部门号 DESC 综合应用题答案: “生成”命令按钮的CLICK事件代码为: OPEN DATA SALARYDB DO CASE CASE THISFORM.OPTIONGROUP1.VALUE=1 USE SVIEW SELECT * FROM SVIEW INTO TABLE GZ1.DBF CASE THISFORM.OPTIONGROUP1.VALUE=2 USE DEPT SELECT * FROM DEPT INTO TABLE BM1.DBF CASE THISFORM.OPTIONGROUP1.VALUE=3 SELECT DEPT.部门号,dept.部门名,SUM(工资) AS 工资,SUM(补贴) AS 补贴,SUM(奖励) AS 奖励 ,SUM(失业保险) ; AS 失业保险,SUM(医疗统筹) AS 医疗统筹 FROM DEPT,SALARYS WHERE DEPT.部门号=SALARYS.部门号 ; GROUP BY DEPT.部门号 ORDER BY DEPT.部门号 INTO TABLE HZ1.DBF ENDCASE “退出”命令按钮的CLICK事件代码为:THISFORM.RELEASE 第 25 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下的"商品销售"数据库中完成如下操作: 1.将"销售表"中的日期在2000年12月31日前(含2000年12月31日)的记录复制到一个新表"2001.dbf"中。 2.将"销售表"中的日期(日期型字段)在2000年12月31日前(含2000年12月31日)的记录物理删除。 3.打开"商品表",使用BROWSE命令浏览时,使用"文件"菜单中的选项将"商品表"中的记录生成文件名为"商品表.htm"的HTML格式文件。 4.为"商品表"创建一个主索引,索引名和索引表达式均是"商品号";为"销售表"创建一个普通索引(升序),索引名和索引表达式均是"商品号"。 二、简单应用(2小题,每题20分,计40分) 1. 在"商品销售"数据库中,根据"销售表"和"商品表"查询每种商品的商品号、商品名、单价、销售数量和销售金额(商品号、商品名取自商品表,单价和销售数量取自销售表,销售金额=单价*销售数量),结果按销售金额降序排序,并将查询结果存储到see_a表中。 2. 在考生文件夹下有一个名称为form1的表单文件,该表单中的三个命令按钮的Click事件下的语句有错误。请按如下要求进行修改,修改完成后保存所做的修改:(1) 单击"刷新标题"命令按钮时,将表单的标题改为"商品销售数据输入";(2) 单击"商品销售输入"命令按钮时,调用当前文件夹下的名称为sellcomm的表单文件打开数据输入表单;(3) 单击"输出销售报表"命令按钮时,调用当前文件夹下的名称为print1的报表文件对报表进行预览。注意:每处错误只能在原语句上进行修改,不可以增加语句行。 三、综合应用(1小题,计30分) 在考生文件夹下,对"商品销售"数据库完成如下综合应用:1.请编写名称为change_c的命令程序并执行,该程序实现下面的功能:将"商品表"进行备份,备份文件名为"SPBAK.dbf";将"商品表"中"商品号"前两位编号为"10"的商品的"单价"修改为出厂单价提高10%;使用"单价调整表"对商品表的部分商品出厂单价进行修改(按"商品号"相同)。 2.设计一个名称为form2的表单,上面有"调整"(名称Command1)和"退出"(名称Command2)两个命令按钮。单击"调整"命令按钮时,调用change_c命令程序实现商品单价调整;单击"退出"命令按钮时,关闭表单。注意:以上两个命令按钮均只含一条语句,不可以有多余的语句。 基本操作题答案: 1 sele * from 销售表 where 日期<={^2000-12-31} into table 2001 2 dele from 销售表 where 日期<={^2000-12-31} use 销售表 简单应用题答案: 1 Sele 商品表.商品号,商品名,销售表.单价,销售数量,销售表.单价*销售数量 AS 销售金额 from 商品表,销售表 ; WHERE 商品表.商品号=销售表.商品号 ORDER BY 销售金额 DESC INTO TABLE see_a 2、“刷新标题”命令按钮的CLICK事件代码为:ThisForm.CAPTION= "商品销售数据输入" “商品销售输入”命令按钮的CLICK事件代码为:DO FORM sellcomm “商品销售报表”命令按钮的CLICK事件代码为:REPORT FORM print1 PREVIEW 综合应用题答案: 1、程序change_c.PRG的内容如下: SELECT * FROM 商品表 INTO TABLE SPBAK UPDATE 商品表 SET 单价=出厂单价*1.1 WHERE LEFT(商品号,2)="10" USE 单价调整表 DO WHILE NOT EOF() UPDATE 商品表 SET 出厂单价=单价调整表.出厂单价 WHERE 商品号=单价调整表.商品号 ENDDO 2、“调整”命令按钮的CLICK事件代码为:DO CHANGE_C “退出” 命令按钮的CLICK事件代码为:THISFORM.RELEASE 第 26 套 一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下的"雇员管理"数据库中完成如下操作: 1.为"雇员"表增加一个字段名为EMAIL、类型为"字符"、宽度为20的字段。 2.设置"雇员"表中"性别"字段的有效性规则,性别取"男"或"女",默认值为"女"。 3.在"雇员"表中,将所有记录的EMAIL字段值使用"部门号"的字段值加上"雇员号"的字段值再加上"@xxxx.com.cn"进行替换。 4.通过"部门号"字段建立"雇员"表和"部门"表间的永久联系。 二、简单应用(2小题,每题20分,计40分) 1.请修改并执行名称为form1的表单,要求如下:(1) 为表单建立数据环境,并将"雇员"表添加到数据环境中;2) 将表单标题修改为"XXX公司雇员信息维护";(3) 修改命令按钮"刷新日期"的Click事件下的语句,使用SQL的更新命令,将"雇员"表中"日期"字段值更换成当前计算机的日期值。注意:只能在原语句上进行修改,不可以增加语句行。 2.建立一个名称为menu1的菜单,菜单栏有"文件"和"编辑浏览"两个菜单。"文件"菜单下有"打开"、"关闭退出"两个子菜单;"浏览"菜单下有"雇员编辑"、"部门编辑"和"雇员浏览"三个子菜单。 三、综合应用(1小题,计30分) 在考生文件夹下,对"雇员管理"数据库完成如下综合应用:1.建立一个名称为VIEW1的视图,查询每个雇员的部门号、部门名、雇员号、姓名、性别、年龄和EMAIL。 2.设计一个名称为form2的表单,表单上设计一个页框,页框有"部门"和"雇员"两个选项卡,在表单的右下角有一个"退出"命令按钮。要求如下:(1) 表单的标题名称为"商品销售数据输入";(2) 单击选项卡"雇员"时,在选项卡"雇员"中使用"表格"方式显示VIEW1视图中的记录(表格名称grdView1);(3) 单击选项卡"部门"时,在选项卡"部门"中使用"表格"方式显示"部门"表中的记录(表格名称为"grd部门");(4) 单击"退出"命令按钮时,关闭表单。 基本操作题答案: 2、重要提示,必须写成:性别=‘男’OR 性别=‘女’,否则不得分。 3、Replace all email with 部门号+雇员号+“@xxxx.com.cn” 简单应用题答案: 3、“刷新日期”命令按钮的CLICK事件代码为:update 雇员 SET 日期=date() 综合应用题答案: 1、create view view1 as sele 雇员.部门号,部门名,雇员号,姓名,性别,年龄,EMAIL FROM 雇员,部门 ; Where 雇员.部门号=部门.部门号 第 27 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 新建一个名为"供应"的项目文件。 2. 将数据库"供应零件"加入到新建的"供应"项目文件中。 3. 通过"零件号"字段为"零件"表和"供应"表建立永久联系("零件"是父表,"供应"是子表)。 4. 为"供应"表的数量字段设置有效性规则: 数量必须大于0并且小于9999;错误提示信息是"数量超范围"(注意: 公式 小学单位换算公式大全免费下载公式下载行测公式大全下载excel公式下载逻辑回归公式下载 必须为 数量>0 .and. 数量<9999)。 二、简单应用(2小题,每题20分,计40分) 1. 用SQL语句完成下列操作:列出所有与"红"颜色零件相关的信息(供应商号,工程号和数量),并将检索结果按数量降序排序存放于表sup_temp中。 2. 建立一个名为m_quick的快捷菜单,菜单中有两个菜单项"查询"和"修改"。然后在表单myform中的RightClick事件中调用快捷菜单m_quick。 三、综合应用(1小题,计30分) 设计名为mysupply的表单(表单的控件名和文件名均为mysupply)。表单的标题为"零件供应情况"。表单中有一个表格控件和两个命令按钮"查询"(名称为Command1)和"退出"(名称为Command2)。运行表单时,单击"查询"命令按钮后,表格控件(名称grid1)中显示了工程号"J4"所使用的零件的零件名、颜色、和重量。单击"退出"按钮关闭表单。 简单应用题答案: 1、 sele 供应商号,工程号,数量 FROM 供应 WHERE 零件号 IN (SELE 零件号 FROM 零件 WHERE 颜色=”红”) ; Order by 数量 DESC into table sup_temp 综合应用题答案: 先将表单中的grid1表格的recordsourcetype属性设置成“表”,然后写 “查询”命令按钮的CLICK事件代码为: select 零件名,颜色,重量 from 零件 where 零件号 in (select 零件号 from 供应 where 工程号="J4") into table ls thisform.grid1.recordsource="ls" “退出”命令按钮的CLICK事件代码为:thisform.release 第 28 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 新建一个名为"图书管理"的项目。 2. 在项目中建立一个名为"图书"的数据库。 3. 将考生文件夹下的所有自由表添加到"图书"数据库中。 4. 在项目中建立查询book_qu:查询价格大于等于10的图书(book表)的所有信息,查询结果按价格降序排序。 二、简单应用(2小题,每题20分,计40分) 1. 用SQL语句完成下列操作:检索"田亮"所借图书的书名、作者和价格,结果按价格降序存入booktemp表中。 2. 在考生文件夹下有一个名为menu_lin的下拉式菜单,请设计顶层表单frmmenu,将菜单menu_lin加入到该表单中,使得运行表单时菜单显示在本表单中,并在表单退出时释放菜单。 三、综合应用(1小题,计30分) 设计名为formbook的表单(控件名为form1,文件名为formbook)。表单的标题设为"图书情况统计"。表单中有一个组合框(名称为Combo1)、一个文本框(名称为Text1)和两个命令按钮"统计"(名称为Command1)和"退出"(名称为Command2)。 运行表单时,组合框中有三个条目"清华"、"北航"、"科学"(只有三个出版社名称,不能输入新的)可供选择,在组合框中选择出版社名称后,如果单击"统计"命令按钮,则文本框显示出"图书"表中该出版社图书的总数。 单击"退出"按钮关闭表单。 简单应用题答案: 1、sele 书名,作者,价格 FROM book,borrows,loans where book.图书登记号=loans.图书登记号 and ; Loans.借书证号=borrows.借书证号 and 姓名=”田亮” order by 价格 desc into table booktemp 2、建一个frmmenu的表单,将表单的showwindows属性值设置为2,然后在表单的init事件代码中加入:DO menu_lin.mpr with this,在表单的destory事件代码中加入:release menu menu_lin extended 。 注意其中extended不可少。 综合应用题答案: 表单的CAPTION属性设为“图书统计情况”,组合框的rowsource属性设为“清华,北航,科学”, rowsourcetype属性设为1,style属性设为2-下拉列表框。 表单的“统计”命令按钮的CLICK事件代码为: close all select count(*) from book where 出版社=thisform.combo1.value into array Temp thisform.text1.value=temp(1) 表单的“退出”命令按钮的CLICK事件代码为:thisform.release 第 29 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 根据SCORE数据库,使用查询向导建立一个含有学生"姓名"和"出生日期"的标准查询QUERY31.QPR。 2. 从SCORE数据库中删除视图NEWVIEW。 3. 用SQL命令向SCORE1表插入一条记录:学号为"993503433"、课程号为"0001"、成绩是99。 4. 打开表单MYFORM34,向其中添加一个"关闭"命令按钮(名称为Command1),单击此按钮关闭表单(不可以有多余的命令)。 二、简单应用(2小题,每题20分,计40分) 1. 建立视图NEW_VIEW,该视图含有选修了课程但没有参加考试(成绩字段值为NULL)的学生信息(包括"学号"、"姓名"和"系部"3个字段)。 2. 建立表单MYFORM3,在表单上添加表格控件(名称为grdCourse),并通过该控件显示表course的内容(要求RecordSourceType属性必须为0)。 三、综合应用(1小题,计30分) 利用菜单设计器建立一个菜单TJ_MENU3,要求如下:(1) 主菜单(条形菜单)的菜单项包括"统计"和"退出"两项;(2) "统计"菜单下只有一个菜单项"平均",该菜单项的功能是统计各门课程的平均成绩,统计结果包含"课程名"和"平均成绩"两个字段,并将统计结果按课程名升序保存在表NEWTABLE中。(3) "退出"菜单项的功能是返回VFP系统菜单(SET SYSMENU TO DEFAULT)。菜单建立后,运行该菜单中各个菜单项。 简单应用题答案: 1、 create view new_view as sele 学号,姓名,系部 from student where 学号 in (sele 学号 from score1 where 成绩 is null) 2、 在表单上添加表格控件(名称为grdCourse),其中有一处C必须大写,否则无分。 综合应用题答案: 菜单项“平均”的过程代码为: OPEN DATABASE SCORE SELECT 课程名, AVG(成绩) as 平均成绩 FROM course,score1 where Course.课程号 = Score1.课程号 GROUP BY 课程名 ; ORDER BY 课程名 INTO TABLE NEWTABLE 菜单项“退出”的命令代码为:set sysmnu to default 第 30 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 建立数据库BOOKAUTH.DBC,把表BOOKS.DBF和AUTHORS.DBF添加到该数据库。 2. 为AUTHORS表建立主索引,索引名"PK",索引表达式"作者编号"。 3. 为BOOKS表分别建立两个普通索引,其一索引名为"RK",索引表达式为"图书编号";其二索引名和索引表达式均为"作者编号"。(注意PK和RK的区别) 4. 建立AUTHORS表和BOOKS表之间的联系。 二、简单应用(2小题,每题20分,计40分) 1.打开表单MYFORM44,把表单(名称为Form1)标题改为"欢迎您",将文本"欢迎您访问系统"(名称为label1的标签)的字号改为25,字体改为隶书。再在表单上添加"关闭"(名称为Command1)命令按钮,单击此按钮关 量=该种外币的"现钞买入价"* 该种外币"持有数量"。单击"退出"按钮时关闭表单。 简单应用题答案: 1、 sele 外币名称,持有数量 from rate_exchange,currency_sl where Currency_sl.外币代码 = Rate_exchange. 外币代码 and ; 姓名 = "林诗因" order by 持有数量 into table rate_temp 综合应用题答案:“查询”命令按钮的CLICK事件代码为: select 现钞买入价*持有数量 from Rate_exchange,Currency_sl where Currency_sl.外币代码 = Rate_exchange.外币代码 ; and 姓名 =alltrim(thisform.text1.value) group by 姓名into array sl thisform.text2.value=sl 第 32 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 新建一个名称为"外汇数据"的数据库。 2. 将自由表rate_exchange和currency_sl添加到数据库中。 3. 通过"外币代码"字段为rate_exchange和currency_sl建立永久联系(如果必要请建立相关索引)。 4. 打开表单文件test_form,该表单的界面如下图所示,请将标签"用户名"和"口令"的字体都改为"黑体"。 二、简单应用(2小题,每题20分,计40分) 1. rate_pro.prg中的程序功能是计算出"林诗因"所持有的全部外币相当于人民币的价值数量,summ中存放的是结果。注意:某种外币相当于人民币数量的计算公式:人民币价值数量 = 该种外币的"现钞买入价"* 该种外币"持有数量"。请在指定位置修改程序的语句,不得增加或删除程序行,请保存所做的修改。 2. 建立一个名为menu_rate的菜单,菜单中有两个菜单项"查询"和"退出"。"查询"项下还有子菜单,子菜单有"日元"、"欧元"、"美元"三个选项。在"退出"菜单项下创建过程,该过程负责返回系统菜单。 三、综合应用(1小题,计30分) 设计一个文件名为myrate的表单,所有控件的属性必须在表单设计器的属性窗口中设置。表单的标题为"外汇持有情况"。表单中有一个选项组控件(命名为myOption和两个命令按钮"统计"(command1)和"退出"(command2)。其中,选项组控件有三个按钮"日元"、"美元"和"欧元"。运行表单时,首先在选项组控件中选择"日元"、"美元"或"欧元",单击"统计"命令按钮后,根据选项组控件的选择将持有相应外币的人的姓名和持有数量分别存入rate_ry.dbf(日元)或rate_my.dbf(美元)或rate_oy(欧元)中。单击"退出"按钮时关闭表单。表单建成后,要求运行表单,并分别统计"日元"、"美元"和"欧元"的持有数量。 简单应用题答案: 1、 第一处将“find”改为“loca” 注意:loca 只准写四个字符,多写扣7分。 2、 第二处将“while not eof()”改为“do while not eof()” 3、 第三处将“summ=summ+a[1] * rate_exchange.持有数量”改为“summ=summ+a[1]*currency_sl.持有数 量”注意:[ ]不要改( )。 综合应用题答案:“统计”命令按钮的CLICK事件代码为: DO CASE CASE thisform.myOption.option1.value=1 SELECT 姓名,持有数量 FROM rate_exchange,Currency_sl where rate_exchange.外币代码=Currency_sl.外币代码 and ; 外币名称="日元" INTO TABLE rate_ry CASE thisform.myOption.option2.value=1 SELECT 姓名,持有数量 FROM rate_exchange,Currency_sl where rate_exchange.外币代码=Currency_sl.外币代码 and ; 外币名称="美元" INTO TABLE rate_my CASE thisform.myOption.option3.value=1 SELECT 姓名,持有数量 FROM rate_exchange,Currency_sl where rate_exchange.外币代码=Currency_sl.外币代码 and ; 外币名称="欧元" INTO TABLE rate_oy ENDCASE “退出”命令按钮的CLICK事件代码为:thisform.release 第 33 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 新建一个名为"学生管理"的项目文件。 2. 将"学生"数据库加入到新建的项目文件中。 3. 将"教师"表从"学生"数据库中移出,使其成为自由表。 4. 通过"学号"字段为"学生"和"选课"表建立永久联系(如果必要请先建立有关索引)。 二、简单应用(2小题,每题20分,计40分) 1. 用SQL语句对自由表"教师"完成下列操作:将职称为"教授"的教师新工资一项设置为原工资的120%,其他教师的新工资与原工资相等;插入一条新记录,该教师的信息:姓名"林红",职称"讲师",原工资10000,新工资10200,同时将你所使用的SQL语句存储于新建的文本文件teacher.txt中(两条更新语句,一条插入语句,按顺序每条语句占一行)。 2. 使用查询设计器建立一个查询文件stud.qpr,查询要求:选修了"英语"并且成绩大于等于70的学生的姓名和年龄,查询结果按年龄升序存放于stud_temp.dbf表中。 三、综合应用(1小题,计30分) 设计名为mystu的表单(文件名为mystu,表单名为form1),所有控件的属性必须在表单设计器的属性窗口中设置。表单的标题为"计算机系学生选课情况"。表单中有一个表格控件(Grid1),该控件的RecordSourceType的属性设置为4 (SQL说明)和两个命令按钮"查询"(command1)和"退出"(command2)。 运行表单时,单击"查询"命令按钮后,表格控件中显示6系(系字段值等于字符6)的所有学生的姓名、选修的课程名和成绩。单击"退出"按钮关闭表单。 简单应用题答案: 1、 teacher.txt中的三条SQL语句为: update 教师 set 新工资=原工资*1.2 where 职称="教授" update 教师 set 新工资=原工资 where 职称!="教授" insert into 教师 values("林红","讲师",10000,10200) 综合应用题答案:“查询”命令按钮的CLICK事件代码为: thisform.grid1.recordsource ="sele 姓名,课程名称,成绩 from学生,选课,课程 where 学生.学号=选课.学号 and; 课程.课程号=选课.课程号 and 系='6' " “退出”命令按钮的CLICK事件代码为:thisform.release 第 34 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 新建一个名为"饭店管理"的项目。 2. 在新建的项目中建立一个名为"使用零件情况"的数据库,并将考生目录下的所有自由表添加到该数据库中。 3. 修改"零件信息"表的结构,增加一个字段,字段名为"规格",类型为字符型,长度为8。 4. 打开并修改mymenu菜单文件,为菜单项"查找"设置快捷键Ctrl+T。 二、简单应用(2小题,每题20分,计40分) 1. 用SQL语句完成下列操作:查询与项目号"s1"的项目所使用的任意一个零件相同的项目号、项目名、零件号和零件名称(包括项目号s1自身),结果按项目号降序排序,并存放于item_temp.dbf中,同时将你所使用的SQL语句存储于新建的文本文件item.txt中。 2. 根据零件信息、使用零件和项目信息三个表,利用视图设计器建立一个视图view_item,该视图的属性列由项目号、项目名、零件名称、单价、数量组成,记录按项目号升序排序,筛选条件是:项目号为"s2"。 三、综合应用(1小题,计30分) 设计一个文件名和表单名均为form_item的表单,所有控件的属性必须在表单设计器的属性窗口中设置。表单的标题设为"使用零件情况统计"。表单中有一个组合框(combo1)、一个文本框(text1)和两个命令按钮"统计"(command1)和"退出"(command2)。 运行表单时,组合框中有三个条目"s1"、"s2"、"s3"(只有三个,不能输入新的,RowSourceType的属性为"数组",Style的属性为"下拉列表框")可供选择,单击"统计"命令按钮以后,则文本框显示出该项目所用零件的金额(某种零件的金额=单价*数量)。单击"退出"按钮关闭表单。 简单应用题答案: 1 select 项目信息.项目号, 项目名,零件信息.零件号,零件名称 from 零件信息,使用零件,项目信息 where 使用零件.项目号; =项目信息.项目号 and 零件信息.零件号=使用零件.零件号 and 使用零件.零件号in (select 零件号 from 使用零件 where ; 项目号="s1") order by 使用零件.项目号 desc into table item_temp 综合应用题答案: 表单的load事件代码为: public ss(3) ss(1)='s1' ss(2)='s2' ss(3)='s3' combo1的RowSourceType的属性为"数组",RowSource的属性为ss(3), Style的属性为"下拉列表框"。 “统计”命令按钮的CLICK事件代码为: SELECT SUM (单价*数量) FROM 零件信息,使用零件,项目信息 where 使用零件.项目号=项目信息.项目号 and 零件信息.零件号=使用零件.零件号 and ; 使用零件.项目号=ALLTRIM(THISFORM.combo1.VALUE) GROUP BY 项目信息.项目号 INTO ARRAY TEMP THISFORM.TEXT1.VALUE=TEMP “退出”命令按钮的CLICK事件代码为:thisform.release 第 35 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 建立一个名称为"外汇管理"的数据库。 2. 将表currency_sl.DBF和rate_exchange.DBF添加到新建立的数据库中。 3. 将表rate_exchange.DBF中"买出价"字段的名称改为"现钞卖出价"。 4. 通过"外币代码"字段建立表rate_exchange.DBF和currency_sl.DBF之间的一对多永久联系(需要首先建立相关索引)。 二、简单应用(2小题,每题20分,计40分) 1. 在建立的"外汇管理"数据库中利用视图设计器建立满足如下要求的视图:1) 视图按顺序包含列Currency_sl.姓名、Rate_exchange.外币名称、Currency_sl.持有数量和表达式Rate_exchange.基准价* Currency_sl.持有数量;2) 按"Rate_exchange.基准价* Currency_sl.持有数量"降序排序;3) 将视图保存为view_rate。 2. 使用SQL SELECT语句完成一个汇总查询,结果保存在results.dbf表中,该表含有"姓名"和"人民币价值"两个字段(其中"人民币价值"为每人持有外币的"Rate_exchange.基准价* Currency_sl.持有数量"的合计),结果按"人民币价值"降序排序。 三、综合应用(1小题,计30分) 设计一个表单,所有控件的属性必须在表单设计器的属性窗口中设置,表单文件名为"外汇浏览",表单界面如下所示: 其中:1. "输入姓名"为标签控件Label1; 2. 表单标题为"外汇查询"; 3. 文本框的名称为Text1,用于输入要查询的姓名,如张三丰;4. 表格控件的名称为Grid1,用于显示所查询人持有的外币名称和持有数量,RecordSourceType的属性为0(表);5. "查询"命令按钮的名称为Command1,单击该按钮时在表格控件Grid1中按持有数量升序显示所查询人持有的外币名称和数量(如上图所示),并将结果存储在以姓名命名的DBF表文件中,如张三丰.DBF;6. "退出"命令按钮的名称为Command2,单击该按钮时关闭表单。完成以上表单设计后运行该表单,并分别查询"林诗因"、"张三丰"和"李寻欢"所持有的外币名称和持有数量。 简单应用题答案: 2、 sele 姓名,sum(基准价*持有数量) AS 人民币价值 FROM currency_sl,rate_exchange where Currency_sl. 外币代码=; rate_exchange.外币代码 GROUP BY 姓名 ORDER BY 人民币价值 DESC INTO TABLE results 综合应用题答案: “查询”命令按钮的CLICK事件代码为: a=ALLTRIM(THISFORM.text1.VALUE) sele 外币名称,持有数量 from rate_exchange,currency_sl where rate_exchange.外币代码=currency_sl.外币代码 and ; 姓名=a order by 持有数量 into table(a) thisform..Grid1.RECORDSOURCE="(a)" “退出”命令按钮的CLICK事件代码为:thisform.release 第 36 套(本套时间较长,请多练熟,考试时抓紧时间) 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 用SQL语句从rate_exchange.dbf表中提取外币名称、现钞买入价和卖出价三个字段的值并将结果存入rate_ex.dbf表(字段顺序为外币名称、现钞买入价、卖出价,字段类型和宽度与原表相同,记录顺序与原表相同),并将相应的SQL语句保存为文本文件one.txt。 2. 用SQL语句将rate_exchange.dbf表中外币名称为"美元"的卖出价修改为829.01,并将相应的SQL语句保存为文本文件two.txt。 3. 利用报表向导根据rate_exchange.dbf表生成一个外币汇率报表,报表按顺序包含外币名称、现钞买入价和卖出价三列数据,报表的标题为"外币汇率"(其他使用默认设置),生成的报表文件保存为rate_exchange。 4. 打开生成的报表文件rate_exchange进行修改,使显示在标题区域的日期改在每页的注脚区显示。 二、简单应用(2小题,每题20分,计40分) 1. 设计一个如下图所示的时钟应用程序,具体描述如下: 单编号升序排序,查询结果存放在results.dbf文件中,并要求将完整的SQL SELECT语句保存在SQL.PRG文件中。 三、综合应用(1小题,计30分) 建立满足如下要求的应用并运行,所有控件的属性必须在表单设计器的属性窗口中设置:1. 建立一个表单myform(文件名和表单名均为myform),其中包含两个表格控件,第一个表格控件名称是grd1,用于显示表customer中的记录,第二个表格控件名称是grd2,用于显示与表customer中当前记录对应的order表中的记录。要求两个表格尺寸相同、水平对齐。2. 建立一个菜单mymenu,该菜单只有一个菜单项"退出",该菜单项对应于一个过程,并且含有两条语句,第一条语句是关闭表单myform,第二条语句是将菜单恢复为默认的系统菜单。3.在myform的Load事件中执行生成的菜单程序mymenu.mpr。 简单应用题答案: 1、第一处将(此处空行)改为 “use customer”,第二处将“scan while ”改为“scan for” 2、程序SQL.prg的内容如下: sele 公司名称,订单编号,金额,送货方式 from customer,order where customer.客户编号=order.客户编号 ; ORDER BY 公司名称,order.订单编号 into table results 综合应用题答案: 1、添加两个表格到新建的表单中,尺寸相同,水平居中。右击表单,选择“数据环境”,在数据环境中添加"customer"和"order",建立好两表的关联。然后右键单击表格grd1,在弹出的快捷菜单中选择“生成器”,弹出表格生成器对话框,在“1.表格项”中选择"custmer",将表中所有字段添加到选定字段中,以同样的方法设置第二个表格的生成器。然后选择“4.关系”选项卡,把“父表中的关键字段”设置为customer.客户编号,把“子表中的相关索引”设置为客户编号。 2、菜单项"退出"的过程代码为: Myform.release Set sysmenu to defa 表单的load事件代码为:do mymenu.mpr 第 38 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 用SQL INSERT语句插入元组("p7","PN7",1020)到"零件信息"表(注意不要重复执行插入操作),并将相应的SQL语句存储在文件one.prg中。 2. 用SQL DELETE语句从"零件信息"表中删除单价小于600的所有记录,并将相应的SQL语句存储在文件two.prg中。 3. 用SQL UPDATE语句将"零件信息"表中零件号为"p4"的零件的单价更改为1090,并将相应的SQL语句存储在文件Three.prg中。 4. 打开菜单文件mymenu.mnx,然后生成可执行的菜单程序mymenu.mpr。 二、简单应用(2小题,每题20分,计40分) 1.modi1.prg程序文件中SQL SELECT语句的功能是查询哪些零件(零件名称)目前用于三个项目,并将结果按升序存入文本文件results.txt。给出的SQL SELECT语句中在第1、3、5行各有一处错误,请改正并运行程序(不可以增、删语句或短语,也不可以改变语句行)。 2.根据项目信息(一方)和使用零件(多方)两个表、利用一对多报表向导建立一个报表,报表中包含项目号、项目名、项目负责人、(联系)电话、(使用的)零件号和数量等6个字段,报表按项目号升序排序,报表样式为经营式,在总结区域(细节及总结)包含零件使用数量的合计,报表标题为"项目使用零件信息",报表文件名为report。 三、综合应用(1小题,计30分) 按如下要求完成综合应用(所有控件的属性必须在表单设计器的属性窗口中设置):1. 根据"项目信息"、"零件信息"和"使用零件"三个表建立一个查询(注意表之间的连接字段),该查询包含项目号、项目名、零件名称和(使用)数量四个字段,并要求先按项目号升序排序、再按零件名称降序排序,保存的查询文件名为chaxun; 2. 建立一个表单,表单名和文件名均为myform,表单中含有一个表格控件Grid1,该表格控件的数据源是前面建立的查询chaxun;然后在表格控件下面添加一个"退出"命令按钮Command1,要求命令按钮与表格控件左对齐、并且宽度相同,单击该按钮时关闭表单。 基本操作题答案:注意,文件扩展名为prg,不是txt。 1、insert into 零件信息 values ("p7","PN7",1020) 2、delete from 零件信息 where 单价<600 3、UPDATE 零件信息 SET 单价=1090 WHERE 零件号="p4" 简单应用题答案: 1、第一行将“=”改“ IN ”。 第三行将“项目号”改为“零件号”。第五行将“IN”改为“TO” 第 39 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下,打开Ecommerce数据库,完成如下操作: 1.打开Ecommerce数据库,并将考生文件夹下的自由表OrderItem添加到该数据库。 2.为OrderItem表创建一个主索引,索引名为PK,索引表达式为"会员号+商品号";再为OrderItem创建两个普通索引(升序),一个的索引名和索引表达式均是"会员号";另一个的索引名和索引表达式均是"商品号"。 3.通过"会员号"字段建立客户表Customer和订单表OrderItem之间的永久联系(注意不要建立多余的联系)。 4.为以上建立的联系设置参照完整性约束:更新规则为"级联";删除规则为"限制";插入规则为"限制"。 二、简单应用(2小题,每题20分,计40分) 1. 建立查询qq,查询会员的会员号(来自Customer表)、姓名(来自Customer表)、会员所购买的商品名(来自article表)、单价(来自OrderItem表)、数量(来自OrderItem表)和金额(OrderItem.单价 * OrderItem.数量),结果不要进行排序,查询去向是表ss。查询保存为qq.qpr,并运行该查询。 2. 使用表单向导选择客户表Customer生成一个文件名为myform的表单。要求选择客户表Customer表中所有字段,表单样式为阴影式;按钮类型为图片按钮;排序字段选择会员号(升序);表单标题为"客户基本数据输入维护"。 三、综合应用(1小题,计30分) 在考生文件夹下,打开Ecommerce数据库,完成如下综合应用(所有控件的属性必须在表单设计器的属性窗口中设置):设计一个名称为myforma的表单(文件名和表单名均为myforma),表单的标题为"客户商品订单基本信息浏览"。表单上设计一个包含三个选项卡的页框(pageframe1)和一个"退出"命令按钮(command1)。要求如下:1. 为表单建立数据环境,按顺序向数据环境添加Article表、Customer表和OrderItem表。2. 按从左至右的顺序三个选项卡的标签(标题)的名称分别为"客户表"、"商品表"和"订单表",每个选项卡上均有一个表格控件,分别显示对应表的内容(从数据环境中添加,客户表为Customer、商品表为Article、订单表为OrderItem)。3. 单击"退出"按钮关闭表单。 第 40 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下,打开Ecommerce数据库,完成如下操作: 1.首先打开Ecommerce数据库,然后为表Customer增加一个字段,字段名为email、类型为字符、宽度为20。 2.为Customer表的"性别"字段定义有效性规则,规则表达式为:性别 $ "男女",出错提示信息为"性别必须是男或女",默认值为"女"。 3.通过"会员号"字段建立客户表Customer和订单表OrderItem之间的永久联系;通过"商品号"字段建立商品表Article和订单表OrderItem之间的永久联系。 4.为以上建立的联系设置参照完整性约束:更新规则为"级联";删除规则为"限制";插入规则为"限制"。 二、简单应用(2小题,每题20分,计40分) 在考生文件夹下,打开Ecommerce数据库,完成如下简单应用: 1. 使用报表向导建立一个简单报表。要求选择客户表Customer中所有字段;记录不分组;报表样式为随意式;列数为"1",字段布局为"列",方向为"纵向";排序字段为"会员号",升序;报表标题为"客户信息一览表";报表文件名为myreport。 2.使用命令建立一个名称为sb_view的视图,并将定义视图的命令代码存放到命令文件pview.prg。视图中包括客户的会员号(来自Customer表)、姓名(来自Customer表)、客户所购买的商品名(来自article表)、单价(来自OrderItem表)、数量(来自OrderItem表)和金额(OrderItem.单价 * OrderItem.数量),结果按会员号升序排序。 三、综合应用(1小题,计30分) 在考生文件夹下,打开Ecommerce数据库,完成如下综合应用(所有控件的属性必须在表单设计器的属性窗口中设置):设计一个文件名和表单名均为myform的表单,表单标题为"客户基本信息"。要求该表单上有"女客户信息"(Command1)、"客户购买商品情况"(Command2)、"输出客户信息"(Command3)和"退出"(Command4)四个命令按钮。各命令按钮功能如下:1) 单击"女客户信息"按钮,使用SQL的SELECT命令查询客户表Customer中"女"客户的全部信息。2) 单击"客户购买商品情况"按钮,使用SQL的SELECT命令查询简单应用中创建的sb_view视图中的全部信息。3) 单击"输出客户信息"按钮,调用简单应用中设计的报表文件myreport在屏幕上预览(PREVIEW)客户信息。4) 单击"退出"按钮,关闭表单。 简单应用题答案: 3、create view sb_view as sele customer.会员号,姓名,商品名,orderitem .单价, orderitem.数量,orderitem.单价* ; orderitem.数量From customer,article,orderitem where customer.会员号=orderitem.会员号 and orderitem.商品号; =article.商品号 Order by customer.会员号 综合应用题答案: “女客户信息”命令按钮的CLICK事件代码为:select * from Customer where 性别="女" “客户购买商品情况”命令按钮的CLICK事件代码为:open database ecommerce select * from sb_view “输出客户信息”命令按钮的CLICK事件代码为:report form myreport preview “退出”命令按钮的CLICK事件代码为:thisform.release 第 41 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 从数据库stock中移去表stock_fk(不是删除)。 2. 将自由表stock_name添加到数据库中。 3. 为表stock_sl建立一个主索引,索引名和索引表达式均为"股票代码"。 4. 为stock_name表的股票代码字段设置有效性规则,"规则"是:left(股票代码,1)="6",错误提示信息是"股票代码的第一位必须是6"。 二、简单应用(2小题,每题20分,计40分) 1. 用SQL完成下列操作:列出所有赢利(现价大于买入价)的股票简称、现价、买入价和持有数量,并将检索结果按持有数量降序排序存储于表stock_temp中。 2. 使用一对多报表向导建立报表。要求:父表为stock_name,子表为stock_sl,从父表中选择字段:"股票简称";从子表中选择全部字段;两个表通过"股票代码"建立联系;按股票代码升序排序;报表标题为:"股票持有情况";生成的报表文件名为stock_report。 三、综合应用(1小题,计30分) 设计名为mystock的表单(控件名,文件名均为mystock)。表单的标题为:"股票持有情况"。表单中有两个文本框(text1和text2)和两个命令按钮"查询"(名称为Command1)和"退出"(名称为Command2)。运行表单时,在文本框text1中输入某一股票的汉语拼音,然后单击"查询",则text2中会显示出相应股票的持有数量。单击"退出"按钮关闭表单。 简单应用题答案: 1、sele 股票简称,现价,买入价,持有数量 from stock_name,stock_sl where (stock_sl.股票代码=stock_name.股票代码); And 现价>买入价 order by 持有数量 desc into table stock_temp 综合应用题答案: “查询”命令按钮的CLICK事件代码为: SELE Stock_sl.持有数量 FROM stock_name,stock_sl where Stock_name.股票代码 = Stock_sl.股票代码 and 汉语拼音; =alltrim(thisform.text1.value) into array temp THISFORM.TEXT2.VALUE=temp(1) “退出”命令按钮的CLICK事件代码为:thisform.release 第 42 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 新建一个名为"学生"的数据库。 2. 将"学生"、"选课"、"课程"三个自由表添加到新建的数据库"学生"中。 3. 通过"学号"字段为"学生"表和"选课"表建立永久联系。 4. 为上面建立的联系设置参照完整性约束:更新和删除规则为"级联",插入规则为"限制"。 二、简单应用(2小题,每题20分,计40分) 1. 用SQL语句完成下列操作:将选课在5门课程以上(包括5门)的学生的学号、姓名、平均分和选课门数按平均分降序排序,并将结果存放于数据库表stu_temp(字段名为学号、姓名、平均分和选课门数)。 2. 建立一个名为menu_lin的下拉式菜单,菜单中有两个菜单项"查询"和"退出"。"查询"项下还有一个子菜单,子菜单有"按姓名"和"按学号"两个选项。在"退出"菜单项下创建过程,该过程负责使程序返回到系统菜单。 三、综合应用(1小题,计30分) 设计名为mystu的表单(控件名为form1,文件名为mystu)。表单的标题为"学生学习情况统计"。表单中有一个选项组控件(命名为myOption)和两个命令按钮"计算"(名称为Command1)和"退出"(名称为Command2)。其中,选项组控件有两个按钮"升序"(名称为Option1)和"降序"(名称为Option2)。 运行表单时,首先在选项组控件中选择"升序"或"降序",单击"计算"命令按钮后,按照成绩"升序"或"降序"(根据选项组控件)将选修了"C语言"的学生学号和成绩分别存入stu_sort1.dbf和stu_sort2.dbf文件中。单击"退出"按钮关闭表单。 简单应用题答案: 1、 sele 学生.学号,姓名,sum(成绩) as 总成绩,count(选课.学号) AS 选课门数 from 选课,学生 WHERE 学 生.学号=选课.学号; GROUP BY 选课.学号 HAVING COUNT(选课.学号)>=5 INTO TABLE aaa sele 学号,姓名,总成绩/选课门数 as 平均分,选课门数 from aaa order by 平均分 DESC INTO TABLE stu_temp 综合应用题答案: “计算”命令按钮的CLICK事件代码为: DO CASE CASE THISFORM.myOption.VALUE=1 SELECT 学生.学号,成绩 FROM 学生,选课,课程 where 学生.学号=选课.学号 and 课程.课程号=选课.课程号 and; 课程名称="C语言" ORDER BY 成绩 INTO TABLE stu_sort1 CASE THISFORM.myOption.VALUE=2 SELECT 学生.学号,成绩 FROM 学生,选课,课程 where 学生.学号=选课.学号 and 课程.课程号=选课.课程号 and; 课程名称="C语言" ORDER BY 成绩 desc INTO TABLE stu_sort2 ENDCASE “退出”命令按钮的CLICK事件代码为:thisform.release 第 43 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 打开数据库SCORE_MANAGER,该数据库中含三个有联系的表STUDENT、SCORE1和COURSE,根据已经建立好的索引,建立表之间联系。 2. 为COURSE表增加字段:开课学期(N,2,0)。 3. 为SCORE1表"成绩"字段设置字段有效性规则:成绩>=0,出错提示信息是:"成绩必须大于或等于零"。 4. 将SCORE1表"成绩"字段的默认值设置为空值(NULL)。 二、简单应用(2小题,每题20分,计40分) 1. 在SCORE_MANAGER数据库中查询学生的姓名和年龄(计算年龄的公式是:2003-Year(出生日期),年龄作为字段名),结果保存在一个新表NEW_TABLE1中。使用报表向导建立报表NEW_REPORT1,用报表显示NEW_TABLE1的内容。报表中数据按年龄升序排列,报表标题是"姓名-年龄",其余参数使用缺省参数。 2. 在SCORE_MANAGER数据库中查询没有选修任何课程的学生信息,查询结果包括"学号"、"姓名"和"系部"字段,查询结果按学号升序保存在一个新表NEW_TABLE2中。 三、综合应用(1小题,计30分) SCORE_MANAGER数据库中含有三个数据库表STUDENT、SCORE1和COURSE。 为了对SCORE_MANAGER数据库数 意:字段名"开课单位"是在基本操作中根据"开课系部"修改后的字段名)。 三、综合应用(1小题,计30分) SCORE_MANAGER数据库中含有三个数据库表STUDENT、SCORE1和COURSE。为了对SCORE_MANAGER数据库数据进行查询,设计一个表单Myform3(控件名为form1,表单文件名为Myform3)。表单标题为"成绩查询";表单有"查询"(名称为Command1)和"退出"(名称为Command2)两个命令按钮。表单运行时,单击"查询"按钮,查询每门课程的最高分,查询结果中含"课程名"和"最高分"字段,结果按课程名升序保存在表NEW_TABLE3。单击"退出"按钮,关闭表单。 基本操作题答案: 4、sele * from score1 ORDER BY 学号,成绩 DESC INTO TABLE NEW_ORDER 简单应用题答案: 1、sele count(dist 学号) AS 学生人数 FROM SCORE1 INTO TABLE NEW_TABLE 2、sele 课程名,开课单位 form course where 课程号 not in (sele 课程号 from score1) order by 课程名 ; into table new_table2 综合应用题答案: “查询”命令按钮的CLICK事件代码为: SELECT 课程名,MAX(成绩) AS 最高分 FROM course,score1,student where Student.学号=Score1.学号 and ; Course.课程号=Score1.课程号 GROUP BY 课程名 INTO TABLE NEW_TABLE3 “退出” 命令按钮的CLICK事件代码为:thisform.release 第 45 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 创建一个名为Sproject的项目文件。 2. 将考生文件夹下的学生数据库SDB添加到新建的项目文件中。 3. 打开学生数据库SDB,将考生文件夹下的自由表TEACHER添加到学生数据库SDB中;为教师表TEACHER创建一个索引名和索引表达式均为教师号的主索引(升序);为班级表CLASS创建一个索引名和索引表达式均为班主任号的普通索引(升序)。 4. 通过"班级号"字段建立班级表CLASS和学生表STUDENT表间的永久联系。通过班级表CLASS的"班主任号"字段与教师表TEACHER的"教师号"字段建立班级表CLASS和教师表TEACHER间的永久联系。 二、简单应用(2小题,每题20分,计40分) 1. 在考生文件夹下使用菜单设计器设计一个名称为SMENU的下拉式菜单。 要求如下:菜单包括"数据浏览"和"退出"两个菜单栏。①数据浏览菜单栏包括"学生表"和"课程表"两个选项: 学生表选项在过程中使用SQL语句"SELECT * FROM STUDENT"查询学生表STUDENT的记录。课程表选项在过程中使用SQL语句"SELECT * FROM COURSE"查询课程表COURSE的记录。 ②退出菜单栏包括"返回到系统菜单"一个选项:返回系统菜单选项在过程中使用命令返回系统默认的菜单。 2. 在考生文件夹下打开命令文件ONE.PRG,该命令文件用来建立一个名称为S_VIEW的视图,视图查询学生的班级号、班级名、姓名、性别和班主任名(来自TEACHER表的教师名)。命令文件只包含两条语句,第1条语句有一个错误,第2条语句有两个错误,请修改之,并运行。注意,修改时不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。 三、综合应用(1小题,计30分) 在考生文件夹下,打开学生数据库SDB,完成如下综合应用:设计一个表单名为sform的表单,表单文件名为SDISPLAY,表单的标题为"学生课程教师基本信息浏览"。表单上有一个包含三个选项卡的页框(Pageframe1)控件和一个"退出"按钮(Command1)。其他功能要求如下: 1. 为表单建立数据环境,向数据环境依次添加STUDENT表(cursor1)、COURSE表(cursor2)和TEACHER表(cursor3)。2. 要求表单的高度为280,宽度为450;表单显示时自动在主窗口内居中。 3. 三个选项卡的标签的名称分别为"学生表"(Page1)、"课程表"(Page2)和"教师表"(Page3),每个选项卡分别以表格形式浏览学生表(grdStudent)、课程表(grdCourse)和教师表(grdTeacher)的信息。选项卡位于表单的左边距为18,顶边距为10,选项卡的高度为230,宽度为420。4. 单击"退出"按钮时关闭表单。 简单应用题答案: 第一处将“USE sdb”改为“OPEN DATA sdb”, 第二处将“CREATE VIEW”改为“CREA VIEW S_VIEW AS” 第三处将“WHERE Student.班级号=Class.班级号,Teacher.教师号=Class.班主任号”改为 “WHERE Student.班级号=Class.班级号 and Teacher.教师号 = Class.班主任号”。(加 and) 第 46 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下,打开一个公司销售数据库SELLDB,完成如下操作: 1. 为各部门分年度季度销售金额和利润表S_T创建一个主索引和普通索引(升序),主索引的索引名为NO,索引表达式为"部门号+年度";普通索引的索引名和索引表达式均为部门号。 2. 在S_T表中增加一个名为"备注"的字段、字段数据类型为"字符"、宽度为30。 3. 使用SQL的ALTER TABLE语句将S_T表的年度字段的默认值修改为"2004",并将该SQL语句存储到命令文件ONE.PRG中。 4. 通过"部门号"建立S_T表和DEPT表间的永久联系,并为该联系设置参照完整性约束:更新规则为"级联";删除规则为"限制";插入规则为"忽略"。 二、简单应用(2小题,每题20分,计40分) 在考生文件夹下,打开公司销售数据库SELLDB,完成如下简单应用: 1. 使用一对多表单向导生成一个名为SD_EDIT的表单。要求从父表DEPT中选择所有字段,从子表S_T表中选择所有字段,使用"部门号"建立两表之间的关系,样式为阴影式;按钮类型为图片按钮;排序字段为部门号(升序);表单标题为"数据输入维护"。 2. 在考生文件夹下打开命令文件TWO.PRG,该命令文件用来查询各部门的分年度的部门号、部门名、年度、全年销售额、全年利润和利润率(全年利润/全年销售额),查询结果先按年度升序、再按利润率降序排序,并存储到S_SUM表中。 注意,程序在第5行、第6行、第8行和第9行有错误,请直接在错误处修改。修改时,不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。 三、综合应用(1小题,计30分) 在考生文件夹下,打开公司销售数据库SELLDB,完成如下综合应用:设计一个表单名为Form_one、表单文件名为SD_SELECT、表单标题名为"部门年度数据查询"的表单,其表单界面如图所示。其他要求如下:1. 为表单建立数据环境,向数据环境添加S_T表(Cursor1)。2. 当在"年度"标签右边的微调控件中(Spinner1)选择年度并单击"查询"按钮(Command1)时,则会在下边的表格(Grid1)控件内显示该年度各部门的四个季度的销售额和利润。指定微调控件上箭头按钮(SpinnerHighValue属性)与下箭头按钮(SpinnerLowValue属性)值范围为2010-1999,缺省值(Value属性)为2003,增量(Increment属性)为1。 3. 单击"退出"按钮(Command2)时,关闭表单。要求:表格控件的RecordSourceType属性设置为"4-SQL说明"。 基本操作题答案: 4、ALTER TABLE S_T ALTER COLUMN 年度 SET DEFAULT "2004" 简单应用题答案:(注意:FROM S_T DEPT;少一“,”应改为“FROM S_T,DEPT;”,题中没说) 第一处将:“一季度利润+二季度利润+三季度利润+四季度利润/一季度销售额+二季度销售额+三季度销售额+ 四季度销售额 AS 利率” “(一季度利润+二季度利润+三季度利润+四季度利润)/(一季度销售额+二季度销售额+三季度销售额+四季度销 售额) AS 利润率”。 第二处将“GROUP BY 年度 利润率 DESC”改为“ORDER BY 年度,利润率 DESC” 第三处将“INTO S_SUM”改为 “INTO TABLE S_SUM”。 综合应用题答案: “查询”命令按钮的CLICK事件代码为: aa=(thisform.spinner1.value) aa=alltrim(str(aa)) aa=left(aa,4) ThisForm.Grid1.RecordSource="select * from S_T where 年度=aa" “退出”命令按钮的CLICK事件代码为:thisform.release 第 47 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 用命令新建一个名为"外汇"的数据库,并将该命令存储于one.txt中; 2. 将自由表"外汇汇率"、"外汇账户"、"外汇代码"加入到新建的"外汇"数据库中; 3. 用SQL新建一个表rate,其中包含4个字段"币种1代码" C(2)、"币种2代码"C(2)、"买入价"N(8,4)、"卖出价"N(8,4),请将SQL语句存储于two.txt中。 4. 表单文件test_form中有一个名为form1的表单(如图),请将编辑框控件Edit1的滚动条去掉。 二、简单应用(2小题,每题20分,计40分) 1. 编写程序three.prg完成下列操作:根据"外汇汇率"表中的数据产生rate自由表中的数据。 要求:将所有"外汇汇率"表中的数据插入rate表中并且顺序不变,由于"外汇汇率"中的币种1和币种2存放的是外币名称,而rate表中的币种1代码和币种2代码应该存放外币代码,所以插入时要做相应的改动,外币名称与外币代码的对应关系存储在"外汇代码"表中。注意:程序必须执行一次,保证rate表中有正确的结果。 2. 使用查询设计器建立一个查询文件four.qpr。查询要求:外汇帐户中有多少日元和欧元。查询结果包括了外币名称、钞汇标志、金额,结果按外币名称升序排序,在外币名称相同的情况下按金额降序排序,并将查询结果存储于表five.dbf 中。 三、综合应用(1小题,计30分) 设计一个文件名和表单名均为myaccount的表单。表单的标题为"外汇持有情况"。表单中有一个选项按钮组控件(myOption)、一个表格控件(Grid1)以及两个命令按钮"查询"(Command1)和"退出"(Command2)。其中,选项按钮组控件有两个按钮"现汇"(Option1)、"现钞"(Option2)。运行表单时,首先在选项组控件中选择"现钞"或"现汇",单击"查询"命令按钮后,根据选项组控件的选择将"外汇账户"表的"现钞"或"现汇"(根据钞汇标志字段确定)的情况显示在表格控件中。单击"退出"按钮,关闭并释放表单。注:在表单设计器中将表格控件Grid1的数据源类型设置为"SQL说明"。 基本操作题答案: 1、creat database 外汇 3、create table rate (币种1代码 C(2), 币种2代码 C(2), 买入价 N(8,4), 卖出价 N(8,4)) 4、将编辑框(EDIT1)的ScrollBars属性设置为“无” 简单应用题答案: 1、程序three.prg的内容如下: SELECT 外汇代码.外币代码 AS 币种1代码, aa.外币代码 AS 币种2代码,买入价,卖出价 FROM 外汇代码,外汇汇率,; 外汇代码 aa where 币种2 =aa.外币名称 and 外汇代码.外币名称=币种1 INTO array temp insert into rate from array temp 综合应用题答案: “查询”按钮的CLICK事件代码为: DO CASE CASE THISFORM.myOption.VALUE=1 THISFORM.GRID1.RECORDSOURCE="SELECT 外币代码,金额 FROM 外汇账户 WHERE 钞汇标志='现汇' into table temp" CASE THISFORM.myOption.VALUE=2 THISFORM.GRID1.RECORDSOURCE="SELECT 外币代码,金额 FROM 外汇账户 WHERE 钞汇标志='现钞' into table temp" ENDCASE “退出”按钮的CLICK事件代码为:thisform.release 第 48 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 建立项目"超市管理";并把"商品管理"数据库加入到该项目中。 2. 为商品表增加字段:销售价格N(6,2),该字段允许出现"空"值,默认值为.NULL.。 3. 为"销售价格"字段设置有效性规则:销售价格>0;出错提示信息是:"销售价格必须大于零"。 4. 用报表向导为商品表创建报表:报表中包括商品表中全部字段,报表样式用"经营式",报表中数据按商品编码升序排列,报表文件名report_a.frx。其余按缺省设置。 二、简单应用(2小题,每题20分,计40分) 1. 使用SQL命令查询2001年(不含)以前进货的商品,列出其分类名称、商品名称、进货日期,查询结果按进货日期升序排序并存入文本文件infor_a.txt中;所用命令存入文本文件cmd_aa.txt中; 2. 用SQL UPDATE 命令为所有商品编码首字符是"3"的商品计算销售价格:销售价格为在进货价格基础上加22.68%,并把所用命令存入文本文件cmd_ab.txt中。 三、综合应用(1小题,计30分) 建立表单,表单文件名和表单名均为myform_a,表单标题为"商品浏览",表单样例如图所示(左图)。其它功能要求如下: 1. 用选项按钮组(OptionGroup1)控件选择商品分类(饮料(Option1)、调味品(Option2)、酒类(Option3)、小家电(Option4)); 2. 单击"确定"(Command2)命令按钮,显示选中分类的商品,要求使用DO CASE语句判断选择的商品分类(如右图所示); 3. 在右图所示界面中按Esc键返回左图所示界面; 4. 单击"退出"(Command1)命令按钮,关闭并释放表单。 注:选项按钮组控件的Value属性必须为数值型。 简单应用题答案: 1、cmd_aa.txt的内容如下: SELECT 分类名称,商品名称,进货日期 FROM 商品,分类WHERE 商品.分类编码=分类.分类编码 AND 进货日期<{^2001-01-01}; order by 进货日期 TO FILE infor_a.txt 2、cmd_ab.txt的内容如下: update 商品 set 销售价格=进货价格*1.2268 where substr(商品编码,1,1)="3" 综合应用题答案: “确定”命令按钮的CLICK事件代码为: DO CASE 1、第六行改为: carea=cya(r,h), 第十四行改为: RETURN C 2、NEW.TXT的内容如下: SELE TOP 3 Employee.职工号,姓名,COUNT(Employee.职工号) AS 订单数 FROM employee,orders; WHERE Employee.职工号=Orders.职工号 GROU BY Employee.职工号 ORDE BY 3 DESC INTO TABL newcoun 综合应用题答案:步骤如下: 1、建立好要求样式的表单,将表单的showwindos属性设置为2。表单的LOAD事件代码为:do mymenu.mpr with this,.t. 2、建立好下拉式菜单,将“显示”—>“常规选项”—>“顶层表单”选中 3、菜单项“小家电”的过程代码如下: myform.grid1.recordsource="sele * from products,category where products.分类编码=category.分类编码 and; category.分类名称='小家电' into cursor aaa" 菜单项“饮料”的过程代码如下: myform.grid1.recordsource="sele * from products,category where products.分类编码=category.分类编码 and; category.分类名称='饮料' into cursor aaa" 菜单项“酒类”的过程代码如下: myform.grid1.recordsource="sele * from products,category where products.分类编码=category.分类编码 and; category.分类名称='酒类' into cursor aaa" 菜单项“退出”的命令代码为: Myfrom.release 4、生成菜单 第 50 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 打开数据库"外汇",通过"外币代码"字段为"外汇代码" 和"外汇账户"建立永久联系。 2. 新建一个名为"外汇管理"的项目文件,将数据库"外汇"加入"外汇管理"项目中。 3. 修改mymenu菜单文件,为"文件"下的子菜单项"查找"设置访问键F(显示方式为"查找F"),并生成新的菜单程序。 4. 修改one.prg中的SQL语句,使之正确(该语句的功能是从rate表中删除币种1代码为14,并且币种2代码为27的记录)。 二、简单应用(2小题,每题20分,计40分) 1. 用SQL语句进行以下查询:查询"外汇账户"表中的日元信息。查询结果包括钞汇标志、金额,结果按金额降序排序,并存储于表two.dbf 中,并将SQL语句存储于新建的there.txt文件中。 2. 用一对多报表向导建立报表,"外汇代码"表为父表,"外汇账户"表为子表。要求:选择父表和子表中的全部字段;用"外币代码"字段为两个表建立关系;排序方式为按"外币代码"升序;报表样式为"帐务式",方向为"横向";报表标题为"外汇账户情况";报表文件名为report_account。然后在报表设计器中修改该报表,在报表标题带区的右端利用OLE对象插入文件picture.gif。 三、综合应用(1小题,计30分) 设计一个文件名和表单名均为rate的表单,表单的标题为"外汇汇率查询",表单界面如图所示,表单中有两个下拉列表框(Combo1和Combo2),这两个下拉列表框的数据源类型(RowSourceType属性)均为字段,且数据源(RowSource属性)分别是外汇汇率表的"币种1"和"币种2"字段;另外有币种1(Label1)和币种2(Label2 两个标签以及两个命令按钮"查询"(Command1)和"退出"(Command2)。运行表单时,首先从两个下拉列表框选择币种,然后单击"查询"按钮,用SQL语句从外汇汇率表中查询相应币种(匹配币种1和币种2的信息),并将结果存储到表temp_rate中。单击"退出"按钮关闭表单。 基本操作题答案: 1、 将“查找”改为:“查找\“常规选项”—>“顶层单表”项选中 4、 菜单项“浏览课程”的过程代码如下:myform.grid1.recrodsource=“课程” 菜单项“浏览选课统计”的过程代码如下:myform.gird1.recordsource=“SVIEW” 菜单项“预览报表”的过程代码如下:report form creport preview 菜单项“退出”的命令为代码为:myform.release 第 52 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1.建立数据库orders_manage,将自由表employee和orders添加到新建的数据库中。 2.为employee表的性别字段设置默认值"男"。 3.为employee表的"性别"字段定义有效性规则,规则表达式为:性别 $ "男女",出错提示信息为"性别必须是男或女"。 4.使用SQL命令从employee表中查询所有已婚(婚否字段值为逻辑真)记录的职工号、姓名和出生日期信 息,结果按出生日期降序排序存入表infor_da中,同时把所用命令存入文本文件cmd_da.txt。 二、简单应用(2小题,每题20分,计40分) 1.建立表单,表单文件名和表单控件名均为myform_da。为表单建立快捷菜单scmenu_d,快捷菜单有选项"时间"和"日期";运行表单时,在表单上单击鼠标右键弹出快捷菜单,选择快捷菜单的"时间"项,表单标题将显示当前系统时间,选择快捷菜单"日期"项,表单标题将显示当前系统日期。 注意:显示时间和日期用过程实现。 2.使用SQL命令从worker中查询年龄最大的三名职工信息:职工号、姓名、出生日期,查询结果按年龄降序(即出生日期升序)排序并保存在表infor_db.dbf中。 三、综合应用(1小题,计30分) 建立一个表单,表单文件名和表单控件名均为myform_db,表单标题为"数据浏览和维护",表单样例如图所示。其它功能要求如下: 1. 用选项按钮组(Optiongroup1)控件选择职工表(employee)(Option1)或订单表(orders)(Option2);(注意:括号使用全角符号)2. 用复选框(Check1)控件确定显示的表是否需要存盘;3. 单击"确定"(Command1)命令按钮,若"存盘"复选框被选中,则用SQL语句将选项组指定的表的内容存入表temp中,否则用SQL语句显示该表的内容; 4. 单击"退出"(Command2)命令按钮,关闭并释放表单。 基本操作题答案: 4、sele 职工号,姓名,出生日期 from employee wher employee.婚否=.T. into table infor_da; order by employee.出生日期 desc 简单应用题答案:具体操作步骤如下: 1、建立表单,将其name属性改为”myform_da”。建立菜单,选择“快捷菜单”方式,创建菜单项“时间” 和“日期”。写代码:菜单项“时间”的过程代码为:myform_da.caption=time()。菜单项“日期”的过程代码为:myform_da.caption=dtoc(date())。生成菜单,按提示将其保存为scmenu_d。打开表单myform_da,在其RightClick事件中输入代码:do scmenu_d.mpr ,运行保存表单 综合应用题答案: “确定”命令按钮的CLICK事件代码如下: if thisform.check1.value=1 if thisform.optiongroup1.value=1 sele * from employee into table temp sele * from orders into table temp endif if thisform.optiongroup1.value=1 sele * from employee sele * from orders endif endif 第 53 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 从student表查询所有性别为"男"的学生信息,并按学号升序排序将查询结果存入results表。 2. 利用表单向导生成一个表单,该表单含有student表的学号、班级、姓名和性别4个字段,按学号字段升序排序,其他设置采用默认值,并将表单保存为student.scx文件。 3. 建立一个命令文件myprog.prg,该命令文件只有一行语句,即执行前一小题生成的表单文件。 4. 在student表最后增加一个"年龄"字段,类型为数值型(2)。 二、简单应用(2小题,每题20分,计40分) 1. 改错题 student是一个"学生"表,其中包含学号(C 8)、姓名(C 8)、性别(C 2)、政治面目(C 4)、班级(C 5)等字段。考生目录下的modi1.prg程序文件的功能是显示输出所有政治面目为"群众"的"男"生的姓名和班级,每行输出一个学生的信息;程序中有三处错误,请加以改正。说明:程序中 ******ERROR FOUND****** 的下一行即 简单应用题答案: 1、SELE TOP 5 姓名,出生日期 FROM employee ORDE BY 出生日期 INTO TABL emage 2、第一处改为:PARAMETERS a,b 第二处改为:RETURN c 综合应用题答案: “计算”命令按钮的CLICK事件代码为: n=thisform.optiongroup1.value do case case n=1 thisform.text3.value=thisform.text1.value+thisform.text2.value case n=2 thisform.text3.value=thisform.text1.value-thisform.text2.value case n=3 thisform.text3.value=thisform.text1.value*thisform.text2.value case n=4 thisform.text3.value=thisform.text1.value/thisform.text2.value endcase 第 55 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 将当前文件夹下的自由表CLASS(班级表)和TEACHER(教师表)添加到学生数据库SDB中; 2. 为班级表CLASS创建一个主索引和普通索引(升序),主索引的索引名和索引表达式均为班级号;普通索引的索引名和索引表达式均为班主任号。为教师表TEACHER创建一个主索引,索引名和索引表达式均为教师号; 3. 通过"班级号"字段建立班级表CLASS和学生表STUDENT表间的永久联系。通过班级表CLASS的"班主任号"字段与教师表TEACHER的"教师号"字段建立班级表CLASS和教师表TEACHER间的永久联系; 4. 为以上建立的两个联系设置参照完整性约束:更新规则为"级联";删除规则为"限制";插入规则为"限制"。 二、简单应用(2小题,每题20分,计40分) 在考生文件夹下,打开学生数据库SDB,完成如下简单应用: 1.使用报表向导建立一个简单报表。要求选择STUDENT表中所有字段;记录不分组;报表样式为随意式;列数为1,字段布局为"列",方向为"纵向";排序字段为"学号"(升序);报表标题为"学生基本情况一览表";报表文件名为TWO。 2. 使用查询设计器设计一个查询,查询每个班级的班级号、班级名、班长名和班主任名,查询结果按班级号升序排序,并输出到ONE表中。运行该查询,并将设计的查询保存为ONE.QPR文件。注意:① 表之间的关联,一个是STUDENT表的学号与CLASS表的班长号,另一个是CLASS表的班主任号与TEACHER表的教师号;② 查询结果的各列的名称分别为班级号、班级名、班长名和班主任名。班长名列的数据来自于STUDENT表的姓名,班主任名列的数据来自于TEACHER表的教师名。 三、综合应用(1小题,计30分) 在考生文件夹下,打开学生数据库SDB,完成如下综合应用: 设计一个表单文件名为form的表单,表单控件名为THREE,表单的标题名为"学生基本信息浏览"。在表单的左上方有一个标签(Label1),标签上的文字为"班级号";在标签的右边紧接着放置一个组合框控件(Combo1),将组合框控件的Style 属性设置为"下拉列表框",RowSourceType属性设置为"字段"(用来选择CLASS 级号);在组合框的右边紧接着放置一个"确认"命令按钮(Command2);在标签的下方放置一个表格控件(Grid1),将RecordSourceType属性设置为"4-SQL说明";在表单的右下方放置一个"退出"命令按钮(Command1)。表单界面如图所示。其他功能要求如下: 1. 为表单建立数据环境,向数据环境添加STUDENT表(cursor1)和CLASS表(cursor2)。2. 程序运行时,在组合框中选择某个班级的班级号,单击"确认"按钮后在表格中显示该班级的学生信息。 3. 单击"退出"按钮时,关闭表单。 简单应用题答案: 2、字段选项卡选CLASS.班级号,CLASS.班级名,STUDENT.姓名 AS 班长名,TEACHER.教师名 AS 班主任名(后两个字段在函数和表达式中输入后添加)联接选项卡中移去原来两个关联条件,重新建立关联:类型:INNER JOIN,字段名:STUDENT.学号=CLASS.班长号 AND 类型:INNER JOIN,字段名:CLASS.班主任号=TEACHER.教师号,排序依据:CLASS.班级号 升序 综合应用题答案:(注意 command2是确认不是确定,答案必须按下面写才有得分) ThisForm.Grid1.RecordSource="select student.学号,student.姓名,student.年龄,student.性别 from student inner join; class on student.班级号=class.班级号 where class.班级号='"+thisform.combo1.list(thisform.combo1.listindex) +"'" 第 56 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 建立数据库ordersmanage.dbc。把自由表employee.dbf和orders.dbf添加到数据库中。 2. 打开表单dh.scx,设置标签控件中英文字母的字号为18,保存表单。 3. 打开表单dh.scx,为命令按钮"隐藏"添加代码,使表单运行时,单击此按钮隐藏表单上标签控件label1;保存并运行该表单。 4. 利用报表向导建立一对多报表,以employee表为父表,选择其中职工号、姓名和性别字段;以orders表为子表,选择其全部字段。报表样式为简报式,表之间的关联通过"职工号"字段实现,排序方式为按职工号降序,报表标题为"职工订单"。报表其他参数取默认值。最后将生成的报表保存为empord.frx。 二、简单应用(2小题,每题20分,计40分) 1.打开程序文件progerr.prg,按文件中给出的功能要求改正其中的错误,以文件名prognew.prg重新保存该文件并运行程序。 2.建立如图所示顶层表单,表单文件名为myform.scx,表单控件名为myform,表单标题为"顶层表单"。 为顶层表单建立菜单mymenu。菜单栏如图所示(无下拉菜单),单击"退出"菜单时,关闭释放此顶层表单,并返回到系统菜单(在 过程中完成)。 三、综合应用(1小题,计30分) 打开表单文件sapp,并完成如下操作(不得有多余操作):● 将"课程"表添加到表单的数据环境中;● 使列表框List1中的数据项为"课程"表中的课程名(课程.课程名);● 单击列表框中的数据项时,统计选修了所选课程的学生人数(从"考试成绩"表),并将结果存储在以课程名命名的表中,表中只有一个字段"人数";● 添加一个命令按钮 Command1,单击该按钮时关闭表单。说明:完成该程序后必须运行,并且分别统计选修了"数据库"和"操作系统"课程的学生人数。 基本操作题答案: 3、thisform.label1.visible=.F. 简单应用题答案: 1、"CREATE viewes" 改为:"CREATE view viewes"; "SELECT * FROM orders "改为:" SELECT * FROM viewes"; 第三行后加 into table newtable 。 2、将表单的showwindows属性设置为2,表单的LOAD事件代码为:DO mymenu.mpr with this, .t.。 建立菜单, 将“显示”—>“常规选项”—>“顶层表单”项选中,菜单项“退出”的过程代码为:myform.release。生成菜单,运行表单。 综合应用题答案: 列表框的CLICK事件代码如下: select count(dist 学号) as 人数 from 课程,考试成绩 where 课程.课程编号=考试成绩.课程编号 and 课程名=; thisform.list1.list(thisform.list1.listindex) into tabl thisform.list1.list(thisform.list1.listindex) 第 57 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下,有一表单文件myform.scx。打开该表单文件,然后在表单设计器环境下完成如下操作: 1. 在属性窗口中将表单设置为不可移动的,并将其标题设置为"表单操作"。 2. 为表单新建一个名为mymethod的方法,方法代码为:wait "mymethod" window 3. 设置Ok按钮的Click事件代码,其功能是调用表单的mymethod方法。 4. 设置Cancel按钮的Click事件代码,其功能是关闭当前表单。 二、简单应用(2小题,每题20分,计40分) 1. 利用查询设计器创建查询,从xuesheng和chengji表中找出所有1982年出生的汉族学生记录。查询结果包含学号、姓名、数学、英语和信息技术5个字段;各记录按学号降序排序;查询去向为表table1。最后将查询保存在query1.qpr文件中,并运行该查询。 2. 首先创建数据库cj_m,并向其中添加xuesheng表和chengji表。然后在数据库中创建视图view1:利用该视图只能查询数学、英语和信息技术三门课中至少有一门不及格(小于60分)的学生记录;查询结果包含学号、姓名、数学、英语和信息技术5个字段;各记录按学号降序排序。最后利用刚创建的视图view1查询视图中的全部信息,并将查询结果存放在表table2中。 三、综合应用(1小题,计30分) 首先利用表设计器在考生目录下建立表table3,表结构如下: 民族 字符型(4); 数学平均分 数值型(6,2);英语平均分 数值型(6,2)。 然后在考生文件夹下创建一个下拉式菜单mymenu.mnx,并生成菜单程序mymenu.mpr。运行该菜单程序时会在当前vfp系统菜单的末尾追加一个"考试"子菜单,如下图示。 菜单命令"计算"和"返回"的功能都通过执行过程完成。 菜单命令"计算"的功能是根据xuesheng表和chengji表分别统计汉族学生和少数民族学生在数学和英语两门课程上的平均分,并把统计数据保存在表table3中。表table3的结果有两条记录:第1条记录是汉族学生的统计数据,"民族"字段填"汉";第2条记录是少数民族学生的统计数据,"民族"字段填"其他"。菜单命令"返回" 的功能是恢复标准的系统菜单。菜单程序生成后,运行菜单程 序并依次执行"计算"和"返回"菜单命令。 基本操作题答案: 1、将表单的movable属性设为.F.(具体答案见文件夹myform.scx文件) 简单应用题答案 1、联接条件为表达式:表达式为:year(出生日期)=1982 and 民族=’汉’。 2、crea view view1 as sele xuesheng.学号,姓名,数学,英语,信息技术 from xuesheng,chengji where xuesheng.学号=; chengji.学号 and (数学<60 or 英语<60 or 信息技术<60) order by xuesheng.学号 desc sele * from view1 into table table2 综合应用题答案: 建立好下拉式菜单后,将“显示”—>“常规选项”—>“位置”—>“追加”项选中。菜单项“计算”的过程代码为: SELECT 民族,avg(数学) as x,AVG(英语) AS y FROM xuesheng,chengji where Xuesheng.学号 = Chengji.学号 and 民族="汉"; INTO ARRAY aa insert into table3 from array aa SELECT 民族,avg(数学) as x,AVG(英语) AS y FROM xuesheng,chengji where Xuesheng.学号 = Chengji.学号 and 民族!="汉" ; INTO ARRAY aa insert into table3 from array aa update table3 set 民族='其他' where 民族!="汉" 菜单项“返回”的过程代码为:set sysmenu to default 第 58 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下有一表单文件myform.scx,其中包含Text1和Text2两个文本框,以及Ok和Cancel两个命令按钮。打开该表单文件,然后在表单设计器环境下通过属性窗口设置相关属性完成如下操作: 1. 将文本框Text1和Text2的宽度都设置为100。 2. 设置Text1,使其在表单打开时显示123,数据类型为字符型。 3. 设置Text2,使其在表单打开时显示表单的宽度值,数据类型为数值型。注意:表单打开时的初始宽度可以是任意值。 4. 将Ok按钮设置为"确认"按钮,即通过按Enter键就可以选择该按钮;将Cancel按钮的第1个字母C设置成"访问键",即通过按字母键C就可以选择该按钮。 二、简单应用(2小题,每题20分,计40分) 在考生文件夹下已有xuesheng和chengji两个表,现请在考生目录下完成以下简单应用: 1. 利用查询设计器创建查询,根据xuesheng和chengji表统计出各班(学号的前8个数字串为班号)男、女生在英语课程上各自的最高分、最低分和平均分。查询结果包含班号、性别、最高分、最低分和平均分5个字段;各记录按班号升序排序,同一班的女生在前、男生在后;查询去向为表table1。最后将查询保存在query1.qpr文件中,并运行该查询。 2. 使用报表向导创建一个简单报表。要求选择 xuesheng表中的所有字段;记录不分组;报表样式为帐务式;列数为2,字段布局为行,方向为纵向;按学号升序排序记录;报表标题为"XUESHENG";报表文件名为report1。 三、综合应用(1小题,计30分) 在考生文件夹下创建一个下拉式菜单mymenu.mnx,并生成菜单程序mymenu.mpr。运行该菜单程序时会在当前 vfp系统菜单的末尾追加一个"考试"子菜单,如下图所示。 菜单命令"计算"和"返回"的功能都通过执行过程完成。菜单命令"计算"的功能是从xuesheng表和chengji表中找出所有满足如下条件的学生:其在每门课程上的成绩都大于等于所有同学在该门课程上的平均分。 USE TABLE3 SELECT * FROM table3 WHERE .f. INTO TABLE temp SELECT 1 USE xuesheng INDEX ON 学号 TAG 学号 SELECT 2 USE chengji INDEX ON 学号 TAG 学号 SET RELATION TO 学号 INTO xuesheng GO TOP DO WHILE .NOT.EOF() IF chengji.数学<60 INSERT INTO temp values (xuesheng.学号,xuesheng.姓名,'数学',chengji.数学) ENDIF IF chengji.英语<60 INSERT INTO temp values (xuesheng.学号,xuesheng.姓名,'英语',chengji.英语) ENDIF IF chengji.信息技术<60 INSERT INTO temp values (xuesheng.学号,xuesheng.姓名,'信息技术',chengji.信息技术) ENDIF ENDDO SELECT * FROM temp ORDER BY 分数,学号 DESC INTO ARRAY arr INSERT INTO table3 FROM ARRAY arr CLOSE ALL DROP TABLE temp SET TALK ON RETURN 第 60 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 修改菜单my_menu,my_menu中的"文件"菜单项下有子菜单项"新建"、"打开"、"关闭"和"退出",请在"关闭"和"退出"之间加一条水平的分组线,并为"退出"菜单项设置一条返回到系统菜单的命令(不可以使用过程)。 2. 使用"调试器"单步调试考生文件夹下的程序debug.prg,调试结束后,将调试输出窗口中的内容保存到文本文件debug_out.txt中。 3. 使用SQL建立表的语句建立一个与自由表"金牌榜"结构完全一样的自由表 golden.dbf。请将该SQL语句存储在文件one.prg中,否则不得分。 4. 使用SQL语句向自由表golden.dbf中添加一条记录("011",9,7,11)。请将该SQL语句存储在文件two.prg中,否则不得分。 二、简单应用(2小题,每题20分,计40分) 1. 使用SQL语句完成下面的操作:根据"国家"和"获奖牌情况"两个表统计每个国家获得的金牌数("名次"为1表示获得一块金牌)结果包括"国家名称"和"金牌数"两个字段,并且先按"金牌数"降序、再按"国家名称"降序排列存储到表temp中。请将该SQL语句存储在文件three.prg中,否则不得分。 2. 建立一个文件名和控件名均为myform的表单,表单构造见下图。表单中包括一个列表框(List1)、一个选项组(Optiongroup1)和一个"退出"命令按钮(Command1),这三个控件名使用系统默认的名字。相关控件属性设置要求:表单的标题为"奖牌查询",列表框的数据源使用SQL语句根据"国家"表显示国家名称,选项组中有三个按钮,标题分别为金牌(Option1)、银牌(Option2)和铜牌(Option3)。 三、综合应用(1小题,计30分) 打开考生文件夹下的sport_project项目,项目中有一个表单sport_form,表单中包括三个命令按钮。请 完成如下操作: 1. 编写并运行程序Four.prg。程序功能是:根据"国家"和"获奖牌情况"两个表统计并建立一个新表"假奖牌榜",新表包括"国家名称"和"奖牌总数"两个字段,要求先按奖牌总数降序排列(注意"获奖牌情况"的每条记录表示一枚奖牌)、再按"国家名称"升序排列。 2. 为表单sport_form中的"生成表"命令按钮编写一条命令,执行Four.prg程序。 3. 将快速报表sport_report加入项目文件,并为表单sport_form中的命令按钮"浏览报表"编写一条命令,预览快速报表sport_report。 4. 将自由表"国家"和"获奖牌情况"加入项目文件sport_project,然后将项目文件连编成应用程序文件sport_app.app。 基本操作题答案: 1、首先在“关闭”与“退出”菜单项间插入一新菜单项,输入“\-”即可获取水平线, “退出”菜单项的命令代码为:SET SYSMENU TO DEFAULT 3、程序one.prg的内容为: use 金牌榜 copy stru to golden 4、程序TWO.prg的内容为: insert into golden valu("011",9,7,11) 简单应用题答案: 1、程序THREE.prg的内容为: SELECT国家名称,COUNT(名次) AS 金牌数 FROM国家,获奖牌情况 where 国家.国家代码=获奖牌情况.国家代码; and 获奖牌情况.名次=1 GROUP BY 国家.国家名称 ORDER BY 2 DESC,国家.国家名称 DESC INTO TABLE temp 2、将列表LIST1的rowsource属性设置为:“select 国家名称 from 国家”,Rowsourcetype属性设置为:3 综合应用题答案:程序Four.prg的内容为: SELECT国家名称,COUNT(名次) AS 奖牌总数 FROM 国家,获奖牌情况 WHERE 国家.国家代码=获奖牌情况.国家代码; GROUP BY 国家名称 ORDER BY 2 DESC,国家名称 INTO TABLE 假奖牌榜.dbf 表单sport_form中的"生成表"命令按钮的CLICK事件代码为:DO FOUR.PRG 表单sport_form中的命令按钮"浏览报表"的CLICK事件代码为:REPORT FORM SPORT_REPORT.FRX PREVIEW 第 61 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 打开考生文件夹下的表单one(如图所示),在"显示"命令按钮的Click事件中增加一条语句,使表单 运行时单击该命令按钮的结果是在Text1文本框中显示当前系统日期的年份。 2. 打开考生文件夹下的表单two(如图所示),为该表单新建一个方法test,该方法的功能是使"测试"按 钮变为不可用。("测试"按钮的Click事件中已经有一条语句负责调用test方法)。 3. 创建一个快速报表study_report,报表中包含"课程表"中的所有字段。 4. 使用SQL语句为"教师表"的"职工号"字段增加有效性规则:职工号的最左边三位字符是110,表达式应 为:LEFT(职工号,3)="110"。请将该SQL语句存储在three.prg文件中,否则不得分。 二、简单应用(2小题,每题20分,计40分) 1. 打开数据库文件"课程管理",使用 SQL语句建立一个视图salary,该视图包括了系号和(该系的)平均工资两个字段,并且按平均工资降序排列。请将该SQL语句存储在four.prg文件中,否则不得分。 2. 打开考生文件夹下的表单six(如图所示),"登录"命令按钮Click事件中的程序功能是:当用户输入用户名和口令以后,单击"登录"按钮时,程序根据自由表"用户表"的内容进行操作,若在"用户表"中找不到相应的用户名,则提示"用户名错误",若用户名输入正确,而口令输入错误,则提示"口令错误"。在"登录"命令按钮Click事件中空行处填加适当的语句,使其能够正确运行。注意:不得做其他修改。 三、综合应用(1小题,计30分) 1. 建立一个如图所示的表单名和文件名均为myform的表单。表单的标题是"教师情况",表单中有两个命令按钮(Command1和Command2),两个复选框(Check1和Check2)和两个单选钮(Option1和Option2)。Command1和Command2的标题分别是"生成表"和"退出",Check1和Check2的标题分别是"系名"和"工资",Option1和Option2的标题分别是"按职工号升序"和"按职工号降序"。 2. 为"生成表"命令按钮编写程序。程序的功能是根据表单运行时复选框指定的字段和单选钮指定的排序方式生成新的自由表。如果两个复选框都被选中,生成的自由表命名为 two.dbf,two.dbf的字段包括职工号、姓名、系名、工资和课程号;如果只有"系名"复选框被选中,生成的自由表命名为one_x.dbf,one_x.dbf的字段包括职工号、姓名、系名和课程号;如果只有"工资"复选框被选中,生成的自由表命名为one_xx.dbf,one_xx.dbf的字段包括职工号、姓名、工资和课程号。 3. 运行表单,并分别执行如下操作:(1)选中两个复选框和"按职工号升序"单选钮,单击"生成表"命令按钮; (2)只选中"系名"复选框和"按职工号降序"单选钮,单击"生成表"命令按钮;(3)只选中"工资"复选框和"按职工号降序"单选钮,单击"生成表"命令按钮。 基本操作题答案: 1、“显示”命令按钮的Click事件代码为:thisform.text1.value=year(date()) 2、test的事件代码为:thisform.command1.enabled=.f. 4、程序three.prg的内容如下:alter table 教师表 alter 职工号 set check LEFT(职工号,3)="110" 简单应用题答案: 1、程序four.prg的内容如下:由于阅卷系统问题,本题必须严格照抄,包括行数。 create sql view salary as; select 教师表.系号,AVG(教师表.工资) AS 平均工资; FROM 课程管理!教师表; GROUP BY 教师表.系号; ORDER BY 2 DESC 2、第一处加:do while not eof(),由于阅卷系统问题,not前后不能带. 第二处加:endif,第三处加:skip,第四处加:if flag=0 综合应用题答案:“生成表”命令按钮的CLICK事件如下: Clos all a=thisform.check1.value b=thisform.check2.value c=thisform.optiongroup1.option1.value d=thisform.optiongroup1.option2.value if a=1 and b=1 if c=1 select 职工号,姓名,系名,工资,课程号 from教师表,学院表 where 教师表.系号=学院表.系号; order by 职工号 into table two if d=1 select 职工号,姓名,系名,工资,课程号 from教师表,学院表 where 教师表.系号=学院表.系号; order by 职工号 desc into table two endif endif endif if a=1 and b=0 if c=1 select 职工号,姓名,系名,课程号 from教师表,学院表 where 教师表.系号=学院表.系号; order by 职工号 into table one_x if d=1 select 职工号,姓名,系名,课程号 from教师表,学院表 where 教师表.系号=学院表.系号; order by 职工号 desc into table one_x endif endif endif if a=0 and b=1 if c=1 select 职工号,姓名,工资,课程号 from教师表,学院表 where 教师表.系号=学院表.系号; order by 职工号 into table one_xx if d=1 select 职工号,姓名,工资,课程号 from教师表,学院表 where 教师表.系号=学院表.系号; order by 职工号 desc into table one_xx endif endif endif 第 62 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下,打开"宾馆"数据库,完成如下操作: 1. 打开"客户"表,给"性别"字段增加约束:性别只能为"男"或"女",默认值为:"女",表达式为: 性别 $ "男女"; 2. 为"入住"表创建一个主索引,主索引的索引名为fkkey,索引表达式为:"客房号+客户号"; 3. 根据各表的名称、字段名的含义和存储的内容建立表之间的永久联系,并根据要求建立相应的普通索引,索引名与建索引的字段名相同,升序排序。 表中的记录指针会自动移到学号相同的对应记录上。 二、简单应用(2小题,每题20分,计40分) 1. 利用查询设计器创建查询,从xuesheng和chengji表中查询数学、英语和信息技术三门课都在85分以上(含),或者数学、英语都在90分以上(含)而信息技术在75分以上(含)的学生记录。查询结果包含学号、姓名、数学、英语和信息技术5个字段;各记录按学号降序排序;查询去向为表table1。最后将查询保存在query1.qpr文件中,并运行该查询。 2. 首先创建数据库cj_m,并向其中添加xuesheng表和chengji表。然后在数据库中创建视图view1:利用该视图只能查询20001001班(学号的前8位数字串为班号)的学生记录;查询结果包含学号、姓名、数学、英语和信息技术5个字段;各记录按学号降序排序。最后利用刚创建的视图view1查询视图中的全部信息,并将查询结果存放在表table2中。 三、综合应用(1小题,计30分) 在考生文件夹下创建一个下拉式菜单 mymenu.mnx,并生成菜单程序mymenu.mpr。运行该菜单程序时会在当前vfp系统菜单的末尾追加一个"考试"子菜单,如下图所示。 菜单命令"计算"和"返回"的功能都通过执行过程完成。 菜单命令"计算"的功能如下: 1)先用SQL-SELECT语句完成查询:按学号降序列出所有学生在学号、姓名、数学、英语和信息技术5个字段上的数据,查询结果存放在表table3中。2)用ALTER TABLE语句在表table3中添加一个"等级"字段,该字段为字符型,宽度为4。 3)最后根据数学、英语和信息技术的成绩为所有学生计算等级:三门课程都及格(大于等于60分)且平均分大于等于90分的填为"优",三门课程都及格且平均分大于等于80分、小于90分的填为"良";三门课程都及格且平均分大于等于70分、小于80分的填为"中";三门课程都及格且平均分小于70分的填为"及格";其他的填为"差"。 菜单命令"返回"的功能是恢复标准的系统菜单。菜单程序生成后,运行菜单程序并依次执行"计算"和"返回"菜单命令。 基本操作题答案: 2、windowtype属性设为1 简单应用题答案: 2、crea view view1 as sele xuesheng.学号,姓名,数学,英语,信息技术 from xuesheng,chengji where xuesheng.学号=; chengji.学号and left(xuesheng.学号,8)="20001001" order by xuesheng.学号 desc sele * from view1 into table table2 本题也可用设计器做,命令供做时参考 综合应用题答案:菜单项“计算”的过程代码如下: select xuesheng.学号,姓名,数学,英语,信息技术 from chengji,xuesheng where chengji.学号=xuesheng.学号; order by xuesheng.学号 desc into table table3 alter table table3 add column 等级 c(4) update table3 set 等级='优' where 数学>=60 and 英语>=60 and 信息技术>=60 and (数学+英语+信息技术)>=270 update table3 set 等级='良' where 数学>=60 and 英语>=60 and 信息技术>=60 and (数学+英语+信息技术)>=240; and (数学+英语+信息技术)<270 update table3 set 等级='中' where 数学>=60 and 英语>=60 and 信息技术>=60 and (数学+英语+信息技术)>=210; and (数学+英语+信息技术)<240 update table3 set 等级='及格' where数学>=60 and 英语>=60 and 信息技术>=60 and (数学+英语+信息技术)>=180; and (数学+英语+信息技术 )<210 update table3 set 等级='差' where 等级=" " 菜单项“返回”命令代码为:SET SYSMENU TO DEFAULT 第 64 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 打开表单one(如图1所示),通过设置控件的相关属性,使得表单运行时的开始焦点在"打开"命令按钮, 并且接下来的焦点的移动顺序是"关闭"和"退出" 2. 打开表单two(如图2所示),使用"布局"工具栏的"顶边对齐"按钮将表单中的三个命令按钮控件的顶边对齐(如图3所示)。 3. 使用SQL语句创建一个名为"分组情况表"的自由表,"分组情况表"有两个字段:组号和组名,组号占两个字符,组名占10个字符。请将该SQL语句存储在three.prg中,否则不得分。 4. 使用SQL语句插入一个记录到"分组情况表"中,插入的内容是,组号:"01",组名:"通俗唱法"。请将该SQL语句存储在four.prg中,否则不得分。 二、简单应用(2小题,每题20分,计40分) 1. 歌手比赛分为四个组,"歌手表"中的"歌手编号"字段的左边两位表示了该歌手所在的组号。考生目录下的程序文件five.prg的功能是:根据"歌手表"计算每个组的歌手人数,将结果填入表 one.dbf,表one.dbf中有两个字段:"组号"和"歌手人数"。程序中有三处错误,请修改并执行程序。注意:只能修改标有错误的语句行,不能修改其他语句,数组名A不允许修改。 2. 建立一个数据库文件"歌手大奖赛.dbc",并将"歌手表"、"评委表"和"评分表"三个自由表添加到该数据库中。使用视图设计器建立视图 songer_view,该视图根据"歌手表"、"评委表"和"评分表"建立,视图中的字段项包括:评委姓名、歌手姓名、分数,视图中的记录按"歌手姓名"升序、"分数"降序排列。 三、综合应用(1小题,计30分) 1. 建立一个文件名和表单名均为myform的表单,表单中包括一个列表框(List1)和两个命令按钮(Command1和Command2),Command1和Command2的标题分别为"计算"和"退出"。2. 列表框(List1)中应显示组号,通过 RowSource和RowSourceType属性手工指定列表框的显示条目为 01、02、03、04(注意不要使用命令指定这两个属性,否则将不能得分)。3. 为"计算"命令按钮编写程序。程序的功能是:表单运行时,根据列表框中选定的"组号",将"评分表"中该组歌手("歌手编号"字段的左边两位表示了该歌手所在的组号)的所有记录存入自由表 two.dbf中,two.dbf的表结构与"评分表"相同,表中的记录先按"歌手编号"降序、再按"分数"升序排列。4. 运行表单,在列表框中指定组号"01",并且单击"计算"命令按钮。注意:结果two表文件中只能且必须包含01组歌手的评分信息。 基本操作题答案: 3、程序three.prg的内容为:create table 分组情况表(组号 c(2),组名 c(10)) 4、程序four.prg的内容为:insert into 分组情况表 values("01","通俗唱法") 简单应用题答案: 1、第一处:while前加do,第二处:"歌手表.歌手编号=zuhao" 改为:"LEFT(歌手表.歌手编号,2)=zuhao" , 第三处: "into" 改为: "with" 综合应用题答案:3、“计算”菜单项的CLICK事件代码为: SELECT * FROM 评分表 WHERE left(评分表.歌手编号,2) = thisform.list1.list(thisform.list1.listindex); ORDER BY 评分表.歌手编号 DESC,评分表.分数 INTO TABLE two 第 65 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1、利用快捷菜单设计器创建一个弹出式菜单one(如图1所示),有两个选项。"增加"和"删除",两个选项之间用分组线分隔。 2. 创建一个快速报表app_report,报表中包含了"评委表"中的所有字段。 3. 建立一个数据库文件"大奖赛.dbc",并将"歌手表"、"评委表"和"评分表"三个自由表添加到该数据库中。 4. 使用SQL语句为"评委表"的"评委编号"字段增加有效性规则:评委编号的最左边两位字符是11(使用LEFT函数),并将该SQL语句存储在three.prg中,否则不得分。 二、简单应用(2小题,每题20分,计40分) 1. 建立一个文件名和表单名均为two的表单,然后为表单two建立一个名为quit的新方法,并在该方法中写一条语句Thisform.release;最后向表单中添加一个命令按钮(Command1),并在该命令按钮的Click事件中写一条语句调用为表单建立的新方法quit。 2. 使用SQL语句计算每个歌手的最高分、最低分和平均分,并将结果存储到result.dbf表中(包含歌手姓名、最高分、最低分和平均分4个字段),要求结果按平均分降序。 三、综合应用(1小题,计30分) 1. 建立一个表单名和文件名均为myform的表单(如图2所示)。表单的标题是"评委打分情况",表单中有两个命令按钮(Command1和Command2)和两个单选钮(Option1和Option2)。Command1和Command2的标题分别是"生成表"和"退出",Option1和Option2的标题分别是"按评分升序"和"按评分降序"。 2. 为"生成表"命令按钮编写程序,程序的功能是根据简单应用题生成的result.dbf表按指定的排序方式生成新的表,单选钮选择"按评分升序"时,依次按最高分、最低分和平均分3个字段升序排序生成表 six_a,单选钮选择"按评分降序"时,依次按最高分、最低分和平均分3个字段降序排序生成表six_d。 3. 运行表单,选择"按评分升序"单选钮,单击"生成表"命令按钮;再选择"按评分降序"单选钮,单击"生成表"命令按钮(注意必须执行)。 基本操作题答案: 4、alter table 评委表 alter 评委编号 set check LEFT(评委编号,2)="11" 简单应用题答案: 2、sele 歌手姓名,max(分数) as 最高分,min(分数) as 最低分,avg(分数) as 平均分 from 歌手表,评分表; where 歌手表.歌手编号=评分表.歌手编号 group by 歌手表.歌手编号 order by 4 desc into table result 综合应用题答案: “生成表”的CLICK事件代码为: DO CASE CASE THISFORM.Optiongroup1.VALUE=1 SELECT * FROM result ORDER BY 最高分,最低分,平均分 INTO TABLE six_a CASE THISFORM.Optiongroup1.VALUE=2 SELECT * FROM result ORDER BY 最高分 DESC,最低分 DESC,平均分 DESC INTO TABLE six_d ENDCASE 第 66 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 打开表单one,向其中添加一个组合框(Combo1),并将其设置为下拉列表框。 2. 在表单one中,通过RowSource和RowSourceType属性手工指定组合框Combo1的显示条目为"上海"、" 北京"(不要使用命令指定这两个属性),显示情况如下图所示。 3. 向表单one中添加两个命令按钮Command1和Command2,其标题分别为"统计"和"退出"。为"退出"命令按钮的Click事件写一条命令,执行该命令时关闭和 释放表单。 4. 为表单one中的"统计"命令按钮的Click事件写一条SQL命令,执行该命令时,将"歌手表"中所有"歌手出生地"为上海歌手的全部信息存入自由表birthplace中。 二、简单应用(2小题,每题20分,计40分) 1. 建立一个查询score_query。查询评委为"歌手编号"是"01002"的歌手所打的分数,结果存入自由表result中,该自由表的字段项包括:"评委姓名"和"分数",各记录按分数升序排列。最后运行该查询。 2. 根据上一步操作得到的自由表result建立一个报表。要求:(1) 使用报表向导建立报表,报表中包括"评委姓名"和"分数"两个字段,按"分数"字段降序排列,报表标题设置为空,报表文件命名为score_result。 (2) 打开报表score_result,利用报表控件标签,将"王岩盐得分情况"添加到报表中作为报表的标题。 三、综合应用(1小题,计30分) 1. 编写程序并执行,计算"01"组(歌手编号的前2位)歌手的得分并将结果存入自由表FINAL.DBF中。 FINAL.DBF包含"歌手姓名"和"得分"两个字段,"得分"取各评委所打分数的平均值。FINAL.DBF中的结果按得分降序、歌手姓名降序排列。请将程序存储在two.prg中,否则不得分。 2. 新建一个文件名和表单名均为score_form的表单,向表单添加一个命令按钮Command1,标题为"计算",为该命令按钮的Click事件增加命令,调用two.prg程序执行。最后运行该表单,并单击"计算"按钮执行two程序。 3. 新建一个项目文件score_project,将自由表"歌手表"、"评委表"和"评分表"以及表单文件score_form加入该项目,然后将项目文件连编成应用程序文件score_app。 基本操作题答案: 4、“统计”命令按钮的CLICK事件代码为: sele * from 歌手表.dbf where 歌手出生地=thisform.combo1.list(thisform.combo1.listindex) into table birthplace 综合应用题答案:1、程序two.prg的内容如下: SELECT 歌手姓名,avg(分数) as 得分 FROM 歌手表,评分表 where 歌手表.歌手编号=评分表.歌手编号and; left(歌手表.歌手编号,2)="01" GROUP BY 歌手姓名 ORDER BY 2 DESC,歌手姓名 DESC INTO TABLE final "计算"命令按钮的CLICK事件代码为:DO two.prg 第 67 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 利用表设计器为employee表创建一个普通索引,索引表达式为"姓名",索引名为xm。 2. 打开考生目录下的表单文件formone.scx,然后设置表单的Load事件代码:打开employee表,并将索引xm设置为当前索引。 3. 在formone表单中添加一个列表框,并设置列表框的属性:名称为mylist;高度为60;可以多重选择。 4. 设置formone表单中mylist列表框的有关属性,其中RowSourceType属性为字段,使得当表单运行时,列表框内显示employee表中姓名字段的值。 二、简单应用(2小题,每题20分,计40分) 1. 利用查询设计器创建查询,从employee和order表中查询金额最高的10笔订单。查询结果依次包含订单号、姓名、签订日期、金额4个字段;各记录按金额降序排序;查询去向为表tableone 。最后将查询保存在 1. 打开"TEST_DB"数据库,根据表DEPT和表SELL并使用查询设计器设计一个名称为THREE的查询,按年度统计各部门的月平均销售(通过销售额计算)、月平均工资(通过工资额计算)和月平均利润(通过"月平均销售-月平均工资"计算)。查询统计结果按部门号、年度升序排序,并将查询结果输出到表TABB中。表TABB的字段名依次为:部门号、部门名、年度、月平均销售、月平均工资、月平均利润。设计完成后,运行该查询。 2. 打开文件名为"testA"的表单。该表单完成如下功能: 每当用户输入用户名和口令并按"确认"按钮后,利用表PASS中记录检查其输入是否正确,若正确,就显示"欢迎使用本系统!"字样,并关闭表单;若不正确,则显示"用户名或口令不对,请重输入!"字样;如果三次输入不正确,就显示"用户名或口令不对,登录失败!"字样,并关闭表单。(1) 修改口令输入文本框,使输入的口令显示为"*"。(2) 修改该表单"确认"按钮的Click事件中的程序。请将第2、3、4、7和12行语句修改正确。修改时不允许增加或删除行,只能在错误行上进行修改。 三、综合应用(1小题,计30分) 建立一个文件名和表单名均为myform的表单文件,表单上有:表格控件grid1(RecordSourceType属性手工设置为"别名");文本框控件Text1;命令按钮控件Command1(文本为"确定")。程序运行时在文本框中输入部门名,然后单击"确定"命令按钮计算该部门各年度的销售额(合计)和利润(合计)(利润为"销售额-工资额"),按年度升序将结果(含年度、销售额和利润3个字段)保存在以部门名命名的dbf文件的同时,在Grid1控件中显示计算的结果。要求:程序完成后必须运行,并分别计算"笔记本产品部"和"计算机产品部"按年度的销售额和利润情况。 简单应用题答案: 1、新加如下三个表达式:avg(销售额) as 月平均销售,avg(工资额) as 月平均工资,avg(销售额-工资额) as 月平均利润 2、(1) 通过设置PassWordChar属性可实现文本框中的数据以“*”方式显示 (2) 第2、3行分别改为:ThisForm.Text1.Value 和ThisForm.Text2.Value,第4行“list all while”改为“locate all for”。 第7行“exit”改为“thisform.release”,第12行“loop”改为“thisform.release”。 综合应用题答案:“确定”命令按钮的CLICK事件代码为: x="SELECT 年度,sum(销售额) as 销售额,sum(销售额-工资额) as 利润" x=x+" FROM sell where 部门号 in (select 部门号 FROM DEPT WHERE 部门名='"+myform.text1.value+"')" x=x+" GROUP BY 年度" x=x+" ORDER BY 年度" x=x+" INTO TABLE "+myform.text1.value &x myform.Grid1.recordsource=myform.text1.value 第 69 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 将student表中学号为99035001的学生的院系字段值修改为"经济"。 2. 将score表的"成绩"字段的名称修改为"考试成绩" 。 3. 使用SQL命令(ALTER TABLE)为student表建立一个候选索引,索引名和索引表达式都是"学号",并将相应的SQL命令保存在three.prg文件中。 4. 使用非SQL命令为course表建立一个候选索引,索引名和索引表达式都是"课程编号",并将相应的命令保存在four.prg文件中(只保存建立索引的命令)。 二、简单应用(2小题,每题20分,计40分) 1. 建立一个满足如下要求的表单文件tab; (1) 表单中包含一个页框控件Pageframe1,该页框含有3个页面,页面的标题依次为"学生"(Page1)、"课程"(Page2)和"成绩"(Page3);(2) 依次将表student(学生)、course(课程)和score(成绩)添加到表单的数据环境中;(3) 直接用拖拽的方法使得在页框控件的相应页面上依次分别显示表student(学生)、course(课程)和score(成绩)的内容;(4) 表单中包含一个命令按钮"退出"(Command1),单击该按钮关闭并释放表单。 2. 给定程序(表单)modi2.scx,其功能是请用户输入一个正整数,然后计算从1到该数字之间有几个偶数、几个奇数、几个被3整除的数,并分别显示出来,最后给出总数目。请修改并调试该程序,使之正确运行。改错要求:在"计算"按钮的单击事件的程序中共有3处错误,请修改*****found****下面的错误,必须在原来位置修 改,不得增加或删减程序行(其中第一行的赋值语句不许减少或改变变量名)。在"退出"按钮下有一处错误,该按钮的功能是关闭并释放表单。 三、综合应用(1小题,计30分) 打开考生文件夹下的表单文件zonghe,并完成如下操作: 1、修改"添加>"命令按钮Click事件下的语句,使得当单击该命令按钮时,将左边列表框所选项添加到右边的列表框;2、修改"<移去"命令按钮Click事件下的语句,使得当单击该命令按钮时,将右边列表框所选项移去(删除);3、"确定"命令按钮Click事件下的程序的功能是查询右边列表框所列课程的学生的考试成绩(依次包含姓名、课程名称和考试成绩3个字段),并先按课程名称升序、再按考试成绩降序存储到表zonghe.dbf中。 注意:程序完成后必须运行,要求将"计算机基础"和"高等数学"从左边的列表框添加到右边的列表框,并单击"确定"命令按钮完成查询和存储。 基本操作题答案: 3、ALTER TABLE student ADD UNIQUE 学号 TAG 学号 4、use course INDEX ON 课程编号 TAG 课程编号 CANDIDATE 本题只保存第二条命令。 简单应用题答案: 2、第一处:“x,s1,s2,s3=0” 改为 “store 0 to x,s1,s2,s3”; 第二处:“x=thisform.text1” 改为 “x=val(thisform.text1.value)”; 第三处:“if div(x,3)=0” 改为 “if mod(x,3)=0”; 第四处:“close” 改为 “thisform.release” 综合应用题答案: “添加”命令按钮的CLICK事件代码为:thisform.list2.additem(thisform.list1.value) “移去”命令按钮的CLICK事件代码为:thisform.list2.removeitem(thisform.list2.listindex) “确定”命令按钮的CLICK事件代码后面加上: SELECT姓名,课程名称,考试成绩 FROM student,score,course where Score.课程编号 = Course.课程编号 and; Student.学号=Score.学号and &cn ORDER BY 课程名称,考试成绩 DESC INTO TABLE zonghe 第 70 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 打开考生文件夹下的表单one(如图所示),在"打开"命令按钮的Click事件中增加一条语句,使表单运行时单击该命令按钮的结果是使"关闭"按钮变为可用。 2. 打开考生文件夹下的表单two(如图1所示),在选项组中增加一个单选钮(如图2所示)。注意:不能改变原先的名称以及属性值。 图1 图2 3. 使用SQL语句为考生文件夹下的"学院表"增加一个字段"教师人数"(整数型),同时为该字段设置有效性规则:教师人数>=0。请将该SQL语句存储在three.prg文件中,否则不得分。 4. 使用SQL语句将考生文件夹下的自由表teacher中教师姓名为Jack的工资修改为8000元。请将该SQL语句存储在four.prg文件中,否则不得分。 二、简单应用(2小题,每题20分,计40分) 在考生目录下完成如下简单应用: 1.考生文件夹下的程序文件five.prg的功能是:根据"教师表"计算每个系的教师人数并将相应数据填入"学院表",程序中有三处错误,请修改并执行程序。只能修改标有错误的语句行,不能修改其他语句。 2. 在"课程管理"数据库中使用视图设计器建立视图teacher_view,该视图根据"教师表"和"课程表"建立,视图包括姓名、工资、课程名和学时4个字段,视图中的记录按"工资"升序排列。 三、综合应用(1小题,计30分) 1. 建立一个名为myform的表单,表单中包括一个列表框(List1)和两个命令按钮(Command1和Command2),Command1和Command2的标题分别为"生成表"和"退出"。 2. 设置列表框的数据源(RowSource)和数据源类型(RowSourceType)两个属性,使用SQL语句根据"学院表"的"系名"字段的内容在列表框中显示"系名"(注意不要使用命令指定这两个属性)。 3. 为"生成表"命令按钮的单击事件编写程序。程序的功能是根据表单运行时列表框中选定的"系名",将"教师表"表中相应系的所有记录存入以该系名命名的自由表中,自由表中包含"职工号","姓名"和"工资"三个字段,并按照"职工号"升序排列。 4. 运行表单,分别生成存有"计算机"、"通信"、"信息管理"系信息的3个表。 基本操作题答案: 1、“打开”命令按钮的CLICK事件代码为:thisform.command2.enabled=.T. 3、程序three.prg的内容为:ALTER TABLE 学院表 ADD 教师人数 I CHECK 教师人数=>0 4、程序four.prg的内容为:UPDATE TEACHER SET 工资=8000 WHERE 姓名="Jack" 简单应用题答案: 1、第一处:“DO .NOT. EOF()”改为“DO WHILE NOT EOF()”;第二处:“INTO A” 改为“INTO ARRAY A”, 第三处:“next” 改为 “skip”。 综合应用题答案:LIST1的rowsourcetype属性设为3-SQL说明,rowsource属性设为“sele 系名 from 学院表 into curs mylist”。 “生成表”命令按钮的CLICK事件代码为: aa=alltrim(thisform.list1.value) sele 职工号,姓名,工资 from 教师表,学院表 where 教师表.系号=学院表.系号 and 系名=aa order by 职工号 into table &aa 第 71 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 打开表单文件one,在表单设计器中将命令按钮Command1的标题修改为"开始"。 2. 在考生文件夹下建立项目文件one。 3. 在项目one中建立数据库student。 4. 在项目one中建立程序代码文件one.prg,其中包含如下一条命令:? "良好的开端" 。 二、简单应用(2小题,每题20分,计40分) 1. 建立表单two(表单名和表单文件名均为two),然后完成如下操作:1) 在表单中添加表格控件Grid1; 2) 在表单中添加命令按钮Command1(标题为"退出");3) 将表student添加到表单的数据环境中;4) 将Grid1的RecordSourceType属性设置为0(即数据源的类型为表),将Grid1的RecordSource属性设置为student,使得在表单运行时表格控件中显示表student的内容。 2. 使用SQL SELECT语句查询每个学生的平均成绩,结果包括"姓名"(出自student表)和"平均成绩"(根据score表的成绩字段计算)两个字段,并按"平均成绩"字段降序,"平均成绩"相等时按姓名升序将查询结果存储在表avgscore.dbf中。 三、综合应用(1小题,计30分) 1. 打开student数据库(基本操作题建立的),将自由表student、score和course添加到数据库中; 2. 在student数据库中建立反映学生选课和考试成绩的视图viewsc,该视图包括"学号"、"姓名"、"课程名称"和"成绩"4个字段; 3. 使用报表向导建立一个报表,该报表按顺序包含视图viewsc的"学号"、"姓名"、"课程名称"和"成绩"4个字段,样式为"简报式",报表文件名为three.frx; 4. 打开表单文件three,然后完成如下操作:1) 为"生成数据"命令按钮(Command1)写代码:用SQL命令查询视图viewsc的全部内容,要求先按"学号"升序、再按"成绩"降序排序,并将结果保存在result.dbf表文件中; 2) 为"运行报表"命令按钮(Command2)写代码:预览报表three.frx;3) 为"退出"命令按钮(Command3)写代码: 关闭并释放表单。最后运行表单three,并一定通过"生成数据"命令按钮产生result.dbf表文件。 简单应用题答案: 3、sele 姓名,avg(成绩) as 平均成绩 from student,score where student.学号=score.学号 group by student.学号; order by 2 desc,姓名into table avgscore 综合应用题答案: “生成数据”命令按钮的CLICK事件代码为:select * from viewsc order by 学号,成绩 desc into table result “运行报表”命令按钮的CLICK事件代码为:report form three preview “退出”命令按钮的CLICK事件代码为:Release ThisForm 第 72 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下,打开SELLDB数据库,完成如下基本操作: 1. 创建"客户表"(客户号,客户名,销售金额),其中:客户号为字符型,宽度为4;客户名为字符型,宽度为20;销售金额为数值型,宽度为9(小数2位)。 2. 为第1小题创建的"客户表"建立一个主索引,索引名和索引表达式均为"客户号"。 3. 为"部门成本表"增加一个字段,字段名为"备注",数据类型为字符型,宽度为20。 4. 先选择"客户表"为当前表,然后使用报表设计器中的快速报表功能为"客户表"创建一个文件名为P_S的报表。快速报表建立操作过程均为默认。最后,给快速报表增加一个标题,标题为"客户表一览表"。 二、简单应用(2小题,每题20分,计40分) 在考生文件夹下的SELLDB数据库中包含"部门表"、"销售表"、"部门成本表"和"商品代码表"等。 1. 在考生文件夹下已有程序文件 three.prg,其功能如下:查询2006年各部门商品的年销售利润情况。查询内容为:部门号、部门名、商品号、商品名和年销售利润,其中年销售利润等于销售表中一季度利润、二季度利润、三季度利润和四季度利润的合计。查询结果按部门号升序,然后按年销售利润降序排序,并将查询结果输出到表TABA中。表TABA的字段名分别为:"部门号"、"部门名"、"商品号"、"商品名"和"年销售利润"。请打开程序文件three.prg,修改其中的错误,然后运行该程序。 2. 在考生文件夹下已有程序文件four.prg,其功能如下:计算2005年按部门不分商品的"年销售利润",以及"年销售利润"减去部门成本表中对应部门的"工资支出"和"办公支出"后的纯利润,并将结果存储到表account中。表account的字段名分别为:"部门号"、"部门名"、"年销售利润"、"工资支出"、"办公支出"和"纯利润"。请打开程序文件four.prg,修改其中的错误,然后运行该程序。 三、综合应用(1小题,计30分) 在考生文件夹下,打开SELLDB数据库,完成如下综合应用: 创建一个标题名为"部门销售查询"、表单名为Form1,文件名为XS的表单,如下图所示。表单要求如下:在该表单中设计两个标签、两个文本框、一个表格和两个命令按钮。1. 两个标签对象标题文本分别为"部门号:"(Label1)和"年度:"(Label2);两个文本框分别用于输入部门号(Text1)和年度(Text2);表格控件用于显示查询结果(Grid1)。2. 两个命令按钮的功能如下: ⑴ "查询"按钮(Command1):在该按钮的Click事件中编写程序,根据输入的部门号和年度,在表格控件中显示:该部门销售的"商品号"、"商品名"、"一季度利润"、"二季度利润"、"三季度利润"和"四季度利润",将查询结果存储到以"xs+部门号"为名称的表中(例如,部门号为02,则相应的表名为xs02.dbf)。 注意:表的字段名分别为:"商品号"、"商品名"、"一季度利润"、"二季度利润" 客户为单位、从customer 和orders表中求出订单金额的和。统计结果包含"客户号"、"客户名"和"合计"三项内容,其中"合计"是指与某客户所签所有订单金额的和。统计结果应按"合计"降序排序,并存放在tabletwo表中。菜单命令"退出"的功能是释放并关闭表单。 最后,请运行表单并依次执行其中的"统计"和"退出"菜单命令。 简单应用题答案: 4、第一处“columncount”->“ListCount”,第二处“value”->“list(1)”,第三处“s=s+thisform.list1.value” ->“s=s+","+thisform.list1.list(i)” 综合应用题答案:菜单项“统计”的过程代码为: SELECT Customer.客户号,客户名,SUM(金额) AS 合计FROM customer,orders where Customer.客户号=Orders. GROUP BY Customer.客户号 ORDER BY 3 DESC INTO TABLE tabletwo 菜单项“退出”的过程代码为:myform.release 第 74 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1.创建一个名为"订单管理"的数据库,并将已有的employee和orders两个表添加到该数据库中。 2.为orders表建立一个普通索引,索引名为je,索引表达式为"金额",降序索引。 3.在"订单管理"的数据库中新建一个名为customer的表,表结构如下: 客户号 字符型(4) 客户名 字符型(36) 地址 字符型(36) 4.通过"客户号"分别为customer 表建立主索引,为orders建立普通索引,索引名和索引表达式均为"客户 号",通过"客户号"为customer表和orders表之间建立一个一对多的永久联系。 二、简单应用(2小题,每题20分,计40分) 1.在考生文件夹下已有表单文件formone.scx,如下图所示,其中包含一个文本框、一个表格和两个命令按钮。请按下面要求完成相应的操作:1) 通过"属性"窗口,将文本框Text1的Value属性值设置为当前系统日期(日期型,不含时间)。 2) 通过"属性"窗口,将表格Grid1的RecordResourceType属性值设置为"4-SQL说明"。 3) 修改"确定"按钮的 Click 事件代码。当单击该按钮时,表格Grid1内将显示指定日期以后(含)签订的订单信息(包括"订单号"、"签订日期"和"金额"等信息)。4) 设置"关闭"按钮的Click事件代码。当单击该按钮时,将释放并关闭表单。 2.利用查询设计器创建查询,根据employee和orders表对各组在2001年所签订单的金额进行统计。统计结果仅包含那些总金额大于等于500的组,各记录包括"组别"、"总金额"、"最高金额"和"平均金额"4个字段;各记录按"总金额"降序排序;查询去向为表tableone。最后将查询保存在queryone.qpr文件中,并运行该查询。 三、综合应用(1小题,计30分) 1.创建一个下拉式菜单mymenu.mnx,运行该菜单程序时会在当前vfp系统菜单的末尾追加一个"考试"子菜 单,如下图所示。 菜单命令"统计"和"返回"的功能都通过执行过程完成。菜单命令"统计"的功能是以某年某月为单位求订单金额的和。统计结果包含"年份"、"月份"和"合计"三项内容(若某年某月没有订单,则不应包含记录)。统计结果应按年份降序月份升序排序,并存放在tabletwo表中。菜单命令"返回"的功能是返回标准的系统菜单。 2.创建一个项目myproject.pjx,并将已经创建的菜单mymenu.mnx设置成主文件。然后连编产生应用程序myproject.app。最后运行myproject.app,并依次执行"统计"和"返回"菜单命令。 简单应用题答案: 1、(3)“确定”命令按钮的CLICK事件代码如下: 第一处“to 4”->“on”,第二处“va=text1.value”->“va=thisform.text1.value”,第三处 “this.grid1.rowdsource=st”->“thisform.grid1.recordsource=st” 2、利用查询设计器创建查询,添加employee和orders表,选中题面要求的字段,其中在函数和表达式中添加 表达式:SUM(金额) AS 总金额;MAX(金额) AS 最高金额;AVG(金额) AS 平均金额,并选中此字段。在“筛选”中添加:year(签 订日期)=2001。按 “总金额”降序排序,按“组别”进行分组,在“分组依据”的“满足条件”中设置总金额>=500。查询去向 为表tableone. 综合应用题答案: 菜单项“统计”的过程代码如下 sele year(签订日期) as 年份,month(签订日期) as 月份,sum(金额) as 合计from orders group by 1,2 order by 1 desc,2; into table tabletwo 菜单项“返回”的过程代码如下:SET SYSMENU TO DEFAULT 第 75 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1.打开"订单管理"数据库,然后从中删除customer表。 2.为employee表建立一个普通索引,索引名为xb,索引表达式为"性别",升序索引。 3.为employee表建立一个普通索引,索引名为xyz,索引表达式为"str(组别,1)+职务",升序索引。 4.为employee表建立主索引,为orders建立普通索引,索引名和索引表达式均为"职员号"。通过"职员号" 在employee表和orders之间建立一个一对多的永久联系。 二、简单应用(2小题,每题20分,计40分) 1、在考生文件夹下已有表单文件formone.scx,如下图所示,其中包含两个标签、一个组合框和一个文本框。 请按下面要求完成相应的操作,使得当表单运行时,用户能够从组合框选择职员,而该职员所签订单的平均金额能自动显示在文本框里。1) 将orders表和employee表依次添加到该表单的数据环境中(不要修改两个表对应对象的各属性值)。2) 将组合框设置成下拉列表框;将employee表中的"姓名"字段作为下拉列表框条目的数据源(RowSourceType属性值应设置为:6-字段)。3) 将文本框Text1设置为只读。4) 修改组合框的InteractiveChange事件代码,使得当用户从组合框选择职员时,能够将该职员所签订单的平均金额自动显示在文本框里。 2.利用查询设计器创建查询,从employee和orders表中查询"组别"为1的组各职员所签所有订单的信息。查询结果依次包含"订单号"、"金额"、"签订者"三项内容,其中"签订者"为签订订单的职员姓名。各记录按"金额"降序排序;查询去向为表tableone。最后将查询保存在queryone.qpr文件中,并运行该查询。 三、综合应用(1小题,计30分) 在考生文件夹下创建一个下拉式菜单mymenu.mnx,并生成菜单程序mymenu.mpr。运行该菜单程序时会在当前Visual FoxPro系统菜单的"帮助"子菜单之前插入一个"考试"子菜单,如下图所示。 菜单命令"统计"和"返回"的功能都通过执行过程完成。菜单命令"统计"的功能是以组为单位求订单金额的和。统计结果包含"组别"、"负责人"和"合计"三项内容,其中"负责人"为该组组长(由employee中的"职务"一项指定)的姓名,"合计"为该组所有职员所签订单的金额总和。统计结果应按"合计"降序排序,并存放在tabletw表中。菜单命令"返回"的功能是返回标准的系统菜单。菜单程序生成后,运行菜单程序并依次执行"统计"和"返回"菜单命令。 简单应用题答案: 1、3)表单中TEXT1控件的ReadOnly属性设置为 .T.。 4)text1.value=m2->thisform.text1.value=m2 综合应用题答案: 菜单项“统计”的过程代码为: SELECT 组别,Sum(金额) AS 合计FROM employee,orders where employee.职员号=orders.职员号GROUP BY 组别INTO TABLE AAA SELECT AAA.组别,姓名 as 负责人,合计FROM employee, AAA WHERE employee.组别=AAA.组别 and 职务="组长" order by 合计 DESC INTO TABLE tabletwo 第 76 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1. 打开考生文件夹下的数据库SPORT,首先永久删除该数据库中的temp表,然后将"金牌榜"、"获奖牌情况" 和"国家"三个自由表加入该数据库中。 2.使用"调试器"单步调试考生文件夹下的程序three.prg,调试结束后,将调试输出窗口中的内容保存到文本文件debug_out.txt中。 3.使用SQL语句为表"金牌榜"增加一个字段"奖牌总数"(整数型),同时为该字段设置有效性规则:奖牌总数>=0。请将该SQL语句存储在文件one.prg中,否则不得分。 4.使用SQL语句更改表"金牌榜"所有记录的"奖牌总数"字段值,该值应为"金牌数"、"银牌数"、"铜牌数"三项之和。请将该SQL语句存储在文件two.prg中,否则不得分。 二、简单应用(2小题,每题20分,计40分) 1.使用一对多表单向导新建一个表单SPM。要求:使用"国家"为父表并选择"国家名称"字段作为显示字段,"获奖牌情况"为子表并选择"项目名称"和"名次"字段作为显示字段,使用"国家代码"建立表之间的关系,表单样式选择"阴影式",按钮类型选择"图片按钮",按"国家名称"升序排列,表单标题为"奥运会获奖情况"。 2.在SPORT数据库中使用视图设计器建立视图sport_view,该视图根据"国家"和"获奖牌情况"两个表统计每个国家获得的金牌数("名次"为1表示获得一块金牌),视图中包括"国家名称"和"金牌数"两个数据项,视图中的记录先按"金牌数"降序排列、再按国家名称降序排列。 三、综合应用(1小题,计30分) 在考生文件夹下有一个名为myform的表单,表单中包括一个列表框和两个命令按钮。请在该表单中完成如下操作:1、在表单设计器环境下设置列表框的数据源(RowSource)和数据源类型(RowSourceType)两个属性,使用SQL语句根据"国家"表中"国家名称"字段的内容在列表框中显示"国家名称"(注意不要使用命令指定这两个属性)。2、为"生成表"命令按钮编写程序。程序的功能是根据表单运行时列表框中选定的国家名称,将"获奖牌情况"表中相应国家的所有记录存入以该国家名称命名的自由表中,自由表中包含"运动员名称","项目名称"和"名次"三个字段,并按照"名次"升序排列。提示:假设从列表框中选择的国家名称存放在变量gm中,那么在SQL SELECT语句中使用短语into table&gm就可以将选择的记录存入以该国家名命名的自由表中。3.运行表单,分别生成存有"中国"、"日本"、"美国"、"俄罗斯"4个国家获奖情况的4个自由表。 基本操作题答案: 3、alter table 金牌榜 add 奖牌总数 I check 奖牌总数>=0 4、UPDATE 金牌榜 SET 奖牌总数=金牌数+银牌数+铜牌数 简单应用题答案: 2、打开数据库SPORT,在“数据库”菜单中选择“新建本地视图”按钮,打开“视图设计器”。将“国家”和“获奖牌情况”表添加到视图中并建立相应连接,选择字段国家名称,在“函数和表达式”中设置表达式“COUNT(获奖牌情况.名次) AS 金牌数”,并选择此字段,在“筛选”栏内输入条件“名次=1”,在“排序依据”中按题面 要求设置降序排列,在“分组依据”中设置按“国家名称”分组,以视图名sport_view保存。 综合应用题答案: 1、rowSource属性的SQL语句为:select 国家名称 from 国家 into cursor mylist。 rowSource属性的值 2、“生成表”命令按钮的CLICK事件代码为: gm=alltrim(thisform.list1.value) select 运动员名称,项目名称,名次 from 获奖牌情况,国家where 获奖牌情况.国家代码=国家.国家代码 and; 国家名称=gm order by 名次 into table &gm 第 77 套 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1.建立一个"客户"表,表结构如下;客户编号 C(8)、 客户名称 C(8)、联系地址 C(30)、联系电话 C(11)、 电子邮件 C(20)。 2.建立一个"客户"数据库,并将"客户"表添加到该数据库中。 3.将如下记录插入到"客户"表中。 43100112 沈红霞 浙江省杭州市83号信箱 13312347008 shenhx@sohu.com 44225601 唐毛毛 河北省唐山市100号信箱 13184995881 tangmm@bit.com.cn 50132900 刘云亭 北京市1010号信箱 13801238769 liuyt@ait.com.cn 30691008 吴敏霞 湖北省武汉市99号信箱 13002749810 wumx@sina.com 41229870 王衣夫 辽宁省鞍山市88号信箱 13302438008 wangyf@abbk.com.cn 4.利用报表向导生成一个"客户"(报表文件名)报表,报表的内容包含客户表的全部字段,报表的标题为" 客户",其他各项取默认值。 二、简单应用(2小题,每题20分,计40分) 在考生文件夹下有student(学生)、course(课程)和score(选课成绩)3个表,用SQL语句完成如下 1.查询每门课程的最高分,要求得到的信息包括课程名称和分数,将结果存储到me.dbf表文件(字段名是 课程名称和分数),并将相应的SQL语句存储到命令文件one.prg。 2.查询哪些课程有不及格的成绩,将查询到的课程名称存入表new.dbf,并将相应的SQL语句存储到命令文 件two.prg。 三、综合应用(1小题,计30分) 1.建立"学生"数据库; 2.把自由表student(学生)、course(课程)和score(选课成绩)添加到新建立的数据库;3.建立满足如下要求的表单formlist(控件名和文件名)(1) 添加一个表格控件Grid1,并按学号升序显示学生选课及考试成绩信息(包括字段学号、姓名、院系、课程名称和成绩);(2) 添加命令按钮"保存"(Command1)和"退出"(Command2),单击命令按钮"保存"时将表格控件Grid1中所显示的内容保存到表tbm(方法不限),单击命令按钮"退出"时关闭并释放表单。 注意:程序完成后必须运行,并按要求保存表格控件Grid1中所显示的内容到表tbm。 基本操作题 提示:录入数据错一处或少一字扣2分。 简单应用题答案: 1、程序one.prg的内容如下: SELECT 课程名称, MAX(成绩) as 分数 FROM course,score where Course.课程编号 = Score.课程编号 GROUP BY 课程名称; INTO TABLE me 2、程序two.prg的内容如下: SELECT 课程名称 FROM course,score where Course.课程编号 = Score.课程编号 and 成绩<60 GROUP BY 课程名称; INTO table new 综合应用题答案: 表格的recordsourcetype属性为“4-SQL说明”,“保存”命令按钮 init 事件代码如下: ThisForm.Grid1.RecordSource="SELECT Student.学号,姓名,院系,课程名称,成绩 FROM student,score,course where Score.课程编号=Course.课程编号and Student.学号=Score.学号 ORDER BY 表统计每个学生的平均成绩,并写入新添加的字段。该程序有三处错误,请改正之,使程序能正确运行(在指定处修改,不允许增加或删除程序行)。 三、综合应用(1小题,计30分) 1.根据"成绩管理"数据库中的"课程"、"选课"和"学生"三个表建立一个名为view_grade的视图,该视图包含学号、姓名、课程名称和成绩四个字段,并要求先按学号升序排序、在学号相同情况下按课程名称降序排序; 2.建立一个表单grade_list(控件名和文件名),添加一个表格控件,该表格控件的数据源是前面建立的视图view_grade(直接使用拖拽的方法添加该表格);然后在表格控件下面添加一个命令按钮(名称为Command1),该命令按钮的标题为"退出",要求单击按钮时关闭表单。 注意:完成表单设计后要运行表单的所有功能。 基本操作题答案: 4、UPDA 学生 SET 出生日期={^1983.05.1} WHER 姓名="王三风" 简单应用题答案: 1、select 姓名 from 学生,选课 where 学生.学号=选课.学号 and 成绩>=70 group by 姓名 having count (课程号)>=3; INTO TABLE results 2、第一处:modify -> alter,第二处: EOF()-> .not. eof() ,第三处:= —> with 。 综合应用题答案: 1、create view view_grade as select 学生.学号,姓名,课程名称,成绩 from 学生,课程,选课 where 学生.学号=选课.学号; and 选课.课程号=课程.课程号 order by 学生.学号,课程名称 desc 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下,打开"点菜"数据库,完成如下操作: 1.打开"菜单表",增加一个"厨师姓名"字段,字段类型为字符型,宽度为8; 2.使用报表向导建立一个简单报表,要求选择"菜单表"中所有字段(其他不做要求),并把报表保存为one.frx文件。 3.打开第2题建立的报表文件one,将报表标题修改为"菜单一览表",最后保存所做的修改。 4.使用SQL的SELECT语句,根据顾客点菜表和菜单表查询顾客点单价大于等于40元菜的顾客号和菜编号、菜名、单价和数量,结果按菜编号降序排序并存储到名为TABA的表中,将SQL的SELECT语句存储到名为TWO.PRG的文件中。表TABA由SELECT语句自动建立。注意:在SQL语句中不要对表取别名。 二、简单应用(2小题,每题20分,计40分) 在考生文件夹下,完成如下简单应用: 1.打开"点菜"数据库,使用查询设计器设计一个名称为THREE的查询,根据顾客点菜表和菜单表,查询顾客的"顾客号"和"消费金额合计"。顾客某次消费金额由数量*单价得出,而消费金额合计则为其各次消费金额之和。查询结果按"消费金额合计"降序排序,并将查询结果输出到表TABB中。表TABB的两个字段名分别为:顾客号,消费金额合计。设计完成后,运行该查询。 2.创建设计一个文件名为"testA"的表单,如下图所示。表单的标题名为"选择磁盘文件",表单名为"Form1"。该表单完成如下功能: 设置选项按钮组的Click事件代码,使每当在选项按钮组中选择一个文件类型,列表框(List1)就列出该文件类型的文件。列表框的列数为1。"退出"按钮的功能是"关闭和释放表单"。 提示:(1)选择的三种文件类型分别为Word、Excel和TXT文本文件。 (2)列表框的RowSourceType应设置为"7-文件"。 (3)若要让列表框显示Word文件,可将其RowSource属性设置为"*.DOC"。 三、综合应用(1小题,计30分) 在考生文件夹下,先打开"点菜"数据库,然后创建设计一个标题名为"查询"、文件名为"testB"的表单,如下图所示。 表单要求如下: 在该表单中设计一个标签(Label1)、一个文本框(Text1)、一个表格(Grid1)和三个命令按钮。 标签对象标题文本为"结帐日期"(Label1);文本框用于输入结帐日期(Text1);表格控件用于显示结果。 三个命令按钮的功能如下: (1)"查询"(Command1)按钮:在该按钮的"Click"事件中使用SQL的SELECT命令查询结帐日期等于从文本框输入日期的顾客序号、顾客姓名、单位和消费金额,查询结果按消费金额降序排序,并将查询结果存储到表TABC中。 (2)"显示"(Command2)按钮:在该按钮的"Click"事件中使用命令将表TABC中记录在表格控件中显示。 提示:设置表格控件的RecordSourceType和RecordSource属性,其中RecordSourceType属性应设置成"4-SQL说明"。 (3)"退出"(Command3)按钮的功能是"关闭和释放表单"。 表单设计完成后,运行该表单,查询结帐日期等于2005-10-01的顾客信息。 基本操作题 4、SELECT 顾客号,菜单表.菜编号,菜名,单价,数量 FROM 菜单表,顾客点菜表 WHERE; 菜单表.菜编号=顾客点菜表.菜编号 AND 单价>=40 ORDER BY 菜单表.菜编号 DESC INTO TABLE TABA 简单应用题 2、选项按钮组的Click事件代码: if thisform.optiongroup1.option1.value=1 thisform.list1.rowsource="*.doc" endif if thisform.optiongroup1.option2.value=1 thisform.list1.rowsource="*.xls" endif if thisform.optiongroup1.option3.value=1 thisform.list1.rowsource="*.txt" endif "退出"按钮的Click事件代码:thisform.release 综合应用题 "查询"按钮的CLICK事件代码: Select 顾客序号,顾客姓名,单位,消费金额 from 点菜!结帐表 where ; 结帐日期 = ctod(thisform.text1.text) order by 消费金额 desc INTO TABLE tabc.dbf "显示"按钮的CLICK事件代码: thisform.grid1.recordsource="Select 顾客序号,顾客姓名,单位,消费金额 from 点菜!结帐表; where 结帐日期 = ctod(thisform.text1.text) order by 消费金额 desc INTO TABLE tabc.dbf" "退出"按钮的CLICK事件代码:THISFORM.RELEASE 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下,打开DB数据库,完成如下基本操作: 1.给表TABB增加一个字段,字段名为"日期",数据类型为日期型。 2.使用SQL Update语句将表TABB中所有记录的字段"日期"的值修改为2005-10-01,并将SQL语句存储到名为TWO.PRG的文件中。 3.表TABA中有重复的记录,用SQL语句将表TABA中的记录复制到另外一个与它具有相同结构的表TABC中,并消除重复的记录(对于重复多次的记录,只复制一条记录的数据)。并将SQL的SELECT语句存储到名为THREE.PRG的文件中。 4.使用报表向导建立一个简单报表。要求选择TABA中所有字段;记录不分组;报表样式为随意式;列数为1,字段布局为"列",方向为"横向";排序字段为No,升序;报表标题为"计算结果一览表";报表文件名为P_ONE。 二、简单应用(2小题,每题20分,计40分) 在考生文件夹下,打开DB数据库,完成如下简单应用: 1.编写文件名为FOUR.PRG的程序,根据表TABA中所有记录的a,b,c三个字段的值,计算各记录的一元二次方程的两个根x1和x2,并将两个根x1和x2写到对应的字段x1和x2中,如果无实数解,在note字段中写入"无实数解"。注意:平方根函数为SQRT();程序编写完成后,运行该程序计算一元二次方程的两个根。 注意:一元二次方程公式如下: 2.打开文件名为testA的表单,表单界面上有两个命令按钮,界面要求如下: (1)设置两个按钮的高度为:30;宽度为:80;"退出"按钮与"查询"按钮顶边对齐; (2)"查询"按钮:在该按钮的Click事件中使用SQL的SELECT命令从表TABA中查询"无实数解"的记录存储到表TABD中; (3)"退出"按钮:关闭并释放表单。 请按要求完成表单的设计,表单设计完成后,运行该表单,单击"查询"按钮进行查询。 三、综合应用(1小题,计30分) 在考生文件夹下,打开SDB数据库,完成如下应用:创建一个标题名为"查询"、文件名为testb的表单,如下图所示。 表单要求如下:1.为表单建立数据环境,向数据环境添加"学生表"。 2.表单启动后自动居中。 3.在该表单中设计一个标签、一个文本框、一个表格和两个命令按钮。 1) 标签对象标题文本为"学生注册日期"(Label1);文本框用于输入学生注册日期(Text1);表格控件用于显示结果(Grid1)。 2) 命令按钮的功能如下:①"查询"按钮(Command1):在该按钮的Click事件中使用SQL的SELECT命令从"学生表"中查询学生注册日期等于文本框中指定的注册日期的学生的学号、姓名、年龄、性别、班级和注册日期,查询结果按年龄降序排序,并将查询结果在表格控件中显示,同时将查询结果存储到表TABE中。 注意:查询结果存储到表TABE之前,应将表TABE中记录清空。TABE表是已经建立好的表,它与学生表的结构不完全一样,多两个字段。②"退出"按钮(Command2):的功能是"关闭和释放表单"。注意:表格控件的RecordSourceType属性设置为"4-SQL说明";表单设计完成后,运行该表单,查询注册日期等于2005年9月2日的学生信息。 基本操作题 use tabb select distinct * from tabb into table tabc 简单应用题 1、在FOUR.PRG文件中输入代码: use db!taba in 0 select taba do while !eof() select a,b,c,x1,x2,note from taba into array aa a=aa(1) b=aa(2) c=aa(3) IF a<>0 delta=b^2-4*a*c re=-b/(2*a) im=SQRT(ABS(delta))/(2*a) IF delta>=0 root1=re+im root2=re-im replace x1 with root1 replace x2 with root2 repl note with "无实数解" ENDIF ENDIF enddo close database 2、"查询"按钮的Click事件代码: select * from taba where note="无实数解" into table tabd "退出"按钮的Click事件代码:THISFORM.RELEASE 综合应用题: 将"学生表"添加为表单testb的数据环境,将表单testb的AutoCenter属性设置为".T."。 设置"查询"按钮的Click事件代码: close all delete from tabe declare dd(1) use 学生表 select 学号 as 学号,姓名 as 姓名,年龄 as 年龄,性别 as 性别,班级 as 班级,注册日期 as 注册日期; from 学生表 where 注册日期= ctod(thisform.Text1.text) into arra dd order by 年龄 desc use tabe appe from arra dd thisform.grid1.recordsource="select 学号 as 学号,姓名 as 姓名,年龄 as 年龄,性别 as 性别,; 班级 as 班级,注册日期 as 注册日期 from 学生表 where ; 注册日期= ctod(thisform.Text1.text) into cursor tmp order by 年龄 desc" "退出"按钮的Click事件代码:THISFORM.RELEASE 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下完成下列操作: 1.新建一个名为"学校"的数据库文件,将自由表"教师表"、"课程表"和"学院表"添加到该数据库。 2.使用SQL语句ALTER TABLE...UNIQUE...将"课程表"中的"课程号"定义为候选索引,索引名是temp,并将该 a(1) = 3000 a(2) = 4000 a(3) = 5000 "生成"按钮的Click事件代码: if thisform.optiongroup1.option1.value=1 for i=1 to 3 if thisform.combo1.listindex=i then select * from 教师表 order by 工资 desc,姓名 into table salary where 教师表.工资>=a(i) endif for i=1 to 3 if thisform.combo1.listindex=i then select * from 教师表 order by 工资 desc,姓名 into table salary where 教师表.工资=1。 4. alter table 教师表 alter 职工号 set check LEFT(职工号,4)="1102" 简单应用题: 1、第一处:KEY-> PRIMARY KEY;第二处:TO->INTO;第三处:BY->SET;第四处:WHILE->WHERE 综合应用题: "取前3名"过程的代码为:SELECT TOP 3 学院表.系名,avg(教师表.工资) as 平均工资 FROM 学院表,教师表; WHERE 学院表.系号=教师表.系号 GROUP BY 学院表.系名 ORDER BY 2 DESC into table sa_three "取前5名"过程的代码为:SELECT TOP 5 学院表.系名,avg(教师表.工资) as 平均工资 FROM 学院表,教师表; WHERE 学院表.系号=教师表.系号 GROUP BY 学院表.系名 ORDER BY 2 DESC into table sa_five 在表单的RightClick事件中输入代码:do mymenu.mpr, 一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 1.建立一个新表emp_bak.dbf,该表的结构与employee表的结构完全相同。 2.为employee表的"职员号"字段建立一个候选索引,索引名为empid,索引表达式为"职员号"。 3.使用报表向导生成一个报表文件employee.frx,其中包括employee表的职员号、姓名、性别和职务4个字段,报表样式为"简报式",按"职员号"升序排序,报表标题为"职员一览表"。 4.建立一个命令文件one.prg,该文件包含一条运行(预览)报表文件employee.frx的命令。 二、简单应用(2小题,每题20分,计40分) 1.建立一个表单文件myform,将employee表文件添加到数据环境中,在表单中添加表格控件grid1,指定其记录源类型为"别名"、记录源为employee表文件,最后添加一个"退出"命令按钮控件Command1,程序运行时单击该命令按钮将关闭表单。 2.修改two.prg文件中的SQL SELECT命令,使之正确运行时可以显示如下结果: 组别 组长 组员 1 朱茵 赵一军 1 朱茵 李龙 1 朱茵 王婧 1 朱茵 王一凡 2 李毅军 刘严俊 2 李毅军 杨小萍 2 李毅军 胡小晴 3 吴军 杨兰 3 吴军 吴伟军 3 吴军 赵小青 3 吴军 韦小光 4 杨一明 李琪 4 杨一明 杨小阳 4 杨一明 李楠 4 杨一明 胡一刀 三、综合应用(1小题,计30分) 按要求完成如下综合应用: 1. 建立如下图所示的表单文件form_three(表单名为form1)。标签控件命名为Ln,文本框控件命名为Textn,命令按钮控件命名为Commands。表单运行时在文本框中输入职员号,单击"开始查询"命令按钮查询该职员所经手的订购单信息(order表),查询的信息包括:订单号、客户号、签订日期和金额,按签订日期升序排序,并将结果存储到用字母't'加上职员号命名的表文件中(如职员101经手的订购单信息将存储在t101.dbf文件),每次完成查询后关闭表单。 2.建立菜单mymenu,包含菜单项"查询"和"退出",选择"查询"时运行表单form_three(直接用命令),选择"退出"时返回到默认的系统菜单(直接用命令SET SYSMENU TO DEFAULT)。 3.最后从菜单运行所建立的表单,并依次查询职员107、111和115经手的订购单信息。 基本操作题 1、 use employee copy structure to emp_bak 4. report form employee environment preview 简单应用题: 3、第2行语句修改为:,(逗号)-> join;第3行语句修改为:p.职务="组长"->c.职务="组长", c.姓名=p.姓名->c.姓名<>p.姓名; 综合应用题: "查询"按钮的Click事件代码: x='t'+alltrim(thisform.Textn.value) SELECT Order.订单号,Order.客户号,Order.签订日期,Order.金额; FROM employee INNER JOIN order ; ON Employee.职员号=Order.职员号; where Order.职员号=alltrim(thisform.Textn.value); ORDER BY Order.签订日期; INTO TABLE &x thisform.release "查询"菜单的结果列中选择"命令",选项列中输入do form form_three,"退出"菜单项的结果列中选择"命令",选项列中输入SET SYSMENU TO DEFAULT。 上机考试注意事项:1、题中给的命令原样照抄不能省;2、生成文本文件时要加扩展名;3、命令写完全;4、每做完一大题关闭VF重新打开;5、题中给的对象属性原来大写的要大写;6、答题不要离开考生目录。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)新建一个名为"图书管理"的项目。 (2)在项目中建一个名为"图书"的数据库。 (3)考生文件夹下的自由表books、borrows和loans添加到"图书"数据库中。 (4)在项目中建立查询tscx,查询books表中"价格"大于等于"70"的图书的所有信息,查询结果按"价格"排序。 一、基本操作题 【审题 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 】 本大题考查了项目管理器的基本操作及使用;查询设计器的使用。 新建项目可以通过菜单操作、工具栏操作或命令方式完成;在项目中新建库及向数据库中添加表,可以通过项目管理器右侧的"新建"和"添加"命令按钮完成。 建立查询文件要在查询设计器中完成,筛选条件在"筛选"选项卡中设置,查询结果排序条件在"排序依据"选项卡中进行设置。 【操作步骤】 (1)在命令窗口执行命令:CREATE PROJECT 图书管理,新建一个项目管理器。 (2)①在项目管理器中选中"数据"选项卡内的"数据库"项,然后单击"新建"按钮,系统弹出"新建数据库"对话框。 ②单击"新建数据库"图标按钮,在弹出的"创建"对话框的"数据库名"文本框中输入"图书"。 ③单击"保存"命令按钮将数据库保存在考生文件夹下。如图3-1所示。 图3-1 在项目管理器中创建数据库 (3)①接上一小题操作,在新建的"图书"数据库设计器中单击右键,选择【添加表】快捷菜单命令,在弹出的"打开"对话框中双击自由表Books,将表添加到数据库中。如图3-2所示。 图3-2 向数据库中添加自由表 ②以同样的方法,将borrows表和loans表添加到数据库中。 (4)①在命令窗口执行命令:CREATE QUERY TSCX,打开查询设计器,在"添加表或视图"对话框中,双击books表,将表添加到查询设计器中。如图3-3所示。 图3-3 向查询设计器中添加数据表 ②在"字段"选项卡中单击"全部添加"按钮,将"可用字段"中的全部字段添加到"选定字段"中。 ③在"筛选"选项卡的"字段名"下拉列表中选择"books.价格"字段,在"条件"下拉框中选择">=",在"实例"框中输入"70"。如图3-4所示。 图3-4 设置查询的筛选条件 ④在"排序依据"选项卡内双击"选定字段"列表框中的"books.价格"字段,将字段添加到"排序条件"列表框中,在"排序选项"中选择"降序"单选项。 ⑤单击"常用"工具栏中的"运行"按钮查看结果,将查询文件保存到考生文件夹下。 【知识拓展】 在Visual FoxPro中,除了利用命令方式建立项目管理器外,还可以通过以下方法建立: 执行【文件】→【新建】菜单命令,或单击"常用"工具栏的"新建"按钮,在弹出的"新建"对话框中选中"项目"选项(此为系统默认选项),然后单击"新建文件"图标按钮,在弹出的"创建"对话框的"数据库名"文本框中输入项目文件名,单击"确定"按钮即可创建一个新的项目文件。 二、简单应用题(共2小题,每题各20分,共计40分) (1)在"学籍"数据库中有student、score和course三个表,使用菜单设计器制作一个名为menu1的菜单,菜单只有一个"查询"菜单项。该菜单项中有"按学号"、"按课程号"和"退出"3个子菜单:"按学号"和"按课程号"子菜单分别使用SQL语句的AVG函数统计各学生和课程的平均成绩。统计结果中分别包括"学号"、"姓名"、"平均成绩"和"课程编号"、"平均成绩"。"退出"子菜单负责返回到系统菜单。 的数据。如图3-6所示。 步骤5:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 图3-6 通过数据环境向表单添加表/视图 【知识拓展】 在Visual FoxPro中,利用数据环境,将字段拖到表单中,默认情况下,拖动字符型字段产生文本框控件;拖动逻辑型字段产生复选框控件;备注型字段产生编辑框控件;表或视图则产生表格控件。 三、综合应用题(共1小题,计30分) 考生文件夹下存在数据库"学籍",其中包含course和score表,这两个表存在一对多的联系。 对"学籍"数据库建立文件名为form2的表单,表单标题为"课程成绩查看",其中包含两个表格控件。第一个表格控件用于显示"课程"表的记录,第二个表格控件用于显示与"课程"表当前记录对应的"成绩"表中的记录。 表单中还包含一个标题为"退出"的命令按钮,要求单击此按钮退出表单,如图2-1所示。 图2-1 表单示例 三、综合应用题 【审题分析】 本大题考查了表单及控件基本属性的设计,如果要将表格控件与数据表内容相合,首先要将数据表添加到表单的数据环境中,然后利用表格生成器建立表格与数据表的联系,如果在数据库中的两个表已存在永久性连接,那么被添加到表单数据环境中的表也会存在这种联系。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM FORM2,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加两个表格控件和一个命令按钮控件。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,如图3-7所示;表单及控件属性设置,见表3-1。 表3-1 表单及控件属性设置 对 象 表单(Form1) 命令按钮(Command1) 属 性 Caption Caption 属性值 课程成绩查看 退出 步骤3:右击表单选择【数据环境】快捷菜单命令,继续在表单数据环境中单击右键选择【添加】快捷菜单命令,在"添加表或视图"对话框中双击course和socre表,将表添加到表单的数据环境中。 步骤4:右击第一个表格(Grid1)选择【生成器】快捷菜单命令,在"表格项"选项卡中,单击"数据库和表"下方的按钮打开,在弹出的"打开"对话框中选择course表,将"可用字段"中的字段全部添加到"选定字段"中,单击"确定"按钮;以同样的方法为第二个表格(Grid2)设置score表中的字段。如图3-8所示。 步骤5:双击"退出"命令按钮(Command1),在Click事件中编写程序代码:THISFORM.RELEASE。 步骤6:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 【知识拓展】 除了利用表格生成器设置表格的数据来源,还可以通过表格的RecordSourceType属性和RecordSource属性指定表格的数据来源,也可以直接拖动表单数据环境中数据表到表单中形成表格控件,以建立表格和数据表之间的关系。 图3-7 表单"属性"对话框 图3-8 表格生成器界面 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)请在考生文件夹下建立一个项目xm。 (2)将考生文件夹下的数据库kshj加入到新建的项目xm中。 (3)利用视图设计器在数据库中建立视图myview,视图包括"获奖情况"表的全部字段(顺序同"获奖情况"表中的字段)和全部记录。 (4)从表"获奖情况"中查询"等级"为"一等奖"的学生的全部信息("国籍"表的全部字段),并按"分数"的升序存入新表temp中。 一、基本操作题 【审题分析】 本大题考查了项目管理器的建立及使用;视图设计器及查询设计器的使用。 新建项目可以通过菜单操作、工具栏操作或命令方式完成;向项目中添加数据库可以通过项目管理器右侧的"添加"命令按钮完成。 视图和查询的操作比较类似,在设计第4小题时,熟悉SQL命令的考生也可以直接通过编写SQL命令进行查询。 【操作步骤】 (1)在命令窗口执行命令:CREATE PROJECT XM,新建一个项目管理器。 (2)在项目管理器中选中"数据"选项卡内的"数据库"项,然后单击"添加"按钮,在弹出的"打开"对话框中双击kshj数据库文件,将数据库添加到项目管理器中。 (3)①在项目管理器中单击"数据库"前面的"+"号,依次展开"数据库"→"kshj"。如图3-9所示。 图3-9 展开数据库分支选择"本地视图" ②选中"本地视图"项单击"新建"按钮,接着在弹出的"新建本地视图"对话框中单击"新建视图"图标按钮,打开视图设计器。在"添加表或视图"对话框中双击"获奖情况"表,将表添加到视图设计器中。 ③在"字段"选项卡中单击"全部添加"按钮,将"可用字段"中的全部字段添加到"选定字段"中。 ④单击"常用"工具栏中的"运行"按钮查看结果,将视图文件以文件名myview保存。 (4)在命令窗口输入以下命令,将结果输出到temp表中(以下程序是通过查询设计器生成)。 SELECT 国籍.*; && 选择需要输出的字段,"*"表示表中所有字段 FROM kshj!国籍 INNER JOIN kshj!获奖情况; && 选择要进行连接的表 ON 国籍.姓名 = 获奖情况.姓名; && 设置两个表的连接条件 WHERE 获奖情况.等级 = "一等奖"; && 设置输出记录要满足的条件 ORDER BY 获奖情况.分数; && 设置输出记录的排序条件 INTO TABLE TEMP.DBF && 指定查询结果输出到数据表temp中 (注意:程序中的"&&"符号是功能注释符,该符号及后面的注释文字不会影响程序的执行,是对命令功能的说明,非查询设计器生成的内容,考生在做题过程中可以不输入该注释内容,凡书中后面出现此符号者与本题相同,不再加以说明。) 【知识拓展】 第4小题中,大家也可以在命令窗口输入以下SQL语句进行查询: SELECT 国籍.* FROM 国籍,获奖情况; && 选择输出字段及要查询的数据表 WHERE 国籍.姓名=获奖情况.姓名 AND 获奖情况.等级="一等奖"; && 设置表的连接条件及筛选条件 ORDER BY 获奖情况.分数 INTO TABLE TEMP.DBF && 设置排序条件及指定查询输出的表名 二、简单应用题(共2小题,每题各20分,共计40分) (1)根据考生文件夹下的xxx表和jjj表建立一个查询chaxun,查询"工作单位"是"复旦大学"的所有教师的"姓名"、"职称"、"联系电话",要求查询去向是表,表名是cx1.dbf,并执行该查询("姓名"、"职称"取自表jjj,"联系电话"取自表xxx)。 (2)建立表单form1,表单中有两个命令按钮,按钮的名称分别为query和close,标题分别为"查询"和"关闭"。 二、简单应用题 (1)【审题分析】 本题考查的是在查询设计器中新建查询的操作。操作过程中要注意确认查询输出的字段来源于哪个数据表,设置查询条件是在"筛选"选项卡中进行,查询去向可通过执行【查询】→【查询去向】菜单命令,在"查询去向"对话框中进行操作,本题属于一个比较简单的查询操作。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE QUERY CHAXUN,打开查询设计器。在"添加表或视图"对话框中单击"其他"按钮,然后在弹出的"打开"对话框中双击xxx表,将表添加到查询设计器中,以同样的方法将jjj表也添加到查询设计器中。 步骤2:添加两个表后,系统弹出"连接条件"对话框,自动查找两个表中相匹配的字段进行连接,单击"确定"按钮设置两个表的联系。如图3-10所示。 图3-10 自动查找连接条件的"连接条件"对话框 步骤3:依次双击两个表中的"姓名"、"职称"和"联系电话"字段,添加到"字段"选项卡的"选定字段"列表中;然后在"筛选"选项卡的"字段名"下拉列表中选择"xxx.工作单位"字段,在"条件"下拉框中选择"=",在"实例"框中输入"复旦大学"。 步骤4:执行【查询】→【查询去向】菜单命令,在弹出的"查询去向"对话框中单击"表"图标按钮,接着在"表名"中输入文件名cx1,单击"确定"按钮。如图3-11所示。 步骤5:最后单击"常用"工具栏中的"运行"按钮查看结果,将查询文件保存到考生文件夹下。 图3-11 设置查询去向 (2)【审题分析】 本题考查的是表单的创建及表单和控件最常见属性的修改,新建表单可以通过打开"新建"对话框进行操作,也可以直接通过命令完成;向表单添加控件可以通过选择"表单控件"工具栏中的按钮完成,而属性的修改可以在"属性"面板中进行。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM FORM1,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加两个命令按钮控件。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-2。 表3-2 表单及控件属性设置 对 象 命令按钮(Command1) 命令按钮(Command2) 属 性 Name Caption Name Caption 属性值 query 查询 close 退出 【知识拓展】 Name属性表示的是对象内部的名称,在引用对象时所使用的名字,每个控件都有Name属性值,在表单运行时不可见;而Caption属性表示对象的标题,在表单运行时可见,不是每个控件对象都有Caption属性,例如命令按钮组(CommandGroup)、选项组(OptionGroup)就没有该属性,但它们所包含的单个命令按钮或选项按钮有Caption属性。 三、综合应用题(共1小题,计30分) 在考生文件夹下,打开ec数据库,完成如下综合应用(所有控件的属性必须在表单设计器的属性窗口中设置): 设计一个文件名和表单名均为form2的表单,表单标题为"客户基本信息"。 要求该表单上有"女客户信息查询"(Command1)、"客户信息输出"(Command2)和"退出"(Command4)三个命令按钮。各命令按钮功能如下: ①单击"女客户信息查询"按钮,使用SQL的SELECT命令查询客户表cust中"女客户"的全部信息。 ②单击"客户信息输出"按钮,调用考生文件夹中的报表文件report1在屏幕上预览(PREVIEW)客户信息。 ③单击"退出"按钮,关闭表单。 三、综合应用题 【审题分析】 本大题考查的是表单的创建及表单和控件属性的修改,同时还要求设计表单控件的事件代码。首先在新建的表单中添加控件,然后在"属性"面板中依次修改每个控件的属性,最后设计事件代码。 本题所涉及的程序代码包括: ? SQL最基本的简单查询语句:SELECT <字段名> FROM <表名> WHERE <条件表达式>; ? Visual FoxPro打印预览的命令:PREVIEW; ? 释放表单的方法:RELEASE 这些语句都比较简单,均在控件的Click(单击)事件中编写。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM FORM2,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加三个命令按钮控件。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-3。 表3-3 表单及控件属性设置 对 象 表单(Form1) 命令按钮(Command1) 属 性 Name Caption Caption 属性值 form2 客户基本信息 女客户信息查询 命令按钮(Command2) 命令按钮(Command3) Caption Caption 客户信息输出 退出 步骤3:双击命令按钮,编写各个命令按钮的Click事件代码,如图3- 12所示。各按钮代码如下: 图3-12 事件代码编辑窗口 ***"女客户信息查询"按钮的Click事件代码*** SELECT * FROM CUST WHERE 性别="女" ***"客户信息输出"按钮的Click事件代码*** REPORT FORM REPORT1 PREVIEW ***"退出"按钮的Click事件代码*** THISFORM.RELEASE 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)新建一个名为"供应"的项目文件。 (2)将数据库"零件供应"加入到新建的项目文件中。 (3)通过"零件号"字段为"零件"表和"供应"表建立永久联系("零件"是父表,"供应"是子表)。 (4)为"供应"表的"数量"字段设置有效性规则:数量必须大于0并且小于9999;错误提示信息是"数量值不符合要求"。 一、基本操作题 【审题分析】 本大题考查了项目管理器的建立及使用;数据库表间联系的建立及有效性规则的建立。 对两个表建立联系是在数据库设计器中进行操作的,建立联系前必须对两个表中进行连接的字段建立相关索引,并通过索引字段建立表间联系。 为数据库表建立索引可以在表设计器中操作,同样,对表中字段建立有效性规则也是在表设计器中完成,建立有效性规则时要注意先选中需要建立有效性规则的字段。 【操作步骤】 (1)在命令窗口执行命令:CREATE PROJECT 供应,新建一个项目管理器。 (2)在项目管理器中选中"数据"选项卡内的"数据库"项,然后单击"添加"按钮,在弹出的"打开"对话框中双击"零件供应"数据库文件,将数据库添加到项目管理器中。 (3)①在项目管理器中单击"数据库"前面的"+"号,依次展开"数据库"→"供应零件"→"表"。 默认方式,可省略该关键字)和"降序"(DESC,不可缺省该关键字)两种。 ⑥记录输出方式。SQL查询输出最常见的是输出到屏幕(缺省方式)、表(INTO TABLE)、临时表(INTO CURSOR)和数组(INTO ARRAY)。 注意:一个再简单的SQL查询语句也不能缺少SELECT(输出字段)和FROM(需要查询的表)两个短语内容,其他短语则可以根据题目要求来判断时候需要使用。 (2)【审题分析】 本题考查的是快捷菜单的设计,快捷菜单与下拉菜单的比较是缺少条形菜单,即快捷菜单仅包括一个弹出式菜单,其他设计基本上都与下拉菜单的设计一致,快捷菜单一般都是通过单击鼠标右键触发的,因此,在调用快捷菜单时需要在调用快捷菜单的对象的右击(RightClick)事件中设置。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE MENU QUICKMENU,在弹出的"新建菜单"对话框中单击"快捷菜单"图标按钮,打开快捷菜单设计器。 步骤2:在菜单设计器"菜单名称"列的文本框中输入两个菜单项名"查找"和"运行"。执行【菜单】→【生成】菜单命令,生成一个可执行的菜单文件。 步骤3:在命令窗口执行命令:CREATE FORM MAINFORM,打开表单设计,双击表单,在事件代码编辑窗口的"过程"下拉框中选择RightClick(鼠标右击)事件代码,编写该事件的代码:DO QUICKMENU.MPR。 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 三、综合应用题(共1小题,计30分) 对考生文件夹下的"零件供应"数据库及其中的"零件"表和"供应"表建立如下表单: 设计名为sform的表单(表单控件名和文件名均为sform),表单的标题为"工程使用零件情况浏览"。 表单中有一个表格控件和两个命令按钮"查询"和"退出"。运行表单时,单击"查询"命令按钮后,表格控件中显示了工程号"JC11"所使用的零件的零件名、颜色和重量。 单击"退出"按钮关闭表单。 三、综合应用题 【审题分析】 本大题考查了表单及控件的常用属性和方法的设置;表单数据环境的使用;SQL嵌套查询。 对本题操作时,首先建立表单及表单控件,并修改对象的属性值,然后对命令按钮编写事件代码。要注意表格控件的数据源类型属性值(RecordSourceType)的设计,由于本题没有明确指定表格的数据源使用表,而是要求显示查询结果,因此,数据源类型应设置为"4-SQL 说明",用来显示查询生成的临时表记录。 程序设计部分采用SQL嵌套查询方式进行查询,首先通过内层循环查找"供应"表中"工程号"为"JC11"所使用的"零件号",得到一个满足条件的"零件号"的记录集合,然后再通过外层查询在"零件"表中查询包含这些"零件号"的相关信息。本题嵌套查询使用了IN短语,内层查询注意要用括号括起来,相当于一个集合定界符的作用。 程序设计部分还要注意的是在指定"工程号"为"JC11"时,由于表格在指定数据源时已使用了一个字符串定界符,而此处的"JC11"是字符型数据,也要使用字符串定界符,因此要注意这两处的定界符不要相同,否则程序会出错。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM SFORM,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加两个命令按钮和一个表格控件。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-4。 表3-4 表单及控件属性设置 对 象 表单(Form1) 命令按钮(Command1) 属 性 Name Caption Caption 属性值 sform 工程使用零件情况浏览 查询 命令按钮(Command2) 表格(Grid1) Caption RecordSourceType 退出 4 - SQL 说明 步骤3:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *****"查询"按钮的Click事件代码***** THISFORM.GRID1.RECORDSOURCE="; && 指定表格的数据源,此处为SQL查询语句 SELECT DISTINCT 零件名,颜色,重量 FROM 零件; && DISTINCT用来消除查询结果中重复的记录 WHERE 零件号 IN; && 利用IN短语查找内层循环中包含的记录,此处的IN相当与集合运算符∈ (SELECT 零件号 FROM 供应 WHERE 工程号='JC11'); INTO CURSOR TEMP" && 将最终查询结果输出到临时表temp中 *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 【知识拓展】 ①字符串常量的定界符包括英文半角状态下的双引号(" ")、单引号(' ')和方括号([ ]),定界符必须成对出现,且一种定界符中不能再包含相同的定界符。 ②SQL查询语句中,"INTO CURSOR <表名>"短语可以将查询结果临时存放到一个只读的.dbf表文件中,当关闭文件时该文件自动被删除。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)创建一个名为"学生管理"的项目文件。 (2)将考生文件夹下的数据库"班级学生"添加到新建的项目文件中。 (3)打开数据库"班级学生",将考生文件夹下的自由表"教师"添加到数据库"班级学生"中;为"教师"表创建一个索引名和索引表达式均为"教师编号"的主索引(升序)。 (4)通过"班级号"字段建立"班级"表和"学生"表间的永久联系。 一、基本操作题 【审题分析】 本大题考查了项目管理器的建立及使用;为数据库表建立索引及两个表联系的基本操作。 为数据库表建立索引可以在表设计器中操作,建立索引时,可以先在表设计器的"字段"选项卡中建立一个普通索引,然后在"索引"选项卡中修改该索引的相关内容,例如索引名、索引类型等,也可以直接在"索引"选项卡中建立索引。 对两个表建立联系是在数据库设计器中进行操作的,建立联系前必须对两个表中进行连接的字段建立相关索引,并通过索引字段建立表间联系。对本题操作时,可在项目管理器中选中要进行操作的数据库或表对象,然后单击项目管理器中的"修改"按钮打开相关的库或表设计器进行操作。 【操作步骤】 (1)在命令窗口执行命令:CREATE PROJECT 学生管理,新建一个项目管理器。 (2)在项目管理器中选中"数据"选项卡内的"数据库"项,然后单击"添加"按钮,在弹出的"打开"对话框中双击"班级学生"数据库文件,将数据库添加到项目管理器中。 (3)①在项目管理器中单击"数据库"前面的"+"号,依次展开"数据库"→"班级学生"→"表"。然后单击"添加"按钮,在弹出的"打开"对话框中双击"教师"表文件,将自由表添加到数据库中。 ②选中"教师"表单击"修改"按钮,弹出"教师"表设计器,在表设计器的"字段"选项卡中选中"教师编号"字段名,然后在"索引"列的下拉框选择"升序"排序方式,接着在"索引"选项卡中将"类型"设置为"主索引",单击"确定"按钮保存表结构修改。 (4)①参照"教师"表的操作,为"班级"表建立"班级号"字段的主索引;为"学生"表建立"班级号"字段的普通索引。 ②在项目管理器中选中数据库"班级学生",然后单击"修改"命令按钮,打开数据库设计器,拖动"班级"表"索引"下方的主索引"班级号"到"学生"表中"索引"下方的普通索引"班级号"上,为两个表建立联系。 二、简单应用题(共2小题,每题各20分,共计40分) (1)根据"班级学生"库中的表用SQL SELECT命令查询学生的学号、姓名、课程号和成绩,结果按"课程号"降序排序,"课程号"相同时按"成绩"降序排序,并将查询结果存储到cjb表中,将使用的SQL语句保存到mysql.txt中。 (2)使用表单向导选择"学生"表生成一个名为myform1的表单。要求选择"学生"表中所有字段,表单样式为"浮雕式";按钮类型为"图片按钮";排序字段选择"学号"(降序);表单标题为"学生基本情况输入维护"。 二、简单应用题 (1)【审题分析】 本题主要考查的是SQL连接查询。查询中需要涉及"学生"表和"成绩"表中的记录,通过"学号"字段可以建立两个表的联系,在输出查询结果时候,利用DESC短语可以指定将结果按字段的降序排序,并通过INTO TABLE短语将查询结果输出到指定的表中保存。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY FILE MYSQL,打开文本编辑器编写SQL命令。 步骤2:在编辑器中输入如下程序代码(以下程序是通过查询设计器生成): SELECT 学生.学号, 学生.姓名, 成绩.课程号, 成绩.成绩; FROM 班级学生!学生 INNER JOIN 班级学生!成绩 ; ON 学生.学号 = 成绩.学号; ORDER BY 成绩.课程号 DESC, 成绩.成绩 DESC; && 查询结果先按"课程号"降序,再按"成绩"降序 INTO TABLE cjb.dbf 步骤3:在命令窗口执行命令:DO MYSQL.TXT,执行文件(注意:执行文件时,文件后缀名.txt不能缺省)。 (2)【审题分析】 本题考查的是表单向导的使用,属于比较简单的操作。在启动向导前,可以先打开数据库环境,这样在启动向导添加数据表时,可在向导中直接选中,否则需要通过在"打开"对话框中选择数据表。本题只需根据向导提示在各界面中完成相应的操作即可。 【操作步骤】 步骤1:在命令窗口执行命令:OPEN DATABASE 班级学生,打开数据库环境。 步骤2:执行【文件】→【新建】菜单命令,或单击"常用"工具栏的"新建"按钮,在弹出的"新建"对话框中选中"表单"选项,然后单击"向导"图标按钮,系统弹出"向导取向"对话框,选中"表单向导"项,单击"确定"按钮,启动表单向导。 步骤3:在表单向导的"步骤1 - 字段选取"界面的"数据库和表"下选中"学生"表,将"可用字段"中的字段全部添加到"选定字段"中,单击"下一步"按钮。 步骤4:在表单向导的"步骤2 - 选择表单样式"界面中选中"样式"列表中的"浮雕式",再在"按钮类型"选项中选中"图片按钮",单击"下一步"按钮。 步骤5:在表单向导的"步骤3 - 排序次序"界面中双击"可用的字段或索引标识"中的"学号"字段到"选定字段"列表中,然后选中"降序"选项,单击"下一步"按钮。 步骤6:在表单向导的"步骤4 - 完成"界面中的"请键入表单标题"下方文本框中输入"学生基本情况输入维护",单击"完成"按钮。 步骤7:在"另存为"对话框的"保存表单为:"框中输入表单文件名myform1,单击"保存"按钮。 【知识拓展】 在Visual FoxPro中,不能通过命令方式打开表单向导,使用命令将直接进入表单设计器,除非了在"新建"对话框中启动向导之外,还可以通过执行【工具】→【向导】→【表单】菜单命令启动向导,或在项目管理器中新建文件也可以打开表单向导。 三、综合应用题(共1小题,计30分) 在考生文件夹下,完成如下综合应用: 设计一个表单名为myform2的表单,表单文件名为myform2,表单的标题为"教师课程学生基本信息浏览"。表单上有1个包含3个选项卡的"页框"(Pageframe1)控件和一个"退出"按钮(Command1)。如图2-2所示。其他功能要求如下: ①为表单建立数据环境,向数据环境依次添加"学生"表、"班级"表和"教师"表。 ②要求表单的高度为300,宽度为500;表单显示时自动在主窗口内居中。 ③3个选项卡的标签的名称分别为"学生表"(Page1)、"班级表"(Page2)和"教师表"(Page3),每个选项卡分别以表格形式浏览"学生"表、"班级"表和"教师"表的信息。选项卡距离表单的左边距为20,顶边距为15, 选项卡的高度为240,宽度为450。 ④单击"退出"按钮时关闭表单。 图2-2 表单示例 三、综合应用题 【审题分析】 本大题主要考查的是表单中页框控件的使用,以及表单数据环境的使用。通过拖放表单数据环境中的表到表单中,可快速建立表格及表格与数据表的联系,要注意的是在向每个页面中添加表格数据对象时,一定要注意页面处于编辑状态下(每个页面都可单独选定),否则添加的表格对象只是停留在页框上方,该表格实际是包含在表单中而非添加到页框的页面中。控制页框中页面数的属性为PageCount,该属性为页框控件最重要的属性之一。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM MYFORM2,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加一个命令按钮和一个页框控件。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-5。 表3-5 表单及控件属性设置 对 象 表单(Form1) 命令按钮(Command1) 属 性 Name Caption Height Width AutoCenter Caption 属性值 myform2 教师课程学生基本信息浏览 300 500 .T. 退出 对 象 页框(Pageframe1) Page1 Page2 Page3 属 性 PageCount Left Top Height Width Caption Caption Caption 属性值 3 20 15 240 450 学生表 班级表 教师表 步骤3:右击表单选择【数据环境】快捷菜单命令,继续在表单数据环境中单击右键选择【添加】快捷菜单命令,在"添加表或视图"对话框中双击"学生"、"班级"和"教师"表,将表添加到数据环境中。 步骤4:然后右击"页框"控件,选择【编辑】快捷菜单命令,让页框处于编辑状态,再将数据环境中的三个数据表分别拖到三个对应的页面中(注意:操作过程,当独立的页面被选中时,页框处于编辑状态,在页框四周会出现蓝色边框;另外,表单设计器窗口应为"还原"状态,而非最大化窗口,否则将遮盖表单数据环境内容,无法将表拖到页面中)。 步骤5:双击"退出"命令按钮,编写按钮的Click事件代码:THISFORM.RELEASE。 步骤6:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 【知识拓展】 Visual FoxPro中的表单控件可以分为基本型控件和容器型控件,基本型控件是指不能包含其他控件的控件,如标签、文本框等,而容器型控件是指可以包含其他控件的控件,如本题的页框控件,它可以再包含若干个页面对象,每个页面都可以独立编辑。在页框中只能增减页面而不能添加其他对象,但在每个独立的页面中却可以包含其他控件对象。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)打开"学生选课"数据库,永久删除"学生"数据库表。 (2)建立一个自由表"教师",表结构如下: 教师编号 字符型(3) 教师姓名 字符型(8) 性别 字符型(2) 职称 字符型(8) (3)利用查询设计器建立一个名为kcquery.qpr的查询文件,该查询包含课程名为"数据库原理"的"课程"表中的全部信息。 (4)用SQL UPDATE语句将"课程"表中课程名称为"数据库原理"的任课教师更改为"T55",并将相应的SQL语句存储在文件tcupdate.prg中。 控件从表单左边进入,即要求控件的右边界与表单左边界重合,因此,需要用0减去控件本身的宽度(Width),此时控件右边界才刚好与表单左边界重合,标签的移动过程如下图所示。 计时器Interval属性的含义,通过该属性值中数值的大小,控制表单控件变化的时间间隔,其中,1000表示1秒,数值越大,时间间隔越小。 通过IF条件语句判断控件边界与表单边界的位置关系。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM TESTFORM,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加一个标签、一个计时器和两个命令按钮。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-6。 表3-6 表单及控件属性设置 对 象 表单(Form1) 命令按钮(Command1) 计时器(Timer1) 属 性 Name Caption BackColor Caption Interval 属性值 testform 计算机考试系统 255,255,0 退出 500 对 象 标签(Label1) 属 性 Caption AutoSize BackColor ForeColor FontName FontSize 属性值 欢迎使用考试软件 .T. 255,255,0 255,0,0 隶书 20 步骤3:双击计时器(Timer1),编写该控件的Timer事件代码,代码如下: *****计时器(Timer1)的Timer事件代码***** IF THISFORM.LABEL1.LEFT>THISFORM.WIDTH THISFORM.LABEL1.LEFT=0-THISFORM.LABEL1.WIDTH THISFORM.LABEL1.LEFT=THISFORM.LABEL1.LEFT+5 ENDIF 步骤4:双击"退出"命令按钮,编写命令按钮的Click事件代码,代码如下: *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤5:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 (2)【审题分析】 本题考查的是视图设计器的使用及报表向导的使用,由于视图只能保存在数据库中,因此要先打开用于保存视图的数据,本题中要注意判断视图中的字段均来自哪个表。 另外,在视图设计器中输入计算表达式时,可直接在视图设计器"字段"选项卡的"函数和表达式"下的文本框中输入表达式,同时也可以通过打开"表达式生成器"对话框进行输入,要为输入的表达式指定一个新的视图字段名,可以通过AS短语指定。用于计数的函数为COUNT(),该函数容易与求和函数SUM()混淆。 建立视图后,可在报表向导"步骤1 - 字段选取"界面的"数据库和表"中看到刚建立的视图文件,然后根据向导提示完成操作即可。 【操作步骤】 步骤1:在命令窗口执行命令:OPEN DATABASE 学生选课,打开数据库环境。 步骤2:继续在命令窗口执行命令:CREATE VIEW,打开视图设计器。在"添加表或视图"对话框中依次双击"课程"表和"成绩"表,将表添加到视图设计器中,添加两个表后,系统弹出"连接条件"对话框,自动查找两个表中相匹配的字段进行连接,单击"确定"按钮设置两个表的联系。 步骤3:在视图设计器中双击"课程"表中"课程号"和"课程名称"字段,添加到"选定字段"中;然后在"字段"选项卡的"函数和表达式"下的文本框中输入表达式:COUNT(成绩.学号) AS 选课人数,再单击"添加"按钮,将其添加到"选定字段"列表中。 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将视图文件以文件名xkview保存。 步骤5:执行【文件】→【新建】菜单命令,或单击"常用"工具栏的"新建"按钮,在弹出的"新建"对话框中选中"报表"选项,然后单击"向导"图标按钮,系统弹出"向导取向"对话框,选中"报表向导"项,单击"确定"按钮,启动报表向导。 步骤6:在报表向导的"步骤1 - 字段选取"界面的"数据库和表"下选中xkview视图文件,将"可用字段"中的字段全部添加到"选定字段"中。 步骤7:由于本题不再要求其他操作,可以直接单击"完成"按钮跳至向导最后一个界面。继续单击"完成"按钮,在"另存为"对话框的"保存报表为:"框中输入报表文件名xkrepo,单击"保存"按钮。 三、综合应用题(共1小题,计30分) 在考生文件夹下打开mainform表单文件,将该表单设置为顶层表单,然后设计一个菜单,并将新建立的菜单应用于该表单(在表单的load事件中运行菜单程序)。 新建立的菜单文件名为mainmenu,结构如下(记录浏览、打印和退出是菜单栏中的3个菜单项): 图2-4 表单示例 选课统计浏览 如图2-4所示。各菜单项的功能如下: ①选择"课程浏览"时在表单的表格控件中显示"课程"表的内容(在"过程"中完成,直接指定表名)。 ②选择"选课统计浏览"时在表单的表格控件中显示简单应用题建立的视图xkview的内容(在"过程"中完成,直接指定视图名)。 ③选择"报表预览"时预览简单应用题建立的报表xkrepo(在命令中完成)。 ④选择"退出"时关闭和释放表单(在"命令"中完成)。 注意:最后要生成菜单程序,并注意该菜单将作为顶层表单的菜单。 三、综合应用题 【审题分析】 本题主要考查的是菜单在顶层表单中的应用。主要包括两大部分的操作,即菜单设计和表单设计。操作过程可按以下步骤进行: 通过菜单设计器建立菜单,注意主菜单和子菜单的建立。菜单设计有两个操作关键:一是在菜单设计器中勾选"常规选项"对话框中的"顶层表单",表示此菜单存在顶层表单中;二是在释放表单时,要使用表单的文件名,即本题中可以通过MAINFORM.RELEASE命令释放MAINFORM表单,注意:不要使用THISFORM.RELEASE命令释放表单。 在表单设计过程中,要注意将表单设置为顶层表单,通过表单的ShowWindow属性值可以进行设置,而在表单中调用菜单文件是在表单的Load(或 INIT)事件中进行调用,还需要通过THIS短语指定当前表单对象的引用。其基本格式为:DO <菜单文件.mpr> WITH THIS[,"<菜单内部名>"]。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE MENU MAINMENU,在弹出的"新建菜单"对话框中单击"菜单"图标按钮,打开菜单设计器。在菜单设计器"菜单名称"列的文本框中依次输入"记录浏览"、"打印"和"退出"3个主菜单名,"结果"下拉框中选择为"子菜单",单击"记录浏览"行的"创建"按钮进入下级菜单设计。 步骤2:在"菜单名称"列依次输入子菜单名"课程浏览"和"选课统计浏览",选择"结果"列都为"过程",分别单击两个"过程"后面的"创建"按钮打开过程编辑器,编写过程代码。 *****"课程浏览"菜单命令的过程代码***** MAINFORM.GRID1.RECORDSOURCE="课程" *****"选课统计浏览"菜单命令的过程代码***** MAINFORM.GRID1.RECORDSOURCE="XKVIEW" 步骤3:通过"菜单级"下拉框返回主菜单项设计界面,以同样的方法,设计"打印"菜单项的下级子菜单"报表预览",注意选择"报表预览"的"结果"项为"命令",然后在后面的文本框中输入命令代码: REPORT FORM XKREPO PREVIEW 步骤4:再次返回主菜单项设计界面,选择"退出"菜单命令的"结果"项为"命令",并输入命令语句: MAINFORM.RELEASE 步骤5:执行【显示】→【常规选项】菜单命令,在弹出的"常规选项"对话框中勾选"顶层表单"复选框,然后单击"确定"按钮,保存修改。 步骤6:执行【菜单】→【生成】菜单命令,在弹出的Visual FoxPro对话框中单击"是"按钮,接着系统会弹出"生成菜单"对话框,单击"生成"按钮生成一个可执行的菜单文件,关闭菜单设计器。 步骤7:在命令窗口执行命令:MODIFY FORM MAINFORM,打开表单设计器。选中表单,在"属性"窗口中修改表单(Form1)的"ShowWindow"属性值设置为"2 - 作为顶层表单"。 步骤8:右击表单选择【数据环境】快捷菜单命令,继续在表单数据环境中单击右键选择【添加】快捷菜单命令,在"添加表或视图"对话框中双击"课程"表,将表添加到数据环境中;再选择"视图"单选项,将XKVIEW视图也添加到数据环境中。 步骤9:双击表单(Form1)编写表单的Load事件代码,代码如下: *****表单(Form1)的Load事件代码***** DO MAINMENU.MPR WITH THIS,"TTT" 步骤10:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)为x_t创建一个主索引和普通索引(升序),主索引的索引名为"CNO",索引表达式为"部门号+年度";普通索引的索引名和索引表达式均为"部门号"。 (2)在x_t表中增加一个名为"说明"的字段,字段数据类型为"字符",宽度为50。 (3)使用SQL的ALTER TABLE语句将x_t表的"年度"字段的默认值修改为"2008",并将该SQL语句存储到命令文件"one.prg"中。 (4)通过"部门号"字段建立x_t表和dep表间的永久联系,并为该联系设置参照完整性约束:更新规则为"限制";删除规则为"级联";插入规则为"忽略"。 一、基本操作题 【审题分析】 本题考查表索引的建立、表结构的修改、SQL定义语句及参照完整性的建立。 根据多个字段建立索引表达式时,需要在表设计器"索引"选项卡的"表达式"中进行设置,该索引表达式可以直接输入,也可以打开"表达式生成器"建立。 参照完整性是针对两个表进行设置的,因此建立参照完整性前要先建立两个表的关联,且有一个表中必须建立关联字段的主索引(或候选索引),另一个表要建立普通索引,建立两个表联系后要先清理数据库,然后再设置参照完整性。 表结构的修改可在相应的表设计器中进行操作即可;SQL定义语句也只需要熟记命令格式,设置表默认值语句的基本格式:ALTER TABLE <表名> ALTER <字段名><类型><(宽度)> DEFAULT <默认值> 。 【操作步骤】 (1)①在命令窗口执行命令:MODIFY DATABASE SALARY,打开salary数据库设计器。 ②右击数据库设计器中的x_t表,选择【修改】快捷菜单命令,打开x_t表设计器,选中"索引"选项卡,在"索引名"下方的文本框中输入"CNO",在"索引"选项卡中将"类型"选择"主索引",在表达式下方的文本框中输入"部门号+年度",建立主索引。 ③接着在"字段"选项卡中选中"部门号",然后在"索引"列中选择"升序",建立"部门号"字段的普通索引,单击"确定"按钮保存表结构修改。 (2)继续打开x_t表设计器,在表设计"字段"选项卡的"字段名"列的最后一个空白文本框中输入字段名"说 明",在"类型"下拉框中选择"字符型",在"宽度"文本框中输入"50",保存表结构修改。 (3)①在命令窗口执行命令:MODIFY COMMAND ONE,打开程序文件编辑器。 ②在编辑器中输入SQL查询代码:ALTER TABLE X_T ALTER 年度 C(4) DEFAULT "2008"。 ③在命令窗口执行命令:DO ONE.PRG,执行程序文件。 (4)①参照1小题的操作首先为dep表建立"部门号"的主索引,在数据库设计器中拖动dep表"索引"下方的主索引"部门号"到x_t表中"索引"下方的普通索引"部门号"上,为两个表建立联系。 ②选中两个表之间的关联线(被选中的连线会变粗),首先执行【数据库】→【清理数据库】菜单命令,清空数据表中带有删除标记的记录,然后执行【数据库】→【编辑参照完整性】菜单命令。 ③在打开的"参照完整性"对话框的表格中,选择"更新"下的单元格内容为"限制";"删除"下的单元格内容为"级联";"插入"下的单元格内容为"忽略"。单击"确定"按钮保存参照完整性的修改。 二、简单应用题(共2小题,每题各20分,共计40分) (1)使用"一对多表单向导"生成一个名为sala_edit的表单。要求从父表dep中选择所有字段,从子表x_t表中选择所有字段,使用"部门号"建立两表之间的关系,样式为"凹陷式";按钮类型为"文本按钮";排序字段为"部门号"(升序);表单标题为"销售数据输入维护"。 (2)在考生文件夹下打开命令文件progerr.prg,该命令文件用来查询各部门的分年度的"部门号"、"部门名"、"年度"、"全年销售额"、"全年利润"和"利润率"(全年利润/全年销售额),查询结果先按"年度"升序,再按"利润率"降序排序,并存储到c_sum表中。 注意,程序在第5行、第6行、第8行和第9行有错误,请直接在错误处修改。修改时,不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。 二、简单应用题 (1)【审题分析】 本题考查的是一对多表单向导的使用。在启动向导前,可以先打开数据库环境,这样在启动向导添加数据表时,可在向导界面中直接选中所需的数据表,本题是根据两个表进行操作的,在启动向导时候注意选择"一对多表单向导",其他的操作只需根据向导提示在各界面中完成即可。 【操作步骤】 步骤1:在命令窗口执行命令:OPEN DATABASE SALARY,打开数据库环境。 步骤2:执行【文件】→【新建】菜单命令,或单击"常用"工具栏的"新建"按钮,在弹出的"新建"对话框中选中"表单"选项,然后单击"向导"图标按钮,系统弹出"向导取向"对话框,选中"一对多表单向导"项,单击"确定"按钮,启动表单向导。 步骤3:在表单向导的"步骤1 - 从父表中选定字段"界面的"数据库和表"下选中"dep"表,将"可用字段"中的字段全部添加到"选定字段"中,单击"下一步"按钮。 步骤4:在表单向导的"步骤2 - 从子表中选定字段"界面的"数据库和表"下选中"x_t"表,将"可用字段"中的字段全部添加到"选定字段"中,单击"下一步"按钮。 步骤5:在表单向导的"步骤3 - 建立表之间的关系"界面系统自动建立两个表的联系,单击"下一步"按钮。 步骤6:在表单向导的"步骤4 - 选择表单样式"界面中选中"样式"列表中的"凹陷式",再在"按钮类型"选项中选中"文本按钮",单击"下一步"按钮。 步骤7:在表单向导的"步骤5 - 排序次序"界面中双击"可用的字段或索引标识"中的"部门号"字段到"选定字段"列表中,单击"下一步"按钮。 步骤8:在表单向导的"步骤6 - 完成"界面中的"请键入表单标题"下方文本框中输入"销售数据输入维护",单击"完成"按钮。 步骤9:在"另存为"对话框的"保存表单为:"框中输入表单文件名sala_edit,单击"保存"按钮。 (2)【审题分析】 本题主要考查的SQL查询语句的改错。此类型的题一般都不难,主要是考核对SQL查询语句格式的熟记情况。本题根据题目要求检查错误行,不难看出第5行属于Visual FoxPro中运算符运算次序有错误;第6行在指定多个表时,表名间缺少逗号隔开,第8、9行都属于固定短语格式错误。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY COMMAND PROGERR.PRG,打开progerr程序文件,文件中的命令代码如下(说明:本程序由于书中排版原因,最长一行的代码与其下一行属于一行): 依次向表单添加一个标签、一个微调器、两个命令按钮和一个表格控件。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-7。 表3-7 表单及控件属性设置 对 象 表单(Form1) 标签(Label1) 命令按钮(Command1) 命令按钮(Command2) 属 性 Name Caption Caption Caption Caption 属性值 myform1 部门分年度数据查询 年度 查询 退出 对 象 微调器(Spinner1) 表格(Grid1) 属 性 SpinnerHighValue SpinnerLowValue Values Imcrement RecordSourceType 属性值 2010 2004 2008 1 4-SQL说明 步骤3:右击表单选择【数据环境】快捷菜单命令,继续在表单数据环境中单击右键选择【添加】快捷菜单命令,在"添加表或视图"对话框中双击x_t表,将表添加到数据环境中。 步骤4:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *****"查询"按钮的Click事件代码***** THISFORM.GRID1.RECORDSOURCE="; SELECT * FROM X_T; WHERE 年度=ALLTRIM(THISFORM.SPINNER1.TEXT); && 年度等于微调器中显示的数值 INTO CURSOR TEMP" *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤5:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)新建一个名为"外汇管理"的数据库。 (2)将自由表"汇率"、"账户"、"代码"加入到新建的"外汇管理"数据库中。 (3)用SQL语句新建一个表"rate_bak",其中包含4个字段"币种代码1"C(2)、"币种代码2"C(2)、"买入价格"N(10,4)、"卖出价格"N(10,4),请将SQL语句存储于sql_rate.txt中。 (4)表单文件t_form中有一个名为form1的表单,请将文本框控件Text1设置为只读。 一、基本操作题 【审题分析】 本题考查了数据库及表的基本操作;SQL定义表语句;表单控件常用属性的修改。 在数据库设计器中可通过快捷菜单中的命令添加自由表;SQL表定义语句则要求大家对新建表的语句非常熟悉,SQL新建表的关键短语是Create Table;修改表单控件属性同样要求大家对控件常用属性非常了解,控制文本框的只读属性是通过ReadOnly属性设置的。 【操作步骤】 (1)在命令窗口执行命令:MODIFY DATABASE 外汇管理,新建数据库并打开数据库设计器。 (2)在数据库设计器中右击鼠标,选择【添加表】快捷菜单命令,在弹出的"打开"对话框中双击"汇率"表,将表添加到数据库中,以同样的方法将"账户"和"代码"表添加到数据库中。 (3)①在命令窗口执行命令:MODIFY FILE SQL_RATE,打开文本文件编辑器。 ②在编辑器中输入SQL定义表结构的代码: Create Table Rate_Bak (; && 定义表名,括号内包括表字段名、类型、宽度等内容的定义 币种代码1 C(2),币种代码2 C(2),买入价格 N(10,4),卖出价格 N(10,4)) ③在命令窗口执行命令:DO SQL_RATE.TXT,执行文本文件。 (4)①在命令窗口执行命令:MODIFY FORM T_Form,打开表单设计器修改t_form表单。 ②选中表单中的文本框(TEXT1)控件,在"属性"面板中修改控件的ReadOnly属性值为:.T.,保存修改。 二、简单应用题(共2小题,每题各20分,共计40分) (1)编写程序hl.prg,完成下列操作:根据"汇率"表中的数据产生ratet_bak表中的数据。要求将所有"汇率"表中的数据插入rate_bak表中且顺序不变,由于"汇率"中的"币种1"和"币种2"存放的是"外币名称",而rate_bak表中的"币种代码1"和"币种代码2"应该存放"外币代码",所以插入时要做相应的改动,"外币名称"与"外币代码"的对应关系存储在"代码"表中。 注意:程序必须执行一次,保证rate_bak表中有正确的结果。 (2)使用查询设计器建立一个查询文件mo.qpr。查询要求:"账户"中有多少"美元"和"英镑"。查询结果包括了"外币名称"、"钞汇标志"、"金额",结果按"外币名称"降序排序,在"外币名称"相同的情况下按"金额"降序排序,并将查询结果存储于表tj.dbf中。 二、简单应用题 (1)【审题分析】 本题考查的是SQL超连接查询。设计SQL代码的关键是怎样建立"代码"表中"外币代码"与"汇率"表中"币种1"和"币种2"的联系。 由于输出结果的"币种1"和"币种2"需要用相应的"外币代码"表示,"代码"表中的"外币代码"只能利用一次,即替换"币种1"或"币种2"中的币种名称,这样没有被替换的币种仍然是中文币种名称,因此需要将"代码"表利用两次,两个表中的"外币代码"分别替换"汇率"表中"币种1"和"币种2"的中文币种名,被两次引用的表名要在原表名后再加"_a"进行区分。 三个表的连接条件分别是"代码.外币名称 = 汇率.币种1"和"汇率.币种2 = 代码_a.外币名称"。查询输出的字段名可以通过AS短语重新指定名称。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY COMMAND HL,打开程序文件编辑器。 步骤2:在编辑器中输入如下程序代码(以下程序是通过查询设计器生成): SELECT 代码.外币代码 AS 币种代码1,; 代码_a.外币代码 AS 币种代码2, 汇率.买入价格, 汇率.卖出价格; FROM 外汇管理!代码 INNER JOIN 外汇管理!汇率; INNER JOIN 外汇管理!代码 代码_a ; ON 汇率.币种2 = 代码_a.外币名称 ; ON 代码.外币名称 = 汇率.币种1; INTO ARRAY ARR1 INSERT INTO RATE_BAK.DBF FROM ARRAY ARR1 步骤3:在命令窗口执行命令:DO HL.PRG,执行程序文件。 【知识拓展】 本题容易产生错误的地方是将"代码"表中的"外币代码"字段同时与"汇率"表的"币种1"和"币种2"进行连接,而不通过将表引用两次的方法进行连接,因为一个表中的字段每次只能引用一次,因此不能同时与另一个表中的两个字段同时建立联系。另外,在查询设计中要对同一个表引用两次的方法是将该表向查询设计器中添加两次即可。 (2)【审题分析】 本题考查的是在查询设计器中新建查询的操作。由于涉及两个表的操作,因此在操作过程中要注意确认查询输出的字段来源于哪个数据表;设置查询条件是在"筛选"选项卡中进行;设置排序是在"排序依据"选项卡中进行,在设置排序方式时,需要每指定一个排序字段时,便要指定一次排序方式,升序为默认的排序方式;查询去向可通过执行【查询】→【查询去向】菜单命令,在"查询去向"对话框中进行操作。 【操作步骤】 步骤1:在命令窗口执行命令:OPEN DATABASE 外汇管理,打开数据库环境。 步骤2:在命令窗口执行命令:CREATE QUERY MO,打开查询设计器,在"添加表或视图"对话框中,分别双击"代码"表和"账户"表,将表添加到查询设计器中。 步骤3:添加两个表后,系统弹出"连接条件"对话框,自动查找两个表中相匹配的字段进行连接,单击"确定 "按钮设置两个表的联系。 步骤4:依次双击"代码"表中的"外币名称"和"账户"表中的"钞汇标志"、"金额"字段,添加到"字段"选项卡的"选定字段"列表中。 步骤5:在"筛选"选项卡的"字段名"下拉列表中选择"代码.外币名称"字段,在"条件"下拉框中选择"=",在"实例"框中输入"美元",在"逻辑"下拉框中选择"OR";接着在第二行接着输入查询条件,在"字段名"下拉列表中选择"代码.外币名称"字段,在"条件"下拉框中选择"=",在"实例"框中输入"英镑"。 步骤6:在"排序依据"选项卡内双击"选定字段"列表框中的"代码.外币名称"字段,将字段添加到"排序条件"列表框中,在"排序选项"中选择"降序"单选项;以同样的方法再设置"账户.金额"字段的降序。 步骤7:执行【查询】→【查询去向】菜单命令,在弹出的"查询去向"对话框中单击"表"图标按钮,接着在"表名"中输入文件名tj,单击"确定"按钮。 步骤8:最后单击"常用"工具栏中的"运行"按钮查看结果,将查询文件保存到考生文件夹下。 三、综合应用题(共1小题,计30分) 设计一个文件名和表单名均为mycount的表单。表单的标题为"外汇持有情况查询"。 表单中有一个选项按钮组控件(myopgroup)、一个表格控件(Grid1)以及两个命令按钮"查询"(Command1)和"退出"(Command2)。其中,选项按钮组控件有两个按钮"现汇"(Option1)、"现钞"(Option2)。运行表单时,在选项组控件中选择"现钞"或"现汇",单击"查询"命令按钮后,根据选项组控件的选择将"账户"表的"现钞"或"现汇"(根据"钞汇标志"字段确定)的情况显示在表格控件中。 单击"退出"按钮,关闭并释放表单。 图2-6 表单示例 注:在表单设计器中将表格控件Grid1的数据源类型设置为"4-SQL说明"。如图2-6所示。 三、综合应用题 【审题分析】 本大题考查了表单及控件的常用属性和方法的设置;程序的分支结构;SQL简单查询。 对本题操作时,首先根据题意新建表单、添加控件并修改相关属性。修改选项组单选按钮的标题属性值时,要注意选项组处于"编辑"状态,能单独选定选项组中的按钮,否则"属性"面板中不会出现Caption属性,另外,由于表格(Grid1)显示的是查询结果的值,因此数据源类型(RecordSourceType)应为"4-SQL 说明",用来显示查询生成的临时表记录。 由于查询是根据选项组中单个选项进行操作的,因此需要判断单击时被选定的是哪个单选项来执行相应的功能。选项组中获得当前被选中单选项的返回值属性是Value,当选项组的Value值为1时表示被选定的是第一个单选项,Value值为2时表示被选定的是第二个单选项。在进行代码设计时,可以通过DO CASE分支结构判断当前被选定的是哪个单选项,并完成该单选项所对应执行的功能。 SQL程序设计部分考查的是SQL简单查询,属于最简单的查询语句。注意:查询条件表示式中字符串定界符要与指定表格数据源使用的字符定界符不同。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM MYCOUNT,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加一个选项按钮组、一个表格及两个命令按钮控件。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-8。 表3-8 表单及控件属性设置 对 象 表单(Form1) 命令按钮 (Command1) 命令按钮(Command2) 表格(Grid1) 属 性 Name Caption Caption Caption RecordSourceType 属性值 mycount 外汇持有情况查询 查询 退出 4 - SQL 说明 对 象 选项组(OptionGroup) Option1 Option2 属 性 Name Caption Caption 属性值 myopgroup 现钞 现汇 步骤3:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *****"查询"按钮的Click事件代码(以下SQL查询语句是通过查询设计器生成)***** DO CASE CASE THISFORM.MYOPGROUP.VALUE=1 && 当选择选项组第一个选项时 THISFORM.GRID1.RECORDSOURCE="SELECT 账户.外币代码, 账户.金额; FROM 外汇管理!账户; WHERE 账户.钞汇标志 = '现汇'; && 此处注意字符串的定界符要与双引号定界符不同 INTO CURSOR TEMP" && 将查询结果输出到临时表temp中 CASE THISFORM.MYOPGROUP.VALUE=2 && 当选择选项组第二个选项时 THISFORM.GRID1.RECORDSOURCE="SELECT 账户.外币代码, 账户.金额; FROM 外汇管理!账户; WHERE 账户.钞汇标志 = '现钞'; && 此处注意字符串的定界符要与双引号定界符不同 INTO CURSOR TEMP" && 将查询结果输出到临时表temp中 ENDCASE *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 【知识拓展】 DO CASE CASE <条件1> <语句序列1> CASE <条件2> <语句序列 2> CASE <条件n> <语句序列n> [OTHERWISE <语句序列>] ENDCASE 功能:语句执行时,依次判断CASE后面的条件是否成立。当发现某个CASE后面的条件成立时,就执行该CASE和下一个CASE之间的命令序列,然后执行ENDCASE后面的命令。如果所有的条件都不成立,则执行OTHERWISE与ENDCASE之间的命令序列,然后再转向ENDCASE后面的语句。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)建立数据库"订单管理",将自由表"职工"和"订单"添加到新建的数据库中。 (2)为"职工"表的"性别"字段设置默认值"男"。 (3)为"职工"表的"性别"字段定义有效性规则,规则表达式为:性别$"男女",出错提示信息为:性别必须是男或女。 (4)使用SQL命令从"职工"表中查询所有未婚(婚否字段值为逻辑假)记录的"职工号"、"姓名"和"上岗日期"信息,结果按"出生日期"降序排序存入"职工bk"表中,同时把SQL命令存入文本文件zksql.txt。 一、基本操作题 【审题分析】 本大题考查了数据库和表的基本操作;字段有效性规则的定义及SQL查询语句的使用。 通过MODIFY DATABASE <数据库名>命令可在新建数据库的同时打开数据库设计器,然后在数据库设计器中完成添加数据表的操作。而建立字段有效性规则则需要在表设计器中完成,注意只有将自由表转为数据库表之后,才能设置字段有效性规则。 本大题中SQL查询语句考查的是SQL排序查询,语句比较简单,如果对SQL语句不太熟悉,也可以直接在查询设计器中进行设计,然后将查询设计器中生成的代码复制到文本文件中,另外要注意的是在执行文本文件时,文本文件的扩展名.TXT一定不能缺省。 记录个数"。 【操作步骤】 在命令窗口执行以下SQL命令(以下程序是通过查询设计器生成): SELECT TOP 3 职工.职工号, 职工.姓名, 职工.出生日期, 职工.职称; FROM 订单管理!职工; ORDER BY 职工.出生日期; INTO TABLE zkbk.dbf 【知识拓展】 SQL查询中,结果只显示前几项记录的特殊短语: 格式:TOP nExpr [PERCENT] 说明:nExpr是数字表达式,当不使用[PERCENT]时,nExpr可以是1~32767之间的整数;当使用[PERCENT]时,nExpr是0.01~99.99间的实数,说明显示结果中前百分之几的记录。TOP要与 ORDER BY一起使用才有效。 三、综合应用题(共1小题,计30分) 建立一个表单,表单文件名和表单控件名均为myform2,表单标题为"数据浏览及维护",表单样例如图2-7所示。基本功能要求如下: 图2-7 表单示例 ①用选项按钮组(Optiongroup1)控件选择"职工"表(Option1)或"订单"表(Option2)。 ②用复选框(Check1)控件确定显示的表是否需要存盘。单击"确定"(Command1)命令按钮,若"保存记录"复选框被选中,则用SQL语句将选项组指定的表的内容存入表temp中,否则用SQL语句显示该表内容。 ③单击"关闭"(Command2)命令按钮,关闭并释放表单。 三、综合应用题 【审题分析】 本大题考查了表单及控件的常用属性和方法的设置;条件结构程序设计;SQL简单查询。 对本题操作时,首先根据题意新建表单、添加控件并修改相关属性。注意复选框值为1时表示选中状态,为0时为未选中状态。 程序设计的基本流程为:首先判断复选框是否被选中;接着判断选项组中被选中的是哪个选项;根据不同的选项编写对应的SQL查询语句。本题可以使用IF...ELSE...ENDIF语句结构设计程序,并可以嵌套使用该条件结构语句。 SQL程序设计部分考查的是SQL简单查询,属于最简单的查询语句。主要注意的是根据当前复选框的状态判断是否包含查询输出语句。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM MYFORM2,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加一个选项按钮组、一个复选框和两个命令按钮控件。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-9。 表3-9 表单及控件属性设置 对 象 表单(Form1) 命令按钮(Command1) 命令按钮(Command2) 属 性 Name Caption Caption Caption 属性值 myform2 数据浏览及维护 确定 关闭 对 象 复选框(Check1) 单选按钮(Option1) 单选按钮(Option2) 属 性 Caption Caption Caption 属性值 保存记录 职工表 订单表 步骤3:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *****"确定"按钮的Click事件代码***** IF THISFORM.CHECK1.VALUE=1 IF THISFORM.OPTIONGROUP1.VALUE=1 SELECT * FROM 职工 INTO TABLE TEMP.DBF SELECT * FROM 订单 INTO TABLE TEMP.DBF ENDIF IF THISFORM.OPTIONGROUP1.VALUE=1 SELECT * FROM 职工 SELECT * FROM 订单 ENDIF ENDIF *****"关闭"按钮的Click事件代码***** THISFORM.RELEASE 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)根据sc数据库,使用查询向导建立一个包含学生"姓名"和"出生日期"的标准查询birthday.qpr。 (2)从sc数据库中删除视图stu_new。 (3)用SQL命令向score表插入一条记录:学号为"08102002",课程号为"1001",成绩为91,并将命令保存在考生文件夹one.txt中。 (4)打开表单close,向其中添加一个标题为"退出"的命令按钮,名称为command1,单击"退出"按钮则关闭表单。 一、基本操作题 【审题分析】 本题考查了查询向导的使用;视图的删除;SQL数据操作语句和表单常用控件的操作。 视图删除可以在数据库设计器中进行,也可以直接通过命令删除,SQL插入语句功能属于SQL的数据操作功能,通过INSERT完成。 查询向导和表单的操作也都属于比较简单的操作,修改表单及控件属性值一般是在"属性"面板中进行,如果当前没有打开"属性"面板,可以右击表单选择【属性】快捷菜单命令打开。 【操作步骤】 (1)①在命令窗口执行命令:OPEN DATABASE SC,打开数据库环境。 ②执行【文件】→【新建】菜单命令,在弹出的"新建"对话框中选中"查询"选项,然后单击"向导"图标按钮,系统弹出"向导取向"对话框,选中"查询向导"项,单击"确定"按钮,启动查询向导。 ③在查询向导的"步骤1 - 字段选取"界面的"数据库和表"下选中"STUDENT"表,双击"可用字段"中的"姓名"和"出生日期"字段,将其添加到"选定字段"中。 ④由于本题不再要求涉及其他操作,可单击"完成"命令按钮直接跳至向导最后一个界面"步骤5 - 完成",继续单击"完成"按钮,在弹出的"另存为"对话框的"文件名"框中输入查询文件名birthday,单击"保存"按钮。 (2)①在命令窗口执行命令:MODIFY DATABASE SC,打开数据库设计器。 ②右击数据库设计器中的stu_new视图文件,选择【删除】快捷菜单命令,在弹出的Visual FoxPro对话框中单击"移去"按钮,将stu_new视图移出数据库。 (3)①在命令窗口执行命令:MODIFY FILE ONE,打开文本文件编辑器。 ②在编辑器中输入SQL查询代码:INSERT INTO SCORE VALUES ("08102002","1001",91)。 ③在命令窗口执行命令:DO ONE.TXT,执行文本文件。 (4)①在命令窗口执行命令:MODIFY FORM CLOSE,打开表单设计器修改表单。 ②从"表单控件"工具栏中向表单添加一个命令按钮控件。选中命令按钮,在"属性"面板中修改按钮的Caption属性值"退出"。 ③双击"退出"命令按钮,编写Click事件代码:THISFORM.RELEASE。 ④单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 【知识拓展】 Visual FoxPro支持两种SQL插入命令的格式,一种是标准格式,另一种是特殊格式。 ①标准格式 INSERT INTO 表名[(字段名1[,字段名2,...])] VALUES(记录值1[,记录值2,...]) ②特殊格式 INSERT INTO 表名 FROM ARRAY 数组名|FROM 同名内存变量 二、简单应用题(共2小题,每题各20分,共计40分) (1)考生文件夹下的score表中存放学生学号、课程编号与成绩,使用菜单设计器制作一个名为cxmenu的菜单,菜单只有一个菜单项"查看"。该菜单中有"查看学生"、"查看课程"和"退出"3个子菜单:"查看学生"子菜单按"学号"排序查看成绩;"查看课程"子菜单按"课程编号"排序查看成绩;"退出"子菜单负责返回系统菜单。 (2)在考生文件夹下有一个数据库eccn,其中有数据库表order,在考生文件夹下设计一个名为dispform的表单,该表单为order表的窗口输入界面,表单上还有一个标题为"关闭"的按钮,单击该按钮,则退出表单。 二、简单应用题 (1)【审题分析】 本题考查的是菜单设计器的使用。进入菜单设计器界面,首先设计的是主菜单内容,即本题中的"查看"菜单项,设计完主菜单项后,再创建每个菜单栏的弹出菜单,如果要通过子菜单返回到上级菜单,则需要选择"菜单设计器"右侧的"菜单级"下拉框选项返回。 本题所涉及的SQL语句数据简单的排序查询语句,编写语句时注意查询的数据表及排序短语(ORDER BY)的正确。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE MENU CXMENU,在弹出的"新建菜单"对话框中单击"菜单"图标按钮,打开菜单设计器。 步骤2:在菜单设计器"菜单名称"列的文本框中输入"查看","结果"下拉框中选择为"子菜单",单击"创建"按钮进入下级菜单设计,在"菜单名称"列的第1、2、3行文本框中依次输入子菜单名"查看学生"、"查看课程"和"退出",将三个子菜单的"结果"都设置为"命令",然后在3条菜单命令的"选项"文本框中依次输入相应的命令。 步骤3:三条命令语句如下: ? "查看学生"菜单命令:SELECT * FROM SCORE ORDER BY 学号。 ? "查看课程"菜单命令:SELECT * FROM SCORE ORDER BY 课程编号。 ? "退出"菜单命令:SET SYSMENU TO DEFAULT。 步骤4:执行【菜单】→【生成】菜单命令,在弹出的Visual FoxPro对话框中单击"是"按钮,接着系统会弹出"生成菜单"对话框,单击"生成"按钮生成一个可执行的菜单文件。 步骤5:在命令窗口执行命令:DO CXMENU.MPR,运行菜单查看结果。 (2)【审题分析】 本题主要考查的是表单数据环境的使用。在表单设计器中,向表单数据环境添加数据表或视图后,可拖动表、视图或字段名到表单中,形成相应的表单控件,同时,系统会自动将控件的相关属性与数据环境中表数据相结合,用来显示表中的数据,一般情况下,拖动表或视图到表单中会形成一个表格控件。 【操作步骤】 步骤1:在命令窗口执行命令:OPEN DATABASE ECCN,打开ECCN数据库环境。 步骤2:在命令窗口执行命令:CREATE FORM DISPFORM,打开表单设计器。右击表单选择【数据环境】快捷菜单命令,在"添加表或视图"对话框中双击order表文件,将表添加到表单数据环境中。 步骤3:将表单数据环境中的order表文件拖放到表单中,会出现一个表格控件自动显示表中的数据。 步骤4:从"表单控件"工具栏中向表单添加一个命令按钮控件。选中命令按钮,在"属性"面板中修改按钮的Caption属性值"关闭"。 步骤5:双击"关闭"命令按钮,编写Click事件代码:THISFORM.RELEASE。 步骤6:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 三、综合应用题(共1小题,计30分) 在考生文件夹下有cj表(含有学号、语文、数学、英语和学分5个字段),其中前4项已有数据。 请编写符合下列要求的程序并运行程序: 设计一个名为myform的表单,表单中有两个命令按钮,标题分别为"计算"和"退出"。程序运行时,单击"计算"按钮应完成下列操作: ①计算每一个学生的总学分并存入对应的"学分"字段。学分的计算方法是:语文60分以上(包括60分)2学分,否则0分;数学60分以上(包括60分)3学分,否则0分;英语60分以上(包括60分)4学分,否则0分。 ②根据上面的计算结果,生成一个新的表temp(要求表结构的字段类型与cj表对应字段的类型一致),并且按"学分"降序排序,如果"学分"相等,则按"学号"升序排序。 单击"退出"按钮,程序终止运行。 三、综合应用题 【审题分析】 本大题考查了表单命令按钮的常用属性和方法的设置;SQL更新语句的使用。在设计程序代码时,一定要注意题目要求,所求的字段值是一个累加结果,而不是某一项值的取值,因此,顺序执行各条更新语句时,都是在当前值的基础上进行操作。 另外要注意的是本题中的"学分"字段是一个数值型数据,因此,在进行计算前,要先定义一个初始的数值"0"给该字段,再执行SQL的数据更新语句。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM MYFORM,打开表单设计器新建表单。从"表单控件"工具栏中向表单添加两个命令按钮控件。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-10。 表3-10 表单及控件属性设置 对 象 命令按钮(Command1) 命令按钮(Command2) 属 性 Caption Caption 属性值 计算 退出 步骤3:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *****"计算"按钮的Click事件代码***** UPDATE CJ SET 学分=0 && 将所有的"学分"字段的值设置为0 UPDATE CJ SET 学分=学分+2 WHERE 语文>=60 && 语文60分以上的学分+2 UPDATE CJ SET 学分=学分+3 WHERE 数学>=60 && 数学60分以上的学分+3(可与前一个值进行累加) UPDATE CJ SET 学分=学分+4 WHERE 英语>=60 && 英语60分以上的学分+4(可与前两个值进行累加) SELECT * FROM CJ ORDER BY 学分 DESC,学号 INTO TABLE TEMP.DBF *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 【知识拓展】 SQL的数据更新命令格式如下: UPDATE 表名 SET 字段名=表达式[,字段名1=表达式1...] WHERE 条件表达式 说明:利用WHERE子句指定条件,以更新满足条件的一些记录的字段值,并且一次可更新多个字段;如果不使用WHERE子句,则更新全部记录。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)建立项目"商场";并把"产品管理"数据库加入到该项目中。 (2)为"产品"表增加字段:销售价N(6,2),该字段允许出现"空"值,默认值为.NULL.。 (3)为"销售价"字段设置有效性规则:销售价>=0;出错提示信息是:销售价必须大于等于0。 (4)使用报表向导为"产品"表创建报表:报表中包括"产品"表中全部字段,报表样式用"带区式",报表中数 ORDER BY 产品.进货日期; TO FILE BUY.TXT && 用TO FILE短语指定查询结果输出到文本文件中 步骤3:在命令窗口执行命令:DO BUY_SQL.TXT,执行文件(注意:执行文件时,文件后缀名.txt不能缺省)。 (2)【审题分析】 数据更新语句属于SQL的数据操作功能,本题的关键是在设置更新条件的时候熟悉字符串截取函数SUBSTR()的功能。SUBSTR()函数的功能是从指定表达式值的指定起始位置取指定长度的子串作为函数值。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY FILE SELL,打开文本文件编辑器。 步骤2:在编辑器中输入如下程序代码(以下程序是通过查询设计器生成): UPDATE 产品 SET 销售价=进货价*1.2586; WHERE SUBSTR(商品号,1,1)="2" && SUBSTR()从"商品号"的第1个字符开始截取其1个长度的字符是否为2 步骤3:在命令窗口执行命令:DO SELL.TXT,执行文件(注意:执行文件时,文件后缀名.txt不能缺省)。 【知识拓展】 SUBSTR()的基本格式为:SUBSTR(<字符表达式>,<起始位置>[,<长度>]) 在SUBSTR()中若缺省第三个自变量<长度>,则函数从指定位置一直取到最后一个字符。 三、综合应用题(共1小题,计30分) 建立表单,表单文件名和表单名均为myform,表单标题为"商品浏览"。 如图2-8所示。功能要求如下: 图2-8 表单示例 ①表单中包含选项按钮组(OptionGroup1)控件选择商品分类(饮料(Option1)、调料(Option2)、小家电(Option3)、橱卫用品(Option4)、食品(Option5)、烟酒类(Option6))。 ②单击"确定"(Command2)命令按钮,显示选中分类的商品,要求使用DO CASE语句判断选择的商品分类。 ③在浏览商品的界面中按Esc键返回界面。 ④单击"退出"(Command1)命令按钮,关闭并释放表单。 注:选项按钮组控件的Value属性必须为数值型。 三、综合应用题 【审题分析】 本大题考查了表单及控件的常用属性和方法的设置;程序的分支结构;SQL简单的连接查询。 修改选项组单选按钮的标题属性值时,要注意选项组处于"编辑"状态,能单独选定选项组中的按钮,否则"属性"面板中不会出现Caption属性;选项组的ButtonCount属性用来控制选项组中单选按钮的个数,是一个非常重要的属性。 通过DO CASE分支结构判断当前被选定的是哪个单选项,并完成该单选项所对应执行的功能;SQL程序设计部分考查的是SQL简单连接查询,属于比较简单的查询语句。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM MYFORM,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加一个选项按钮组和两个命令按钮控件。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-11。 表3-11 表单及控件属性设置 对 象 表单(Form1) 命令按钮(Command1) 命令按钮(Command2) 选项组(OptionGroup1) 属 性 Name Caption Caption Caption ButtonCount 属性值 myform 商品浏览 退出 确定 6 对 象 Option1 Option2 Option3 Option4 Option5 Option6 属 性 Caption Caption Caption Caption Caption Caption 属性值 饮料 调料 小家电 橱卫用品 食品 烟酒类 步骤3:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *****"确定"按钮的Click事件代码(以下SQL查询语句是通过查询设计器生成)***** DO CASE CASE THISFORM.OPTIONGROUP1.VALUE=1 SELECT 产品.*; FROM 产品管理!产品 INNER JOIN 产品管理!产品类型 ; ON 产品.分类编号 = 产品类型.分类编号; WHERE 产品类型.分类名 = "饮料" CASE THISFORM.OPTIONGROUP1.VALUE=2 SELECT 产品.*; FROM 产品管理!产品 INNER JOIN 产品管理!产品类型 ; ON 产品.分类编号 = 产品类型.分类编号; WHERE 产品类型.分类名 = "调料" CASE THISFORM.OPTIONGROUP1.VALUE=3 SELECT 产品.*; FROM 产品管理!产品 INNER JOIN 产品管理!产品类型 ; ON 产品.分类编号 = 产品类型.分类编号; WHERE 产品类型.分类名 = "小家电" CASE THISFORM.OPTIONGROUP1.VALUE=4 SELECT 产品.*; FROM 产品管理!产品 INNER JOIN 产品管理!产品类型 ; ON 产品.分类编号 = 产品类型.分类编号; WHERE 产品类型.分类名 = "橱卫用品" CASE THISFORM.OPTIONGROUP1.VALUE=5 SELECT 产品.*; FROM 产品管理!产品 INNER JOIN 产品管理!产品类型 ; ON 产品.分类编号 = 产品类型.分类编号; WHERE 产品类型.分类名 = "食品" CASE THISFORM.OPTIONGROUP1.VALUE=6 SELECT 产品.*; FROM 产品管理!产品 INNER JOIN 产品管理!产品类型 ; ON 产品.分类编号 = 产品类型.分类编号; WHERE 产品类型.分类名 = "烟酒类" ENDCASE *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)将当前文件夹下的自由表"班级"表和"教师"表添加到"学生管理"数据库中。 (2)为"班级"表创建一个主索引和普通索引(升序),主索引的索引名和索引表达式均为"班级号";普通索引的索引名和索引表达式均为"班主任号"。为"教师"表创建一个主索引,索引名和索引表达式均为"教师编号"。 (3)通过"班级号"字段建立"班级"表和"学生"表之间的永久联系。通过"班级"表的"班主任号"字段与"教师"表的"教师编号"字段建立"班级"表和"教师"表之间的永久联系。 (4)为以上建立的两个联系设置参照完整性约束:更新规则为"限制";删除规则为"级联";插入规则为"忽略"。 一、基本操作题 【审题分析】 本大题考查了数据表的基本操作;表索引的建立及参照完整性的设置。 向数据库中添加表的操作可以在数据库设计器中进行,而为表建立索引则需要在表设计器中进行。 参照完整性是针对两个表进行设置的,因此建立参照完整性前要先建立两个表的关联,且有一个表中必须建立关联字段的主索引(或候选索引),另一个表要建立普通索引,如果表中设置多个索引字段时,鼠标指针一定要拖动到进行联系的字段上,否则进行连接的两个字段会不对应。 【操作步骤】 (1)①在命令窗口执行命令:MODIFY DATABASE 学生管理,打开数据库设计器。 ②在数据库设计器中右击鼠标,选择【添加表】快捷菜单命令,在弹出的"打开"对话框中双击"班级"表,将表添加到数据库中,以同样的方法将"教师"表添加到数据库中。 (2)①右击数据库设计器中的"班级"表,选择【修改】快捷菜单命令,打开"班级"表设计器,在"字段"选项卡中选中"班级号",在"索引"列中选择"升序",以同样的方法再为"班主任号"建立"升序"排序;然后在"索引"选项卡中选中"班级号",并修改其"类型"为"主索引",单击"确定"按钮保存表结构修改。 ②参照上面的操作,为"教师"表建立"教师编号"字段的主索引。 (3)①参照上小题的操作,再为"学生"表建立"班级号"的普通索引;然后在数据库设计器中拖动"班级"表"索引"下方的主索引"班级号"到"学生"表中"索引"下方的普通索引"班级号"上,为两个表建立联系。 ②以同样的方法,拖动"教师"表"索引"下方的主索引"教师编号"到"班级"表中"索引"下方的普通索引"班主任号"上,为两个表建立联系,这样便建立了"学生"、"班级"和"教师"3个表之间的联系。 (4)①选中"学生"表和"班级"表之间的关联线(被选中的连线会变粗),首先执行【数据库】→【清理数据库】菜单命令,清空数据表中带有删除标记的记录,然后执行【数据库】→【编辑参照完整性】菜单命令。 ②在打开的"参照完整性"对话框的表格中,选择"更新"列下两个单元格中的内容都为"限制";"删除"列下两个单元格中的内容都为"级联";"插入"列下两个单元格中的内容都为"忽略"。单击"确定"按钮保存参照完整性的修改。 二、简单应用题(共2小题,每题各20分,共计40分) (1)使用报表向导建立一个简单报表。要求选择"学生"表中所有字段,记录不分组,报表样式为"简报式",列数为1,字段布局为"列",方向为"横向",排序字段为"学号"(升序);报表标题为"学生基本情况表",报表文件名为stureport。 (2)使用查询设计器设计一个名为stuclass.qpr文件查询,查询每个班级的"班级号"、"班级名"、"班长名"和"班主任名",查询结果按"班级号"升序排序,并输出到stuclass.dbf表中。运行该查询,并将设计的查询保存。 ①表之间的关联,一个是"学生"表的"学号"与"班级"表的"班长号",另一个是"班级"表的"班主任号"与"教师"表的"教师号"。 ②查询结果的各列的名称分别为"班级号"、"班级名"、"班长名"和"班主任名"。"班长名"列的数据来自于"学生"表的"姓名","班主任名"列的数据来自于"教师"表的"教师姓名"。 二、简单应用题 (1)【审题分析】 本题考查的是报表向导的使用,操作前可以将数据库环境打开,这样在报表向导的"步骤1 - 字段选取"界面中可直接看到作为报表数据源的表,之后按照向导提示完成题目所要求的设置即可。 【操作步骤】 步骤1:在命令窗口执行命令:OPEN DATABASE 学生管理,打开"学生管理"数据库环境。 步骤2:执行【文件】→【新建】菜单命令,或单击"常用"工具栏的"新建"按钮,在弹出的"新建"对话框中选中"报表"选项,然后单击"向导"图标按钮,系统弹出"向导取向"对话框,选中"报表向导"项,单击"确定"按钮,启动报表向导。 步骤3:在报表向导的"步骤1 - 字段选取"界面的"数据库和表"下选中"学生"表,将"可用字段"中的字段添加到"选定字段"中,单击"下一步"按钮。 步骤4:跳过"步骤2 - 分组记录"界面继续单击"下一步"按钮。 步骤5:在报表向导的"步骤3 - 选择报表样式"界面中选中"样式"列表中的"简报式",单击"下一步"按钮。 步骤6:在报表向导的"步骤4 - 定义报表布局"界面中设置"列数"为"1","字段布局"为"列",选择"方向"为"横向",单击"下一步"按钮。 步骤7:在报表向导的"步骤5 - 排序记录"界面中双击"可用的字段或索引标识"中的"学号"字段到"选定字段"列表中,单击"下一步"按钮。 步骤8:在报表向导的"步骤6 - 完成"界面的"报表标题"文本框中输入"学生基本情况表",单击"完成"按钮,在"另存为"对话框的"保存报表为:"框中输入报表文件名stureport,单击"保存"按钮。 (2)【审题分析】 本题主要考查的查询设计器的使用,首先要判断查询数据源包括哪些数据表,将数据表添加到查询设计器后,再根据题目要求从每个表中选取字段,设置查询条件等完成查询。本题操作的关键有3点: 首先是3个表的添加顺序,要按照"教师"表、"班级"表和"学生"表的顺序进行添加,否则会导致两个表之间无法建立联系,或是导致查询出错。 其次,由于数据库中已存在表之间的联系,在添加数据库表到查询设计器中的时候,会将表之间的联系也一起进行到查询设计器中,而本题中根据题目的要求需要改变这种联系,因此,注意修改表间默认的联系。 最后就是字段的重命名,根据题目要求最终输出的字段包括"班长名"和"班主任名",因此需要利用AS短语对原本输出的"学生.姓名"和"教师.教师姓名"重新命名。 【操作步骤】 步骤1:在命令窗口执行命令:OPEN DATABASE 学生管理,打开数据库环境。 步骤2:在命令窗口执行命令:CREATE QUERY STUCLASS,打开查询设计器,在"添加表或视图"对话框中,分别双击"教师"表、"班级"表和"学生"表(注意一定要按顺序添加表),将表添加到查询设计器中,此时,添加的表会按照数据库中已存在的表间联系自动为3个表在查询设计器中建立联系。 步骤3:根据题目要求,此时要修改"学生"表和"班级"表之间的默认联系。双击"学生"表和"班级"表之间的连线,系统弹出"连接条件"对话框,在显示"班级.班级号"的下拉框中选择"班级.班长号",在显示"学生.班级号"的下拉框中选择"学生.学号",单击"确定"按钮保存修改。 步骤4:依次双击"班级"表中的"班级号"和"班级名"字段,添加到"字段"选项卡的"选定字段"列表中;然后在"字段"选项卡的"函数和表达式"下的文本框中输入表达式:学生.姓名 AS 班长名,再单击"添加"按钮,将其添加到"选定字段"列表中;以同样的方法再向"选定字段"列表中添加一个表达式:教师.教师姓名 AS 班主任名。 步骤5:执行【查询】→【查询去向】菜单命令,在弹出的"查询去向"对话框中单击"表"图标按钮,接着在"表名"中输入文件名stuclass,单击"确定"按钮。 步骤6:最后单击"常用"工具栏中的"运行"按钮查看结果,将查询文件保存到考生文件夹下。 、综合应用题(共1小题,计30分) 在考生文件夹下,打开"学生管理"数据库,完成如下综合应用: 设计一个表单文件名为myform的表单,表单控件名为stuform,表单的标题名为"学生基本情况浏览"。在表单的左上方有一个标签(Label1),标签上的文字为"班级号";在标签的右边紧接着放置一个组合框控件(Combo1),将组合框控件的Style属性设置为"下拉列表框",RowSourceType属性设置为"字段"(用来选择"班级"表中的"班级号");在组合框的右边紧接着放置一个"确认"命令按钮(Command1);在标签的下方放置一个表格控件(Grid1),将RecordSourceType属性设置为"4-SQL说明";在表单的右下方放置一个"退出"命令按钮(Command2)。表单界面如图2-9所示。其他功能要求如下: 图2-9 表单示例 ①为表单建立数据环境,向数据环境添加"学生"表和"班级"表。 ②程序运行时,在组合框中选择某个班级的"班级号",单击"确认"按钮后在表格中显示该班级的学生信息。 ③单击"退出"按钮时,关闭表单。 三、综合应用题 【审题分析】 本大题考查了表单及控件的常用属性和方法的设置;SQL连接查询。 对本题操作时,首先根据题意新建表单、添加控件并修改相关属性。注意组合框(Combo1)控件中用于设置数据源类型和数据源的属性分别为RowSourceType和RowSource,在指定数据源为表或表中字段时,应先把表添加到表单数据环境中;另外,通过组合框的DISPLAYVALUE属性可以指定当前显示在组合框中的数据。 SQL查询语句采用的是SQL连接查询,语句比较简单,如果大家对于SQL语句不太熟悉,也可以在查询设计 ②在表单向导的"步骤1 - 字段选取"界面的"数据库和表"下选中"学生"表,依次双击"可用字段"中的"学号"、"姓名"、"性别"和"班级"字段全部添加到"选定字段"中,单击"下一步"按钮。 ③跳过"步骤2 - 选择表单样式"向导界面,继续单击"下一步"按钮。 ④在表单向导的"步骤3 - 排序次序"界面中双击"可用的字段和索引标识"的"学号"字段添加到"选定字段"列表中,再单击"降序"单选项,单击"下一步"按钮。 ⑤在表单向导的"步骤4 - 完成"界面中单击"完成"按钮,在"另存为"对话框的"保存表单为:"框中输入表单文件名stuform,单击"保存"按钮。 (3)①在命令窗口执行命令:MODIFY COMMAND PROG1,打开程序文件编辑器。 ②在编辑器中输入如下程序代码: DO FORM STUFORM ③保存文件,在命令窗口执行命令:DO PROG1.PRG,执行程序文件。 (4)首先关闭"学生"表,在命令窗口执行命令:ALTER TABLE 学生 ADD 年龄 N(2),新增字段。 二、简单应用题(共2小题,每题各20分,共计40分) (1)在考生文件下有"学生"表,表中字段如下:学号C(8)、姓名C(8)、性别C(2)、政治面目C(4)、班级C(5)等字段。考生目录下的prog2.prg程序文件的功能是显示输出所有"政治面目"为"团员"的男生姓名和班级,每行输出一个学生的信息;程序中有三处错误,请加以改正。 说明:程序中******error*****的下一行即为错误所在行。请用改正后的程序行覆盖错误所在行,不要插入或删除任何程序行。 (2)建立命令文件prog3.prg,该命令文件包含如下两条语句: ①第一条语句使用SQL UPDATE命令计算和更新"学生"表的"年龄"字段值(计算年龄的表达式是year(date())-year(出生日期),该字段在基本操作题中已建立)。 ②第二条语句使用SQL SELECT命令查询各种"政治面目"的学生人数和平均年龄,并将结果存储于表temp2中(字段名是政治面目、人数和平均年龄)。 说明:以上命令文件必须执行,并产生所要求的结果。 二、简单应用题 (1)【审题分析】 本题主要考查的是利用Visual FoxPro命令查询定位数据表中的记录。此类型的题主要通过一个DO WHILE循环语句对表中的记录逐条比较,对满足条件的记录进行相关的操作。 本题中第一个错误是循环条件的错误,进入循环体的条件是逻辑值为真,第二个错误中属于命令短语错误,Visual FoxPro中没有BREAK命令,第三个错误是SKIP命令错误,该命令虽然可以将当前记录指针指向下一条记录,但不再执行LOCATE FOR处的条件判断,如果要包含判断功能,则要使用CONTINUE短语。本题程段中各语句的功能可参考"操作步骤"中对各条语句的注释说明,这里不再细说。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY COMMAND PROG2,打开prog2程序文件,文件中的命令代码如下: SET TALK OFF USE 学生 LOCATE FOR 政治面目="团员" ************error************ DO WHILE .NOT.FOUND() IF 性别="女" CONTINUE ************error*********** BREAK ENDIF ? 姓名,班级 ************error************ ENDDO SET TALK ON ? 修改程序中的错误行,修改后的程序如下: SET TALK OFF USE 学生 && 打开"学生"表 LOCATE FOR 政治面目="团员" && 查找当前记录的"政治面目"为"团员" DO WHILE FOUND() && 循环条件为找到政治面目为"团员"的记录时进入循环 IF 性别="女" && 如果性别为"女",继续执行下面的语句,如果不是,则执行ENDIF语句之后的语句 CONTINUE && 移到下一条记录,并返回到循环体起始位置重新判断该记录政治面目是否为"团员" LOOP && 返回到循环体起始位置,即DO WHILE处重新判断,不再执行后面的语句 ENDIF && 当IF处条件不成立时,直接执行该语句后面的命令 ? 姓名,班级 && 当前面的IF条件语句不成立时,执行该语句,显示当前记录的"姓名"和"班级"内容 CONTINUE && 移到下一条记录,并返回到循环体起始位置重新判断该记录政治面目是否为"团员" ENDDO && 当DO WHILE处条件不成立时,直接退出循环体,执行该语句后面的命令 USE && 关闭当前打开的表 SET TALK ON 步骤2:保存文件修改,在命令窗口执行命令:DO PROG2.PRG,执行程序文件。 【知识拓展】 数据定位查询LOCATE FOR命令。 (2)【审题分析】 本题考查了SQL数据更新功能和分组计算查询功能。本题数据更新语句可直接套用SQL更新语句的命令格式;对数据进行分组计算查询时,用来计数的函数为COUNT(),用来求平均值的函数为AVG(),通过AS短语可以指定新的字段名,另外,对记录进行分组时,分组字段要设置正确,根据题意,本题的分组字段应为"学生"表中的"政治面目"字段。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY COMMAND PROG3,打开程序文件编辑器。 步骤2:在程序文件编辑器中输入如下代码(相关SQL查询语句是通过查询设计器生成): UPDATE 学生 SET 年龄=YEAR(DATE())-YEAR(出生日期) SELECT 学生.政治面目, COUNT(学生.学号) AS 人数, AVG(学生.年龄) AS 平均年龄; FROM 学生; GROUP BY 学生.政治面目; INTO TABLE temp2.dbf 步骤3:保存文件修改,在命令窗口执行命令:DO PROG3.PRG,执行程序文件。 三、综合应用题(共1小题,计30分) 考生文件夹下有一个" 合同 劳动合同范本免费下载装修合同范本免费下载租赁合同免费下载房屋买卖合同下载劳务合同范本下载 管理"表文件,表中包含"合同号"、"订货单位"、"收货单位"、"供货单位"、"单价"和"订货数量"。编写程序progzh.prg分别统计"订货单位数"、"供货单位总数"、"订货总数",并将结果填写到jg.dbf(在考生目录下已经存在)表文件中。 说明:以上命令文件必须执行,并产生所要求的结果。 三、综合应用题 【审题分析】 本大题主要考查的是SQL简单计算查询和数据更新功能。设计SQL简单计算查询时,关键是要排除字段中重 复的记录,利用DISTINCT短语可以消除重复记录,查询的结果可以保存到数组中,然后再利用SQL更新语句更新表中的记录,根据题目,在JG表中有3条记录需要更新,因此,可以通过3次计算和更新,分别更新表中的每条记录。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY COMMAND PROGZH,打开程序文件编辑器。 步骤2:在程序文件编辑器中输入如下代码: SELECT COUNT(DISTINCT 订货单位) FROM 合同管理 INTO ARRAY ARR UPDATE JG SET 统计数=ARR WHERE 分类名="订货单位总数" SELECT COUNT(DISTINCT 供货单位) FROM 合同管理 INTO ARRAY ARR UPDATE JG SET 统计数=ARR WHERE 分类名="供货单位总数" SELECT SUM(订货数量) FROM 合同管理 INTO ARRAY ARR UPDATE JG SET 统计数=ARR WHERE 分类名="订货总数" 步骤3:保存文件修改,在命令窗口执行命令:DO PROGZH.PRG,执行程序文件。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)新建一个名为"学生管理"的数据库。 (2)将"学生"、"选课"和"课程"三个自由表添加到新建的数据库"学生管理"中。 (3)通过"学号"字段为"学生"表和"选课"表建立永久联系。 (4)为上面建立的联系设置参照完整性约束:更新和删除规则为"限制",插入规则为"忽略"。 一、基本操作题 【审题分析】 本题考查了数据库和表的基本操作;建立表间联系及参照完整性的设置。 为数据库添加表可以在数据库设计器中进行;参照完整性是针对两个表进行设置的,因此建立参照完整性前要先建立两个表的关联,且有一个表中必须建立关联字段的主索引(或候选索引),另一个表要建立普通索引,建立两个表联系后要先清理数据库,然后再设置参照完整性。 【操作步骤】 (1)在命令窗口执行命令:MODIFY DATABASE 学生管理,新建数据库并打开数据库设计器。 (2)在数据库设计器中右击鼠标,选择【添加表】快捷菜单命令,在弹出的"打开"对话框中双击"学生"表,将表添加到数据库中,以同样的方法将"选课"和"课程"表添加到数据库中。 (3)①右击数据库设计器中的"学生"表,选择【修改】快捷菜单命令,打开"学生"表设计器,在"字段"选项卡中选中"学号",在"索引"列中选择"升序",然后在"索引"选项卡中修改"索引类型"为主索引,建立"学号"字段的主索引,单击"确定"按钮保存表结构修改。 ②参照"学生"表的操作建立"选课"表"学号"字段的普通索引。 (4)在数据库设计器中拖动"学生"表"索引"下方的主索引"学号"到"选课"表中"索引"下方的普通索引"学号"上,为两个表建立联系。 ②选中两个表之间的关联线(被选中的连线会变粗),首先执行【数据库】→【清理数据库】菜单命令,清空数据表中带有删除标记的记录,然后执行【数据库】→【编辑参照完整性】菜单命令。 ③在打开的"参照完整性"对话框的表格中,选择"更新"下的单元格内容为"限制";"删除"下的单元格内容为"限制";"插入"下的单元格内容为"忽略"。单击"确定"按钮保存参照完整性的修改。 二、简单应用题(共2小题,每题各20分,共计40分) (1)用SQL语句完成下列操作:将选课在4门课程以上(包括4门)的学生的"学号"、"姓名"、"平均分"和"选课门数"按"平均分"降序排序,并将结果保存于表stucj中,将SQL语句保存在xkcj.txt文本中。 (2)建立一个名为menu_lin的菜单,菜单中有两个菜单项"查询"和"退出"。"查询"菜单项下还有一个子菜单,子菜单有"按学号"和"按姓名"两个选项。单击"退出"菜单使程序返回到系统菜单,其他菜单项的功能不做要求。 二、简单应用题 (1)【审题分析】 本题主要考查了SQL分组与计算查询。本题的关键首先是要确定进行计算的字段有哪些、进行何种计算,然后判断根据哪个字段进行分组。根据题目要求,在输出字段中"学号"和"姓名"是表中原有的字段,而"平均分"和"选课门数"字段则需要通过计算得出,通过AS短语可指定输出新的字段名。 "平均分"可以通过求每个学生"成绩"的平均值得到,使用AVG函数求平均值;而"选课门数"可以通过求每个学生选修的课程的总数得到,在"选课"表中可以通过"选课号"的不同判断每个学生共选修了几门课程,使用COUNT函数可以进行计数统计,此处注意不要与求和函数SUM混淆。 从上面两个函数不难看出,这两个函数都是在针对每个学生进行操作的,因此可以通过"选课"表中的"学号"字段分组,将"学号"相同的记录分到一组再进行计算。 另外,题目还要求了是对选课在4门以上的学生成绩进行计算,因此,该条件必须通过HAVING子句对分组统计的结果做进一步限制,对满足该条件的学生才进行计算输出结果。此处不要将HAVING条件短语与WHERE条件短语混淆,HAVING短语是在进分组计算的基础上,对所得的结果做进一步的限制,而WEHRE条件短语基本与分组计算结果没有关系。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY FILE XKCJ,打开文本文件编辑器。 步骤2:在编辑器中输入如下程序代码(以下程序是通过查询设计器生成): SELECT 学生.学号, 学生.姓名, AVG(选课.成绩) AS 平均分,; && AVG()函数用来求平均分 COUNT(选课.课程号) AS 选课门数; && COUNT()函数用来统计每个学生选修课程数 FROM 学生管理!学生 INNER JOIN 学生管理!选课 ; ON 学生.学号 = 选课.学号; GROUP BY 选课.学号; && 按选课表的学号字段对记录进行分组 HAVING COUNT(选课.课程号) >= 4; && 进一步限定分组后的条件,只求选课数在4门以上的学生成绩 ORDER BY 3 DESC; && 按输出结果的第3列字段(即"平均分"字段)值降序排序 INTO TABLE STUCJ.DBF 步骤3:在命令窗口执行命令:DO XKCJ.TXT,执行文件(注意:执行文件时,文件后缀名.txt不能缺省)。 (2)【审题分析】 本题考查的是菜单设计器的使用。设计过程中注意主菜单项与子菜单项的建立,本题数据比较简单的操作。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE MENU MENU_LIN,在弹出的"新建菜单"对话框中单击"菜单"图标按钮,打开菜单设计器。 步骤2:在菜单设计器"菜单名称"列的文本框中依次输入"查看"和"退出"两个主菜单名,"结果"下拉框中选择为"子菜单",单击"查看"行的"创建"按钮进入下级菜单设计,在"菜单名称"列的第1、2行文本框中依次输入子菜单名"按学号"和"按姓名"。 步骤3:通过"菜单级"下拉框返回主菜单项设计界面,选择"退出"菜单命令的"结果"项为"命令",并输入命令语句:SET SYSMENU TO DEFAULT。 步骤4:执行【菜单】→【生成】菜单命令,在弹出的Visual FoxPro对话框中单击"是"按钮,接着系统会弹出"生成菜单"对话框,单击"生成"按钮生成一个可执行的菜单文件。 步骤5:在命令窗口执行命令:DO MENU_LIN.MPR,运行菜单查看结果。 三、综合应用题(共1小题,计30分) 对考生文件夹中的"学生"表、"课程"表和"选课"表新建一个表单。 在表单上有一页框,页框内有3个选项卡,标题分别为"学生"、"课程"和"选课"。表单运行时对应的三个页面上分别显示"学生"表、"课程"表和"选课"表。 表单上还有一选项按钮组,共有三个待选项,标题分别为"学生"、"课程"、"选课"。当单击该选项按钮组选择某一选项时,页框将在对应页面上显示对应表,如单击"课程"选项时,页框将在课程页面上显示课程表。表单上有一命令按钮,标题为"退出",单击此按钮,表单将退出。 如图2-10所示。以文件名mainform保存表单。 【审题分析】 本题考查了表单及控件的基本操作。操作中关键是掌握控件常用属性的含义,例如"标题"属性为Caption。向表单添加控件是通过"表单控件"工具栏进行添加;修改表单或控件的属性值,一般都可以在"属性"面板中进行设置。 【操作步骤】 (1)①在命令窗口执行命令:MODIFY FORM TESTFORM,打开表单设计器修改表单。 ②在"属性"面板中修改表单(FORM1)的Caption属性值为:等级考试软件。 (2)①在"表单控件"工具栏中单击"标签"控件,然后再在表单上单击鼠标,为表单添加一个标签控件。 ②在"属性"面板中修改标签(Labe1l)的Caption属性值为:欢迎使用等级考试软件;修改ForeColor属性值为:0,0,255;适当调整标签大小显示文字。 (3)参照第2小题操作,为表单添加一个计时器控件(Timer1),然后在"属性"面板中修改计时器(Timer1)的Name属性值为:labtimer。 (4)接上一小题操作,继续选中计时器控件(Timer1),在"属性"面板中修改其Interval属性值为:500。 二、简单应用题(共2小题,每题各20分,共计40分) (1)使用SQL命令在"职工"表中查询年龄最大的前5名职工的"姓名"和"出生日期",查询结果按"年龄"降序排序存入表oldage.dbf中;同时把所用SQL命令存入文件oldage.txt(注意:表中无"年龄"字段,只有"出生日期"字段)。 (2)打开程序文件modi1.prg,该程序的功能是根据输入的"半径"和"高"计算圆柱体表面积,其中函数定义中有错误,请在******error*******的下一行进行修改使之能正确运行(不得增加语句,不得删除语句)。 二、简单应用题 (1)【审题分析】 本题主要考查SQL中特殊选项TOP短语的使用,该短语必须与排序短语ORDER BY一起使用才有效;另外,对职工年龄进行排序时,出生日期的年份越靠前,年份值就越小,但所表示的年龄却越大,因此,按"年龄"降序排序,其实就是对"出生日期"进行升序排序。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY FILE OLDAGE,打开文本编辑器编写SQL命令。 步骤2:在编辑器中输入如下程序代码(以下程序是通过查询设计器生成): SELECT TOP 5 职工.姓名, 职工.出生日期; FROM 职工; ORDER BY 职工.出生日期; INTO TABLE oldage.dbf 步骤3:在命令窗口执行命令:DO OLDAGE.TXT,执行文件。 (2)【审题分析】 本题主要考查的是过程的定义及调用。通过PROCEDURE |FUNCTION命令定义一个命令过程的开始;通过PARAMETERS命令声明的形参变量被看作是模块程序中的私有变量;利用<文件名>(实参表)|<过程名>(实参表)命令调用模块程序时,系统会自动把实参传递给对应的形参。 本题中第一处错误可以很明显看出少定义了一个形参,在参数调用过程中,形参的数据只能大于或等于实参的数目;第二个错误是缺少转回到调用程序的命令RETURN,通过该命令可返回表达式的值。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY COMMAND MODI1,打开modi1程序文件,文件中的命令代码如下: SET TALK OFF CLEAR LOCAL c INPUT "请输入圆柱体的半径:" TO r INPUT "请输入圆柱体的高:" TO h c=carea(r,h) ?"圆柱体的表面积为:",c RETURN FUNCTION carea **********error*********** PARAMETERS a LOCAL p p=3.14159 car=2*(p*a^2)+2*p*a*b **********error*********** ENDFUNC ? 修改程序中的错误行,修改后的程序如下: SET TALK OFF CLEAR LOCAL c && 定义局部变量c INPUT "请输入圆柱体的半径:" TO r && 从键盘输入一个半径值 INPUT "请输入圆柱体的高:" TO h && 从键盘输入一个半径值 c=carea(r,h) && 调用模块程序,转到FUNCTION命令行执行程序,按值方式传递参数 ?"圆柱体的表面积为:",c RETURN FUNCTION carea && 过程的开始,并命名过程名为carea PARAMETERS a,b && 声明的形参变量被看作是模块程序中的私有变量 LOCAL p && 定义局部变量c p=3.14159 && 定义私有变量 car=2*(p*a^2)+2*p*a*b && 计算圆柱体表面积的表达式 RETURN car && 将计算的表达式值返回上级模块 步骤2:保存文件修改,在命令窗口执行命令:DO MODI1.PRG,执行程序文件。 【知识拓展】 1.定义过程的命令格式 PROCEDURE |FUNCTION<过程名> <命令序列> [RETURN[<表达式>]] [ENDPROC|ENDFUNC] 说明:PROCEDURE |FUNCTION表示一个命令过程的开始,并命名过程名;[ENDPROC|ENDFUNC]表示一个过程的结束,可省略该语句。 当过程执行到RETURN命令时,控制将转回到调用程序(或命令窗口),并返回表达式的值。若缺省,则在过程结束时自动执行一条隐含的RETURN命令,若RETURN不带<表达式>,则返回逻辑真。 2.带参数程序调用的命令格式 格式1:DO <文件名>|<过程名> WITH <实参表> 格式2:<文件名>(实参表)|<过程名>(实参表) 说明:实参可以是常量、变量,也可以是表达式。调用模块程序时,系统会自动把实参传递给对应的形参。 采用格式1调用模块程序时,如果实参是常量或一般形式的表达式,则为按值传递。如果实参是变量,则为按引用传递。 采用格式2调用模块程序时,默认情况下都以按值方式传递参数。如果实参是变量,可以通过SET UDFPARMS TO VALUE|REFERENCE命令重新设置参数传递的方式。TO VALUE表示按值传递,TO REFERENCE表示按引用传递。 三、综合应用题(共1小题,计30分) 建立如图2-11所示表单,表单完成一个计算器的功能。表单文件名和表单控件名均为jsform,表单标题为" 便捷计算器"。 表单运行时,分别在"操作数1"(Label1)和"操作数2"(Label2)下的文本框(分别为Text1和Text2)中输入五位数字(不接受其他字符输入),通过选项组(Optiongroup1,4个按钮可任意排列)选择计算方法(Option1为"+",Option2为"-",Option3为"*",Option4为"/"),然后单击命令按钮"计算"(Command1),便会在"计算结果"(Label3)下的文本框Text3中显示计算结果,要求使用DO CASE语句判断选择的计算分类,在CASE表达式中直接引用选项组的相关属性。 注意:所涉及的数字和字母均为半角字符。 表单另有一命令按钮(Command2),按钮标题为"退出",表单运行时单击此按钮关闭并释放表单。 三、综合应用题 【审题分析】 本大题考查了表单及控件的常用属性和方法的设置。本题看似比较麻烦,其实所涉及的内容主要是控件属性值的使用。可将主要设计过程按以下操作步骤进行: 根据题目要求对各控件及属性值进行设置,通过指定文本框的InputMask属性值为:99999,表示文本框只能接收5位数值型数据,指定Value属性值为:0,表示该文本框的数据类型为数值型。 通过DO CASE分支结构判断当前被选定的是哪个单选项,即进行何种运算。然后通过相应算术表达式进行计算。文本框中的数据可以通过VALUE属性值获取。例如,当进行"+"运算时,第3个文本框中计算结果的取值应为THISFORM.TEXT1.VALUE+THISFORM.TEXT2.VALUE的值。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM JSFORM,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加三个标签、三个文本框、两个命令按钮和一个选项组控件。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-14,注意,在设置选项组按钮为4个以后,要调整选项组的大小,才能显示新增的两个单选按钮,系统默认的只显示两个。 表3-14 表单及控件属性设置 对 象 表单(Form1) 标签(Label1) 标签(Label2) 标签(Label3) 属 性 Name Caption Caption Caption Caption 属性值 jsform 便捷计算器 操作数1 操作数2 计算结果 对 象 选项组(Optiongroup1) Option1 Option2 Option3 Option4 属 性 ButtonCount Caption Caption Caption Caption 属性值 4 + - * / 对 象 文本框(Text1) 文本框(Text2) 文本框(Text3) 命令按钮(Command1) 命令按钮(Command2) 属 性 InputMask Value InputMask Value Value Caption Caption 属性值 99999 0 99999 0 0 计算 退出 步骤3:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *****"计算"按钮的Click事件代码***** N=THISFORM.OPTIONGROUP1.VALUE DO CASE CASE N=1 THISFORM.TEXT3.VALUE=THISFORM.TEXT1.VALUE+THISFORM.TEXT2.VALUE CASE N=2 THISFORM.TEXT3.VALUE=THISFORM.TEXT1.VALUE-THISFORM.TEXT2.VALUE CASE N=3 THISFORM.TEXT3.VALUE=THISFORM.TEXT1.VALUE*THISFORM.TEXT2.VALUE CASE N=4 THISFORM.TEXT3.VALUE=THISFORM.TEXT1.VALUE/THISFORM.TEXT2.VALUE ENDCASE *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)打开"学生管理"数据库,将"课程"表从数据库中移出,并永久删除。 (2)为"成绩"表的"成绩"字段定义默认值为0。 (3)为"成绩"的考试成绩字段定义约束规则:成绩>=0 and成绩<=100,违背规则的提示信息是"考试成绩输入有误"。 (4)为"成绩"表添加字段"班级",字段数据类型为C(8)。 一、基本操作题 【审题分析】 本题考查了数据库及表的基本操作。删除数据库表可以在数据库设计器中进行;建立表中字段有效性规则和增加字段的操作,则需要在表设计器中进行。注意在定义有效性规则数据的类型要正确。 【操作步骤】 (1)①在命令窗口执行命令:MODIFY DATABASE 学生管理,打开数据库设计器。 ②右击数据库设计器中的"课程"表,选择【删除】快捷菜单命令,在弹出的Visual FoxPro对话框中单击"删除"按钮,将"课程"表永久性删除。 (2)右击数据库设计器中的"成绩"表,选择【修改】快捷菜单命令,打开"成绩"表设计器,选中"字段"选项卡中的"成绩"字段,然后在"字段有效性"的"默认值"文本框中输入:0。 (3)紧接上小题操作选中"成绩"字段,在"字段有效性"的"规则"文本框中输入:成绩=>0.AND.成绩<=100,在"信息"框中输入:"考试成绩输入有误"。 (4)继续在"成绩"表设计器中,在表设计"字段"选项卡的"字段名"列的最后一个空白文本框中输入字段名"班级",在"类型"下拉框中选择"字符型",在"宽度"文本框中输入"8",保存表结构修改。 二、简单应用题(共2小题,每题各20分,共计40分) (1)打开考生文件夹中的数据库"学生管理",使用表单向导制作一个表单,要求选择"学生"表中所有字段,表单样式为"凹陷式";按钮类型为定制的"滚动网格"型;表单标题为"学生基本信息浏览";表单文件名为stuform。 (2)在考生文件夹中有一个数据库"学生管理",其中有数据库表"学生"存放学生信息,使用菜单设计器制作一个名为stumenu的菜单,菜单包括"数据维护"和"退出"两个菜单栏。菜单结构为:数据维护(数据表格方式录入)、退出。其中: ①数据表格式输入菜单项对应的过程包括下列4条命令:打开数据库"学生管理"的命令、打开"学生"表的命令、BROWSE命令、关闭数据库的命令。 ②退出菜单项对应命令Set Sysmenu To Default,使之可以返回到系统菜单。 二、简单应用题 (1)【审题分析】 本题考查的是表单向导的使用,属于比较简单的操作。在启动向导前,可以先打开数据库环境,这样在启动向导添加数据表时,可在向导中直接选中。本题只需根据向导提示在各界面中完成相应的操作即可。 【操作步骤】 步骤1:执行【文件】→【新建】菜单命令,在弹出的"新建"对话框中选中"表单"选项,然后单击"向导"图标按钮,系统弹出"向导取向"对话框,选中"表单向导"项,单击"确定"按钮,启动表单向导。 步骤2:在表单向导的"步骤1 - 字段选取"界面的"数据库和表"下选中"学生"表,将"可用字段"中的字段全部添加到"选定字段"中,单击"下一步"按钮。 步骤3:在表单向导的"步骤2 - 选择表单样式"界面中选中"样式"列表中的"凹陷式",再在"按钮类型"选项中选中"定制",单击"下一步"按钮。 步骤4:跳过表单向导的"步骤3 - 排序次序"界面,单击"下一步"按钮。 步骤5:在表单向导的"步骤4 - 完成"界面中的"请键入表单标题"下方文本框中输入"学生基本信息浏览", 条件时,当程序判断完"优秀干部"后便退出了分支结构,不会再去继续判断该学生是否为"三好学生",所得的积分也就只有"20"分,与实际要得到的"30"分不符。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM SCO_FORM,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加两个命令按钮。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-15。 表3-15 表单及控件属性设置 对 象 命令按钮(Command1) 命令按钮(Command2) 属 性 Name Caption Name Caption 属性值 cmdyes 计算 cmdno 退出 步骤3:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *****"计算"按钮的Click事件代码***** USE SCO GO TOP DO WHILE !EOF() && 如果表记录没有到表的末尾,对当前记录开始进行判断,如果达到文件尾则跳出循环 STORE 0 TO JF && 给JF变量赋初值0 DO CASE && 开始执行分支语句,判断给学生加分的情况 CASE 三好学生 JF=30 CASE 优秀干部 JF=20 CASE 少数民族 JF=10 OTHERWISE && 如果以上条件都不符合,则JF为0 ENDCASE REPLACE 总分 WITH 考试成绩+JF && 修改"总分"字段的值为"考试成绩+JF"值 SKIP && 指移向表中下一条记录,再返回到DO WHILE处进行判断执行循环语句 ENDDO && 循环体结束语句 SELECT 学号,总分 FROM SCO; ORDER BY 总分 DESC,学号; INTO TABLE ZF *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 【知识拓展】 DO WHILE语句的特点。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)在数据库"雇员工资"中建立表"部门",表结构如下: 字段名 类型 宽度 部门号 字符型 2 部门名 字符型 10 随后在表中输入5条记录,记录内容如下: 部门号 部门名 11 销售部 22 采购部 33 工程部 44 生产部 55 人事部 (2)为"部门"表创建一个主索引(升序),索引名为"bm",索引表达式为"部门号"。 (3)通过"部门号"字段建立"部门"表和"工资"表间的永久联系。 (4)为以上建立的联系设置参照完整性约束:更新规则为"级联";删除规则为"限制";插入规则为"忽略"。 一、基本操作题 【审题分析】 本题考查了数据表的基本操作;索引的建立及参照完整性的设置。 需要注意的是在建立数据库表时,必须先打开数据库文件,否则所建立的数据表为自由表。建立表索引可以在表设计器中进行,在表设计器的"字段"选项卡中,可以通过选择"排序"下拉框中的"升序"和"降序"为指定的字段建立一个索引名与索引表达式相同的普通索引,如果要改变索引名或索引类型,则需要在"索引"选项卡中进行修改。 参照完整性是针对两个表进行设置的,因此建立参照完整性前要先建立两个表的关联,且有一个表中必须建立关联字段的主索引(或候选索引),另一个表要建立普通索引,建立两个表联系后要先清理数据库,然后再设置参照完整性。 【操作步骤】 (1)①在命令窗口执行命令:MODIFY DATABASE 雇员工资,打开数据库设计器。 ②在数据库设计器中右击鼠标,选择【新建表】快捷菜单命令,在弹出的"新建表"对话框中单击"新建表"图标按钮,然后在弹出的"创建"对话框的"输入表名"框中输入"部门",单击"保存"按钮打开表设计器。 ③根据题意,在表设计器中逐行输入每个字段的字段名,并设置字段类型和宽度,然后单击"确定"按钮,此时系统会弹出一个对话框询问"现在输入数据记录吗?",单击"是"按钮,在弹出的输入表记录界面中输入题中所要求的记录,输入完毕后直接记录输入界面。 (2)右击数据库设计器中的"部门"表,选择【修改】快捷菜单命令,打开"部门"表设计器,在"字段"选项卡中选中"部门号",在"索引"列中选择"升序",然后在"索引"选项卡中修改"索引名"为"bm",修改"类型"为"主索引",单击"确定"按钮保存表结构修改。 (3)参照上小题的操作首先为"工资"表建立"部门号"的普通索引,然后在数据库设计器中拖动"部门"表"索引"下方的主索引"bm"到"工资"表中"索引"下方的普通索引"部门号"上,为两个表建立联系。 (4)①选中两个表之间的关联线(被选中的连线会变粗),首先执行【数据库】→【清理数据库】菜单命令,清空数据表中带有删除标记的记录,然后执行【数据库】→【编辑参照完整性】菜单命令。 ②在打开的"参照完整性"对话框的表格中,选择"更新"下的单元格内容为"级联";"删除"下的单元格内容为"限制";"插入"下的单元格内容为"忽略"。单击"确定"按钮保存参照完整性的修改。 二、简单应用题(共2小题,每题各20分,共计40分) (1)在"雇员工资"数据库中创建一个名称为s_view的视图,该视图查询"雇员工资"数据库中"工资"表的"部门号"、"雇员号"、"姓名"、"基本工资"、"津贴"、"奖金"、"医疗保险"、"失业保险"和"实发工资",其中"实发工资"由"基本工资"、"津贴"和"奖金"三项相加,再减去"失业保险"和"医疗保险"得出,结果按"部门号"升序排序。 (2)设计一个名称为Form1的表单,表单以表格方式显示"雇员工资"数据库中"工资"表的记录,供用户浏览。在该表单的右下方有一个命令按钮,标题为"退出浏览",当单击该按钮时退出表单。 二、简单应用题 (1)【审题分析】 本题考查的是视图设计器的使用,由于视图只能保存在数据库中,因此要先打开用于保存视图的数据库。 在视图设计器中输入计算表达式时,可直接在视图设计器"字段"选项卡的"函数和表达式"下的文本框中输入表达式,同时也可以通过打开"表达式生成器"对话框进行输入,要为输入的表达式指定一个新的视图字段名,可以通过AS短语指定。根据本题要求,可直接在"函数和表达式"框中输入计算"实发工资"的表达式并添加到"选定字段"中,其他操作根据题目要求在各对应的选项卡中完成即可。 【操作步骤】 步骤1:在命令窗口执行命令:OPEN DATABASE 雇员工资,打开"雇员工资"数据库环境。 步骤2:继续在命令窗口执行命令:CREATE VIEW,打开视图设计器。在"添加表或视图"对话框中双击"工资"表,将表添加到视图设计器中。 步骤3:在视图设计器中双击"工资"表中"部门号"、"雇员号"、"姓名"、"基本工资"、"津贴"、"奖金"、"医疗保险"和"失业保险"字段,添加到"选定字段"中;然后在"字段"选项卡的"函数和表达式"下的文本框中输入表达式:(工资.基本工资+工资.津贴+工资.奖金)-(工资.医疗保险+工资.失业保险) AS 实发工资,再单击"添加"按钮,将其添加到"选定字段"列表中。 步骤4:在"排序依据"选项卡中双击"选定字段"列表框中的"工资.部门号"字段,将字段添加到"排序条件"列表框中,单击"常用"工具栏中的"运行"按钮查看结果,将视图文件以文件名s_view保存。 (2)【审题分析】 本题主要考查的是表单数据环境的使用。在表单设计器中,向表单数据环境添加数据表或视图后,可拖动表、视图或字段名到表单中,形成相应的表单控件,同时,系统会自动将控件的相关属性与数据环境中表数据相结合,用来显示表中的数据,一般情况下,拖动表或视图到表单中会形成一个表格控件。 【操作步骤】 步骤1:在命令窗口执行命令:OPEN DATABASE 雇员工资,打开"雇员工资"数据库环境。 步骤2:在命令窗口执行命令:CREATE FORM FORM1,打开表单设计器。右击表单选择【数据环境】快捷菜单命令,在"添加表或视图"对话框中双击"工资"表文件,将表添加到表单数据环境中。 步骤3:将表单数据环境中的"工资"表文件拖放到表单中,会出现一个表格控件自动显示表中的数据。 步骤4:从"表单控件"工具栏中向表单添加一个命令按钮控件。选中命令按钮,在"属性"面板中修改按钮的Caption属性值"退出浏览"。 步骤5:双击"退出浏览"命令按钮,编写Click事件代码:THISFORM.RELEASE。 步骤6:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 三、综合应用题(共1小题,计30分) 对数据库"雇员工资"设计一个文件名为sform的表单,上面有"调整"和"退出"两个命令按钮。 单击"调整"命令按钮时,利用工资调整表"工资_c"的"基本工资",对"工资"表的"基本工资"进行调整(请注意:按"雇员号"相同进行调整,并且只是对部分雇员的基本工资进行了调整,其他雇员的基本工资不动)。最后将"工资"表中的记录存储到new_od中(表结构与"工资"表完全相同)。 单击"退出"命令按钮时,关闭表单。 三、综合应用题 【审题分析】 本大题考查了表单及控件的常用属性和方法的设置;程序的循环结构;SQL查询和更新语句。 本题程序设计部分的基本思路:首先打开工资调整表(即"工资_c"表),然后通过DO WHILE循环语句对该表的记录逐条进行处理,即更新"工资"表中所有"雇员号"与"工资_c"表当前记录"雇员号"相同的记录,将"工资"表中的"基本工资"等于"工资_c"表中当前记录的"基本工资";每执行完一次更新后,"工资_c"表中的记录指针便指向下一条记录,继续对"工资"表进行更新,直至"工资_c"表的记录指针指向该表末尾,循环结束。 更新记录完毕之后,再通过SELECT查询语句将更新后的"工资"表记录输出到新表中。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM SFORM,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加两个命令按钮。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-16。 表3-16 表单及控件属性设置 对 象 命令按钮(Command1) 命令按钮(Command2) 属 性 Caption Caption 属性值 调整 退出 步骤3:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *****"调整"按钮的Click事件代码***** CLOSE ALL USE 工资_c DO WHILE !EOF() UPDATE 工资 SET 基本工资=工资_c.基本工资; WHERE 雇员号=工资_c.雇员号 ENDDO SELECT * FROM 工资 INTO TABLE NEW_OD *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)建立数据库"订单管理.dbc"。把自由表"订单"和"职工"添加到数据库中。 (2)打开表单testform.scx,设置标签控件中英文字母的字号为20,保存表单。 (3)打开表单testform.scx,为命令按钮"隐藏文字"添加代码,运行表单时,单击此按钮隐藏表单上标签控件(label1),保存并运行该表单。 (4)利用报表向导建立一对多报表,以"职工"表为父表,选择其中"职工号"、"姓名"和"职称"字段;以"订单"表为子表,选择其全部字段。报表样式为"帐务式",表之间的关联通过"职工号"字段实现,排序方式为按"职工号"升序,报表标题为"职工-订单记录浏览"。报表其他参数取默认值。最后将生成的报表保存为zdrepo.frx。 一、基本操作题 【审题分析】 本大题考查了数据库及表的基本操作;表单及控件的常用属性和方法的设置;报表向导的使用。 本大题操作中关键是要掌握表单控件基本属性的含义,用于设置标题字体大小的属性为FontSize ,隐藏控件可以通过属性Visible来控制。 利用报表向导制作报表属于比较简单的操作,可以通过"新建"对话框打开报表后,根据向导提示一步步完成即可。向数据库中添加表的操作在数据库设计器中完成。 【操作步骤】 (1)①在命令窗口执行命令:MODIFY DATABASE 订单管理,打开数据库设计器。 ②在数据库设计器中右击鼠标,选择【添加表】快捷菜单命令,在弹出的"打开"对话框中双击"订单"表,将表添加到数据库中,以同样的方法将"职工"表添加到数据库中。 (2)①在命令窗口执行命令:MODIFY FORM TESTFORM,打开表单设计器修改表单。 ②选中表单中的标签(Label1)控件,在"属性"面板中修改标签(Label1)的FontSize属性值为:20,保存表单修改。 (3)①接上小题操作,双击"隐藏文字"命令按钮,编写该控件的Click事件代码,内容如下: THISFORM.LABEL1.VISIBLE=.F. ②保存表单修改,并运行表单查看修改结果。 (4)①在命令窗口执行命令:OPEN DATABASE 订单管理,打开"订单管理"数据库环境。 ②执行【文件】→【新建】菜单命令,或单击"常用"工具栏的"新建"按钮,在弹出的"新建"对话框中选中"报表"选项,然后单击"向导"图标按钮,系统弹出"向导取向"对话框,选中"一对多报表向导"项,单击"确定"按钮,启动报表向导。 ③在报表向导的"步骤1 - 从父表选择字段"界面的"数据库和表"下选中"职工"表,双击"可用字段"中的"职工号"、"姓名"和"职称"字段,将其添加到"选定字段"中,单击"下一步"按钮。 ④在报表向导的"步骤2 - 从子表选择字段"界面的"数据库和表"下选中"订单"表,将"可用字段"中的字段全部添加到"选定字段"中,单击"下一步"按钮。 ⑤在报表向导的"步骤3 - 为表建立关系"界面中系统自动建立两个表的联系,单击"下一步"按钮。 ⑥在报表向导的"步骤4 - 排序记录"界面中双击"可用的字段或索引标识"中的"职工号"字段到"选定字段"列表中,单击"下一步"按钮。 ⑦在报表向导的"步骤5 - 选择报表样式"界面中选中"样式"列表中的"帐务式",单击"下一步"按钮。 INTO TABLE jesort 步骤2:执行【文件】→【另存为】菜单命令,在弹出的"另存为"对话框的"保存文档为:"文本框中输入新的文件名:prognew,单击"保存"命令保存文件。 步骤3:在命令窗口执行命令:DO PROGNEW.PRG,执行程序文件。 (2)【审题分析】 本题主要考查的是菜单在顶层表单中的应用。主要包括两大部分的操作,即菜单设计和表单设计。操作过程可按以下步骤进行: 通过菜单设计器建立菜单,注意主菜单和子菜单的建立。菜单设计有两个操作关键:一是在菜单设计器中勾选"常规选项"对话框中的"顶层表单",表示此菜单存在顶层表单中;二是在释放表单时,要使用表单的文件名,即本题中可以通过MAINFORM.RELEASE命令释放MAINFORM表单,注意不要使用THISFORM.RELEASE命令释放表单。 在表单设计过程中,要注意将表单设置为顶层表单,通过表单的ShowWindow属性值可以进行设置,而在表单中调用菜单文件是在表单的Load(或 INIT)事件中进行调用,还需要通过THIS短语指定当前表单对象的引用。其基本格式为:DO <菜单文件.mpr> WITH THIS[,"<菜单内部名>"]。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE MENU SMENU,在弹出的"新建菜单"对话框中单击"菜单"图标按钮,打开菜单设计器。在菜单设计器"菜单名称"列的文本框中依次输入"打开文件"、"保存文件"和"退出"3个主菜单名。 步骤2:选择"退出"菜单命令的"结果"项为"命令",并输入命令语句:MAINFORM.RELEASE。 步骤3:执行【显示】→【常规选项】菜单命令,在弹出的"常规选项"对话框中勾选"顶层表单"复选框,然后单击"确定"按钮,保存修改。 步骤4:执行【菜单】→【生成】菜单命令,在弹出的Visual FoxPro对话框中单击"是"按钮,接着系统会弹出"生成菜单"对话框,单击"生成"按钮生成一个可执行的菜单文件,关闭菜单设计器。 步骤5:在命令窗口执行命令:CREATE FORM MAINFORM,打开表单设计器。选中表单,在"属性"窗口中修改表单(Form1)的属性值,见表3-17。 表3-17 表单及控件属性设置 对 象 表单(Form1) 属 性 Name Caption ShowWindow 属性值 mainform 顶层表单测试 2 - 作为顶层表单 步骤6:双击表单(Form1)编写表单的Load事件代码,代码如下: *****表单(Form1)的Load事件代码***** DO SMENU.MPR WITH THIS,"TTT" 步骤7:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 三、综合应用题(共1小题,计30分) 打开表单文件xktjform.scx,并完成如下操作: ①将"课程"表和"选课"添加到表单的数据环境中。 ②使列表框List1中的数据项为"课程"表中的课程名称(课程.课程名称)。 ③单击列表框中的数据项时,统计选修了所选课程的学生人数(从"选课"表),并将结果存储在以课程名命名的表中,表中只有一个字段"选课人数"。 ④添加一个"退出"命令按钮(Command1),单击该按钮时关闭表单。 说明:完成该程序后必须运行,并且分别统计选修了"数据库原理"和"计算机基础"课程的学生人数。 三、综合应用题 【审题分析】 本大题考查了表单及控件的常用属性和方法的设置;SQL简单的计算查询。 本题关键是怎样获取列表框所选条目的值,这可以通过列表框的Value属性取得,Value值等于当前列表框中被选中的条目。再利用SQL计算查询,在"课程"表和"选课"表中连接查找并统计列表框中被选定条目(即课程名称)的"选课人数",利用COUNT()计数函数可以统计"选课人数"。 进行SQL语句设计时,因为"选课"表中没有"课程名称"字段,而"课程"表中没有"学号"字段,但题目给出的筛选条件是根据"课程名称"进行统计选修课程的学生人数,因此,需要将"选课"表和"课程"表先通过"课程号"字段连接,然后再根据筛选条件进行查询统计的操作。 【操作步骤】 步骤1:在命令窗口执行命令:OPEN DATABASE 课程成绩,打开"课程成绩"数据库环境。 步骤2:在命令窗口执行命令:MODIFY FORM XKTJFORM,打开表单设计器修改xktjform表单。右击表单选择 【数据环境】快捷菜单命令,继续在表单数据环境中单击右键选择【添加】快捷菜单命令,在"添加表或视图"对话框中双击"课程"和"选课"表,将表添加到数据环境中。 步骤3:选中列表框,在"属性"面板中先修改列表框(List1)的"RowSourceType"属性值为:6 - 字段;在修改"RowSource"属性值为:课程.课程名称。 步骤4:双击列表框(List1)编写Click事件代码,内容如下: *****列表框(List1)的Click事件代码***** XI=ALLTRIM(THISFORM.LIST1.VALUE) SELECT COUNT(学号) AS 选课人数 FROM 课程,选课; WHERE 课程.课程号=选课.课程号; AND 课程.课程名称=XI; INTO TABLE &XI 步骤5:通过"表单控件"工具栏向表单添加一个命令按钮,并在属性面板中修改Caption属性值为"退出";双击"退出"命令按钮,编写按钮的Click事件代码:THISFORM.RELEASE。 步骤6:单击"常用"工具栏中的"运行"按钮查看结果,并分别单击"数据库原理"和"计算机基础"条目,生成相应的表文件。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)将orderdet、orderlist和customer表添加到数据库"订货管理"中。 (2)为orderlist表创建一个普通索引,索引名和索引表达式均是"客户号"。 (3)建立表orderlist和表customer间的永久联系(通过"客户号"字段)。 (4)为以上建立的联系设置参照完整性约束:更新规则为"级联",删除规则为"限制",插入规则为"忽略"。 一、基本操作题 【审题分析】 本题考查了数据库及表的基本操作;索引的建立;参照完整性的设置。 向数据库中添加表的操作在数据库设计器中完成。建立表索引可以在表设计器中进行,在表设计器的"字段"选项卡中,可以通过选择"排序"下拉框中的"升序"和"降序"为指定的字段建立一个索引名与索引表达式相同的普通索引,如果要改变索引名或索引类型,则需要在"索引"选项卡中进行修改。 参照完整性是针对两个表进行设置的,因此建立参照完整性前要先建立两个表的关联,且有一个表中必须建立关联字段的主索引(或候选索引),另一个表要建立普通索引,建立两个表联系后要先清理数据库,然后再设置参照完整性。 【操作步骤】 (1)在命令窗口执行命令:MODIFY DATABASE 订货管理,打开数据库设计器。右击数据库设计器选择【添加表】快捷菜单命令,在弹出的"打开"对话框中双击orderdet表,将表添加到数据库中,以同样的方法将orderlist和customer表添加到数据库中。 (2)右击数据库设计器中的orderlist表,选择【修改】快捷菜单命令,打开orderlist表设计器,在"字段"选项卡中选中"客户号",在"索引"列中选择"升序",建立"客户号"的普通索引,保存表结构修改。 (3)①参照上小题的操作首先为customer表建立"客户号"的普通索引,然后在"索引"选项卡中修改"类型"为"主索引",单击"确定"按钮保存表结构修改。 ②在数据库设计器中拖动customer表"索引"下方的主索引"客户号"到orderlist表中"索引"下方的普通索引"客户号"上,为两个表建立联系。 (4)①选中两个表之间的关联线(被选中的连线会变粗),首先执行【数据库】→【清理数据库】菜单命令, 清空数据表中带有删除标记的记录,然后执行【数据库】→【编辑参照完整性】菜单命令。 ②在打开的"参照完整性"对话框的表格中,选择"更新"下的单元格内容为"级联";"删除"下的单元格内容为"限制";"插入"下的单元格内容为"忽略"。单击"确定"按钮保存参照完整性的修改。 二、简单应用题(共2小题,每题各20分,共计40分) (1)考生文件夹下有表customer和orderlist。用SQL SELECT语句完成查询:列出目前有订购单的客户信息(即有对应的orderlist记录的customer表中的记录),同时要求按"客户号"降序排序,将结果存储到ortemp表中,将使用的SQL语句保存到ordersql.txt中。要求查询结果不重复,即查询结果中同一客户的信息只显示一次。 (2)打开并按如下要求修改Form1表单文件(最后保存所做的修改): ①在"确定"命令按钮的Click事件(过程)下的程序有两处错误,请改正。 ②设置Text2控件的有关属性,使用户在输入口令时显示"*"。 二、简单应用题 (1)【审题分析】 本题考查的是SQL连接查询。其中Customer(客户表)和Orderlist(订单表)的连接条件为两个表中"客户号"相等的记录,表示在Customer表中的客户在Orderlist表中有订购记录;由于一个客户可能对应多条订购记录,因此,需要使用DISTINCT短语消除查询结果中重复的记录。 另外,用排序的短语为ORDER BY,降序的关键字为DESC,默认的排序方式为升序方式(ASC),将查询结果保存到永久性表中应使用INTO TABLE短语。 对于SQL语句不太熟悉的考生,本题还可以直接通过查询设计器完成,然后将查询设计器中生成的SQL代码保存到文本文件中。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY FILE ORDERSQL,打开文本编辑器编写SQL命令。 步骤2:在编辑器中输入如下程序代码(以下程序是通过查询设计器生成): SELECT DISTINCT Customer.*; && DISTINCT短语的功能是消除查询结果中相同的记录 FROM 订货管理!customer INNER JOIN 订货管理!orderlist ; ON Customer.客户号 = Orderlist.客户号; ORDER BY Customer.客户号 DESC; INTO TABLE ortemp.dbf 步骤3:在命令窗口执行命令:DO ORDERSQL.TXT,执行文件。 (2)【审题分析】 本题主要考查了表单属性及方法。在表单设计中,文本框中所显示的数据值可以通过Value属性获得,本题提供的源程序中,第一个错误便是缺少该属性。例如,"THISFORM.TEXT1"只能表示表单中的一个控件,如果要设计该控件的属性设置,则必须在该语句后面继续表示完整。 第二个错误是对表单常用方法的考查。用来释放和关闭表单的方法是Release ,而并非Close。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY FORM FORM1,打开表单设计器修改表单。 步骤2:双击表单中的"确定"按钮,看到该按钮的Click事件中代码如下: && 功能:如果用户输入的用户名和口令一致,则在提示信息后关闭该表单; && 否则重新输入用户名和口令。 **********ERROR********************** IF THISFORM.TEXT1 = THISFORM.TEXT2 WAIT "欢迎使用??" WINDOW TIMEOUT 1 **********ERROR********************** THISFORM.CLOSE WAIT "用户名或口令不对,请重新输入??" WINDOW TIMEOUT 1 ENDIF ? 修改后的代码如下: IF THISFORM.TEXT1.VALUE = THISFORM.TEXT2.VALUE && 原代码语句中缺少指定Value属性 WAIT "欢迎使用??" WINDOW TIMEOUT 1 THISFORM.RELEASE && 关闭表单的短语是RELEASE,而不是CLOSE WAIT "用户名或口令不对,请重新输入??" WINDOW TIMEOUT 1 ENDIF 步骤3:选中表单中的文本框(TEXT2)控件,在属性面板中修改"PasswordChar"属性值为:*。 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 三、综合应用题(共1小题,计30分) 使用报表设计器建立一个报表,具体要求如下: ①报表的内容(细节带区)是orderlist表的"订单号"、"订购日期"和"总金额"。 ②增加数据分组,分组表达式是"orderlist.客户号",组标头带区的内容是"客户号",组注脚带区的内容是该组订单的"总金额"合计。 ③增加标题带区,标题是"订单分组汇总记录浏览(按客户)",要求是4号字、黑体,括号是全角符号。 ④增加总结带区,该带区的内容是所有订单的总金额合计。 最后将建立的报表文件保存为orderlist_repo.frx文件。 三、综合应用题 【审题分析】 本大题考查的分组报表的设计。建立分组报表的关键包括以下几点: 在数据环境中要指定索引项便于记录分组,这也是最关键的步骤,否则报表中的分组记录将出错,该属性可以通过报表"属性"面板中的"Order"属性指定,注意指定前要先向数据环境中添加表。 指定索引项后,则可以进行分组报表设计,在"数据分组"对话框中设置"数据分组"表达式,本题的分组表达式是:orderlist.客户号。 将表中字段按要求放到报表各个带区之后,再利用域控件计算总金额数值,注意本题有两个计算"总金额"的地方,一个是每组的总金额,另一个是全部记录的总金额,注意两个总金额所处的带区位置不要弄错;另外,设置域控件格式时,格式应为"数值型",计算方式为"总和",分别在"格式"对话框和"计算字段"对话框中进行设置。 最后,设置报表标签格式可以通过【报表】→【默认字体】菜单命令打开"字体"对话框进行设置,注意,应先设置标签的字体格式,然后再向报表设计器中添加标签,该字体格式的设置对已存在的标签文字无效。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE REPORT ORDERLIST_REPO,打开报表设计器。 步骤2:右击报表选择【数据环境】快捷菜单命令,继续在报表数据环境中单击右键选择【添加】快捷菜单命令,在"添加表或视图"对话框中双击orderlist表,将表添加到表单的数据环境中。 步骤3:右击报表数据环境中的orderlist表,选择【属性】快捷菜单命令,在弹出的报表属性面板中修改"Order"属性值为"客户号",该操作主要是为了在设计分组记录时候,记录能按"客户号"索引排序。 步骤4:从报表数据环境的orderlist表中,依次拖动"订单号"、"订购日期"和"总金额"字段到报表设计器的细节带区,在通过"报表控件"工具栏向报表的"页标头"中添加3个名为"订单号"、"订购日期"和"总金额"的标签控件,调整标签与细节带区字段的位置。 步骤5:执行【报表】→【数据分组】菜单命令,弹出"数据分组"对话框,在对话框中单击"表达式"行的表达式生成器按钮,在弹出的"表达式生成器"对话框的"字段"列表中双击"orderlist.客户号"字段,单击"确定"按钮返回"数据分组"表达式,继续单击"确定"按钮关闭对话框,可以看到报表设计器中添加了"组标头"和"组注脚"两个带区。 步骤6:调整组标头的显示区域(向下拖动"组标头"栏),将orderlist表中的"客户号"字段拖到该区域,并添加一个名为"客户号:"的标签控件。 YEAR()取得。在"筛选"选项卡的"字段名"中选择"表达式",然后在"表达式生成器"对话框中利用函数取"Xs.出生日期"中的年份值,作为筛选条件的"字段名"。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE QUERY CJQUERY,打开查询设计器,将考生文件夹下的xs和cj表添加到查询设计器中。 步骤2:添加两个表后,系统弹出"连接条件"对话框,自动查找两个表中相匹配的字段进行连接,单击"确定"按钮设置两个表的联系。 步骤3:依次双击xs表中的"学号"、"姓名"字段和cj表中的"语文"、"数学"、"英语"字段添加到"字段"选项卡的"选定字段"列表中。 步骤4:在"筛选"选项卡中,选择"字段名"中的"表达式",弹出"表达式生成器"对话框,然后在"表达式"框中输入"YEAR(Xs.出生日期)",单击"确定"按钮返回"筛选"选项卡,接着设置"条件"为"=",在"实例"框中输入"1984",在"逻辑"下拉框中选择"AND";在第二行中,选择"字段名"为"Xs.民族","条件"为"=",在"实例"框中输入"汉"。 步骤5:在"排序依据"选项卡内双击"选定字段"列表框中的"Xs.学号"字段,将字段添加到"排序条件"列表框中。 步骤6:执行【查询】→【查询去向】菜单命令,在弹出的"查询去向"对话框中单击"表"图标按钮,接着在"表名"中输入文件名cjsort,单击"确定"按钮。 步骤7:最后单击"常用"工具栏中的"运行"按钮查看结果,将查询文件保存到考生文件夹下。 (2)【审题分析】 本题主要考查了利用SQL命令定义视图及SQL的简单查询。根据题目要求,本题可以分两步完成,首先是建立视图,然后通过SQL查询视图中的记录。 本题的关键是视图的定义,SQL简单查询只需套用最基本的查询命令格式即可完成。而定义视图的过程中关键是筛选条件的设置,根据题意,要查询"语文"、"数学"和"英语"3门课中至少有一门不及格的记录,也就是说查找学生的3门成绩中有"语文"、"数学"或"英语"小于60分的记录,因此多个条件之间的关系为逻辑或(OR)的关系。 本题中,视图的建立同样可以通过视图设计器完成,同样需要注意的是在视图设计器中,正确设置各筛选条件。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY DATABASE 学生成绩,新建数据库并打开数据库设计器。在数据库设计器中右击鼠标,选择【添加表】快捷菜单命令,在弹出的"打开"对话框中双击xs表,将表添加到数据库中,以同样的方法将cj表添加到数据库中。 步骤2:在命令窗口执行如下SQL命令语句建立视图: OPEN DATABASE 学生成绩 CREATE VIEW TJVIEW AS; SELECT Xs.学号, Xs.姓名, Cj.语文, Cj.数学, Cj.英语; FROM 学生成绩!xs INNER JOIN 学生成绩!cj ; ON Xs.学号 = Cj.学号; WHERE Cj.语文 < 60; OR (Cj.语文 < 60); OR (Cj.英语 < 60); ORDER BY Xs.学号 (注意:以上SQL语句查询语句部分是通过视图设计器生成,大家也可以直接在视图设计器中建立) 步骤3:在命令窗口执行如下SQL查询命令语句保存查询结果: SELECT * FROM TJVIEW INTO TABLE CJTEMP 三、综合应用题(共1小题,计30分) 首先利用表设计器在考生目录下建立表newcj.dbf,表结构如下: 民族 字符型(4) 语文平均分 数值型(7,2) 数学平均分 数值型(7,2) 然后在考生文件夹下创建一个下拉式菜单smenu.mnx,并生成菜单程序smenu.mpr。运行该菜单程序时会在当前Visual FoxPro系统菜单的末尾追加一个"考试测试"菜单,如图2-13所示。 图2-13 表单示例 菜单命令"统计"和"返回"的功能都通过执行过程完成。 菜单命令"统计"的功能是根据xs表和cj表分别统计汉族学生和少数民族学生在"语文"和"数学"两门课程上的平均分,并把统计数据保存在表newcj中。表newcj的结果有两条记录:第1条记录是汉族学生的统计数据,"民族"字段填"汉";第2条记录是少数民族学生的统计数据,"民族"字段填"其他"。 菜单命令"返回"的功能是恢复标准的系统菜单。 菜单程序生成后,运行菜单程序并依次执行"统计"和"返回"菜单命令。 三、综合应用题 【审题分析】 本大题考查了表的基本操作;菜单的建立及使用;SQL简单计算查询和SQL数据操作功能。 表的建立和菜单的建立都属于比较基本的操作,注意向系统菜单追加菜单项时,应在菜单设计器中打开"常规选项"对话框进行设置。本题的关键是菜单命令中SQL查询、插入和更新语句的设计。编写程序代码基本思路如下: 首先利用SQL计算查询,统计"汉"族学生的"语文"和"数学"平均成绩,将结果保存到数组中,再通过数组向newcj表插入记录;以同样的方法再将非"汉"族学生的"语文"和"数学"平均成绩插入到newcj表中。 由于非"汉"族学生的"民族"字段值不统一,因此,再使用SQL更新记录的语句将newcj表中非"汉"族学生的"民族"字段统一修改为"其他"。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE NEWCJ,打开数据表设计器新建表。 步骤2:根据题意,在表设计器中逐行输入每个字段的字段名,并设置字段类型和宽度,然后单击"确定"按钮,此时系统会弹出一个对话框询问"现在输入数据记录吗?",本题不需要录入数据,单击"否"按钮。 步骤3:在命令窗口执行命令:CREATE MENU SMENU,在弹出的"新建菜单"对话框中单击"菜单"图标按钮,打开菜单设计器。 步骤4:在菜单设计器"菜单名称"列的文本框中输入"考试测试","结果"下拉框中选择为"子菜单",单击"创建"按钮进入下级菜单设计,在"菜单名称"列的第1、2行文本框中依次输入子菜单名"统计"、"返回",将两个子菜单的"结果"都设置为"过程",分别单击两个子菜单行的"创建"命令按钮,打开过程编辑框编写过程代码。 步骤5:两个子菜单的过程代码如下: *****"统计"子菜单的过程代码***** SELECT XS.民族,AVG(CJ.语文) AS 语文平均分,AVG(CJ.数学) AS 数学平均分 FROM XS; INNER JOIN CJ ON XS.学号 = CJ.学号; WHERE XS.民族="汉" INTO ARRAY ARR INSERT INTO NEWCJ FROM ARRAY ARR SELECT XS.民族,AVG(CJ.语文) AS 语文平均分,AVG(CJ.数学) AS 数学平均分 FROM XS; INNER JOIN CJ ON XS.学号 = CJ.学号; WHERE XS.民族!="汉" INTO ARRAY ARR INSERT INTO NEWCJ FROM ARRAY ARR UPDATE NEWCJ SET 民族='其他' WHERE 民族!="汉" ****"返回"子菜单的过程代码***** SET SYSMENU TO DEFAULT 步骤6:执行【显示】→【常规选项】菜单命令,在"位置"区域选中"追加"单选项,则新建立的子菜单会在当前Visual FoxPro系统菜单后显示。 步骤7:执行【菜单】→【生成】菜单命令,在弹出的Visual FoxPro对话框中单击"是"按钮,接着系统会弹出"生成菜单"对话框,单击"生成"按钮生成一个可执行的菜单文件。 步骤8:在命令窗口执行命令:DO SMENU.MPR,运行菜单,并执行"统计"菜单命令。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)建立项目文件project1。 (2)将数据库"客户订货"添加到项目中。 (3)将数据库"客户订货"中的数据库表"客户"从数据库中移去(注意:不是删除)。 (4)将考生文件夹中的表单form1的背景色改为蓝色。 一、基本操作题 【审题分析】 本大题考查了项目管理器的建立及使用;数据库及表的基本操作;表单常用属性的设置。 本大题操作中,容易出错的操作是将表从数据库中移出的操作,在进行该操作时有"移去"和"删除"两种选择;另外要注意表单的背景颜色属性是:BackColor 。 【操作步骤】 (1)在命令窗口执行命令:CREATE PROJECT PROJECT1,新建一个项目管理器。 (2)在项目管理器中选中"数据"选项卡内的"数据库"项,然后单击"添加"按钮,在弹出的"打开"对话框中双击"客户订货"数据库文件,将数据库添加到项目管理器中。 (3)在项目管理器中单击"数据库"前面的"+"号,依次展开"数据库"→"客户订货"→"表",选中"客户"表,然后单击项目管理器中的"移去"命令按钮,在弹出的Visual FoxPro对话框中单击"移去"按钮,在接着弹出的对话框中继续单击"是"按钮,将"客户"表移出数据库。 (4)在命令窗口执行命令:MODIFY FORM FORM1,打开表单设计器修改表单,在属性面板中修改表单的BackColor属性值为"0,0,255",保存表单修改。 二、简单应用题(共2小题,每题各20分,共计40分) (1)将"订货"表中的记录全部复制到"订货备份"表中,然后用SQL SELECT语句完成以下操作:列出所有订购单的"订单号"、"订购日期"、"配件号"、"配件名"和"总金额",并将结果存储到result表中(其中"订单号"、"订购日期"、"总金额"取自"货物"表,"配件号"和"配件名"取自"订货"表)。 (2)打开prog1.prg命令文件,该命令文件包含3条SQL语句,每条SQL语句中都有一个错误,请改正(注意:在出现错误的地方直接改正,不可以改变SQL语句的结构和SQL短语的顺序)。 二、简单应用题 (1)【审题分析】 本题考查了SQL的简单查询和连接查询。SQL简单查询可直接套用基本的查询命令格式;进行连接查询时主要是判断查询输出字段来自哪个数据表(本题都已指明),再正确设置连接条件。 【操作步骤】 步骤1:在命令窗口执行命令:SELECT * FROM 订货 INTO TABLE 订货备份,将"订货"表中的记录全部复制到"订货备份"表中。 步骤2:在命令窗口执行如下SQL命令语句完成查询: SELECT 货物.订单号, 货物.订购日期, 货物.总金额, 订货.配件号, 订货.配件名; FROM 客户订货!订货 INNER JOIN 客户订货!货物 ; ON 订货.订单号 = 货物.订单号; INTO TABLE result.dbf (注意:以上SQL语句是根据查询文件生成的,大家也可以通过查询设计器完成本题操作。) (2)【审题分析】 本题考查了SQL更新功能;分组计算查询和简单查询。 第一处错误属于SQL更新命令格式错误,通过SQL给字段赋新值是通过"="号设置的。 第二处错误是分组短语与排序短语混淆了,这也是改错题中经常设置错误的地方。 第三处错误是查询语句的命令格式错误,SQL查询中筛选条件通过WHERE短语指出。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY COMMAND PROG1.PRG,打开prog1程序文件,文件中的命令代码如下(说明:本程序由于书中排版原因,最长一行的代码与其下一行属于一行): && 所有器件的单价增加10元 UPDATE 订货备份 SET 单价 WITH 单价 + 10 && 计算每种器件的平均单价 SELECT 配件号,AVG(单价) AS 平均价格 FROM 订货备份 ORDER BY 配件号 INTO CURSOR temp && 查询平均价小于400的记录 SELECT * FROM temp FOR 平均价格 < 400 ? 修改程序中的错误行,修改后的程序如下: UPDATE 订货备份 SET 单价 = 单价 + 10 && UPDATE语句中赋值是通过"="号,而不是WITH SELECT 配件号,AVG(单价) AS 平均价格 FROM 订货备份 GROUP BY 配件号 INTO CURSOR temp && GROUP BY短语才是分组短语,而ORDER BY短语是用来对查询结果进行排序的 SELECT * FROM temp WHERE 平均价格 < 400 && SELECT的条件短语是WHERE,而不是FOR 步骤2:保存文件修改,在命令窗口执行命令:DO PROG1.PRG,执行程序文件。 三、综合应用题(共1小题,计30分) 在考生文件夹中有"客户订货"数据库,内有"订货"表和"货物"表。"订货"表中的"单价"与"数量"之积应等于"货物"表中的"总金额"。 现在有部分"货物"表记录的"总金额"字段值不正确,请编写程序挑出这些记录,并将这些记录存放到一个名为"修正"的表中(与订货表结构相同,自己建立),根据"订货"表的"单价"和"数量"字段修改"修正"表的"总金额"字段(注意一个修正记录可能对应几条货物记录)。最后"修正"表的结果要求按"总金额"降序排序。 编写的程序最后保存为prog2.prg。 三、综合应用题 【审题分析】 本大题主要考查的是SQL分组计算查询;DO WHILE循环结构。本题所设计的程序代码有些难度,需要考生好好掌握。基本解题思路可按以下步骤进行: 首先,根据"订货"表的"单价"和"数量"数据,利用分组计算查询求出每组订单的"总金额",将结果保存到一个临时表中。 然后,通过对"货物"表和临时表的连接查询,找出"货物"表中"总金额"字段与临时表中"总金额"不相同的记录,并将"货物"表中这些"总金额"不相同的记录输出到"修正"表中。 接着利用DO WHILE循环语句对"修正"表中的每条记录进行处理。通过SQL查询语句从临时表中先获得与"修正"表当前所指记录"订单号"相同的"总金额"字段值,将该值保存到数组中,再通过REPLACE命令修改"修正"表当前记录的值,每处理完一条记录,记录指针便指向下一条记录,一直到处理完"修正"表中的所有记录。 最后将"修正"表的记录按"总金额"排序,由于查询结果不能覆盖正在作为查询数据源的表,因此,可以通过一个临时表过渡,保存排序的表记录,再通过临时表将排好序的记录再保存回原数据表中。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY COMMAND PROG2.PRG,打开程序文件编辑器。 步骤2:在编辑器中输入如下程序代码: SELECT 订单号,SUM(单价*数量) AS 总金额; FROM 订货; 没有显示该工具栏,则执行该操作)。 ②同时选中"东"、"中"和"西"3个按钮,然后单击"布局"工具栏中的"顶边对齐"按钮(第3个图标按钮),接着在"属性"面板中修改Top属性值为:100。 ③选中"北"、"中"和"南"3个按钮,然后单击"布局"工具栏中的"左边对齐"按钮(第1个图标按钮),接着在"属性"面板中修改Left属性值为:150。 (4)①右击工具栏的空白区域,选择【表单设计器】快捷菜单命令,打开表单的"表单设计器"工具栏(如果表单设计器中没有显示该工具栏,则执行该操作)。 ②单击"表单设计器"工具栏中的"设置TAB键次序"按钮,可以看到表单中每个按钮上都显示一个数字,按照"东"、"南"、"西"、"北"、"中"的顺序依次单击每个命令按钮,可以看到每个按钮上的数字也随着单击的顺序呈"1"、"2"、"3"、"4"、"5"的顺序显示。 ③单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 二、简单应用题(共2小题,每题各20分,共计40分) (1)利用查询设计器创建查询,从考生目录下的xs表和cj表中查询"语文"、"数学"和"英语"3门课中至少有一门课在90分以上(含90分)的学生记录。查询结果包含"学号"、"姓名"、"语文"、"数学"和"英语"5个字段;各记录按"学号"升序排序;查询去向为表cjtemp1。最后将查询保存在cjquery.qpr文件中,并运行该查询。 (2)创建"学生成绩"数据库,并向其中添加xs表和cj表。然后在数据库中创建视图cjview:利用该视图只能查询少数民族学生的"数学"成绩;查询结果包含"学号"、"姓名"、"数学"3个字段;各记录按"数学"成绩降序排序,若"数学"成绩相同时按"学号"降序排序。最后利用刚创建的视图cjview查询视图中的全部信息,并将查询结果存放在表cjtemp2中。 二、简单应用题 (1)【审题分析】 本题主要考查了利用查询设计器的使用。 本题的关键是在查询设计器中,正确设置各筛选条件。根据题意,要查询"语文"、"数学"和"英语"3门课中至少有一门成绩大于等于90分以上的记录,也就是说查找学生的3门成绩中有"语文"、"数学"或"英语"大于等于90分的记录,因此多个条件之间的关系为逻辑或(OR)的关系。注意在查询设计器的"筛选"选项卡中正确选择逻辑运算符。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE QUERY CJQUERY,打开查询设计器,将考生文件夹下的xs和cj表添加到查询设计器中。 步骤2:添加两个表后,系统弹出"连接条件"对话框,自动查找两个表中相匹配的字段进行连接,单击"确定"按钮设置两个表的联系。 步骤3:依次双击xs表中的"学号"、"姓名"字段和cj表中的"语文"、"数学"、"英语"字段添加到"字段"选项卡的"选定字段"列表中。 步骤4:在"筛选"选项卡中选择"字段名"为"Cj.语文",在"条件"为">=",在"实例"框中输入"90",在"逻辑"下拉框中选择"OR";在第二行中,选择"字段名"为"Cj.数学",在"条件"为">=",在"实例"框中输入"90",在"逻辑"下拉框中选择"OR";在第三行中,选择"字段名"为"Cj.英语",在"条件"为">=",在"实例"框中输入"90"。 步骤5:在"排序依据"选项卡内双击"选定字段"列表框中的"Xs.学号"字段,将字段添加到"排序条件"列表框中。 步骤6:执行【查询】→【查询去向】菜单命令,在弹出的"查询去向"对话框中单击"表"图标按钮,接着在"表名"中输入文件名cjtemp1,单击"确定"按钮。 步骤7:最后单击"常用"工具栏中的"运行"按钮查看结果,将查询文件保存到考生文件夹下。 (2)【审题分析】 本题主要考查了利用SQL命令定义视图及SQL的简单查询。根据题目要求,本题可以分两步完成,首先是建立视图,然后通过SQL查询视图中的记录。 本题的关键是视图的定义,SQL简单查询只需套用最基本的查询命令格式即可完成。而定义视图的过程中关键是排序条件的设置,注意在ORDER BY短语后正确设置两个字段的排序方式。ASC短语表示升序排序,为系统默认的排序方式,可省略该短语;DESC短语表示降序排序,不可缺省。 本题中,视图的建立同样可以通过视图设计器完成,同样需要注意的是在视图设计器中,正确设置排序方式。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY DATABASE 学生成绩,新建数据库并打开数据库设计器。在数据库设计器中右击鼠标,选择【添加表】快捷菜单命令,在弹出的"打开"对话框中双击xs表,将表添加到数据库中,以同样的方法将cj表添加到数据库中。 步骤2:在命令窗口执行如下SQL命令语句建立视图: OPEN DATABASE 学生成绩 CREATE VIEW CJVIEW AS; SELECT Xs.学号, Xs.姓名, Cj.数学; FROM 学生成绩!xs INNER JOIN 学生成绩!cj ; ON Xs.学号 = Cj.学号; WHERE Xs.民族 <> "汉"; ORDER BY Cj.数学 DESC, Xs.学号 DESC (注意:以上SQL语句查询语句部分是通过视图设计器生成,大家也可以直接在视图设计器中建立。) 步骤3:在命令窗口执行如下SQL查询命令语句保存查询结果: SELECT * FROM CJVIEW INTO TABLE CJTEMP2 三、综合应用题(共1小题,计30分) 利用表设计器在考生目录下建立表bjgcj.dbf,表结构如下: 学号 字符型(8) 姓名 字符型(8) 课程名 字符型(4) 分数 数值型(6,1) 然后编写程序tongji.prg,从xs表和cj表中找出所有成绩不及格(分数小于60)的学生信息(学号、姓名、课程名和分数),并把这些数据保存到bjgcj表中(若一个学生有多门课程不及格,在bjgcj表中就会有多条记录)。bjgcj表中的各记录应该按"分数"降序排序,分数相同则按"学号"升序排序。 要求在程序中用SET RELATION命令建立xs表和cl表之间的关联(同时用INDEX命令建立相关的索引),并通过DO WHILE循环语句实现规定的功能。最后运行程序。 三、综合应用题 【审题分析】 本大题考查了表的基本操作;程序文件的建立及运行;表间关联;SQL简单查询;SQL数据插入;条件程序结构和DO WHLIE程序结构设计。本题所涉及的知识点比较多,需要考生非常清楚解题流程。基本解题思路可按以下步骤进行: 表的建立和程序的建立都属于比较基本的操作。本题的关键是程序文件代码的设计。编写程序代码基本思路如下: 首先根据题意,可以利用SQL语句生成一个空数据表CTEMP文件。 建立表间关联。在两个不同的工作区中打开xs和cj表,并为两个表建立索引,通过索引表达式对两个表建立关联。 查找cj表中不及格的成绩记录。利用DO WHILE循环对CJ表中的记录逐条处理,通过IF条件语句判断将不及格的记录到CTEMP表中。这里特别要注意的是不能将判断条件放在一个IF语句中,因为题目要求"若一个学生有多门课程不及格,在bjgcj表中就会有多条记录",cj表中共有3门课程,依次需要编写3个IF条件语句分别判断每个科目的不及格情况。 保存查询结果。将所有不及格记录排序输出到CTEMP表之后,先将该表的记录全部输出到数组中,然后再通过数组向最终用来保存查询结果的BJGCJ表中插入记录。查询中产生的CTEMP表可以通过SQL的删除表命令进行删除。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE BJGCJ,打开数据表设计器新建表。 步骤2:根据题意,在表设计器中逐行输入每个字段的字段名,并设置字段类型和宽度,然后单击"确定"按 钮,此时系统会弹出一个对话框询问"现在输入数据记录吗?",本题不需要录入数据,单击"否"按钮。 步骤3:在命令窗口执行命令:MODIFY COMMAND TONGJI,打开程序文件编辑器。 步骤4:在编辑器中输入如下程序代码: SET TALK OFF CLOS ALL OPEN DATABASE 学生成绩 SELECT * FROM BJGCJ WHERE .F. INTO TABLE CTEMP SELECT 1 USE XS INDEX ON 学号 TAG 学号 SELECT 2 USE CJ INDEX ON 学号 TAG 学号 SET RELATION TO 学号 INTO XS GO TOP DO WHILE .NOT.EOF() IF CJ. 语文<60 INSERT INTO CTEMP VALUES(XS.学号,XS.姓名,'语文',CJ. 语文) ENDIF IF CJ.数学<60 INSERT INTO CTEMP VALUES(XS.学号,XS.姓名,'数学',CJ.数学) ENDIF IF CJ.英语<60 INSERT INTO CTEMP VALUES(XS.学号,XS.姓名,'英语',CJ.英语) ENDIF ENDDO SELECT * FROM CTEMP ORDER BY 分数 DESC,学号 INTO ARRAY ARR INSERT INTO BJGCJ FROM ARRAY ARR CLOSE DATABASE CLOSE TABLES ALL DROP TABLE CTEMP SET TALK ON 步骤5:在命令窗口执行命令:DO TONGJI,执行文件。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)将数据库"学籍查看"添加到项目WY中。 (2)永久删除数据库中的表score。 (3)将数据库中表course变为自由表。 (4)为表"学生"建立主索引,索引名和索引表达式均为"学号"。 一、基本操作题 【审题分析】 本题考查了项目管理器的使用;数据库和表的基本操作;表索引的建立。操作过程中需要注意的是从数据库中删除或移出表时的操作。 向项目管理器中添加文件,首先要打开项目文件;建立表字段的主索引可以在表设计器中进行设置。 【操作步骤】 (1)在命令窗口执行命令:MODIFY PROJECT WY,打开项目管理器。在项目管理器中选中"数据"选项卡内的" 数据库"项,然后单击"添加"按钮,在弹出的"打开"对话框中双击"学籍查看"数据库文件,将数据库添加到项目管理器中。 (2)在项目管理器中单击"数据库"前面的"+"号,依次展开"数据库"→"学籍查看"→"表",选中score表,然后单击项目管理器中的"移去"命令按钮,在弹出的Visual FoxPro对话框中单击"删除"按钮,永久删除score表。 (3)继续选中course表,然后单击项目管理器中的"移去"命令按钮,在弹出的Visual FoxPro对话框中单击"移去"按钮,在接着弹出的对话框中继续单击"是"按钮,将course表移出数据库。 (4)继续选中"学生"表单击"修改"按钮,弹出"学生"表设计器,在表设计器的"字段"选项卡中选中"学号"字段名,然后在"索引"列的下拉框选择"升序"排序方式,接着在"索引"选项卡中将"类型"设置为"主索引",单击"确定"按钮保存表结构修改。 二、简单应用题(共2小题,每题各20分,共计40分) (1)在考生文件夹下建立数据库"积分管理",将考生文件夹下的自由表"积分"添加进"积分管理"数据库中。根据"积分"表建立一个视图jfview,视图中包含的字段与"积分"表相同,但视图中只能查询到积分小于等于1500的信息,结果按"积分"降序排序。 (2)新建表单hello_form,表单内含两个按钮,标题分别为"问候"和"退出"。单击"问候"按钮,弹出对话框显示"您好";单击"退出",关闭表单。 二、简单应用题 (1)【审题分析】 本题考查了数据库和表的基本操作;利用视图设计器建立视图。向数据库中添加表可以在数据库设计器中完成;利用视图设计器建立视图时,注意筛选条件设置正确,其他操作都比较简单。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY DATABASE 积分管理,新建数据库并打开数据库设计器。在数据库设计器中右击鼠标,选择【添加表】快捷菜单命令,在弹出的"打开"对话框中双击"积分"表,将表添加到数据库中。 步骤2:在数据库设计器中右击鼠标,选择【新建本地视图】快捷菜单命令打开视图设计器,接着在弹出的"新建本地视图"对话框中单击"新建视图"图标按钮,然后在"添加表或视图"对话框中双击"积分"表,将表添加到视图设计器中。 步骤3:在"字段"选项卡中单击"全部添加"按钮,将"可用字段"中的全部字段添加到"选定字段"中。 步骤4:在"筛选"选项卡中,选择"字段名"为"积分.积分","条件"为"<=",在"实例"框中输入"1500"。 步骤5:在"排序依据"选项卡中双击"选定字段"列表框中的"积分.积分"字段,将字段添加到"排序条件"列表框中,在"排序选项"中选择"降序"单选项;以jfview名保存视图。 (2)【审题分析】 本题考查了表单及控件的常用属性和方法的设置。本题的关键是消息对话框函数MESSAGEBOX()的使用,该函数以对话框形式显示信息,并返回用户所选按钮的代码,对话框中默认包含一个"确定"按钮。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM HELLO_FORM,打开表单设计器新建表单。 步骤2:从"表单控件"工具栏中依次向表单添加两个命令按钮。在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-18。 表3-18 表单及控件属性设置 对 象 命令按钮(Command1) 命令按钮(Command1) 属 性 Caption Caption 属性值 问候 退出 步骤3:双击"问候"命令按钮,编写Click事件代码:MESSAGEBOX("您好")。 步骤4:双击"关闭"命令按钮,编写Click事件代码:THISFORM.RELEASE。 步骤5:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 【知识拓展】 MessageBox()函数的基本格式: MessageBox(信息文本 [,对话框类型][,标题文本]) 其中,"信息文本"是要在对话框中显示的信息;"对话框类型"是3个整数之和,用于指定对话框的样式,包 *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)对数据库"工资管理"中的"工资"表使用表单向导建立一个简单的表单,要求显示表中的所有的字段,使用"阴影式",按"部门号"降序排序,标题为"雇员工资浏览",并以文件名gzform保存。 (2)修改表testform,为其添加一个命令按钮,标题为"关闭"。 (3)把修改后的表单testform添加到项目myproj中。 (4)建立简单的菜单testmenu,要求有两个菜单项:"探索"和"退出"。其中"探索"菜单项有子菜单"科学探索"和"自然探索"。"退出"菜单项负责返回到系统菜单(在"命令"中编写语句),其他菜单项不做要求。 一、基本操作题 【审题分析】 本题考查了表单向导的使用;表单控件的属性设置;项目管理器的使用;菜单的建立。 本大题关键是在进行菜单设计时,要注意主菜单和子菜单的操作,编写"退出"菜单命令时,要熟记返回系统菜单的命令语句:SET SYSMENU TO DEFAULT 。 【操作步骤】 (1)①在命令窗口执行命令:OPEN DATABASE 工资管理,打开"工资管理"数据库环境。 ②执行【文件】→【新建】菜单命令,或单击"常用"工具栏的"新建"按钮,在弹出的"新建"对话框中选中"表单"选项,然后单击"向导"图标按钮,系统弹出"向导取向"对话框,选中"表单向导"项,单击"确定"按钮,启动表单向导。 ③在表单向导的"步骤1 - 字段选取"界面的"数据库和表"下选中"工资"表,将"可用字段"中的字段全部添加到"选定字段"中,单击"下一步"按钮。 ④在表单向导的"步骤2 - 选择表单样式"界面中选中"样式"列表中的"阴影式",再在"按钮类型"选项中选中"图片按钮",单击"下一步"按钮。 ⑤在表单向导的"步骤3 - 排序次序"界面中双击"可用的字段或索引标识"中的"部门号"字段到"选定字段"列表中,然后选中"降序"选项,单击"下一步"按钮。 ⑥在表单向导的"步骤4 - 完成"界面中的"请键入表单标题"下方文本框中输入"雇员工资浏览",单击"完成"按钮。 ⑦在"另存为"对话框的"保存表单为:"框中输入表单文件名gzform,单击"保存"按钮。 (2)①在命令窗口执行命令:MODIFY FORM TESTFORM,打开表单设计器修改表单。 ②通过"表单控件"工具栏向表单添加一个命令按钮,在"属性"面板中修改命令按钮的Caption属性值为"关闭",保存表单修改。 (3)①在命令窗口执行命令:MODIFY PROJECT MYPROJ,打开项目管理器。 ②在项目管理器中选中"文档"选项卡内的"表单"项,然后单击"添加"按钮,在弹出的"打开"对话框中双击testform表单文件,将其添加到项目管理器中。 (4)①在命令窗口执行命令:CREATE MENU TESTMENU,在弹出的"新建菜单"对话框中单击"菜单"图标按钮,打开菜单设计器。 ②在菜单设计器"菜单名称"列的文本框中依次输入"探索"和"退出"两个主菜单名,"结果"下拉框中选择为"子菜单",单击"探索"行的"创建"按钮进入下级菜单设计,在"菜单名称"列的第1、2行文本框中依次输入子菜单名"科学探索"和"自然探索"。 ③通过"菜单级"下拉框返回主菜单项设计界面,选择"退出"菜单命令的"结果"项为"命令",并输入命令语句:SET SYSMENU TO DEFAULT。 ④执行【菜单】→【生成】菜单命令,在弹出的Visual FoxPro对话框中单击"是"按钮,接着系统会弹出"生成菜单"对话框,单击"生成"按钮生成一个可执行的菜单文件。 ⑤在命令窗口执行命令:DO TESTMENU.MPR,运行菜单查看结果。 二、简单应用题(共2小题,每题各20分,共计40分) (1)使用报表向导建立一个简单报表。要求选择"工资"表中所有字段;记录不分组;报表样式为"帐务式"; 列数为"2";字段布局为"行";方向为"横向";排序字段为"部门号"(升序);报表标题为"雇员工资浏览";报表文件名为gzrepo。 (2)在考生文件夹下有一个名称为errform的表单文件,表单中的两个命令按钮的Click事件下的语句都有错误,其中一个按钮的名称有错误。请按如下要求进行修改,修改完成后保存所做的修改: ①将按钮"察看雇员工资"名称修改为"查看雇员工资"。 ②单击"查看雇员工资"命令按钮时,使用SELECT命令查询"工资"表中所有字段信息供用户浏览。 ③单击"退出"命令按钮时,关闭表单。 二、简单应用题 (1)【审题分析】 本题考查的是报表向导的使用,操作前可以将数据库环境打开,这样在报表向导的"步骤1 - 字段选取"界面中可直接看到作为报表数据源的表,之后按照向导提示完成题目所要求的设置即可。 【操作步骤】 步骤1:在命令窗口执行命令:OPEN DATABASE 工资管理,打开"工资管理"数据库环境。 步骤2:执行【文件】→【新建】菜单命令,或单击"常用"工具栏的"新建"按钮,在弹出的"新建"对话框中选中"报表"选项,然后单击"向导"图标按钮,系统弹出"向导取向"对话框,选中"报表向导"项,单击"确定"按钮,启动报表向导。 步骤3:在报表向导的"步骤1 - 字段选取"界面的"数据库和表"下选中"工资"表,将"可用字段"中的字段添加到"选定字段"中,单击"下一步"按钮。 步骤4:跳过"步骤2 - 分组记录"界面继续单击"下一步"按钮。 步骤5:在报表向导的"步骤3 - 选择报表样式"界面中选中"样式"列表中的"帐务式",单击"下一步"按钮。 步骤6:在报表向导的"步骤4 - 定义报表布局"界面中设置"列数"为"2","字段布局"为"行",选择"方向"为"横向",单击"下一步"按钮。 步骤7:在报表向导的"步骤5 - 排序记录"界面中双击"可用的字段或索引标识"中的"部门号"字段到"选定字段"列表中,单击"下一步"按钮。 步骤8:在报表向导的"步骤6 - 完成"界面的"报表标题"文本框中输入"雇员工资浏览",单击"完成"按钮,在"另存为"对话框的"保存报表为:"框中输入报表文件名gzrepo,单击"保存"按钮。 (2)【审题分析】 本题考查了表单及控件的常用属性和方法的设置;SQL的简单查询。 通过Caption属性可以设置表单或控件的标题属性;在进行SQL查询时,必须指定输出字段和查询数据源;用来释放和关闭表单的方法为Release 。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY FORM ERRFORM,打开表单设计器修改表单。 步骤2:选中"察看雇员信息"按钮,在属性面板中修改该按钮的Caption属性值为"查看雇员工资"。 步骤3:双击表单中的"查看雇员工资"按钮,看到该按钮的Click事件中代码如下: SELECT FORM 工资 ? 修改后的代码如下: SELECT * FROM 工资 && 原语句缺少输出字段,"*"表示输出表中所有字段 步骤4:双击表单中的"退出"按钮,看到该按钮的Click事件中代码如下: DELETE THISFORM ? 修改后的代码如下: RELEASE THISFORM && 释放表单的方法是RELEASE 步骤5:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 三、综合应用题(共1小题,计30分) 对考生文件夹中的"工资管理"数据库完成如下综合应用:设计一个文件名和表单名均为gyform的表单。表单的标题设为"雇员工资发放统计";表单中有一个组合框、两个文本框和一个命令按钮"退出"。 运行表单时,组合框中有"部门"表中的"部门号"可供选择,选择某个"部门号"以后,第一个文本框显示出该部门的"名称",第二个文本框显示应该发给该部门的"工资总额"。如图2-15所示。 图2-15 表单示例 单击"退出"按钮关闭表单。 三、综合应用题 【审题分析】 本大题主要考查了表单及控件的常用属性和方法的设置;SQL简单的计算查询。 对本题操作时,首先根据题意新建表单、添加控件并修改相关属性。注意组合框(Combo1)控件中用于设置数据源类型和数据源的属性分别为RowSourceType和RowSource,在指定数据源为表或表中字段时,应先把表添加到表单数据环境中;另外,通过组合框的DISPLAYVALUE属性可以指定当前显示在组合框中的数据。 SQL查询语句采用的是SQL简单的计算查询,注意本题应使用SUM()求和函数对"基本工资"字段进行求和,另外要注意的是查询条件的设置,应设置为"工资"表中"部门号"等于组合框中当前显示的内容,即ALLTRIM(部门号)==ALLTRIM(THIS.DISPLAYVALUE)。查询结果首先保存在数组中,然后再通过数组将值赋给文本框进行显示。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM GYFORM,打开表单设计器新建表单。 步骤2:右击表单选择【数据环境】快捷菜单命令,继续在表单数据环境中单击右键选择【添加】快捷菜单命令,在"添加表或视图"对话框中双击"部门"和"工资"表,将表添加到数据环境中。 步骤3:从"表单控件"工具栏中依次向表单添加一个组合框、两个文本框和一个命令按钮控件。在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-20。 表3-20 表单及控件属性设置 对 象 表单(Form1) 组合框(Combo1) 命令按钮(Command1) 属 性 Name Caption RowSourceType RowSource Caption 属性值 gyform 雇员工资发放统计 6 - 字段 部门.部门号 退出 步骤4:双击组合框(Combo1),编写组合框的InteractiveChange事件代码。 *****组合框(Combo1)的InteractiveChange事件代码***** SELECT 部门 LOCATE FOR ALLTRIM(部门号)=ALLTRIM(THIS.DISPLAYVALUE) THISFORM.TEXT1.VALUE=ALLTRIM(部门名) SELECT SUM(基本工资) FROM 工资; WHERE ALLTRIM(部门号)==ALLTRIM(THIS.DISPLAYVALUE); INTO ARRAY RESULT THISFORM.TEXT2.VALUE=RESULT 步骤5:双击"退出"命令按钮,编写按钮的Click事件代码:THISFORM.RELEASE。 步骤6:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)修改菜单testmenu,testmenu中的"文件"菜单项下有子菜单项"新建"、"打开"、"保存"和"关闭",请在"保存"和"关闭"之间加一条水平的分组线,并为"关闭"菜单项设置一条返回到系统菜单的命令(不可以使用"过程")。 (2)使用"调试器"单步调试考生文件夹下的程序dbprog.prg,调试结束后,将调试输出窗口中的内容保存到文本文件dbout.txt中。 (3)使用SQL定义表的语句新建一个与自由表"金牌榜"结构完全一样的自由表jinpaibk.dbf。请将该SQL语句存储在文件sqla.prg中,否则不得分。 (4)使用SQL语句向自由表jinpaibk.dbf中添加一条记录("10",3,5,8)。请将该SQL语句存储在文件sqlb.prg中,否则不得分。 一、基本操作题 【审题分析】 本题考查了菜单设计器的使用;调试器的使用;SQL查询语句;SQL数据插入语句。 在菜单设计过程中,注意插入的水平线同样是占一行菜单命令,水平线用"\-"符号表示;调试器主要用于发现程序中的错误,确定错误的位置并纠正错误,在调试输出窗口中可以显示程序运行时产生的结果;利用SQL 查询语句生成空表时,注意设置筛选条件为.F.,表示输出表中的任何记录,这样输出所得到的就是一个空记录的数据表;SQL插入语句只需直接套用命令格式即可完成本题表记录的插入。 【操作步骤】 (1)①在命令窗口执行命令:MODIFY MENU TESTMENU,打开菜单设计器,单击菜单设计器中的"编辑"按钮进入子菜单界面。 ②选中"关闭"子菜单命令,然后单击菜单设计器右边的"插入"命令按钮,插入一个菜单名称为"新菜单项"菜单行,修改菜单名称为:\-。 ③修改"关闭"菜单命令的"结果"项为"命令",并输入命令语句:SET SYSMENU TO DEFAULT。 ④执行【菜单】→【生成】菜单命令,在弹出的Visual FoxPro对话框中单击"是"按钮,接着系统会弹出"生成菜单"对话框,单击"生成"按钮生成一个可执行的菜单文件。 ⑤在命令窗口执行命令:DO TESTMENU.MPR,运行菜单查看结果。 (2)①执行【工具】→【调试器】菜单命令打开Visual FoxPro调试器,接着执行【文件】→【打开】菜单命令,在弹出的"添加"对话框中双击dbprog.prg文件,可以看到文件内容在调试器的"跟踪"窗口中显示。 ②单击"单步"图标按钮,可看到在"调试输出"窗口中有数据输出,右击"调试输出"窗口空白处,选择【另存为...】快捷菜单命令,然后在"另存为"对话框中以文件名dbout.txt保存输出内容(注意:保存文件时需要写上文件后缀名.txt)。 (3)①在命令窗口执行命令:MODIFY COMMAND SQLA,打开程序文件编辑器。 ②在编辑器中输入代码:SELECT * FROM 金牌榜 WHERE .F. INTO TABLE JINPAIBK。 ③在命令窗口执行命令:DO SQLA.PRG,执行程序文件。 (4)①在命令窗口执行命令:MODIFY COMMAND SQLB,打开程序文件编辑器。 ②在编辑器中输入代码:INSERT INTO JINPAIBK VALUE("10",3,5,8)。 ③在命令窗口执行命令:DO SQLB.PRG,执行程序文件。 【知识拓展】 调试器有跟踪窗口、监视窗口、布局窗口、调用堆栈窗口和调调试输出窗口。各窗口的功能见表3-21。 表3-21 调试器中各窗口的功能 窗口名称 功 能 跟踪窗口 跟踪窗口用于调试执行的程序文件 监视窗口 监视窗口可用于监视特定表达式在程序调试过程中的取值变化的情况 局部窗口 局部窗口用来显示模块程序(程序,过程和方法程序)中的内存变量(简单变量、数组、对象),显示它们的名称、当前取值和类型 调用堆栈窗口 调用堆栈窗口用于显示当前处于执行状态的程序、过程或方法程序。若正在执行的程序是一个子程序,则它的主程序的名称也显示在调用堆栈窗口中 调试输出窗口 在模块程序中可以添加一些DEBUGOUT命令,用于将它的值输送到调试输出窗口中 二、简单应用题(共2小题,每题各20分,共计40分) (1)使用SQL语句完成下面的操作:根据"国家"和"获奖牌情况"两个表统计每个国家获得的金牌数("名次"为"1"表示获得一块金牌),结果包括"国家名称"和"金牌数"两个字段,并且先按"金牌数"降序、再按"国家名称"降序排列存储到表result中。请将该SQL语句存储在文件sqlc.prg中,否则不得分。 (2)建立一个文件名和控件名均为jpform的表单,如图2-16所示。表单中包括一个列表框(List1)、一个选项组(Optiongroup1)和一个"关闭"命令按钮(Command1)。 图2-16 表单示例 相关控件属性设置要求:表单的标题为"查询奖牌",列表框的数据源使用SQL语句根据"国家"表显示"国家名称",选项组中有3个选项,标题分别为金牌(Option1)、银牌(Option2)和铜牌(Option3)。 二、简单应用题 (1)【审题分析】 本题考查了SQL的分组计算查询。由于本题需要对两个表进行操作,因此还需要对两个表进行连接。本题SQL语句的设置过程可参照以下步骤进行编写: 在SELECT短语中指定要输出的字段,包括通过COUNT()函数计算生成的新字段; 通过FROM...JOIN...ON...等短语指定查询数据源,并建立表间联系,查询源表为"国家"表和"获奖牌情况" ④将自由表"国家"和"获奖牌情况"加入项目文件"体育竞赛",然后将项目文件连编成应用程序文件"体育竞赛.app"。 三、综合应用题 【审题分析】 本大题主要考查了程序文件的建立与运行;SQL分组计算查询;连编应用程序等。 本题关键是SQL分组计算查询的设计,此处查询语句与"简单操作题"中1小题的设计比较类似,大家可参考"简单操作题"中的分析,此处不再多讲。 另外,用于预览报表的基本命令格式为:REPORT FORM <报表文件名> PREVIEW ;连编应用程序可通过单击项目管理器右侧的"连编"命令打开"连编选项"对话框完成。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY COMMAND SQLD,打开程序文件编辑器。 步骤2:在编辑器中输入如下程序代码并保存程序文件(以下程序是通过查询设计器生成): SELECT 国家.国家名称, COUNT(获奖牌情况.名次) AS 奖牌总数; FROM 国家 INNER JOIN 获奖牌情况 ; ON 国家.国家代码 = 获奖牌情况.国家代码; GROUP BY 国家.国家名称; ORDER BY 2 DESC, 国家.国家名称; INTO TABLE 临时奖牌榜.dbf 步骤3:在命令窗口执行命令:MODIFY PROJECT 体育竞赛,打开项目管理器。 步骤4:在项目管理器的"文档"选项卡中,展开"表单"项选中"体育"表单文件,然后单击项目管理器右边的"修改"命令按钮,打开表单设计器。 步骤5:双击"生成临时奖牌榜"命令按钮,编写按钮的Click事件代码:DO SQLD。 步骤6:双击"预览报表"命令按钮,编写按钮的Click事件代码:REPORT FORM TYREPORT PREVIEW。 步骤7:单击"常用"工具栏中的"运行"按钮查看结果,并单击"生成临时奖牌榜"命令按钮生成数据表文件。 步骤8:接着在项目管理器的"文档"选项卡中,选中"报表"项,然后单击项目管理器右边的"添加"命令按钮,在弹出的"添加"对话框中双击TYREPORT.FRX报表,将报表添加到项目管理器中。以同样的方法,在项目管理器的"数据"选项卡中,将自由表"国家"和"获奖牌情况"添加到项目中。 步骤9:单击项目管理器右侧的"连编"命令打开"连编选项"对话框,在对话框中选中"连编应用程序",单击"确定"按钮,在弹出的"另存为"对话框中直接单击"保存"按钮,以原文件名保存连编项目文件。 【知识拓展】 应用程序连编结果有两种文件形式:应用程序文件(.app)和可执行文件(.exe)。建立应用程序后,就可以运行它了。 .app应用程序必须在Visual FoxPro中运行,可以单击【程序】→【运行】菜单命令,选择需要运行的程序文件,也可以直接在命令窗口输入DO命令和应用程序名运行。 可执行文件的运行可以像运行应用程序的方法一样操作,直接在Windows中双击该.exe文件图标运行。 25 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)打开考生文件夹下的表单oneform(如图2-17所示),在"显示年份"命令按钮的Click事件中增加一条语句,使表单运行时单击该命令按钮的结果是在Text1文本框中显示当前系统日期的年份。 (2)打开考生文件夹下的表单twoform(如图2-18所示),为该表单新建一个方法test,该方法的功能是使"屏蔽"按钮变为不可用("屏蔽"按钮的Click事件中已经有一条语句负责调用test方法)。 图2-17 表单示例 图2-18 表单示例 (3)创建一个快速报表xkrepo,报表中包含"课程"表中的所有字段。 (4)使用SQL语句为"教师"表的"教师号"字段增加有效性规则:"教师号"的最左边三位字符是100,表达式 应为:LEFT(教师号,3)="100"。请将该SQL语句存储在zg.prg文件中,否则不得分。 一、基本操作题 【审题分析】 本大题考查了表单属性和方法的设置;快速报表的建立;SQL定义功能。 通过文本框的Value属性可以指定文本框中显示的数据,本题要注意所涉及的函数的使用,求年份的函数为YEAR(),求当前系统日期的函数为DATE()。 在Visual FoxPro中,用户可以通过"新建方法程序"对话框定义新方法名;然后定义该方法的功能代码;方法建立完毕后,用户可以像调用表单中其他方法一样调用新建的方法,通过设置控件的Enabled属性可以指定控件是否可用。 快速报表的建立需要在报表设计器中进行,在报表设计器中可以通过菜单命令启动建立快速报表的功能,建立快速报表前应先指定报表的数据源。 利用SQL定义功能的表结构修改语句: ALTER TABLE <表名> ALTER|ADD <字段名> SET CHECK <表达式> 可以设置表中指定字段的有效性规则。 【操作步骤】 (1)①在命令窗口执行命令:MODIFY FORM ONEFORM,打开表单设计器修改表单。 ②双击"显示年份"命令按钮,编写按钮的Click事件代码: THISFORM.TEXT1.VALUE=YEAR(DATE()) ③单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 (2)①在命令窗口执行命令:MODIFY FORM TWOFORM,打开表单设计器修改表单。 ②执行【表单】→【新建方法程序】菜单命令,在弹出的"新建方法程序"对话框的"名称"文本框中输入"test",单击"添加"按钮新增方法,然后关闭对话框。 ③在"属性"窗口中双击此方法,打开用户自定义过程代码框输入: THISFORM.COMMAND1.ENABLED=.F.。 ④单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 (3)①在命令窗口执行命令:USE 课程,打开"课程"表。 ②在命令窗口执行命令:CREATE REPORT XKREPO,打开报表设计器,然后执行【报表】→【快速报表】菜单命令,在弹出的"快速报表"对话框中单击"确定"按钮新建快速报表,预览和保存报表设计。 (4)①在命令窗口执行命令:MODIFY COMMAND ZG,打开程序文件编辑器。 ②在编辑器中输入代码:ALTER TABLE 教师 ALTER 教师号 SET CHECK LEFT(教师号,3)="100"。 ③在命令窗口执行命令:DO ZG.PRG,执行程序文件。 二、简单应用题(共2小题,每题各20分,共计40分) (1)打开数据库文件"教师课程",使用SQL语句建立一个视图gzview,该视图包括"系号"和(该系的)"平均工资"两个字段,并且按"平均工资"降序排列。请将该SQL语句存储在pjgz.prg文件中,否则不得分。 (2)打开考生文件夹下的表单koulin.scx(如图2-19所示),"登录"命令按钮Click事件中的程序功能是:当用户输入"用户名"和"密码"以后,单击"登录"按钮时,程序根据自由表"用户"表的内容进行操作,若在"用户"表中找不到相应的用户名,则提示"用户名错误",若用户名输入正确,而密码输入错误,则提示"密码错误"。在"登录"命令按钮Click事件中空行处添加适当的语句,使其能够正确运行。注意:不得做其他修改。 图2-19 表单示例 二、简单应用题 (1)【审题分析】 本题主要考查了利用SQL命令建立视图;SQL分组查询;SQL排序查询。 利用SQL命令建立视图的基本命令格式为:CREATE VIEW <视图名> AS 部分不太熟悉的考生,可以通过视图设计器生成。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY COMMAND PJGZ,打开程序文件编辑器编写视图定义代码。 步骤2:在编辑器中输入如下程序代码(以下SQL语句查询语句部分是通过视图设计器生成): OPEN DATABASE 教师课程 CREATE VIEW GZVIEW AS; SELECT 教师.系号, AVG(教师.工资) AS 平均工资; FROM 教师课程!教师; GROUP BY 教师.系号; ORDER BY 2 DESC 步骤3:在命令窗口执行命令:DO PJGZ,执行文件。 (2)【审题分析】 本题主要考查的是DO WHILE循环语句和IF条件语句的使用。本题程序的功能大致如下: 首先打开"用户"表,同时定义一个变量并赋值0。 然后通过DO WHILE语句开始判断记录指针是否到达文件文件末尾,如果没有,则开始执行后面的条件语句,第一次判断表中当前记录的"用户名"是否等于表单中第一个文本框中的值;如果等于,则再继续判断该记录的密码值是否等于表单中第二个文本框的值;如果不等于,则退出条件语句结构,执行SKIP命令,将指针指向"用户"表的下一条记录,当指针记录指向表末尾后还没找到相等的内容,则退出循环体,执行ENDDO后面的IF语句,提示"用户名错误"的信息,执行此条件语句的要求为flag=0。 当判断表中当前记录的"用户名"等于表单中第一个文本框中的值后,再判断用户名的密码值也等于表单中第二个文本框的值时,则显示欢迎框,退出条件语句结构,将变量flag的值赋为1,退出循环体,当退出循环体后,由于flag的值已设置为1,则不再执行ENDDO后面的IF语句,程序结束;如果密码不相等时,则提示"密码错误"的信息。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY FORM KOULIN,打开表单设计器修改表单。 步骤2:双击表单中的"登录"按钮,看到该按钮的Click事件中代码如下: USE 用户 GO TOP flag=0 && 添加一条语句 IF Alltrim(用户名)==Alltrim(Thisform.Text1.Value) IF Alltrim(密码)==Alltrim(Thisform.Text2.Value) WAIT "欢迎使用本考试软件" WINDOW TIMEOUT 2 WAIT "密码错误" WINDOW TIMEOUT 2 && 添加一条语句 flag=1 ENDIF && 添加一条语句 ENDDO && 添加一条语句 WAIT "用户名错误" WINDOW TIMEOUT 2 ENDIF ? 修改后的代码如下: USE 用户 GO TOP flag=0 DO WHILE NOT EOF() && 添加一条语句 IF Alltrim(用户名)==Alltrim(Thisform.Text1.Value) IF Alltrim(密码)==Alltrim(Thisform.Text2.Value) WAIT "欢迎使用本考试软件" WINDOW TIMEOUT 2 WAIT "密码错误" WINDOW TIMEOUT 2 ENDIF && 添加一条语句 flag=1 ENDIF SKIP && 添加一条语句 ENDDO IF flag=0 && 添加一条语句 WAIT "用户名错误" WINDOW TIMEOUT 2 ENDIF 步骤3:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 三、综合应用题(共1小题,计30分) ①建立一个如图2-20所示的表单名和文件名均为tcform的表单。表单的标题是"教师基本情况浏览",表单中有两个命令按钮(Command1和Command2)、两个复选框(Check1和Check2)和两个单选钮(Option1和Option2)。Command1和Command2的标题分别是"输出"和"退出",Check1和Check2的标题分别是"系名"和"工资",Option1和Option2的标题分别是"按职工号升序"和"按职工号降序"。 图2-20 表单示例 ②为"输出"命令按钮编写程序。程序的功能是根据表单运行时复选框指定的字段和单选钮指定的排序方式生成新的自由表。如果两个复选框都被选中,生成的自由表命名为both.dbf,输出字段包括"教师号"、"姓名"、"系名"、"课程号"和"工资";如果只有"系名"复选框被选中,生成的自由表命名为otherxm.dbf,输出字段包括"教师号"、"姓名"、"系名"和"课程号";如果只有"工资"复选框被选中,生成的自由表命名为othergz.dbf,输出字段包括"教师号"、"姓名"、"工资"和"课程号"。 ③运行表单,并分别执行如下操作: ? 选中两个复选框和"按职工号升序"单选钮,单击"输出"命令按钮。 ? 只选中"系名"复选框和"按职工号降序"单选钮,单击"输出"命令按钮。 ??? 只选中"工资"复选框和"按职工号降序"单选钮,单击"输出"命令按钮。 三、综合应用题 【审题分析】 本大题考查了表单及控件的常用属性和方法的设置;IF条件语句;SQL简单查询。 对本题操作时,首先根据题意新建表单、添加控件并修改相关属性。修改选项组单选按钮的标题属性值时,要注意选项组处于"编辑"状态,能单独选定选项组中的按钮,否则"属性"面板中不会出现Caption属性。 由于查询是根据选项组中单个选项和复选框进行操作的,因此需要判断选项组的选项按钮及复选框的状态来执行相应的功能。选项组中获得当前被选中单选项的返回值属性是Value,当选项组的Value值为1时表示被选定的是第一个单选项,Value值为2时表示被选定的是第二个单选项;而复选框被选中时,Value值为1,反之,Value值为0。 SQL程序设计部分考查的是SQL简单的排序查询,属于非常简单的查询语句。通过多个IF语句的嵌套,判断执行何种查询,这里关键是要分清各条件语句的条件设置。根据题意,本题需要设计3组共6种SQL查询语句。 ? 两个复选框同时被选中时,选项组中选中第一个单选按钮或指向第二个单选钮分别要执行的操作; ? 第一个复选框被选中时,选项组中选中第一个单选按钮或指向第二个单选钮分别要执行的操作; SELECT 教师号,姓名,工资,课程号 FROM 教师,院系; WHERE 教师.系号=院系.系号; ORDER BY 教师号; INTO TABLE OTHERGZ.DBF SELECT 教师号,姓名,工资,课程号 FROM 教师,院系; WHERE 教师.系号=院系.系号; ORDER BY 教师号 DESC; INTO TABLE OTHERGZ.DBF ENDIF ENDIF *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,按照题目要求生成3个数据表文件,将表单文件保存到考生文件夹下。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)将数据库"住宿管理"添加到项目myproj中。 (2)在数据库"住宿管理"中建立数据库表"竞赛",表结构为: 场次 字符型(20) 时间 日期时间型 评判 字符型(10) (3)设置表"竞赛"的字段"评判"的默认值为"张清发"。 (4)为数据库"住宿管理"中的zhusu表建立候选索引,索引名称为和索引表达式为"宿舍号"。 一、基本操作题 【审题分析】 本大题考查了项目管理器的基本操作,表的基本操作;表字段有效性规则的设置;表索引的建立。 在项目管理器中添加数据库可以在项目管理器中选中"数据库"项,然后通过项目管理器右侧的"添加"命令按钮完成。建立数据库表可以在数据库设计器中打开表设计器进行操作,而数据库设计器可以通过项目管理器打开。 建立表字段有效性规则和字段索引都需要在表设计器中建立。建立索引时,可以先在表设计器的"字段"选项卡中建立一个普通索引,然后在"索引"选项卡中修改该索引的相关内容。 【操作步骤】 (1)在命令窗口执行命令:MODIFY PROJECT MYPROJ,打开项目管理器。在项目管理器中选中"数据"选项卡内的"数据库"项,然后单击"添加"按钮,在弹出的"打开"对话框中双击"住宿管理"数据库文件,将数据库添加到项目管理器中。 (2)①在项目管理器中单击"数据库"前面的"+"号,依次展开"数据库"→"住宿管理"→"表",然后单击"新建"按钮,在弹出的"新建表"对话框中单击"新建表"图标按钮,然后在弹出的"创建"对话框的"输入表名"框中输入"竞赛",单击"保存"按钮打开表设计器。 ②根据题意,在表设计器中逐行输入每个字段的"字段名",并设置字段"类型"和"宽度",然后单击"确定"按钮,此时系统会弹出一个对话框询问"现在输入数据记录吗?",本题不需要录入数据,单击"否"按钮。 (3)在项目管理器中选中"竞赛"表,然后单击"修改"按钮,打开表设计器,选中"字段"选项卡中的"评判"字段,然后在"字段有效性"的"默认值"文本框中输入:"张清发",保存表结构修改。 (4)在项目管理器中选中zhusu表,然后单击"修改"按钮,打开表设计器,在表设计器的"字段"选项卡中选中"宿舍号"字段名,然后在"索引"列的下拉框选择"升序"排序方式,接着在"索引"选项卡中将"类型"设置为"主索引",单击"确定"按钮保存表结构修改。 二、简单应用题(共2小题,每题各20分,共计40分) (1)建立一个名为testmenu的菜单,菜单中有两个菜单项"运行"和"返回"。"运行"菜单项下还有两个子菜单"文件"和"工具"。在"退出"菜单项下创建一个过程,负责返回系统菜单,其他菜单项不做要求。 (2)根据数据库"住宿管理"中的student表和zhusu表建立一个查询,该查询包含student表中的字段"学号"和"姓名"及zhusu表中的字段"宿舍号"和"联系电话"。要求按"学号"升序排序,并将查询保存为zsquery。 二、简单应用题 (1)【审题分析】 本题主要考查了下拉菜单的设计,操作过程中注意主菜单和子菜单的操作,从子菜单返回主菜单设计界面,可以使用菜单设计器右侧的"菜单栏"下拉框,另外,编写"退出"菜单命令时,要熟记返回系统菜单的命令语句:SET SYSMENU TO DEFAULT ;最后要注意生成可执行菜单文件。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE MENU TESTMENU,在弹出的"新建菜单"对话框中单击"菜单"图标按钮,打开菜单设计器。 步骤2:在菜单设计器"菜单名称"列的文本框中依次输入"运行"和"返回"两个主菜单名,"结果"下拉框中选择为"子菜单",单击"运行"行的"创建"按钮进入下级菜单设计,在"菜单名称"列的第1、2行文本框中依次输入子菜单名"文件"和"工具"。 步骤3:通过"菜单级"下拉框返回主菜单项设计界面,选择"返回"菜单命令的"结果"项为"命令",并输入命令语句:SET SYSMENU TO DEFAULT。 步骤4:执行【菜单】→【生成】菜单命令,在弹出的Visual FoxPro对话框中单击"是"按钮,接着系统会弹出"生成菜单"对话框,单击"生成"按钮生成一个可执行的菜单文件。 步骤5:在命令窗口执行命令:DO TESTMENU.MPR,运行菜单查看结果。 (2)【审题分析】 本题考查的是在查询设计器中新建查询的操作。操作过程中要注意确认查询输出的字段来源于哪个数据表,两个表间的联系会在向查询设计器中添加数据表的时候自动建立;设置排序是在"排序依据"选项卡中进行,本题属于一个比较简单的查询操作。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE QUERY ZSQUERY,打开查询设计器。在"添加表或视图"对话框中单击"其他"按钮,然后在弹出的"打开"对话框中双击student表,将表添加到查询设计器中,以同样的方法将zhusu表也添加到查询设计器中。 步骤2:添加两个表后,系统弹出"连接条件"对话框,自动查找两个表中相匹配的字段进行连接,单击"确定"按钮设置两个表的联系。 步骤3:依次双击student表中的"学号"和"姓名"字段及zhusu表中的"宿舍号"和"联系电话"字段,添加到"字段"选项卡的"选定字段"列表中。 步骤4:在"排序依据"选项卡中双击"选定字段"中的"Student.学号"字段添加到"排序条件"列表中。 步骤5:最后单击"常用"工具栏中的"运行"按钮查看结果,将查询文件保存到考生文件夹下。 三、综合应用题(共1小题,计30分) 对考生文件夹下的"住宿管理"数据库设计一个文件名为cxform表单,表单标题为"住宿查询",表单中有三个文本框和两个命令按钮"查询"和"退出"。 如图2-21所示。运行表单时,在第一个文本框里输入某学生的学号(S1~S9),单击"查询"按钮实现如下功能: 图2-21 表单示例 在第二个文本框内会显示该学生的"姓名",在第三个文本框里会显示该学生宿舍的"联系电话"。 ? 如果输入的某个学生的学号对应的学生不存在,则在第二个文本框内显示"没有该学生记录",第三个文本框不显示内容。 ? 如果输入的某个学生的学号对应的学生存在,但在zhusu表中没有该学生宿舍对应的"联系电话"记录,则在第二个文本框内显示该生的"姓名",第三个文本框显示"该生宿舍暂无电话"。 ? 单击"退出"按钮关闭表单。 三、综合应用题 【审题分析】 本大题考查了表单及控件的常用属性和方法的设置;IF条件语句;Visual FoxPro记录查询语句。 本题的核心是利用Visual FoxPro查询记录的命令查询表中记录是否与指定的表单的文本框中的值相等,此时,通过IF条件语句依次判断相等和不相等的时候相应执行的操作。本题中可以嵌套使用IF语句,并利用FOUND()函数进行判断。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM CXFORM,打开表单设计器新建表单。 步骤2:右击表单选择【数据环境】快捷菜单命令,继续在表单数据环境中单击右键选择【添加】快捷菜单命令,在"添加表或视图"对话框中双击student和zhusu表,将表添加到数据环境中。 步骤3:从"表单控件"工具栏中依次向表单添加三个文本框和两个命令按钮。在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-24。 表3-24 表单及控件属性设置 对 象 表单(Form1) 命令按钮(Command1) 命令按钮(Command2) 属 性 Caption Caption Caption 属性值 住宿查询 查询 退出 步骤4:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *****"查询"按钮的Click事件代码***** SELECT STUDENT LOCATE FOR ALLTRIM(学号)=ALLTRIM(THISFORM.TEXT1.VALUE) IF FOUND() THISFORM.TEXT2.VALUE=ALLTRIM(姓名) SELECT ZHUSU LOCATE FOR ALLTRIM(STUDENT.宿舍号)=ALLTRIM(ZHUSU.宿舍号) IF FOUND() THISFORM.TEXT3.VALUE=ALLTRIM(ZHUSU.联系电话) THISFORM.TEXT3.VALUE="该生宿舍暂无电话" ENDIF THISFORM.TEXT2.VALUE="没有该学生记录" THISFORM.TEXT3.VALUE="" ENDIF THISFORM.REFRESH *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤5:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)建立名为"外汇管理"的项目文件。 (2)将数据库ratemanger添加到新建立的项目中。 (3)修改表单testform,将其中的命令按钮删除。 (4)把表单testform添加到项目"外汇管理"中。 一、基本操作题 【审题分析】 本题考查了项目管理器的基本操作;表单控件的基本操作。 新建项目可以通过菜单操作、工具栏操作或命令方式完成;向项目中添加文件可以在项目管理器的各对应的选项卡或"全部"选项卡中进行操作。 在表单设计器中可以对表单控件可以进行复制、粘贴、删除等操作,这些操作可以通过键盘功能键或菜单命令完成。 【操作步骤】 (1)在命令窗口执行命令:CREATE PROJECT 外汇管理,新建一个项目管理器。 (2)在项目管理器中选中"数据"选项卡内的"数据库"项,然后单击"添加"按钮,在弹出的"打开"对话框中双击ratemanger数据库文件,将数据库添加到项目管理器中。 (3)在命令窗口执行命令:MODIFY FORM TESTFORM,打开表单设计器修改表单。选中表单中的命令按钮,然后按下键盘的键(删除键),删除命令按钮控件。 (4)在项目管理器中选中"文档"选项卡内的"表单"项,然后单击"添加"按钮,在弹出的"打开"对话框中双击testform表单文件,将其添加到项目管理器中。 二、简单应用题(共2小题,每题各20分,共计40分) (1)在ratemanger数据库中查询rate_sl表中每个人所拥有的外币的总净赚(总净赚=持有数量*(现钞卖出价-现钞买入价)),查询结果中包括"姓名"和"总净赚"字段,按"总净赚"降序排序,将查询结果保存在一个新表temp1中。 (2)建立并执行名为hlform的表单,要求如下:为表单建立数据环境,并向其中添加表rate_hl;将表单标题改为"汇率浏览";编写命令按钮(标题为"查询")下的Click事件,使用SQL的select语句查询卖出买入差价在5个外币单位以上的外币的"外币代码","外币名称"和"差价",并将查询结果放入表temp2中。 二、简单应用题 (1)【审题分析】 本题主要考查了SQL分组与计算查询。关键是计算表达式的编写,用来分组的字段是哪一个。 本题中,用来计算求和的函数为SUM(),相关的表达式可以根据题目中给出的进行计算;对记录分组时,根据题意是求每个人所拥有的外币的总净赚,因此,分组字段应为"姓名";另外,对查询结果进行排序时,可以使用输出字段所在的列位置数字表示该对应的字段,例如本题中,可以利用ORDER BY 2表示按输出的第2个字段进行排序,即"总净赚"字段,通过ASC(升序)或DESC(降序)可以指定排序方式。 【操作步骤】 在命令窗口执行如下SQL命令语句完成查询: SELECT Rate_sl.姓名,; SUM(rate_sl.持有数量 * (rate_hl.现钞卖出价 - rate_hl.现钞买入价)) AS 总净赚; FROM ratemanger!rate_hl INNER JOIN ratemanger!rate_sl ; ON Rate_hl.外币代码 = Rate_sl.外币代码; GROUP BY Rate_sl.姓名; ORDER BY 2 DESC; INTO TABLE temp1.dbf (注意:以上SQL语句是根据查询文件生成的,大家也可以通过查询设计器完成本题操作。) (2)【审题分析】 本题考查了表单及控件的属性和方法的设置,SQL简单查询。 右击表单通过快捷菜单命令可以打开表单数据环境,在数据环境中可继续通过快捷菜单命令添加表;修改表单或控件的属性可以在"属性"面板中进行修改;进行SQL简单查询时,主要注意输出的新字段名的指定及查询筛选条件的设置,其中,新字段名可以通过AS短语生成,查询筛选条件在WHERE短语中指出。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM HLFORM,打开表单设计器新建表单。 步骤2:右击表单选择【数据环境】快捷菜单命令,继续在表单数据环境中单击右键选择【添加】快捷菜单命令,在"添加表或视图"对话框中双击rate_hl表,将表添加到数据环境中。 步骤3:从"表单控件"工具栏中向表单添加一个命令按钮。在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-25。 表3-25 表单及控件属性设置 对 象 表单(Form1) 命令按钮(Command1) *****"查看"按钮的Click事件代码***** DO CASE CASE THISFORM.OPTIONGROUP1.VALUE=1 THISFORM.GRID1.COLUMNCOUNT=3 THISFORM.GRID1.COLUMN1.HEADER1.CAPTION="姓名" THISFORM.GRID1.COLUMN2.HEADER1.CAPTION="外币代码" THISFORM.GRID1.COLUMN3.HEADER1.CAPTION="持有数量" THISFORM.GRID1.RECORDSOURCETYPE=4 THISFORM.GRID1.RECORDSOURCE="SELECT * FROM RATE_HL INTO CURSOR TEMP" CASE THISFORM.OPTIONGROUP1.VALUE=2 THISFORM.GRID1.COLUMNCOUNT=3 THISFORM.GRID1.COLUMN1.HEADER1.CAPTION="姓名" THISFORM.GRID1.COLUMN2.HEADER1.CAPTION="外币名称" THISFORM.GRID1.COLUMN3.HEADER1.CAPTION="持有数量" THISFORM.GRID1.RECORDSOURCETYPE=4 THISFORM.GRID1.RECORDSOURCE="; SELECT RATE_SL.姓名,RATE_HL.外币名称,RATE_SL.持有数量; FROM RATE_HL INNER JOIN RATE_SL; ON RATE_SL.外币代码=RATE_HL.外币代码; ORDER BY RATE_SL.姓名 INTO CURSOR TEMP" CASE THISFORM.OPTIONGROUP1.VALUE=3 THISFORM.GRID1.COLUMNCOUNT=2 THISFORM.GRID1.COLUMN1.HEADER1.CAPTION="姓名" THISFORM.GRID1.COLUMN2.HEADER1.CAPTION="总资产" THISFORM.GRID1.RECORDSOURCETYPE=4 THISFORM.GRID1.RECORDSOURCE="; SELECT RATE_SL.姓名,SUM(RATE_HL.基准价*RATE_SL.持有数量)AS 总资产; FROM RATE_HL INNER JOIN RATE_SL; ON RATE_SL.外币代码=RATE_HL.外币代码; GROUP BY RATE_SL.姓名; ORDER BY RATE_SL.姓名 INTO CURSOR TEMP" ENDCASE THISFORM.REFRESH *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)为数据库SDB中的"积分"表增加字段"地址",类型和宽度为"字符型(30)"。 (2)为"积分"表的字段"积分"设置有效性规则,要求积分值大于"1000(含1000)",否则提示信息"积分值过小"。 (3)设置"积分"表的字段"地址"的默认值为"北京市"。 (4)为"积分"表插入一条记录(王来地,2000,连想集团,北京市海淀区),并用SELECT语句查询"积分"表中的"积分"在"1500以上(含1500)"的记录,将SQL语句存入mysql.txt中。 一、基本操作题 【审题分析】 本题考查了表的基本操作;字段有效性规则的设置;SQL插入语句;SQL简单查询。 修改表结构可以在表设计器中完成,打开表设计的方法有多种,可在数据库设计器中打开,也可以直接通过命令打开;同样,设置字段有效性规则也需要在表设计器中完成;对于SQL非常熟悉的考生,也可以直接通过SQL语句完成以上操作。 SQL插入语句功能属于SQL的数据操作功能,本题可直接套用SQL INSERT常用语法即可完成。 【操作步骤】 (1)①在命令窗口执行命令:MODIFY DATABASE SDB,打开SDB数据库设计器。 ②右击数据库设计器中的"积分"表,选择【修改】快捷菜单命令,打开表设计器,在表设计"字段"选项卡的"字段名"列的最后一个空白文本框中输入字段名"地址",在"类型"下拉框中选择"字符型",在"宽度"文本框中输入"30",保存表结构修改。 (2)继续打开"积分"表的设计器,选中"积分"字段,然后在"字段有效性"的"规则"文本框中输入:积分>=1000,在"信息"框中输入:"积分值过小"。 (3)接上小题操作,在"积分"表设计器中选中"地址"字段,然后在"字段有效性"的"默认值"文本框中输入:"北京市"。 (4)①在命令窗口执行命令:MODIFY FILE MYSQL,打开文本文件编辑器。 ②在编辑器中输入如下程序代码: INSERT INTO 积分 VALUES("王来地",2000,"连想集团","北京市海淀区") SELECT * FROM 积分 WHERE 积分 >= 1500 ③在命令窗口执行命令:DO MYSQL.TXT,执行文件。 二、简单应用题(共2小题,每题各20分,共计40分) (1)在"职工值班"数据库中建立视图myview,并将定义视图的代码放到考生文件夹下的zbfvw.txt中。具体要求是:视图中的数据取自表zhiban和表yuangong,按"总加班费"排序(升序)。其中字段"总加班费"是每个人的"昼值班天数"*"昼班加班费"加上"夜值班天数"*"夜班加班费"得来的,视图最后包含"职工编号"、"姓名"和"总加班费"3个字段。 (2)设计文件名为login.scx的表单,表单含有两个标签"用户名"(label1)和"密码"(label2)、两个文本框和两个命令按钮"登录"(Command1)和"取消"(Command2)。表单功能要求如下: 当用户输入用户名和口令并单击"登录"按钮后,检验其输入的用户名和口令是否匹配(假定用户名为"AAA",密码为"123")。如正确,则显示"欢迎使用本考试软件"字样并关闭表单:若不正确,则显示"用户名或口令错误,请重新输入"字样,如果连续三次输入不正确,则显示"错误输入次数达三次,关闭表单"字样并关闭表单。 单击"取消"按钮关闭表单。 二、简单应用题 (1)【审题分析】 本题考查利用SQL命令定义视图。关键是视图中"总加班费"字段的生成,要注意该表达式中所涉及的各字段均来自哪个表,本题虽然涉及两个表中的数据,但不需要对两个表进行连接;另外,在对结果进行排序时,可以使用输出字段所在的列位置数字表示该对应的字段。 【操作步骤】 步骤1:在命令窗口执行命令:OPEN DATABASE 职工值班,打开数据库环境。 步骤2:在命令窗口执行命令:MODIFY FILE ZBFVW,打开文本文件编辑器编写视图定义代码。 步骤3:在编辑器中输入如下程序代码: CREATE VIEW MYVIEW AS; SELECT Yuangong.职工编号, Yuangong.姓名,; (Yuangong.夜值班天数 * Zhiban.夜班加班费 +; Yuangong.昼值班天数 * Zhiban.昼班加班费) AS 总加班费; FROM 职工值班!yuangong, 职工值班!zhiban; ORDER BY 3 步骤4:在命令窗口执行命令:DO ZBFVW.TXT,执行文件。 (大家也可以在视图设计器中建立好视图,然后将定义视图的代码复制到命令文件中,从视图设计器中复制出来的代码仅包括SQL语句部分。) (2)【审题分析】 本题考查了表单常用控件属性、事件和方法的设置;IF条件语句。 本题的关键是IF条件语句的程序设计部分,大致思路可按照如下进行: 首先在表单中定义一个公共变量,并赋值为0,用来统计后面输入用户名或密码时错误次数的统计。 接着在命令按钮中编写程序代码。开始是判断表单两个文本框中的数据是否与指定的数据相同,如果相同,则弹出欢迎提示并释放表单;如果不相同时,则转入条件语句的另一个判断中,判断内容如下展开。 当发生错误时,公共变量的值累计加1,然后嵌入一个IF条件语句,如果公共变量的累计数值达到3,则提示错误输入超过3次并关闭表单,如果没有累计达到3次,则转入该IF条件语句的另一个判断中,提示用户名或密码错误,再返回表单中继续输入。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM LOGIN,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加两个标签、两个文本框及两个命令按钮控件。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-27。 表3-27 表单及控件属性设置 对 象 标签(Label1) 标签(Labe2) 命令按钮(Command1) 命令按钮(Command2) 属 性 Caption Caption Caption Caption 属性值 用户名 密码 登录 取消 步骤3:双击表单,在表单的Load事件中编写如下代码: *****表单(Form1)的Load事件代码***** public flat flat=0 步骤4:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *****"登录"按钮的Click事件代码***** IF THISFORM.TEXT1.VALUE="AAA" AND THISFORM.TEXT2.VALUE="123" WAIT"欢迎使用本考试软件" WINDOWS TIMEOUT 1 THISFORM.RELEASE FLAT=FLAT+1 IF FLAT=3 WAIT"错误输入次数达三次,关闭表单" WINDOWS TIMEOUT 1 THISFORM.RELEASE WAIT"用户名或口令错误,请重新输入" WINDOWS TIMEOUT 1 THISFORM.TEXT1.VALUE="" THISFORM.TEXT2.VALUE="" ENDIF ENDIF *****"取消"按钮的Click事件代码***** THISFORM.RELEASE 步骤5:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 三、综合应用题(共1小题,计30分) 设计文件名为avgform的表单。表单的标题设为"学生平均成绩查询"。表单中有一个组合框、一个文本框和 两个命令按钮,命令按钮的标题分别为"查询"和"退出"。 运行表单时,组合框中有"学号"可供选择,在组合框中选择"学号"后,如果单击"查询"命令按钮,则文本框显示出该生的考试平均成绩。 图2-23 表单示例 单击"退出"按钮关闭表单。如图2-23所示。 三、综合应用题 【审题分析】 本大题主要考查了表单及控件的常用属性和方法的设置;SQL分组与计算查询。 对本题操作时,首先根据题意新建表单、添加控件并修改相关属性。注意组合框(Combo1)控件中用于设置数据源类型和数据源的属性分别为RowSourceType和RowSource,在指定数据源为表或表中字段时,应先把表添加到表单数据环境中;另外,通过组合框的DISPLAYVALUE属性可以指定当前显示在组合框中的数据。 SQL查询语句采用的是SQL分组与计算查询,注意本题应使用AVG()求平均值函数对"成绩"字段求平均值,另外要注意的是查询条件的设置,应设置"学号"等于组合框中当前显示的内容,即ALLTRIM(学号)=ALLTRIM(THISFORM.COMBO1.DISPLAYVALUE),由于计算的是每个学生的平均成绩,因此分组字段应是"学号"。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM AVGFORM,打开表单设计器新建表单。 步骤2:右击表单选择【数据环境】快捷菜单命令,继续在表单数据环境中单击右键选择【添加】快捷菜单命令,在"添加表或视图"对话框中双击student和score表,将表添加到数据环境中。 步骤3:从"表单控件"工具栏中依次向表单添加一个组合框、一个文本框和两个命令按钮控件。在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-28。 表3-28 表单及控件属性设置 对 象 表单 (Form1) 组合框 (Combo1) 命令按钮(Command1) 命令按钮(Command2) 属 性 Caption RowSourceType RowSource Caption Caption 属性值 学生平均成绩查询 6 - 字段 student.学号 查询 退出 步骤4:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *****"查询"按钮的Click事件代码***** SELECT AVG(成绩) FROM SCORE; WHERE ALLTRIM(学号)=ALLTRIM(THISFORM.COMBO1.DISPLAYVALUE); GROUP BY 学号; INTO ARRAY PJF THISFORM.TEXT1.VALUE=PJF *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤5:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)打开"客户"表,给"性别"字段增加约束:性别只能为"男"或"女",默认值为:"男",表达式为: 性别 $ "男女"。 (2)为"住宿"表创建一个主索引,主索引的索引名为skey,索引表达式为:"客房号+客户号"。 (3)根据各表的名称、字段名的含义和存储的内容建立表之间的永久联系,并根据要求建立相应的普通索引,索引名与建立索引的字段名相同,升序排序。 (4)使用SQL的SELECT语句查询"客户"表中性别为"女"的"客户号"、"身份证号"、"客户名"和"工作单位"字段值,并将结果存储到表result.dbf。请将该语句存储到名为xbsql.prg的文件中。 一、基本操作题 本题操作比较简单,设置筛选条件在"筛选"选项卡中进行,设置排序是在"排序依据"选项卡中进行,指定查询输出时,通过【查询去向】菜单命令打开"查询去向"对话框指定。 【操作步骤】 步骤1:在命令窗口执行命令:OPEN DATABASE 宾馆住宿,打开"宾馆住宿"数据库环境。 步骤2:在命令窗口执行命令:CREATE QUERY FJCX,打开查询设计器,将考生文件夹下的"客房"和"房价"表添加到查询设计器中。 步骤3:添加两个表后,系统弹出"连接条件"对话框,自动查找两个表中相匹配的字段进行连接,单击"确定"按钮设置两个表的联系。 步骤4:依次双击"客房"表中的"客房号"、"等级号"字段和"房价"表中的"等级名"、"房价"字段添加到"字段"选项卡的"选定字段"列表中。 步骤5:在"筛选"选项卡中选择"字段名"为"房价.房价",在"条件"为">=",在"实例"框中输入"400"。 步骤6:在"排序依据"选项卡内双击"选定字段"列表框中的"客房.等级号"字段,将字段添加到"排序条件"列表框中。 步骤7:执行【查询】→【查询去向】菜单命令,在弹出的"查询去向"对话框中单击"表"图标按钮,接着在"表名"中输入文件名fjtable,单击"确定"按钮。 步骤8:最后单击"常用"工具栏中的"运行"按钮查看结果,将查询文件保存到考生文件夹下。 (2)【审题分析】 本题主要考查的是SQL嵌套查询。该程序的功能如下: 通过子查询查找客户名是"赵云文"的客户入住日期,该查询结果可看作是一个集合,然后在主查询中查找客户入住日期在这个集合中(即"赵云文"的入住日期)的客户的相关信息。 根据题意,提供的程序段中第3、5、7、8行错误,依次判断各行语句可以看出: 第3行是对两个表进行连接的语句,格式一般为FROM ... JOIN ... ON ...,其中ON短语后面接的是两个表的连接条件,本行中缺少该语句。 第5行中SELECT语句后面应指定输出的字段,本行缺少指定输出的字段。 第7行中仅指定了筛选条件,并没有指定两个表的连接条件(此处涉及两个表连接操作,因此要指定连接条件),本行应补充该连接条件且通过AND短语将其与筛选条件连接起来。 第8行属于固定语法错误,将数据输出到数据表中,应使用INTO TABLE短语,而不是TO TABLE。 【操作步骤】 步骤1:在命令窗口执行命令:MODIFY COMMAND MODIERR.PRG,打开modierr程序文件,文件中的命令代码如下: OPEN DATABASE 宾馆住宿 SELECT 客户.客户号,身份证号,客户名,工作单位; FROM 客户 JOIN 住宿; WHERE 入住日期 IN; ( SELECT ; FROM 客户,住宿; WHERE 客户名="赵云文"); TO TABLE rqtable ? 修改程序中的错误行,修改后的程序如下: OPEN DATABASE 宾馆住宿 SELECT 客户.客户号,身份证号,客户名,工作单位; FROM 客户 JOIN 住宿 ON 客户.客户号=住宿.客户号; WHERE 入住日期 IN; ( SELECT 入住日期; FROM 客户,住宿; WHERE 客户.客户号=住宿.客户号 AND 客户名="赵云文"); INTO TABLE rqtable 步骤2:保存文件修改,在命令窗口执行命令:DO MODIERR.PRG,执行程序文件。 【知识拓展】 关于两个表连接一般有两种书写格式,两种格式所得到的结果都是一样的,具体如下: SELECT <字段名列表> FROM <表1> JOIN <表2> ON <连接条件> SELECT <字段名列表> FROM <表1> , <表2> WHERE <连接条件> 在格式1中,如果要继续接查询筛选条件,必须将筛选条件通过WHERE短语指出;而格式2中,如果接查询筛选条件,则需要使用AND短语将筛选条件和连接条件一并放到WHERE短语后面。 三、综合应用题(共1小题,计30分) 在考生文件夹下,先打开"宾馆住宿"数据库,然后创建一个文件名为formtest的表单,表单标题为"客户退房记录查询"。 该表单完成如下综合应用: 在该表单中设计一个标签(Label1)、一个文本框(Text1)和两个命令按钮。 标签的标题文本为"退房日期大于或等于"。 文本框用于输入退房日期,如图2-24所示。 两个命令按钮的功能如下: ①"查询"按钮(Command1):在该按钮的Click事件中使用SQL的SELECT命令查询退房日期大于或等于输入日期的"客户号"、"身份证号"、"客户名"、"工作单位"和该客户入住的"客房号"、"等级名"、"房价"信息,查询结果按"房价"降序排序,并将查询结果存储到表tftable.dbf中。 图2-24 表单示例 ②"退出"按钮(Command2):其功能是关闭和释放表单。 表单设计完成后,运行该表单,查询退房日期大于或等于2007-11-15的顾客信息。 三、综合应用题 【审题分析】 本大题主要考查了表单及控件的常用属性和方法的设置;SQL超连接查询。 本题的关键是建立超连接时,每两个表之间进行连接的字段是哪个,另外,还要判断指定输出的字段来自哪个表。设计SQL语句前,考生可以先打开数据库设计器查看各表中的字段,判断输出哪个表中的字段及进行连接的字段是哪几个。 如果对于SQL不熟悉的考生,则可借助查询设计器完成本题的SQL查询,需要注意的是,在设置筛选条件时,由于文本框中显示的是字符型数据,而"退房日期"是日期型数据,因此,要将文本框的数据类型通过CTOD()函数转换成日期型函数,通过VALUE属性可以获得文本框中的数据。 【操作步骤】 步骤1:在命令窗口执行命令:CREATE FORM FORMTEST,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加一个标签、一个文本框和两个命令按钮。 步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-29。 表3-29 表单及控件属性设置 对 象 表单(Form1) 标签(Label1) 命令按钮(Command1) 命令按钮(Command2) 属 性 Caption Caption Caption Caption 属性值 客户退房记录查询 退房日期大于或等于 查询 退出 步骤3:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *****"查询"按钮的Click事件代码***** SET DATE TO YMD && 注意设置日期显示格式为YY/MM/DD SELECT 客户.客户号, 客户.身份证号, 客户.客户名, 客户.工作单位, 住宿.客房号,; 房价.等级名, 房价.房价; FROM 宾馆住宿!客户 INNER JOIN 宾馆住宿!住宿; INNER JOIN 宾馆住宿!客房; INNER JOIN 宾馆住宿!房价 ; ON 房价.等级号 = 客房.等级号 ; ON 客房.客房号 = 住宿.客房号 ; ON 客户.客户号 = 住宿.客户号; WHERE 住宿.退房日期 >= CTOD(THISFORM.TEXT1.VALUE); ORDER BY 房价.房价 DESC; INTO TABLE tftable.dbf *****"退出"按钮的Click事件代码***** THISFORM.RELEASE 步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。 一、基本操作题(共4题,第1、2题各7分,第3、4题各8分,共计30分) (1)打开表单formone,通过设置控件的相关属性,使得表单运行时的开始焦点在"开始"命令按钮,并且接下来的焦点的移动顺序是"结束"和"关闭"。 (2)打开表单formtwo,使用"布局"工具栏的"底边对齐"按钮将表单中的四个命令按钮控件的底边对齐。 (3)使用SQL语句创建一个名为
本文档为【全国计算机等级考试VFP上机题库及答案(100套精选)2013最新版】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_117477
暂无简介~
格式:doc
大小:388KB
软件:Word
页数:0
分类:
上传时间:2017-06-11
浏览量:25