自考“數(shù)據(jù)庫及其應用Foxpro”實驗題(4)

字號:

第4組實驗題
    上機步驟和操作說明
    (1)Windows NT用戶注冊,用戶名為個人賬號,口令欄直接按回車。
    (2)進入Visual FoxPro(VFP)系統(tǒng)環(huán)境,中途不要退出。
    (3)在VFP命令窗口中鍵入以下兩條命令:
    SET DEFAULT TO Z:\<目錄名> (目錄名即你的賬號,目錄已建好)
    SET SAFETY OFF
    第一條命令的目的是設置你的缺省工作目錄,這樣,操作命令中就不要再帶路徑名。
    (4)按題目要求創(chuàng)建數(shù)據(jù)庫,錄入數(shù)據(jù),編寫程序。
    (5)在程序編輯器窗口錄入、修改程序,編輯完畢,保存后再執(zhí)行。
    (6)第3題和第4題的各小題,都要分別保存為一個程序文件。文件名要用“賬號+題號”命名,例如:C100_3,表示是C100賬戶的第3題的程序。C108_4_2表示是C108賬戶的第4題的第(2)小題的程序。
    (7)做題次序不限,實現(xiàn)方法不限。題目中所謂的“表”即指“數(shù)據(jù)庫文件”。為減少錄入的負擔,表名、字段名、變量名等盡量不要用漢字,可用英文或漢語拼音。
    現(xiàn)有關于科研項目管理數(shù)據(jù)庫的模式如下:
    項目(項目號,項目名,領域,經費,負責人)
    人員(職工號,姓名,出生日期,職稱)
    承擔(職工號,項目號,業(yè)績評分)
    項目與人員是多對多聯(lián)系。一個項目只設一名負責人。一個研究領域可有多個研究項目。假設有數(shù)據(jù)倉庫(DW)、空間信息(SI)、人工智能(AI)、網(wǎng)絡(NW)等領域。
    要求完成如下操作:
    1.按題目要求建立表結構,各表各個字段的名字、數(shù)據(jù)類型、長度等根據(jù)語義和查詢的需要自行決定。根據(jù)查詢需要建立索引。 (15分)
    2.利用你所熟悉的方法向各表錄入適量的、滿足題目需要的數(shù)據(jù)。各數(shù)據(jù)項的取值范圍應該合理、有效,并與查詢要求相呼應。 (10分)
    3.編寫一個按項目經費查找項目信息的查詢程序。允許用戶在鍵入的經費數(shù)值前加<、=、>三種不同的比較運算符,以表示不同的查詢要求。如果查到,則顯示滿足條件的記錄;如果查不到,則顯示:“無滿足條件的項目!”。要求不退出本程序能繼續(xù)執(zhí)行查詢操作。(20分)
    4.用FoxPro語言或SQL語言編寫程序完成以下查詢。在求解過程中有的題目可能需要建立若干臨時表。(以下三題依次為15分、20分、20分)
    (1)列出項目清單,要包含所有項目的項目號、項目名、領域和經費信息,且在最后一行顯示:
    數(shù)據(jù)倉庫和人工智能領域且經費在25萬元以上的項目有 xx 個。
    (2)列出50歲以下的教授的職工號、姓名、出生日期和所承擔項目的總業(yè)績分,并按總業(yè)績分的降序排列。
    (3)計算各個領域項目參加者的平均年齡,存入一個新表,其結構如下:
    領域  平均年齡 
    DW    
    SIS    
    ……    
    第4組實驗題
    現(xiàn)有關于科研項目管理數(shù)據(jù)庫的模式如下:
    項目(項目號,項目名,領域,經費,負責人)
    人員(職工號,姓名,出生日期,職稱)
    承擔(職工號,項目號,業(yè)績評分)
    項目與人員是多對多聯(lián)系。一個項目只設一名負責人。一個研究領域可有多個研究項目。假設有數(shù)據(jù)倉庫(DW)、空間信息(SI)、人工智能(AI)、網(wǎng)絡(NW)等領域。
    要求完成如下操作:
    1.按題目要求建立表結構,各表各個字段的名字、數(shù)據(jù)類型、長度等根據(jù)語義和查詢的需要自行決定。根據(jù)查詢需要建立索引。(15分)
    答:見第4組實驗題答案文件夾。
    2.利用你所熟悉的方法向各表錄入適量的、滿足題目需要的數(shù)據(jù)。各數(shù)據(jù)項的取值范圍應該合理、有效,并與查詢要求相呼應。(10分)
    答:見第4組實驗題答案文件夾。
    3.編寫一個按項目經費查找項目信息的查詢程序。允許用戶在鍵入的經費數(shù)值前加<、=、>三種不同的比較運算符,以表示不同的查詢要求。如果查到,則顯示滿足條件的記錄;如果查不到,則顯示:“無滿足條件的項目!”。要求不退出本程序能繼續(xù)執(zhí)行查詢操作。(20分)
    答:程序清單如下
    clear
    set talk off
    use 第4組實驗題答案文件夾\xiangmu
    act=.t.
    do while act
    clear
    ch=“ ”
    n=0
    @ 1,5 say “請輸入待查詢項目的經費信息(格式:n):”
    @ 2,5 get ch picture “x” valid ch=“<” or ch=“=” or ch=“>”
    @ 2,6 get n picture “9999999.99”
    read
    go top
    clear
    do case
    case ch=“=”
    scan for 經費=n
    display
    endscan
    case ch=“<”
    scan for 經費    display
    endscan
    case ch=“>”
    scan for 經費>n
    display
    endscan
    endcase
    go top
    n1=經費
    n2=經費
    do while not eof()
    if n1>經費
    n1=經費
    endif
    if n2<經費
    n2=經費
    endif
    skip
    enddo
    if (nn2)
    @ row()+1,5 say “無滿足條件的項目”
    endif
    @ row()+1,5 say “還繼續(xù)查找嗎(Y/N)?” get act picture “L”
    read
    enddo
    use
    clear
    set talk on
    return
    4.用FoxPro語言或SQL語言編寫程序完成以下查詢。在求解過程中有的題目可能需要建立若干臨時表。(以下三題依次為15分、20分、20分)
    (1)列出項目清單,要包含所有項目的項目號、項目名、領域和經費信息,且在最后一行顯示:
    數(shù)據(jù)倉庫和人工智能領域且經費在25萬元以上的項目有 xx 個。
    答:程序清單如下
    clear
    set talk off
    use 第4組實驗題答案文件夾\xiangmu
    count for (領域=“數(shù)據(jù)倉庫” or 領域=“人工智能”) and (經費>250000) to n1
    list off 項目號,項目名,領域,經費
    ? “ 數(shù)據(jù)倉庫和人工智能領域且經費在25萬元以上的項目有”+str(n1,2)+“個”
    use
    set talk on
    return
    (2)列出50歲以下的教授的職工號、姓名、出生日期和所承擔項目的總業(yè)績分,并按總業(yè)績分的降序排列。
    答:程序清單如下
    clear
    set talk off
    select B.職工號 as 職工號,B.姓名 as 姓名,b.出生日期 as 出生日期,sum(C.業(yè)績評分) as 總業(yè)績分;
    from 第4組實驗題答案文件夾\xiangmu A, 第4組實驗題答案文件夾\renyuan B,;
    第4組實驗題答案文件夾\chengdan C;
    where (A.項目號=C.項目號) and (C.職工號=B.職工號) and (B.職稱=“教授”) ;
    and (year(date())-year(B.出生日期))<50;
    group by B.姓名;
    into table 第4組實驗題答案文件夾\zongfen
    use 第4組實驗題答案文件夾\zongfen
    index on -總業(yè)績分 to 第4組實驗題答案文件夾\zongfen0
    list off 職工號,姓名,出生日期,總業(yè)績分
    close databases
    set talk on
    return
    (3)計算各個領域項目參加者的平均年齡,存入一個新表,其結構如下:
    領域  平均年齡 
    DW    
    SIS    
    ……    
    答:程序清單如下
    clear
    set talk off
    select b.職工號 as 職工號,a.領域 as 領域,(year(date())-year(b.出生日期)) as 年齡;
    from 第4組實驗題答案文件夾\xiangmu a, 第4組實驗題答案文件夾\renyuan b,;
    第4組實驗題答案文件夾\chengdan c;
    where a.項目號=c.項目號 and c.職工號=b.職工號;
    into cursor tmp
    select tmp.領域 as 領域,avg(tmp.年齡) as 平均年齡;
    from tmp;
    group by tmp.領域;
    into table 第4組實驗題答案文件夾\pingjun
    close databases
    use 第4組實驗題答案文件夾\pingjun
    list off
    use
    set talk on
    return