avatar
童琦杰
May 2, 2023Technology

2020软件设计师下午案例题

第 1 题

某工厂制造企业为了开发软件智能检测以有效提升检测效率,节约人力资源,该系统的主要功能是:
(1)基础信息管理。管理员对检测标准和检测规则等基础信息设置。
(2)检测模型部署。 管理员对常用机器学习方法建立的检测模型分布。
(3)图像采集。实时将检测多样的产品待检测建分存储,包括产品结构,生产时间,图像信号和产品图像。
(4)缺陷检测。根据检测模型和检测质量标准对图像采集所收到的产品检测信息中所有图像进行检测或所有图像检测合格。若一个产品出现一张图像检测不合格,就表示该产品不合格,对不合格产品,其检测结果包括,产品型号和不合格类型。
(5)质量检测。根据监控规则对产品质量进行监控将检测情况展示给检测业务员,若满足条件。向检测业务员发送质量检测,质量检测是发起远程控制部分,检测设备发送控制指令进行处理。
(6)模型监控。在系统中部署的模型、产品的检测信息结合基础信息进行监测分析,将模型运行情况发给监控人员。
现采用结构化方法对智能检测系统,进行分析与设计,获得如图1-1的上下文数据流图和图1-2的数据流图。

图1-1 顶层图

图1-2 0层图

【问题1】(4分)
使用说明中的语句对图1-1中的实体E1~ E4的名称。
【问题2】(3分)
使用说明中的语句对图1-2中的数据存储D1~D3的名称。
【问题3】(5分)
根据注明和图中术语,补齐图1-2中缺失的数据及起点和终点。
【问题4】(3分)
根据说明,采用结构化语言对缺陷检测的加工逻辑进行描述。

答案与解析

  • 试题难度:一般

  • 知识点:数据流图>数据流图

  • 试题答案:

    【问题1】(4分)
    E1:检测设备;E2:管理员;E3:检测业务员;E4:监控人员

    【问题2】(3分)
    注:本题由于部分题干描述不清,可能会存在偏差
    D1:模型文件;D2:产品检测信息文件;D3:基础信息文件

    【问题3】(5分)
    注:本题由于部分题干描述不清,可能会存在偏差

    待检所有图像 ,起点:D2,终点:P3缺陷检测。

    监控规则,起点:D3,终点:P5质量监控

    远程控制指令,期待:E3,终点:P5质量监控【此处根据父图描述,起点为E3,根据题干描述起点为监控设备E1,存在冲突,暂未确认。】
    【问题4】(3分)
    根据说明,采用结构化语言对缺陷检测的加工逻辑进行描述。

    缺陷检测{
    WHILE(接收图像)
    DO{
    检测所收到的所有图像;
    IF(出现一张图像检测不合格)
    THEN{
    返回产品不合格;
    不合格产品检测结果=产品星号+不合格类型;
    } ENDIF
    } ENDDO

  • 试题解析:

    本题试题部分描述不全,答案可能存在偏差和遗漏。

第 2 题

【说明】
M集团拥有多个分公司,为了方便集团公司对各个分公司职员进行有效管理,集团公司决定构建一个信息平台以满足公司各项业务管理需求。
【需求分析】
1、分公司关系模式需要记录的信息包括公司编号、名称、经理号、可联系地址和电话。分公司编号唯一标记分公司关系模式中的每一个元组,每个分公司各有一名经理,负责分公司的管理工作,每个分公司设立仅为本分公司服务的多个业务部,业务部包括:研发部、财务部、采购部、交易部等。
2、业务部关系模式需要记录的信息包括业务部的编号、名称、地址、电话和分公司编号,业务部编号唯一标记分公司关系模式中的每一个元素,每个业务部各有一名主管负责业务部的管理工作,每个业务部有多名职员,每个职员只能来源于一个业务部。
3、职员关系模式需要记录的信息包括职员号、姓名、所属业务部编号、岗位、电话、家庭成员姓名和成员关系。其中职员号唯一标记职员关系,岗位包括:经理、主管、研发员、业务员等。

【关系模式】
分公司(分公司编号、名称、(a)、 联系地址 )
业务部(业务部编号、名称、(b)、 电话)
职员(职员号、姓名、岗位、(c)、 电话、家庭成员姓名、关系)
【概念模式设计】

2-1 实体-联系图

【问题1】(4分)
根据问题描述,补充4个联系,完善图2-1的实体联系图,联系名可用联系1、联系2、联系3和联系4代替 ,联系的类型为1 : 1、1 : n和m: n(或1 : 1、1: *和*:*) 【问题2】(3分)
根据题意将以上关系模式中的空(a) ~ (c)的属性补充完整,并填入对应位置。
【问题3】(4分)
(1)分析分公司关系模式的主建和外键。
(2)分析业务部关系模式的主建和外键。
【问题4】(4分)
在职员关系模式中,假设每个职员有多名家庭成员,那么职员关系模式存在什么问题?应如何解决?

答案与解析

  • 试题难度:一般

  • 知识点:数据库设计>数据库设计

  • 试题答案:

    【问题1】

    【问题2】
    (a)经理号,电话
    (b)地址,分公司编号,主管号
    (c)所属业务部编号
    【问题3】

    【问题4】
    在职员关系中,如果每个职员有多名家庭成员,会重复记录多条职员信息及对应家庭成员,为了区分各条记录,职员关系的主键需要设定为(职员号,家庭成员姓名),会产生数据冗余、插入异常、更新异常、删除异常等问题。
    处理方式:
    对职员关系模式进行拆分,职员1(职员号、姓名、岗位、所属业务部编号,电话);职员2(职员号,家庭成员姓名,关系)。

  • 试题解析:

    【问题1】

    【问题2】
    (a)经理号,电话
    (b)地址,分公司编号,主管号
    (c)所属业务部编号
    【问题3】

    【问题4】
    在职员关系中,如果每个职员有多名家庭成员,会重复记录多条职员信息及对应家庭成员,为了区分各条记录,职员关系的主键需要设定为(职员号,家庭成员姓名),会产生数据冗余、插入异常、更新异常、删除异常等问题。
    处理方式:
    对职员关系模式进行拆分,职员1(职员号、姓名、岗位、所属业务部编号,电话);职员2(职员号,家庭成员姓名,关系)。

第 3 题

【说明】
某房产公司,欲开发一个房产信息管理系统,其主要功能描述如下:
1.公司销售的房产,分为住宅和公寓两类。针对房产,系统存储房产证明,地址,建造年份,建造面积,销售报价,房产照片以及销售状态(在售,售出,停售)等信息。对于公寓,还需存储是否有等信息。
2. 公司雇佣了多名房产经纪,负责销售房产,系统中需要存储房产经纪的基本信息,包括:姓名,家庭住址,联系电话,房产的起止时间等等。一套房产同一时间仅由一名房产经纪负责销售,系统中记录房产经纪负责房产的起始时间和终止时间。
3.系统用户包括房产经纪和系统管理员,用户需经过系统身份验证之后,才能登录系统。房产经纪登录系统之后,可以录入负责销售的房产信息。但需要经过系统管理员的审批授权。
4.系统管理员可以从系统中导出所有房产的信息列表,系统管理员定期将信息和销售的房产,进行归纳,若公司确定不再销售某套房产,系统管理员将房产信息从系统中删除。

现采用面向对象方法开发该系统得到如图3-1所示的图例和3- 2所示的图。

图3-1 用例图

【问题1】(7分)
(1)根据证明中描述,分别给图3-1中A1到A2所对应的名称以及U1到U3所对应的用例名称。
(2)根据证明中描述,分别给图3-1中(a)和(b)用例之间的关系。
【问题2】(6分)
根据证明中描述,分别给图3-2中C1~C6所对应的类名称。
【问题3】(2分)
图3-2中AgentList是一个英文名称 ,用来进一步阐述C1和C6之间的关系 ,根据注明中的描述,绘出AgentList的主要属性。

答案与解析

  • 试题难度:一般

  • 知识点:UML建模>用例图

  • 试题答案:

    【问题1】(7分)
    注:本题试题不完整,部分答案有缺失,部分答案可能存在偏差。
    A1:房产经纪;A2:系统管理员
    U1:审批授权;U2:缺失;U3:删除房产信息
    (a):缺失;(b):<> 【问题2】(6分)
    试题不完整,暂无答案
    【问题3】(2分)
    试题不完整,暂无答案

  • 试题解析:

    【问题1】(7分)
    注:本题试题不完整,部分答案有缺失,部分答案可能存在偏差。
    A1:房产经纪;A2:系统管理员
    U1:审批授权;U2:缺失;U3:删除房产信息
    (a):缺失;(b):<> 【问题2】(6分)
    试题不完整,暂无答案
    【问题3】(2分)
    试题不完整,暂无答案

第 4 题

【说明】
希尔排序算法又称最小增量排序算法,其基本思想是:
步骤1 :构造一个步长序列delta1、delta2…、deltak ,其中delta1=n/2 ,后面的每个delta是前一个的1/2 , deltak=1;

步骤2 :根据步长序列、进行k趟排序;
步骤3 :对第i趟排序,根据对应的步长delta,将等步长位置元素分组,对同一组内元素在原位置上进行直接插入排序。

【C代码】

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

(1)常量和变量说明

data:待排序数组data,长度为n,待排序数据记录在data[0]、data[1]、…、data[n-1]中。

n:数组a中的元素个数。

delta:步长数组。

(2)C程序

#include <stdio.h>

void shellsort(int data[ ], int n){
int *delta,k,i,t,dk,j;
k=n;
delta=(int *)nalloc(sizeof(int)*(n/2));
if(i=0)
do{
( 1 ) ;
delta[i++]=k;
}while ( 2 ) ;
i=0;
while((dk=delta[i])>0){
for(k=delta[i];k<n;++k)
if( ( 3 ) ) {
t=data[k]; for(j=k-dk;j>=0&&t<data[j];j-=dk){
data[j+dk]=data[j]; }/*for*/ ( 4 ) ; //data[j+dk]=t;
}/*if*/ ++i;
}/*while*/ }

【问题1】(8分)
根据说明和c代码,填充c代码中的空(1)~ (4)。
【问题2】(4分)
根据说明和c代码,该算法的时间复杂度(5)O(n2) (小于、等于或大于)。该算法是否稳定(6)(是或否)。
【问题3】(3分)
对数组(15、9、7、8、20、-1、 4)用希尔排序方法进行排序,经过di-趟排后得到的数组为(7)。

答案与解析

  • 试题难度:一般

  • 知识点:数据结构与算法应用>分治法

  • 试题答案:

    【问题1】(8分)
    (1)k=k/2
    (2)k>1
    (3)data[k]<data[k-dt]
    (4)data[j+dk]=t
    【问题2】(4分)
    (5)小于
    (6)否

    【问题3】(3分)
    (7)(4,9,-1,8,20,7,15)

  • 试题解析:

    【问题1】(8分)
    (1)k=k/2
    (2)k>1
    (3)data[k]<data[k-dt]
    (4)data[j+dk]=t
    【问题2】(4分)
    (5)小于
    (6)否

    【问题3】(3分)
    (7)(4,9,-1,8,20,7,15)

第 5 题

阅读下列说明和Java代码,将应填入(n) 处的字句写在答 题纸的对应栏内。
【说明】
在线支付是电子商务的一一个重要环节,不同的电子商务平台提供了不同的支付接口。现在需要整合不同电子商务平台的支付接口,使得客户在不同平台上购物时,不需要关心具体的支付接口。拟采用中介者(Mediator) 设计模式来实现该需求,所设计的类图如图6-1所示。

【Java代码】

答案与解析

  • 试题难度:一般

  • 知识点:面向对象程序设计>Java程序设计

  • 试题答案:

    (1) void buy(double money, WebService service)
    (2) WebServiceMediator
    (3) abstract void buyService(double money)
    (4) mediator.buy(money, this)
    (5) mediator.buy(money, this)

  • 试题解析:

    (1)空是属于接口WebServiceMeditor内的方法,我们可以通过下文的实现类中找到ConcreteServiceMeditor可知缺少了一个buy()方法
    故第一空填写void buy(double money, WebService service);(2)空类WebService中属性的参数类型,Colleague与Mediator之间的关联关系由属性meditor实现,所以第2空应该填写WebServiceMediator;(3)空类WebService中的抽象方法,根据其具体子类可以看到缺少的是buyService方法,书写成 abstract void buyService(double money);(4)空和(5)空具体同事类Amazon、Ebay与中介者的通信,调用中介者之间的支付接口,所以空(4)和(5)都填写mediator.buy(money, this)。

第 6 题

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

在线支付是电子商务的一个重要环节,不同的电子商务平台提供了不同的支付接口。现在需要整合不同电子商务平台的支付接口,使得客户在不同平台上购物时,不需要关心具体的支付接口。拟采用中介者(Mediator) 设计模式来实现该需求,所设计的类图如图5-1所示。

【C++代码】

答案与解析

  • 试题难度:一般

  • 知识点:面向对象程序设计>C++程序设计

  • 试题答案:

    (1) virtual void buy(double money, WebService *service)
    (2) WebServiceMediator *
    (3) virtual void buyService(double money)= 0
    (4) mediator->buy(money, this)
    (5) mediator->buy(money, this)

  • 试题解析:

    (1)空是属于接口WebServiceMeditor内的方法,我们可以通过下文的实现类中找到ConcreteServiceMeditor可知缺少了一个buy()方法
    故第一空填写

virtual void buy(double money, WebService _service) ;(2)空类WebService中属性的参数类型,Colleague与Mediator之间的关联关系由属性meditor实现,所以第2空应该填写WebServiceMediator_;(3)空类WebService中的

virtual 方法,根据其具体子类可以看到缺少的是buyService方法,书写成

virtual void buyService(double money)= 0 ;(4)空和(5)空具体同事类Amazon、Ebay与中介者的通信,调用中介者之间的支付接口,所以空(4)和(5)都填写

mediator->buy(money, this) 。

Copyright @豆萁程序员-技术电子书整理发布 all right reserved,powered by Gitbook最后更新时间: 2022-05-29 21:41:20

© 2015-2022 tongqijie.com 版权所有沪ICP备17000682号