领用数量 领用日期 N D 3 8 SELECT 物资代号,物资名称,领用部门, AS 领用数量; FROM wzb,lyb;
WHERE wzb.物资代号=lyb.物资代号 AND ; GROUP BY 1,3; ORDER BY 3,1
17.计算机等级考试中心的“考务管理”软件中有3个表文件,其基本结构如下所述:
考试语种表(tyz.dbf) 学校代号表(txx.dbf)
字段名 yzdh yzmc dj 类型 C C C 长度 2 16 4 含义 语种代号 语种名称 等级 字段名 xxdh xxmc 类型 C C 长度 3 30 含义 学校代号 学校名称 考生报名表(twork.dbf)
字段名 zkz xm 类型 C C 长度 10 8 含义 准考证号 姓名 其中,考生的准考证号(zkz)的第1~3位为考生所在学校的学校代号,第4~5位为考生所报考的语种代号。下列程序段用于统计各个学校的报名人数及各个语种的报名人数,结果数据保存在表tcount(该表浏览结果如下所示)。
SELECT LEFT(zkz,3) AS xxdh, COUNT(*) AS 报名人数 FROM twork;
GROUP BY 1 INTO CURSOR ctwork &&用于统计各个学校的报名人数 SELECT ctwork.xxdh, txx.xxmc, 报名人数 FORM ctwork LEFT OUTER JOIN txx;
ON ctwork.xxdh=txx.xxdh ORDER BY 1 INTO TABLE tcount
&&生成统计表tcount
SELECT tyz SCAN
nFIELD=” 语种”+yzdh
ALLTER TABLE tcount ADD &nFIELD n(5) &&修改tount表:增加各语种字段 SELECT LEFT(zkz,3) AS xxdh, SUBSTR(zkz,4,2) AS yzdh, COUNT(*) AS rs;
FORM twork GROUP BY 1,2 ORDER BY 1,2;
INTO CURSOR cttt &&各学校各语种人数统计 SELECT cttt
SCAN &&该循环用于将cttt的数据填入tount表
myz=”语种”+yzdh LOCATE FOR LEFT(学校,3)=ctt.xxdh
16
REPLACE WITH CTT->rs SELECT cttt ENDSCAN
18. 学生管理数据库中有两张表:学生表和成绩表,表结构分别如下:
学生表(xs.dbf) 学号 姓名 性别 出生日期 xh xm xb csrq c,8 c,8 c,2 d 学号 课程号 课程名 成绩 成绩表(cj.dbf) xh kch kcm cj c,8 c,2 c,20 n,3 基于XS表和CJ表创建视图XSZCJ(学生总成绩),有一个按班级号查该班每一个学生总成绩的表单如下:
班级号由学号的前6位组成,表单中表格控件的RecordSource属性值为视图XSZCJ,该视图对应的SELECT-SQL命令应为:
SELECT xs.xh,xs.xm,SUM(cj.cj) AS zcj; FROM ; WHERE xs.xh=cj.xh ; GROUP BY __ __
表格控件的第三列(“总成绩”)列控件的ControlSource属性值应设置为__ __,表单中组合框对象的RowSourceType属性值为3-SQL,RowSource属性值为:
SELECT DISTINCT SUBSTR(xs.xh,1,6)FROM xs INTO CURS xtmp
要求当组合框的内容发生变化时,表格中只显示相应班级的学生总成绩,则组合框的InterActivateChange事件的代码应为:
LOCAL Lsxh
Lsxh=ALLT(this.Value)
SET FILTER TO SUBSTR(xszcj.xh,1,6)=__ _ __
Thisform.Refresh
19.在某教学管理数据库中有一个学生表(xs.dbf),其表结构及其所含的记录数据如表1所示。
表1 学生表的表结构及其记录数据
字段含义 数据类型,宽度
学号 C,6 姓名 C,6 17
性别 C,2 日期 D 字段名 xh 010201 010203 010202 010301 010402 010302 010401 xm 王 玲 李 勇 张 山 刘 芳 王勇敢 李园园 张 勇 xb 女 男 男 女 男 女 男 csrq 06/02/82 06/09/82 02/08/83 09/08/83 02/28/82 12/12/81 10/09/82 记 录 数 据 对于下列SELECT-SQL语句,其查询结果含有 (6) 条记录。 SELECT * FROM xs WHERE SUBSTR(xh ,5, 2)= ‘01’
若学生表已在当前工作区打开,运行下列程序后在VFP窗口显示的结果为 (7) 。
【程序清单】
SET TALK OFF n =0 CLEAR GO TOP
DO WHILE !EOF()
IF AT( “勇”,xm)>0 n = n + 1 ENDIF SKIP
ENDDO ?n
20.已知学生(xs)表中含学号(xh)、姓名(xm)、性别(xb)、专业(zy)字段。下列SQL命令用来查询每个专业的男、女生人数。
SELECT zy, SUM(IIF(xb = ?男? ,1, (9) )) AS男生人数,; SUM(IIF(xb = “女”,1, (9) )) AS女生人数; FROM xs; GROUP BY 1
21.在SELECT-SQL命令中,UNION子句的功能是把一条SELECT语句的查询结果同另一条SELECT语句的查询结果组合起来。如果某SELECT-SQT命令中使用了UNION子句将两个SELECT语句联合起来,且需要对最终查询结果排序,则需要使用 (19) 个ORDER BY子句。
22.教学管理数据库中含有课程表(kc)及成绩表(cj)。课程表中有以下字段:课程代号(kcdh),课程名(kcm),学分(xf);成绩表中有以下字段:学号(xh),课程代号(kcdh), 成绩(cj)。成绩表记录了全体学生所学各门课程的成绩。现根据上述两表查询总学分已超过120的所有学生情况(要求输出:学号,平均分,总学分,并按学号的升序排列),可使用下述命令。(注:成绩小于60分的学分设置为0)
SELECT xh AS学号,AVG(cj.cj) AS平均分, (20) AS总学分; FROM kc INNER JOIN cj ON kc.kcdh = cj.kcdh; GROUP BY xh; HAVING 总学分>=120; ORDER BY xh
18
第六章练习题
1.下列几组控件中,均可直接添加到表单中的是 。 A.命令按钮组、选项按钮、文本框 B.页面、页框、表格 C.命令按钮、选项按钮组、列表框 D.页面、选项按钮组、组合框
2.下列类的特性中, 体现并扩充了面向对象程序设计方法的共享机制。 A.抽象性 B.多态性 C.封装性 D.继承性 3.在VFP中,用户不能自定义 。
A.对象的属性 B.对象的方法 C.对象的事件 D.对象所基于的类
4.基类的事件集合是固定的,不能进行扩充。基类的最小事件集包括 事件、Destroy事件、Error事件。
5.对象根据所基于的类的性质,可以分为 和控件对象,其中前者可以作为其他对象的父对象。 6.引用当前表单集的关键字是 。
7.事件是对象能够识别的一个动作,方法是对象能够执行的一组操作。对于SetFocus和GotFous, 是方法, 是事件
8.采用面向对象的程序设计方法设计的应用程序,其功能的实现是由 驱动的。 9.类(Class)是面向对象程序设计的核心。类具有许多特点,如抽象性、封装性、继承性等。其中 (2) 是指包含和隐藏对象信息(如内部数据结构和代码)的能力,使操作对象的内部复杂性与应用程序隔离开来。
10.在某类库中,基于CommandButton基类新建了一个子类cmd,基于cmd类又派生了cmdClose子类。若利用cmdClose类为一个表单添加控件cmdCloseA,则cmdCloseA的BaseClass属性值为 (15) 。
第七、八章练习题
1.下列几组控件中,均为容器类的是 。 A.表单集、列、组合框 B.页框、页面、表格
C.列表框、列、下拉列表框 D.表单、命令按钮组、OLE控件
2.如果某表单中有一个命令按钮组,且已分别为命令按钮组和命令按钮组中的各个命令按钮设置了Click事件代码,则在表单的运行过程中单击某命令按钮时,系统执行的代码是 。 A. 该命令按钮的Click事件代码 B. 该命令按钮组的Click事件代码
C. 先该命令按钮组的Click事件代码,后该命令按钮的Click事件代码 D. 先该命令按钮的Click事件代码,后该命令按钮组的Click事件代码
3.对于表单来说,用户可以设置其ShowWindow属性。该属性的取值可以为 。 A. 在屏幕中或在顶层表单中或作为顶层表单 B. 普通或最大化或最小化 C. 无模式或模式 D. 平面或三维
4.数据环境泛指定义表单、表单集或报表时使用的数据源,数据环境中只能包括 。 A.表、视图和关系 B.表 C. 表和关系 D.表和视图 5.在下列有关表单及其控件的叙述中,错误的是 28 。
A.从容器层次来看,表单是最高层的容器类,它不可能成为其他对象的集成部分 B.表格控件包含列控件,而列控件本身又是一个容器类控件 C.页框控件的PageCount属性值可以为0
19
D.表格控件可以添加到表单中,但不可以添加到工具栏中
6.对于许多控件来说,可以通过ControlSource属性与数据绑定。在下列VFP对象中,无ControlSource属性的是 29 。
A.标签(Label) B。复选框(CheckBox) C.选项按钮组(OptionGroup) D。列表框(ListBox) 7.要使表单中各个控制的TollTipText属性的值在表单运行中起作用,必须设置表单的ShowTips属性的值为 。
8.复选框控件可以有三种状态,起Value属性值分别为.F.、.T.或 。
9.对于计时器控件,如果将Interval属性值设置为100,则Timer事件发生的时间间隔为 秒。 10.下列几组控件中,均具有ControlSource属性的是 。
11.标签控件是用以显示文本的图形控件。标签控件的主要属性有:Caption属性、BackStyle属性、AutoSize属性以及WordWrap属性等,其中WordWrap属性的功能是 。
12.编辑框的用途与文本框相似,但编辑框除了可以编辑文本框能编辑的字段类型以外,还可以编辑 型字段。
13.若从表单的数据环境中,将一个逻辑字段拖放到表单中,则在表单中添加的控件个数和控件类型分别是 。
14.形状控件的Curvature属性决定形状控件显示什么样的图形,它的取值范围是0~99。当该属性的值为 时,用来创建矩形。
15.列表框对象的数据源由RowSource属性和 属性决定。而要将列表框中的值与表中的某个字段绑定,则应该利用 属性。
16.计时器是用来处理复发事件的控件。该控件正常工作的三要素是:Timer事件、Enabled属性和 属性。
17.某表单中含有一个命令按钮。要求运行表单时,单击该命令按钮可以调用表单的Init事件中的全部程序代码,则需要在命令按钮的Click事件中写入语句 。
18.文本框的 属性设置为“*”时,用户键入的字符在文本框内显示为“*”,但属性Value中仍保存在键入的字符串。
19.在某表单运行时,表单上某个命令按钮标题显示为“取消(X)”,则该命令按钮的Capion属性值为 。
20.设某表单上形状控件的Heigh属性与Width属性值相等,则Curvature属性值为 时,该形状为圆。
21.某表单Form1上有一个命令按钮组Cmg,其中有两个命令按钮(分别为Cmd1和Cmd2),要在Cmd1的Click事件代码中设置Cmd2不可用,其代码为: THIS. .Cmd2.Enabled=.F.
22.设表单集FrmSet1中含有若干张表单,将奇数表单的背景颜色设为淡蓝色,偶数表单的背景颜色设为系统省略值(即保持原定义的)
23.设表单Form1中包含1个文本框(Text1)与1个列表框控件(List1)。其中,List1的RowSourceType属性值为1,RowSource属性值为:数学、语文、外语、计算机、政治。该表单要实现的功能是:在文本框Text1中
输入课程的名称,若此课程不在列表框List1中,则将它添加到列表框中,否则不添加。请完善下列的文本框Text1的LostFocus事件代码: fl=.T.
20