第
1題: 閱讀下列說(shuō)明,回答問(wèn)題1至問(wèn)題4,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。 
【說(shuō)明】 
某證券交易所為了方便提供證券交易服務(wù),欲開(kāi)發(fā)一證券交易平臺(tái),該平臺(tái)的主要功能如下:
(1)開(kāi)戶。根據(jù)客戶服務(wù)助理提交的開(kāi)戶信息,進(jìn)行開(kāi)戶,并將客戶信息存入客戶記錄中,賬戶信息(余額等)存入賬戶記錄中; 
(2)存款??蛻艨梢韵蚱滟~戶中存款,根據(jù)存款金額修改賬戶余額; 
(3)取款??蛻艨梢詮钠滟~戶中取款,根據(jù)取款金額修改賬戶余額; 
(4)證券交易??蛻艉徒?jīng)紀(jì)人均可以進(jìn)行證券交易(客戶通過(guò)在線方式,經(jīng)紀(jì)人通過(guò)電話),將交易信息存入交易記錄中; 
(5)檢查交易。平臺(tái)從交易記錄中讀取交易信息,將交易明細(xì)返回給客戶。 現(xiàn)采用結(jié)構(gòu)化方法對(duì)該證券交易平臺(tái)進(jìn)行分析與設(shè)計(jì),獲得如圖1-1所示的上下文數(shù)據(jù)流圖和圖1-2所示的0層數(shù)據(jù)流圖。
 
 
【問(wèn)題1】(3分) 
使用說(shuō)明中的詞語(yǔ),給出圖1-1中的實(shí)體E1-E3的名稱(chēng)。 
【問(wèn)題2】(3分) 
使用說(shuō)明中的詞語(yǔ),給出圖1-2中的數(shù)據(jù)存儲(chǔ)D1-D3的名稱(chēng)。 
【問(wèn)題3】(4分) 
根據(jù)說(shuō)明和圖中的術(shù)語(yǔ),補(bǔ)充圖1-2中缺失的數(shù)據(jù)流及其起點(diǎn)和終點(diǎn)。 
【問(wèn)題4】(5分) 
實(shí)際的證券交易通常是在證券交易中心完成的,因此,該平臺(tái)的“證券交易”功能需將交易信息傳遞給證券交易中心。針對(duì)這個(gè)功能需求,需要對(duì)圖1-1和圖1-2進(jìn)行哪些修改,請(qǐng)用200字以內(nèi)的文字加以說(shuō)明。
答案解析與討論:
www.tent-cn.com/st/3816924632.html第
3題: 閱讀下列說(shuō)明,回答問(wèn)題1至問(wèn)題3,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】 
某種出售罐裝飲料的自動(dòng)售貨機(jī)( Vending Machine)的工作過(guò)程描述如下: 
(1)顧客選擇所需購(gòu)買(mǎi)的飲料及數(shù)量。 
(2)顧客從投幣口向自動(dòng)售貨機(jī)中投入硬幣(該自動(dòng)售貨機(jī)只接收硬幣)。硬幣器收集投入的硬幣并計(jì)算其對(duì)應(yīng)的價(jià)值。如果所投入的硬幣足夠購(gòu)買(mǎi)所需數(shù)量的這種飲料且飲料數(shù)量足夠,則推出飲料,計(jì)算找零,顧客取走飲料和找回的硬幣;如果投入的硬幣不夠或者所選購(gòu)的飲料數(shù)量不足,則提示用戶繼續(xù)投入硬幣或重新選擇飲料及數(shù)量。 
(3)一次購(gòu)買(mǎi)結(jié)束之后,將硬幣器中的硬幣移走(清空硬幣器),等待下一次交易。自動(dòng)售貨機(jī)還設(shè)有一個(gè)退幣按鈕,用于退還顧客所投入的硬幣。已經(jīng)成功購(gòu)買(mǎi)飲料的錢(qián)是不會(huì)被退回的。
 
 現(xiàn)采用面向?qū)ο蠓椒ǚ治龊驮O(shè)計(jì)該自動(dòng)售貨機(jī)的軟件系統(tǒng),得到如圖3-1所示的用例圖,其中,用例“購(gòu)買(mǎi)飲料”的用例規(guī)約描述如下。 參與者:顧客。 主要事件流: 
1.顧客選擇需要購(gòu)買(mǎi)的飲料和數(shù)量,投入硬幣; 
2.自動(dòng)售貨機(jī)檢查顧客是否投入足夠的硬幣; 
3.自動(dòng)售貨機(jī)檢查飲料儲(chǔ)存?zhèn)}中所選購(gòu)的飲料是否足夠; 
4.自動(dòng)售貨機(jī)推出飲料; 
5.自動(dòng)售貨機(jī)返回找零。 
各選事件流: 
2a.若投入的硬幣不足,則給出提示并退回到1; 
3a.若所選購(gòu)的飲料數(shù)量不足,則給出提示并退回到1 。 
根據(jù)用例“購(gòu)買(mǎi)飲料”得到自動(dòng)售貨機(jī)的4個(gè)狀態(tài):“空閑”狀態(tài)、“準(zhǔn)備服務(wù)”狀態(tài)、“可購(gòu)買(mǎi)”狀態(tài)以及“飲料出售”狀態(tài),對(duì)應(yīng)的狀態(tài)圖如圖3-2所示。 所設(shè)計(jì)的類(lèi)圖如圖3-3所示。
 
  
 【問(wèn)題1】(6分) 
根據(jù)說(shuō)明中的描述,使用說(shuō)明中的術(shù)語(yǔ),給出圖3-2中的S1~S4所對(duì)應(yīng)的狀態(tài)名。 
【問(wèn)題2】(4分) 
根據(jù)說(shuō)明中的描述,使用說(shuō)明中的術(shù)語(yǔ),給出圖3-2中的E1~E4所對(duì)應(yīng)的事件名 。
【問(wèn)題3】(5分) 
根據(jù)說(shuō)明中的描述,使用說(shuō)明中的術(shù)語(yǔ),給出圖3-3中C1~C5所對(duì)應(yīng)的類(lèi)名。
答案解析與討論:
www.tent-cn.com/st/381716722.html第
4題: 閱讀下列說(shuō)明和C代碼,回答問(wèn)題1至問(wèn)題3,將解答寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。 
【說(shuō)明】 
模式匹配是指給定主串t和子串s,在主串t中尋找子串s的過(guò)程,其中s稱(chēng)為模式。如果匹配成功,返回s在t中的位置,否則返回-1 。 
KMP算法用next數(shù)組對(duì)匹配過(guò)程進(jìn)行了優(yōu)化。KMP算法的偽代碼描述如下: 
1.在串t和串s中,分別設(shè)比較的起始下標(biāo)i=j=0。 
2.如果串t和串s都還有字符,則循環(huán)執(zhí)行下列操作: 
(1)如果j=-l或者t[i]=s[j],則將i和j分別加1,繼續(xù)比較t和s的下一個(gè)字符; 
(2)否則,將j向右滑動(dòng)到next[j]的位置,即j =next[j]。 
3.如果s中所有字符均已比較完畢,則返回匹配的起始位置(從1開(kāi)始);否則返回-1。其中,next數(shù)組根據(jù)子串s求解。求解next數(shù)組的代碼已由get_next函數(shù)給出。 
【C代碼】
(1)常量和變量說(shuō)明 
t,s:長(zhǎng)度為憫鉑Is的字符串 
next:next數(shù)組,長(zhǎng)度為Is 
(2)C程序 
#include 
 
#include 
#include  
/*求next[]的值*/ 
void get_next( int *next, char *s, int Is)  { 
int i=0,j=-1; 
next[0]=-1;/*初始化next[0]*/ 
while(i < ls){/*還有字符*/ 
if(j==-1l ls[i]==s[j]){/*匹配*/ 
j++; 
i++; 
if( s[i]==s[j]) 
next[i] = next[j]; 
else 
Next[i] = j; 
}
else 
j = next[j]; 
}
} 
int kmp( int *next, char *t ,char *s, int lt, int Is ) 
{ 
Int i= 0,j =0 
while (i < lt && (1) ) { 
if( j==-1 ||     (2)  )  { 
i ++ 
j ++ 
} else 
(3) 
} 
if (j >= ls) 
return     (4)    else 
return -1; 
} 
【問(wèn)題1】(8分) 
根據(jù)題干說(shuō)明,填充C代碼中的空(1)~(4)。
【問(wèn)題2】(2分) 
根據(jù)題干說(shuō)明和C代碼,分析出kmp算法的時(shí)間復(fù)雜度為(5)(主串和子串的長(zhǎng)度分別為It和Is,用O符號(hào)表示)。 
【問(wèn)題3】(5分) 
根據(jù)C代碼,字符串“BBABBCAC”的next數(shù)組元素值為(6)(直接寫(xiě)素值,之間用逗號(hào)隔開(kāi))。若主串為“AABBCBBABBCACCD”,子串為“BBABBCAC”,則函數(shù)Kmp的返回值是(7)。
答案解析與討論:
www.tent-cn.com/st/3817229374.html第
5題: 
閱讀下列說(shuō)明和C++代碼,將應(yīng)填入  (n)  處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。 
【說(shuō)明】 
某發(fā)票(lnvoice)由抬頭(Head)部分、正文部分和腳注(Foot)部分構(gòu)成。現(xiàn)采用裝飾( Decorator)模式實(shí)現(xiàn)打印發(fā)票的功能,得到如圖5-1所示的類(lèi)圖。
 
 
【C++代碼】 
#include
using namespace std; 
class Invoice{ public: 
(1)    { 
cout<<"This is the content of the invoice!"< } 
}; 
class Decorator : public Invoice { 
Invoice *ticket; 
public: 
Decorator(lnvoice *t)      { ticket = t; } 
void printInvoice(){ 
if(ticket != NULL)  (2); 
}
}; 
class HeadDecorator : public Decorator{
public: 
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 the invoice!"<< endl; 
} 
}; 
int main(void) { 
Invoice t; 
FootDecorator f(&t); 
HeadDecorator h(&f); 
h.printInvoice(); 
cout<<”------------------------”< FootDecorator a(NULL) 
HeadDecorator b(     (5)    ); 
b.printInvoice(); 
return 0; 
} 
程序的輸出結(jié)果為: 
This is the header of the invoice! 
This is the content of the invoice! 
This is the footnote of the invoice! 
---------------------------- 
This is the header of the invoice! 
This is the footnote of the invoice!
答案解析與討論:
www.tent-cn.com/st/3817318035.html