问答题
说明: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 数量
je Y 金额
①设置表的注释:世博会门票销售表。 ②设置xsrq字段的默认值:当前系统日期。 ③设置je字段的默认值:单价x数量。 ④设置表的记录有效性规则:如果门票类别是“平日普通票”,则单价等于160元。 ⑤创建索引名为abcd的普通索引,要求按“销售日期”排序,相同时按“门票类别”排序。 (2)在ab表中输入如下记录:
xsrq mplb dj sl je
2010-7-25 平日普通票 160 25 4000
(3)计算并修改gzb表中所有记录的yfgz字段的值,计算公式如下:
yfgz=jbgz+gwjt+zhjt+zfbt+qt
(4)xs表与cj表具有相同的字段xh,以xs表为主表、cj表为子表,根据xh建立永久关系,并设置两表之间的参照完整性:更新级联、删除级联。
【正确答案】
【答案解析】项目、数据库和表操作
xsrq字段的默认值:DATE()
je字段的默认值:dj*sl
mplb字段的显示类:LISTBOX
记录的有效性规则:dj=IIF(mplb="平日普通票", 160, dj)
索引表达式:DTOC(xsrq, 1)+mplb
问答题 设计查询。
已知学生表(xs.dbf)存储了学生基本信息,其中含学号(xh,C)、姓名(xm,C)等字段;成绩表(cj.dbf)存储了每位学生各门课程成绩,其中含学号(xh,C)、课程代码(kcdm,C)、成绩(cj,N)等字段;课程表(kc.dbf)存储了每门课程信息,其中含课程代码(kcdm,C)、学分(xf,N)等字段。按如下要求修改jxgl项目中的查询chaxun:
基于xs表、cj表和kc表,查询每位学生取得学分的课程门数和总学分数(成绩大于或等于60时才能取得学分)。要求:输出字段依次为xh、xm、课程门数、总学分,查询结果按“总学分”降序排列。
【正确答案】
【答案解析】设计查询
SELECT xs.xh, xs.xm, SUM(IIF(cj>=60, 1, 0))AS课程门数, ;
SUM(IIF(cj>=60, xf, 0))AS总学分;
FROM jxsj! xs INNER JOIN jxsj! cj;
INNER JOIN jxsj! kc;
ON cj.kcdm=kc.kcdm;
ON xs.xh=cj.xh;
GROUP BY xs.xh;
ORDER BY 4 DESC
问答题 设计菜单。
jxgl项目中已存在菜单MENU,其中已定义了“文件”菜单栏及其中的“退出菜单”项。按如下要求设计菜单,菜单运行后的效果如下图所示。
【正确答案】
【答案解析】设计菜单
略。
问答题 设计表单
表单FRM11D用于显示学生、教师等表记录信息。按下列要求修改表单,修改后表单运行时如图所示。
【正确答案】
【答案解析】设计表单
题号 对象名 属性/事件/方法名 属性值/代码
1 P0 Tabs .F.
2 L2 Name L2
Caption "
Left 0
AutoSize .T.
3 OptionGroup1 Click Event THISFORM.L2.Caption=cc
4 Command2 Click Event THISFORM.Release
问答题 程序改错。
已知数组a的元素依次为100,200,…,900共9个元素,数组b的n个元素是由随机函数随机生成的1000以内的数,并用ASORT()函数进行排序。现要将两个数组中的元素合并存入数组c中,合并后的数组仍为有序。要求:
①项目中有一个程序文件Pcode,将下列程序代码复制到其中并进行修改。
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
(1) N=15
(2) DIME a(9), b(N), c(N+9)
(3) FOR i=1 TO 9
(4) a(i)=i * 1000
(5) NEXT
(6) FOR i=1 TO n
(7) b(i)=INT(RAND()*1000)
(8) ENDFOR
(9) ASORT(b)
(10) STORE 1 TO i; j; k
(11) DO WHILE k<=n+9
(12) IF a(i)<=b(j)
(13) c(k)=a(i)
(14) IF i<9
(15) i=i+1
(16) ELSE
(17) FOR t=1 TO n+9-k
(18) k=k+1
(19) c(k)=b(j+T-1)
(20) ENDFOR
(21) ENDIF
(22) ELSE
(23) c(k)=b(j)
(24) IF j<N
(25) j=j+1
(26) ELSE
(27) FOR t=1 TO N+9-k
(28) k=k+1
(29) c(k)=a(i+t-1)
(30) ENDFOR
(31) ENDIF
(32) ENDIF
(33) k=k+1
(34) ENDDO
(35) CLEAR
(36) FOR k=1 TO n+9
(37) ?STR(c(k), 4)
(38) ENDFOR
【正确答案】
【答案解析】程序改错
第7行改为:DO WHILE.T.
第10行改为:S=S+1/sn