下半年软件设计师考试下午真题试题及参考答案.docx

上传人:b****1 文档编号:13650081 上传时间:2023-06-16 格式:DOCX 页数:21 大小:118.58KB
下载 相关 举报
下半年软件设计师考试下午真题试题及参考答案.docx_第1页
第1页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第2页
第2页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第3页
第3页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第4页
第4页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第5页
第5页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第6页
第6页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第7页
第7页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第8页
第8页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第9页
第9页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第10页
第10页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第11页
第11页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第12页
第12页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第13页
第13页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第14页
第14页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第15页
第15页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第16页
第16页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第17页
第17页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第18页
第18页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第19页
第19页 / 共21页
下半年软件设计师考试下午真题试题及参考答案.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

下半年软件设计师考试下午真题试题及参考答案.docx

《下半年软件设计师考试下午真题试题及参考答案.docx》由会员分享,可在线阅读,更多相关《下半年软件设计师考试下午真题试题及参考答案.docx(21页珍藏版)》请在冰点文库上搜索。

下半年软件设计师考试下午真题试题及参考答案.docx

下半年软件设计师考试下午真题试题及参考答案

2016年下半年软件设计师考试下午真题(参考答案)

试题部份

1.

阅读以下说明,回答下列问题1至问题4,将解答填入答题纸的对应栏内。

【说明】

某证券交易所为了方便提供证券交易效劳,欲开发一证券交易平台,该平台的要紧功能如下:

(1)开户。

依照客户效劳助理提交的开户信息,进行开户,并将客户信息存入客户记录中,账户信息(余额等)存入账户记录中;

(2)存款。

客户能够向其账户中存款,依照存款金额修改账户余额;

(3)取款。

客户能够从其账户中取款,依照取款金额修改账户余额;

(4)证券交易。

客户和经纪人均能够进行证券交易(客户通过在线方式,经纪人通过),将交易信息存入交易记录中;

(5)检查交易。

平台从交易记录中读取交易信息,将交易明细返回给客户。

现采纳结构化方式对该证券交易平台进行分析与设计,取得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。

【问题1】(3分)

利用说明中的词语,给出图1-1中的实体E1-E3的名称。

【问题2】(3分)

利用说明中的词语,给出图1-2中的数据存储D1-D3的名称。

【问题3】(4分)

依照说明和图中的术语,补充图1-2中缺失的数据流及其起点和终点。

【问题4】(5分)

实际的证券交易一般是在证券交易中心完成的,因此,该平台的“证券交易”功能需将交易信息传递给证券交易中心。

针对那个功能需求,需要对图1-1和图1-2进行哪些修改,请用200字之内的文字加以说明。

2.

阅读以下说明,回答下列问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

某宾馆为了有效地治理客房资源,知足不同客户需求,拟构建一套宾馆信息治理系统,以方便宾馆治理及客房预订等业务活动。

【需求分析结果】

该系统的部份功能及初步需求分析的结果如下:

(1)宾馆有多个部门,部门信息包括部门号、部门名称、、领导。

每一个部门能够有多名员工,每名员工只属于一个部门;每一个部门只有一名领导,负责治理本部门。

(2)员工信息包括员工号、姓名、职位、、工资,其中,员工号唯一标识员工关系中的一个元组,职位有领导、业务员。

(3)客房信息包括客房号(如1301、1302等)、客房类型、收费标准、入住状态(已入住/未入住),其中客房号唯一标识客房关系中的一个元组,不同客房类型具有不同的收费标准。

(4)客户信息包括客户号、单位名称、联系人、联系、,其中客户号唯一标识客户关系中的一个元组。

(5)客户预订客房时,需要填写预订申请。

预订申请信息包括申请号、客户号、入住时刻、入住天数、客房类型、客房数量,其中,一个申请号唯一标识预订申请中的一个元组;一名客户能够有多个预订申请,但一个预订申请对应唯一的一名客户。

(6)当客户入住时,业务员依照客户的预订申请负责安排入住客房事宜。

安排信息包括客房号、姓名、性别、身份证号、入住时刻、天数、,其中客房号、身份证号和入住时刻唯一标识一次安排。

一名业务员能够安排多个预订申请,一个预订申请只由一名业务员安排,而且可安排多间同类型的客房。

【概念模型设计】

依照需求时期搜集的信息,设计的实体联系图如图2-1所示。

【关系模式设计】

部门(部门号,部门名称,领导,)

员工(员工号,(a),姓名,职位,,工资)

客户((b),联系人,联系,)

客房(客房号,客房类型,收费标准,入住状态)

预订申请((c),入住时刻,天数,客房类型,客房数量)

安排(申请号,客房号,姓名,性别,(c),天数,,业务员)

【问题1】(4分)

依照问题描述,补充四个联系,完善图2-1,的实体联系图。

联系名可用联系1、联系2、联系3和联系4代替,联系的类型为1:

1、1:

n和m:

n(或1:

1,和1:

*和*:

*)。

【问题2】(8分)

(1)依照题意,将关系模式中的空(a)~(d)补充完整,并填入答题纸对应的位置上。

(2)给出“预订申请”和“安排”关系模式的主键和外键。

【问题3】(3分)

【关系模式设计】中的“客房”关系模式是不是存在标准性问题,请用100字之内文字说明你的观点(假设存在问题,应说明如何修改“客房”关系模式)。

3.

阅读以下说明,回答下列问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

某种出售罐装饮料的自动售货机.(VendingMachine)的工作进程描述如下:

(1)顾客选择所需购买的饮料及数量。

(2)顾客从投币口向自动售货机中投入硬币(该自动售货机只接收硬币)。

硬币器搜集投入的硬币并计算其对应的价值。

若是所投入的硬币足够购买所需数量的这种饮料且饮料数量足够,那么推出饮料,计算找零,顾客取走饮料和找回的硬币;若是投入的硬币不够或所选购的饮料数量不足,那么提示用户继续投入硬币或从头选择饮料及数量。

(3)一次购买终止以后,将硬币器中的硬币移走(清空硬币器),等待下一次交易。

自动售货机还设有一个退币按钮,用于退还顾客所投入的硬币。

已经成功购买饮料的钱是可不能被退回的。

现采纳面向对象方式分析和设计该自动售货机的软件系统,取得如图3-1所示的用例图,其中,用例“购买饮料”的用例规约描述如下。

参与者:

顾客。

要紧事件流:

1.顾客选择需要购买的饮料和数量,投入硬币;

2.自动售货机检查顾客是不是投入足够的硬币;

3.自动售货机检查饮料贮存仓中所选购的饮料是不是足够;

4.自动售货机推出饮料;

5.自动售货机返回找零。

各选事件流:

2a.假设投入的硬币不足,那么给出提示并退回到1;

3a.假设所选购的饮料数量不足,那么给出提示并退回到1。

依照用例“购买饮料”取得自动售货机的4个状态:

“空闲”状态、“预备效劳”状态、“可购买”状态和“饮料出售”状态,对应的状态图如图3-2所示。

所设计的类图如图3-3所示。

【问题1】(6分)

依照说明中的描述,利用说明中的术语,给出图3-2中的S1~S4所对应的状态名。

【问题2】(4分)

依照说明中的描述,利用说明中的术语,给出图3-2中的E1~E4所对应的事件名

【问题3】(5分)

依照说明中的描述,利用说明中的术语,给出图3-3中C1~C5所对应的类名。

4.

阅读以下说明和C代码,回答下列问题1至问题3,将解答写在答题纸的对应栏内。

【说明】

模式匹配是指给定主串t和子串s,在主串t中寻觅子串s的进程,其中s称为模式。

若是匹配成功,返回s在t中的位置,不然返回-1。

KMP算法用next数组对匹配进程进行了优化。

KMP算法的伪代码描述如下:

1.在串t和串s中,别离设比较的起始下标i=j=0。

2.若是串t和串s都还有字符,那么循环执行以下操作:

(1)若是j=-l或t[i]=s[j],那么将i和j别离加1,继续比较t和s的下一个字符;

(2)不然,将j向右滑动到next[j]的位置,即j=next[j]。

3.若是s中所有字符均已比较完毕,那么返回匹配的起始位置(从1开始);不然返回-1.

其中,next数组依照子串s求解。

求解next数组的代码已由get_next函数给出。

【C代码】

(1)常量和变量说明

   t,s:

长度为悯铂Is的字符串

   next:

next数组,长度为Is

(2)C程序

#include<>

#include<>

#include<>

/*求next[]的值*/

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

    inti=0,j=-1;

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

    while(i

    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

(1)  ){

          if(j==-1||     

(2) ){

                 i++;

                 j++;

           }else

                      (3)   ;

}

if(j>=ls)

return     (4)  ;

else

    return-1;

}

【问题1】(8分)

 依照题干说明,填充C代码中的空

(1)~(4).

【问题2】(2分)

依照题干说明和C代码,分析出kmp算法的时刻复杂度为(5)(主串和子串的长度别离为It

和Is,用O符号表示)。

【问题3】(5分)

依照C代码,字符串“BBABBCAC”的next数组元素值为(6)(直接写素值,之间用逗号隔开)。

假设主串为“AABBCBBABBCACCD”,子串为“BBABBCAC”,那么函数Kmp的返回值是(7)。

5.

阅读以下说明和C++-代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

某发票(lnvoice)由抬头(Head)部份、正文部份和脚注(Foot)部份组成。

现采纳装饰(Decorator)模式实现打印发票的功能,取得如图5-1所示的类图。

 

【C++代码】

#include

usingnamespacestd;

classInvoice{

public:

(1){

cout<<"Thisisthecontentoftheinvoice!

"<

}

};

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<<"Thisistheheaderoftheinvoice!

"<

(3);

}

};

classFootDecorator:

publicDecorator{

public:

FootDecorator(Invoice*t):

Decorator(t){}

voidprintlnvoice(){

(4);

cout<<"Thisisthefootnoteoftheinvoice!

"<

}

};

intmain(void){

Invoicet;

FootDecoratorf(&t);

HeadDecoratorh(&f);

();

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

FootDecoratora(NULL);

HeadDecoratorb((5));

();

return0;

}

程序的输出结果为:

Thisistheheaderoftheinvoice!

Thisisthecontentoftheinvoice!

Thisisthefootnoteoftheinvoice!

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

Thisistheheaderoftheinvoice!

Thisisthefootnoteoftheinvoice!

 

6.

阅读以下说明和java代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

某发票(lnvoice)由抬头(Head)部份、正文部份和脚注(Foot)部份组成。

现采纳装饰(Decorator)模式实现打印发票的功能,取得如图6-1所示的类图。

【java代码】

classinvoice{

publicvoidprintInvoice(){

("Thisisthecontentoftheinvoice!

");

}

}

classDecoratorextendsInvoice{

protectedInvoiceticket;

publicDecorator(lnvoicet){

ticket=t;

}

publicvoidprintInvoice(){

if(ticket!

=null)

(1);

}

}

classHeadDecoratorextendsDecorator{

publicHeadDecorator(lnvoicet){

super(t);

}

publicvoidprintInvoice(){

"Thisistheheaderoftheinvoice!

");

(2);

}

}

classFootDecoratorextendsDecorator{

publicFootDecorator(Invoicet){

super(t);

}

publicvoidprintlnvoice(){

(3);

"Thisisthefootnoteoftheinvoice!

");

}

}

Classtest{

publicstaticvoidmain(String[]args){

Invoicet=newInvioce();

Invoiceticket;

ticket=(4);

();

ticket=(5);

();

}

}

程序的输出结果为:

Thisistheheaderoftheinvoice!

Thisisthecontentoftheinvoice!

Thisisthefootnoteoftheinvoice!

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

Thisistheheaderoftheinvoice!

Thisisthefootnoteoftheinvoice!

参考答案

1.

参考答案:

问题1E1:

客户效劳助理,E2:

客户,E3:

经纪人。

问题2D1:

客户记录,D2:

账户记录,D3:

交易记录。

问题3

数据流名称:

修改账户余额,起点:

存款,终点:

D2。

数据流名称:

修改账户余额,起点:

取款,终点:

D2。

数据流名称:

交易信息存入交易记录(在线),起点:

证券交易(在线),终点:

D3。

数据流名称:

交易信息存入交易记录(),起点:

证券交易(),终点:

D3。

问题4

图1增加外部实体“证券交易中心”,增加“证券交易平台”到“证券交易中心”,数据流:

交易信息

图2增加外部实体“证券交易中心”,增加“证券交易(在线)“到“证券交易中心”,数据流:

交易信息

图2增加“证券交易()“到“证券交易中心”,数据流:

交易信息

试题分析:

此题问题1要求识别E1-E3具体为哪个外部实体,通读试题说明,能够了解到适合充当外部实体的包括:

客户、客户效劳助理、经记人。

具体的对应关系,能够通过将顶层图与题目说明进行匹配得知。

如:

从图中可看出E1会向交易平台发出数据流“开户信息”;而从试题说明“依照客户效劳助理提交的开户信息,进行开户,并将客户信息存入客户记录中,账户信息存入账户记录中”能够看出,E1对应是客户效劳助理。

E2、E3同理可得。

此题问题2要求识别存储,解决这种问题,以图的分析为主,配合说明给存储命名,因为存储相关的数据流一样展现了那个存储中到底存了些什么信息,如从图中能够看到D1中有客户信息,而D2中有账户信息,题目说明中又有“依照客户效劳助理提交的开户信息,进行开户,并将客户信息存入客户记录中,账户信息存入账户记录中。

”自然D1应为客户记录,D2应为账户记录。

同理,D3为交易记录。

问题3分析:

缺失数据流1

名称:

修改账户余额,起点:

存款,终点:

D2。

理由:

从试题说明“客户能够向其账户中存款,依照存款金额修改账户余额”能够看出,那个功能有操作“依照存款金额修改账户余额”。

据此能够了解到从该功能应有数据流“存款”至D2,而0层图没有。

缺失数据流2:

名称:

修改账户余额,起点:

取款,终点:

D2。

理由:

从试题说明“客户能够从其账户中取款,依照取款金额修改账户余额”能够看出,那个功能有操作“依照取款金额修改账户余额”。

据此能够了解到从该功能应有数据流“取款”至D2,而0层图没有。

缺失数据流3-4

名称:

交易信息存入交易记录,起点:

证券交易(分为在线与),终点:

D3。

理由:

从试题说明“客户和经纪人均能够进行证券交易,将交易信息存入交易记录中”能够看出,那个功能有操作“将交易信息存入交易记录中”。

据此能够了解到从该功能应有数据流“证券交易”至D3,而0层图没有。

fusional2016-11-18

存贮的时候,客户记录我写得客户记录表,账户记录,我写得账户记录表,对不对

MegumiIsh2016-11-20

没有阻碍的

2.

参考答案:

问题1:

1、领导与部门之间存在1:

1的联系。

2、部门与员工之间存在1:

n的联系。

3、客户与预订申请之间存在1:

n的联系。

4、业务员、客房、预订申请之间存在1:

m:

n的联系。

问题2:

(a)部门号。

(b)客户号、单位名称

(c)申请号、客户号。

(d)身份证号、入住时刻。

“预订申请”关系模式中的主键是申请号,外键是申请号、客户号。

“安排”关系模式中的主键是:

(客房号、身份证号、入住时刻),外键是:

申请号、客房号、业务员。

问题3:

依照试题中的描述,客房信息中客房号是唯一标识客房关系的一个元组,即能够作为唯一的主键。

在客房关系模式中,不存在其他部份依托关系,但客户号->类型->收费标准,存在传递函数依托,因此冗余,添加异样,修改异样,删除异样均存在。

试题分析:

fusional2016-11-17

写员工关系模式时,应该填部门号吧,应为部门号才是主键,写客户关系模式时,不需要写申请号和客房号吧,应为客户能够单独存在,还有最后最后一问,不同的客房类型具有不同的收费标准,存在着数据曾与,及修改不一致的问题

MegumiIsh2016-11-18

答案已经做了修改

fusional2016-11-20

教师,我写预定申请关系模式时,我写的是客户号和申请号和业务员号,你们的答案是客户号和申请号。

我主键写的是申请号,外键是客户号和业务员号。

因为预定申请需要客户申请,业务员处置。

我记得哪年的真题和那个一样的,不明白我的方式对不?

flycity2016-11-25

预定的环节没有强调需要记录业务员信息,因此不需要写业务员号。

在现实的设计中,依照需要,可写业务员号,而在考试中,一样没有强调需要那个信息,咱们就不写。

fusional2016-11-29

教师,那不是那个我得不到分了哦?

flycity2016-12-02

那个得看评分时严格程度了,一样来讲,评分时,看到合理答案但非标准答案,会组织阅卷教师进行研讨,研讨以后假设大伙儿感觉这种解决方案也可行,会把这种答法纳入给分的范围。

3.

参考答案:

问题1:

S1:

空闲,S2:

预备效劳,S3:

饮料出售,S4:

可购买。

问题2:

E1:

饮料数量不足,E2:

硬币数量足够,E3:

推出饮料,E4:

返回找零。

问题3:

C1:

自动售货机,C2:

硬币器,C3:

饮料贮存仓,C4:

硬币,C5:

饮料。

试题分析:

此题问题1系统中的状态图,是对状态转换的图形化表达。

从题目的说明部份可知,在状态转换进程中,涉及到的状态一共有四种:

空闲、预备效劳、可购买、饮料出售。

从状态图涉及的转换可知S1~S4别离为:

空闲、预备效劳、饮料出售、可购买。

关于状态转换的分析如下:

(1)清空硬币器后,自动售货机等待下一次交易,进入空闲状态。

现在可任意的进行饮料选择数量,一旦顾客投入硬币,自动售货机便进入预备效劳状态。

(2)当自动售货机进行预备效劳状态时,开始计算硬币价值,若是硬币不够那么提示顾客继续投入硬币。

若是硬币足够,那么进入可购买状态。

(3)进行可购买状态后,自动售货机判定饮料数量。

若是数量不够,那么返回预备效劳状态提示用户从头选择饮料。

若是数量足够,那么推出饮料进入饮料出售状态。

(4)进行饮料出售状态后,自动售货机计算找零,并返回进入空闲状态等待下一次交易。

此题问题2主若是分析四种状态中的跳转事件。

依照状态图和试题要紧事件流的描述能够推出事件E1是饮料数量不足,事件E2是硬币数量足够,事件E3是推出饮料,事件E4是返回找零。

此题问题3依照要紧事件流的描述,能够推断出C1~C5的类名别离对应自动售货机、硬币器、饮料贮存仓、硬币、饮料。

4.

参考答案:

问题1:

(1):

j

(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],(7)6。

试题分析:

此题问题1依照KMP算法的伪代码描述进行推导。

依照伪代码中第2步能够推导

(1)是判定字符串s是不是还有字符,即j

i表示字符串t的下标,j表示字符串s的下标。

依照伪代码第步能够推导

(2)是判定字符串t和字符串s当前位置的字符是不是相同,即t[i]==s[j]。

依照伪代码第步能够推导(3)是当第步判定条件不知足时,改变j所指向的字符位置。

即挪用函数get_next(next,s,ls),且j=next[j]。

依照伪代码第3步能够推导(4)是返回匹配的起始位置。

由于当前i所指向字符串中匹配子串的最后一个字符的位置,且已知子串的长度为ls。

(4)的代码为i+1-ls。

此题问题2是计算KMP算法的复杂度。

此题问题3中已知字符串“BBABBCAC”,那么依照get_next()函数能够求得next数组的元素值为[-1,-1,1,-1,-1,2,0,0]。

并计算取得起始位置为6。

fusional2016-11-17

第三问答案究竟是5仍是6?

MegumiIsh2016-11-20

答案是6

fusional2016-12-15

教师,最后一问答案不是5吗?

我看你们希赛的小任教师给的答案是5,怎么此刻又是6了?

MegumiIsh2016-12-1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2