问答题
说明:1.启动VFP后在命令窗口中执行下列命令,以设置默认的工作目录:
SET DEFA TO T:
2.除非题目要求,否则不要对T盘上的文件进行重命名、复制和删除操作。
问答题 项目、数据库和表操作。
打开项目文件jxgl,在该项目中已有一个数据库jxsj。根据以下要求进行操作:
(1)在jxsj数据库中按如下表格中所示的结构创建ab.dbf表,并设置相关属性。
字段名 数据类型 宽度 字段标题
bh C 5 机器编号
ip C 15 IP地址
dw C 30 单位
zrr C 12 责任人
rq D 注册日期
①设置机器编号字段的输入掩码:第一个字符为任意字符,其他只能输入数字字符。 ②设置单位字段的默认值:南京大学。 ③设置IP地址字段的注释:只能为C类地址。 ④设置责任人字段的有效性规则:不能为空。 ⑤创建普通索引,索引名为abcd,要求按“注册日期”排序,相同时按“单位”排序。 (2)在ab表中输入如下记录:
bh ip dw zrr rq
B1023 194.11.12.222 南京大学XX系 张小 2010-05-14
(3)将自由表cjb添加到当前数据库中,并设置为“包含”。
(4)xs表已存在主索引xh,索引表达式为xh;cj表已存在普通索引xh,索引表达式为xh。以xs表为主表、cj表为子表,根据xh建立永久关系,并设置两表之间的参照完整性:更新级联、删除级联。
【正确答案】
【答案解析】项目、数据库和表操作
字段输入掩码:A9999
索引表达式:DTOC(rq, 1)+dw
字段有效性规则:.NOT.EMPTY(zrr)
问答题 设计查询。
已知自由表图书表(tsb)含有分类号(flh,C)、书名(sm,C)、价格(jg,N)等字段;自由表图书借阅表(jyb)含有读者类型(lx,C)、分类号(flh,C)等字段。按如下要求修改jxgl项目中的查询chaxun:
基于tsb表和jyb表查询价格在20(含20)元以上的图书借阅情况。要求:查询输出字段为flh、sm、教师借阅次数、学生借阅次数、价格;查询结果按“价格”降序排列;输出去向为表文件temp。
注:lx字段值为“J”时表示是教师,为“X”时表示是学生。
【正确答案】
【答案解析】设计查询
SELECT tsb.flh, tsb.sm,SUM(IIF(jyb.lx="J", 1, 0))AS教师借阅次数, ;
SUM(IIF(jyb.1x="X", 1, 0)) AS学生借阅次数, tsb.jg;
FROM tsb INNER JOIN jyb;
ON tsb.flh=jyb.flh;
WHERE tsb.jg>=20;
GROUP BY tsb.flh;
ORDER BY tsb.jg DESC;
INTO TABLE temp
问答题 设计菜单。
jxgl项目中已存在菜单MENU,其中已定义了“文件”菜单栏及其中的“退出菜单”项。按如下要求设计菜单,菜单运行后的效果如图所示。
【正确答案】
【答案解析】设计菜单
命令/过程:_SCREEN.FontSize=9
问答题 设计表单。
表单F102C用于实现对矩阵进行转置。按下列要求修改表单,修改后表单运行时如图所示。
【正确答案】
【答案解析】设计表单
题号 对象名 属性/事件/方法名 属性值/代码
1 spnRows KeyBoardHighValue 5
KeyBoardLowValue 1
Value 3
2 Command2 (添加操作)
Caption 转置
Enabled .F.
3 Command1 Click THISFORM.RandArray(THISFORM.spnRows.Value, ;
THISFORM.spnCols.Value)
THISFORM.List1.RowSource="arr1"
THISFORM.Command2.Enabled=.T.
4 spnCols InteractiveChange THISFORM.List1.ColumnCount=THIS.Value
问答题 程序改错。
下列程序的功能是:将二进制数转换成十进制数。其基本算法是:将每一位的二进制数字乘以其相应的权并将乘积相加。二进制数字的权为:以小数点为界,整数部分从右向左依次为2 0 ,2 1 ,2 2 ,…,小数部分从左向右依次为2 -1 ,2 -2 ,2 -3 ,…,例如,二进制数1011.11转换成十进制数为1×2 3 +0×2 2 +1×2 1 +1×2 0 +1×2 -1 +1×2 -2 =11.75。要求:
①项目中有一个程序文件Pcode,将下列程序代码复制到其中并进行修改。
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
(1) CLEAR
(2) ACCEPT"请输入二进制数字"TO s2
(3) ?"二进制数", s2, "的十进制表示为:", Trf(s2)
(4) FUNCTION Trf()
(5) PARAMETERS s2
(6) n=AT(".", cstr)
(7) cstr1=IIF(n>0, SUBSTR(cstr, 1, n-1), cstr)
(8) cstr2=IIF(n>0, SUBSTR(cstr, n+1), ")
(9) STORE 0 TO m1, m2
(10) FOR i=1 TO LEN(cstr1)
(11) m1=m1+VAL(SUBSTR(cstr1, i, 1))*2* *=(LEN(cStr1)-i)
(12) ENDFOR
(13) FOR j=1 TO LEN(cstr2)
(14) m2=m2+VAL(SUBSTR(cstr2, j, 1))*2**(-j)
(15) ENDFOR
(16) ENDFUN m1+m2
【正确答案】
【答案解析】程序改错
第5行改为:PARAMETERS cstr
第16行改为:RETURN m1+m2