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