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

軟件設計師 責任編輯:胡媛 2018-06-01

添加老師微信

備考咨詢

加我微信

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

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

【說明】

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

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

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

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

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

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

現(xiàn)采用面向?qū)ο蠓椒▽ι鲜鱿到y(tǒng)進行分析與設計,得到如表3-1所示的用例列表以及如圖3-1所示的用例圖和圖3-2所示的分析類圖。

2018上半年軟件設計師下午真題

【問題1】(4分)

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

【問題2)(5分)

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

【問題3】(6分)

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


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

【說明】

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

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

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

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

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

【C代碼】

/*常量和變量說明

n:長鋼條的長度

P[]:價格數(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代碼,算法采用的設計策略為(5)。

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

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

【說明】

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

  2018上半年軟件設計師下午真題

【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上半年軟件設計師下午真題匯總

>>>>>>查看更多軟件設計師歷年真題

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

軟考備考資料免費領取

去領取

!
咨詢在線老師!