2012年上半年(下午)《軟件設(shè)計師》真題

上傳人:住在山****ck 文檔編號:81427585 上傳時間:2022-04-27 格式:DOCX 頁數(shù):8 大?。?50.66KB
收藏 版權(quán)申訴 舉報 下載
2012年上半年(下午)《軟件設(shè)計師》真題_第1頁
第1頁 / 共8頁
2012年上半年(下午)《軟件設(shè)計師》真題_第2頁
第2頁 / 共8頁
2012年上半年(下午)《軟件設(shè)計師》真題_第3頁
第3頁 / 共8頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《2012年上半年(下午)《軟件設(shè)計師》真題》由會員分享,可在線閱讀,更多相關(guān)《2012年上半年(下午)《軟件設(shè)計師》真題(8頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、2012年上半年(下午)《軟件設(shè)計師》真題 注意:圖片可根據(jù)實際需要調(diào)整大小 卷面總分:6分 答題時間:240分鐘 試卷題量:6題 練習(xí)次數(shù):0次 問答題 (共6題,共6分) 1.某網(wǎng)上購物平臺的主要功能如下: (1)創(chuàng)建訂單。顧客(Customer)在線創(chuàng)建訂單(Order),主要操作是向訂單中添加項目、從訂單中刪除項目。訂單中應(yīng)列出所訂購的商品(Product)及其數(shù)量(quantities)。 (2)提交訂單。訂單通過網(wǎng)絡(luò)來提交。在提交訂單時,顧客需要提供其姓名(name)、收貨地址(addre

2、ss)、以及付款方式(form of payment)(預(yù)付卡、信用卡或者現(xiàn)金)。為了制定送貨計劃以及安排送貨車輛,系統(tǒng)必須確定訂單量(volume)。除此之外,還必須記錄每種商品的名稱(Name)、造價(cost price)、售價(sale price)以及單件商品的包裝體積(cubic volume)。 (3)處理訂單。訂單處理人員接收來自系統(tǒng)的訂單;根據(jù)訂單內(nèi)容,安排配貨,制定送貨計劃。在送貨計劃中不僅要指明發(fā)貨日期(delivery date),還要記錄每個訂單的限時發(fā)送要求(Delivery Time Window)。 (4)派單。訂單處理人員將己配好貨的訂單轉(zhuǎn)交給派送人員。

3、 (5)送貨/收貨。派送人員將貨物送到顧客指定的收貨地址。當(dāng)顧客收貨時,需要在運貨單(delivery slip)上簽收。簽收后的運貨單最終需交還給訂單處理人員。 (6)收貨確認(rèn)。當(dāng)訂單處理人員收到簽收過的運貨單后,會和顧客進(jìn)行一次再確認(rèn)。 現(xiàn)采用面向?qū)ο蠓椒ㄩ_發(fā)上述系統(tǒng),得到如圖3-1所示的用例圖和圖3-2所示的類圖。 圖3-1用例圖 圖3-2類圖 【問題1】(5分) 根據(jù)說明中的描述,給出圖3-1中A1~A3所對應(yīng)的參與者名稱和U1~U2處所對應(yīng)的用例名稱。 【問題2】(7分) 根據(jù)說明中的描述,給出圖3-2中C1~C3所對應(yīng)的類名以及(1)~(4)處所對應(yīng)的多重度

4、(類名使用說明中給出的英文詞匯)。 【問題3】(3分) 根據(jù)說明中的描述,將類C2和C3的屬性補充完整(屬性名使用說明中給出的英文詞匯)。 正確答案: 本題解析: 【問題1】 A1:顧客A2:訂單處理人員A3:派送人員 U1:收貨U2:派單 【問題2】 C1:Customer C2:Order C3:Product (1)1(2)0..n或0..*(3)0..n或0..*(4)1..n或1..* 【問題3】 C2:volume、delivery date、form of payment

5、 C3:cubic volume、cost price、sale price 本題考查面向?qū)ο箝_發(fā)相關(guān)知識,涉及UML用例圖、類圖以及類圖設(shè)計時的設(shè)計模式。UML目前在面向?qū)ο筌浖_發(fā)中廣泛使用,是面向?qū)ο筌浖_發(fā)考查的重要內(nèi)容。 【問題1】 本題主要考查用例圖。 在本題中,從題目的描述中,我們不難知道,本系統(tǒng)的用例主要有:創(chuàng)建訂單、提交訂單、處理訂單、派單、收貨、送貨及收貨確認(rèn),本系統(tǒng)的參與者主要有:訂單處理人員、顧客和派送人員。 其中在用例圖中還沒有給出的用例有派單和收貨,因此U1和U2應(yīng)該就是這兩個用例,具體他們分別對應(yīng)那一個呢?就需要我們先來確認(rèn)A1~A3所對應(yīng)的參與者,A

6、1與用例創(chuàng)建訂單、U1及收貨確認(rèn)有關(guān)系,根據(jù)題目描述“顧客在線創(chuàng)建訂單”可知A1應(yīng)該是顧客, 同樣的道理,我們不難得出A2是訂單處理人員,A3是派送人員。 而用例U1與三個參與者都有關(guān)系,那么根據(jù)題目描述“派送人員將貨物送到顧客指定的收貨地址。當(dāng)顧客收貨時,需要在運貨單(delivery slip)上簽收。簽收后的運貨單最終需交還給訂單處理人員”,不難得知U1應(yīng)該是收貨。而U2是派單。 【問題2】 本問題考查類圖。對于這個題目,我們應(yīng)該結(jié)合題目的描述及給出的類圖來求解。從題目給出的類圖中我們可以看出,C1中包含了屬性姓名(name)和收貨地址(address),由此不難推斷出C1是顧客

7、(Customer)類。 C2與C1和Delivery Time Window類有關(guān)聯(lián),可以推斷出C2應(yīng)該是訂單(Order)類,而C3與C2是一種組合關(guān)系,其中C2是整體,而C3是部分,而C2是訂單,訂單是由商品組成的,由此可以C3是商品(Product)類。 在UML中,多重度又稱重復(fù)度,多重度表示為一個整數(shù)范圍n..m,整數(shù)n定義所連接的最少對象的數(shù)目,而m則為最多對象數(shù)(當(dāng)不知道確切的最大數(shù)時,最大數(shù)用*號表示)。最常見的多重性有0..1、0..*、1..1和1..*,而*與0..*是等價的。 顧客可以創(chuàng)建多個訂單,也可以不創(chuàng)建訂單,而一個訂單必須屬于而且只能屬于1個顧客,因此空

8、(1)與空(2)分別為1和1..*。 一個訂單中可以至少應(yīng)該包含一個商品,也可以包含多個商品,而某商品可以不在任何訂單中,也可以是多個訂單中都有該商品,因此空(3)與空(4)應(yīng)該分別是0..*和1..*。 【問題3】 根據(jù)題目描述,系統(tǒng)必須記錄每種商品的名稱(Name)、造價(cost price)、售價(sale price)以及單件商品的包裝體積(cubic volume),因此C3除了名稱(Name)外,還應(yīng)該擁有造價(cost price)、售價(sale price)以及單件商品的包裝體積(cubic volume)等屬性。 根據(jù)題目描述,每個訂單應(yīng)該有其付款方式(form

9、of payment)、訂單量(volume)和發(fā)貨日期(delivery date),因此訂單的屬性至少有volume、delivery date、form of payment。 2.某咖啡店當(dāng)賣咖啡時,可以根據(jù)顧客的要求在其中加入各種配料,咖啡店會根據(jù)所加入的配料來計算費用。咖啡店所供應(yīng)的咖啡及配料的種類和價格如下表所示。 現(xiàn)采用裝飾器(Decorator)模式來實現(xiàn)計算費用的功能,得到如圖5-1所示的類圖 【C++代碼】 #include<iostream> #include<string> using namespace std;

10、const int ESPRESSO_PRICE=25; const int DRAKROAST_PRICE=20; const int MOCHA_PRICE=10; const int WHIP_PRICE=8; class Beverage{//飲料 (1):string description; public: (2)( ?。﹞return description;} (3); }; class CondimentDecorator:public Beverage{//配料 protected: (4); }; class Espresso:public B

11、everage{//蒸餾咖啡 public: Espresso( ?。﹞description="Espresso";} int cost(  ){return ESPRESSO_PRICE;} }; class DarkRoast:public Beverage{//深度烘焙咖啡 public: DarkRoast( ?。﹞description="DardRoast";} int cost(  ){return DRAKROAST_PRICE;} }; class Mocha:public CondimentDecorator{//摩卡 public: Mocha(

12、Beverage*beverage){this->beverage=beverage;} string getDescription(  ){return beverage->getDescription( ?。?",Mocha";} int cost( ?。﹞return MOCHA_PRICE+beverage->cost( ?。?} }; class Whip:public CondimentDecorator{//奶泡 public: Whip(Beverage*beverage){this->beverage=beverage;} string getDescripti

13、on(  ){return beverage->getDescription( ?。?",Whip";} int cost( ?。﹞return WHIP_PRICE+beverage->cost(  );} }; int main( ?。﹞ Beverage*beverage=new DarkRoast(  ); beverage=new Mocha((5)); beverage=new Whip((6)); cout<<beverage->getDescription( ?。迹?¥"<<beverage->cost(  )endl; return 0; } 編譯運行上

14、述程序,其輸出結(jié)果為: DarkRoast,Mocha,Whip¥38 正確答案: 本題解析: (1)protected (2)virtual string getDescription (3)virtual int cost()=0 (4)Beverage*beverage (5)beverage (6)beverage 本題考查了C++語言的應(yīng)用能力和裝飾設(shè)計模式的應(yīng)用。 第(1)空很明顯,是要說明屬性description在類Beverage中的類型,應(yīng)該是私有的、受保護(hù)的或公有的

15、,從后面的程序我們可以看出,子類中繼承使用了該屬性,因此這里只能定義為受保護(hù)的,因此第(1)空的答案為protected。 第(2)空處也很明顯,是要給出一個函數(shù)的定義,并且該函數(shù)的函數(shù)體是“return description;”,從子類奶泡和摩卡中我們不難發(fā)現(xiàn)這個函數(shù)應(yīng)該是getDescription,因此本空的答案為virtual string getDescription。 第(3)空需要結(jié)合后面各子類才能發(fā)現(xiàn),在Beverage中還應(yīng)該定義一個函數(shù)cost(),而這個函數(shù)在Beverage中并沒有實現(xiàn),因此要定義為純虛函數(shù),所以第(3)空的答案為virtual int cost(

16、)=0。 第(4)空在類CondimentDecorator中,且是該類唯一的一條語句,而他的子類分別是奶泡和摩卡,在奶泡和摩卡這兩個類中,都用到了Beverage*beverage,而在使用之前并沒有說明,因此這就可以說明,Beverage*beverage是在父類CondimentDecorator中定義的,子類直接繼承使用,因此第(4)空的答案為Beverage*beverage。 第(5)和第(6)空在主函數(shù)當(dāng)中,其中第(5)空是要創(chuàng)建一個Mocha對象,應(yīng)該調(diào)用的是類Mocha的構(gòu)造函數(shù),從類Mocha中,我們可以看出,其構(gòu)造函數(shù)Mocha的參數(shù)是一個Beverage類型的對象指

17、針,而在主函數(shù)中,開始就定義了一個Beverage類型的對象指針beverage,因此這里只需填寫beverage即可。同理第(6)空的答案也是beverage。 3.某學(xué)校開發(fā)圖書管理系統(tǒng),以記錄圖書館藏圖書及其借出和歸還情況,提供給借閱者借閱圖書功能,提供給圖書館管理員管理和定期更新圖書表功能。主要功能的具體描述如下: (1)處理借閱。借閱者要借閱圖書時,系統(tǒng)必須對其身份(借閱者ID)進(jìn)行檢查。通過與教務(wù)處維護(hù)的學(xué)生數(shù)據(jù)庫、人事處維護(hù)的職工數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行比對,以驗證借閱者ID是否合法,若合法,則檢查借閱者在逾期未還圖書表中是否有逾期未還圖書,以及罰金表

18、中的罰金是否超過限額。如果沒有逾期未還圖書并且罰金未超過限額,則允許借閱圖書,更新圖書表,并將借閱的圖書存入借出圖書表,借閱者歸還所借圖書時,先由圖書館管理員檢查圖書是否缺失或損壞,若是,則對借閱者處以相應(yīng)罰金并存入罰金表;然后,檢查所還圖書是否逾期,若是,執(zhí)行“處理逾期”操作;最后,更新圖書表,刪除借出圖書表中的相應(yīng)記錄。 (2)維護(hù)圖書。圖書館管理員查詢圖書信息;在新進(jìn)圖書時錄入圖書信息,存入圖書表;在圖書丟失或損壞嚴(yán)重時,從圖書表中刪除該圖書記錄。 (3)處理逾期。系統(tǒng)在每周一統(tǒng)計逾期未還圖書,逾期未還的圖書按規(guī)則計算罰金, 并記入罰金表,并給有逾期未還圖書的借閱者發(fā)送提醒消息。借

19、閱者在借閱和歸還圖書時, 若罰金超過限額,管理員收取罰金,并更新罰金表中的罰金額度。 現(xiàn)采用結(jié)構(gòu)化方法對該圖書管理系統(tǒng)進(jìn)行分析與設(shè)計,獲得如圖1-1所示的頂層數(shù)據(jù) 流圖和圖1-2所示的0層數(shù)據(jù)流圖。 圖1-2 0層數(shù)據(jù)流圖 【問題1】 使用說明中的詞語,給出圖1-1中的實體E1-E4的名稱。 【問題2】 使用說明中的詞語,給出圖1-2中的數(shù)據(jù)存儲D1~D4的名稱。 【問題3】 在DFD建模時,需要對有些復(fù)雜加工(處理)進(jìn)行進(jìn)一步精化,繪制下層數(shù)據(jù)流圖。針對圖1-2中的加工“處理借閱”,在1層數(shù)據(jù)流圖中應(yīng)分解為哪些加工?(使用說明中的術(shù)語) 【問題4】 說明【問題

20、3】中繪制1層數(shù)據(jù)流圖時要注意的問題。 正確答案: 本題解析: 【問題1】(4分,各1分) E1:借閱者E2:圖書管理員E3/E4:學(xué)生數(shù)據(jù)庫/職工數(shù)據(jù)庫 【問題2】(4分,各1分) D1:圖書表D2:借出圖書表D3:逾期未還圖書表D4:罰金表 【問題3】(5分,各1分) 檢查借閱者身份或檢查借閱者ID;檢查逾期未還圖書;檢查罰金是否超過限額;借閱圖書;歸還圖書 【問題4】(2分) 保持父圖與子圖平衡。父圖中某加工的輸入輸出數(shù)據(jù)流必須與它的子圖的輸入輸出數(shù)據(jù)流在數(shù)量和名字上相同。如果父圖的

21、一個輸入(或輸出)數(shù)據(jù)流對應(yīng)于子圖中幾個輸入(或輸出)數(shù)據(jù)流,而子圖中組成這些數(shù)據(jù)流的數(shù)據(jù)項全體正好是父圖中的這一個數(shù)據(jù)流,那么它們?nèi)匀凰闶瞧胶獾摹? 本題考查數(shù)據(jù)流圖(DFD)的應(yīng)用,是一種比較傳統(tǒng)的題目,要求考生細(xì)心分析題目中所描述的內(nèi)容。DFD是一種便于用戶理解、分析系統(tǒng)數(shù)據(jù)流程的圖形工具。是系統(tǒng)邏輯模型的重要組成部分。 解答這類問題,有以下兩個原則: (1)緊扣試題的系統(tǒng)說明部分,數(shù)據(jù)流圖與系統(tǒng)說明有著嚴(yán)格的對應(yīng)關(guān)系,系統(tǒng)說明部分的每一句話都能對應(yīng)到圖中,解題時可以一句一句地對照著圖來分析。 (2)數(shù)據(jù)的平衡原則,這一點在解題過程中也是至關(guān)重要的。數(shù)據(jù)平衡原則有兩方面的意思:一方

22、面是分層數(shù)據(jù)流圖中父子圖之間的數(shù)據(jù)流平衡原則;另一方面是每張數(shù)據(jù)流圖中輸入與輸出數(shù)據(jù)流的平衡原則。 【問題1】 本問題要求我們給出圖1-1中的實體E1~E4的名稱。這個需要我們從題目中的描述和該圖來獲得。題目中有信息描述:“借閱者要借閱圖書時,系統(tǒng)必須對其身份(借閱者ID)進(jìn)行檢查”,我們結(jié)合頂層數(shù)據(jù)流圖可知,E1為借閱者;另外,根據(jù)題目描述“圖書館管理員查詢圖書信息;在新進(jìn)圖書時錄入圖書信息,存入圖書表;在圖書丟失或損壞嚴(yán)重時,從圖書表中刪除該圖書記錄”,結(jié)合圖,我們可以知道E2是圖書館管理員,再結(jié)合描述“借閱者要借閱圖書時,系統(tǒng)必須對其身份(借閱者ID)進(jìn)行檢查。通過與教務(wù)處維護(hù)的學(xué)生

23、數(shù)據(jù)庫、人事處維護(hù)的職工數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行比對,以驗證借閱者ID是否合法”和頂層數(shù)據(jù)流圖可知,E3和E4應(yīng)該是學(xué)生數(shù)據(jù)庫和職工數(shù)據(jù)庫,這兩者的位置可以互換。 【問題2】 本問題考查數(shù)據(jù)存儲的確定。根據(jù)題目的描述“圖書館管理員查詢圖書信息;在新進(jìn)圖書時錄入圖書信息,存入圖書表;在圖書丟失或損壞嚴(yán)重時,從圖書表中刪除該圖書記錄”,結(jié)合0層數(shù)據(jù)流圖我們可知D1為圖書表;根據(jù)題目描述“如果沒有逾期未還圖書并且罰金未超過限額,則允許借閱圖書,更新圖書表,并將借閱的圖書存入借出圖書表,”,再結(jié)合0層數(shù)據(jù)流圖我們可知D2為借出圖書表;根據(jù)題目描述“系統(tǒng)在每周一統(tǒng)計逾期未還圖書,逾期未還的圖書按規(guī)則計算罰

24、金,并記入罰金表”,再結(jié)合0層數(shù)據(jù)流圖我們可知D4為罰金表。在確定了上面三個存儲后,題目中還剩下逾期未還圖書表,很顯然,D3就是逾期未還圖書表。 【問題3】 本題主要考查加工的分解。對于求解這類問題,主要根據(jù)題目的描述來進(jìn)行,0層圖中加工“處理借閱”在題目的描述中,其處理過程為:先檢查借閱者的身份,如果身份合法,則檢查借閱者是否有逾期未還圖書及罰金表中的罰金是否超過限額,如果沒有,則允許借閱讀書,然后是歸還圖書。因此0層圖中的加工“處理借閱”可以細(xì)分為1層圖中的若干個加工,其分別是:檢查借閱者的身份,檢查逾期未還圖書,檢查罰金是否超過限額,借閱讀書及歸還圖書等加工。 【問題4】 本題主

25、要考查根據(jù)上層數(shù)據(jù)流圖繪制下層數(shù)據(jù)流圖時的注意事項。其主要就是要保持父圖與子圖間的平衡,具體有:父圖中某加工的輸入輸出數(shù)據(jù)流必須與它的子圖的輸入輸出數(shù)據(jù)流在數(shù)量和名字上相同;如果父圖的一個輸入(或輸出)數(shù)據(jù)流對應(yīng)于子圖中幾個輸入(或輸出)數(shù)據(jù)流,而子圖中組成這些數(shù)據(jù)流的數(shù)據(jù)項全體正好是父圖中的這一個數(shù)據(jù)流,那么它們?nèi)匀凰闶瞧胶獾摹? 4.某醫(yī)院擬開發(fā)一套住院病人信息管理系統(tǒng),以方便對住院病人、醫(yī)生、護(hù)士和手術(shù)等信息進(jìn)行管理。 【需求分析】 (1)系統(tǒng)登記每個病人的住院信息,包括:病案號、病人的姓名、性別、地址、身份證號、電話號碼、入院時問及病床等信息,每個病床

26、有唯一所屬的病區(qū)及病房,如表2-1所示。其中病案號唯一標(biāo)識病人本次住院的信息。 表2-1住院登記表 (2)在一個病人的一次住院期間,由一名醫(yī)生對該病人的病情進(jìn)行診斷,并填寫一份診斷書,如表2-2所示。對于需要進(jìn)行一次或多次手術(shù)的病人,系統(tǒng)記錄手術(shù)名稱、手術(shù)室、手術(shù)日期、手術(shù)時間、主刀醫(yī)生及多名協(xié)助醫(yī)生,每名醫(yī)生在手術(shù)中的責(zé)任不同,如表2-3所示,其中手術(shù)室包含手術(shù)室號、樓層、地點和類型等信息。 表2-2診斷書 (3)護(hù)士分為兩類:病床護(hù)士和手術(shù)室護(hù)士。每個病床護(hù)士負(fù)責(zé)護(hù)理一個病區(qū)內(nèi)的所有病人,每個病區(qū)由多名護(hù)士負(fù)責(zé)護(hù)理。手術(shù)室護(hù)士負(fù)責(zé)手術(shù)室的護(hù)理工作。每個手術(shù)室護(hù)士負(fù)責(zé)多個手術(shù)

27、室,每個手術(shù)室由多名護(hù)士負(fù)責(zé),每個護(hù)士在手術(shù)室中有不同的責(zé)任,并由系統(tǒng)記錄其責(zé)任。 表2-3手術(shù)安排表 【概念模型設(shè)計】 根據(jù)需求階段收集的信息,設(shè)計的實體聯(lián)系圖(不完整)如圖2-1所示。 圖2-1實體聯(lián)系圖 【邏輯結(jié)構(gòu)設(shè)計】 根據(jù)概念模型設(shè)計階段完成的實體聯(lián)系圖,得出如下關(guān)系模式(不完整): 病床(病床號,病房,病房類型,所屬病區(qū)) 護(hù)士(護(hù)士編號,姓名,類型,性別,級別) 病床護(hù)士((1)) 手術(shù)室(手術(shù)室號,樓層,地點,類型) 手術(shù)室護(hù)士((2)) 病人((3),姓名,性別,地址,身份證號,電話號碼,入院時間) 醫(yī)生(醫(yī)生編號,姓名,性別,職稱,所屬科室

28、) 診斷書((4),診斷,診斷時間) 手術(shù)安排(病案號,手術(shù)室號,手術(shù)時間,手術(shù)名稱) 手術(shù)醫(yī)生安排((5),醫(yī)生責(zé)任) 【問題1】(6分) 補充圖2-1中的聯(lián)系和聯(lián)系的類型。 【問題2】(5分) 根據(jù)圖2-1,將邏輯結(jié)構(gòu)設(shè)計階段生成的關(guān)系模式中的空(1)~(5)補充完整,并用下劃線指出主鍵。 【問題3】(4分) 如果系統(tǒng)還需要記錄醫(yī)生給病人的用藥情況,即記錄醫(yī)生給病人所開處方中藥品的名稱、用量、價格、藥品的生產(chǎn)廠家等信息。請根據(jù)該要求,對圖2-1進(jìn)行修改,畫出補充后的實體、實體間聯(lián)系和聯(lián)系的類型。 正確答案:

29、 本題解析: 【問題1】 【問題2】 (1)病區(qū),護(hù)士編號 (2)手術(shù)室號,護(hù)士編號,責(zé)任 (3)病案號,病床號 (4)病案號,醫(yī)生編號 (5)病案號,手術(shù)室號,手術(shù)時間,醫(yī)生編號 【問題3】 本題考查數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計、概念至邏輯結(jié)構(gòu)轉(zhuǎn)換等內(nèi)容。 【問題1】 本題主要考查根據(jù)題目描述補充完整ER圖。 在本題中,根據(jù)題目描述“在一個病人的一次住院期間,由一名醫(yī)生對該病人的病情進(jìn)行診斷”,我們可以知道病人與醫(yī)生間存在多對一的聯(lián)系“診斷”;根據(jù)題目描述“手術(shù)室護(hù)士負(fù)責(zé)手術(shù)室的護(hù)理工作。每個手術(shù)室護(hù)士負(fù)責(zé)多個手術(shù)室,每個手術(shù)室由多名護(hù)士負(fù)責(zé)。”

30、我們可以知道,護(hù)士與手術(shù)室之間存在多對多的負(fù)責(zé)關(guān)系;另外,我們再根據(jù)ER圖中給他的5個實體,分析一下他們之間是否還存在某類聯(lián)系,通過分析,不難發(fā)現(xiàn)病人與病床間存在聯(lián)系,根據(jù)常識,我們不難知道,一個病人正常情況只住一個病床,而一個病床由于時間不同,可以分配給多個病人住,因此這個聯(lián)系是多對一的聯(lián)系。 【問題2】 該問題要我們補充完整各關(guān)系模式中缺失的屬性并給出各關(guān)系模式的主鍵。要補充各關(guān)系模式缺失的屬性應(yīng)該根據(jù)題目的描述和已經(jīng)建立的ER圖來完成。第1空是要我們補充病房護(hù)士關(guān)系模式所缺失的屬性,根據(jù)題目的描述:“每個病床護(hù)士負(fù)責(zé)護(hù)理一個病區(qū)內(nèi)的所有病人,每個病區(qū)由多名護(hù)士負(fù)責(zé)護(hù)理”可知,病床護(hù)士

31、應(yīng)該與病區(qū)存在一種多對一的聯(lián)系,因此在病床護(hù)士關(guān)系模式中,要體現(xiàn)出其所負(fù)責(zé)的病區(qū),因此第1空應(yīng)該填(護(hù)士編號,病區(qū)),而該關(guān)系模式的主鍵為護(hù)士編號。 第2空是要我們補充手術(shù)室護(hù)士所缺失的屬性,根據(jù)題目的描述:“手術(shù)室護(hù)士負(fù)責(zé)手術(shù)室的護(hù)理工作。每個手術(shù)室護(hù)士負(fù)責(zé)多個手術(shù)室,每個手術(shù)室由多名護(hù)士負(fù)責(zé)”因此第2空應(yīng)該填(護(hù)士編號,手術(shù)室號,責(zé)任),護(hù)士與手術(shù)室之間是多對多的聯(lián)系,因此該關(guān)系模式的主鍵為手術(shù)室號和護(hù)士編號。 第3空是要我們補充病人所缺失的屬性,根據(jù)題目的描述:“系統(tǒng)登記每個病人的住院信息,包括:病案號、病人的姓名、性別、地址、身份證號、電話號碼、入院時間及病床等信息”可知,第3空應(yīng)

32、該填(病案號,病床號),而該關(guān)系模式的主鍵為病案號。 第4空是要我們補充診斷書關(guān)系模式所缺失的屬性,該關(guān)系模式是由病人與醫(yī)生間的聯(lián)系診斷所轉(zhuǎn)化而來,那么該關(guān)系模式的屬性應(yīng)該包含兩個實體的主鍵及聯(lián)系本身的屬性,因此第4空應(yīng)該填(病案號,醫(yī)生編號),又因為該關(guān)系是1:*,因此該關(guān)系模式的主鍵為病案號。 第5空是要我們補充手術(shù)醫(yī)生安排關(guān)系模式所缺失的屬性,該關(guān)系模式是由病人、醫(yī)生及手術(shù)室三個實體間的聯(lián)系轉(zhuǎn)化而來,那么該關(guān)系模式的屬性應(yīng)該包含這三個實體的主鍵及聯(lián)系本身的屬性,因此第5空應(yīng)該填(病案號,手術(shù)室號,醫(yī)生編號,手術(shù)時間),而該關(guān)系模式的主鍵為(病案號,手術(shù)室號,醫(yī)生編號,手術(shù)時間)。

33、【問題3】 本題描述“系統(tǒng)還需要記錄醫(yī)生給病人的用藥情況,即記錄醫(yī)生給病人所開處方中藥品的名稱、用量、價格、藥品的生產(chǎn)廠家等信息”,我們可以知道藥品、醫(yī)生及病人這三個實體有關(guān)系,而且三端都是多端,因為一個醫(yī)生可以開出多個處方,一個病人可以有多個處方,而一個處方可以包含多種藥品。這樣就很容易畫圖ER圖(見試題答案)。 5.某咖啡店當(dāng)賣咖啡時,可以根據(jù)顧客的要求在其中加入各種配料,咖啡店會根據(jù)所加入的配料來計算費用。咖啡店所供應(yīng)的咖啡及配料的種類和價格如下表所示。 現(xiàn)采用裝飾器(Decorator)模式來實現(xiàn)計算費用的功能,得到如圖6-1所示的類圖 【

34、Java代碼】 import java.util.*; (1)class Beverage{//飲料 String description="Unknown Beverage"; public(2)( ?。﹞return description;} public(3); } abstract class CondimentDecorator extends Beverage{//配料 (4); } class Espresso extends Beverage{//蒸餾咖啡 private final int ESPRESSO_PRICE=25; public Espr

35、esso( ?。﹞description="Espresso";} public int cost( ?。﹞return ESPRESSO_PRICE;} } class DarkRoast extends Beverage{//深度烘焙咖啡 private finalint DARKROAST_PRICE=20; public DarkRoast0{description="DarkRoast";} public int cost( ?。﹞rcturn DARKROAST PRICE;} } class Mocha extends CondimentDecorator{//摩

36、卡 private final int MOCHA_PRICE=10; public Mocha(Beverage beverage){ this.beverage=beverage; } public String getDescription( ?。﹞ return beverage.getDescription0+",Mocha"; } public int cost( ?。﹞ return MOCHA_PRICE+beverage.cost(  ); } } class Whip extends CondimentDecorator{//奶泡 private

37、finalint WHIP_PRICE=8; public Whip(Beverage beverage){this.beverage=beverage;} public String getDescription(  ){ return beverage.getDescription( ?。?",Whip"; } public int cost( ?。﹞return WHIP_PRICE+beverage.cost( ?。?} } public class Coffee{ public static void main(String args[]){ Beverage be

38、verage=new DarkRoast(  ); beverage=new Mocha((5)); beverage=new Whip((6)); System.out.println(beverage.getDescription0+"¥"+beverage.cost( ?。?; } } 編譯運行上述程序,其輸出結(jié)果為: DarkRoast,Mocha,Whip¥38 正確答案: 本題解析: (1)abstract (2)String getDescription (3)abstr

39、act int cost() (4)Beverage beverage (5)beverage (6)beverage 本題考查了Java語言的應(yīng)用能力和裝飾設(shè)計模式的應(yīng)用。 第(1)空很明顯,是要給類Beverage前添加定義的關(guān)鍵字,從整個程序來看,我們應(yīng)該要將類Beverage定義為抽象類,需要在前面添加關(guān)鍵字abstract,因此第(1)空的答案為abstract。 第(2)空處也很明顯,是要給出一個函數(shù)的定義,并且該函數(shù)的函數(shù)體是“return description;”,從子類奶泡和摩卡中我們不難發(fā)現(xiàn)這個函數(shù)應(yīng)該是getDescription,而該函數(shù)的返回類型Stri

40、ng,因此本空的答案為String getDescription。 第(3)空需要結(jié)合后面各子類才能發(fā)現(xiàn),在Beverage中還應(yīng)該定義一個函數(shù)cost(),而這個函數(shù)在Beverage中并沒有實現(xiàn),因此要定義為抽象函數(shù),所以第(3)空的答案為abstract int cost()=0。 第(4)空在類CondimentDecorator中,且是該類唯一的一條語句,而他的子類分別是奶泡和摩卡,在奶泡和摩卡這兩個類中,都用到了Beverage beverage,而在使用之前并沒有說明,因此這就可以判定,Beverage beverage是在父類CondimentDecorator中定義的,子

41、類直接繼承使用,因此第(4)空的答案為Beverage beverage。 第(5)和第(6)空在主函數(shù)當(dāng)中,其中第(5)空是要創(chuàng)建一個Mocha對象,應(yīng)該調(diào)用的是類Mocha的構(gòu)造函數(shù),從類Mocha中,我們可以看出,其構(gòu)造函數(shù)Mocha的參數(shù)是一個Beverage類型的對象引用,而在主函數(shù)中,開始就定義了一個Beverage類型的對象引用beverage,因此這里只需填寫beverage即可。同理第(6)空的答案也是beverage。 6.用兩臺處理機A和B處理n個作業(yè)。設(shè)A和B處理第i個作業(yè)的時間分別為ai和bi。由于各個作業(yè)的特點和機器性能的關(guān)系,對某

42、些作業(yè),在A上處理時間長,而對某些作業(yè)在B上處理時間長。一臺處理機在某個時刻只能處理一個作業(yè),而且作業(yè)處理是不可中斷的,每個作業(yè)只能被處理一次。現(xiàn)要找出一個最優(yōu)調(diào)度方案,使得n個作業(yè)被這兩臺處理機處理完畢的時間(所有作業(yè)被處理的時間之和)最少。 算法步驟: (1)確定候選解上界為最短的單臺處理機處理所有作業(yè)的完成時間m, (2)用p(x,y,k)=1表示前k個作業(yè)可以在A用時不超過x且在B用時不超過y時間內(nèi)處理完成,則 p(x,y,k)=p(x-ak,y,k-1)||p(x,y-bk,k-1)(||表示邏輯或操作)。 (3)得到最短處理時問為min(max(x,y))。 【C代

43、碼】 下面是該算法的C語言實現(xiàn)。 (1)常量和變量說明 n:作業(yè)數(shù) m:候選解上界 a:數(shù)組,長度為n,記錄n個作業(yè)在A上的處理時間,下標(biāo)從0開始 b:數(shù)組,長度為n,記錄n個作業(yè)在B上的處理時間,下標(biāo)從0開始 k:循環(huán)變量 p:三維數(shù)組,長度為(m+1)*(m+1)*(n+1) temp:臨時變量 max:最短處理時間 (2)C代碼 #include<stdio.h> int n,m; int a[60],b[60],p[100][100][60]; void read( ?。﹞/*輸入n、a、b,求出m,代碼略*/} void schedule( ?。﹞/*

44、求解過程*/ int x,y,k; for(x=0;x<=m;x++){ for(y=0;y<m;y++){ (1) for(k=1;k<n;k++) p[x][y][k]=0; } } for(k=1;k<=n;k++){ for(x=0;x<=m;x++){ for(y=0;y<=m;y++){ if(x-a[k-1]>=0)(2); if((3))p[x][y][k]=(p[x][y][k]||p[x][y-b[k-1]][k-1]); } } } } void write(  ){/*確定最優(yōu)解并輸出*/ int x,y,temp,max=m;

45、for(x=0;x<=m;x++){ for(y=0;y<=m;y++){ if((4)){ temp=(5); if(temp<max)max=temp; } } } printf(“\n%d\n”,max), } void main( ?。﹞read( ?。?schedule( ?。?write(  );} 【問題1】(9分) 根據(jù)以上說明和C代碼,填充C代碼中的空(1)~(5)。 【問題2】(2分) 根據(jù)以上C代碼,算法的時間復(fù)雜度為(6)(用O符號表示)。 【問題3】(4分) 考慮6個作業(yè)的實例,各個作業(yè)在兩臺處理機上的處理時間如表4-1所示。該實例的最

46、優(yōu)解為(7),最優(yōu)解的值(即最短處理時間)為(8)。最優(yōu)解用(x1,x2,x3,x4,x5,x6)表示,其中若第i個作業(yè)在A上處理,則xi=1,否則xi=2。如(1,1,1,1,2,2)表示作業(yè)1,2,3和4在A上處理,作業(yè)5和6在B上處理。 表4-1 正確答案: 本題解析: 【問題1】 (1)p[x][y][0]=1 (2)p[x][y][k]=p[x-a[k-1]][y][k-1] (3)y-b[k-1]>=0 (4)p[x][y][n]==1或p[x][y][n]或p[x][y][n

47、]!=0 (5)(x>=y)?x:y 【問題2】 (6)O(m2n) 【問題3】 (7)(1,1,2,2,1,1) (8)15 【問題1】 下面我們來具體分析本試題。第(1)空所處的位置為schedule()函數(shù)的for循環(huán)中,從題目的描述和程序不難看出該三重循環(huán)的作用是給三維數(shù)組p賦初值,而根據(jù)題目描述可知數(shù)組k=0時,其對應(yīng)的數(shù)組元素值都為1(因為這個時候沒有作業(yè),那么肯定可以在A用時不超過x且在B用時不超過y時間內(nèi)處理完成),因此第1空應(yīng)該填p[x][y][0]=1。 第(2)空在函數(shù)schedule()中的第二個三重for循環(huán)中,而且是在if結(jié)構(gòu)下,只有if條件的結(jié)果

48、為真時,才執(zhí)行第(2)空的程序,從題目和程序也不難看出,這個三重for循環(huán)的作用就是要實現(xiàn)題目算法描述中的第(2)步,即求出p數(shù)組中各元素的值。那么當(dāng)x-a[k-1]>=0為真時,即說明前k個作業(yè)可以在A用時不超過x內(nèi)處理完成,那么根據(jù)題目意思,應(yīng)該p(x,y,k)=p(x-ak,y,k-1),因此第(2)空的答案應(yīng)該是p[x][y][k]=p[x-a[k-1]][y][k-1]。 第(3)空if判定的條件表達(dá)式,根據(jù)條件為真后面執(zhí)行的語句可以判定出,這里的條件是要判定是否前k個作業(yè)可以在B用時不超過y內(nèi)處理完成,因此第(3)空的答案是y-b[k-1]>=0,其實本題與第(2)空可以參照來完

49、成。 第(4)空在函數(shù)write()中,是雙重循環(huán)下if判定的條件,從題目注釋來看,該函數(shù)是要確定最優(yōu)解并輸出的,那么結(jié)合該函數(shù)我們不難知識,確定最優(yōu)解就是用這個雙重循環(huán)來實現(xiàn)的,從前面的程序中,我們知道,所有的解的情況保存在數(shù)組p當(dāng)中,那么現(xiàn)在就是要找出那個是最優(yōu)解,其中max是用來存放當(dāng)前最優(yōu)解的,而臨時變量temp要與max的值做一個比較,將較小的(當(dāng)前最優(yōu))存放在max中,因此求最優(yōu)解其實就是將所有解做一個比較,然后取出最優(yōu)解。綜上所述,再結(jié)合程序和題干描述,“用p(x,y,k)=1表示在A用時不超過x且在B用時不超過y時間內(nèi)處理完成”,我們不難知道第(4)空的答案是p[x][y][

50、n]==1或者類似的表達(dá)式,p[x][y][n]==1表示當(dāng)前情況下有一個解,那么這個解是x還是y呢?這還需要接著判定x與y的值誰更小,將更小的賦值給臨時變量temp,因此第5空答案為(x>=y)?x:y。 【問題2】 本題主要考查時間復(fù)雜度,相對于第一問來說,要簡單很多。從給出的程序來看,最高的循環(huán)是三重循環(huán),因此其時間復(fù)雜度為O(m2n)。 【問題3】 在本題給出的實例中,如果我們用題目描述的方式來求解,其過程也是相當(dāng)復(fù)雜,因為在題目描述的情況下,數(shù)組p的長度為(33+1)*(33+1)*(6+1),由于我們不是計算機,要計算出該數(shù)組中各元素,肯定也不容易。在這種情況下,因為題目給出的作業(yè)只有6個,因此可以采用觀察法,不難發(fā)現(xiàn),本題最優(yōu)解的值為15,最優(yōu)解為(1,1,2,2,1,1)或者(2,1,2,1,2,2)。

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!