一.对错题
1.Visual FoxPro数据库管理系统一次只能打开一个表文件,所以它不能进行多个表间的操作。
2.FoxPro中有两种变量,一种是字段变量,另一种是内存变量,它们各有五种类型,即C, N, D, L, M型.
3.当EOF()为真时,RECNO() 永远为RECCOUNT()+1.
4.DELETE ALL和ZAP命令都可以删除表文件的记录,没什么区别.
5.SET EXACT ON只对字符串运算起作用.
6.可以用“=”命令给字段变量赋值.
7.用REPLACE命令不仅可以替换字段变量中的值,也可以替换内存变量中的值.
8.FoxPro与FoxBASE是互为兼容的两种数据库管理系统.
9.DATE()-CTOD(“03/12/98”)的数据类型是D型.
10.索引文件可以独立打开并使用.
二.单项选择题
1.在表结构中,逻辑型、日期型、备注型字段的宽度分别为 。
A.3,8,10 B.1,6,10 C.1,8,任意 D.1,8,10
2.内存变量一旦定义后,它的 可以改变。
A.类型和值 B.值 C.类型 D.宽度
3.当前记录号可用函数 (1) 求得,如果一个表中有8个记录,当EOF()为真时,则当前记录号为 (2) ;
当BOF()为真时,当前记录号为 (3) 。
(1)A.EOF() B.BOF() C.ROW() D.RECNO()
(2)A.8 B.9 C.0 D.无值
(3)A.0 B.1 C.8 D.无值
4.用INSERT命令插入一条记录时,被插入的记录在表中的位置是 。
A.表最前面 B.表最末尾 C.当前记录之前 D.当前记录之后
5.在表文件已打开的情况下,打开索引文件可用命令 。
A.USE “索引文件名表”
B.INDEX WITH “索引文件名表”
C.SET INDEX TO “索引文件名表”
D.INDEX ON “索引文件名表”
6.清除以A开头的所有内存变量的命令是 。
A.RELEASE ALL A* B.RELEASE A*
C.ERASE A* D.RELEASE ALL LIKE A*
7.一个过程必须以 (1) 开头,为了调用该过程,必须通过 (2) 打开该过程文件。
(1)A.PARAMETER B.PROCEDURE C.MODULE D.PROGRAM
(2)A.SET PROCEDURE TO <过程文件>
B.OPEN <过程文件>
C.USE <过程文件>
D.USE PROCEDURE <过程文件>
8.用户定义的函数的值必须 (1) ,调用方式为 (2) 。
(1)A.用RETURN返回 B.赋给函数名 C.为数字型函数 D.赋给某个全局变量
(2)A.函数名 WITH 自变量 B.DO 函数名(自变量)
C.CALL 函数名 WITH 自变量 D.函数名(自变量)
9.设1号工作区上已打开别名为“ZGGZ”的表文件,当前工作区为2号区,命令不能使1号工作区成为主工作区的是 。
A.SELECT 1 B.SELECT 0 C.SELECT A D.SELECT ZGGZ
10.CONTINUE命令必须与 (1) 命令配合使用,其作用是 (2) 。
(1)A.DO WHILE B.SKIP C.REPLACE D.LOCATE
(2)A.继续执行循环体 B.继续查找满足条件的记录
C.从程序的断点继续执行 D.继续修改下一个记录
11.假设已打开学生表和相应的索引文件,并有一个内存变量W,其值为“李华”,可用 命令来查找姓名为“李华”的学生。
A.LOCATE W B.SEEK 李华 C.SEEK W D.LOCATE 李华
三.问答题
假定当前表文件为TEACHER.DBF,其结构为:职工号码(C,6)、姓名(C,8)、性别(C,2)、年龄(N,2)、职称(C,10)、婚否(L,1)、工作日期(D,8)和基本工资(N,4),其中有若干条记录。请写出完成以下操作的命令:
1.显示1976年以后参加工作的所有记录.
2.显示年龄在30岁以上且未婚的所有记录.(已婚为.T.)
3.显示“副教授”或“教授”的男性记录,只显示姓名、职称、基本工资,不带记录号.
4.将姓名为“王芳”的职称改为“副教授”.
5.将所有记录的基本工资上调10%,预算全年基本工资总额数.
6.对所有职称为“讲师”且基本工资大于500的记录,将他们的职称晋升为“副教授”,基本工资上调10%.
7.根据职称建立一个索引标记ZC,放在结构化复合索引文件中.
8.统计1962年以前(包括1962年)参加工作的男性职工人数并存入A1变量中.
9.统计未婚的人数并存入到A2变量中。
10.将A1与 A2两个内存变量存入A盘根目录下,文件取名为RSGL.MEM。
四. 写出下列程序运行后的结果
1.SET TALK OFF
M=3
DO WHILE M<10
N=2
DO WHILE N<=M-1
IF INT(M/N)=M/N
EXIT
ENDIF
IF N=M-1
? M
ENDIF
N=N+1
ENDDO
M=M+1
ENDDO
SET TALK ON
2.SET TALK OFF
A=3
B=5
DO PP WITH 2*A,B
SET TALK ON
RETURN
PROCEDURE PP
PARAMETERS X,Y
CLEAR
S=X*Y
? “S=”+STR(S,3)
RETURN
3. PUBLIC A
SET TALK OFF
A=1
C=5
DO SUB
? “主程序中:A,B,C”,A,B,C
SET TALK ON
RETURN
PROCEDURE SUB
PUBLIC B
PRIVATE C
A=A+1
B=2
C=3
D=4
? “SUB中:A,B,C,D”,A,B,C,D
RETURN
五. 请编出实现下面表单所需的事件代码
(1)数据环境的BeforeOpenTables事件代码:
(2)“首记录”按钮的CLICK事件代码:
(3)“前一条”按钮的CLICK事件代码:
(4)“后一条”按钮的CLICK事件代码:
(5)“末记录”按钮的CLICK事件代码:
(6)“添加”按钮的CLICK事件代码:
(7)“删除”按钮的CLICK事件代码:
(8)页面1“退出”按钮的CLICK事件代码:
(9)页面2“退出”按钮的CLICK事件代码: