2019年上半年软件设计师下午真题试题(案例分析)及答案
目录
1.学生跟踪系统的数据流图
2.创业项目信息系统的数据库设计
3.书籍销售系统的类图
4.n皇后问题
5.汽车竞速类游戏(Java)
1.学生跟踪系统的数据流图
阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
某学校欲开发一学生跟踪系统,以便更自动化、更全面地对学生在校情况(到课情况和健康状态等)进行管理和追踪,使家长能及时了解子女的到课情况和健康状态,并在有健康问题时及时与医护机构对接。该系统的主要功能是:
(1)采集学生状态。通过学生卡传感器,采集学生心率、体温(摄氏度)等健康指标及其所在位置等信息并记录。每张学生卡有唯一的标识(ID)与一个学生对应。
(2)健康状态告警。在学生健康状态出问题时,系统向班主任、家长和医护机构健康服务系统发出健康状态警告,由医护机构健康服务系统通知相关医生进行处理。
(3)到课检查。综合比对学生状态、课表以及所处校园场所之间的信息对学生到课情况进行判定。对旷课学生,向其家长和班主任发送旷课警告。
(4)汇总在校情况。定期汇总在校情况,并将报告发送给家长和班主任。
(5)家长注册。家长注册使用该系统,指定自己子女,存入家长信息,待审核。
(6)基础信息管理。学校管理人员对学生及其所用学生卡和班主任、课表(班级、上课时间及场所等)、校园场所(名称和所在位置区域)等基础信息进行管理;对家长注册申请进行审核,更新家长状态,将家长ID加入学生信息记录中使家长与其子女进行关联,向家长发送注册结果。一个学生至少有一个家长,可以有多个家长。课表信息包括班级、班主任、时间和位置等。
现采用结构化方法对学生跟踪系统进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。
问题:1.1 【问题1】(5分)
使用说明中的词语,给出图1-1中的实体E1〜E5的名称。
E1:学生
E2:学校管理人员
E3:班主任
E4:家长
E5:医护机构健康服务系统
问题:1.2 【问题2】(4分)
使用说明中的词语,给出图1-2中的数据存储D1〜D4的名称。
D1:学生状态记录表
D2:学生信息表
D3:校园场所记录表
D4:课表信息记录
问题:1.3 【问题3】(3分)
根据说明和图中术语,补充图1-2中缺失的数据流及其起点和终点(三条即可)。
数据流 |
起点 |
终点 |
课表信息 |
D4或 课表 |
P3或 到课检查 |
场所信息 |
D3或 校园场所 |
P3或 到课检查 |
家长信息 |
D5或 家长 |
P3或 到课检查 |
课表信息 |
D4或 课表 |
P4或 汇总在校情况 |
场所信息 |
D3或 校园场所 |
P4或 汇总在校情况 |
家长信息 |
D5或 家长 |
P4或 汇总在校情况 |
家长ID |
P6或 基础信息维护 |
D2或 学生 |
家长注册申请 |
P5或 家长注册 |
P6或 基础信息管理 |
(注:数据流没有顺序要求,按题目要求写出其中3条)
问题:1.4 【问题4】(3分)
根据说明中的术语,说明图1-1中数据流“学生状态”和“学生信息”的组成。
学生状态=学生卡ID+心率+体温+位置+时间
学生信息=学生ID+学生卡ID+1{家长ID}*+班主任ID+班级
2.创业项目信息系统的数据库设计
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某创业孵化基地管理若干孵化公司和创业公司,为规范管理创业项目投资业务,需要开发一个信息系统。请根据下述需求描述完成该系统的数据库设计。
【需求描述】
(1)记录孵化公司和创业公司的信息。孵化公司信息包括公司代码、公司名称、法人代表名称、注册地址和一个电话;创业公司信息包括公司代码、公司名称和一个电话。孵化公司和创业公司的公司代码编码不同。
(2)统一管理孵化公司和创业公司的员工。员工信息包括工号、身份证号、姓名、性别、所属公司代码和一个手机号,工号唯一标识每位员工。
(3)记录投资方信息。投资方信息包括投资方编号、投资方名称和一个电话。
(4)投资方和创业公司之间依靠孵化公司牵线建立创业项目合作关系,具体实施由孵化公司的一位员工负责协调投资方和创业公司的一个创业项目。一个创业项目只属于一个创业公司,但可以接受若干投资方的投资。创业项目信息包括项目编号、创业公司代码、投资方编号和孵化公司员工工号。
【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图(不完整)如图2-1所示。
【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):
孵化公司(公司代码,公司名称,法人代表名称,注册地址,电话)
创业公司(公司代码,公司名称,电话)
员工(工号,身份证号,姓名,性别,(a),手机号)
投资方(投资方编号、投资方名称,电话)
项目(项目编号,创业公司代码,(b),孵化公司员工工号)
问题:2.1 【问题1】(5分)
根据问题描述,补充图2-1的实体联系图。
问题:2.2 【问题2】(4分)
补充逻辑结构设计结果中的(a)、(b)两处空缺及完整性约束关系。
(a)所属公司代码
(b)投资方编号
完整性约束关系
主键 |
外键 |
|
员工 |
工号 |
所属公司代码 |
项目 |
(项目编号,投资方编号) |
投资方编号(其它已给) |
员工-外键:所属公司代码
项目-主键:(项目编号、投资方编号)组合主键
项目-外键:投资方编号,题干已给出外键创业公司编号、孵化公司员工工号
问题:2.3 【问题3】(6分)
若创业项目的信息还需要包括投资额和投资时间,那么:
(1)是否需要增加新的实体来存储投资额和投资时间?
不需要
(2)如果增加新的实体,请给出新实体的关系模式,并对图2-1进行补充。如果不需要增加新的实体,请将“投资额”和“投资时间”两个属性补充连线到图2-1合适的对象上,并对变化的关系模式进行修改 。
关系模式:项目(项目编号,创业公司代码,投资方编号,孵化公司员工工号,投资额,投资时间)
3.书籍销售系统的类图
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某图书公司欲开发一个基于Web的书籍销售系统,为顾客(Customer)提供在线购买书籍(Books)的功能,同时对公司书籍的库存及销售情况进行管理。系统的主要功能描述如下:
(1)首次使用系统时,顾客需要在系统中注册(Register detail)。顾客填写注册信息表要求的信息,包括姓名(name)、收货地址(address)、电子邮箱(email)等,系统将为其生成一个注册码。
(2)注册成功的顾客可以登录系统在线购买书籍(Buy books)。购买时可以浏览书籍信息,包括书名(title)、作者(author)、内容简介(introduction)等。如果某种书籍的库存量为0,那么顾客无法查询到该书籍的信息。顾客选择所需购买的书籍及购买数量 (quantities),若购买数量超过库存量,提示库存不足;若购买数量小于库存量,系统将显示验证界面,要求顾客输入注册码。注册码验证正确后,自动生成订单(Order),否则, 提示验证错误。如果顾客需要,可以选择打印订单(Print order)。
(3)派送人员(Dispatcher)每天早晨从系统中获取当日的派送列表信息(Produce picklist),按照收货地址派送顾客订购的书籍。
(4)用于销售的书籍由公司的采购人员(Buyer)进行采购(Reorder books)。采购人员每天从系统中获取库存量低于再次订购量的书籍信息,对这些书籍进行再次购买,以保证充足的库存量。新书籍到货时,采购人员向在线销售目录(Catalog)中添加新的书籍信息(Add books)。
(5)采购人员根据书籍的销售情况,对销量较低的书籍设置折扣或促销活动(Promote books)。
(6)当新书籍到货时,仓库管理员(Warehouseman)接收书籍,更新库存(Update stock)。
现采用面向对象方法开发书籍销售系统,得到如图3-1所示的用例图和图3-2所示的初始类图(部分)。
问题:3.1 【问题1】(6分)
根据说明中的描述,给出图3-1中A1〜A3所对应的参与者名称和U1〜U3处所对应的用例名称。
A1:采购人员或Buyer
A2:仓库管理员Warehouseman
A3:派送人员或Dispatcher
U1:注册或Registerdetail
U2:打印订单或Printorder
U3:购买书籍或Buybooks
问题:3.2 【问题2】(6分)
根据说明中的描述,给出图3-1中用例U3的用例描述。(用例描述中必须包括基本事件流和所有的备选事件流)。
U3用例描述:
参与者:顾客。
主要事件流:
1、顾客登录系统;
2、顾客浏览书籍信息;
3、系统检查某种书籍的库存量是否为0;
4、顾客选择所需购买的书籍及购买数量;
5、系统检查库存量是否足够;
6、系统显示验证界面;
7、顾客输入验证码验证;
8、系统自动生成订单;
备选事件流:
3a. 若库存量为0则无法查询到该书籍信息,退回到2;
5a. 若购买数量超过库存量,则提示库存不足,并退回到4;
7a. 若验证错误,则提示验证错误,并退回到6;
8a. 若顾客需要可以选择打印订单。
前置条件:
1、注册成功。
后置条件:
1、购买成功
问题:3.3 【问题3】(3分)
根据说明中的描述,给出图3-2中C1〜C3所对应的类名。
C1:顾客或Customer
C2:订单或Order
C3:书籍或Books
4.n皇后问题
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
n皇后问题描述为:在一个n×n的棋盘上摆放n个皇后,要求任意两个皇后不能冲突,即任意两个皇后不在同一行、同一列或者同一斜线上。
算法的基本思想如下:
将第i个皇后摆放在第i行,i从1开始,每个皇后都从第1列开始尝试。尝试时判断在该列摆放皇后是否与前面的皇后有冲突,如果没有冲突,则在该列摆放皇后,并考虑摆放下一个皇后;如果有冲突,则考虑下一列。如果该行没有合适的位置,回溯到上一个皇后,考虑在原来位置的下一个位置上继续尝试摆放皇后,……,直到找到所有合理摆放方案。
【C代码】
下面是算法的C语言实现。
(1)常量和变量说明
n: 皇后数,棋盘规模为n×n
queen[]: 皇后的摆放位置数组, queen[i]表示第i个皇后的位置, 1≤queen[i]≤n
(2)C程序
#include <stdio.h>
#define n 4
int queen[n+1];void Show(){ /* 输出所有皇后摆放方案 */int i;printf("(");for(i=1;i<=n;i++){printf(" %d",queen[i]);}printf(")\n");
}
int Place(int j){ /* 检查当前列能否放置皇后,不能放返回0,能放返回1 */int i;for(i=1;i<j;i++){ /* 检查与已摆放的皇后是否在同一列或者同一斜线上 */if((1)) ‖ abs(queen[i]-queen[j]) == (j-i)) {return 0;}}
return(2);
}
void Nqueen(int j){int i;for(i=1;i<=n;i++){queen[j] = i;if((3)){if(j == n) { /* 如果所有皇后都摆放好,则输出当前摆放方案 */Show();} else { /* 否则继续摆放下一个皇后 */(4);}}}
}int main(){Nqueen (1);return 0;
}
问题:4.1 【问题1】(8分)
根据题干说明,填充C代码中的空(1)〜(4)。
(1)queen[i]==queen[j]或其等价形式
(2)1
(3)Place(j)或其等价形式
(4)Nqueen(j+1)
问题:4.2 【问题2】(3分)
根据题干说明和C代码,算法采用的设计策略为 (5)。
(5)回溯法
问题:4.3 【问题3】(4分)
当n=4时,有 (6) 种摆放方式,分别为 (7) 。
(6)2
(7)(2413)或(2,4,1,3)
(3142)或(3,1,4,2)
5.汽车竞速类游戏(Java)
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某软件公司欲开发一款汽车竞速类游戏,需要模拟长轮胎和短轮胎急刹车时在路面上留下的不同痕迹,并考虑后续能模拟更多种轮胎急刹车时的痕迹。现采用策略(Strategy)设计模式来实现该需求,所设计的类图如图5-1所示。
【Java 代码】
import java.util.*;
interface BrakeBehavior {public(1);
};class LongWheelBrake implements BrakeBehavior {public void stop() { System.out.println("模拟长轮胎刹车痕迹! "); }
};class ShortWheelBrake implements BrakeBehavior {public void stop() { System.out.println("模拟短轮胎刹车痕迹! "); }
};abstract class Car {protected(2)wheel;public void brake() {(3); }
}:class ShortWheelCar extends Car {public ShortWheelCar(BrakeBehavior behavior) {(4);}
};class StrategyTest{public static void main(String[] args) {BrakeBehavior brake = new ShortWheelBrake();ShortWheelCar car1 = new ShortWheelCar(brake);car1.(5);}
}
问题:5.1 将应填入空白处的字句写在答题纸的对应栏内。
(1)void stop()
(2)BrakeBehavior
(3)wheel.stop()
(4)wheel=behavior
(5)brake()
2019年上半年软件设计师下午真题试题(案例分析)及答案相关推荐
- 2019上半年软件设计师 下午真题-简答题及免费答案(一)
2019上半年软件设计师 下午真题-简答题及免费答案(一) 试题一(15分) 阅读下列说明和图,回答问题1至4,将解答填入答题纸的对应栏内. [说明] 某学校欲开发一学生跟踪系统,以便更自动化.更全面 ...
- 2021年上半年软件设计师下午真题试题(案例分析)及答案
2021年上半年软件设计师上午真题及答案解析 目录 1.停车系统的数据流图 2.社区蔬菜团购网站的数据库设计 3.线上抓药APP的用例图.类图 4.凸多边形 5.层叠菜单(Java) 1.停车系统的数 ...
- 2020年下半年软件设计师下午真题试题(案例分析)及答案
2020年下半年软件设计师上午真题及答案解析 目录 1.工厂智能缺陷检测系统的数据流图 2.M集团业务管理需求的数据库设计 3.房产信息管理系统的用例图 4.希尔排序算法 5.在线支付(Java) 1 ...
- 软件设计师下午题java_2018上半年软件设计师下午真题(三)
● 阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内. [说明] 生成器( Builder)模式的意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. ...
- 2021年上半年软件设计师下午真题及答案解析(三)
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内. [说明] 某中医医院拟开发一套线上抓药APP,允许患者凭借该医院医生开具的处方线上抓药,并提供免费送药上门服务.该系统的主要功能描述 ...
- 2018上半年软件设计师下午真题及答案
(ctrl+鼠标滚动 放大看) 文章整理自百度文库, csdn,对于正确性楼主并没有做验证,如有错误的地方可以指出互相交流.谢谢大家 试题1 ● 阅读下列说明,回答问题1至问题4,将解答填入答题纸的对 ...
- 2018年下半年软件设计师下午真题试题(案例分析)及答案
目录 1.房屋中介信息系统的数据流图 2.员工管理系统的数据库设计 3.社交网络平台的类图 4.最佳配对方案 5.会员积分系统(Java) 1.房屋中介信息系统的数据流图 阅读下列说明和图,回答问题1 ...
- 软考软件设计师下午真题-面向对象的程序设计与实现-生成器设计模式(2018年上半年试题六))Java代码讲解
软考软件设计师下午真题-面向对象的程序设计与实现-生成器设计模式(2018年上半年试题六))代码讲解 说明 Java代码 注释 说明 生成器(Builder)模式的意图是将一个复杂对象的构建与它的表示 ...
- 软件设计师下午真题及参考答案
2019年下半年软件设计师下午试卷真题解析 https://wenku.baidu.com/view/58ed0ed6905f804d2b160b4e767f5acfa0c7837f.html 201 ...
最新文章
- eclipse引入svn插件,并将项目同步到svn
- IDEA及IDEA汉化包
- Javascript非构造函数的继承
- 创建一个类 new 与 不加new 有什么区别?
- Android实现侧滑抽屉菜单,android studio自带的抽屉侧滑菜单怎么设置点击事件?还头一回遇到,汗!...
- 使用ETag识别ajax,如何使用jQuery AJAX请求访问ETag头?
- 算法题目中经典问题(易错点)
- 利用pandas,matplotlib画饼图
- java实现 tf-idf
- 三妈式初音miku_【MMD模型】三妈式初音 Appearance Miku 原版
- python数字字母识别_字符图像识别——数字字母混合
- fastadmin表格操作
- CSS3中rotate的作用
- web前端开发基础知识整理以及前端视频教程
- 40个重要的HTML5面试题及答案
- 基于Java毕业设计新冠疫苗接种预约系统登录源码+系统+mysql+lw文档+部署软件
- 【Azure Data Platform】ETL工具(20)——创建Azure Databricks
- 业财一体化升级设计说明
- 友推集成第三方登录和分享的步骤
- 手淘flexible适配终端方案(一)