2021年下半年软件设计师下午真题及答案解析

试题一(15分)

    某现代农业种植基地为进一步提升农作物种植过程的智能化,欲开发智慧农业平台,集管理和销售于一体,该平台的主要功能有:

1.信息维护。农业专家对农作物、环境等监测数据的监控处理规则进行维护。

2.数据采集。获取传感器上传的农作物长势、土壤墒情、气候等连续监测数据,解析后将监测信息进行数据处理、可视化和存储等操作。

3.数据处理。对实时监测信息根据监控处理规则进行监测分析,将分析结果进行可视化并进行存储、远程控制,对历史监测信息进行综合统计和预测,将预测信息进行可视化和存储。

4.远程控制。根据监控处理规则对分析结果进行判定,依据判定结果自动对控制器进行远程控制。平台也可以根据农业人员提供的控制信息对控制器进行远程控制。

5.可视化。实时向农业人员展示监测信息:实时给农业专家展示统计分析结果和预测信息或根据农业专家请求进行展示。

    现采用结构化方法对智慧农业平台进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。

 

问题1(4分)

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

问题2(4分)

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

问题3(4分)

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

问题4(3分)

根据说明,“数据处理”可以分解为哪些子加工?进一步进行分解时,需要注意哪三种常见的错误?

试题二(20分)

   

    某汽车维修公司为了便于管理车辆的维修情况,拟开发一套汽车维修管理系统,请根据下述需求描述完成该系统的数据库设计。

需求描述

(1)客户信息包括:客户号、客户名、客户性质、折扣率、联系人、联系电话。客户性质有个人或单位。客户号唯一标识客户关系中的每一个元组。

(2)车辆信息包括:车牌号、车型、颜色和车辆类别。一个客户至少有一辆车,一辆车只属于一个客户。

(3)员工信息包括:员工号、员工名、岗位、电话、家庭住址。其中,员工号唯一标识员工关系中的每一个元组。岗位有业务员、维修工、主管。业务员根据车辆的故障情况填写维修单。

(4)部门信息包括:部门号、名称、主管和电话,其中部门号唯一确定部门关系的每一个元组。每个部门只有一名主管,但每个部门有多名员工,每名员工只属于一个部门。

(5)维修单信息包括:维修单号、车牌号、维修内容、工时。维修单号唯一标识维修单关系中的每一个元组。一个维修工可接多张维修单,但一张维修单只对应一个维修工。

逻辑结构设计

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

  1. 客户(客户号,客户名,( a ),折扣率,联系人,联系电话)
  2. 车辆(车牌号,( b ),车型,颜色,车辆类别)
  3. 员工(员工号,员工名,岗位,( c ),电话,家庭住址)
  4. 部门(部门号,名称,主管,电话)
  5. 维修单(维修单号,( d ),维修内容,工时)

问题1(6分)

根据问题描述,补充3个联系,完善图2-1的实体联系图。联系名可用联系1、联系2和联系3代替,联系的类型为1:1、1:n和m:n(或1:1、1:*和*.*)。

问题2(4分)

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

问题3(2分)

分别给出车辆关系和维修单关系的主键与外键。

问题4(3分)

如果一张维修单涉及多项维修内容,需要多个维修工来处理,那么哪个联系类型会发生何种变化?你认为应该如何解决这一问题?

试题三(15分)

    某游戏公司欲开发一款吃金币游戏。游戏的背景为一种回廊式迷宫(Maze),在迷宫的不同位置上设置有墙。迷宫中有两种类型的机器人(Robos):小精灵(PacMan)和幽灵(Ghost)。游戏的目的就是控制小精灵在迷宫内游走,吞吃迷宫路径上的金币,且不能被幽灵抓到。幽灵在迷宫中游走,并会吃掉遇到的小精灵。机器人游走时,以单位距离的倍数计算游走路径的长度。当迷宫中至少存在一个小精灵和一个幽灵时,游戏开始。

机器人上有两种传感器,使机器人具有一定的感知能力。这两种传感器分别是:

(1)前向传感器(FrontSensor),探测在机器人当前位置的左边、右边和前方是否有墙(机器人遇到墙时,必须改变游走方向)。机器人根据前向传感器的探测结果,决定朝哪个方向运动。

(2)近距离传感器(ProxiSesor),探测在机器人的视线范围内(正前方)是否存在隐藏的金币或幽灵。近距离传感器并不报告探测到的对象是否正在移动以及朝哪个方向移动。但是如果近距离传感器的连续两次探测结果表明被探测对象处于不同的位置,则可以推导出该对象在移动。

    另外,每个机器人都设置有一个计时器(Timer),用于支持执行预先定义好的定时事件。

机器人的动作包括:原地向左或向右旋转90°、向前或向后移动。

建立迷宫:用户可以使用编辑器(Editor) 编写迷宫文件,建立用户自定义的迷宫。将迷宫文件导入游戏系统建立用户自定义的迷宫。

    现采用面对象分析与设计方法开发该游戏,得到如图3-1所示的用例图以及图3-2所示的初始类图。

问题1(3分)

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

问题2(4分)

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

问题3(8分)

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

试题四(15分)

   

    生物学上通常采用编辑距离来定义两个物种DNA序列的相似性,从而刻画物种之间的进化关系。具体来说,编辑距离是指将一个字符串变换为另一个字符所需要的最小操作次数。操作有三种,分别为:插入一个字符、删除一个字符以及将一个字符修改为另一个字符。用字符数组str1和str2分别表示长度分别为len1和len2的字符串,定义二维数组d记录求解编辑距离的子问题最优解,则该二维数组可以递归定义为:

 C代码

下面是算法的C语言实现。

(1)常量和变更说明

  A,B:两个字符数组

  d:二维数组

  i,j:循环变量

  temp:临时变量

(2)C程序

#include<stdio.h>

#define N 100

    }

  return (  4  );

}

问题1 (8分)

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

问题2 (4分)

根据说明和C代码,算法采用了( 5 )设计策略,时间复杂度为( 6 )(用O符号表示,两个字符串的长度分别用m和n表示)。

问题3 (3分)

已知两个字符串A="CTGA"和B="ACGCTA",根据说明和C代码,可得出这两个字符串的编辑距离为( 7 )。

试题五(10分)

    享元(flyweight)模式主要用于减少创建对象的数量,以降低内存占用,提高性能。现要开发一个网络围棋程序,允许多个玩家联机下棋。由于只有一台服务器,为节省内存空间,采用享元模式实现该程序,得到如图5-1所示的类图。

C++代码

#include <iostream>

#include <vector>

using namespace std;

enum PieceColor{BLACK, WHITE};   //棋子颜色

class PiecePos{    //棋子位置

private:

   int x;

   int y;

public:

   PiecePos(int a,int b); x(a),y(b){}

   int getX(){return x;}

   int getY(){return y;}

};

class Piece{   //棋子定义

      piece=new BlackPiece(color,pos);  //获取一颗黑子

      count<<m_blackName <<"在位置(" <<pos.getX() <<","<<pos.getY()<< ")";

      (  4  );

   }else{  //放白子

      piece=new WhitePiece(color,pos);  //获取一颗白子

      count<<m_whiteName <<"在位置(" <<pos.getX() <<","<<pos.getY()<< ")";

      (  5  );

   }

   m_vecPiece.push_back(piece);

 }

};

试题六(10分)

    享元(flyweight)模式主要用于减少创建对象的数量,以低内存占用,提高性能。现要开发一个网络围棋程序允许多个玩家联机下棋。由于只有一台服务器,为节内存空间,采用享元模式实现该程序,得到如图6-1所的类图。

Java代码

import java.util.*:

enum PieceColor {BLACK,WHITE}//棋子颜色

class PiecePos{//棋子位置

   private intx;

   private int y:

   pubic PiecePos(int a,int b){x=a;y=b;}

   public int getX0{retun x;}

   public int getYO{return y;}

}

class PieceBoard{   //棋盘上已有的棋子

2021年下半年软件设计师下午真题答案及解析

试题一(15分)  单击此链接查看真题解析视频2021软考--软件设计师-下午案例分析真题解析视频(第三期)-学习视频教程-腾讯课堂

问题1(4分)

E1:传感器   E2:农业专家   E3:农业人员  E4:控制器

问题2(4分)

D1:监控处理规则表  D2:监测信息表  D3:分析结果表   D4:预测信息表

问题3(4分)

数据流

起点

终点

规则

D1

P4

分析结果与预测信息

P3

P5

历史监测信息

D2

P3

请求

E2

P5

问题4(3分)

“数据处理”可以分解为如下三个子加工:

1.实时监测信息的监测分析

2.历史监测信息综合统计和预测

3.可视化和存储

数据流图中常见的3种错误:

1.有输入但是没有输出,我们称之为“黑洞”。

2.有输出但没有输入。

3.输入不足以产生输出,我们称之为“灰洞"。

问题4(3分)

维修工和维修单的联系类型会发生变化,从1:n变成m:n。

增加维修单2关系,记录维修内容和维修工等信息。

试题三(15分)

问题1(3分)

U1:编写迷宫文件   U2:导入迷宫文件    U3:设置计时器

问题2(4分)

U1、U2与建立迷宫用例是泛化关系,U3与操作机器人是包含关系

问题3(8分)

C1机器人(Robos)    C2 计时器(Timer)  

C3小精灵(PacMan)   C4幽灵(Ghost)     (C3与C4可互换)

C5 传感器  C6 前向传感器(FrontSensor)  C7近距离传感器(ProxiSesor)(C6与C7可互换)

C8 迷宫(Maze)

试题四(15分)

问题1 (8分)

(1) d[0][j]=j    (2)str1[i-1]==str2[j-1]     (3)d[i-1][i-1]     (4)d[len1][len2]

问题2 (4分)

(5)动态规划法    (6)O(m*n)

问题3 (3分)

(7)4

试题五(10分)

(1) virtual void Draw(){ }

(2) Piece*

(3) Piece *

(4) piece->Draw()

(5) piece->Draw()

试题六(10分)

(1)public abstract void draw( )

(2)Piece

(3)Piece

(4)piece.draw( )

(5)piece.draw( )

  • 71
    点赞
  • 314
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
### 回答1: 2020下半年软件设计师下午csdn是一套涵盖多个领域的考试目。软件设计师是一项高级职业,职责包括独立或团队开发软件,设计技术方案,优化系统性能等。考试的目的是考察考生在工作中所需要的各种技能和能力。下面将从不同的领域来介绍试内容: 一、计算机组成原理方面,试涉及到计算机原理、算法、编程语言等高深技术,要求考生具有扎实的理论知识和实践经验。 二、操作系统方面,试涉及到操作系统的原理、结构、进程管理、调度算法等,考察考生对操作系统的理解和应用能力。 三、数据库方面,试要求掌握数据库的基本原理,熟练使用SQL语言操作数据库,能够设计关系型数据库。 四、软件工程方面,试要求考生掌握软件开发的流程、方法和工具,有一定的项目管理经验。 五、网络通信方面,试涉及到TCP/IP协议、路由技术、网络安全等知识,考核考生网络通信方面的能力。 总之,2020下半年软件设计师下午csdn要求考生具备深厚的计算机基础和实践经验,能够通过理论知识和实践应用展现综合能力,具有独立思考和解决问的能力,并能够在职业生涯中不断学习和进步。 ### 回答2: 2020下半年软件设计师下午csdn是一项重要的考试,其覆盖了软件设计涉及的多个领域,如软件工程、数据库等。 该考试旨在评估考生的专业知识、技能和应用能力,以确保其能够开发出稳定、高效和安全的软件解决方案。 考试包含两部分,分别为单项选择和主观。单项选择主要测试考生对基础理论的掌握程度,如编程语言、数据库知识等。主观则要求考生应用所学知识,完成具体的软件设计和开发任务。考试难度适中,具有一定的挑战性,需要考生具备扎实的基础知识和实践经验。 考生应该积极备考,在考试前充分了解型和考试重点,以提高自己的答能力和效率。同时,平常尽量积累实操经验,不断深入学习软件设计领域,提高自己的专业素养。 总之,2020下半年软件设计师下午csdn是一个具有重要意义的考试,通过认真备考和深入学习,考生可以积极应对挑战,取得理想的成绩。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

任铄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值