image

编辑人: 沉寂于曾经

calendar2025-05-30

message5

visits722

2016年5月 软件设计师 下午题答案及解析

一、问答题

1、

试题一(15分)

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

【说明】

    某会议中心提供举办会议的场地设施和各种设备,供公司与各类组织机构租用。场地包括一个大型报告厅、一个小型报告厅以及诸多会议室。这些报告厅和会议室可提供的设备有投影仪、白板、视频播放/回放设备、计算机等。为了加强管理,该中心欲开发一会议预订系统,系统的主要功能如下。

1)检查可用性。客户提交预订请求后,检查预订表,判定所申请的场地是否在申请日期内可用;如果不可用,返回不可用信息。

2)临时预订。会议中心管理员收到客户预定请求的通知之后,提交确认。系统生成新临时预订存入预订表,并对新客户创建一条客户信息记录加以保存。根据客户记录给客户发送临时预订确认信息和支付定金要求。

3)分配设施与设备。根据临时预订或变更预定的设备和设施需求,分配所需设备(均能满足用户要求)和设施,更新相应的表和预订表。

4)确认预订。管理员收到客户支付定金的通知后,检查确认,更新预订表,根据客户记录给客户发送预订确认信息。

5)变更预订。客户还可以在支付余款前提交变更预订请求,对变更的预订请求检查可用性,如果可用,分配设施和设各;如果不可用,返回不可用信息。管理员确认变更后,根据客户记录给客户发送确认信息。

6)要求付款。管理员从预订表中查询距预订的会议时间两周内的预定,根据客户记录给满足条件的客户发送支付余款要求。

7)支付余款。管理员收到客户余款支付的通知后,检查确认,更新预订表中的已支付余款信息。

现采用结构化方法对会议预定系统进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图(不完整)。

【问题1】(2分)

    使用说明中的词语,给出图1-1中的实体E1E2的名称。

【问题2】(4分)

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

【问题3】(6分)

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

【问题4】(3分)   

如果发送给客户的确认信息是通过Email系统向客户信息中的电子邮件地址进行发送的,那么需要对图1-11-2进行哪些修改?用150字以内文字加以说明。

参考答案:见解析

解析:

:{这个问题是关于会议预定系统的数据流分析和设计。问题给出了会议预定系统的说明和图示,要求解答者根据说明和图示填写一些实体和数据流的名称。\n\n

二、编程题

2、

试题六(15分)

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

【说明】

    某软件系统中,已设计并实现了用于显示地址信息的类Address(如图6-1所示),现要求提供基于Dutch语言的地址信息显示接口。为了实现该要求并考虑到以后可能还会出现新的语言的接口,决定采用适配器(Adapter)模式实现该要求,得到如图6-1所示的类图。 

图6-1 适配器模式类图

 

【Java代码】

import java.util.*;

Class Address{

    public void street()   {    //实现代码省略   }

    public void zip()      {    //实现代码省略   }

    public void city()     {    //实现代码省略   }

∥其他成员省略

}

 

class DutchAddress{

    public void straat()    {    //实现代码省略   }

    public void postcode()  {    //实现代码省略   }

    public void plaats()    {    //实现代码省略   }

//其他成员省略

}

 

class DutchAddressAdapter extends DutchAddress {

    private   (1)   ;

 

    public DutchAddressAdapter (Address addr){

        address= addr;

    }

 

    public void straat() {

          (2)   ;

    }

 

    public void postcode() {

          (3)   ;

    }

 

    public void plaats(){

         (4)   ;

    }

//其他成员省略

}

 

class Test {

    public static void main(String[] args) {

        Address addr= new Address();

          (5)   ;

        System.out.println("\n The DutchAddress\n");

        testDutch(addrAdapter);

    }

                                             

    Static void  testDutch(DutchAddress addr){  

          addr.straat();

          addr.postcode();

          addr.plaats();

    }

}

 

参考答案:

参考答案:

(1)Address address;

(2)address.street();

(3)address.zip();

(4)address.city();

(5)DutchAddress addrAdapter=new DutchAddressAdaptor(addr);

解析:

这是一个关于适配器模式的应用题目。适配器模式主要用于将一个类的接口转换成另一个类的接口,使得原本不兼容的接口可以协同工作。在这个场景中,我们需要将已有的Address类适配到基于Dutch语言的地址显示接口。

(1)在DutchAddressAdapter类中,我们需要一个Address类型的成员变量来保存被适配的对象。因此,这里应该填写“Address address;”来声明一个Address类型的成员变量。

(2)对于straat()方法,它应该是调用被适配对象Address的street()方法来实现相应的功能。因此,这里应该填写“address.street();”。

(3)对于postcode()方法,同样地,它应该是调用被适配对象Address的zip()方法。所以,这里填写“address.zip();”。

(4)对于plaats()方法,它应该调用被适配对象Address的city()方法。因此,这里填写“address.city();”。

(5)在Test类的main方法中,我们需要创建一个DutchAddressAdapter对象,并将其与已有的Address对象关联起来。所以,这里应该填写“DutchAddress addrAdapter = new DutchAddressAdapter(addr);”来创建并初始化一个DutchAddressAdapter对象。

三、问答题

3、

试题二15分)

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

【说明】

    某销售公司当前的销售业务为商城实体店销售。现该公司拟开展网络销售业务,需要开发一个信息化管理系统。请根据公司现有业务及需求完成该系统的数据库设计。

【需求描述】

    1)记录公司所有员工的信息。员工信息包括工号、身份证号、姓名、性别、出生日期和电话,并只登记一部电话。

    2)记录所有商品的信息。商品信息包括商品名称、生产厂家、销售价格和商品介绍。系统内部用商品条码唯一区别每种商品。

    3)记录所有顾客的信息。顾客信息包括顾客姓名、身份证号、登录名、登录密码、和电话号码。一位顾客只能提供一个电话号码。系统自动生成唯一的顾客编号。

    4)顾客登录系统之后,在网上商城购买商品。顾客可将选购的商品置入虚拟的购物车内,购物车可长期存放顾客选购的所有商品。顾客可在购物车内选择商品、修改商品数量后生成网购订单。订单生成后,由顾客选择系统提供的备选第三方支付平台进行电子支付,支付成功后系统需要记录唯一的支付凭证编号,然后由商城根据订单进行线下配送。

    5)所有的配送商品均由仓库统一出库。为方便顾客,允许每位顾客在系统中提供多组收货地址、收货人及联系电话。一份订单所含的多个商品可能由多名分检员根据商品所在仓库信息从仓库中进行分拣操作,分拣后的商品交由配送员根据配送单上的收货地址进行配送。

    6)新设计的系统要求记录实体店的每笔销售信息,包括营业员、顾客、所售商品及其数量。

【概念模型设计】   

根据需求阶段收集的信息,设计的实体联系图(不完整)如图所示。

【逻辑结构设计】

    根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):

    员工(工号,身份证号,姓名,性别,出生日期,电话)

    商品(商品条码,商品名称,生产厂家,销售价格,商品介绍,  a)  )

    顾客(顾客编号,姓名,身份证号,登录名,登录密码,电话)

    收货地点(收货ID,顾客编号,收货地址,收货人,联系电话)

    购物车(顾客编号,商品条码,商品数量)

    订单(订单ID,顾客编号,商品条码,商品数量,  (b)  )

    分检(分拣ID,分拣员工号,  (c)  ,分拣时间)  

    配送(配送ID,分拣ID,配送员工号,收货ID,配送时间,签收时间,签收快照)

    销售(销售ID,营业员工号,顾客编号,商品条码,商品数量)

【问题1】(4分)

    补充图中的“配送”联系所关联的对象及联系类型。

【问题2】(6分)

    补充逻辑结构设计中的(a)、(b)和(c)三处空缺。

【问题3】(5分)

    对于实体店销售,若要增加送货上门服务,由营业员在系统中下订单,与网购的订单进行后续的统一管理。请根据该需求,对图进行补充,并修改订单关系模式。

参考答案:见解析

解析:

问题一:在配送关系中,配送员和收货地点是一对多的关系,即一个配送员可以负责多个收货地点的配送,同时一个收货地点也可能由多个配送员负责配送。因此,补充图中的“配送”联系所关联的对象为配送员和收货地点,联系类型为多对多。

问题二:根据需求描述,(a)处应填写与商品有关的信息,除了商品条码外,还应包括仓库信息,以便记录商品所在仓库的位置和库存情况。(b)处应填写与订单支付有关的信息,即支付凭证编号,以便记录订单的支付情况。(c)处应填写分检操作的相关信息,包括商品条码和订单ID,以便记录每个分检员处理哪些商品的哪些订单。

问题三:为了满足实体店增加送货上门服务的需求,需要在营业员与订单之间增加联系“送货上门”。同时,为了记录这个联系,需要在订单关系中增加属性“营业员ID”,作为外键,以标识负责该订单的营业员。这样,系统可以统一管理网购订单和实体店销售订单,包括送货上门服务。

4、

试题三(15分)

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

【说明】

    某软件公司欲设计实现一个虚拟世界仿真系统。系统中的虚拟世界用于模拟现实世界中的不同环境(由用户设置并创建),用户通过操作仿真系统中的1~2个机器人来探索虚拟世界。机器人维护着两个变量b1b2,用来保存从虚拟世界中读取的字符。

    该系统的主要功能描述如下:

    1)机器人探索虚拟世界(Run Robots)。用户使用编辑器(Editor)编写文件以设置想要模拟的环境,将文件导入系统(Load File)从而在仿真系统中建立虚拟世界(Setup World)。机器人在虚拟世界中的行为也在文件中进行定义,建立机器人的探索行为程序(Setup Program)。机器人在虚拟世界中探索时(Run Program),有2种运行模式:

    ①自动控制(Run):事先编排好机器人的动作序列(指令(Instruction)),执行指令,使机器人可以连续动作。若干条指令构成机器人的指令集(Instruction Set)。

    ②单步控制(Step):自动控制方式的一种特殊形式,只执行指定指令中的一个动作。

    2)手动控制机器人(Manipulate Robots)。选定1个机器人后(Select Robot),可以采用手动方式控制它。手动控制有4种方式:

    ①Move:机器人朝着正前方移动一个交叉点。

    ②Left:机器人原地沿逆时针方向旋转90度。

    ③Read:机器人读取其所在位置的字符,并将这个字符的值赋给b1;如果这个位置上没有字符,则不改变b1的当前值。

    ④Write:将b1中的字符写入机器人当前所在的位置,如果这个位置上已经有字符,该字符的值将会被b1的值替代。如果这时b1没有值,即在执行Write动作之前没有执行过任何Read动作,那么需要提示用户相应的错误信息(Show Errors)。

    手动控制与单步控制的区别在于,单步控制时执行的是指令中的动作,只有一种控制方式,即执行下个动作;而手动控制时有4种动作。

    现采用面向对象方法设计并实现该仿真系统,得到如图3-1所示的用例图和图3-2所示的初始类图。图3-2中的类“Interpreter”和“Parser”用于解析描述虚拟世界的文件以及机器人行为文件中的指令集。

【问题1】(6)

    根据说明中的描述,给出图3-1U1U6所对应的用例名。

【问题2】(4分)

    3-1中用例U1U6分别与哪个(哪些)用例之间有关系,是何种关系?

【问题3】(5分)    

    根据说明中的描述,给出图3-2C1C5所对应的类名。

参考答案:见解析

解析:

问题1要求根据说明中的描述,给出图3-1中U1至U6所对应的用例名。根据题目描述的功能,可以对应出每个用例的名称。
问题2要求分析图3-1中用例U1至U6分别与哪个(哪些)用例之间有关系,是何种关系。根据面向对象的设计原理,可以分析出各个用例之间的关系。
问题3要求根据说明中的描述,给出图3-2中C1至C5所对应的类名。根据题目描述的功能和提供的类图,可以对应出每个类名及其功能。

5、

试题四(15分)

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

【说明】

    在一块电路板的上下两端分别有n个接线柱。根据电路设计,用(i,π(i))表示将上端接线柱i与下端接线柱π(i)相连,称其为该电路板上的第i条连线。如图4-1所示的π(i)排列为{8,7,4,2,5,1,9,3,10,6}。对于任何1i<jn,第i条连线和第j条连线相交的充要条件是π(i)>π(j)

【问题1】(6分)

根据以上说明和C代码,填充C代码中的空(1)~(3)。

【问题2】(6分)    

    据题干说明和以上C代码,算法采用了  4)  算法设计策略。      

函数maxNumconstructSet的时间复杂度分别为  5)      6)  (用O表示)。 

【问题3】(3分)    

    若连接排列为{8,7,4,2,5,1,9,3,10,6},即如图4-1所示,则最大不相交连接数为   7)   ,包含的连线为  8)   (用(i,π(i))的形式给出)。

参考答案:见解析

6、

参考答案:见解析

解析:


根据提供的图片信息,第一题是定义一个名为address的指针变量,类型为Address,用于指向一个Address类型的对象。第二题是通过调用address对象的street()方法来获取街道信息。第三题是通过调用address对象的zip()方法来获取邮政编码信息。第四题是通过调用address对象的city()方法来获取城市信息。最后一题是创建了一个名为addr的指针变量,类型为DutchAddress,并通过new操作符和DutchAddressAdaptor构造函数初始化这个对象,这通常用于实现某种适配或转换功能。"}

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2016年5月 软件设计师 下午题答案及解析

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share