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

字號(hào):

本題要求設(shè)計(jì)一個(gè)學(xué)生試卷成績(jī)輸入、查詢和成績(jī)單輸出系統(tǒng)(簡(jiǎn)稱SRS)的數(shù)據(jù)結(jié)構(gòu)和算法要點(diǎn)。問(wèn)題描述如下:
    要輸入到SRS系統(tǒng)中的每一份試卷成績(jī)反映一個(gè)學(xué)生選修一門課程的考試結(jié)果,它包括以下數(shù)據(jù)項(xiàng):學(xué)號(hào)、姓名、課程名、成績(jī)。由于實(shí)行了靈活的選課制度,所以每個(gè)學(xué)生選修多少門課程,選修哪些課程都可以不同。要輸入的多份試卷成績(jī)并未按任何數(shù)據(jù)項(xiàng)排列順序,它們以任意的順序被輸入到系統(tǒng)中來(lái)。
    SRS系統(tǒng)要具有以下功能:①試卷成績(jī)插入,將試卷成績(jī)逐個(gè)插入到SRS系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)中。②學(xué)生成績(jī)查詢,給出學(xué)號(hào)查找該學(xué)生所選修的各門課程的考試成績(jī)。③成績(jī)單輸出,按學(xué)號(hào)遞增的順序依次輸出所有學(xué)生的學(xué)號(hào)、姓名,及其所選修的各門課程的課程名和成績(jī)。(為簡(jiǎn)單起見(jiàn),假設(shè)上述所有工作都在計(jì)算機(jī)內(nèi)存中進(jìn)行。)
    請(qǐng)?jiān)O(shè)計(jì)SRS系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)和算法要點(diǎn),使上述三項(xiàng)操作都有較高的執(zhí)行效率。從以下方面闡述你的設(shè)計(jì):
    (1)SRS系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)(15分)
    ①數(shù)據(jù)結(jié)構(gòu)的Pascal語(yǔ)句描述
    ②數(shù)據(jù)結(jié)構(gòu)的示意圖
    ③數(shù)據(jù)結(jié)構(gòu)的簡(jiǎn)單文字說(shuō)明
    (2)SRS系統(tǒng)的算法要點(diǎn)(10分)
    (只要簡(jiǎn)單的文字說(shuō)明,不必寫出Pascal程序)
    ①試卷成績(jī)插入
    ②學(xué)生成績(jī)查詢
    ③成績(jī)單輸出
    (3)簡(jiǎn)單陳述你的上述設(shè)計(jì)的理由(5分)
    答案:
    本題可有多種不同的設(shè)計(jì)方案,下面給出其中一個(gè)較好的方案。
    (1)數(shù)據(jù)結(jié)構(gòu)(15分,其中對(duì)三種操作的有效支持各4分,敘述的條理性3分。)
    ①數(shù)據(jù)結(jié)構(gòu)的Pascal語(yǔ)句描述
    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;