2011年下半年(下午)《軟件設(shè)計(jì)師》真題
《2011年下半年(下午)《軟件設(shè)計(jì)師》真題》由會(huì)員分享,可在線閱讀,更多相關(guān)《2011年下半年(下午)《軟件設(shè)計(jì)師》真題(8頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、2011年下半年(下午)《軟件設(shè)計(jì)師》真題 注意:圖片可根據(jù)實(shí)際需要調(diào)整大小 卷面總分:6分 答題時(shí)間:240分鐘 試卷題量:6題 練習(xí)次數(shù):0次 問答題 (共6題,共6分) 1.Pay&Drive系統(tǒng)(開多少付多少)能夠根據(jù)駕駛里程自動(dòng)計(jì)算應(yīng)付的費(fèi)用。 系統(tǒng)中存儲(chǔ)了特定區(qū)域的道路交通網(wǎng)的信息。道路交通網(wǎng)由若干個(gè)路段(Road Segment)構(gòu)成,每個(gè)路段由兩個(gè)地理坐標(biāo)點(diǎn)(Node)標(biāo)定,其里程數(shù)(Distance)是已知的。在某些地理坐標(biāo)點(diǎn)上安裝了訪問控制(Access Control)設(shè)備,可以自
2、動(dòng)掃描行駛卡(Card)。行程(Trajectory)由一組連續(xù)的路段構(gòu)成。行程的起點(diǎn)(Entry)和終點(diǎn)(Exit)都裝有訪問控制設(shè)備。 系統(tǒng)提供了3種行駛卡。常規(guī)卡(Regular Card)有效期(Valid Period)為一年,可以在整個(gè)道路交通網(wǎng)內(nèi)使用。季卡(Season Card)有效期為三個(gè)月,可以在整個(gè)道路交通網(wǎng)內(nèi)使用。單次卡(Minitrip Card)在指定的行程內(nèi)使用,且只能使用一次。其中,季卡和單次卡都是預(yù)付卡(Prepaid Card),需要客戶(Customer)預(yù)存一定的費(fèi)用。 系統(tǒng)的主要功能有:客戶注冊、申請行駛卡、使用行駛卡行駛等。 使用常規(guī)卡行駛,在
3、進(jìn)入行程起點(diǎn)時(shí),系統(tǒng)記錄行程起點(diǎn)、進(jìn)入時(shí)間(Date Of Entry)等信息。在到達(dá)行程終點(diǎn)時(shí),系統(tǒng)根據(jù)行駛的里程數(shù)和所持卡的里程單價(jià)(Unit Price)計(jì)算應(yīng)付費(fèi)用,并打印費(fèi)用單(Invoice)。 季卡的使用流程與常規(guī)卡類似,但是不需要打印費(fèi)用單,系統(tǒng)自動(dòng)從卡中扣除應(yīng)付費(fèi)用。 單次卡的使用流程與季卡類似,但還需要在行程的起點(diǎn)和終點(diǎn)上檢查行駛路線是否符合該卡所規(guī)定的行駛路線。 現(xiàn)采用面向?qū)ο蠓椒ㄩ_發(fā)該系統(tǒng),使用UML進(jìn)行建模。構(gòu)建出的用例圖和類圖分別如圖3-1和圖3-2所示。 【問題1】(4分) 根據(jù)說明中的描述,給出圖3-1中U1和U2所對(duì)應(yīng)的用例,以及(1)所對(duì)應(yīng)
4、的關(guān)系。 【問題2】(8分) 根據(jù)說明中的描述,給出圖3-2中缺少的C1~C6所對(duì)應(yīng)的類名以及(2)~(3)處所對(duì)應(yīng)的多重度(類名使用說明中給出的英文詞匯)。 【問題3】(3分) 根據(jù)說明中的描述,給出Road Segment、Trajectory和Card所對(duì)應(yīng)的類的關(guān)鍵屬性(屬性名使用說明中給出的英文詞匯)。 ?收藏查看解析視頻解析 參考答案: 【問題1】(4分) U1:使用常規(guī)卡行駛U2:使用單次卡行駛(各1分) (1):extend(2分) 【問題2】(8分,各1分) C1:RoadSegment C2:Trajectory C3:Card C4:Regular
5、Card C5:PrepaidCard C6:MinitripCard (2)1(3)1..3 【問題3】(3分,每個(gè)類1分) RoadSegment的屬性:Distance Trajectory的屬性:Entry、Exit、DateOfEntry Card的屬性:UnitPrice、ValidPeriod 正確答案: 本題解析: 【問題1】(4分) U1:使用常規(guī)卡行駛U2:使用單次卡行駛(各1分) (1):extend(2分) 【問題2】(8分,各1分) C1:RoadSegmen
6、t C2:Trajectory C3:Card C4:RegularCard C5:PrepaidCard C6:MinitripCard (2)1(3)1..3 【問題3】(3分,每個(gè)類1分) RoadSegment的屬性:Distance Trajectory的屬性:Entry、Exit、DateOfEntry Card的屬性:UnitPrice、ValidPeriod 試題分析 本題考查面向?qū)ο箝_發(fā)相關(guān)知識(shí),涉及UML用例圖、類圖以及類圖設(shè)計(jì)時(shí)的設(shè)計(jì)模式。UML目前在面向?qū)ο筌浖_發(fā)中廣泛使用,是面向?qū)ο筌浖_發(fā)考查的重要內(nèi)容。 【問題1】 本題主要考查用例圖。 用
7、例之間的關(guān)系主要有以下三種: (1)包含關(guān)系。當(dāng)可以從兩個(gè)或兩個(gè)以上的用例中提取公共行為時(shí),應(yīng)該使用包含關(guān)系來表示它們。用《include》表示。 (2)擴(kuò)展關(guān)系。如果一個(gè)用例明顯地混合了兩種或兩種以上的不同場景,即根據(jù)情況可能發(fā)生多種分支,則可以將這個(gè)用例分為一個(gè)基本用例和一個(gè)或多個(gè)擴(kuò)展用例,這樣使描述可能更加清晰。用《extend》表示。 (3)泛化關(guān)系。當(dāng)多個(gè)用例共同擁有一種類似的結(jié)構(gòu)和行為的時(shí)候,可以將它們的共性抽象成為父用例,其他的用例作為泛化關(guān)系中的子用例。 在本題中,從題目的描述中,我們不難看出,用例圖中缺失的用例有“使用常規(guī)卡行駛”和“使用單次卡行駛”,那么U1和U2具
8、體對(duì)應(yīng)哪個(gè)用例,我們根據(jù)題目說明,并結(jié)合用例圖來看,“使用季卡行駛”與U1是泛化關(guān)系,由此可知U1應(yīng)該是“使用常規(guī)卡行駛”,而U2是“使用單次卡行駛”,根據(jù)題目描述“單次卡的使用流程與季卡類似,但還需要在行程的起點(diǎn)和終點(diǎn)上檢查行駛路線是否符合該卡所規(guī)定的行駛路線”,由此可知,U1是對(duì)“使用季卡行駛”的擴(kuò)展,由此第1空應(yīng)填《extend》。 【問題2】 本問題考查類圖。對(duì)于這個(gè)題目,我們應(yīng)該結(jié)合題目的描述及給出的類圖來求解。根據(jù)題目的描述,本系統(tǒng)包含的類主要有路段(Road Segment)、地理坐標(biāo)點(diǎn)(Node)、訪問控制(Access Control)設(shè)備、自動(dòng)掃描行駛卡(Card)、行
9、程(Trajectory)、常規(guī)卡(Regular Card)、季卡(Season Card)、單次卡(Minitrip Card)、預(yù)付卡(Prepaid Card)和客戶(Customer)等。 從類圖中C1與類Node的關(guān)系和C2與AccessControlNode的關(guān)系,再結(jié)合題目描述“路段由兩個(gè)地理坐標(biāo)點(diǎn)(Node)標(biāo)定”可以知道C1應(yīng)該是路段類,而由題目描述“行程(Trajectory)由一組連續(xù)的路段構(gòu)成。行程的起點(diǎn)(Entry)和終點(diǎn)(Exit)都裝有訪問控制設(shè)備”可以知道C2應(yīng)該是行程(Trajectory)類。 而從類圖看,C4和C5是繼承于C3的,再結(jié)合類圖中C3與客
10、戶類和行程類的關(guān)系,可知C3應(yīng)該是一切卡的抽象類,因此是自動(dòng)掃描行駛卡(Card),而C5是C6和季卡的父類,再根據(jù)題目描述“季卡和單次卡都是預(yù)付卡(PrepaidCard)”可知C5是預(yù)付卡(PrepaidCard),而C6是單次卡(MinitripCard),而C4是常規(guī)卡(RegularCard)。 在UML中,多重度又稱重復(fù)度,多重度表示為一個(gè)整數(shù)范圍n..m,整數(shù)n定義所連接的最少對(duì)象的數(shù)目,而m則為最多對(duì)象數(shù)(當(dāng)不知道確切的最大數(shù)時(shí),最大數(shù)用*號(hào)表示)。最常見的多重性有0..1、0..*、1..1和1..*,而*與0..*是等價(jià)的。 空(2)和(3)描述的是客戶與卡之間的多重度
11、,題目告訴我們系統(tǒng)有三種卡,因此一個(gè)客戶最多可以持有這三種卡,因此空(3)應(yīng)填1..3。而一個(gè)卡只能被一個(gè)客戶持有,因此客戶這端應(yīng)該填1。 【問題3】 根據(jù)題目描述,RoadSegment類應(yīng)該包含的關(guān)鍵屬性是里程數(shù)(Distance),因?yàn)檫@能標(biāo)識(shí)一個(gè)路段的長度;而Trajectory類應(yīng)該包含的關(guān)鍵屬性是起點(diǎn)(Entry)、終點(diǎn)(Exit)、進(jìn)入時(shí)間(Date Of Entry),這樣才能說明某一次行程是何時(shí)從哪里開始到那里結(jié)束的;而Card類的關(guān)鍵屬性應(yīng)包含有效期(Valid Period)和里程單價(jià)(Unit Price)。 2.某大型商場內(nèi)安裝了多
12、個(gè)簡易的紙巾售賣機(jī),自動(dòng)出售2元錢一包的紙巾,且每次僅售出一包紙巾。紙巾售賣機(jī)的狀態(tài)圖如圖5-1所示。 采用狀態(tài)(State)模式來實(shí)現(xiàn)該紙巾售賣機(jī),得到如圖5-2所示的類圖。其中類State為抽象類,定義了投幣、退幣、出紙巾等方法接口。類SoldState、SoldOutState、NoQuarterState和HasQuarterState分別對(duì)應(yīng)圖5-1中紙巾售賣機(jī)的4種狀態(tài):售出紙巾、紙巾售完、沒有投幣、有2元錢。 【C++代碼】 #include<iostream> using namespace std; //以下為類的定義部分 class TissueMach
13、ine;//類的提前引用 class State{ public: virtual void insertQuarter( )=0;//投幣 virtual void ejectQuarter( ?。?0;//退幣 virtual void turnCrank( ?。?0;//按下“出紙巾”按鈕 virtual void dispense( ?。?0;//出紙巾 }; /*類SoldOutState、NoQuarterState、HasQuarterState、SoldState的定義省略,每個(gè)類中均 定義了私有數(shù)據(jù)成員TissueMachine*tissueMachine
14、;*/ class TissueMachine{ private: (1)*soldOutState,*noQuarterState,*hasQuarterState,*soldState,*state; int count;//紙巾數(shù) public: TissueMachine(int numbers); void setState(State*state); State*getHasQuarterState( ); State*getNoQuarterState( ?。? State*getSoldState( ); State*getSoldOutState(
15、?。? int getCount( ); //其余代碼省略 }; //以下為類的實(shí)現(xiàn)部分 void NoQuarterState::insertQuarter( ?。﹞ tissueMachine->setState((2)); } void HasQuarterState::ejectQuarter( ){ tissueMachine->setState((3)); } void SoldState::dispense( ?。﹞ if(tissueMachine->getCount( ?。?0){ tissueMachine->setState((4)); }
16、 else{ tissueMachine->setState((5)); } }//其余代碼省略 正確答案: 本題解析: (1)State (2)tissueMachine->getHasQuarterState() (3)tissueMachine->getNoQuarterState() (4)tissueMachine->getNoQuarterState() (5)tissueMachine->getSoldOutState() 本題考查基本面向?qū)ο笤O(shè)計(jì)模式的運(yùn)用能力。 狀態(tài)
17、設(shè)計(jì)模式主要是能夠使一個(gè)對(duì)象的內(nèi)在狀態(tài)改變時(shí)允許改變其行為,使這個(gè)對(duì)象看起來像是改變了其類。由類圖可知類State是類SoldState、SoldOutState、NoQuarterState和HasQuarterState的父類,它抽象了這四個(gè)類的共有屬性和行為。在使用中,無論是這四個(gè)類中那個(gè)類的對(duì)象,都可被當(dāng)作State對(duì)象來使用。 而根據(jù)題目的描述,我們可以知道一個(gè)紙巾售賣機(jī)它由4種狀態(tài),分別是售出紙巾、紙巾售完、沒有投幣、有2元錢。 在本題中,根據(jù)程序我們不難知道第(1)空是要定義5個(gè)對(duì)象指針,而這些對(duì)象指針都應(yīng)該屬于State類型,因此第一空答案為State。 而第(2)在類N
18、oQuarterState(沒有投幣)的insertQuarter()函數(shù)中,而這個(gè)函數(shù)是投幣函數(shù),在該函數(shù)中,使用了tissueMachine類的setState方法,該方法是設(shè)置紙巾售賣機(jī)的當(dāng)前狀態(tài),根據(jù)題目給出的紙巾售賣機(jī)狀態(tài)圖,我們可以知道,從沒有投幣狀態(tài),經(jīng)過投幣后,應(yīng)該轉(zhuǎn)換到有2元錢狀態(tài)。而setState方法的參數(shù)是一個(gè)State的對(duì)象,因此第(2)空應(yīng)該是一個(gè)有2元錢對(duì)象,而這里我們可以新創(chuàng)建一個(gè)該對(duì)象,也可以通過tissueMachine類的getHasQuarterState方法來獲得這樣一個(gè)對(duì)象,所以第(2)空答案應(yīng)該是“tissueMachine->getHasQuar
19、terState()”或“new HasQuarterState”。 而第(3)在類HasQuarterState(有2元錢)的ejectQuarter()函數(shù)中,而這個(gè)函數(shù)是退幣函數(shù),在該函數(shù)中,也使用了tissueMachine類的setState方法,該方法是設(shè)置紙巾售賣機(jī)的當(dāng)前狀態(tài),根據(jù)題目給出的紙巾售賣機(jī)狀態(tài)圖,我們可以知道,從有2元錢狀態(tài),經(jīng)過退幣后,應(yīng)該轉(zhuǎn)換到?jīng)]有投幣狀態(tài)。而setState方法的參數(shù)是一個(gè)State的對(duì)象,因此第(3)空應(yīng)該是一個(gè)沒有投幣對(duì)象,而這里我們可以新創(chuàng)建一個(gè)該對(duì)象,也可以通過tissueMachine類的getNoQuarterState方法來獲得這
20、樣一個(gè)對(duì)象,所以第(3)空答案應(yīng)該是“tissueMachine->getNoQuarterState()”或“new NoQuarterState”。 而同樣的道理,我們可以知道第(4)空的答案是“tissueMachine->getNoQuarterState()”或“new NoQuarterState”。第(5)空的答案是“tissueMachine->getSoldOutState()”或“new SoldOutState”。 3.某公司欲開發(fā)招聘系統(tǒng)以提高招聘效率,其主要功能如下: (1)接受申請 驗(yàn)證應(yīng)聘者所提供的自身信息是否完整,是否說明了
21、應(yīng)聘職位,受理驗(yàn)證合格的申請,給應(yīng)聘者發(fā)送致謝信息。 (2)評(píng)估應(yīng)聘者 根據(jù)部門經(jīng)理設(shè)置的職位要求,審查已經(jīng)受理的申請;對(duì)未被錄用的應(yīng)聘者進(jìn)行謝絕處理,將未被錄用的應(yīng)聘者信息存入未錄用的應(yīng)聘者表,并給其發(fā)送謝絕決策;對(duì)錄用的應(yīng)聘者進(jìn)行職位安排評(píng)價(jià),將評(píng)價(jià)結(jié)果存入評(píng)價(jià)結(jié)果表,并給其發(fā)送錄用決策,發(fā)送錄用職位和錄用者信息給工資系統(tǒng)。 現(xiàn)采用結(jié)構(gòu)化方法對(duì)招聘系統(tǒng)進(jìn)行分析與設(shè)計(jì),獲得如圖1-1所示的頂層數(shù)據(jù)流圖、圖1-2所示0層數(shù)據(jù)流圖和圖1-3所示1層數(shù)據(jù)流圖。 圖1-2 0層數(shù)據(jù)流圖 圖1-3 1層數(shù)據(jù)流圖 【問題1】(3分) 使用說明中的術(shù)語,給出圖中E1~E3所對(duì)應(yīng)的
22、實(shí)體名稱。 【問題2】(2分) 使用說明中的術(shù)語,給出圖中D1~D2所對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)名稱。 【問題3】(6分) 使用說明和圖中的術(shù)語,給出圖1-3中加工P1~P3的名稱。 【問題4】(4分) 解釋說明圖1-2和圖1-3是否保持平衡,若不平衡請按如下格式補(bǔ)充圖1-3中數(shù)據(jù)流的名稱以及數(shù)據(jù)流的起點(diǎn)或終點(diǎn),使其平衡(使用說明中的術(shù)語或圖中符號(hào))。 正確答案: 本題解析: 【問題1】(3分,各1分) E1:應(yīng)聘者E2:部門經(jīng)理E3:工資系統(tǒng) 【問題2】(2分,各1分) D1:未錄用的應(yīng)聘者
23、表D2:評(píng)價(jià)結(jié)果表 【問題3】(6分,各2分) P1:驗(yàn)證信息P2:審查申請P3:職位安排評(píng)價(jià) 【問題4】(4分) 不平衡。圖1-2中加工的輸入輸出流與其子圖1-3中的輸入輸出流的數(shù)量不同。 本題考查數(shù)據(jù)流圖(DFD)的應(yīng)用,是一種比較傳統(tǒng)的題目,要求考生細(xì)心分析題目中所描述的內(nèi)容。DFD是一種便于用戶理解、分析系統(tǒng)數(shù)據(jù)流程的圖形工具。是系統(tǒng)邏輯模型的重要組成部分。 【問題1】 本問題要求我們給出圖1-1中的實(shí)體E1~E3的名稱。這個(gè)需要我們從題目中的描述和該圖來獲得。題目中有信息描述:“驗(yàn)證應(yīng)聘者所提供的自身信息是否完整,是否說明了應(yīng)聘職位,受理驗(yàn)證合格的申請,給應(yīng)聘者發(fā)送
24、致謝信息”我們結(jié)合0層數(shù)據(jù)流圖可知,E1為應(yīng)聘者;另外,根據(jù)題目描述“根據(jù)部門經(jīng)理設(shè)置的職位要求,審查已經(jīng)受理的申請”,再結(jié)合頂層圖,我們可以知道E2是部門經(jīng)理,再根據(jù)描述“發(fā)送錄用職位和錄用者信息給工資系統(tǒng)”和頂層數(shù)據(jù)流圖可知,E3是工資系統(tǒng)。 【問題2】 本問題考查數(shù)據(jù)存儲(chǔ)的確定。根據(jù)題目的描述“對(duì)未被錄用的應(yīng)聘者進(jìn)行謝絕處理,將未被錄用的應(yīng)聘者信息存入未錄用的應(yīng)聘者表”,結(jié)合1層數(shù)據(jù)流圖我們可知D1為未錄用的應(yīng)聘者表;根據(jù)題目描述“對(duì)錄用的應(yīng)聘者進(jìn)行職位安排評(píng)價(jià),將評(píng)價(jià)結(jié)果存入評(píng)價(jià)結(jié)果表”,再結(jié)合1層數(shù)據(jù)流圖我們可知D2為評(píng)價(jià)結(jié)果表。 【問題3】 本題要求我們找出圖中缺失的加工名
25、稱。對(duì)比圖1-2和1-3我們不難發(fā)現(xiàn),圖1-3中的上半部分為圖1-2中加工“接受申請”轉(zhuǎn)換而來,而下半部分是圖1-2中加工“評(píng)估應(yīng)聘者”轉(zhuǎn)換而來,那么根據(jù)題目描述“驗(yàn)證應(yīng)聘者所提供的自身信息是否完整,是否說明了應(yīng)聘職位,然后受理驗(yàn)證合格的申請”,我們可以知道這里應(yīng)該有兩個(gè)加工,分別是“驗(yàn)證信息”和“受理申請”,因此P1應(yīng)該為“驗(yàn)證信息”。而根據(jù)題目描述“審查已經(jīng)受理的申請;對(duì)未被錄用的應(yīng)聘者進(jìn)行謝絕處理,將未被錄用的應(yīng)聘者信息存入未錄用的應(yīng)聘者表,并給其發(fā)送謝絕決策;對(duì)錄用的應(yīng)聘者進(jìn)行職位安排評(píng)價(jià)”,我們可以知道,這里應(yīng)該牽涉到三個(gè)加工,分別是“審查申請”、“謝絕應(yīng)聘者”和“職位安排評(píng)價(jià)”,再
26、結(jié)合圖1-3,我們不難知道P2應(yīng)該為“審查申請”,P3為“職位安排評(píng)價(jià)”。 【問題4】 本題主要考查父圖與子圖的平衡原則。在0層數(shù)據(jù)流圖中,加工“接受申請”輸入數(shù)據(jù)流有“應(yīng)聘者信息”、“應(yīng)聘職位”,而其輸出數(shù)據(jù)流有“致謝信息”和“已受理的申請”,而在1層數(shù)據(jù)流圖的上半部分中,體現(xiàn)出來“應(yīng)聘者信息”、“應(yīng)聘職位”和“致謝信息”這些數(shù)據(jù)流,而沒有“已受理的申請”這條輸出數(shù)據(jù)流,因此這里缺少了這條數(shù)據(jù)流,其起點(diǎn)是加工“受理申請”。 而同樣的道理,我們可以知道在0層數(shù)據(jù)流圖中與加工“評(píng)估應(yīng)聘者”有關(guān)的數(shù)據(jù)流在1層數(shù)據(jù)流圖中缺失了“錄用職位”這條數(shù)據(jù)流,而這條數(shù)據(jù)流的起點(diǎn)是“P3”,其終點(diǎn)應(yīng)該是E
27、3;另外從與“評(píng)估應(yīng)聘者”到E1有一條“決策”數(shù)據(jù)流,而在1層數(shù)據(jù)流圖中體現(xiàn)出來的是“錄用決策”,但根據(jù)題目意思,決策應(yīng)該有錄用決策和謝絕決策之分,應(yīng)該還缺失了“謝絕決策”這條數(shù)據(jù)流,其起點(diǎn)是加工“謝絕應(yīng)聘者”,其終點(diǎn)是“E1”。 4.某物流公司為了整合上游供應(yīng)商與下游客戶,縮短物流過程,降低產(chǎn)品庫存,需要構(gòu)建一個(gè)信息系統(tǒng)以方便管理其業(yè)務(wù)運(yùn)作活動(dòng)。 【需求分析結(jié)果】 (1)物流公司包含若干部門,部門信息包括部門號(hào)、部門名稱、經(jīng)理、電話和郵箱。一個(gè)部門可以有多名員工處理部門的日常事務(wù),每名員工只能在一個(gè)部門工作。每個(gè)部門有一名經(jīng)理,只需負(fù)責(zé)管理本部門的事務(wù)和人
28、員。 (2)員工信息包括員工號(hào)、姓名、職位、電話號(hào)碼和工資;其中,職位包括:經(jīng)理、業(yè)務(wù)員等。業(yè)務(wù)員根據(jù)托運(yùn)申請負(fù)責(zé)安排承運(yùn)貨物事宜,例如:裝貨時(shí)間、到達(dá)時(shí)間等。一個(gè)業(yè)務(wù)員可以安排多個(gè)托運(yùn)申請,但一個(gè)托運(yùn)申請只由一個(gè)業(yè)務(wù)員處理。 (3)客戶信息包括客戶號(hào)、單位名稱、通信地址、所屬省份、聯(lián)系人、聯(lián)系電話、銀行賬號(hào),其中,客戶號(hào)唯一標(biāo)識(shí)客戶信息的每一個(gè)元組。每當(dāng)客戶要進(jìn)行貨物托運(yùn)時(shí),先要提出貨物托運(yùn)申請。托運(yùn)申請信息包括申請?zhí)?、客戶?hào)、貨物名稱、數(shù)量、運(yùn)費(fèi)、出發(fā)地、目的地。其中,一個(gè)申請?zhí)枌?duì)應(yīng)唯一的一個(gè)托運(yùn)申請;一個(gè)客戶可以有多個(gè)貨物托運(yùn)申請,但一個(gè)托運(yùn)申請對(duì)應(yīng)唯一的一個(gè)客戶號(hào)。 【概念模型設(shè)
29、計(jì)】 根據(jù)需求階段收集的信息,設(shè)計(jì)的實(shí)體聯(lián)系圖和關(guān)系模式(不完整)如圖2-1所示。 【關(guān)系模式設(shè)計(jì)】 部門(部門號(hào),部門名稱,經(jīng)理,電話,郵箱) 員工(員工號(hào),姓名,職位,電話號(hào)碼,工資,(a)) 客戶((b),單位名稱,通信地址,所屬省份,聯(lián)系人,聯(lián)系電話,銀行賬號(hào)) 托運(yùn)申請((c),貨物名稱,數(shù)量,運(yùn)費(fèi),出發(fā)地,目的地) 安排承運(yùn)((d),裝貨時(shí)間,到達(dá)時(shí)間,業(yè)務(wù)員) 【問題1】(5分) 根據(jù)問題描述,補(bǔ)充四個(gè)聯(lián)系、聯(lián)系的類型,以及實(shí)體與子實(shí)體的聯(lián)系,完善圖2-1所示的實(shí)體聯(lián)系圖。 【問題2】(8分) 根據(jù)實(shí)體聯(lián)系圖,將關(guān)系模式中的空(a)~(d)補(bǔ)充完整。分別
30、指出部門、員工和安排承運(yùn)關(guān)系模式的主鍵和外鍵。 【問題3】(2分) 若系統(tǒng)新增需求描述如下: 為了數(shù)據(jù)庫信息的安全性,公司要求對(duì)數(shù)據(jù)庫操作設(shè)置權(quán)限管理功能,當(dāng)員工登錄系統(tǒng)時(shí),系統(tǒng)需要檢查員工的權(quán)限。權(quán)限的設(shè)置人是部門經(jīng)理。為滿足上述需要,應(yīng)如何修改(或補(bǔ)充)圖2-1所示的實(shí)體聯(lián)系圖,請給出修改后的實(shí)體聯(lián)系圖和關(guān)系模式。 正確答案: 本題解析: 【問題1】(5分) 【問題2】(8分) 【問題3】(2分,聯(lián)系1分,關(guān)系模式1分) 關(guān)系模式:權(quán)限(員工號(hào),權(quán)限,設(shè)置人)或權(quán)限(員工號(hào),
31、權(quán)限,部門經(jīng)理)。 試題分析 本題考查數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)、概念至邏輯結(jié)構(gòu)轉(zhuǎn)換等內(nèi)容。 此類題目要求考生認(rèn)真閱讀題目,根據(jù)題目的需求描述,給出實(shí)體間的聯(lián)系。 【問題1】 本題主要考查根據(jù)題目描述補(bǔ)充完整ER圖。 在本題中,根據(jù)題目描述“一個(gè)部門可以有多名員工處理部門的日常事務(wù),每名員工只能在一個(gè)部門工作”,我們可以知道部門與員工間存在一對(duì)多的聯(lián)系“屬于”;根據(jù)題目描述“每個(gè)部門有一名經(jīng)理,只需負(fù)責(zé)管理本部門的事務(wù)和人員”我們可以知道,經(jīng)理與部門之間存在一對(duì)一的管理聯(lián)系;然后我們根據(jù)題目描述“業(yè)務(wù)員根據(jù)托運(yùn)申請負(fù)責(zé)安排承運(yùn)貨物事宜,一個(gè)業(yè)務(wù)員可以安排多個(gè)托運(yùn)申請,但一個(gè)托運(yùn)申請只由一個(gè)
32、業(yè)務(wù)員處理”可知,在業(yè)務(wù)員和托管申請之間存在一個(gè)1對(duì)多的安排承運(yùn)的聯(lián)系;而根據(jù)題目描述“每當(dāng)客戶要進(jìn)行貨物托運(yùn)時(shí),先要提出貨物托運(yùn)申請。其中,一個(gè)申請?zhí)枌?duì)應(yīng)唯一的一個(gè)托運(yùn)申請;一個(gè)客戶可以有多個(gè)貨物托運(yùn)申請,但一個(gè)托運(yùn)申請對(duì)應(yīng)唯一的一個(gè)客戶號(hào)”可以,客戶和托運(yùn)申請之間存在一個(gè)1對(duì)多的申請聯(lián)系。另外,不管是業(yè)務(wù)員還是經(jīng)理,他們都是員工,因此業(yè)務(wù)員和經(jīng)理是員工實(shí)體的子實(shí)體。 【問題2】 該問題要我們補(bǔ)充完整各關(guān)系模式中缺失的屬性并給出各關(guān)系模式的主鍵。要補(bǔ)充各關(guān)系模式缺失的屬性應(yīng)該根據(jù)題目的描述和ER圖轉(zhuǎn)換為關(guān)系模式的轉(zhuǎn)換原則來完成。a空是要我們補(bǔ)充員工信息關(guān)系模式所缺失的屬性,根據(jù)題目的描述
33、,員工信息包括:員工號(hào)、姓名、職位、電話號(hào)碼和工資,而這些已經(jīng)存在于員工關(guān)系模式中了,但是根據(jù)ER轉(zhuǎn)換的原則,我們知道部門與員工之間存在一對(duì)多的聯(lián)系,而這個(gè)聯(lián)系沒有轉(zhuǎn)換為獨(dú)立的關(guān)系模式,因此,需要將聯(lián)系的屬性和1端關(guān)系模式的主鍵放到多端當(dāng)中來作為外鍵,因此a空應(yīng)填屬性“部門號(hào)”。其中員工關(guān)系模式的主鍵為員工號(hào),而外鍵為部門號(hào)。 b空是要我們補(bǔ)充客戶關(guān)系模式所缺失的屬性,根據(jù)題目的描述,客戶信息包括客戶號(hào)、單位名稱、通信地址、所屬省份、聯(lián)系人、聯(lián)系電話、銀行賬號(hào)。因此b空應(yīng)該填“客戶號(hào)”這個(gè)屬性。 c空是要我們補(bǔ)充托運(yùn)申請關(guān)系模式所缺失的屬性。根據(jù)題目描述托運(yùn)申請信息包括申請?zhí)?、客戶?hào)、貨物
34、名稱、數(shù)量、運(yùn)費(fèi)、出發(fā)地、目的地。再結(jié)合ER圖分析可得出c空應(yīng)該填“申請?zhí)?,客戶?hào)”。 d空是要我們補(bǔ)充安排承運(yùn)關(guān)系模式所缺失的屬性。安排承運(yùn)是有聯(lián)系轉(zhuǎn)換而來的一個(gè)關(guān)系模式,其中包含的屬性應(yīng)該包括其本身的屬性和聯(lián)系兩端實(shí)體關(guān)系模式的主鍵,應(yīng)該可知d空應(yīng)該填“申請?zhí)枴?,而業(yè)務(wù)員的主鍵就是屬性“業(yè)務(wù)員”。這個(gè)關(guān)系模式的主鍵應(yīng)該是申請?zhí)?,而外鍵是業(yè)務(wù)員,因?yàn)闃I(yè)務(wù)員是業(yè)務(wù)員關(guān)系模式的主鍵,其實(shí)就是員工號(hào)。 同樣的道理,對(duì)于部門關(guān)系模式,其主鍵為部門號(hào),而外鍵為“經(jīng)理”。 【問題3】 根據(jù)本題描述“為了數(shù)據(jù)庫信息的安全性,公司要求對(duì)數(shù)據(jù)庫操作設(shè)置權(quán)限管理功能,當(dāng)員工登錄系統(tǒng)時(shí),系統(tǒng)需要檢查員工的
35、權(quán)限。權(quán)限的設(shè)置人是部門經(jīng)理?!蔽覀兙涂梢灾溃瑧?yīng)該有一個(gè)實(shí)體“權(quán)限”,而這個(gè)實(shí)體與部門經(jīng)理之間存在一種一對(duì)多的聯(lián)系,其中部門經(jīng)理端為一端。 5.某大型商場內(nèi)安裝了多個(gè)簡易的紙巾售賣機(jī),自動(dòng)出售2元錢一包的紙巾,且每次僅售出一包紙巾。紙巾售賣機(jī)的狀態(tài)圖如圖6-1所示。 采用狀態(tài)(State)模式來實(shí)現(xiàn)該紙巾售賣機(jī),得到如圖6-2所示的類圖。其中類State為抽象類,定義了投幣、退幣、出紙巾等方法接口。類SoldState、SoldOutState、NoQuarterState和HasQuarterState分別對(duì)應(yīng)圖6-1中紙巾售賣機(jī)的4種狀態(tài):售出紙巾、
36、紙巾售完、沒有投幣、有2元錢。 【Java代碼】 import java.util.*; interface State{ public void insertQuarter( ?。?//投幣 public void ejectQuarter( );//退幣 public void turnCrank( ?。?//按下“出紙巾”按鈕 public void dispense( );//出紙巾 } class TissueMachine{ (1)soldOutState,noQuarterState,hasQuarterState,soldState,state;
37、state=soldOutState; int count=0;//紙巾數(shù) public TissueMachine(int numbers){/*實(shí)現(xiàn)代碼省略*/} public State getHasQuarterState( ){return hasQuarterState;} public State getNoQuarterState( ?。﹞return noQuarterState;} public State getSoldState( ?。﹞return soldState;} public State getSoldOutState( ?。﹞return s
38、oldOutState;} public int getCount( ?。﹞return count;} //其余代碼省略 } class NoQuarterState implements State{ TissueMachine tissueMachine; public void insertQuarter( ){ tissueMachine.setState((2)); } //構(gòu)造方法以及其余代碼省略 } class HasQuarterState implements State{ TissueMachine tissueMachine; public
39、void ejectQuarter( ?。﹞ tissueMachine.setState((3)); } //構(gòu)造方法以及其余代碼省略 } class SoldState implements State{ TissueMachine tissueMachine; public void dispense( ?。﹞ if(tissueMachine.getCount( ?。?0){ tissueMachine.setState((4)); }else{ tissueMachine.setState((5));} } }
40、 正確答案: 本題解析: (1)State (2)tissueMachine.getHasQuarterState() (3)tissueMachine.getNoQuarterState() (4)tissueMachine.getNoQuarterState() (5)tissueMachine.getSoldOutState() 本題考查基本面向?qū)ο笤O(shè)計(jì)模式的運(yùn)用能力。 狀態(tài)設(shè)計(jì)模式主要是能夠使一個(gè)對(duì)象的內(nèi)在狀態(tài)改變時(shí)允許改變其行為,使這個(gè)對(duì)象看起來像是改變了其類。由類圖可知類State是類SoldState、SoldOutStat
41、e、NoQuarterState和HasQuarterState分的父類,它抽象了這四個(gè)類的共有屬性和行為。在使用中,無論是這四個(gè)類中那個(gè)類的對(duì)象,都可被當(dāng)作State對(duì)象來使用。 而根據(jù)題目的描述,我們可以知道一個(gè)紙巾售賣機(jī)它由4種狀態(tài),分別是售出紙巾、紙巾售完、沒有投幣、有2元錢。 在本題中,根據(jù)程序我們不難知道第(1)空是要定義5個(gè)對(duì)象的引用,而這些變量都應(yīng)該屬于State類型,因此第一空答案為State。 而第(2)在類NoQuarterState(沒有投幣)的insertQuarter()函數(shù)中,而這個(gè)函數(shù)是投幣函數(shù),在該函數(shù)中,使用了tissueMachine類的setSta
42、te方法,該方法是設(shè)置紙巾售賣機(jī)的當(dāng)前狀態(tài),根據(jù)題目給出的紙巾售賣機(jī)狀態(tài)圖,我們可以知道,從沒有投幣狀態(tài),經(jīng)過投幣后,應(yīng)該轉(zhuǎn)換到有2元錢狀態(tài)。而setState方法的參數(shù)是一個(gè)State的對(duì)象,因此第(2)空應(yīng)該是一個(gè)有2元錢對(duì)象,而這里我們可以新創(chuàng)建一個(gè)該對(duì)象,也可以通過tissueMachine類的getHasQuarterState方法來獲得這樣一個(gè)對(duì)象,所以第(2)空答案應(yīng)該是“tissueMachine.getHasQuarterState()”或“new HasQuarterState”。 而第(3)在類HasQuarterState(有2元錢)的ejectQuarter()函數(shù)
43、中,而這個(gè)函數(shù)是退幣函數(shù),在該函數(shù)中,也使用了tissueMachine類的setState方法,該方法是設(shè)置紙巾售賣機(jī)的當(dāng)前狀態(tài),根據(jù)題目給出的紙巾售賣機(jī)狀態(tài)圖,我們可以知道,從有2元錢狀態(tài),經(jīng)過退幣后,應(yīng)該轉(zhuǎn)換到?jīng)]有投幣狀態(tài)。而setState方法的參數(shù)是一個(gè)State的對(duì)象,因此第(3)空應(yīng)該是一個(gè)沒有投幣對(duì)象,而這里我們可以新創(chuàng)建一個(gè)該對(duì)象,也可以通過tissueMachine類的getNoQuarterState方法來獲得這樣一個(gè)對(duì)象,所以第(3)空答案應(yīng)該是“tissueMachine.getNoQuarterState()”或“new NoQuarterState”。 而同樣的
44、道理,我們可以知道第(4)空的答案是“tissueMachine.getNoQuarterState()”或“new NoQuarterState”。第(5)空的答案是“tissueMachine.getSoldOutState()”或“new SoldOutState”。 6.設(shè)某一機(jī)器由n個(gè)部件組成,每一個(gè)部件都可以從m個(gè)不同的供應(yīng)商處購得。供應(yīng)商j供應(yīng)的部件i具有重量wij和價(jià)格cij。設(shè)計(jì)一個(gè)算法,求解總價(jià)格不超過上限cc的最小重量的機(jī)器組成。 采用回溯法來求解該問題: 首先定義解空間。解空間由長度為n的向量組成,其中每個(gè)分量取值來自集合{1,2,…
45、,m},將解空間用樹形結(jié)構(gòu)表示。 接著從根結(jié)點(diǎn)開始,以深度優(yōu)先的方式搜索整個(gè)解空間。從根結(jié)點(diǎn)開始,根結(jié)點(diǎn)成為活結(jié)點(diǎn),同時(shí)也成為當(dāng)前的擴(kuò)展結(jié)點(diǎn)。向縱深方向考慮第一個(gè)部件從第一個(gè)供應(yīng)商處購買,得到一個(gè)新結(jié)點(diǎn)。判斷當(dāng)前的機(jī)器價(jià)格(c11)是否超過上限(cc),重量(w11)是否比當(dāng)前已知的解(最小重量)大,若是,應(yīng)回溯至最近的一個(gè)活結(jié)點(diǎn);若否,則該新結(jié)點(diǎn)成為活結(jié)點(diǎn),同時(shí)也成為當(dāng)前的擴(kuò)展結(jié)點(diǎn),根結(jié)點(diǎn)不再是擴(kuò)展結(jié)點(diǎn)。繼續(xù)向縱深方向考慮第二個(gè)部件從第一個(gè)供應(yīng)商處購買,得到一個(gè)新結(jié)點(diǎn)。同樣判斷當(dāng)前的機(jī)器價(jià)格(c11+c21)是否超過上限(cc),重量(w11+w21)是否比當(dāng)前已知的解(最小重量)大。若是
46、,應(yīng)回溯至最近的一個(gè)活結(jié)點(diǎn);若否,則該新結(jié)點(diǎn)成為活結(jié)點(diǎn),同時(shí)也成為當(dāng)前的擴(kuò)展結(jié)點(diǎn),原來的結(jié)點(diǎn)不再是擴(kuò)展結(jié)點(diǎn)。以這種方式遞歸地在解空間中搜索,直到找到所要求的解或者解空間中已無活結(jié)點(diǎn)為止。 【C代碼】 下面是該算法的C語言實(shí)現(xiàn)。 (1)變量說明 n:機(jī)器的部件數(shù) m:供應(yīng)商數(shù) cc:價(jià)格上限 w[][]:二維數(shù)組,w[i][j]表示第j個(gè)供應(yīng)商供應(yīng)的第i個(gè)部件的重量 c[][]:二維數(shù)組,c[i][j]表示第j個(gè)供應(yīng)商供應(yīng)的第i個(gè)部件的價(jià)格 bestW:滿足價(jià)格上限約束條件的最小機(jī)器重量 bestC:最小重量機(jī)器的價(jià)格 bestX[]:最優(yōu)解,一維數(shù)組,bestX[i]表示
47、第i個(gè)部件來自哪個(gè)供應(yīng)商 cw:搜索過程中機(jī)器的重量 cp:搜索過程中機(jī)器的價(jià)格 x[]:搜索過程中產(chǎn)生的解,x[i]表示第i個(gè)部件來自哪個(gè)供應(yīng)商 i:當(dāng)前考慮的部件,從0到n-1 j:循環(huán)變量 (2)函數(shù)backtrack int n=3; int m=3; int cc=4; int w[3][3]={{1,2,3},{3,2,1},{2,2,2}}; int c[3][3]={{1,2,3},{3,2,1},{2,2,2}}; int bestW=8; int bestC=0; int bestX[3]={0,0,0}; int cw=0; int cp=
48、0; int x[3]={0,0,0}; int backtrack(int i){ int j=0; int found=0; if(i>n-1){/*得到問題解*/ bestW=cw; bestC=cp; for(j=0;j<n;j++){ (1); } return 1; } if(cp<=cc){/*有解*/ found=1; } for(j=0;(2);j++){ /*第i個(gè)部件從第j個(gè)供應(yīng)商購買*/ (3); cw=cw+w[i][j]; cp=cp+c[i][j]; if(cp<=cc&&(4)){/*深度搜索,擴(kuò)展當(dāng)前結(jié)點(diǎn)*/ if(
49、backtrack(i+1)){found=1;} } /*回溯*/ cw=cw-w[i][j]; (5); } return found; } 正確答案: 本題解析: (1)bestX[j]=x[j] (2)j<m (3)x[i]=j (4)cw<bestW (5)cp=cp-c[i][j] 本題考查回溯法的應(yīng)用。 在題目的描述中告訴了我們回溯法的基本思想。其實(shí)回溯法主要有兩個(gè)過程,一個(gè)是向前探索,只要在當(dāng)前滿足設(shè)定的判定條件時(shí),才向前探索,而另外一個(gè)就是回溯,在兩種情況下,
50、需要回溯,其分別是當(dāng)不滿足設(shè)定條件時(shí)和求的一個(gè)解的時(shí)候。 下面我們來具體分析本試題。根據(jù)題目給出的注釋,我們知道第(1)空所處的位置是得到問題的一個(gè)解時(shí),我們該怎么辦,根據(jù)題目描述,應(yīng)該是將這個(gè)解記錄下來,存放到bestX數(shù)組當(dāng)中,而求得的解是保存在x數(shù)組當(dāng)中的,因此這里需要循環(huán)將x數(shù)組中的元素值賦給bestX數(shù)組,因此第(1)空答案為bestX[j]=x[j]。 第(2)空是for循環(huán)中的循環(huán)判定條件,根據(jù)題目注釋我們知道該循環(huán)的作用是確定第i個(gè)部件從第j個(gè)供應(yīng)商購買,那么在確定第i個(gè)部件到底是從哪個(gè)供應(yīng)商購買時(shí),需要比較從各供應(yīng)商購買的情況,因此循環(huán)的次數(shù)為供應(yīng)商數(shù),因此第(2)空答案
51、是j<m。結(jié)合這個(gè)循環(huán)體當(dāng)中的語句和我們對(duì)回溯法的理解,我們可以發(fā)現(xiàn)循環(huán)下面的語句是要考慮將第i個(gè)部件從供應(yīng)商j當(dāng)中購買,也就是j是當(dāng)前解的一部分,因此需要將j記錄到解當(dāng)中來,所以第(3)空應(yīng)該是x[i]=j。 第(4)空是if語句中的一個(gè)條件,根據(jù)題目注釋,我們可以知道如果該if語句表達(dá)式的計(jì)算結(jié)果為真,需要進(jìn)行深度搜索,擴(kuò)展當(dāng)前結(jié)點(diǎn),那么如果要繼續(xù)向前探索,就需要滿足設(shè)定的條件,也就是當(dāng)前總重量要小于bestW,而當(dāng)前總價(jià)格要小于等于cc,因此第(4)空的答案應(yīng)該填cw<bestW。 根據(jù)題目注釋,第(5)空是在回溯下面的語句,根據(jù)回溯的原則我們可以知道,回溯時(shí),要將當(dāng)前考慮的結(jié)點(diǎn)的重量和價(jià)格從總重量和總價(jià)格中減去,因此第(5)的答案是cp=cp-c[i][j]。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級(jí)《觀潮》課件1 (3)
- 中考數(shù)學(xué)課件浙教版中考數(shù)學(xué)數(shù)與式(1)
- 食品安全及其評(píng)價(jià)體系課件
- 不規(guī)則物體的體積初成-PPT
- 抑郁癥的防治
- 優(yōu)選光輻射測量系統(tǒng)的性能及其測量課件
- 14通往廣場的路不止一條課件
- 石油能源行業(yè)2020工作總結(jié)與2020工作計(jì)劃ppt模板
- 微生物鏈霉菌和其在生產(chǎn)中的應(yīng)用
- 優(yōu)質(zhì)護(hù)理服務(wù)措施ppt
- 小小的書櫥課件(北師大版語文三年級(jí)下冊)
- 第6章國際貨物運(yùn)輸2
- 氣胸的健康指導(dǎo)ppt課件
- 認(rèn)識(shí)計(jì)算機(jī)鍵盤微課
- 先天性髖關(guān)節(jié)脫位X線診斷