2019年上半年软件设计师考试下午试题(参考答案+详细解析)

试题一:(实际得分 13分)

试题一答案:

试题一解析: 

【问题1】:根据题干描述,与加工P1(采集学生状态)相对应的应该是学生,即实体E1为 学生。

                    由加工P4(汇总在校情况)和实体E4之间存在一个数据流——子女在校情况,显然是将子女的在校情况反馈给子女的父母,所以实体E4为 家长。

                    由加工P3(到课检查)和实体E3、E4之间存在数据流——旷课警告,而题干(3)中说需要将旷课警告汇报给家长和班主任,在上面的分析中,实体E4已经是家长,所以实体E3为 班主任。

                    由加工P2(健康状态告警)和实体E5、E3、E4之间都存在数据流——健康状态警告,而题干(2)中说需要将学生的健康状态反馈给家长、班主任和医护机构健康服务系统,所以可知实体E5为 医护机构健康服务系统。

                    最后由加工P6(基础信息管理)和实体E2之间的数据流,以及题干(6)的描述,可知实体E2为 学校管理人员。


【问题2】:根据题干描述——通过学生卡传感器,采集学生心率、体温等健康指标及其所在位置等信息并记录,以及加工P1和数据存储D1之间的数据流——学生状态,可知数据存储D1为 学生状态记录表。

                    再由实体E2和加工P6以及数据存储D2、D3、D4之间的数据流,可知数据存储D2为 学生信息记录表,D3为 校园场所记录表,D4为课表信息记录表。


【问题3】 :由题干(3)的描述,可知加工P3需要收集学生状态、课表、校园场所等信息来对学生到课情况进行判定,所以在加工P3和数据存储D1、D2、D3、D4之间都应该有关联,即D3→P3之间添加数据流——校园场所信息,D4→P3之间添加数据流——课表信息。

                     由题干(6)的描述,加工P6需要将家长ID加入学生信息记录中,使家长与其子女相关联,所以在加工P6和数据存储D2(学生信息记录表)之间应添加数据流——家长ID。


【问题4】:根据题干描述可知,”学生状态“包括:学生卡ID、学生心率、体温(摄氏度)等健康指标及其所在位置等信息。”学生信息“包括:学生ID、学生卡ID、家长ID、班主任等信息。

试题二:(实际得分 10分)

试题二答案: 

试题二解析: 

【问题1】:根据题干描述,一家创业公司可以有多位员工,而一位员工只能在一家创业公司工作,所以创业公司和员工之间存在一对多的联系;再由一位员工负责协调投资方和创业公司的一个创业项目、一个创业项目只属于一个创业公司、但可以接受若干投资方的投资,可知,员工、创业公司和投资方之间存在1:*:*的联系。如答案中的红色标注。


【问题2】:根据题干描述和逻辑结构设计的相关内容可知,员工实体中缺少属性:所属公司代码;项目实体中缺少属性:投资方编号。而题干中说,工号唯一标识每位员工,而在1:*联系中,联系不单独转换,此时外键为1端实体的关键字,即员工实体的外键为:所属公司代码。对于联系项目,单独转换为一个实体,它的主键为n端实体关键字的组合,即(项目编号,投资方编号),外键为:投资方编号(这里的外键,我不是太理解)


【问题3】:题干描述说,创业项目的信息还需要包括投资额和投资时间,所以不需要添加实体,直接将这两个属性:投资额、投资时间添加到联系项目中即可,如答案中的蓝色标注。

试题三:(实际得分 9分)

试题三答案: 

 

试题三解析: 

【问题1】:根据图3-1用例图所示,与A1相关联的有三个,分别为Reorder books、Promote books以及Add books,再根据题目中的描述(4),与之相关的是采购人员(Buyer),即参与者A1为采购人员(Buyer)。

                    与A2相关联的有一个是Update stock,题目描述中的(6),可知与之相关的是仓库管理员(Warehouseman),即参与者A2为仓库管理员(Warehouseman)。

                    与A3相关联的有一个是Produce picklist,题目描述中的(3),可知与之相关的是派送人员(Dispatcher),即参与者A3为派送人员(Dispatcher)。

                    根据题目描述中的(1)和(2)可知,用例U1为注册,而根据U2和U3之间的继承关系可知,用例U2为打印订单,用例U3为购买书籍。(因为一定是先购买书籍,才会有相应的订单,所以订单继承了购买!!!)


【问题2】:这一小问的答案很清楚,因为用例U3是购买书籍,对应题目描述中的(2),即可得出相应的答案。


【问题3】:根据图3-2类图所示,在类C3中,存在title、author、introduction等信息,对应说明(2)中的前两行,可知类C3为 书籍;再看类C1中,存在name、address、email的信息,对应说明(1)中的内容,可知类C1为 顾客;最后看类C2,根据它与类OrderedBook之间的聚合关系和类OrderedBook中的信息quantity(数量),以及C2和C1之间的依赖关系,可知类C2为 订单。

试题四:(实际得分 7分)

试题四答案: 

试题四解析: 

啊,博主在这里只想说,2015年算法题考了n皇后,2019年算法题又考了n皇后,所以可能2020年下半年就不会考n皇后了吧,很无语这类题,如果没学过回溯法、或者不理解n皇后问题,这题就很难写;但如果学过,可能记住模板就能写出这些答案,所以这道题,博主就不做解析了。。。 

试题六:(我选Java,不选C++)(实际得分 12分) 

 

试题六答案: 

试题六解析: 

第一空:这里我们需要补全方法名,这是一个接口,而类LongWheelBrake和类ShortWheelBrake继承实现了这个接口,就一定要重写接口中的方法,因为接口中的方法被默认为了抽象方法,在类LongWheelBrake中有一个公共方法stop(),所以(1)处与之对应,应该填:void stop()。


第二空:这里我们需要补全变量类型,这是一个抽象类Car,根据图5-1的类图所示,类ShortWheelCar和LongWheelCar继承了Car,接口BrakeBehavior与类Car之间是聚合关系。而题目中描述的是需要模拟长短轮胎急刹车的痕迹,则需要通过实现接口的两个类LongWheelBrake和ShortWheelBrake来实现,所以这里的wheel变量类型应该为 protected BrakeBehavior,即(2)处应该填:BrakeBehavior。


第三空:在这个抽象类Car中,需要我们补全brake()方法中的内容,这个方法是void类型,没有返回值,也不是构造方法,则必然是通过某个实例变量去调用某个方法,来实现一定的功能。那么,根据第二空的分析,这里应该是通过变量wheel调用接口BrakeBehavior中的stop()方法,即(3)处应该填:wheel.stop()。


第四空:类ShortWheelCar继承了抽象类Car,并且在main方法中通过构造器向该类中传入一个接口BrakeBehavior类型的变量。那么,在类ShortWheelCar的构造器中,一定也是通过某个变量调用某个方法实现一定的功能,构造器中的形参为BrakeBehavior bahavior,所以(4)处应该填:bahavior.stop()。


第五空:根据main方法中的内容,我们首先通过类ShortWheelCar的构造方法,声明了一个实例变量car1,第五空是通过这个实例变量car1去调用某个方法。这里类ShortWheelCar继承了抽象类Car,而类ShortWheelCar中除了一个构造器没有其他内容,所以这里一定是通过子类去调用父类中的方法,而父类Car中只有一个方法brake(),所以main方法的最后一行应该是car1.brake(),即(5)处应该填:brake()。


博主独立完成了2019年上半年软件设计师考试下午试题,总得分为13+10+9+7+12=51,虽然45分就可以通过,但还是有点悬呀,哈哈哈,往后还是要多刷题,巩固这些章节的内容,为今年下半年的软考做好充足的准备!!!

猜你喜欢

转载自blog.csdn.net/weixin_43823808/article/details/107506688