1、2018年下半年软件设计师考试软件设计应用技术真题及答案解析(总分:90.00,做题时间:150 分钟)一、案例分析题(总题数:6,分数:90.00)【说明】某房产中介连锁企业欲开发一个基于 Web的房屋中介信息系统,以有效管理房源和客户,提高成交率。该系统的主要功能是:1.房源采集与管理。系统自动采集外部网站的潜在房源信息,保存为潜在房源。由经纪人联系确认的潜在房源变为房源,并添加出售/出租房源的客户。由经纪人或客户登记的出售/出租房源,系统将其保存为房源。房源信息包括基本情况、配套设施、交易类型、委托方式、业主等。经纪人可以对房源进行更新等管理操作。2.客户管理。求租/求购客户进行注册、更
2、新,推送客户需求给经纪人,或由经纪人对求租/求购客户进行登记、更新。客户信息包括身份证号、姓名、手机号、需求情况、委托方式等。3.房源推荐。根据客户的需求情况(求购/求租需求情况以及出售/出租房源信息),向已登录的客户推荐房源。4.交易管理。经纪人对租售客户双方进行交易信息管理,包括订单提交和取消,设置收取中介费比例。财务人员收取中介费之后,表示该订单已完成,系统更新订单状态和房源状态,向客户和经纪人发送交易反馈。5.信息查询。客户根据自身查询需求查询房屋供需信息。现采用结构化方法对房屋中介信息系统进行分析与设计,获得如图 1-1 所示的上下文数据流图和图 1-2所示的 0层数据流图。(分数:
3、15)(1).使用说明中的词语,给出图 1-1中的实体 E1-E4的名称。(分数:4)_(2).使用说明中的词语,给出图 1-2中的数据存储 D1-D4的名称。(分数:4)_(3).根据说明和图中术语,补充图 1-2中缺失的数据流及其起点和终点。(分数:3)_(4).根据说明中术语,给出图 1-1中数据流“客户信息“、“房源信息“的组成。(分数:4)_【说明】某集团公司拥有多个分公司,为了方便集团公司对分公司各项业务活动进行有效管理,集团公司决定构建一个信息系统以满足公司的业务管理需求。【需求分析】1.分公司关系需要记录的信息包括分公司编号、名称、经理、联系地址和电话。分公司编号唯一标识分公司
4、信息中的每一个元组。每个分公司只有一名经理,负责该分公司的管理工作。每个分公司设立仅为本分公司服务的多个业务部门,如研发部、财务部、采购部、销售部等。2.部门关系需要记录的信息包括部门号、部门名称、主管号、电话和分公司编号。部门号唯一标识部门信息中的每一个元组。每个部门只有一名主管,负责部门的管理工作。每个部门有多名员工,每名员工只能隶属于一个部门。3.员工关系需要记录的信息包括员工号、姓名、隶属部门、岗位、电话和基本工资。其中,员工号唯一标识员工信息中的每一个元组。岗位包括:经理、主管、研发员、业务员等。【概念模型设计】根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如图 2-1
5、 所示:【关系模式设计】分公司(分公司编号,名称,(a),联系地址,电话)部门(部门号,部门名称,(b),电话)员工(员工号,姓名(c),电话,基本工资)(分数:15)(1).根据问题描述,补充 4个联系,完善图 2-1的实体联系图。联系名可用联系 1、联系 2、联系 3和联系 4代替,联系的类型为 1:1、1:n 和 m:n (或 1:1、1:*和*:*)。(分数:4)_(2).根据题意,将关系模式中的空 (a)-(c) 补充完整。(分数:5)_(3).给出“部门“和“员工“关系模式的主键和外键。(分数:4)_(4).假设集团公司要求系统能记录部门历任主管的任职时间和任职年限,那么是否需要在
6、数据库设计时增设一个实体?为什么?(分数:2)_【说明】社交网络平台 (SNS) 的主要功能之一是建立在线群组,群组中的成员之间可以互相分享或挖掘兴趣和活动。每个群组包含标题、管理员以及成员列表等信息。社交网络平台的用户可以自行选择加入某个群组。每个群组拥有一个主页,群组内的所有成员都可以查看主页上的内容。如果在群组的主页上发布或更新了信息,群组中的成员会自动接收到发布或更新后的信息。用户可以加入一个群组也可以退出这个群组。用户退出群组后,不会再接收到该群组发布或更新的任何信息。现采用面向对象方法对上述需求进行分析与设计,得到如表 3-1所示的类列表和如图 3-1所示的类图。(分数:15)(1
7、).根据说明中的描述,给出图 3-1 中 Cl C3所对应的类名。(分数:6)_(2).图 3-1中采用了哪一种设计模式?说明该模式的意图及其适用场合。(分数:6)_(3).现在对上述社交网络平台提出了新的需求:一个群体可以作为另外一个群体中的成员,例如群体 A 加入群体 B 。那么,群体 A 中的所有成员就自动成为群体 B中的成员。若要实现这个新需求,需要对图 3-1进行哪些修改? (以文字方式描述)(分数:3)_(分数:15)(1).根据题干说明,填充 C代码中的空(1)-(4)。(分数:8)_(2).根据题干说明和 C代码,算法采用的设计策略为(5)算法的时间复杂度为(6),(用 O表示
8、)。(分数:4)_(3).给定字符序列 ACCGGUAGU ,根据上述算法求得最大字符对数为(7)(分数:3)_1.阅读下列说明和 C+代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某航空公司的会员积分系统将其会员划分为:普卡 (Basic)、银卡(Silver)和金卡 (Gold) 三个等级。非会员 (NonMember) 可以申请成为普卡会员。会员的等级根据其一年内累积的里程数进行调整。描述会员等级调整的状态图如图 5-1 所示。现采用状态 (State) 模式实现上述场景,得到如图 5-2 所示的类图。(分数:15.00)_2.阅读下列说明和 Java代码,将应填入(n)处的
9、字句写在答题纸的对应栏内。【说明】某航空公司的会员积分系统将其会员划分为:普卡 (Basic) 、银卡(Silver)和金卡 (Gold)三个等级。非会员 (NonMember)可以申请成为普卡会员。会员的等级根据其一年内累积的里程数进行调整。描述会员等级调整的状态图如图 6-1 所示 。现采用状态 (State) 模式实现上述场景,得到如图 6-2 所示的类图。(分数:15.00)_2018年下半年软件设计师考试软件设计应用技术真题答案解析(总分:90.00,做题时间:150 分钟)一、案例分析题(总题数:6,分数:90.00)【说明】某房产中介连锁企业欲开发一个基于 Web的房屋中介信息系
10、统,以有效管理房源和客户,提高成交率。该系统的主要功能是:1.房源采集与管理。系统自动采集外部网站的潜在房源信息,保存为潜在房源。由经纪人联系确认的潜在房源变为房源,并添加出售/出租房源的客户。由经纪人或客户登记的出售/出租房源,系统将其保存为房源。房源信息包括基本情况、配套设施、交易类型、委托方式、业主等。经纪人可以对房源进行更新等管理操作。2.客户管理。求租/求购客户进行注册、更新,推送客户需求给经纪人,或由经纪人对求租/求购客户进行登记、更新。客户信息包括身份证号、姓名、手机号、需求情况、委托方式等。3.房源推荐。根据客户的需求情况(求购/求租需求情况以及出售/出租房源信息),向已登录的
11、客户推荐房源。4.交易管理。经纪人对租售客户双方进行交易信息管理,包括订单提交和取消,设置收取中介费比例。财务人员收取中介费之后,表示该订单已完成,系统更新订单状态和房源状态,向客户和经纪人发送交易反馈。5.信息查询。客户根据自身查询需求查询房屋供需信息。现采用结构化方法对房屋中介信息系统进行分析与设计,获得如图 1-1 所示的上下文数据流图和图 1-2所示的 0层数据流图。(分数:15)(1).使用说明中的词语,给出图 1-1中的实体 E1-E4的名称。(分数:4)_正确答案:(E1:客户E2:经纪人E3:财务人员E4:外部网站)解析:(2).使用说明中的词语,给出图 1-2中的数据存储 D
12、1-D4的名称。(分数:4)_正确答案:(D1:客户信息表D2:潜在房源信息表D3:房源信息D4:订单表)解析:(3).根据说明和图中术语,补充图 1-2中缺失的数据流及其起点和终点。(分数:3)_正确答案:(缺失数据流:数据流名称 起点 终点1.交易反馈 P4 交易管理 E22.客户需求 D1 P3 房源推荐3.房源状态 P4 交易管理 D3)解析:(4).根据说明中术语,给出图 1-1中数据流“客户信息“、“房源信息“的组成。(分数:4)_正确答案:(客户信息:身份证号, 姓名, 手机号, 需求情况, 委托方式。房源信息:基本情况, 配套设施, 交易类型, 委托方式, 业主等。)解析:【说
13、明】某集团公司拥有多个分公司,为了方便集团公司对分公司各项业务活动进行有效管理,集团公司决定构建一个信息系统以满足公司的业务管理需求。【需求分析】1.分公司关系需要记录的信息包括分公司编号、名称、经理、联系地址和电话。分公司编号唯一标识分公司信息中的每一个元组。每个分公司只有一名经理,负责该分公司的管理工作。每个分公司设立仅为本分公司服务的多个业务部门,如研发部、财务部、采购部、销售部等。2.部门关系需要记录的信息包括部门号、部门名称、主管号、电话和分公司编号。部门号唯一标识部门信息中的每一个元组。每个部门只有一名主管,负责部门的管理工作。每个部门有多名员工,每名员工只能隶属于一个部门。3.员
14、工关系需要记录的信息包括员工号、姓名、隶属部门、岗位、电话和基本工资。其中,员工号唯一标识员工信息中的每一个元组。岗位包括:经理、主管、研发员、业务员等。【概念模型设计】根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如图 2-1 所示:【关系模式设计】分公司(分公司编号,名称,(a),联系地址,电话)部门(部门号,部门名称,(b),电话)员工(员工号,姓名(c),电话,基本工资)(分数:15)(1).根据问题描述,补充 4个联系,完善图 2-1的实体联系图。联系名可用联系 1、联系 2、联系 3和联系 4代替,联系的类型为 1:1、1:n 和 m:n (或 1:1、1:*和*:*
15、)。(分数:4)_正确答案:()解析:(2).根据题意,将关系模式中的空 (a)-(c) 补充完整。(分数:5)_正确答案:(a)经理工号(b)主管号, 分公司编号(c)隶属部门号, 岗位)解析:(3).给出“部门“和“员工“关系模式的主键和外键。(分数:4)_正确答案:(部门的主键:部门号;部门的外键:分公司编号, 主管号员工的主键:员工号;员工的外键:隶属部门号)解析:(4).假设集团公司要求系统能记录部门历任主管的任职时间和任职年限,那么是否需要在数据库设计时增设一个实体?为什么?(分数:2)_正确答案:(不需要增加新的实体, 对于任职情况, 可以将部门与主管的联系单独形成关系模式, 联
16、系(部门号, 主管工号, 任职时间, 任职年限), 同一个员工可能在不同的时间担任同一部门主管, 因此, 可以将(部门号, 主管工号, 任职时间)作为该关系模式的组合主键。)解析:【说明】社交网络平台 (SNS) 的主要功能之一是建立在线群组,群组中的成员之间可以互相分享或挖掘兴趣和活动。每个群组包含标题、管理员以及成员列表等信息。社交网络平台的用户可以自行选择加入某个群组。每个群组拥有一个主页,群组内的所有成员都可以查看主页上的内容。如果在群组的主页上发布或更新了信息,群组中的成员会自动接收到发布或更新后的信息。用户可以加入一个群组也可以退出这个群组。用户退出群组后,不会再接收到该群组发布或
17、更新的任何信息。现采用面向对象方法对上述需求进行分析与设计,得到如表 3-1所示的类列表和如图 3-1所示的类图。(分数:15)(1).根据说明中的描述,给出图 3-1 中 Cl C3所对应的类名。(分数:6)_正确答案:(C1: SNSGroupC2:SNSUserC3:SNSAdmin(其中 C2、 C3 可以互换)解析:(2).图 3-1中采用了哪一种设计模式?说明该模式的意图及其适用场合。(分数:6)_正确答案:(采用的观察者模式。意图:当被观察(群组主页) 发生改变时, 可以通知所有的观察者(群组内的所有成员)。使用场合: 观察者模式多用于实现订阅功能的场景, 例如微博的订阅。 当一
18、个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。观察者模式(Observer)定义对象间的一种一对多的依赖关系, 当一个对象的状态发生改变时, 所有依赖于它的对象酬导到通知并被自动更新。)解析:(3).现在对上述社交网络平台提出了新的需求:一个群体可以作为另外一个群体中的成员,例如群体 A 加入群体 B 。那么,群体 A 中的所有成员就自动成为群体 B中的成员。若要实现这个新需求,需要对图 3-1进行哪些修改? (以文字方式描述)(分数:3)_正确答案:(新增一个被观察者对象群组 B 的主页, 对于观察者, 新增一个“加入群组 B” 的方法, 加入之后, 就可以接收被观察者群组
19、 B 的主页变动所发生的通知。)解析:(分数:15)(1).根据题干说明,填充 C代码中的空(1)-(4)。(分数:8)_正确答案:((1) max=Cij-1(2) t=1(3) isMatch(bt,bj)(4)cij)解析:(2).根据题干说明和 C代码,算法采用的设计策略为(5)算法的时间复杂度为(6),(用 O表示)。(分数:4)_正确答案:(采用的算法策略:动态规划 时间复杂度 O(n 3)解析:(3).给定字符序列 ACCGGUAGU ,根据上述算法求得最大字符对数为(7)(分数:3)_正确答案:(最大字符对数: 4)解析:1.阅读下列说明和 C+代码,将应填入(n)处的字句写在
20、答题纸的对应栏内。【说明】某航空公司的会员积分系统将其会员划分为:普卡 (Basic)、银卡(Silver)和金卡 (Gold) 三个等级。非会员 (NonMember) 可以申请成为普卡会员。会员的等级根据其一年内累积的里程数进行调整。描述会员等级调整的状态图如图 5-1 所示。现采用状态 (State) 模式实现上述场景,得到如图 5-2 所示的类图。(分数:15.00)_正确答案:(1) virtual double travel(int miles,FrequentFlyer context)=0(2)context-setState(context-silver)(3)context
21、-setState(context-gold)(4)context-setState(context-silver)(5)context-setState(context-basic)解析:2.阅读下列说明和 Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某航空公司的会员积分系统将其会员划分为:普卡 (Basic) 、银卡(Silver)和金卡 (Gold)三个等级。非会员 (NonMember)可以申请成为普卡会员。会员的等级根据其一年内累积的里程数进行调整。描述会员等级调整的状态图如图 6-1 所示 。现采用状态 (State) 模式实现上述场景,得到如图 6-2 所示的类图。(分数:15.00)_正确答案:((1) 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()解析: