第二章练习题一、选择题1、在VisualFoxPro中,用户打开一个表后,若要显示其中的记录,可以使用的命令是()。A.BROWSEB.SHOWCVIEWD.USE2、已经打开的表文件的当前记录号为150,要将记录指针移动到记录号为100的命令是()。A.SKIP100B.SKIP-50CGOTO-50D.GOTO503、要想对一个打开的表增加新字段,应使用命令()。A.APPENDB.MODIFYSTRUCTURECREPLACED.CHANGE4、设当前数据表文件中含有salary字段,命令REPLACEsalaryWITH1500的功能是()。A.将数据表中所有记录的salary字段的值都改为1500B.只将数据表中当前记录的salary字段的值改为1500C.由于没有指定条件,所以不能确定D.将数据表中以前未更改过的记录的salary字段的值改为15005、一个数据表有10条记录,用函数EOF()测试结果为.T.,此时当前记录号为()。A.10B.11C0D.16、假设数据表CZ中有记录,对该表进行如下操作:USECZGOTOP?BOF()SKIP-1?BOF()GOBOTTOM?EOF()SKIP?EOF()结果是()。A..T..T..T..T.B..F..T..T..T.C.F..T..F..T.D..T..T..F..T.7、表文件中有30条记录,当前记录是20,执行命令LISTNEXT5后,所显示的记录号是()。A.21~25B.21~26C20~25D.20~248、逻辑删除表文件中所有记录的正确操作是()。A.DELETEB.ZAPCPACKD.DELETEALL9、命令SETDELETEDOFF的作用是A.禁止对数据表记录进行删除B.使删除标记对任何命令无影响C.执行删除命令时,不提供任何信息D.取消删除标记10、已知当前数据库表文件GZ.DBF中包含“出生年月”字段为日期型,要求显示1960年以后(包括1960年)出生的人员记录,使用命令是()。A.LISTFOR出生年月=1960B.LISTFOR出生年月=60C.LISTFORYEAR(出生年月)=1960D.LISTFORYEAR(出生年月)=6011、若一个表文件中有100条记录,当前记录号是76,执行命令SKIP30之后,再执行命令?RECNO(),其结果是()。A.100B.106C错误提示D.10112、要为当前表的所有职工增加100元工资,应该使用的命令是()。A.CHANGE工资WITH工资+100B.REPLACE工资WITH工资+100C.CHANGEALL工资WITH工资+100D.REPLACEALL工资WITH工资+10013、已知一个表文件有8条记录,当前记录号为5,执行APPENDBLANK命令后,该空记录的记录号是()。A.6B.5C.9D.8二、填空题1、要彻底删除当前打开的表中的所有记录,可以使用________命令。2、SET___________________可以使对数据表的操作能够绕过带删除标记的记录。3、删除表的记录通常要分为两步,第一步是_________________,第二步是____________。4、自由表的扩展名为____________。三、设计题(一)按图1中的表结构建立自由表student.dbf,然后按图2中的记录录入。最后对该表进行如下操作:图1图21、打开数据表student.dbf。2、将姓名为“张三”的学号改为“902016”3、将“photo1.bmp”和“photo2.bmp”拷贝到D盘根目录下,然后分别在第3和第4条记录的“照片”字段插入图片“photo1.bmp”和“photo2.bmp”。4、在工作区显示第3条记录“照片”字段中的内容。5、显示表中所有男同学的学号、姓名、性别和专业。(使用DISPLAY显示)6、显示88年后(包含88年)出生的学生的所有信息。(使用YEAR()函数)7、显示第5条记录。8、显示7、8、9三条记录。9、建立一个与student.dbf完全相同的stud1.dbf。10、建立数据表sutd2.dbf,其中包含student2.dbf中所有“旅游”专业的学生,且只有学号、姓名、专业、入学总分和是否保送五个字段。(二)对数据表stud1.dbf进行如下操作:(注意:首先要打开表stud1.dbf)1、逻辑删除数据表stud1.dbf中的保送生。2、只显示没有添加删除标记的学生信息。3、为最后一条记录加删除标记。4、恢复保送生记录。5、逻辑删除3、4、5、6四条记录。6、恢复第5条记录。7、物理删除所有加删除标记的记录。8、逻辑删除第3条往后的所有记录。9、恢复所有加删除标记的记录。10、清空表中所有记录,并查看表结构。答案:一、选择题:12345678910111213ABBBBCDDBCDDC二、填空题1、ZAP2、DELETEDON3、添加删除标记(或逻辑删除)、物理删除4、DBF三、设计题(一)1、USESTUDENT2、BROWSE或BROWSEFIELDS学号,姓名3、GO3APPENDGENERAL照片FROM”D\photo1.bmp”SKIP或GO4APPENDGENERAL照片FROM”D:\photo2.bmp”4、GO3@5,10SAY照片5、DISPLYFIELDS学号,姓名,性别,专业FOR性别=’男’6、LISTYEAR(出生年月)=19887、LISTRECORD58、GO7LISTNEXT39、COPYTOSTUD110、COPYTOSTUD2FIELDS学号,姓名,专业,入学总分,是否保送FOR专业=’旅游’(二)1、DELETEFOR是否保送或DELETEFOR是否保送=.T.2、SETDELETEDONLIST3、GOBOTTOMDELETE4、RECALLFOR是否保送5、GO3DELETENEXT46、RECALLRECORD57、PACK8、GO3DELETEREST9、RECALLALL10、ZAPLISTSTURCTURE第三章上机题一1、对学生.dbf所有1971年以后出生的学生按照一般索引文件sxm.idx。INDEXON姓名TOSXMFORYEAR(出版日期)19712、对学生.dbf建立结构复合索引文件。以专业和出生日期的降序建立索引,索引标记名为ZYRQ。INDEXONALLTRIM(专业)+DTOS(出生日期)TAGZYRQ3、对学生.dbf按入学总分建立索引,标记名为zf。INDEXON入学总分TOZF4、对ts1.dbf在表设计器里,建立三个索引标记:1)以作者为关键字(标记名为ZZXM)2)以出版社为关键字(标记名为CBSMC)3)以单价和出版日期为关键字(标记名为XSJGRQ)5、对ts1.dbf按照书名生成索引文件TSMC.IDX,再按照作者生成索引文件ZZ.IDX。INDEXON书名TOTSMCINDEXON作者TOZZ6、对ts1.dbf完成以下操作,每次操作后都显示表的顺序:1)打开索引文件TSMC.IDX和ZZ.IDX,并设置ZZ.IDX为主索引。USETSSETINDEXTOTSMC,ZZORDER2或USETSINDEXTSMC,ZZORDER22)设置索引文件TSMC.IDX为主索引SETORDERTO1SETINDEXTOTSMCUSETSINDEXTSMC3)关闭索引文件ZZ.IDXSETINDEXTO4)设置CBSMC为主标记SETORDERTOTAGCBSMC5)设置ZZXM为主标记USETSORDERTAGZZXM6)删除标记XSJGRQDELETETAGXSJGRQ7、写出下列函数的执行结果。1)?DTOC({^1999-04-01})‘04/01/99’2)?DTOS({^1999-04-01})‘19990401’8、对ts1.dbf按照单价降序排列,对单价相同的记录按照书名排序,生成文件TSYX2.DBF。SORTTOTSYX2ON单价/D,书名第三章上机题二1、对zgda.dbf所有性别为男的职工按照XM(姓名)建立索引文件xmsy.idx..usezgdaINDEXONXMTOXMSYFOR性别=’男’2、对zgda.dbf建立结构复合索引文件,其中包含:(1)按照BM(部门)建立索引(标记名为BM)INDEXONBMTAGBM(2)按照HF(婚否)建立唯一索引(标记名为HF)INDEXONHFTAGHFUNIQUE(3)按照JBGZ降序建立索引(标记名为JBGZ)INDEXONJBGZTAGJBGZDESC3、对zgda.dbf按照JBGZ降序建立排序文件ZGJB.DBF。SORTTOZGJBONJBGZ/D4、对学生.dbf建立按专业和入学总分建立一般索引文件ZYFS.IDX。INDEXONALLTRIM(专业)+STR(入学总分,7,1)TOZYFS5、对学生.dbf按学号降序建立索引,标记名为xh.。INDEXON学号TAGXHDESC6、对学生.dbf按专业建立唯一索引,标记名ZY。INDEXON专业TAGZYUNIQUE5、显示学生.dbf中第二条记录的姓名字段在去掉空格后的实际宽度。GO2?LEN(ALLTRIM(姓名))第三章上机题四1、在ts1.dbf中完成以下查找:1)查找清华大学出版社出版的的所有图书。(用两种方法)方法1:usets1Locatefor出版社=’清华大学出版社’?found()DISPcontinue方法2:USETS1indexon出版社TOCBS1SEEK“清华大学出版社”DISPSKIP2)查找库存低于5的所有图书编号及名称。USETS1LOCATEFOR册数5DISP书号,书名CONTINUEDISP书号,书名3)用SEEK方式查找书名为计算机网络的单价和出版时间。USETSINDEXON书名TAGSMSEEK“计算机网络”DISP单价,出版时间2、用LOCATE查找1999年以后出版并且单价大于40的书的名称和作者。(使用.AND.)LOCATEFOR单价40.AND.YEAR(出版时间)1999?EOF()DISP书名,作者CONTINUE3、查找书名中含有‘VB’两个字符的图书。(使用$)LOCATEFOR‘VB’$书名?EOF()DISP4、使用SEEK命令查询作者姓王的图书的名称和出版时间。分别设置SETEXACTON和SETEXATOFF,看结果有何不同。USETSINDEXON作者TAGZZSEEK‘王’?EOF()DISP书名,出版社时间SETEXACTONSEEK‘王’5、对ts1.dbf完成以下操作,每次操作后都显示表的顺序:1)打开索引文件TSMC.IDX和ZZ.IDX,并设置ZZ.IDX为主索引。USETS1SETINDEXTOTSMC,ZZORDER2或USETSINDEXTSMC,ZZORDER22)设置索引文件TSMC.IDX为主索引SETORDERTO1SETINDEXTOTSMCUSETSINDEXTSMC3)关闭索引文件ZZ.IDXSETINDEXTO4)设置CBSMC为主标记SETORDERTOTAGCBSMC5)设置ZZXM为主标记USETS1ORDERTAGZZXM6)删除标记XSJGRQDELETETAGXSJGRQ第三章上机题五1、使用SEEK命令查找出版社为电子工业出版社并且单价为32的图书名称和作者。INDEXONALLTRIM(出版社)+STR(单价,5,2)TAGCBDJSEEK‘电子工业出版社’+STR(32,5,2)?FOUND()DISP书名,作者2、使用SEEK命令查找出版时间为2000年3月1日出版的图书的书名和出版社名称。INDEXON出版时间TAGCBSJSEEK{^2000-03-01}?EOF()DISP书名,出版社3、A=‘清华大学出版社’,使用&查找清华大学出版社出版的图书的名称和单价。A=’清华大学出版社’SETORDERTOTAGCBS或SETINDEXTOCBS1FIND&