《VisualFoxPro程序设计实习教程与习题集》(第2版)《实习教程》第1单元VisualFoxPro基本操作(参考答案)1.利用对其赋值的方法,判定下列字符串是否为合法的内存变量名。1)X1,X(1),X*,X’,X_1,1X执行赋值命令:X1=3,或STORE3TOX1,系统没有任何错误显示,知X1为合法的内存变量名。类似地,X_1也为合法的内存变量名,其余为不合法。2)变量,变量,变量X,变量1,变量_1利用上面的方法可以判定:变量,变量X,变量1,变量_1为合法内存变量名,其余不合法。2.计算并显示下面各题的结果。1)分别利用函数(MOD)和运算(%),求出987654321除以123456789的余数。利用函数:?MOD(987654321,123456789)显示:9利用运算:?987654321%123456789显示:92)若X=5.1249,求2X与X2的最小值。命令:X=5.1249?MIN(2^X,X^2)显示:26.26463)设:a=1,b=4,c=3,计算一元二次方程:aX2+bX+c=0的两个根。命令:a=1b=4c=3?(-b+SQRT(b^2-4*a*c))/(2*a)显示:-1.0000?(-b-SQRT(b^2-4*a*c))/(2*a)显示:-3.00004)设C1=’AB’,C2=SPACE(2),C3=str(3.14,5,2),且A1=C1+C2+C3,A2=trim(C1+C2-C3)求A1和A2的长度。命令:C1=’AB’C2=SPACE(2)C3=STR(3.14,5,2)A1=C1+C2+C3A2=TRIM(C1+C2-C3)?LEN(A1)显示:9?LEN(A2)显示:75)设C1=SPACE(2),C2=”ABC”,C3=SPACE(3),且A1=C1+C2+C3,A2=trim(C1+C2+C3),A3=ltrim(C1+C2+C3),A4=alltrim(C1+C2+C3)求A1、A2、A3、A4的长度。命令:C1=SPACE(2)C2=”ABC”C3=SPACE(3)A1=C1+C2+C3A2=trim(C1+C2+C3)A3=ltrim(C1+C2+C3)A4=alltrim(C1+C2+C3)?LEN(A1)显示:8?LEN(A2)显示:5?LEN(A3)显示:6?LEN(A4)显示:36)设A=’微型计算机’,利用函数SUBSTR和A表示字符串’微机’。命令:A=’微型计算机’?SUBSTR(A,1,2)+SUBSTR(A,9,2)显示:微机7)求出从今天起,1万天之后的日期。命令:?DATE()+10000显示:09/06/36(与当天日期有关)8)求到今天为止,香港回归祖国的天数。命令:?DATE()–{^1997/07/01}显示:4312(与当天日期有关)9)写出如下表达式的值,然后利用计算机验证自己的答案。①X+YX*YORXY,其中:X=1,Y=2命令:X=1Y=2?X+YX*YORXY显示:.T.②94AND4#2ORNOT2**3=SQRT(16)命令:?94AND4#2ORNOT2**3=SQRT(16)显示:.T.3.通过实例体会以下函数的使用。1)函数ROUND的第二个参数为负的情形。ROUND(12345.6789,1)=12345.7ROUND(12345.6789,0)=12346ROUND(12345.6789,-1)=12350ROUND(12345.6789,-2)=123002)函数STR的第二、三个参数确省的情形。STR(3.1415926,4,1)=”3.1”STR(3.1415926,4)=”3”STR(3.1415926)=”3”《实习教程》第2单元数据表的创建及浏览(参考答案)1.建立如下名称、结构和记录的数据表文件。(1)CREATEZGGZ(2)在表结构设计器中完成创建表结构的操作(3)输入数据2.利用命令浏览该表的内容,然后关闭该表。USEZGGZBROWSEUSE3.显示当前文件夹中所有数据表文件的信息。DIR4.打开“数据工作期”对话框,再先后实施:打开、浏览和关闭该表的操作。选择“窗口/数据工作期”菜单,在弹出的对话框中完成打开、浏览和关闭表的操作。5.利用资源管理器,将数据表ZGGZ.DBF及其备注文件复制到移动存储器保存。(略)《实习教程》第3单元数据表的结构操作(参考答案)1.将数据表ZGGZ.DBF的结构复制到新表ZGGZ1.DBF,且含有编号、姓名和婚否三个字段。usezggzcopystructuretozggz1fields编号,姓名,婚否2.利用菜单打开“表设计器”对话框,并对数据表ZGGZ1.DBF的结构作如下修改:1)在“婚否”字段前插入“性别”字段(C,2);2)在“婚否”字段后插入“基本工资”字段(N,6,2);3)删除“编号”字段。(略)3.显示修改后的数据表结构。usezggz1liststructure4.将数据表ZGGZ.DBF的前6个记录中基本工资大于400元的记录复制到新表ZGGZ2.DBF,且仅保留:编号、姓名、基本工资等3个字段。usezggzcopytozggz2next6fields编号,姓名,基本工资for基本工资4005.显示ZGGZ2.DBF的结构。usezggz2liststructure6.浏览ZGGZ2.DBF的记录。usezggz2browse《实习教程》第4单元数据表记录的指针移位(参考答案)1.顺序执行下面有关记录指针移位的命令,并解释得到的结果。USEZGGZ?BOF()显示结果:.F.(表示此时记录指针不在表顶)GO5?RECNO()5(表示此时记录指针指在第5条记录上)SKIP-2?RECNO()3(表示此时记录指针指在第3条记录上)GOTOP?BOF().F.(表示此时记录指针不在表顶)?RECCOUNT()8(表示此表共有8条记录)《实习教程》第5单元数据表记录的追加(参考答案)1.将数据表ZGGZ.DBF的结构复制到新的数据表TEMP.DBF,并显示新表的结构。USEZGGZCOPYSTRUCTURETOTEMPUSETEMPLISTSTRUCTURE2.向TEMP.DBF随意追加2条记录,要求输入备注信息。USETEMPAPPEND在弹出的追加记录窗口中,向除“memo”以外的字段随意输入数据。然后,双击“memo”,在打开的窗口中,随意输入文字。最后,单击窗口的“关闭”按钮。3.将ZGGZ.DBF中所有职务为“科长”的记录追加到TEMP.DBF中,并浏览结果。APPENDFROMZGGZFOR职务=’科长’BROWSE《实习教程》第6单元数据表记录的显示和修改(参考答案)1.分别用LIST和DISPLAY显示ZGGZ.DBF中所有未婚职工的姓名、婚否和基本工资字段。usezggzlist姓名,婚否,基本工资for婚否=.F.display姓名,婚否,基本工资for.NOT.婚否2.显示ZGGZ.DBF中,1960年1月1日之后出生且基本工资超过400元的职工信息。listfor出生日期{^1960/1/1}AND基本工资4003.显示ZGGZ.DBF中第4到第8号记录中“王”姓的职工信息。(提示:先将记录指针移到第4号记录上,再在命令中指定范围。)go4listnext5forsubstr(姓名,1,2)=’王’4.在ZGGZ.DBF的编辑窗口中,利用键盘输入对所有女职工的“实发工资”字段进行修改,使得:实发工资=基本工资+奖金-扣款。(略)5.利用REPLACE命令对所有男职工的记录完成上述操作。replace实发工资with基本工资+奖金-扣款for性别=’男’6.利用REPLACE命令为所有职务为科长的奖金增加20元。replace奖金with奖金+20for职务=’科长’7.利用REPLACE命令为所有职工的基本工资增加10%。replaceall基本工资with基本工资*1.18.利用BROWSE命令,查看上述的替换的结果。browse《实习教程》第7单元数据表记录的删除(参考答案)准备:将数据表ZGGZ.DBF复制成TEMP.DBF,并打开TEMP.DBF。usezggzcopytotempusetemp1.对所有的未婚科员记录加删除标记。DELETEFOR职务=’科员’AND婚否=.F.2.对基本工资少于400元的记录加删除标记。DELETEFOR基本工资4003.分别在取消遮盖和遮盖带删除标记记录的环境下,显示数据表的记录。SETDELETEOFFLISTSETDELETEONLIST4.打开BROWSE窗口,利用鼠标单击的方法,练习为记录添加和取消删除标记的操作。(需在取消遮盖带删除标记记录的环境下操作)(略)5.利用命令取消所有记录的删除标记。RECALLALL6.物理删除最后一条记录。GOBOTTOMDELETEPACK7.物理删除1969年及以前出生的职工记录。DELETEFORYEAR(出生日期)=1969PACK8.物理删除数据表的所有记录。ZAP《实习教程》第8单元数据表的索引(参考答案)1.在ZGGZ.DBF的结构复合索引文件中,利用“表设计器”建立如下的索引项:1)按“姓名”索引,且索引标记为XM。2)按“出生日期”的降序索引,且索引标记为CSRQ。3)按“性别”和“职务”索引,且索引标记为XBZW。4)保存修改后,再显示数据表的当前顺序。(1)选“显示/表设计器”菜单命令,在“表设计器”对话框中选“索引”选项卡,在“索引名”中输入“XM”,“索引表达式”中输入“姓名”;(2)“排序”选“降序”,“索引名”中输入“CSRQ”,索引表达式中输入“出生日期”;(3)“索引名”中输入“XBZW”,“索引表达式”中输入“性别+职务”;(4)单击“确定”保存修改,在命令窗口中执行LIST命令,查看当前顺序。2.在数据表ZGGZ.DBF的结构复合索引文件中,利用命令建立如下的索引项:1)按“职务”索引,且索引标记为ZW,并显示结果。USEZGGZINDEXON职务TAGZWLIST2)按“职务”和“出生日期”索引,且索引标记为ZWCS,并显示结果。USEZGGZINDEXON职务+DTOC(出生日期,1)TAGZWCSLIST3)按“基本工资”和“奖金”索引,且索引标记为GZJJ,并显示结果。USEZGGZINDEXONSTR(基本工资)+STR(奖金)TAGGZJJLIST3.设置索引标记为ZWCS的索引项为主控索引,并显示结果。SETORDERTOZWCSLIST《实习教程》第9单元数据表的查找(参考答案)1.在数据表ZGGZ.DBF中,利用LOCATE命令进行如下顺序查找。1)查找编号为“004”的记录,并显示其编号、姓名和基本工资。usezggzlocate编号,姓名,基本工资for编号=”004”display2)在第4~8号记录中,查找并显示姓‘郭’的职工记录。(提示:可以利用范围,也可以使用记录号函数。)go4locatednext5forleft(姓名,2)=’郭’display3)顺序查找并显示所有职务为‘科员’的男职工记录。locatefor职务=’科员’and性别=’男’displaycontinuedisplay4)顺序查找并显示所有生日为8号的职工记录。locateforday(出生日期)=8displaycontinuedisplay5)查找并显示职务为科员且基本工资大于400元的职工记录。locatefor职务=’科员’and工资=400displaycontinue2.利用SEEK进行如下的快速查询。1)查找并显示姓名为“苏平”的职工记录。setordertoxmseek‘苏平’display2)查找并显示出所有职务为“科长”的职工记录。setordertozwseek‘科长’displayskipdisplay3)查找并显示男科长的记录。(提示:利用第8单元中按“性别”和“职务”建立的索引。)setordertoxbzwse