等級三級數(shù)據(jù)庫歷年真題論述題詳解[1]

字號:

本題要求設(shè)計一個學(xué)生試卷成績輸入、查詢和成績單輸出系統(tǒng)(簡稱SRS)的數(shù)據(jù)結(jié)構(gòu)和算法要點。問題描述如下:
    要輸入到SRS系統(tǒng)中的每一份試卷成績反映一個學(xué)生選修一門課程的考試結(jié)果,它包括以下數(shù)據(jù)項:學(xué)號、姓名、課程名、成績。由于實行了靈活的選課制度,所以每個學(xué)生選修多少門課程,選修哪些課程都可以不同。要輸入的多份試卷成績并未按任何數(shù)據(jù)項排列順序,它們以任意的順序被輸入到系統(tǒng)中來。
    SRS系統(tǒng)要具有以下功能:①試卷成績插入,將試卷成績逐個插入到SRS系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)中。②學(xué)生成績查詢,給出學(xué)號查找該學(xué)生所選修的各門課程的考試成績。③成績單輸出,按學(xué)號遞增的順序依次輸出所有學(xué)生的學(xué)號、姓名,及其所選修的各門課程的課程名和成績。(為簡單起見,假設(shè)上述所有工作都在計算機內(nèi)存中進行。)
    請設(shè)計SRS系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)和算法要點,使上述三項操作都有較高的執(zhí)行效率。從以下方面闡述你的設(shè)計:
    (1)SRS系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)(15分)
    ①數(shù)據(jù)結(jié)構(gòu)的Pascal語句描述
    ②數(shù)據(jù)結(jié)構(gòu)的示意圖
    ③數(shù)據(jù)結(jié)構(gòu)的簡單文字說明
    (2)SRS系統(tǒng)的算法要點(10分)
    (只要簡單的文字說明,不必寫出Pascal程序)
    ①試卷成績插入
    ②學(xué)生成績查詢
    ③成績單輸出
    (3)簡單陳述你的上述設(shè)計的理由(5分)
    答案:
    本題可有多種不同的設(shè)計方案,下面給出其中一個較好的方案。
    (1)數(shù)據(jù)結(jié)構(gòu)(15分,其中對三種操作的有效支持各4分,敘述的條理性3分。)
    ①數(shù)據(jù)結(jié)構(gòu)的Pascal語句描述
    TYPEpptr=↑pnode;
    pnode=RECORD
    cname:string;
    score:0..100;
    next:pptr
    END;
    sptr=↑pnode;
    snode=RECORD
    sno:integer;
    sname:string;
    llink,rlink:sptr;
    plink:pptr
    END;
    VARt:sptr;