北大“數(shù)據(jù)庫(kù)原理”上機(jī)實(shí)踐題目總結(jié)(1)

字號(hào):

一、現(xiàn)有關(guān)于學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)的模式如下:
    學(xué)生(學(xué)號(hào),姓名,性別,出生日期,系號(hào));
    課程(課號(hào),課程名,學(xué)分);
    選修(學(xué)號(hào),課號(hào),成績(jī))
    學(xué)生與課程的聯(lián)系是M:N聯(lián)系。
    1.按題目要求建立表結(jié)構(gòu),各表各個(gè)字段的名字、數(shù)據(jù)類(lèi)型、長(zhǎng)度等根據(jù)語(yǔ)義和查詢(xún)的需要自行決定??筛鶕?jù)以下題目的需要建立索引。
    有些題目則可能需要建立中間表或臨時(shí)表。 (15分)
    2.利用你所熟悉的方法向各表錄入適量的、滿(mǎn)足題目需要的數(shù)據(jù)。各數(shù)據(jù)項(xiàng)的取值范圍應(yīng)該合理、有效,并與查詢(xún)要求相呼應(yīng)。 (10分)
    3.編寫(xiě)一個(gè)對(duì)選修表的數(shù)據(jù)修改程序。用學(xué)號(hào)和課號(hào)定位記錄,找到后,顯示該記錄,并提示用戶(hù)確認(rèn)“真的要修改嗎?”,
    根據(jù)用戶(hù)回答決定程序流程。
    要求只允許修改成績(jī)信息,不退出本程序能繼續(xù)進(jìn)行修改操作。 (20分)
    4.用FoxPro語(yǔ)言或SQL語(yǔ)言編寫(xiě)程序完成以下查詢(xún)。(以下四題依次為10分、10分、15分、20分)
    (1)列出學(xué)生名單,要包含所有學(xué)生的所有屬性,且在后一行顯示:
    女生的平均年齡為 xx 歲。
    (2)按照學(xué)分對(duì)課程進(jìn)行分類(lèi),列出每類(lèi)學(xué)分的課程數(shù),且在后一行顯示
    課程總數(shù)為 xx 門(mén)。
    (3)檢索選修課號(hào)為C2的學(xué)生的姓名、課程名和成績(jī),檢索結(jié)果按成績(jī)的降序排列。
    (4)檢索與ZANG同學(xué)同齡的學(xué)生的學(xué)號(hào)、姓名、課程名和成績(jī),并列表顯示。
    答案:3
    set talk off
    clear
    use sc
    index on sno +cno to 11
    dimension d(3)
    action=.t.
    answer=.t.
    do while action
    a=space(6)
    b=space(4)
    @ 1,1 say “sno:” get a picture “xxxxxx”
    @ 2,1 say “cno” get b picture “xxxx”
    read
    c=a+b
    seek c
    if found()
    scatter to d
    @ 5,2 say “sno” get d(1) picture“xxxxxx”
    @ 7,2 say “cno” get d(2) picture“xxxx”
    clear gets
    @ 9,2 say “grade” get d(3) picture“999.9”
    read
    @ 11,2 say “真的修改嗎?” get answer picture “l(fā)”
    read
    if answer
    clear
    gather from d
    @ 1,1 say “修改后的數(shù)據(jù)已存入!”
    endif
    if .not.answer
    clear
    endif
    endif
    if .not.found()
    clear
    @ 1,1 say “查無(wú)此人”
    endif
    @ 4,1 say “繼續(xù)查嗎?” get action picture “l(fā)”
    read
    clear
    enddo