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

下載本文檔

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

文檔簡介

2016年軟件考試下午真題(試題

及參考答案)

D

與設計,獲得如圖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)的文字加以說明。

2.

閱讀下列說明,回答問題1至問題3,將解答填

入答題紙的對應欄內(nèi)。

【說明】

某賓館為了有效地管理客房資源,滿足不同客戶

需求,擬構建一套賓館信息管理系統(tǒng),以方便賓

館管理及客房預訂等業(yè)務活動。

【需求分析結果】

該系統(tǒng)的部分功能及初步需求分析的結果如

下:

(1)賓館有多個部門,部門信息包括部門號、

部門名稱、電話、經(jīng)理。每個部門可以有多名員

工,每名員工只屬于一個部門;每個部門只有一

名經(jīng)理,負責管理本部門。

(2)員工信息包括員工號、姓名、崗位、電話、

工資,其中,員工號唯一標識員工關系中的一個

元組,崗位有經(jīng)理、業(yè)務員。

(3)客房信息包括客房號(如1301、1302等)、

客房類型、收費標準、入住狀態(tài)(已入住/未入

?。?,其中客房號唯一標識客房關系中的一個元

組,不同客房類型具有不同的收費標準。

(4)客戶信息包括客戶號、單位名稱、聯(lián)系人、

聯(lián)系電話、聯(lián)系地址,其中客戶號唯一標識客戶

關系中的一個元組。

(5)客戶預訂客房時,需要填寫預訂申請。預

訂申請信息包括申請?zhí)枴⒖蛻籼?、入住時間、入

住天數(shù)、客房類型、客房數(shù)量,其中,一個申請

號唯一標識預訂申請中的一個元組;一位客戶可

以有多個預訂申請,但一個預訂申請對應唯一的

一位客戶。

(6)當客戶入住時,業(yè)務員根據(jù)客戶的預訂申

請負責安排入住客房事宜。安排信息包括客房

號、姓名、性別、身份證號、入住時間、天數(shù)、

電話,其中客房號、身份證號和入住時間唯一標

識一次安排。一名業(yè)務員可以安排多個預訂申

請,一個預訂申請只由一名業(yè)務員安排,而且可

安排多間同類型的客房。

【概念模型設計】

根據(jù)需求階段收集的信息,設計的實體聯(lián)系圖如

圖2-1所示。

【關系模式設計】

部門(部門號,部門名稱,經(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和聯(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)。

【說明】

某種出售罐裝飲料的自動售貨

機.(VendingMachine)的工作過程描述如下:

(1)顧客選擇所需購買的飲料及數(shù)量。

(2)顧客從投幣口向自動售貨機中投入硬幣

(該自動售貨機只接收硬幣)。硬幣器收集投入

的硬幣并計算其對應的價值。如果所投入的硬幣

足夠購買所需數(shù)量的這種飲料且飲料數(shù)量足夠,

則推出飲料,計算找零,顧客取走飲料和找回的

硬幣;如果投入的硬幣不夠或者所選購的飲料數(shù)

量不足,則提示用戶繼續(xù)投入硬幣或重新選擇飲

料及數(shù)量。

(3)一次購買結束之后,將硬幣器中的硬幣

移走(清空硬幣器),等待下一次交易。自動售

貨機還設有一個退幣按鈕,用于退還顧客所投入

的硬幣。已經(jīng)成功購買飲料的錢是不會被退回

的。

現(xiàn)采用面向?qū)ο蠓椒ǚ治龊驮O計該自動售貨機

的軟件系統(tǒng),得到如圖3-1所示的用例圖,其中,

用例“購買飲料”的用例規(guī)約描述如下。

參與者:顧客。

主要事件流:

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中的S1~S4所對應的狀態(tài)名。

【問題2】(4分)

根據(jù)說明中的描述,使用說明中的術語,給出

圖3-2中的E1~E4所對應的事件名

【問題3】(5分)

根據(jù)說明中的描述,使用說明中的術語,給出圖

3-3中C1~C5所對應的類名。

4.

閱讀下列說明和C代碼,回答問題1至問題3,

將解答寫在答題紙的對應欄內(nèi)。

【說明】

模式匹配是指給定主串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或者t[i]=s[j],則將i和j分

別加1,繼續(xù)比較t和s的下一個字符;

(2)否則,將j向右滑動到next[j]的位置,

即j=next[j]。

3.如果s中所有字符均已比較完畢,則返回

匹配的起始位置(從1開始);否則返回-1.

其中,next數(shù)組根據(jù)子串s求解。求解next

數(shù)組的代碼已由get_next函數(shù)給出。

【C代碼】

(1)常量和變量說明

t,s:長度為憫鉑Is的字符串

next:next數(shù)組,長度為Is

(2)C程序

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

/*求next[]的值*/

voidget_next(int*next,char*s,intIs){

inti=0,j=-1;

next[0]=-1;/*初始化next[0]*/

while(i<ls){/*還有字符*/

if(j==-1lls[i]==s[j]){/*匹配*/

j++;

i++;

if(s[i]==s[j])

next[i]=next[j];

else

Next[i]=j;

}

else

j=next[j];

}

}

intkmp(int*next,char*t,char*s,intlt,intIs)

{

Inti=0,j=0;

while(i<lt&&(1)){

if(j==-1||(2)){

i++;

j++;

}else

(3);

}

if(j>=ls)

return(4);

else

return-1;

}

【問題1】(8分)

根據(jù)題干說明,填充C代碼中的空(1)~(4).

【問題2】(2分)

根據(jù)題干說明和C代碼,分析出kmp算法的時

間復雜度為(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所示的類圖。

【C++代碼】

#include<iostream>

usingnamespacestd;

classInvoice{

public:

(1){

cout<<"Thisisthecontentofthe

invoice!"<<endl;

}

};

classDecorator:publicInvoice{

Invoice*ticket;

public:

Decorator(lnvoice*t){ticket=t;}

voidprintInvoice(){

if(ticket!=NULL)

(2);

}

};

classHeadDecorator:publicDecorator{

public:

HeadDecorator(lnvoice*t):Decorator(t){}

voidprintInvoice(){

cout<<"Thisistheheaderofthe

invoice!"<<endl;

(3);

}

};

classFootDecorator:publicDecorator{

public:

FootDecorator(Invoice*t):Decorator(t){}

voidprintlnvoice(){

(4);

cout<<"Thisisthefootnoteof

theinvoice!"<<endl;

}

};

intmain(void){

Invoicet;

FootDecoratorf(&t);

HeadDecoratorh(&f);

h.printInvoice();

cout<<”------------------------”<<endl

FootDecoratora(NULL);

HeadDecoratorb((5));

b.printInvoice();

return0;

}

程序的輸出結果為:

Thisistheheaderoftheinvoice!

Thisisthecontentoftheinvoice!

Thisisthefootnoteoftheinvoice!

----------------------------

Thisistheheaderoftheinvoice!

Thisisthefootnoteoftheinvoice!

6.

閱讀下列說明和java代碼,將應填入(n)處

的字句寫在答題紙的對應欄內(nèi)。

【說明】

某發(fā)票(lnvoice)由抬頭(Head)部分、正

文部分和腳注(Foot)部分構成。現(xiàn)采用裝飾

(Decorator)模式實現(xiàn)打印發(fā)票的功能,得到

如圖6-1所示的類圖。

【java代碼】

classinvoice{

publicvoidprintInvoice(){

System.out.println("Thisisthe

contentoftheinvoice!");

}

}

classDecoratorextendsInvoice{

protectedInvoiceticket;

publicDecorator(lnvoicet){

ticket=t;

}

publicvoidprintInvoice(){

if(ticket!=null)

(1);

}

}

classHeadDecoratorextendsDecorator{

publicHeadDecorator(lnvoicet){

super(t);

}

publicvoidprintInvoice(){

Systent.out.println("Thisisthe

headeroftheinvoice!");

(2);

}

}

classFootDecoratorextendsDecorator{

publicFootDecorator(Invoicet){

super(t);

}

publicvoidprintlnvoice(){

(3);

Systent.out.println("Thisisthe

footnoteoftheinvoice!");

}

}

Classtest{

publicstaticvoidmain(String[]args){

Invoicet=newInvioce();

Invoiceticket;

ticket=(4);

ticket.printInvoice();

Systent.out.println(“------------------“)

ticket=(5);

ticket.printInvoice();

}

}

程序的輸出結果為:

Thisistheheaderoftheinvoice!

Thisisthecontentoftheinvoice!

Thisisthefootnoteoftheinvoice!

----------------------------

Thisistheheaderoftheinvoice!

Thisisthefootnoteoftheinvoice!

參考答案

1.

參考答案:

問題1E1:客戶服務助理,E2:客戶,E3:經(jīng)

紀人。

問題2D1:客戶記錄,D2:賬戶記錄,D3:交

易記錄。

問題3

數(shù)據(jù)流名稱:修改賬戶余額,起點:存款,終點:

D2。

數(shù)據(jù)流名稱:修改賬戶余額,起點:取款,終點:

D2。

數(shù)據(jù)流名稱:交易信息存入交易記錄(在線),

起點:證券交易(在線),終點:D3。

數(shù)據(jù)流名稱:交易信息存入交易記錄(電話),

起點:證券交易(電話),終點:D3。

問題4

圖1增加外部實體“證券交易中心”,增加“證

券交易平臺”到“證券交易中心”,數(shù)據(jù)流:交

易信息

圖2增加外部實體“證券交易中心”,增加“證

券交易(在線)“到“證券交易中心”,數(shù)據(jù)流:

交易信息

圖2增加“證券交易(電話)“到“證券交易中

心”,數(shù)據(jù)流:交易信息

試題分析:

本題問題1要求識別E1-E3具體為哪個外部實

體,通讀試題說明,可以了解到適合充當外部實

體的包括:客戶、客戶服務助理、經(jīng)記人。具體

的對應關系,可以通過將頂層圖與題目說明進行

匹配得知。如:從圖中可看出E1會向交易平臺

發(fā)出數(shù)據(jù)流“開戶信息”;而從試題說明“根據(jù)

客戶服務助理提交的開戶信息,進行開戶,并將

客戶信息存入客戶記錄中,賬戶信息存入賬戶記

錄中”可以看出,E1對應是客戶服務助理。E2、

E3同理可得。

本題問題2要求識別存儲,解決這類問題,以圖

的分析為主,配合說明給存儲命名,因為存儲相

關的數(shù)據(jù)流一般展現(xiàn)了這個存儲中到底存了些

什么信息,如從圖中可以看到D1中有客戶信息,

而D2中有賬戶信息,題目說明中又有“根據(jù)客

戶服務助理提交的開戶信息,進行開戶,并將客

戶信息存入客戶記錄中,賬戶信息存入賬戶記錄

中?!弊匀籇1應為客戶記錄,D2應為賬戶記錄。

同理,D3為交易記錄。

問題3分析:

缺失數(shù)據(jù)流1

名稱:修改賬戶余額,起點:存款,終點:D2。

理由:從試題說明“客戶可以向其賬戶中存款,

根據(jù)存款金額修改賬戶余額”可以看出,這個功

能有操作“根據(jù)存款金額修改賬戶余額”。據(jù)此

可以了解到從該功能應有數(shù)據(jù)流“存款”至D2,

而0層圖沒有。

缺失數(shù)據(jù)流2:

名稱:修改賬戶余額,起點:取款,終點:D2。

理由:從試題說明“客戶可以從其賬戶中取款,

根據(jù)取款金額修改賬戶余額”可以看出,這個功

能有操作“根據(jù)取款金額修改賬戶余額”。據(jù)此

可以了解到從該功能應有數(shù)據(jù)流“取款”至D2,

而0層圖沒有。

缺失數(shù)據(jù)流3-4

名稱:交易信息存入交易記錄,起點:證券交易

(分為在線與電話),終點:D3。

理由:從試題說明“客戶和經(jīng)紀人均可以進行證

券交易,將交易信息存入交易記錄中”可以看出,

這個功能有操作“將交易信息存入交易記錄中”。

據(jù)此可以了解到從該功能應有數(shù)據(jù)流“證券交

易”至D3,而0層圖沒有。

fusional2016-11-18

存貯的時候,客戶記錄我寫得客戶記錄表,賬戶

記錄,我寫得賬戶記錄表,對不對

MegumiIsh2016-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í)?、客戶號?/p>

(d)身份證號、入住時間。

“預訂申請”關系模式中的主鍵是申請?zhí)?,外鍵

是申請?zhí)?、客戶號?/p>

“安排”關系模式中的主鍵是:(客房號、身份

證號、入住時間),外鍵是:申請?zhí)枴⒖头刻枴?/p>

業(yè)務員。

問題3:

根據(jù)試題中的描述,客房信息中客房號是唯一標

識客房關系的一個元組,即可以作為唯一的主

鍵。在客房關系模式中,不存在其他部分依賴關

系,但客戶號->類型->收費標準,存在傳遞函數(shù)

依賴,所以冗余,添加異常,修改異常,刪除異

常均存在。

試題分析:

fusional2016-11-17

寫員工關系模式時,應該填部門號吧,應為部門

號才是主鍵,寫客戶關系模式時,不需要寫申請

號和客房號吧,應為客戶可以單獨存在,還有最

后最后一問,不同的客房類型具有不同的收費標

準,存在著數(shù)據(jù)曾與,及修改不一致的問題

MegumiIsh2016-11-18

答案已經(jīng)做了修改

fusional2016-11-20

老師,我寫預定申請關系模式時,我寫的是客戶

號和申請?zhí)柡蜆I(yè)務員號,你們的答案是客戶號和

申請?zhí)?。我主鍵寫的是申請?zhí)?,外鍵是客戶號和

業(yè)務員號。因為預定申請需要客戶申請,業(yè)務員

處理。我記得哪年的真題和這個一樣的,不知道

我的想法對不?

flycity2016-11-25

預定的環(huán)節(jié)沒有強調(diào)需要記錄業(yè)務員信息,所以

不需要寫業(yè)務員號。

在現(xiàn)實的設計中,根據(jù)需要,可寫業(yè)務員號,而

在考試中,一般沒有強調(diào)需要這個信息,我們就

不寫。

fusional2016-11-29

老師,那不是這個我得不到分了哦?

flycity2016-12-02

這個得看評分時嚴格程度了,一般來說,評分時,

看到合理答案但非標準答案,會組織閱卷老師進

行研討,研討之后若大家覺得這種解決方案也可

行,會把這種答法納入給分的范疇。

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)轉換的圖

形化表達。從題目的說明部分可知,在狀態(tài)轉換

過程中,涉及到的狀態(tài)一共有四種:空閑、準備

服務、可購買、飲料出售。從狀態(tài)圖涉及的轉換

可知S1~S4分別為:空閑、準備服務、飲料出售、

可購買。關于狀態(tài)轉換的分析如下:

(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)中的跳轉事件。

根據(jù)狀態(tài)圖和試題主要事件流的描述可以推出

事件E1是飲料數(shù)量不足,事件E2是硬幣數(shù)量

足夠,事件E3是推出飲料,事件E4是返回找

零。

本題問題3根據(jù)主要事件流的描述,可以推斷出

C1~C5的類名分別對應自動售貨機、硬幣器、

飲料儲存?zhèn)}、硬幣、飲料。

4.

參考答案:

問題1:

(1):j<ls;

(2):t[i]==s[j];

(3):get_next(next,s,ls);

j=next[j];

(4):i+1-ls;

問題2:

問題3:(6):[-1,-1,1,-1,-1,2,0,0],

溫馨提示

  • 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

提交評論