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

字號:

一、現(xiàn)有關(guān)于學(xué)生成績管理數(shù)據(jù)庫的模式如下:
    學(xué)生(學(xué)號,姓名,性別,出生日期,系號);
    課程(課號,課程名,學(xué)分);
    選修(學(xué)號,課號,成績)
    學(xué)生與課程的聯(lián)系是M:N聯(lián)系。
    1.按題目要求建立表結(jié)構(gòu),各表各個字段的名字、數(shù)據(jù)類型、長度等根據(jù)語義和查詢的需要自行決定。可根據(jù)以下題目的需要建立索引。
    有些題目則可能需要建立中間表或臨時表。 (15分)
    2.利用你所熟悉的方法向各表錄入適量的、滿足題目需要的數(shù)據(jù)。各數(shù)據(jù)項的取值范圍應(yīng)該合理、有效,并與查詢要求相呼應(yīng)。 (10分)
    3.編寫一個對選修表的數(shù)據(jù)修改程序。用學(xué)號和課號定位記錄,找到后,顯示該記錄,并提示用戶確認(rèn)“真的要修改嗎?”,
    根據(jù)用戶回答決定程序流程。
    要求只允許修改成績信息,不退出本程序能繼續(xù)進(jìn)行修改操作。 (20分)
    4.用FoxPro語言或SQL語言編寫程序完成以下查詢。(以下四題依次為10分、10分、15分、20分)
    (1)列出學(xué)生名單,要包含所有學(xué)生的所有屬性,且在后一行顯示:
    女生的平均年齡為 xx 歲。
    (2)按照學(xué)分對課程進(jìn)行分類,列出每類學(xué)分的課程數(shù),且在后一行顯示
    課程總數(shù)為 xx 門。
    (3)檢索選修課號為C2的學(xué)生的姓名、課程名和成績,檢索結(jié)果按成績的降序排列。
    (4)檢索與ZANG同學(xué)同齡的學(xué)生的學(xué)號、姓名、課程名和成績,并列表顯示。
    答案: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 “查無此人”
    endif
    @ 4,1 say “繼續(xù)查嗎?” get action picture “l(fā)”
    read
    clear
    enddo