天天看點

2018年下半年軟體設計師下午真題及答案解析

試題一(15分)

某房産中介連鎖企業欲開發一個基于Web的房屋中介資訊系統,以有效管理房源和客戶,提高成交率。該系統的主要功能是:

1.房源采集與管理。系統自動采集外部網站的潛在房源資訊,儲存為潛在房源。由經紀人聯系确認的潛在房源變為房源,并添加出售/出租房源的客戶。由經紀人或客戶登記的出售/出租房源,系統将其儲存為房源。房源資訊包括基本情況、配套設施、交易類型、委托方式、業主等。經紀人可以對房源進行更新等管理操作。

2.客戶管理。求租/求購客戶進行注冊、更新,推送客戶需求給經紀人,或由經紀人對求租/求購客戶進行登記、更新。客戶資訊包括身份證号、姓名、手機号、需求情況、委托方式等。

3.房源推薦。根據客戶的需求情況(求購/求租需求情況以及出售/出租房源資訊),向已登入的客戶推薦房源。小任老師Q2105639303,免費擷取資料,問題解答,考試最新資訊

4.交易管理。經紀人對租售客戶雙方進行交易資訊管理,包括訂單送出和取消,設定收取中介費比例。财務人員收取中介費之後,表示該訂單已完成,系統更新訂單狀态和房源狀态,向客戶和經紀人發送交易回報。

5.資訊查詢。客戶根據自身查詢需求查詢房屋供需資訊。

現采用結構化方法對房屋中介資訊系統進行分析與設計,獲得如圖1-1 所示的上下文資料流圖和圖1-2所示的0層資料流圖。

2018年下半年軟體設計師下午真題及答案解析
2018年下半年軟體設計師下午真題及答案解析

問題1 (4分)

使用說明中的詞語,給出圖1-1中的實體E1--E4的名稱。

問題2 (4分)

使用說明中的詞語,給出圖1-2中的資料存儲D1--D4的名稱。

問題 3 (3分)

根據說明和圖中術語,補充圖1-2中缺失的資料流及其起點和終點。

問題4 (4分)

根據說明中術語,給出圖1-1中資料流"客戶資訊"、"房源資訊"的組成。

試題二(15分)

某集團公司擁有多個分公司,為了友善集團公司對分公司各項業務活動進行有效管理,集團公司決定建構一個資訊系統以滿足公司的業務管理需求。

【需求分析】

1.分公司關系需要記錄的資訊包括分公司編号、名稱、經理、聯系位址和電話。分公司編号唯一辨別分公司資訊中的每一個元組。每個分公司隻有一名經理,負責該分公司的管理工作。每個分公司設立僅為本分公司服務的多個業務部門,如研發部、财務部、采購部、銷售部等。

2.部門關系需要記錄的資訊包括部門号、部門名稱、主管号、電話和分公司編号。部門号唯一辨別部門資訊中的每一個元組。每個部門隻有一名主管,負責部門的管理工作。每個部門有多名員工,每名員工隻能隸屬于一個部門。

3.員工關系需要記錄的資訊包括員工号、姓名、隸屬部門、崗位、電話和基本工資。其中,員工号唯一辨別員工資訊中的每一個元組。崗位包括:經理、主管、研發員、業務員等。小任老師Q2105639303,免費擷取資料,問題解答,考試最新資訊

【概念模型設計】

根據需求階段收集的資訊,設計的實體聯系圖和關系模式(不完整)如圖2-1 所示:

2018年下半年軟體設計師下午真題及答案解析

【關系模式設計】

分公司(分公司編号,名稱,(  a  ),聯系位址,電話)

部門(部門号,部門名稱,(  b  ),電話)

員工(員工号,姓名(  c  ),電話,基本工資)

問題1 (4分)

根據問題描述,補充4個聯系,完善圖 2-1的實體聯系圖。聯系名可用聯系1、聯系2、

聯系3和聯系4代替,聯系的類型為 1:1、1:n 和 m:n (或 1:1、1:*和*:*)。

問題2 (5分)

根據題意,将關系模式中的空 (a)-(c) 補充完整。

問題3 (4分)

給出"部門"和"員工"關系模式的主鍵和外鍵。

問題4 (2分)

假設集團公司要求系統能記錄部門曆任主管的任職時間和任職年限,那麼是否需要在資料庫設計時增設一個實體?為什麼?

試題三(15分)

社交網絡平台 (SNS) 的主要功能之一是建立線上群組,群組中的成員之間可以互相分享或挖掘興趣和活動。每個群組包含标題、管理者以及成員清單等資訊。

社交網絡平台的使用者可以自行選擇加入某個群組。每個群組擁有一個首頁,群組内的所有成員都可以檢視首頁上的内容。如果在群組的首頁上釋出或更新了資訊,群組中的成員會自動接收到釋出或更新後的資訊。

使用者可以加入一個群組也可以退出這個群組。使用者退出群組後,不會再接收到該群組釋出或更新的任何資訊。

現采用面向對象方法對上述需求進行分析與設計,得到如表3-1所示的類清單和如圖3-1所示的類圖。小任老師Q2105639303,免費擷取資料,問題解答,考試最新資訊                 

2018年下半年軟體設計師下午真題及答案解析

問題1 (6分)

根據說明中的描述,給出圖 3-1 中 C1-- C3 所對應的類名。

問題2 (6分)

圖 3-1 中采用了哪一種設計模式?說明該模式的意圖及其适用場合。

問題3 (3分)

現在對上述社交網絡平台提出了新的需求:一個群體可以作為另外一個群體中的成員,例如群體A加入群體B。那麼群體A中的所有成員就自動成為群體B中的成員。若要實作這個新需求,需要對圖3-1進行哪些修改? (以文字方式描述) 小任老師Q2105639303,免費擷取資料,問題解答,考試最新資訊

試題四(15分)

給定一個字元序列B=b1b2….bn,其中bi∈{A,C,G,U}。B上的二級結構是一組字元對集合S={(bi,bj)},其中i,j∈{1,2,….,n},并滿足以下四個條件:

(1)S中的每對字元是(A,U),(U,A),(C,G)和(G,C)四種組合之一;

(2)S中的每對字元之間至少有四個字元将其隔開,即i<j-4;

(3)S中每一個字元(記為bk)的配對存在兩種情況:bk不參與任何配對;bk和字元bt配對,其中t<k-4;

(4)(不交叉原則)若(bi,bj)和(bk,bl)是S中的兩個字元對,且i<k,則i<k<j<l不成立。

B的具有最大可能字元對數的二級結構S被稱為最優配對方案,求解最優配對方案中的字元對數的方法如下:小任老師Q2105639303,免費擷取資料,問題解答,考試最新資訊

假設用C(i,j)表示字元序列bibi+1....bj的最優配對方案(即二級結構S)中的字元對數,則,C(i,j)可以遞歸定義為:

2018年下半年軟體設計師下午真題及答案解析

下面代碼是算法的C語言實作,其中

n:字元序列長度

B[]:字元序列

C[][]:最優配對數量數組

【C代碼】

#include<stdio.h>

#include<stdlib.h>

#define LEN 100

/*判斷兩個字元是否配對*/

int isMatch(char a,char b){

   if ((a=='A'&&b=='U')||( a=='U'&&b=='A'))

      return 1;

   if ((a=='C'&&b=='G')||( a=='G'&&b=='C'))

   return 0;

}

/*求最大配對數*/

int RNA_2(charB[LEN],int n){

   int i,j,k,t;

   int max;

   int C[LEN][LEN]={0};

   for(k=5;k<=n-1;k++){

     for(i=1;i<=n-k;i++){

       j=i+k;

       ( 1  )

       for(( 2  );t<=j-4;t++){

         if( ( 3 

)&&max<C[i][t-1]+1+C[t+1][j-1])

            max=C[i][t-1]+1+C[t+1][j-1];

       } 

       C[i][j]=max;

       printf("C[%d][%d]=%d--",i,j,C[i][j]);

     }

  }

  return( 4  );

問題1 (8分)

根據題幹說明,填充 C 代碼中的空(1)-(4)。

根據題幹說明和 C 代碼,算法采用的設計政策為(  5  )。

算法的時間複雜度為(  6  ),(用O表示)。

給定字元序列 ACCGGUAGU ,根據上述算法求得最大字元對數為(  7  )。

試題五(15分)

某航空公司的會員積分系統将其會員劃分為:普卡(Basic)、銀卡(Silver)和金卡(Gold)三個等級。非會員(NonMember)可以申請成為普卡會員。會員的等級根據其一年内累積的裡程數進行調整。描述會員等級調整的狀态圖如圖 5-1 所示。現采用狀态(State)模式實作上述場景,得到如圖 5-2 所示的類圖。小任老師Q2105639303,免費擷取資料,問題解答,考試最新資訊

2018年下半年軟體設計師下午真題及答案解析

【C++代碼】

#include<iostream>

using namespace std;

class FrequentFlyer; class CBasic; classCSilver; class CGold; class CNoCustomer; 

//

提前引用

class CState {

private: int flyMiles;   //裡程數

public:

  (  1  );        

根據累積裡程數調整會員等級

class FrequentFlyer{

friend class CBasic; friend classCSilver;   friend class CGold;

private:

 CState *state;  CState

*nocustomer;  CState *basic;  CState *silver;  CState *gold;

 double flyMiles;

2018年下半年軟體設計師下午真題及答案解析

    }

class CSilver:public CState{          //銀卡會員

   double travel(int miles,FrequentFlyer * context){

      if(context->flyMiles<25000)

         context->setState(context->basic);

if(context->flyMiles>=50000) 

         context->setState(context->gold);

      return (miles+0.25*miles);   

    }

試題六(15分)

某航空公司的會員積分系統将其會員劃分為:普卡 (Basic) 、銀卡(Silver)和金卡 (Gold)

三個等級。非會員 (NonMember)可以申請成為普卡會員。會員的等級根據其一年内累積的裡程數進行調整。描述會員等級調整的狀态圖如圖 6-1 所示。現采用狀态 (State) 模式

實作上述場景,得到如圖 6-2 所示的類圖。小任老師Q2105639303,免費擷取資料,問題解答,考試最新資訊

2018年下半年軟體設計師下午真題及答案解析

【Java代碼】

importjava.util.*;

abstractclass CState{

   public int flyMiles;    // 裡程數

   public ( 1  );       //

classCNoCustomer extends CState{    //

非會員

    public double travel(int miles,FrequentFlyercontext) {

       System.out.println("Your travelwill not account for points");

       return miles;               //不累積裡程數

classCBasic extends CState{     //

普卡會員

     public double travel(intmiles,FrequentFlyer context){

        if (context.flyMiles>=25000&&context.flyMiles<50000)

          ( 2  );

        if (context.flyMiles>=50000)

          ( 3  );

        return miles;

classCGold extends CState{     //

金卡會員

          ( 4  );

        if (context.flyMiles<=25000)

          ( 5  );

        return miles+0.5*miles;    //累積裡程數

classCSilver extends CState{     //

銀卡會員

          context.setState(new CBasic());

        if (context.flyMiles>50000)

          context.setState(new CGold());

        return (miles+0.25*miles);    //累積裡程數

classFrequentFlyer{

    CState state;

    double flyMiles;

    public FrequentFlyer(){

       state=new CNoCustomer();

       flyMiles=0;

       setState(state);

    public void setState(CState state){  this.state=state; }

    public void travel(int miles) {

        doublebonusMiles=state.travel(miles,this);

        fiyMiles=flyMiles+bonusMiles;

          2018年下半年軟體設計師下午真題及答案解析

試題一(15分)   

問題1 (4分)    單擊此連結檢視真題解析視訊 ​​http://edu.51cto.com/course/4406.html​​

E1:客戶    E2:經紀人     E3:财務人員    E4:外部網站

D1:客戶資訊表   D2:潛在房源資訊表   D3:房源資訊表   D4:訂單表

缺失資料流:

2018年下半年軟體設計師下午真題及答案解析

問題4 (4分)

客戶資訊:身份證号,姓名,手機号,需求情況,委托方式。

房源資訊:基本情況,配套設施,交易類型,委托方式,業主等。

小任老師Q2105639303,免費擷取資料,問題解答,考試最新資訊

2018年下半年軟體設計師下午真題及答案解析

(a)經理工号

(b)主管号,分公司編号

(c)隸屬部門号,崗位

部門的主鍵:部門号;  部門的外鍵:分公司編号,主管号

員工的主鍵:員工号;  員工的外鍵:隸屬部門号

 問題4 (2分)

不需要增加新的實體,對于任職情況,可以将部門與主管的聯系單獨形成關系模式,聯系(部門号,主管工号,任職時間,任職年限),同一個員工可能在不同的時間擔任同一部門主管,是以,可以将(部門号,主管工号,任職時間)作為該關系模式的組合主鍵。小任老師Q2105639303,免費擷取資料,問題解答,考試最新資訊

C1:SNSGroup   C2:SNSUser   C3:SNSAdmin (其中C2、C3可以互換)

問題2 (6分) 單擊此連結檢視真題解析視訊 ​​http://edu.51cto.com/course/4406.html​​

采用的觀察者模式。

l  意圖:當被觀察者(群組首頁)發生改變時,可以通知所有的觀察者(群組内的所有成員)。

l  使用場合:觀察者模式多用于實作訂閱功能的場景,例如微網誌的訂閱。當一個對象的狀态發生改變時,所有依賴于它的對象都得到通知并自動更新。

解析:

2018年下半年軟體設計師下午真題及答案解析

新增一個被觀察者對象群組B的首頁,對于觀察者,新增一個“加入群組B”的方法,加入之後,就可以接收被觀察者群組B的首頁變動所發送的通知。小任老師Q2105639303,免費擷取資料,問題解答,考試最新資訊

(1)max=C[i][j-1];

(2)t=i

(3)isMatch(b[t],b[j])  或

isMatch(b[t],b[j])==1

(4)C[i-1][j]  或 max

(5)采用的算法政策:動态規劃      (6)時間複雜度:O(n3)

問題3(3分)

(7)最大字元對數:3

(1)virtual double travel(int miles,FrequentFlyer context)=0

(2)context->setState(context->silver)

(3)context->setState(context->gold)

(4)context->setState(context->silver)

(5)context->setState(context->basic)

(1)abstract double travel(int miles,FrequentFlyer context)

(2)context.setState(new CSilver())

(3)context.setState(new CGold ())

(4)context.setState(new CSilver())

(5)context.setState(new CBasic())

一、小任老師軟體設計師視訊

1、軟體設計師基礎知識視訊精講​​http://edu.51cto.com/course/4033.html​​

2018年下半年軟體設計師下午真題及答案解析

2、軟體設計師上午曆年真題解析視訊​​http://edu.51cto.com/course/5827.html​​

2018年下半年軟體設計師下午真題及答案解析

3、軟體設計師下午曆年真題解析視訊​​http://edu.51cto.com/course/4406.html​​

2018年下半年軟體設計師下午真題及答案解析

二、小任老師進階系統分析師視訊課程

1、系統分析師綜合知識視訊課程​​http://edu.51cto.com/course/course_id-2422.html​​

2018年下半年軟體設計師下午真題及答案解析

2、系統分析師下午案例視訊課程​​http://edu.51cto.com/course/course_id-2968.html​​

2018年下半年軟體設計師下午真題及答案解析

 3、系統分析師論文寫作視訊課程​​http://edu.51cto.com/course/course_id-3069.html​​

2018年下半年軟體設計師下午真題及答案解析

三、小任老師進階系統架構設計師視訊課程

1、架構設計師綜合知識視訊課程​​http://edu.51cto.com/course/14581.html​​

2018年下半年軟體設計師下午真題及答案解析

2、架構設計師上午曆年真題解析視訊課程​​http://edu.51cto.com/course/14919.html​​

2018年下半年軟體設計師下午真題及答案解析

 3、系統架構設計師下午曆年真題視訊課程​​https://edu.51cto.com/sd/c6670​​

2018年下半年軟體設計師下午真題及答案解析

4、系統架構設計師下午曆年真題視訊課程​​https://edu.51cto.com/sd/e112d​​

2018年下半年軟體設計師下午真題及答案解析

繼續閱讀