07年自考“數(shù)據(jù)庫及其應(yīng)用Foxpro”實(shí)驗(yàn)題(4)

字號:

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