2016年下半年軟件設計師考試下午真題(試題及參考答案)_第1頁
2016年下半年軟件設計師考試下午真題(試題及參考答案)_第2頁
2016年下半年軟件設計師考試下午真題(試題及參考答案)_第3頁
2016年下半年軟件設計師考試下午真題(試題及參考答案)_第4頁
2016年下半年軟件設計師考試下午真題(試題及參考答案)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、精選文檔2016年下半年軟件設計師考試下午真題(參考答案)試題部分1.閱讀下列說明,回答問題1至問題4,將解答填入答題紙的對應欄內(nèi)?!菊f明】某證券交易所為了方便提供證券交易服務,欲開發(fā)一證券交易平臺,該平臺的主要功能如下:(1)開戶。根據(jù)客戶服務助理提交的開戶信息,進行開戶,并將客戶信息存入客戶記錄中,賬戶信息(余額等)存入賬戶記錄中;(2)存款。客戶可以向其賬戶中存款,根據(jù)存款金額修改賬戶余額;(3)取款。客戶可以從其賬戶中取款,根據(jù)取款金額修改賬戶余額;(4)證券交易??蛻艉徒?jīng)紀人均可以進行證券交易(客戶通過在線方式,經(jīng)紀人通過電話),將交易信息存入交易記錄中;(5)檢查交易。平臺從交易記

2、錄中讀取交易信息,將交易明細返回給客戶?,F(xiàn)采用結(jié)構化方法對該證券交易平臺進行分析與設計,獲得如圖1-1所示的上下文數(shù)據(jù)流圖和圖1-2所示的0層數(shù)據(jù)流圖?!締栴}1】(3分) 使用說明中的詞語,給出圖1-1中的實體E1-E3的名稱?!締栴}2】(3分) 使用說明中的詞語,給出圖1-2中的數(shù)據(jù)存儲D1-D3的名稱?!締栴}3】(4分) 根據(jù)說明和圖中的術語,補充圖1-2中缺失的數(shù)據(jù)流及其起點和終點?!締栴}4】(5分)實際的證券交易通常是在證券交易中心完成的,因此,該平臺的“證券交易”功能需將交易信息傳遞給證券交易中心。針對這個功能需求,需要對圖1-1和圖1-2進行哪些修改,請用200字以內(nèi)的文字加以說明

3、。2.閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對應欄內(nèi)?!菊f明】某賓館為了有效地管理客房資源,滿足不同客戶需求,擬構建一套賓館信息管理系統(tǒng),以方便賓館管理及客房預訂等業(yè)務活動?!拘枨蠓治鼋Y(jié)果】 該系統(tǒng)的部分功能及初步需求分析的結(jié)果如下: (1)賓館有多個部門,部門信息包括部門號、部門名稱、電話、經(jīng)理。每個部門可以有多名員工,每名員工只屬于一個部門;每個部門只有一名經(jīng)理,負責管理本部門。 (2)員工信息包括員工號、姓名、崗位、電話、工資,其中,員工號唯一標識員工關系中的一個元組,崗位有經(jīng)理、業(yè)務員。 (3)客房信息包括客房號(如1301、1302等)、客房類型、收費標準、入住狀態(tài)(已

4、入住未入?。渲锌头刻栁ㄒ粯俗R客房關系中的一個元組,不同客房類型具有不同的收費標準。 (4)客戶信息包括客戶號、單位名稱、聯(lián)系人、聯(lián)系電話、聯(lián)系地址,其中客戶號唯一標識客戶關系中的一個元組。(5)客戶預訂客房時,需要填寫預訂申請。預訂申請信息包括申請?zhí)?、客戶號、入住時間、入住天數(shù)、客房類型、客房數(shù)量,其中,一個申請?zhí)栁ㄒ粯俗R預訂申請中的一個元組;一位客戶可以有多個預訂申請,但一個預訂申請對應唯一的一位客戶。(6)當客戶入住時,業(yè)務員根據(jù)客戶的預訂申請負責安排入住客房事宜。安排信息包括客房號、姓名、性別、身份證號、入住時間、天數(shù)、電話,其中客房號、身份證號和入住時間唯一標識一次安排。一名業(yè)務員

5、可以安排多個預訂申請,一個預訂申請只由一名業(yè)務員安排,而且可安排多間同類型的客房?!靖拍钅P驮O計】根據(jù)需求階段收集的信息,設計的實體聯(lián)系圖如圖2-1所示?!娟P系模式設計】 部門(部門號,部門名稱,經(jīng)理,電話) 員工(員工號, ( a ),姓名,崗位,電話,工資) 客戶( ( b ) ,聯(lián)系人,聯(lián)系電話,聯(lián)系地址) 客房(客房號,客房類型,收費標準,入住狀態(tài)) 預訂申請( ( c) ,入住時間,天數(shù),客房類型,客房數(shù)量) 安排(申請?zhí)枺头刻?,姓名,性別, (c) ,天數(shù),電話,業(yè)務員)【問題1】(4分) 根據(jù)問題描述,補充四個聯(lián)系,完善圖2-1,的實體聯(lián)系圖。聯(lián)系名可用聯(lián)系1、聯(lián)系2、聯(lián)系3和

6、聯(lián)系4代替,聯(lián)系的類型為1:1、1:n和m:n (或1:1,和1:*和*:*)。 【問題2】(8分) (1)根據(jù)題意,將關系模式中的空(a)(d)補充完整,并填入答題紙對應的位置上。 (2)給出“預訂申請”和“安排”關系模式的主鍵和外鍵。 【問題3】(3分) 【關系模式設計】中的“客房”關系模式是否存在規(guī)范性問題,請用100字以內(nèi)文字解釋你的觀點(若存在問題,應說明如何修改“客房”關系模式)。3.閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對應欄內(nèi)?!菊f明】 某種出售罐裝飲料的自動售貨機( Vending Machine)的工作過程描述如下: (1)顧客選擇所需購買的飲料及數(shù)量。(2)

7、顧客從投幣口向自動售貨機中投入硬幣(該自動售貨機只接收硬幣)。硬幣器收集投入的硬幣并計算其對應的價值。如果所投入的硬幣足夠購買所需數(shù)量的這種飲料且飲料數(shù)量足夠,則推出飲料,計算找零,顧客取走飲料和找回的硬幣;如果投入的硬幣不夠或者所選購的飲料數(shù)量不足,則提示用戶繼續(xù)投入硬幣或重新選擇飲料及數(shù)量。(3)一次購買結(jié)束之后,將硬幣器中的硬幣移走(清空硬幣器),等待下一次交易。自動售貨機還設有一個退幣按鈕,用于退還顧客所投入的硬幣。已經(jīng)成功購買飲料的錢是不會被退回的?,F(xiàn)采用面向?qū)ο蠓椒ǚ治龊驮O計該自動售貨機的軟件系統(tǒng),得到如圖3-1所示的用例圖,其中,用例“購買飲料”的用例規(guī)約描述如下。參與者:顧客。

8、主要事件流: 1顧客選擇需要購買的飲料和數(shù)量,投入硬幣; 2自動售貨機檢查顧客是否投入足夠的硬幣; 3自動售貨機檢查飲料儲存?zhèn)}中所選購的飲料是否足夠; 4自動售貨機推出飲料; 5自動售貨機返回找零。各選事件流: 2a若投入的硬幣不足,則給出提示并退回到1; 3a若所選購的飲料數(shù)量不足,則給出提示并退回到1 。根據(jù)用例“購買飲料”得到自動售貨機的4個狀態(tài):“空閑”狀態(tài)、“準備服務”狀態(tài)、“可購買”狀態(tài)以及“飲料出售”狀態(tài),對應的狀態(tài)圖如圖3-2所示。所設計的類圖如圖3-3所示。【問題1】(6分) 根據(jù)說明中的描述,使用說明中的術語,給出圖3-2中的S1S4所對應的狀態(tài)名?!締栴}2】(4分) 根據(jù)

9、說明中的描述,使用說明中的術語,給出圖3-2中的E1E4所對應的事件名【問題3】(5分)根據(jù)說明中的描述,使用說明中的術語,給出圖3-3中C1C5所對應的類名。4.閱讀下列說明和C代碼,回答問題1至問題3,將解答寫在答題紙的對應欄內(nèi)?!菊f明】 模式匹配是指給定主串t和子串s,在主串t中尋找子串s的過程,其中s稱為模式。如果匹配成功,返回s在t中的位置,否則返回-1 。 KMP算法用next數(shù)組對匹配過程進行了優(yōu)化。KMP算法的偽代碼描述如下: 1在串t和串s中,分別設比較的起始下標i=j=0。 2如果串t和串s都還有字符,則循環(huán)執(zhí)行下列操作: (1)如果j=-l或者ti=sj,則將i和j分別加

10、1,繼續(xù)比較t和s的下一個字符; (2)否則,將j向右滑動到nextj的位置,即j =nextj。 3如果s中所有字符均已比較完畢,則返回匹配的起始位置(從1開始);否則返回-1 其中,next數(shù)組根據(jù)子串s求解。求解next數(shù)組的代碼已由get_next函數(shù)給出?!綜代碼】(1)常量和變量說明    t,s:長度為憫鉑Is的字符串    next:next數(shù)組,長度為Is(2)C程序#include <stdio.h>#include <stdlib.h>#include <string.h>/*

11、求next的值*/void get_next( int *next, char *s, int Is)      int i=0,j=-1;    next0=-1;/*初始化next0*/    while(i < ls)/*還有字符*/    if(j=-1l lsi=sj)/*匹配*/        j+;  

12、60;     i+;    if( si=sj)       nexti = nextj;    else       Nexti = j;   else  j = nextj;  int kmp( int *next, char *t ,char *s,

13、int lt, int Is )        Int i= 0,j =0 ;       while (i < lt &&  (1)   )          if( j=-1 |     (2)  )  

14、               i + ;                 j + ;            else    

15、60;                 (3)    if (j >= ls)return     (4)   else    return -1;【問題1】(8分) 根據(jù)題干說明,填充C代碼中的空(1)(4).【問題2】(2分)根據(jù)題干說明和C代碼,分析出kmp算法的時間

16、復雜度為(5)(主串和子串的長度分別為It和Is,用O符號表示)?!締栴}3】(5分)根據(jù)C代碼,字符串“BBABBCAC”的next數(shù)組元素值為(6)(直接寫素值,之間用逗號隔開)。若主串為“AABBCBBABBCACCD”,子串為“BBABBCAC”,則函數(shù)Kmp的返回值是(7)。5.閱讀下列說明和C+-代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內(nèi)。【說明】 某發(fā)票(lnvoice)由抬頭(Head)部分、正文部分和腳注(Foot)部分構成?,F(xiàn)采用裝飾( Decorator)模式實現(xiàn)打印發(fā)票的功能,得到如圖5-1所示的類圖?!綜+代碼】#include <iostream>

17、;using namespace std;class Invoicepublic: (1) cout<<"This is the content of the invoice!"<<endl; ;class Decorator : public Invoice Invoice *ticket;public: Decorator(lnvoice *t) ticket = t; void printInvoice() if(ticket != NULL) (2); ;class HeadDecorator : public Decoratorpublic

18、: HeadDecorator(lnvoice*t): Decorator(t) void printInvoice() cout<< "This is the header of the invoice! "<< endl; (3) ; ; class FootDecorator : public Decorator public: FootDecorator(Invoice *t): Decorator(t) void printlnvoice() (4) ; cout<< "This is the footnote of

19、the invoice!"<< endl; ;int main(void) Invoice t; FootDecorator f(&t); HeadDecorator h(&f); h.printInvoice(); cout<<”-”<<endl; FootDecorator a(NULL) ; HeadDecorator b( (5) ); b.printInvoice(); return 0;程序的輸出結(jié)果為: This is the header of the invoice! This is the content of

20、the invoice! This is the footnote of the invoice! - This is the header of the invoice! This is the footnote of the invoice!6.閱讀下列說明和java代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內(nèi)。【說明】 某發(fā)票(lnvoice)由抬頭(Head)部分、正文部分和腳注(Foot)部分構成。現(xiàn)采用裝飾(Decorator)模式實現(xiàn)打印發(fā)票的功能,得到如圖6-1所示的類圖。【java代碼】class invoicepublic void printInvoice() S

21、ystem.out.println ( "This is the content of the invoice!"); class Decorator extends Invoice protected Invoice ticket; public Decorator(lnvoice t) ticket = t; public void printInvoice() if(ticket != null) (1) ; class HeadDecorator extends Decorator public HeadDecorator(lnvoice t) super(t);

22、public void printInvoice () Systent.out.println( "This is the header of the invoice! "); (2) ; class FootDecorator extends Decorator public FootDecorator(Invoice t) super(t); public void printlnvoice() ( 3) ; Systent.out.println( "This is the footnote of the invoice! "); Class te

23、st public static void main(String args) Invoice t =new Invioce(); Invoice ticket; ticket= (4) ; ticket.printInvoice(); Systent.out.println(“-“); ticket= (5) ; ticket.printInvoice(); 程序的輸出結(jié)果為: This is the header of the invoice! This is the content of the invoice! This is the footnote of the invoice!

24、- This is the header of the invoice! This is the footnote of the invoice!參考答案1.參考答案:問題1 E1:客戶服務助理,E2:客戶,E3:經(jīng)紀人。問題2 D1:客戶記錄,D2:賬戶記錄,D3:交易記錄。問題3數(shù)據(jù)流名稱:修改賬戶余額,起點:存款,終點:D2。數(shù)據(jù)流名稱:修改賬戶余額,起點:取款,終點:D2。數(shù)據(jù)流名稱:交易信息存入交易記錄(在線),起點:證券交易(在線),終點:D3。數(shù)據(jù)流名稱:交易信息存入交易記錄(電話),起點:證券交易(電話),終點:D3。問題4圖1增加外部實體“證券交易中心”,增加“證券交易平臺”

25、到“證券交易中心”,數(shù)據(jù)流:交易信息圖2增加外部實體“證券交易中心”,增加“證券交易(在線)“到“證券交易中心”,數(shù)據(jù)流:交易信息圖2增加“證券交易(電話)“到“證券交易中心”,數(shù)據(jù)流:交易信息 試題分析:本題問題1要求識別E1-E3具體為哪個外部實體,通讀試題說明,可以了解到適合充當外部實體的包括:客戶、客戶服務助理、經(jīng)記人。具體的對應關系,可以通過將頂層圖與題目說明進行匹配得知。如:從圖中可看出E1會向交易平臺發(fā)出數(shù)據(jù)流“開戶信息”;而從試題說明“根據(jù)客戶服務助理提交的開戶信息,進行開戶,并將客戶信息存入客戶記錄中,賬戶信息存入賬戶記錄中”可以看出,E1對應是客戶服務助理。E2、E3同理可

26、得。本題問題2要求識別存儲,解決這類問題,以圖的分析為主,配合說明給存儲命名,因為存儲相關的數(shù)據(jù)流一般展現(xiàn)了這個存儲中到底存了些什么信息,如從圖中可以看到D1中有客戶信息,而D2中有賬戶信息,題目說明中又有“根據(jù)客戶服務助理提交的開戶信息,進行開戶,并將客戶信息存入客戶記錄中,賬戶信息存入賬戶記錄中?!弊匀籇1應為客戶記錄,D2應為賬戶記錄。同理,D3為交易記錄。問題3分析:缺失數(shù)據(jù)流1名稱:修改賬戶余額,起點:存款,終點:D2。理由:從試題說明“客戶可以向其賬戶中存款,根據(jù)存款金額修改賬戶余額”可以看出,這個功能有操作“根據(jù)存款金額修改賬戶余額”。據(jù)此可以了解到從該功能應有數(shù)據(jù)流“存款”至D

27、2,而0層圖沒有。缺失數(shù)據(jù)流2:名稱:修改賬戶余額,起點:取款,終點:D2。理由:從試題說明“客戶可以從其賬戶中取款,根據(jù)取款金額修改賬戶余額”可以看出,這個功能有操作“根據(jù)取款金額修改賬戶余額”。據(jù)此可以了解到從該功能應有數(shù)據(jù)流“取款”至D2,而0層圖沒有。缺失數(shù)據(jù)流3-4名稱:交易信息存入交易記錄,起點:證券交易(分為在線與電話),終點:D3。理由:從試題說明“客戶和經(jīng)紀人均可以進行證券交易,將交易信息存入交易記錄中”可以看出,這個功能有操作“將交易信息存入交易記錄中”。據(jù)此可以了解到從該功能應有數(shù)據(jù)流“證券交易”至D3,而0層圖沒有。fusional 2016-11-18存貯的時候,客戶

28、記錄我寫得客戶記錄表,賬戶記錄,我寫得賬戶記錄表,對不對MegumiIsh 2016-11-20沒有影響的2.參考答案:問題1:1、經(jīng)理與部門 之間 存在1:1的聯(lián)系。2、部門與員工 之間 存在1:n的聯(lián)系。3、客戶與預訂申請 之間 存在 1:n的聯(lián)系。4、業(yè)務員、客房、預訂申請 之間存在1:m:n的聯(lián)系。問題2:(a) 部門號。(b) 客戶號、單位名稱(c) 申請?zhí)?、客戶號。(d) 身份證號、入住時間?!邦A訂申請”關系模式中的主鍵是申請?zhí)枺怄I是申請?zhí)?、客戶號。“安排”關系模式中的主鍵是:(客房號、身份證號、入住時間),外鍵是:申請?zhí)?、客房號、業(yè)務員。問題3:根據(jù)試題中的描述,客房信息中客房

29、號是唯一標識客房關系的一個元組,即可以作為唯一的主鍵。在客房關系模式中,不存在其他部分依賴關系,但客戶號->類型->收費標準,存在傳遞函數(shù)依賴,所以冗余,添加異常,修改異常,刪除異常均存在。試題分析:fusional 2016-11-17寫員工關系模式時,應該填部門號吧,應為部門號才是主鍵,寫客戶關系模式時,不需要寫申請?zhí)柡涂头刻柊?,應為客戶可以單獨存在,還有最后最后一問,不同的客房類型具有不同的收費標準,存在著數(shù)據(jù)曾與,及修改不一致的問題MegumiIsh 2016-11-18答案已經(jīng)做了修改fusional 2016-11-20老師,我寫預定申請關系模式時,我寫的是客戶號和申請

30、號和業(yè)務員號,你們的答案是客戶號和申請?zhí)?。我主鍵寫的是申請?zhí)枺怄I是客戶號和業(yè)務員號。因為預定申請需要客戶申請,業(yè)務員處理。我記得哪年的真題和這個一樣的,不知道我的想法對不?flycity 2016-11-25預定的環(huán)節(jié)沒有強調(diào)需要記錄業(yè)務員信息,所以不需要寫業(yè)務員號。在現(xiàn)實的設計中,根據(jù)需要,可寫業(yè)務員號,而在考試中,一般沒有強調(diào)需要這個信息,我們就不寫。fusional 2016-11-29老師,那不是這個我得不到分了哦?flycity 2016-12-02這個得看評分時嚴格程度了,一般來說,評分時,看到合理答案但非標準答案,會組織閱卷老師進行研討,研討之后若大家覺得這種解決方案也可行,會

31、把這種答法納入給分的范疇。3.參考答案:問題1:S1:空閑,S2:準備服務,S3:飲料出售,S4:可購買。問題2:E1:飲料數(shù)量不足,E2:硬幣數(shù)量足夠,E3:推出飲料,E4:返回找零。問題3:C1:自動售貨機,C2:硬幣器,C3:飲料儲存?zhèn)},C4:硬幣,C5:飲料。 試題分析:本題問題1系統(tǒng)中的狀態(tài)圖,是對狀態(tài)轉(zhuǎn)換的圖形化表達。從題目的說明部分可知,在狀態(tài)轉(zhuǎn)換過程中,涉及到的狀態(tài)一共有四種:空閑、準備服務、可購買、飲料出售。從狀態(tài)圖涉及的轉(zhuǎn)換可知S1S4分別為:空閑、準備服務、飲料出售、可購買。關于狀態(tài)轉(zhuǎn)換的分析如下:(1) 清空硬幣器后,自動售貨機等待下一次交易,進入空閑狀態(tài)。此時可任意的進行飲料選擇數(shù)量,一旦顧客投入硬幣,自動售貨機便進入準備服務狀態(tài)。(2) 當自動售貨機進行準備服務狀態(tài)時,開始計算硬幣價值,如果硬幣不夠則提示顧客繼續(xù)投入硬幣。如果硬幣足夠,則進入可購買狀態(tài)。(3) 進行可購買狀態(tài)后,自動售貨機判斷飲料數(shù)量。如果數(shù)量不夠,則返回準備服務狀態(tài)提示用戶重新選擇飲料。如果數(shù)量足夠,則推出飲料進入飲料出售狀態(tài)。(4) 進行飲料出售狀態(tài)后,自動售貨機計算找零,并返回進入空閑狀態(tài)等待下一次交易。本題問題2主要是分析四種狀態(tài)中的跳轉(zhuǎn)事件。根據(jù)狀態(tài)圖和試題主要事件流的描述可以推出事件E1是飲料數(shù)量不足,事件E2是硬幣數(shù)量足夠,事件E3是推出飲料,事件E4是返回找零

溫馨提示

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

評論

0/150

提交評論