VFP平时上机练习题电子版参考答案.docx
《VFP平时上机练习题电子版参考答案.docx》由会员分享,可在线阅读,更多相关《VFP平时上机练习题电子版参考答案.docx(11页珍藏版)》请在冰豆网上搜索。
VFP平时上机练习题电子版参考答案
一、项目、数据库和表操作
(一)
1.
(2)表的有效性规则:
xsj<=1.2*cbj或xsj<=cbj*1.2
(3)设置BH字段的格式码:
T
(4)创建一个主索引,索引标识:
abcd索引类型:
主索引索引表达式:
bh
2.设置js表的插入触发器的表达式:
LEN(ALLTRIM(gh))=6
3.
REPLACEbzWITH"学科带头人"FORzc="教授"
UPDATEjsSETbz="学科带头人"WHEREzc="教授"
(二)
1.
(3)设置字段csrq的有效性规则:
csrq>={^1980-01-01}或csrq>{^1979-12-31}或Year(csrq)>=1980
(4)索引表达式:
STR(YEAR(DATE())–YEAR(csrq))+xm
2.设置js表的删除触发器的表达式:
.F.
3.
REPLACEALLbzWITH"一本招生";
FORLEFT(yxzydm,2)="11"
UPDATEyxzySETbz="一本招生";
WHERESUBSTR(yxzydm,1,2)="11"
注:
在SETEXACTOFF的设置下,条件表达式可以是:
yxzydm="11"
(三)
1.
(2)设置BH1的输入掩码为:
AXXX或A999
(3)设置字段BH1的有效性规则:
LEFT(BH1,1)=LEFT(BH2,1)
(4)索引表达式:
BH1+xh
2.设置jc表的删除触发器的表达式:
left(cbnf,4)<‘2000’
3.UPDATEcjSETbz="选修"WHEREkcdm="9501"
(四)
1.
(2)设置rq字段的默认值:
DATE()
(3)设置表的有效性规则:
kpsl<=xssl或xxsl>=kpsl
(4)索引表达式:
DTOC(rq,1)+bh或DTOS(rq)+bh
2.设置jc表的插入触发器的表达式:
SUBSTR(isbn,1,2)="IS"或isbn=“IS”或left(isbn,2)=“IS”
3.UPDATEcjSETpscj=85
二、设计查询
(一)
(1)添加表:
kcap,kc以kcdm作为联接条件
(2)输出字段:
Kcap.xqbmAS学期编码,COUNT(*)AS开课门数
SUM(Kc.kss)AS总课时数
(3)分组依据:
Kcap.xqbm
(4)排序依据:
Kcap.xqbm
(5)SELECT—SQL语句:
SELECTKcap.xqbmAS学期编码,COUNT(*)AS开课门数,;
SUM(Kc.kss)AS总课时数;
FROMjxsj!
kcapINNERJOINjxsj!
kc;
ONKcap.kcdm=Kc.kcdm;
WHEREKcap.bjbh="040202";
GROUPBYKcap.xqbm;
ORDERBYKcap.xqbm
(二)
(1)添加表:
kcap,kc以kcdm作为联接条件
(2)输出字段:
Kcap.bjbhAS班级编号,COUNT(*)AS开课门数
SUM(Kc.kss)AS总课时数
(3)分组依据:
Kcap.bjbh
(4)排序依据:
Kcap.bjbh
(5)SQL语句:
SELECTKcap.bjbhAS班级编号,COUNT(*)AS开课门数,;
SUM(Kc.kss)AS总课时数;
FROMjxsj!
kcapINNERJOINjxsj!
kc;
ONKcap.kcdm=Kc.kcdm;
WHEREKcap.xqbm="2004-2005学年第1学期";
GROUPBYKcap.bjbh;
ORDERBYKcap.bjbh
(三)
(1)添加表:
zzmm视图,js表以Zzmm.dm和Js.zzmm作为联接条件
(2)输出字段:
Js.zcAS职称,Zzmm.mcAS政治面貌名称
COUNT(*)AS人数,
AVG(YEAR(DATE())–YEAR(Js.csrq))AS平均年龄
(3)分组依据:
Js.zc,Zzmm.mc
(4)排序依据:
Js.zc,Zzmm.mc
(5)SQL语句:
SELECTJs.zcAS职称,Zzmm.mcAS政治面貌名称,;
COUNT(*)AS人数,;
AVG(YEAR(DATE())–YEAR(Js.csrq))AS平均年龄;
FROMjxsj!
zzmmINNERJOINjxsj!
js;
ONZzmm.dm=Js.zzmm;
GROUPBYJs.zc,Zzmm.mc;
ORDERBYJs.zc,Zzmm.mc
(四)
(1)添加表:
whcd视图,js表以Whcd.dm和Js.whcd作为联接条件
(2)输出字段:
Js.zcAS职称,Whcd.mcAS文化程度名称
COUNT(*)AS人数,
MIN(YEAR(DATE())-YEAR(Js.csrq))AS最小年龄
(3)分组依据:
Js.zc,Whcd.mc
(4)排序依据:
Js.zc,Whcd.mc
(5)SQL语句:
SELECTJs.zcAS职称,Whcd.mcAS文化程度名称,;
COUNT(*)AS人数,;
MIN(YEAR(DATE())-YEAR(Js.csrq))AS最小年龄;
FROMjxsj!
jsINNERJOINjxsj!
whcd;
ONJs.whcd=Whcd.dm;
GROUPBYJs.zc,Whcd.mc;
ORDERBYJs.zc,Whcd.mc
三、设计菜单
(一)
1.“文件”菜单项名称为:
文件(\2.
在“文件”菜单的子菜单中增加一个菜单项:
打开
设置“打开”菜单项的结果为:
子菜单
在“打开”菜单的子菜单中设置两个菜单项:
数据库、表
设置“数据库”菜单项的“结果”列为“命令”,在其右侧的文本框中输入命令:
OPENDATABASE
3.在“文件”菜单的“打开”菜单项之后增加一个菜单项,在菜单名称中输入“\–”
(二)
1.将“文件”菜单项改为:
自定义(\2.打开VFP主菜单显示/常规选项,在对话框中选择:
在“文件”之前
3.略
4.在“还原”菜单的“结果”列中选择“命令”,在其右侧的的文本框输入:
_SCREEN.BackColor=RGB(255,255,255)
(三)
2.打开VFP主菜单显示/常规选项,在对话框中选择:
追加
5.在“运行外部EXE程序”菜单项的“结果”列中选择:
过程。
再点击右侧的按钮,打开“过程”代码的编辑窗口,将题给代码输入并保存。
(四)
2.“PRG程序”菜单项设置为:
\其余略
四、设计表单
(一)
1.
表单的Caption属性:
代码表
在数据环境中添加视图:
zzmm和whcd
表格的DeleteMark属性:
.F.ScrollBars属性:
2–垂直
2.
标签的Caption属性:
选择类型
组合框的Style属性:
2(下拉列表框)
3.
下拉列表框的RowSourceType属性:
1–值
下拉列表框的RowSource属性:
民族,政治面貌,文化程度
4.
下拉列表框的InterActiveChange事件代码:
DOCASE
CASEThis.Selected
(1)=.T.
ThisForm.Grdmz.RecordSource="mz"
CASEThis.Selected
(2)=.T.
ThisForm.Grdmz.RecordSource="zzmm"
CASEThis.Selected(3)=.T.
ThisForm.Grdmz.RecordSource="whcd"
ENDCASE
或
DOCASE
CASEThis.value=“民族”
ThisForm.Grdmz.RecordSource="mz"
CASEThis.value=“政治面貌”
ThisForm.Grdmz.RecordSource="zzmm"
CASEThis.value=“文化程度”
ThisForm.Grdmz.RecordSource="whcd"
ENDCASE
(二)
1.
表单的AutoCenter属性:
.T.
2.
下拉列表框的RowSource属性:
mz
3.
表格RecordSourceType属性:
4–SQL说明
表格RecordSource属性:
SELECTgh,xmFromjsINTOCURSORtemp
4.
文本框的Name属性:
Tmz
文本框的Value属性:
所有民族
文本框的Enabled属性:
.F.
5.
下拉列表框的InterActiveChange事件代码:
ThisForm.Tmz.Value=mz.mc
ThisForm.Grid1.RecordSource="SELECTgh,xmFROMjs;
WHEREmzdm=This.ValueINTOCURSORtemp"
6.
命令按钮的Caption属性:
退出(\(三)
1.
表单的Caption属性:
代码表
表单的Icon属性:
pc.ico
表单的AutoCenter属性:
.T.
2.
在数据环境中添加视图:
zzmm和whcd
3.
选项按钮组的Name属性:
Mzw
利用选项按钮组的生成器设置:
按钮的数目:
3
按钮的标题分别为:
民族、政治面貌、文化程度
按钮布局:
水平
4.
选项按钮组的InterActiveChange事件代码:
DOCASE
CASEThis.Value=1
ThisForm.Grdmz.RecordSource="mz"
CASEThis.Value=2
ThisForm.Grdmz.RecordSource="zzmm"
CASEThis.Value=3
ThisForm.Grdmz.RecordSource="whcd"
ENDCASE
5.
命令按钮的Caption属性:
关闭(\命令按钮的Click事件代码:
ReleaseThisForm
(四)
1.
表单的AutoCenter属性:
.T.
表单的BorderStyle属性:
2–固定对话框
2.
下拉列表框的RowSource属性:
mz
3.
标签的Name属性:
Lmz
标签的Caption属性:
所有民族
4.
表格RecordSourceType属性:
1–别名
表格RecordSource属性:
js
5.
表单的UserMethod方法程序代码:
(完善一条命令、在空行中增加一条命令)
PUBLICx
SELECTjs
X=ThisForm.Combo1.Value
SETFILTERTOmzdm=x
Thisform.Lmz.caption=mz.mc
ThisForm.Refresh
下拉列表框的InterActiveChange事件代码:
ThisForm.UserMethod
6.
命令按钮的Click事件代码:
REPORTFORMrtestPREVIEW
五、程序改错
(一)
m=SPACE(0)
STORE".86*75*85*87*67*78.32.70*81*90.80*84*81"TOc,cc
DOWHILELEN(c)>0
d=LEFT(c,1)
c=SUBS(c,2)
n=0
IFd="."
m=m+CHR(VAL(LEFT(c,2)))
ELSE
m=m+CHR(VAL(LEFT(c,2))+30)
ENDDO此处改为ENDIF
c=SUBS(c,2)此处改为c=SUBS(c,3)c=SUBS(c,3)
ENDDOENDIF
WAITWINDOWScc+"解密后的代码为:
"+m
(二)
CLEAR
DIMENSIONc(30)
FORi=1TO30&&第一个循环
n=CHR(64+MAX(1,MOD(INT(RAND()*100),27)))26
c(i)=n
ENDFOR
FORi=1TO30&&第二个循环
m=c(i)
FORt=i+1TO30
IFmc(t)
c(i)=c(t)
c(t)=m
m=c(i)
ENDIF
ENDDO此处改为ENDFORENDFOR
ENDFOR
DISPLAYMEMOLIKEc*
(三)
DIMESIONA(20)
FORi=1TO20
A(i)=INT(RAND()*100)
ENDFOR
Mmax=A(i)
Mmin=A(i)
?
A(i)
FORi=2TO20
?
STR(A
(1),3)此处改为?
?
STR(A(i),3)?
?
STR(A
(1),3)
IFMmaxMmax=A(i)
ENDIF
IFMmin>A(i)
Mmin=A(i)
ENDIF
ENDFOR
?
"最大数是:
"+Mmax+"最小数是:
",MminSTR(Mmax,3)
"最大数是:
",Mmax,SPACE(10)+"最小数是:
",Mmin
最后一句改为:
?
"最大数是:
"+STR(Mmax)+"最小数是:
",Mmin
或?
"最大数是:
",Mmax,"最小数是:
",Mmin
(四)
c="数据库"
STORE0TOhz,yw,qt
DOWHILEc>0此处改为LEN(c)>0DOWHILELEN(c)>0
x=ASC(LEFT(c,1))
IFx>127
hz=hz+1
c=SUBS(c,3)
ELSE
IFx>64ANDX<91ORx>96ANDx<123
yw=yw+1
ELSE
qt=qt+1
ENDIF
c=SUBS(c,3)此处改为c=SUBS(c,2)c=SUBS(c,2)
ENDIF
ENDDO
WAITWIND"汉字:
"+STR(hz,4)+“英文字母:
”+STR(yw,4)+;
"其它字符:
"+STR(qt,4)