问答题
说明:1.启动VFP后在命令窗口中执行下列命令,以设置默认的工作目录:
SET DEFA TO T:
2.除非题目要求,否则不要对T盘上的文件进行重命名、复制和删除操作。
问答题 项目、数据库和表操作。
打开项目文件jxgl,在该项目中已有一个数据库jxsj。根据以下要求进行操作:
(1)在jxsj数据库中按如下表格中所示的结构创建ab.dbf表,并设置相关属性。
字段名 数据类型 宽度 字段标题
xsrq D 销售日期
mplb C 20 门票类别
dj N 3 单价
sl N 6 数量
①设置表的注释:世博会门票销售统计表。 ②设置xsrq字段的默认值:当前系统日期。 ③设置dj字段的默认值:160。 ④设置mplb字段的显示类:选项按钮组。 ⑤创建名为abcd的普通索引,要求按“销售日期”排序,销售日期相同时按“数量”排序。 (2)在ab表中输入如下记录:
xsrq mplb dj sl
2010-7-20 平日普通票 160 25000
(3)计算并修改gzb表中所有记录的yfgz字段值,计算公式如下:
yfgz=jbgz+gwjt+zhjt+zfbt+qt
(4)xs表与cj表具有相同的字段xh,以xs表为主表、cj表为子表,根据xh建立永久关系,并设置两表之间的参照完整性:更新级联、插入限制。
【正确答案】
【答案解析】项目、数据库和表操作
xsrq字段的默认值:DATE()
dj字段默认值:160
mplb字段的显示类:OptionGroup
表的删除触发器:.F.
索引表达式:DTOC(xsrq, 1)+STR(sl)
问答题 设计查询。
已知教师表(js.dbf)存储了教师基本信息,其中含教师工号(gh,C)、姓名(xm,C)等字段;课程安排表(kcap.dbf)存储了每个学期各位教师任课信息,其中含教师工号(gh,C)、课程代码(kcdm,C)等字段;课程表(kc.dbf)存储了每门课程信息,其中含课程代码(kcdm,C)、课时数(kss,N)等字段。按如下要求修改jxgl项目中的查询chaxun:
基于is表、kcap表和kc表,查询每位教师任课次数(kcap表中的每条记录均为某教师的一次任课)、总课时数。要求:输出字段依次为gh、xm、任课次数、总课时数,查询结果按“任课次数”降序排列,且仅显示“任课次数大于2”的记录。
【正确答案】
【答案解析】设计查询
SELECT js.gh, js.xm, COUNT(*)AS任课次数,SUM(kc.kss)AS总课时数;
FROM jxsj! js INNER JOIN jxsj! kcap;
INNER JOIN jxsj! kc;
ON kcap.kcdm=kc.kcdm;
ON js.gh=kcap.gh;
GROUP BY js.gh;
HAVING任课次数>2;
ORDER BY 3 DESC
问答题 设计菜单。
jxgl项目中已存在菜单MENU,其中已定义了“文件”菜单栏及其中的“退出菜单”项。按如下要求设计菜单,菜单运行后的效果如图所示。
【正确答案】
【答案解析】设计菜单
设置命令:DO PPPP
问答题 设计表单。
表单FRM11C用于输入圆半径、计算圆面积并绘制圆图形。按下列要求修改表单,修改后表单运行时如图(a)、(b)所示。
【正确答案】
【答案解析】设计表单
题号 对象名 属性/事件/方法名 属性值/代码
Form1 Caption 计算圆面积
2 Shape1 Height 1
Width 1
Text1 Alignment 1-右
3 Text1 Valid Event THISFORM.Command1.Visible=.F.
ELSE
THISFORM.Command1.Visible=.T.
ENDIF
4 Command1 Click Event THISFORM.Shape1.Height=2*THISFORM.Text1.Value
THISFORM.Shape1.Width=2*THISFORM.Text1.Value
问答题 程序改错。
下列程序的功能是:求S=1+11+2+11+2+3+…的近似值。当末项11+2+…+n小于某个精度值p(如0.001)时停止求和。要求:
①项目中有一个程序文件Pcode,将下列程序代码复制到其中并进行修改。
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
(1) CLEAR
(2) P=0.001
(3) str1="S=1"
(4) s=1
(5) n=1
(6) sn=1
(7) DO WHILE 1/sn>=P
(8) n=n-1
(9) sn=sn+n
(10) s=s+1/sn
(11) str1=str1+"+1/"+ALLT(STR(sn))
(12) ENDWHILE
(13) str1=str1+"="+STR(s, 10, 3)
(14) ?str1
【正确答案】
【答案解析】程序改错
第8行改为:n=n+1
第12行改为:ENDDO