2018上半年軟件設(shè)計(jì)師下午真題(二)

軟件設(shè)計(jì)師 責(zé)任編輯:胡媛 2018-06-01

添加老師微信

備考咨詢

加我微信

摘要:2018上半年軟件設(shè)計(jì)師考試已結(jié)束,小編為大家整理了2018上半年軟件設(shè)計(jì)師下午真題,以下為第二部分。

●  閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。

【說明】

某ETC( Electronic Toll Collection,不停車收費(fèi))系統(tǒng)在高速公路沿線的特定位置上設(shè)置一個(gè)橫跨道路上空的龍門架( Toll gantry),龍門架下包括6條車道( Traffic lanes),每條車道上安裝有雷達(dá)傳感器( Radar sensor)、無線傳輸器( Radio transceiver)和數(shù)碼相機(jī)( Digital Camera)等用于不停車收費(fèi)的設(shè)備,以完成正常行駛速度下的收費(fèi)工作。該系統(tǒng)的基本工作過程如下:

(1)每輛汽車上安裝有車載器,駕駛員( Driver)將一張具有識(shí)別碼的磁卡插入車載器中。磁卡中還包含有駕駛員賬戶的當(dāng)前信用記錄。

(2)當(dāng)汽車通過某條車道時(shí),不停車收費(fèi)設(shè)備識(shí)別車載器內(nèi)的特有編碼,判斷車型,將收集到的相關(guān)信息發(fā)送到該路段所屬的區(qū)域系統(tǒng)( Regional center)中,計(jì)算通行費(fèi)用創(chuàng)建收費(fèi)交易( Transaction),從駕駛員的專用賬戶中扣除通行費(fèi)用。如果駕駛員賬戶透支,則記錄透支賬戶交易信息。區(qū)域系統(tǒng)再將交易后的賬戶信息發(fā)送到維護(hù)駕駛員賬戶信息的中心系統(tǒng)( Central system)

(3)車載器中的磁卡可以使用郵局的付款機(jī)進(jìn)行充值。充值信息會(huì)傳送至中心系統(tǒng),以更新駕駛員賬戶的余額。

(4)當(dāng)沒有安裝車載器或者車載器發(fā)生故障的車輛通過車道時(shí),車道上的數(shù)碼相機(jī)將對(duì)車輛進(jìn)行拍照,并將車輛照片及拍攝時(shí)間發(fā)送到區(qū)域系統(tǒng),記錄失敗的交易信息;并將該交易信息發(fā)送到中心系統(tǒng)。

(5)區(qū)域系統(tǒng)會(huì)獲取不停車收費(fèi)設(shè)備所記錄的交通事件( Traffic events);交通廣播電臺(tái)( Traffic advice center)根據(jù)這些交通事件進(jìn)行路況分析并播報(bào)路況。

現(xiàn)采用面向?qū)ο蠓椒▽?duì)上述系統(tǒng)進(jìn)行分析與設(shè)計(jì),得到如表3-1所示的用例列表以及如圖3-1所示的用例圖和圖3-2所示的分析類圖。

2018上半年軟件設(shè)計(jì)師下午真題

【問題1】(4分)

根據(jù)說明中的描述,給出圖3-1中A1~A4所對(duì)應(yīng)的參與者名稱。

【問題2)(5分)

根據(jù)說明中的描述及表3-1,給出圖3-1中U1-U5所對(duì)應(yīng)的用例名稱。

【問題3】(6分)

根據(jù)說明中的描述,給出圖3-2中C1~C6所對(duì)應(yīng)的類名。


● 閱讀下列說明和C代碼,回答問題1和問題2,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。

【說明】

某公司購買長鋼條,將其切割后進(jìn)行出售。切割鋼條的成本可以忽略不計(jì),鋼條的長度為整英寸。已知價(jià)格表P,其中中Pi(i=1,2,...,m)表示長度為i英寸的鋼條的價(jià)格?,F(xiàn)要求解使銷售收益最大的切割方案。

求解此切割方案的算法基本思想如下:

假設(shè)長鋼條的長度為n英寸,最佳切割方案的最左邊切割段長度為i英寸,則繼續(xù)求解剩余長度為n-i 英寸鋼條的最佳切割方案??紤]所有可能的i,得到的最大收益rn對(duì)應(yīng)的切割方案即為最佳切割方案。rn的遞歸定義如下:

rn =max1≤ i ≤n(pi +rn-i)

對(duì)此遞歸式,給出自頂向下和自底向上兩種實(shí)現(xiàn)方式

【C代碼】

/*常量和變量說明

n:長鋼條的長度

P[]:價(jià)格數(shù)組

*/

#define LEN 100

int Top_Down_ Cut_Rod(int P[],int n){/*自頂向下*/

int r=0;

int i;

if(n==0){

retum 0;

}

for(i=1;(1);i++){

int tmp=p[i]+Top_Down_ Cut_Rod(p,n-i);

r=(r>=tmp)?r:tmp;

}

return r;

}

int Bottom_Up_Cut_Rod(int p[],int n){ /*自底向上*/

int r[LEN]={0};

int temp=0;

int i,j;

for(j=1;j<=n;j++){

temp=0;

for(i=1;(2);i++){

temp=(3);

}

(4)

}

return r[n];

}

【問題1】(8分)

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

【問題2】(7分)

根據(jù)說明和C代碼,算法采用的設(shè)計(jì)策略為(5)。

求解rn時(shí),自頂向下方法的時(shí)間復(fù)雜度為(6);自底向上方法的時(shí)間復(fù)雜度為(7)(用O表示)。

● 閱讀下列說明和C++代碼,將應(yīng)填入(n)處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。

【說明】

生成器( Builder)模式的意圖是將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。圖5-1所示為其類圖。

  2018上半年軟件設(shè)計(jì)師下午真題

【C++代碼】

#include <iostream>

#include <string>

using namespace std;

class Product {

private:

string partA, partB;

public:

Product__(5)__{  }

void setPartA(const string&s){ PartA=s;}

void setPartB(const string&s){ PartB=s;}

∥其余代碼省略

};

class Builder{

public:

(1);

virtual void buildPartB__(6)__=0;

(2);

};

class ConcreteBuilder1: public Builder{

private:

Product*   product;

public:

ConcreteBuilder1__(7)__{product=new Product__(8)__; }

void buildPartA__(9)__{ (3)("Component A");}

void buildPartB__(10)__{ (4)("Component B");}

Product*getResult__(11)__{ return product;}

∥其余代碼省略

};

class ConcreteBuilder2: public Builder{

/*代碼省略*/

};

class Director {

private:

Builder* builder;

public:

Director(Builder*pBuilder){builder*pBuilder;}

void construct__(12)__{

(5)

∥其余代碼省略

}

∥其余代碼省略

};

int main__(13)__{

Director* director1=new Director(new ConcreteBuilder1__(14)__);

director1->construct__(15)__;

delete director 1;

return 0;

}


>>>>>>2018上半年軟件設(shè)計(jì)師下午真題匯總

>>>>>>查看更多軟件設(shè)計(jì)師歷年真題

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)考生以權(quán)威部門公布的內(nèi)容為準(zhǔn)!

軟考備考資料免費(fèi)領(lǐng)取

去領(lǐng)取

!
咨詢?cè)诰€老師!