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

目录

1.停车系统的数据流图

2.社区蔬菜团购网站的数据库设计

3.线上抓药APP的用例图、类图

4.凸多边形

5.层叠菜单(Java)


1.停车系统的数据流图

试题一(共15分) 
某停车场运营方为了降低运营成本,减员增效,提供良好的停车体验,欲开发无人值守停车系统,该系统的主要功能是:

1.信息维护。管理人员对车位(总数、空余车位数等)计费规则等基础信息进行设置。

2.会员注册。车主提供手机号、车牌号等信息进行注册,提交充值信息(等级、绑定并授权支付系统进行充值或交费的支付账号)不同级别和充值额度享受不同停车折扣点。

3.车牌识别。当车辆进入停车场时,若有(空余车位数大于1), 自动识别车牌号后进行道闸控制,当车主开车离开停车场时,识别车牌号,计费成功后,请求道闸控制。

4.计费。更新车辆离场时间,根据计费规则计算出停车费用,若车主是会员,提示停车费用:若储存余额够本次停车费用,自动扣费,更新余额,若储值余额不足,自动使用授权缴费账号请求支付系统进行支付,获取支付状态。若非会员临时停车,提示停车费用,车主通过扫描费用信息中的支付码调用支付系统自助交费,获取支付状态。

5.道闸控制。根据道闸控制请求道闸控制系统发送放行指令和接收道闸执行状态。若道闸执行状态为正常放行时,对入场车辆,将车牌号及其入场时间信息存入停车记录,修改空余车位数;对出场车辆更新停车状态,修改空余车位数。当因道闸重置系统出现问题(断网断电或是故障为抬杠等情况),而无法在规定的时间内接收到其返回的执行状态正常放行时,系统向管理人员发送异常告警信息,之后管理人员安排故障排查处理,确保车辆有序出入停车场。

现采用结构化方法对无人值守停车系统进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。

 【问题1】(5分)
使用说明中的词语,给出图1-1中的实体E1-E5的名称。

E1:车辆;E2:车主;E3:支付系统;E4:管理人员;E5:道闸控制系统
【问题2】(3分)
使用说明中的词语,给出图1-2中的数据存储D1-D3的名称。

D1:停车记录表;D2:会员信息表;D3:基础信息表
【问题3】(4分)
根据说明和图中术语,补充图1-2中缺失的数据流及其起点和终点。

序号

名称

起点和终点

1

计费规则信息

D3--P3

2

道闸控制请求

P1--P5

3

更新车位信息

P5-D3

4

更新余额

P3--D2

【问题4】(3分)
根据说明,采用结构化语言对“道闸控制”的加工逻辑进行描述。

“道闸控制”加工过程

IF(道闸执行状态正常)IF(车辆入场) THEN 将车牌号及其入场时间信息存入停车记录,修改空余车位数ELSEIF(车辆出场) THEN 更新停车状态,修改空余车位数ENDIF ELSESIF(未在规定的时间内接收到其返回的执行状态正常放行) THEN 向管理人员发送异常告警信息
ENDIF 

2.社区蔬菜团购网站的数据库设计

试题二(共15分)
阅读下列说明,回答问题1至问题 3,将解答填入答题纸的对应栏内。

【说明】

某社区蔬菜团购网站,为规范商品收发流程,便于查询客户订单情况,需要开发个信息系统。请根据下述需求描述完成该系统的数据库设计。

【需求描述】

(1)记录蔬菜供应商的信息,包括供应商编号、地址和一个电话。

(2)记录社区团购点的信息,包括团购点编号、地址和一个电话。

(3)记录客户信息,包括客户姓名和一个电话。客户可以在不同的社区团购点下订单,不直接与蔬菜供应商发生联系。

(4)记录客户订单信息,包括订单编号、团购点编号客户电话,订单内容和日期。

【概念模型设计】

根据需求阶段收集的信息,设计的实体联系图,如图2-1 所示。

图2-1实体联系图
【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式∶
蔬菜供货商(供货商编号,地址,电话)
社区团购点(团购点编号,地址,电话)
供货(供货商编号,(a))
客户(姓名,客户电话)
订单(订单编号,团购点编号,(b),订单内容,日期)
问题内容∶
【问题1】(6分)
根据问题描述,补充图 1-1 的实体联系图


【问题2】(4分)
补充逻辑结构设计结果中的(a)、(b)两处空缺及完整性约束关系。

(a)团购点编号。主键:供货商编号,团购点编号;外键:供货商编号,团购点编号。

(b)客户电话。主键:订单编号;外键:团购点编号,客户电话。

【问题3】(5分)
若社区蔬菜团购网站还兼有代收快递的业务,请增加新的"快递"实体,并给出客户实体和快递实体之间的"收取'联系,对图1进行补充。"快递"关系模式包括快递编号、客户电话和日期。

3.线上抓药APP的用例图、类图

试题三(共15分)
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。
[说明]
某中医医院拟开发一套线上抓药APP,允许患者凭借该医院医生开具的处方线上抓药,并提供免费送药上门服务。该系统的主要功能描述如下:
(1)注册。患者扫描医院提供的二维码进行注册,注册过程中,患者需提供其病历号,系统根据病历号自动获取患者基本信息。
(2)登录。已注册的患者可以登录系统进行线上抓药,未注册的患者系统拒绝其登陆。
(3)确认处方。患者登录后,可以查看医生开具的所有处方。患者选择需要抓药的处方和数量(需要抓几副药), 同时说明是否需要煎制。选择取药方式:自行到店取药或者送药上门,若选择送药上门,患者需要提供提供收贷人姓名、联系方式和收货地址。系统自动计算本次抓药的费用,患者可以使用微信或支付宝等支付方式支付费用。支付成功之后,处方被发送给药师进行药品配制。


[问题1] (7分)
根据说明中的描述,给出图3-1中A1~ A3所对应的参与者名称和U1 ~U4处所对应的用例名称。

A1:患者;A2:快递人员;A3:药师

U1:确认处方;U2:支付方式;U3:微信支付;U4:支付宝支付(U3、U4可以互换)
[问题2] (5分)
根据说明中的描述,给出图3-2中C1~C5所对应的类名。

C1: 支付方式;C2:微信支付;C3: 支付宝支付;C4:处方;C5: 药品(C2、C3可以互换)

C1:处方;C2:煎制处方;C3:非煎制处方;C4:药品;C5:快递信息(C2、C3可以互换)
[问题3] (3分)
简要解释用例之间的include、extend 和generalize关系的内涵。

include:是一种依赖关系,加了版型<<include>>,两个以上用例有共同功能,可分解到单独用例,其中这个提取出来的公共用例称为抽象用例,形成包含依赖;执行基本用例时,每次都必须调用被包含的用例。

extend :如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种事情,可以断定将这个用例分为一个主用例和一个或多个辅用例进行描述可能更加清晰。

generalize 泛化关系:当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。

4.凸多边形

试题四(共15分)
阅读下列说明和C代码,回答问题1和问题2,将解答填入答题纸的对应栏内。
[说明]
凸多边形是指多边形的任意两点的连线均落在多边形的边界或者内部。相邻的点连线落在多边形边上,称为边,不相邻的点连线落在多边形内部。称为弦。假设任意两点连线上均有权重,凸多边形最优三帮剂分问题定义为:求将凸多边形划分为不相交的三角形集合,且各三角形权重之和最小的剖分方案。每个三角形的权重为三条边权重之和。
假设N个点的凸多边形点编号为V1,V2,……,VN,若在VK处将原凸多边形划分为一个三角V1VkVN,两个子多边形V1,V2,…,Vk和Vk,Vk+1,…VN,得到一个最优的剖分方案,则该最优剖分方案应该包含这两个子凸边形的最优剖分方案。用m[i][j]表示带你Vi-1,Vi,…Vj构成的凸多边形的最优剖分方案的权重,S[i][j]记录剖分该凸多边形的k值。则

其中:

Wj,i-1分别为该三角形三条边的权重。求解凸多边形的最优剖分方案,即求解最小剖分的权重及对应的三角形集。

[C代码]

#include
#define N 6
//凸多边形规模
int m[N+1] [N+1]; //m[i][j]表示多边形Vi-1到Vj最优三角剖分的权值
int S[N+1] [N+1]; //S[i][j]记录多边形Vi-1 到Vj最优三角剖分的k值
int W[N+1] [N+1]; //凸多边形的权重矩阵,在main函数中输入
/*三角形的权重a,b,c,三角形的顶点下标*/
int get_ triangle_weight(int a,int b,int c){return W[a][b]+W[b][c]+W[c][a];
}
/*求解最优值*/
void triangle_partition(){int i,r,k,j;int temp;/*初始化*/for(i=1;i<=N;i++){m[i][i]=0;}/*自底向上计算m,S*/for(r=2;(1);r++){/*r为子问题规模*/ //r<=Nfor(i=1;k<=N-r+1;i++){(2); //int j=i+r-1m[i][j]= m[i][j]+m[i+1][j]+get_triangle_weight(i-1,i,j); /*k=j*/S[i][j]=i;for(k=j+1;k<j;k++){/*计算m[i][j]的最小代价*/temp=m[i][k]+m[k+1][j]+ge_triangle_ weight(i-1,k,j);if((3)){/*判断是否最小值*/ //tempm[i][j]=temp;S[i][j]=k;}}}}
}
/*输出剖分的三角形i,j:凸多边形的起始点下标*/
void print_triangle(int i,int j){if(i==j) return;print_triangle(i,S[i][j]);print_triangle((4)); //s[i][j]+1,jprint(“V%d- -V%d--V%d\n“,i-1,S[i][j],j);
}

[问题1] (8分)

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

(1)r<=N (2)int j=i+r-1 (3)temp<m[i][j] (4)s[i][j]+1,j

[问题2] (7分)

根据说明和C代码,该算法采用的设计策略为(5),算法的时间复杂度为(6),空间复杂度为(7) (用0表示)。

(5)动态规划法        (6)O() (7)O(

5.层叠菜单(Java)

试题六(共15分)
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】层叠菜单是窗口风格的软件系统中经常采用的一种系统功能组织方式。层叠菜单 (如图6-1示例)中包含的可能是一个菜单项(直接对应某个功能),也可能是一个子菜单,现在采用组合(composite)设计模式实现层叠菜单,得到如图6-2所示的类图。

问题内容:

import java.util.*;

import java.util.*;
abstract class MenuComponent{//构成层叠菜单的元素(1) String name;//菜单项或子菜单名称public void printName(){System.out.println(name);}public (2);public abstract boolean removeMenuElement(MenuComponent element);public (3);
}Class Menu extends MenuComponent{public MenuItem(String name){this.name=name;}public boolean addComponent(MenuComponent element){return false;}//(2)public boolean removeComponent(MenuComponent element){return false;}public List<MenuComponent> getElement(){return null;}//(3)
}Class MenuItem extends MenuComponent{public (4);public MenuItem(String name){this.name=name;this.elementList = new ArrayList<MenuComponent>();}public boolean addMenuElement(MenuComponent element){return elementList.add(element);}public boolean removeMenuElement(MenuComponent element){return elementList.remove(element);}public List<MenuComponent> getElement(){return elementList;}
}
Class CompositeTest{public static void main(String[] args){ MenuComponent mainMenu = new Menu("Insert");MenuComponent subMenu = new Menu("Chart");MenuComponent element = new MenuItem("On This Sheet");(5);subMenu.addMenuElement(element);printMenus(mainMenu);}private static void printMenus(MenuComponent ifile){ifile.printName();List<MenuComponent> children = ifile.getElement();if(children==null) return;for(MenuComponent element:children){printMenus(element);}}
}

(1)protected;

(2)abstract boolean addMenuElement( MemuComponent element);

(3)abstract List<MenuComponent> getElement();

(4)Arraylist<MenuComponent> elementList;

(5)mainMenu.addMenuElement(subMenu);

2021年上半年软件设计师下午真题试题(案例分析)及答案相关推荐

  1. 2019上半年软件设计师 下午真题-简答题及免费答案(一)

    2019上半年软件设计师 下午真题-简答题及免费答案(一) 试题一(15分) 阅读下列说明和图,回答问题1至4,将解答填入答题纸的对应栏内. [说明] 某学校欲开发一学生跟踪系统,以便更自动化.更全面 ...

  2. 2021年上半年软件设计师下午真题及答案解析(三)

    阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内. [说明] 某中医医院拟开发一套线上抓药APP,允许患者凭借该医院医生开具的处方线上抓药,并提供免费送药上门服务.该系统的主要功能描述 ...

  3. 2019年上半年软件设计师下午真题试题(案例分析)及答案

    目录 1.学生跟踪系统的数据流图 2.创业项目信息系统的数据库设计 3.书籍销售系统的类图 4.n皇后问题 5.汽车竞速类游戏(Java) 1.学生跟踪系统的数据流图 阅读下列说明和图,回答问题1至问 ...

  4. 2020年下半年软件设计师下午真题试题(案例分析)及答案

    2020年下半年软件设计师上午真题及答案解析 目录 1.工厂智能缺陷检测系统的数据流图 2.M集团业务管理需求的数据库设计 3.房产信息管理系统的用例图 4.希尔排序算法 5.在线支付(Java) 1 ...

  5. 2021年上半年软件设计师上午真题及答案

    综合知识 1.在CPU中,用( )给出将要执行的下一条指令在内存中的地址. A.程序计数器 B.指令寄存器 C.主存地址寄存器 D.状态条件寄存器 信管网参考答案:A 查看解析:www.cnitpm. ...

  6. 2021年上半年软件设计师上午真题及答案解析(二)

    11.通常使用( )为IP数据报文进行加密. A.IPSec B.PP2P C.HTTPS D.TLS 参考答案:A 答案解析: IPSec工作于网络层,为IP数据报文进行加密. PP2P工作于数据链 ...

  7. 2021年上半年软件设计师上午真题及答案解析(六)

    51.如下图如下E-R图中,两个实体R1.R2之间有一个联系E,当E的类型为( )时必须将E转换成-个独立的关系模式? A.1:1 B.1:* C.*:1 D.*:* 参考答案:D 答案解析: E-R ...

  8. 2021年上半年软件设计师上午真题及答案解析(三)

    21.以编译方式翻译C/C++源程序的过程中,( )阶段的主要任务是对各条语句的结构进行合法性分析. A.词法分析 B.语义分析 C.语法分析 D.目标代码生成 参考答案:C 答案解析: 词法分析阶段 ...

  9. 软件设计师下午题java_2018上半年软件设计师下午真题(三)

    ● 阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内. [说明] 生成器( Builder)模式的意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. ...

最新文章

  1. 创业思维 - Qunar的故事
  2. springboot RestTemplate httpclient
  3. Android Stuido启动提示No JVM installation found.Please install a 32-bit JDK....
  4. 高通thermal-engine配置文件格式
  5. 深度学习核心技术精讲100篇(二十九)-基于内容和上下文的音乐推荐
  6. tar:文件打包归档
  7. 主机和虚拟机ping不通的原因
  8. 67.Java垃圾收集机制\对象引用\垃圾对象的判定\垃圾收集算法\标记—清除算法\标记—整理算法\分代收集\垃圾收集器\性能调优
  9. 函数作用域导致的问题
  10. iOS开发Objective-C基础之──多态
  11. python ddos攻击脚本_python版本DDOS攻击脚本
  12. 素数方法(thinking in java)
  13. 【开200数组解决二叉搜索树的建立、遍历】PAT-L3-016. 二叉搜索树的结构——不用链表来搞定二叉搜索树...
  14. leetcode python3 简单题190. Reverse Bits
  15. 苹果微信更新不了最新版本_微信最新版建议更新!还有一个功能彩蛋!
  16. html input 字体颜色_HTML常用标签汇总
  17. 文件被损坏 java_使用PDF.JS实现pdf文件在线预览时,报文件被损坏的错误
  18. H3C简单FTP上传和下载文件
  19. ASP编程实现各家快递公司订单状态查询
  20. 神武手游哪个服务器人最多,神武4端游什么老区人最多

热门文章

  1. 解决宝塔面板Nginx反向代理Cloudflare出现502或403错误
  2. 报错问题解决:net.sf.json.JSONException: There is a cycle in the hierarchy!
  3. linux双网卡网段互通,linux环境中,两个不同网段的机器互通
  4. 哒哒哒哒哒哒,哒哒哒哒哒哒哒哒
  5. short与int型在内存中的存储形式
  6. python tutorial什么意思中文_Python 2.7 Tutorial 中文版
  7. IPM逆透视变换问题(1):Vanish Point
  8. 作业一:我与软件工程相约
  9. 显著目标检测之Cascaded Partial Decoder for Fast and Accurate Salient Object Detection(CPD)
  10. python登录教务系统_记python登陆学校教务系统踩过的坑