问答题
说明:1.启动VFP后在命令窗口中执行下列命令,以设置默认的工作目录:
SET DEFA TO T:
2.除非题目要求,否则不要对T盘上的文件进行重命名、复制和删除操作。
问答题 项目、数据库和表操作。
打开项目文件jxgl,在该项目中已有一个数据库jxsj。根据以下要求进行操作:
(1)在jxsj数据库中按如下表格中所示的结构创建ab.dbf表,并设置相关属性。
字段名 数据类型 宽度 字段标题
rq D 日期
pm C 20 品名
dw C 10 单位
dj N 5(小数1位) 单价
①设置表的注释:蔬菜批发价格表。 ②设置rq字段的默认值:当前系统日期。 ③设置单位字段的显示类:选项按钮组。 ④设置表的更新触发器:日期字段的值等于当前系统日期时可以更新记录。 ⑤创建普通索引,索引名为abcd,要求按“日期”排序,相同时按“单价”排序。 (2)在ab表中输入如下记录:
rq pm dw dj
2010-5-15 青菜 千克 2.4
(3)为项目设置项目信息:项目的图标为pc.ico文件。
(4)kc表已存在主索引kcdm,索引表达式为kcdm;cj表已存在普通索引kcdm,索引表达式为kcdm。以kc表为主表、cj表为子表,根据kcdm建立永久关系,并设置两表之间的参照完整性:删除级联、插入限制。
【正确答案】
【答案解析】项目、数据库和表操作
字段默认值:DATE()
索引表达式:DTOC(rq, 1)+STR(aj, 5, 1)
触发器:rq=DATE()
问答题 设计查询。
已知自由表图书表(tsb)含有分类号(flh,C)、册数(cs,N)、价格(jg,N)等字段。按如下要求修改jxgl项目中的查询chaxun:
基于tsb表查询图书类别、藏书册数等信息。要求:查询输出字段为图书类别、藏书册数和平均单价;查询结果按“册数”降序排列,若册数相同则按“平均单价”升序排列;输出去向为文本文件temp。
注:图书类别为分类量(flh)中“.”前的内容(可用LEFT(…, AT(".", …)-1)形式的表达式求得),藏书册数为同一图书类别册数(cs)之和。
【正确答案】
【答案解析】设计查询
SELECT LEFT(flh, AT(".", flh)-1)AS图书类别,SUM(cs)AS藏书册数, ;
AVG(jg)AS平均单价;
FROM tsb;
GROUP BY 1;
ORDER BY 2 DESC, 3;
TO FILE temp.txt
问答题 设计菜单。
jxgl项目中已存在菜单MENU,其中已定义了“文件”菜单栏及其中的“退出菜单”项。按如下要求设计菜单,菜单运行后的效果如图所示。
【正确答案】
【答案解析】设计菜单
命令/过程:DO FORM js
问答题 设计表单。
表单F102F用来按小组查看世界杯球队信息。按下列要求修改表单,修改后表单运行时如图所示。
【正确答案】
【答案解析】设计表单
题号 对象名 属性/事件/方法名 属性值/代码
1 Grid1 ReadOnly属性 .T.
ScrollBars属性 0
Column2对象 (删除操作)
2 List1 (添加控件操作)
RowSourceType属性 3
RowSource属性 SELECT DIST组别FROM fifa INTO CURSOR tmp
3 Form Load事件 PUBLIC cGroup
sGroup="A"
4 List1 InteractiveChange事件 sGroup=THIS.Value
SET FILTER TO组别=sGroup
GO TOP
THISFORM.Refresh
问答题 程序改错。
回文数是指正读和反读都是一样的数,如1001、1221等。下列程序的功能是:求出大于1000小于2000的所有回文数,并将它们打印出来(每行打印5个数,最后一行打印总个数)。要求:
①项目中有一个程序文件Pcode,将下列程序代码复制到其中并进行修改。
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
(1) STORE 0 TO n, n1, n2
(2) FOR i=1000 TO 2000
(3) s=ALLT(STR(i))
(4) n1=LEN(s)
(5) n2=INT(n1/2)
(6) s1=""
(7) FOR j=1 TO n2
(8) s1=s1+RIGHT(s, 1)
(9) s=LEFT(s, n1-1)
(10) ENDFOR
(11) IF LEFT(s, n1)=s1
(12) n=n+1
(13) ?? i
(14) IF INT(n/5)=n/5
(15) ?
(16) ENDIF
(17) ENDFOR
(18) ENDFOR
(19) ?"小于2000的回文数共"+STR(n)+"个"
【正确答案】
【答案解析】程序改错
第11行改为:IF LEFT(s, n2)=s1
第17行改为:ENDIF