题目:阅读下列说明和数据流图,回答问题 1 至问题 4, 将解答填入答题纸的对应栏内。某学校欲开发一学生跟踪系统,以便更自动化、更全面地对学生在校情况 (到课情况和 健康状态等) 进行管理和追踪,使家长能及时了解子女的到课情况和健康状态,并在有健康 问题时及时与医护机构对接。该系统的主要功能是:(1) 采集学生状态。通过学生卡传感器,采集学生心率、体温 (摄氏度) 等健康指标 及其所在位置等信息并记录。每张学生卡有唯一的标识 (ID) 与一个学生对应。(2) 健康状态告警。在学生健康状态出问题时,系统向班主任、家长和医护机构健康 服务系统发出健康状态警告,由医护机构健康服务系统通知相关医生进行处理。(3) 到课检查。综合比对学生状态、课表以及所处校园场所之间的信息对学生到课情 况进行判定。对旷课学生,向其家长和班主任发送旷课警告。(4 ) 汇总在校情况。定期汇总在校情况,并将报告发送给家长和班主任。(5) 家长注册。家长注册使用该系统,指定自己子女,存入家长信息,待审核。(6 ) 基础信息管理。学校管理人员对学生及其所用学生卡和班主任、课表 (班级、上 课时间及场所等)、校园场所 (名称和所在位置区域) 等基础信息进行管理;对家长注册申 请进行审核,更新家长状态,将家长 ID 加入学生信息记录中使家长与其子女进行关联,向 家长发送注册结果。 一个学生至少有一个家长,可以有多个家长。课表信息包括班级、班主 任、时间和位置等。现采用结构化方法对学生跟踪系统进行分析与设计,获得如图 1-1 所示的上下文数据流 图和图 1-2 所示的 0 层数据流图。使用说明中的词语,给出图 1-1 中的实体 E1~E5 的名称。使用说明中的词语,给出图 1-2 中的数据存储 D1~D4 的名称。根据说明和图中术语,补充图 1-2 中缺失的数据流及其起点和终点 (三条即可)。根据说明中的术语,说明图 1-1 中数据流 “学生状态” 和 “学生信息” 的组成。E1:学生卡传感器 E2:管理人员 E3:班主任 E4:家长 E5:医护机构健康服务系统根据说明中的功能描述,E1 是采集学生状态的数据源,对应 “学生卡传感器”;E2 提交家长注册申请,对应 “管理人员”;E3 接收旷课警告、在校情况报告,对应 “班主任”;E4 接收注册结果、旷课警告、在校情况,对应 “家长”;E5 接收健康状态警告,对应 “医护机构健康服务系统”。D1:学生状态记录 D2:学生基础信息 D3:校园场所信息 D4:课表信息D1 存储采集到的学生状态数据,对应 “学生状态记录”;D2 存储学生基础信息,对应 “学生基础信息”;D3 存储校园场所数据,对应 “校园场所信息”;D4 存储课表相关数据,对应 “课表信息”。 | | |
D4 或 课表 | P3 或 到课检查 | 课表信 |
D3 或 校园场所 | P3 或 到课检查 | 场所信息 |
D5 或 家长 | P4 或 汇总在校情况 | 家长信息 |
本问题要求补充缺失的数据流及其起点和终点。对照图1-1 和图1-2 的输入、输出数据流,没有缺少与外部实体之间的数据流。再考查题干中的说明判定是否缺失内部的数据流,不难发现图1-2 中缺失的数据流。加工 P3 到课检查需要综合课表信息、校园场所,所以,有从D4 课表流向 P3 到课检查的数据流“课表信息”、从D3校园场所流向 P3 到课检查的“场所信息”以及从 D5家长流向 P3 到课检查的“家长信息”。加工 P4 汇总在校情况需要综合学生信息、课表信息、场所信息和学生状态信息,需要从学生信息中获取家长ID,根据家长ID获取家长信息,并将报告发送给家长和班主任,所以,流向P4汇总在校的数据流缺少从D4 课表流入的“课表信息”、从D3校园场所流入的“场所信息”和 D5家长流入的“家长信息”。再由说明(6)中“对家长注册申请进行审核”“将家长 ID 加入学生信息记录中使家长与其子女进行关联”不难发现,有从P6基础信息维护流入D2学生的数据流“家长 ID”;从P5家长注册流入的“家长注册申请”。学生状态:学生 ID、心率、体温、所在位置、采集时间学生信息:学生 ID、姓名、班级、班主任、关联的家长 ID 列表根据说明中采集学生状态的描述,学生状态包含学生卡 ID(对应学生 ID)、健康指标(心率、体温)、位置信息;学生信息包含学生基础身份信息、关联的班级班主任、以及关联的家长 ID。题目:阅读下列说明,回答问题 1 至问题 3, 将解答填入答题纸的对应栏内。某创业孵化基地管理若干孵化公司和创业公司,为规范管理创业项目投资业务,需要开发一个信息系统。请根据下述需求描述完成该系统的数据库设计。(1) 记录孵化公司和创业公司的信息。孵化公司信息包括公司代码、公司名称、法人 代表名称、注册地址和一个电话;创业公司信息包括公司代码、公司名称和一个电话。孵化 公司和创业公司的公司代码编码不同。(2) 统一管理孵化公司和创业公司的员工。员工信息包括工号、身份证号、姓名、性 别、所属公司代码和一个手机号,工号唯一标识每位员工。(3) 记录投资方信息。投资方信息包括投资方编号、投资方名称和一个电话。(4) 投资方和创业公司之间依靠孵化公司牵线建立创业项目合作关系,具体实施由孵 化公司的一位员工负责协调投资方和创业公司的一个创业项目。 一个创业项目只属于一个创 业公司,但可以接受若干投资方的投资。创业项目信息包括项目编号、创业公司代码、投资 方编号和孵化公司员工工号。根据需求阶段收集的信息,设计的实体联系图 (不完整) 如图 2-1 所 示 。根据概念模型设计阶段完成的实体联系图,得出如下关系模式 (不完整):孵化公司 (公司代码,公司名称,法人代表名称,注册地址,电话)员 工 (工 号,身份证号,姓名,性别,(a) , 手 机 号 )项 目 (项目编号,创业公司代码(下划虚线) , (b) , 孵化公司员工工号(下划虚线) )补充逻辑结构设计结果中的 (a)、(b) 两处空缺及完整性约束关系。若创业项目的信息还需要包括投资额和投资时间,那么:(1) 是否需要增加新的实体来存储投资额和投资时间?(2 ) 如果增加新的实体,请给出新实体的关系模式,并对图 2-1 进行补充。如果不需 要增加新的实体,请将 “投资额” 和 “投资时间” 两个属性补充连线到图 2-1 合适的对象上, 并对变化的关系模式进行修改。根据需求,员工属于孵化公司或创业公司,因此创业公司与员工之间存在 1:* 的管理联系;创业公司与项目是 1:的拥有联系;投资方与项目是:* 的投资联系;孵化公司的员工与项目是 1:* 的协调联系。完整性约束:所属公司代码参照孵化公司。公司代码或创业公司。公司代码(外键约束),工号为主键完整性约束:创业公司代码参照创业公司。公司代码(外键约束),投资方编号参照投资方。投资方编号(外键约束),孵化公司员工工号参照员工。工号(外键约束),项目编号为主键员工实体需要所属公司代码来关联到对应的孵化公司或创业公司,因此 (a) 为所属公司代码;项目实体需要投资方编号来关联投资方,因此 (b) 为投资方编号,同时需要设置对应的外键约束保证数据完整性。投资额和投资时间是投资方对项目投资的属性,属于多对多联系的属性,因此不需要新增实体,直接添加到投资方与项目的联系上,将原项目关系拆分为项目基本信息和项目投资明细两个关系模式。题目:阅读下列说明和 UML 图,回答问题 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 中 A1~A 3 所对应的参与者名称和 U1~ U3 处所对应的 用例名称。根据说明中的描述,给出图 3-1 中用例 U3 的用例描述。(用例描述中必须包括基本事 件流和所有的备选事件流)。根据说明中的描述,给出图 3-2 中 C1~C3 所对应的类名。本题给出的应用场景是一个基于Web的书籍销售系统。本问题要求补充的是用例图。用例图展现了一组用例、参与者以及它们之间的关系。用例建模是按照业务事件、谁发起事件,以及系统如何响应事件建模系统功能的过程。参与者表示需要与系统交互以交换信息的任何事物。参与者可以是一个用户,可以是外部系统的一个角色,也可以是一个人。从题目的说明中可以很容易发现,该系统中有 4 类与系统交互的角色:顾客、派送人员、采购人员以及仓库管理员。根据说明所描述的每个角色所参与的功能,可以判断出:A1 对应的参与者是采购人员(Buyer)、A2对应的参与者是仓库管理员(Warehouseman)、A3 对应的参与者是派送人员(Dispatcher)。用例是一组相关行为的自动的和手动的步骤序列,其目的是为了完成单个业务任务。下面需要确定与参与者“顾客(Customer)”相关联的用例。根据说明可知,顾客参与或激发的用例包括:注册(Register detail)、在线购买书籍(Buy books)和打印订单(Print Order)。由图3-1 可知,用例U2和U3之间具有扩展关系。为了简化用例使其更要容易理解,通常会提取出复杂的步骤,使其成为独立的用例,这类用例被称为扩展用例。而“打印订单”是“在线购买书籍”中的一部分操作,可以作为独立步骤提取,所以图 3-1 中U2对应的用例为“打印订单”,U3 为“在线购买书籍”,U1为“注册”。基本事件流:
顾客登录系统,浏览书籍信息,选择所需购买的书籍及其数量,进入验证界面,输入注册码,生成订单。(3)顾客要求打印订单信息。
UML的用例图以图形化的方式描述了系统与外部系统和用户的交互。用例描述也用于以文本化的方式描述每个交互步骤的顺序。本题考查的就是用例的文本描述方式。需要进行描述的用例是U3,即“在线购买书籍”。根据说明中的(2),可以很容易得到该用例的交互步骤,这里需要注意的是要区分基本事件流和备选事件流,并且要给出所有的备选事件流。基本事件流为:顾客登录系统,浏览书籍信息,选择所需购买的书籍及其数量,进入验证界面,输入注册码,生成订单。备选事件流一共有3个场景:购买数量超过库存量、验证码错误以及是否需要打印。C1:Customer(顾客) C2:Order(订单) C3:Book(书籍)本问题要求将图 3-2 所示的类图补充完整。首先观察该类图,发现在图中有两个聚集关系(整体-部分)——Catalog与 C3、C2与 OrderedBook。从说明可知,“采购人员向在线销售目录(Catalog)中添加新的书籍信息”,所以Catalog 中包含应该是书籍的信息,因此 C3 应该对应类 Books。同时由类图 3-1 也可以看出,C3 中的属性与“Books”的属性也是一致的。同理,可以推断出C2对应的是类“Order”,C1对应的是类“Customer”。题目:阅读下列说明和 C 代码,回答问题 1 至问题 3, 将解答填入答题纸的对应栏内。n 皇后问题描述为:在一个 n×n 的棋盘上摆放 n 个皇后,要求任意两个皇后不能冲突, 即任意两个皇后不在同一行、同一列或者同一斜线上。将第 i 个皇后摆放在第 i 行 ,i 从 1 开始,每个皇后都从第 1 列开始尝试。尝试时判断在 该列摆放皇后是否与前面的皇后有冲突,如果没有冲突,则在该列摆放皇后,并考虑摆放下 一个皇后;如果有冲突,则考虑下一列。如果该行没有合适的位置,回溯到上一个皇后,考 虑在原来位置的下一个位置上继续尝试摆放皇后…… 直到找到所有合理摆放方案。queen []: 皇后的摆放位置数组, queen [i] 表示第 i 个皇后的位置,1≤ queen [i]≤n#include<stdio.h>#define n 4int queen[n+1];voidShow(){/* 输出所有皇后摆放方案 */ int i: printf("("); for(i= 1; i <= n; i++){ printf("%d",queen[i]); } printf(")\n");}intPlace(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) ;}voidNqueen(int j){ int i; for(i= 1; i <= n; i++){ queen [j]= i; if( (3) ){ if(j== n){ /* 如果所有皇后都摆放好,则输出当前摆放方案*/ Show(); } else {/* 否则继续摆放下一个皇后 */ (4) ; } } }}intmain(){ Nqueen (1); return 0;}
根据题干说明,填充 C 代码中的空 (1)~(4)。根据题干说明和 C 代码,算法采用的设计策略为 (5) 当 n=4 时,有 (6) 种摆放方式,分别为 (7) (1) queen [i] == queen [j](3) Place (j) == 1 或 Place (j)(1) 判断是否在同一列,即已摆放的皇后列号与当前皇后列号相等;(2) 当所有已摆放皇后都不冲突时,返回 1 表示可以放置;(3) 调用 Place 函数检查当前位置是否可以放置皇后;(4) 递归调用 Nqueen 函数摆放下一个皇后。算法采用回溯法的设计策略,当当前位置无法放置时,回退到上一步尝试其他位置,直到找到所有可行解。4 皇后问题有 2 种有效摆放方式,分别是第 1 行皇后在第 2 列、第 2 行在第 4 列、第 3 行在第 1 列、第 4 行在第 3 列;以及第 1 行在第 3 列、第 2 行在第 1 列、第 3 行在第 4 列、第 4 行在第 2 列。题目:阅读下列说明和 C++ 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。某软件公司欲开发一款汽车竞速类游戏,需要模拟长轮胎和短轮胎急刹车时在路面上留 下的不同痕迹,并考虑后续能模拟更多种轮胎急刹车时的痕迹。现采用策略 ( Strategy) 设 计模式来实现该需求,所设计的类图如图 5-1 所示。#include <iostream>using namespace std;class BrakeBehavior {public: (1) ; /* 其余代码省略 */};class LongWheelBrake : public BrakeBehavior {public: voidstop(){ cout <<“模拟长轮胎刹车痕迹!”<< endl; } /* 其余代码省略 */};class ShortWheelBrake : public BrakeBehavior {public: voidstop(){ cout <<"模拟短轮胎刹车痕迹!"<< endl;} /* 其余代码省略 */};class Car {protected: (2) wheel;public: voidbrake(){ (3) ; } /* 其余代码省略 */};class ShortWheelCar : public Car {public: ShortWheelCar(BrakeBehavior* behavior){ (4) ; } /* 其余代码省略*/};intmain(){ BrakeBehavior* brake = new ShortWheelBrake(); ShortWheelCar carl(brake); car1. (5) ; return 0;}
(1) virtual void stop () = 0;(1) 策略模式的抽象策略类需要定义纯虚函数作为统一接口,因此声明为 virtual void stop () = 0;(2) 汽车类需要持有策略类的指针,因此类型为 BrakeBehavior*(3) 汽车类的刹车方法调用策略类的 stop 方法(4) 子类构造函数将传入的策略对象赋值给父类的成员变量题目:阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。某软件公司欲开发一款汽车竞速类游戏,需要模拟长轮胎和短轮胎急刹车时在路面上留 下的不同痕迹,并考虑后续能模拟更多种轮胎急刹车时的痕迹。现采用策略 ( Strategy ) 设 计模式来实现该需求,所设计的类图如图 6-1 所示。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 carl = new ShortWheelCar (brake); car1. (5) ; }}
(4) this.wheel = behavior;(1) Java 接口中定义策略的统一方法,声明为 void stop ();(2) 抽象汽车类持有策略接口的引用,类型为 BrakeBehavior(3) 汽车类的刹车方法调用策略对象的 stop 方法(4) 子类构造函数将传入的策略对象赋值给父类的成员变量・数据流图(DFD)的基本元素:外部实体、加工、数据存储、数据流THE END -
点击下方卡片关注我 点个小赞你必上岸↓↓↓