計算機等級考試二級VFP習題及答案:第三章

字號:

計算機等級考試二級VFP習題及答案:第三章

    一、思考題
    1.什么是數據庫表?什么是自由表?
    2.什么是表結構?表的哪幾種字段的寬度是固定不變的?
    3.打開表文件之后,為什么在Visual FoxPro主窗口沒有任何顯示信息?
    4.如何編輯備注型字段的值?
    5.LIST命令和DISPLAY命令有什么區(qū)別?
    6.如果缺省范圍子句,哪幾條命令只對當前記錄操作?
    7.ZAP命令和PACK命令有什么區(qū)別?
    8.什么是記錄指針,它的作用是什么?
    9.什么是排序和索引?為什么索引的查詢效率高?
    10.Visual FoxPro有幾種類型的索引?是否所有的索引都可以在自由表中使用?在表設計器中可以創(chuàng)建的索引文件是哪一種?
    11.什么是主控索引文件和主控索引標識?它們的作用是什么?
    12.LOCATE、FIND、SEEK命令在使用上有什么區(qū)別?怎么判斷查詢是否成功?
    二、選擇題
    1.某表文件有5個字段,其中3 個字符型寬度分別為6、12、和10,另外還有一個邏輯型字段和一個日期型字段,該數據庫文件中每條記錄的總字節(jié)數是 。
    A)37     B)38      C)39      D)40
    2.在表文件文件尾部增加一條空記錄,應該使用命令 。
    A)APPEND B)APPEND BLANK C)INSERT    D)INSERT BLANK
    3.設表文件及其索引文件已打開,為了確保指針定位在物理記錄號為1的記錄上,應該使用命令 。
    A)GO   B)GO BOF()   C)SKIP 1    D)GO 1
    4.設職工表文件已經打開,其中有工資字段,要把指針定位在第一個工資大于620元的記錄上,應使用命令 。
    A)FIND FOR 工資>620       B)SEEK 工資>620
    C)LOCATE FOR 工資>620      D)FIND 工資>620
    5.刪除學生表中姓王的學生,應使用命令 。
    A)DELETE FOR “王”$姓名 B)DELETE FOR SUBSTR (姓名,1,2)=“王”
    C)DELETE FOR 姓名=王* D)DELETE FOR RIGHT (姓名,1)=“王”
    6.USE職工
    LOCATE FOR工資=900
    為了將指針定位在下一個工資是900的記錄上,應該接著使用命令 。
    A)SKIP   B)CONTINUE     C)SEEK 900   D)FIND 900
    7.設當前表有10條記錄,當EOF()為真時,命令?RECNO()的顯示結果是 。
    A)10 B)11 C)0 D)空
    8.設當前表中姓名字段為字符型,要把內存變量NAME 字符串的內容輸入到當前記錄的姓名字段,應當使用命令 。
    A)姓名=NAME B)REPLACE 姓名 WITH NAME
    C)REPLACE 姓名 WITH &NAME D)REPLACE ALL 姓名 WITH NAME
    9.在Visual FoxPro中,打開索引文件的命令中,錯誤的是 。
    A) USE<庫文件名> INDEX TO <索引文件名>
    B) USE<庫文件名> INDEX <索引文件名>
    C) INDEX ON 職工號 TO <索引文件名>
    D) SET INDEX TO <索引文件名>
    10.順序執(zhí)行下面命令之后,屏幕所顯示的記錄號順序是 。
    USE XYZ
    GO 6
    LIST NEXT 4
    A)1~4 B)4~7 C)6~9 D)7~10
    11.在Visual FoxPro中,可以使用FOUND()函數來檢測查詢是否成功的命令包括 。
    A) LIST、FIND、SEEK B)FIND、SEEK、LOCATE
    C) FIND、DISPLAY、SEEK D) LIST、SEEK、LOCATE
    三、上機題
    1、建立表與復制表操作:
    (1)建立一個職工表(zg.dbf),字段有:職工號(C,6),姓名(C,8),性別(L),出生日期(D),職稱(C,10),基本工資(N,8,2),獎金(N,8,2),實發(fā)工資(N,8,2),其內容如下:
    (2)修改職工表表結構,在實發(fā)工資前增加一個新的字段,扣款(N,8,2)。
    (3)將zg.dbf的表結構復制到新表zg1.dbf中。
    (4)將zg.dbf 中的所有男教師的記錄都復制到zg2.dbf中。
    2、寫出下列顯示表記錄的命令。
    (1)顯示zg.dbf中所有的講師
    (2)顯示所有女教師的姓名
    (3)顯示70年后出生的教師
    (4)顯示第三條記錄的內容
    (5)顯示前三條男教師的姓名,出生日期,職稱
    (6)從第3條記錄開始顯示到末尾記錄
    (7)顯示所有男教授的姓名、年齡、基本工資
    (8)顯示所有男性教授或副教授
    (9)顯示所有姓林的教師
    (10)顯示姓名中有“林”字的記錄。
    3、修改命令。
    (1)計算實發(fā)工資字段的值,實發(fā)工資=基本工資+津貼-扣款。
    (2)在實發(fā)工資為0的情況下,分別執(zhí)行下列三條命令,比較它們的執(zhí)行結果。
    Repl 實發(fā)工資 with 基本工資+津貼-扣款
    Repl 實發(fā)工資 with 基本工資+津貼-扣款 for 職稱="講師"
    Repl all 實發(fā)工資 with 基本工資+津貼-扣款
    4、完成下列刪除與恢復的命令。
    (1)刪除所有男教師的記錄
    (2)在刪除所有男教師的記錄的前提下,除姓“林”的外,恢復所有男教師的記錄
    (3)在刪除所有男教師的記錄的前提下,除姓“陳”的助講外,恢復所有男教師的記錄
    5、對zg.dbf完成下排序、索引命令。
    (1)按基本工資降序建立排序文件szg1.dbf
    (2)按基本工資建立單項索引,文件名為izg1.idx
    (3)按基本工資建立結構復合索引文件,按降序索引
    (4)按基本工資建立獨立復合索引文件,索引標識為jbgz,按降序索引,文件名為zgd1.cdx
    (5)按基本工資升序,基本工資相同再按出生年月建立索引文件,文件名為zgd2.cdx
    (6)分別按姓名、職稱、出生日期建立結構復合索引文件,索引標識分別為XM、ZC、BIRTHDAY。
    (7)打開前面所建的所有索引文件,設置結構復合索引文件為主控索引文件,設置XM為主控索引。
    6、查找與統(tǒng)計。
    (1)查找林一凡
    (2)查找姓王的人
    (3)查找工資是820.00的記錄
    (4)查找職工號為3002姓名為丁強的記錄
    (5)查找66年8月4日出生,職稱為副教授的記錄
    (6)統(tǒng)計男教師與女教師的人數
    (7)統(tǒng)計女教師的實發(fā)工資、津貼總和
    (8)求男教師的平均基本工資
    (9)計算平均基本工資、平均津貼、基本工資和最少基本工資
    (10)按職稱進行基本工資的匯總,匯總結果寫入表zchz.dbf
    參考答案
    二、選擇題
    1、B 2、B 3、D 4、C 5、B 6、B 7、B 8、B 9、A 10、C 11、B
    三、上機題
    1、建立表與復制表操作:
    (1)用表設計器建立表zg.dbf,步驟詳見4.1.2建立表結構。
    (2)修改zg.dbf表結構,步驟詳見4.2.1 表結構的修改。
    (3)將zg.dbf的表結構復制到新表zg1.dbf中。
    USE ZG
    COPY STRU TO ZG1
    (4)將zg.dbf 中的所有男教師的記錄都復制到zg2.dbf中。
    USE ZG
    COPY TO ZG2 FOR 性別
    2、寫出下列顯示表記錄的命令。
    (1)顯示zg.dbf中所有的講師
    USE ZG
    LIST FOR 職稱=“講師”
    (2)顯示所有女教師的姓名
    LIST 姓名 FOR 性別=.F.(或 LIST 姓名 FOR !性別 )
    (3)顯示70年后出生的教師
    LIST FOR 出生日期>{^1970/01/01} 或 LIST FOR YEAR(出生日期)>1970
    (4)顯示第三條記錄的內容
    LIST RECO 3
    (5)顯示前三條男教師的姓名,出生日期,職稱
    GO
    LIST NEXT 3 FOR 性別 FIELDS 姓名,出生日期,職稱
    (6)從第3條記錄開始顯示到末尾記錄
    GO 3
    LIST REST
    (7)顯示所有男教授的姓名、年齡、基本工資
    LIST 姓名,年齡,基本工資 FOR 性別 AND 職稱="教授"
    (8)顯示所有男性教授或副教授
    LIST FOR 性別 AND (職稱="教授" OR 職稱="副教授")
    (9)顯示所有姓林的教師
    命令一:LIST FOR LEFT(姓名,2)="林"
    命令二:LIST FOR SUBSTR(姓名,1,2)="林"
    命令三:LIST FOR 姓名="林"
    (10)顯示姓名中有“林”字的記錄。
    LIST FOR "林"$姓名
    3、修改命令
    (1)計算實發(fā)工資字段的值,實發(fā)工資=基本工資+津貼-扣款。
    REPL ALL 實發(fā)工資 WITH 基本工資+津貼-扣款
    (2)在實發(fā)工資為0的情況下,分別執(zhí)行下列三條命令,比較它們的執(zhí)行結果。
    REPL 實發(fā)工資 WITH 基本工資+津貼-扣款
    REPL 實發(fā)工資 WITH 基本工資+津貼-扣款 FOR 職稱="講師"
    REPL ALL 實發(fā)工資 WITH 基本工資+津貼-扣款
    4、完成下列刪除與恢復的命令
    (1)刪除所有男教師的記錄
    DELE FOR 性別
    (2)在刪除所有男教師的記錄的前提下,除姓“林”的外,恢復所有男教師的記錄
    RECA FOR !(SUBSTR(姓名,1,2)="林")
    (3)在刪除所有男教師的記錄的前提下,除姓“陳”的助講外,恢復所有男教師的記錄
    RECA FOR !(SUBSTR(姓名,1,2)="陳" AND 職稱="助教")
    5、對zg.dbf完成下排序、索引命令
    (1)按基本工資降序建立排序文件szg1.dbf
    SORT ON 基本工資/D TO SZG1
    (2)按基本工資降序建立單項索引,文件名為izg1.idx
    INDEX ON -基本工資 TO IZG1
    (3)按基本工資建立結構復合索引文件,按降序索引
    INDEX ON 基本工資 TAG GZ DESC
    (4)按基本工資建立獨立復合索引文件的降序,索引標識為jbgz,文件名為zgd1.cdx
    INDEX ON 基本工資 DESC TAG JBGZ OF ZGD1
    (5)按基本工資升序,基本工資相同再按出生年月建立索引文件,文件名為zgd2.cdx
    USE ZG
    INDEX ON STR(基本工資,6,2)+DTOC(出生日期) TAG GZCS OF ZGD2
    (6)分別按姓名、職稱、出生日期建立結構復合索引文件,索引標識分別為XM、ZC、BIRTHDAY。
    USE ZG1
    INDEX ON 姓名 TAG XM
    INDEX ON 職稱 TAG ZC
    INDEX ON 出生日期 TAG BIRTHDAY
    (7)打開前面所建的所有索引文件,設置結構復合索引文件為主控索引文件,設置XM為主控索引。
    SET INDEX TO IZG1, ZGD1,ZGD2 ORDER TAG XM
    或 SET INDEX TO IZG1, ZGD1,ZGD2
    SET ORDER TO TAG XM
    6、查找與統(tǒng)計
    (1)查找林一凡
    USE ZG
    SET INDEX TO XM
    FIND 林一凡
    SEEK "林一凡"
    (2)查找姓王的人
    FIND 王
    SEEK "王"
    (3)查找工資是820.00的記錄
    INDEX ON 基本工資 TAG SALARY
    FIND 820 或SEEK 820
    (4)查找職工號為3002叫丁強的記錄
    INDEX ON職工號+姓名 TAG GHXM
    FIND 3002丁強 或 SEEK "3002"+"丁強"
    (5)查找66年8月4日出生的副教授
    INDEX ON DTOC(出生日期)+職稱 TO BZC
    SEEK "08/04/66"+"副教授"
    (6)統(tǒng)計男教師與女教師的人數
    COUNT FOR 性別 TO X1
    COUNT FOR !性別 TO X2
    (7)統(tǒng)計女教師的實發(fā)工資、津貼總和
    SUM 實發(fā)工資,津貼 FOR !性別 TO Y1,Y2
    (8)求男教師的平均基本工資
    AVERAGE 基本工資 FOR 性別
    (9)計算平均基本工資、平均津貼、基本工資和最少基本工資
    CALC AVG(基本工資),AVG(獎金),MAX(基本工資),MIN(基本工資)
    (10)按職稱進行基本工資的匯總,匯總結果寫入表zchz.dbf
    SET ORDER TO TAG ZC
    TOTAL ON 職稱 TO ZCHZ FIELDS 基本工資
    USE ZCHZ
    LIST
    注意:在zchz.dbf中只有四條記錄。