2009 - 10 - 1VFP上机练习题参考答案(定稿)

2009_10学年第1学期VFP上机练习题参考答案(定稿) 情况说明:

1. 此答案经修改,确定为定稿。各位老师在给学生做辅导时以此答案为准,不要做一题多解的解析。 2. 各位老师在给学生做辅导时,请强调:(1)在编写菜单的命令或过程代码及控件的事件代码时,代

码中所引用的对象的属性名、方法名和事件名要写全名。(2)在进行程序改错时,除需要修改的两条语句外,其它语句必须完全按照给定的原代码输入,不得增减字符。 3. 此答案不宜发给学生,以免学生死背答案,不认真进行上机操作练习。

王维民 2009-12-11

一、项目、数据库和表操作 (一)、

1.(2)MPH字段的输入掩码:99X999 (3)SXP字段的默认值: .T.

(4)候选索引abcd的索引表达式:MPH+STR(CH) 或 MPH+STR(CH,1) 3.XS表的删除触发器的表达式:XH=”04”或LEFT(XH,2)=”04” (二)、

1.(2)DH字段的有效性规则:!EMPTY(dh) 或 NOT EMPTY(dh) 或LEN(ALLTRIM(dh))>0 (3)DW字段的默认值:“南京大学” (4)普通索引abcd的索引表达式:DZXM+DW 3.JS表的删除触发器的表达式:YEAR(CSRQ)<=1949 (三)、

1.(2)FLH字段的有效性规则:!EMPTY(flh) 或 NOT EMPTY(flh) 或LEN(ALLTRIM(flh))>0 (3)RKRQ字段的默认值:DATE()

(4)普通索引abcd的索引表达式:DOW(RKRQ)或DOW(RKRQ,1) 3. JS表的更新触发器的表达式:YEAR(CSRQ)<1949 (四)、

1.(1)XB字段的有效性规则:xb=\男\女\或 xb$\男女\(2)SFZ字段的输入掩码:999999999999999999 (注:为十八个9) (3)创建普通索引abcd的索引表达式:xb+sfz 2.在打开JXGL的项目管理器后: ① 选择菜单命令:项目 / 项目信息

② 在“项目信息”对话框中使“附加图标”复选框有效 ③ 在“打开”对话框中选择图标文件:PC.ICO ④ 鼠标单击“确认”按钮

3.将XS表和JS表设置为“包含”状态的步骤为: ① 在JXGL的项目管理器中鼠标右击XS表

② 在弹出的快捷菜单中选择:包含

(JS表的设置与上述步骤相同)

二、设计查询(注:查询设计中,输出字段的顺序一律按题目要求的顺序设置) (一)、

SELECT Zzmm.mc AS 政治面貌名称, Js.xb AS 性别, COUNT(*) AS 人数,; AVG(YEAR(DATE())-YEAR(csrq)) AS 平均年龄; FROM jxsj!js INNER JOIN jxsj!zzmm ; ON Js.zzmm = Zzmm.dm;

GROUP BY zzmm.mc(或zzmm.dm), Js.xb; ORDER BY Zzmm.mc, Js.xb (二)、

SELECT TOP 5 Jc.cbsmc AS 出版社名称, COUNT(*) AS 教材数; FROM jxsj!jc;

WHERE Jc.cbnf >= \或LEFT(Jc.cbnf,4)>=\ GROUP BY Jc.cbsmc; ORDER BY 2 DESC; TO FILE cbs.txt (三)、

SELECT Js.whcd(或Whcd.dm) AS 文化程度代码, Whcd.mc AS 文化程度名称,; MAX(YEAR(gzrq)-YEAR(csrq)) AS 最大开始工作年龄,; AVG(YEAR(gzrq)-YEAR(csrq)) AS 平均开始工作年龄; FROM jxsj!js INNER JOIN jxsj!whcd ; ON Js.whcd = Whcd.dm; GROUP BY Js.whcd(或Whcd.dm); ORDER BY 3 DESC (四)、

SELECT IIF(js.mzdm=\汉族 \其他民族\民族,; COUNT(*) AS 人数; FROM jxsj!js; GROUP BY 1;

ORDER BY 1 DESC(或ORDER BY 2); TO FILE mz.txt 三、设计菜单 (三)

3.“打印(P)”菜单项的跳过条件为:NOT DBUSED(“jxsj”)或!DBUSED(“jxsj”)

四、设计表单 (一)、

1.设置表单的BorderStyle属性: 2 — 固定对话框 2.形状控件的BackColor属性设置为:0,255,0

3.文本框控件的BorderStyle属性设置为:0—无;并将其拖至圆的中心 4.设置计时器控件Timer1的Interval属性为:1000

5. 添加命令按钮控件Command1,并设置其Caption属性:开始; 设置其Click事件代码为:

ThisForm.Timer1.Enabled = .T.

6.修改计时器控件Timer1的Click事件代码:

在第1个空行内输入代码:ThisForm.Text1.Value = t2 在第2个空行内输入代码:ThisForm.Text1.Value = t1 (二)、

1.设置表单的WindowState属性:2 — 最大化 2.设置表单的Picture属性:Back.jpg 3.设置标签的以下属性: Backstyle属性:0 – 透明 FontName属性:楷体 FontBold属性:.T.

4.添加计时器Timer1,并设置其Interval属性为:60 5.修改表单的ShowLab方法,在代码的空白处增加命令: IF ThisForm.Label1.Left = - ThisForm.Label1.Width 6.编写计时器Timer1的Timer事件代码:ThisForm.ShowLab (三)、

1.设置表单Form1的以下属性值: Caption属性:交通灯控制 MaxButton属性:.F. MinButton属性:.F.

2.设置形状控件Shap1的Curvature属性:99

3.设置文本框Text1的BackStyle属性:0 — 透明,并将其拖至圆的中心 4.设置新添加的计时器Timer1的以下属性: Enabled属性:.F. Interval属性:1000

5.编写计时器Timer1的Click事件代码:ThisForm.Jtdkz

6.编写命令按钮Command1的Click事件代码:ThisForm.Timer1.Enabled = .T.

(四)、

1.设置表单Form1的以下属性值:

Caption属性:SPACE(0)或“”或直接清除内容 Icon属性:cddrive.ico MaxButton属性:.F. MinButton属性:.F.

2.设置新添加的计时器Timer1的Interval属性:50 3.设置标签Label1的以下属性: FontSize属性:14 FontBold属性:.T.

4.修改表单的ShowLab方法,在代码的空白处增加命令: ThisForm.Label1.Left = ThisForm.Width

5.编写计时器Timer1的Timer事件代码:ThisForm.ShowLab

五、程序改错 (一)、

①第3行:IF flag(i)=1 (二)、

①倒数第6行:ENDFOR (三)、 ①第8行:EXIT (四)、 ①第6行:EXIT

改为:RETURN

改为:LOOP 改为:IF n>m

改为:ENDO

改为:FOR i = 0 TO 12

改为:IF flag(i)=.F.或!flag(i)或not flag(i)

②第11行:s=c4+c3+c2+cl 改为:s=VAL(c4+c3+c2+cl)

②倒数第3行:FOR i = 0 TO 52

②倒数第7行:IF n

②倒数第3行:x=nMax-nMin 改为:x=VAL(nMax)–VAL(nMin)

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4