问答题
说明:1.启动VFP后在命令窗口中执行下列命令,以设置默认的工作目录:
SET DEFA TO T:
2.除非题目要求,否则不要对T盘上的文件进行重命名、复制和删除操作。
问答题 项目、数据库和表操作。
打开项目文件JXGL,在该项目中已有一个数据库JXSJ。根据以下要求进行操作:
(1)在jxsj数据库中按如下表格中所示的结构创建ab.dbf表,并设置相关属性。
字段名 数据类型 宽度 字段标题
dlh C 12 登录号
sm C 50 书名
isbn C 18 书号
jg Y 价格
①设置tab表的注释:图书库表。 ②设置isbn字段的输入掩码,要求书号(isbn)中只能包含数字和“-”,其数据格式如“978-7-121-09006-6”形式。 ③将dlh字段的默认值设置为当前系统日期的紧缩格式后面再加4个“0”,如“201303160000”(假设当前系统日期为2013-03-16)。 ④创建索引名为abcd的普通索引,要求根据sm字段排序,相同时根据dlh字段排序。 (2)在tab表中输入如下记录:
dlh sm isbn jg
201206110001 SQL SERVER实用教程 978-7-121-09006-6 43.0
(3)将cjb表中的成绩数据按“四舍五入”的规则做归整处理,即成绩个位数小于5的舍去,大于或等于5的进到十位。如74分归整化为70分,75分归整化为80分。
(4)设置xs表的更新触发器,要求只有籍贯(jg)为“江苏南京”的学生记录允许修改。
(5)已知kc表已存在主索引kcdm,cj表已存在普通索引kcdm,索引表达式均为。kcdm。以kc表为主表、cj表为子表,基于kcdm索引建立永久关系,并设置它们之间的参照完整性:更新级联。
【正确答案】
【答案解析】项目、数据库和表操作
默认值表达式:DTOC(DATE(), 1)+"0000"
索引表达式:sm+dlh
输入掩码:999-9-999-99999-9
表数据操作语句:UPDATE cjb SET cj=INT((cj+5)/10)*10
更新触发器:jg="江苏南京"
问答题 设计查询。
已知在jxsj数据库的学生(xs)表中含有学号(xh)、院系专业代码(yxzydm)等字段;学生就业(xsjy)表中含有学号(xh)、就业类型(jylx)等字段。按如下要求修改查询chaxun:
基于xs表和xsjy表查询各院系专业2004级学生(指学号的前2位为“04”)的就业人数以及自主创业(jylx字段值为“自主创业”)所占比例,要求输出字段包括yxzydm、就业人数、自主创业所占比例,输出结果按“院系专业”排序,相同时按“自主创业所占比例”降序排序。
【正确答案】
【答案解析】设计查询
SELECT xs.yxzydm, COUNT(*) AS就业人数, ;
SUM(IIF(jylx="自主创业", 1, 0))*100/COUNT(*)AS自主创业所占比例;
FROM jxsj! xs INNER JOIN jxsj! xsjy;
ON xs.xh=xsjy.xh;
WHERE LEFT(xs.xh, 2)="04";
GROUP BY xs.yxzydm;
ORDER BY xs.yxzydm, 3 DESC
问答题 设计菜单。
项目ixgl中已存在菜单MENU,利用菜单设计器按如下要求修改菜单,完成后的运行效果如图所示。
【正确答案】
【答案解析】设计菜单
导出菜单项的过程:
IF! USED("cjb")
USE cjb
ENDIF
COPY TO C:/cjb xls
屏幕列表输出菜单项的跳过条件:EMPTY(ALIAS())
问答题 设计表单。
表单FRM13A4用于模拟时钟。目前表单上有两个形状控件Shape1和Shape2,按下列要求修改表单,修改后表单运行时如图所示。
【正确答案】
【答案解析】设计表单
题号 对象名 属性/事件/方法名 属性值/代码
1 Form BorderStyle 2-固定对话框
AutoCenter .T.
2 Text1 ForeColor 0,0,255
FontSize 14
3 Timer1 Interval 1000
4 Form1 ABC方法 THISFORM.Shape2.Top=y+k-5
THISFORM.Text1.Value=TIME()
5 Timer1 Timer THISFORM.ABC()
问答题 程序改错
设本科生的学号前四位表示入学年份,研究生学号的第一位为英文字符、第2~5位表示入学年份。下列程序是根据给定的学生学号和当前日期,判断该学生是“大几”或“研几”(不考虑留级等情况)的学生。要求:
①项目中有一个程序文件Pcode,将下列程序代码复制到其中并进行修改。
②在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
(1) ?fmxh("200801011101")
(2) ?fmxh("G20100101201")
(3) **************
(4) FUNCTION fmxh
(5) PARA mxh
(6) Y=YEAR(DATE())
(7) m=MONTH(DATE())
(8) IF CHR(LEFT(mxh, 1))>60
(9) n=y-VAL(SUBS(mxh, 2, 4))
(10) n=IIF(m>=7, n+1, n)
(11) n=IIF(n>4, 4, n)
(12) cc=SUBS("研一研二研三毕业", 4*n-3, 4) &&研究生学制3年
(13) ELSE
(14) n=y-VAL(SUBS(mxh, 1, 4))
(15) n=IIF(m>=7, n+1, n)
(16) n=IIF(n>5, 5, n)
(17) cc=SUBS("大一大二大三大四毕业", 4*n-3, 4) &&本科生学制4年
(18) ENDIF
(19) RETU
【正确答案】
【答案解析】程序改错
第8行改为:IF ASC(LEFT(mxh, 1))>60
第19行改为:RETU cc