2016 年 上 半 年 软 件 设 计 师 考 试 真 题 ( 下 午 题 ) 下 午 试 题 试 题 一 ( 共 15 分 ) 阅 读 下 列 说 明 和 图, 回 答 问 题 1 至 问 题 4, 将 解 答 填 入 答 题 纸 的 对 应 栏 内 说 明 某 会 议 中 心 提 供 举 办 会 议 的 场 地 设 施 和 各 种 设 备, 供 公 司 与 各 类 组 织 机 构 租 用 场 地 包 括 一 个 大 型 报 告 厅 一 个 小 型 报 告 厅 以 及 诸 多 会 议 室 这 些 报 告 厅 和 会 议 室 可 提 供 的 设 备 有 投 影 仪 白 板 视 频 播 放 / 回 放 设 备 计 算 机 等 为 了 加 强 管 理, 该 中 心 欲 开 发 一 会 议 预 订 系 统, 系 统 的 主 要 功 能 如 下 (1) 检 查 可 用 性 客 户 提 交 预 订 请 求 后, 检 查 预 订 表, 判 定 所 申 请 的 场 地 是 否 在 申 请 日 期 内 可 用 ; 如 果 不 可 用, 返 回 不 可 用 信 息 (2) 临 时 预 订 会 议 中 心 管 理 员 收 到 客 户 预 定 请 求 的 通 知 之 后, 提 交 确 认 系 统 生 成 新 临 时 预 订 存 入 预 订 表, 并 对 新 客 户 创 建 一 条 客 户 信 息 记 录 加 以 保 存 根 据 客 户 记 录 给 客 户 发 送 临 时 预 订 确 认 信 息 和 支 付 定 金 要 求 (3) 分 配 设 施 与 设 备 根 据 临 时 预 订 或 变 更 预 定 的 设 备 和 设 施 需 求, 分 配 所 需 设 备 ( 均 能 满 足 用 户 要 求 ) 和 设 施, 更 新 相 应 的 表 和 预 订 表 (4) 确 认 预 订 管 理 员 收 到 客 户 支 付 定 金 的 通 知 后, 检 查 确 认, 更 新 预 订 表, 根 据 客 户 记 录 给 客 户 发 送 预 订 确 认 信 息 (5) 变 更 预 订 客 户 还 可 以 在 支 付 余 款 前 提 交 变 更 预 订 请 求, 对 变 更 的 预 订 请 求 检 查 可 用 性, 如 果 可 用, 分 配 设 施 和 设 各 ; 如 果 不 可 用, 返 回 不 可 用 信 息 管 理 员 确 认 变 更 后, 根 据 客 户 记 录 给 客 户 发 送 确 认 信 息
(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检 查 确 认, 更 新 预 订 表 中 的 已 支 付 余 款 信 息 现 采 用 结 构 化 方 法 对 会 议 预 定 系 统 进 行 分 析 与 设 计, 获 得 如 图 1-1 所 示 的 上 下 文 数 据 流 图 和 图 1-2 所 示 的 0 层 数 据 流 图 ( 不 完 整 )
问 题 1 (2 分 ) 使 用 说 明 中 的 词 语, 给 出 图 1-1 中 的 实 体 E1~E2 的 名 称 问 题 2 (4 分 ) 使 用 说 明 中 的 词 语, 给 出 图 1-2 中 的 数 据 存 储 D1~D4 的 名 称 问 题 3 (6 分 ) 根 据 说 明 和 图 中 术 语, 补 充 图 1-2 之 中 缺 失 的 数 据 流 及 其 起 点 和 终 点 问 题 4 (3 分 )
如 果 发 送 给 客 户 的 确 认 信 息 是 通 过 Email 系 统 向 客 户 信 息 中 的 电 子 邮 件 地 址 进 行 发 送 的, 那 么 需 要 对 图 1-1 和 1-2 进 行 哪 些 修 改? 用 150 字 以 内 文 字 加 以 说 明 试 题 二 ( 共 15 分 ) 阅 读 下 列 说 明, 回 答 问 题 1 至 问 题 3; 将 解 答 填 入 答 题 纸 的 对 应 栏 内 说 明 某 销 售 公 司 当 前 的 销 售 业 务 为 商 城 实 体 店 销 售 现 该 公 司 拟 开 展 网 络 销 售 业 务, 需 要 开 发 一 个 信 息 化 管 理 系 统 请 根 据 公 司 现 有 业 务 及 需 求 完 成 该 系 统 的 数 据 库 设 计 需 求 描 述 (1) 记 录 公 司 所 有 员 工 的 信 息 员 工 信 息 包 括 工 号 身 份 证 号 姓 名 性 别 出 生 日 期 和 电 话, 并 只 登 记 一 部 电 话 (2) 记 录 所 有 商 品 的 信 息 商 品 信 息 包 括 商 品 名 称 生 产 厂 家 销 售 价 格 和 商 品 介 绍 系 统 内 部 用 商 品 条 码 唯 一 区 别 每 种 商 品 (3) 记 录 所 有 顾 客 的 信 息 顾 客 信 息 包 括 顾 客 姓 名 身 份 证 号 登 录 名 登 录 密 码 和 电 话 号 码 一 位 顾 客 只 能 提 供 一 个 电 话 号 码 系 统 自 动 生 成 唯 一 的 顾 客 编 号 (4) 顾 客 登 录 系 统 之 后, 在 网 上 商 城 购 买 商 品 顾 客 可 将 选 购 的 商 品 置 入 虚 拟 的 购 物 车 内, 购 物 车 可 长 期 存 放 顾 客 选 购 的 所 有 商 品 顾 客 可 在 购 物 车 内 选 择 商 品 修 改 商 品 数 量 后 生 成 网 购 订 单 订 单 生 成 后, 由 顾 客 选 择 系 统 提 供 的 备 选 第 三 方 支 付 平 台 进 行 电 子 支 付, 支 付 成 功 后 系 统 需 要 记 录 唯 一 的 支 付 凭 证 编 号, 然 后 由 商 城 根 据 订 单 进 行 线 下 配 送 (5) 所 有 的 配 送 商 品 均 由 仓 库 统 一 出 库 为 方 便 顾 客, 允 许 每 位 顾 客 在 系 统 中 提 供 多 组 收 货 地 址 收 货 人 及 联 系 电 话 一 份 订 单 所 含 的 多 个 商 品 可 能 由 多 名 分 检 员 根 据 商 品 所 在
仓 库 信 息 从 仓 库 中 进 行 分 拣 操 作, 分 拣 后 的 商 品 交 由 配 送 员 根 据 配 送 单 上 的 收 货 地 址 进 行 配 送 (6) 新 设 计 的 系 统 要 求 记 录 实 体 店 的 每 笔 销 售 信 息, 包 括 营 业 员 顾 客 所 售 商 品 及 其 数 量 概 念 模 型 设 计 根 据 需 求 阶 段 收 集 的 信 息, 设 计 的 实 体 联 系 图 ( 不 完 整 ) 如 图 2-1 所 示 逻 辑 结 构 设 计 根 据 概 念 模 型 设 计 阶 段 完 成 的 实 体 联 系 图, 得 出 如 下 关 系 模 式 ( 不 完 整 ): 员 工 ( 工 号, 身 份 证 号, 姓 名, 性 别, 出 生 日 期, 电 话 ) 商 品 ( 商 品 条 码, 商 品 名 称, 生 产 厂 家, 销 售 价 格, 商 品 介 绍, (a) ) 顾 客 ( 顾 客 编 号, 姓 名, 身 份 证 号, 登 录 名, 登 录 密 码, 电 话 ) 收 货 地 点 ( 收 货 ID, 顾 客 编 号, 收 货 地 址, 收 货 人, 联 系 电 话 ) 购 物 车 ( 顾 客 编 号, 商 品 条 码, 商 品 数 量 )
订 单 ( 订 单 ID, 顾 客 编 号, 商 品 条 码, 商 品 数 量, (b) ) 分 检 ( 分 拣 ID, 分 拣 员 工 号, (c), 分 拣 时 间 ) 配 送 ( 配 送 ID, 分 拣 ID, 配 送 员 工 号, 收 货 ID, 配 送 时 间, 签 收 时 间, 签 收 快 照 ) 销 售 ( 销 售 ID, 营 业 员 工 号, 顾 客 编 号, 商 品 条 码, 商 品 数 量 ) 问 题 1 (4 分 ) 补 充 图 2-1 中 的 配 送 联 系 所 关 联 的 对 象 及 联 系 类 型 问 题 2 (6 分 ) 补 充 逻 辑 结 构 设 计 中 的 (a) (b) 和 (c) 三 处 空 缺 问 题 3 (5 分 ) 对 于 实 体 店 销 售, 若 要 增 加 送 货 上 门 服 务, 由 营 业 员 在 系 统 中 下 订 单, 与 网 购 的 订 单 进 行 后 续 的 统 一 管 理 请 根 据 该 需 求, 对 图 2-1 进 行 补 充, 并 修 改 订 单 关 系 模 式 试 题 三 ( 共 15 分 ) 阅 读 下 列 说 明 和 图, 回 答 问 题 1 至 问 题 3, 将 解 答 填 入 答 题 纸 的 对 应 栏 内 说 明 某 软 件 公 司 欲 设 计 实 现 一 个 虚 拟 世 界 仿 真 系 统 系 统 中 的 虚 拟 世 界 用 于 模 拟 现 实 世 界 中 的 不 同 环 境 ( 由 用 户 设 置 并 创 建 ), 用 户 通 过 操 作 仿 真 系 统 中 的 1~2 个 机 器 人 来 探 索 虚 拟 世 界 机 器 人 维 护 着 两 个 变 量 b1 和 b2, 用 来 保 存 从 虚 拟 世 界 中 读 取 的 字 符 该 系 统 的 主 要 功 能 描 述 如 下 : (1) 机 器 人 探 索 虚 拟 世 界 (Run Robots) 用 户 使 用 编 辑 器 (Editor) 编 写 文 件 以 设 置 想 要 模 拟 的 环 境, 将 文 件 导 入 系 统 (Load File) 从 而 在 仿 真 系 统 中 建 立 虚 拟 世 界 (Setup
World) 机 器 人 在 虚 拟 世 界 中 的 行 为 也 在 文 件 中 进 行 定 义, 建 立 机 器 人 的 探 索 行 为 程 序 (Setup Program) 机 器 人 在 虚 拟 世 界 中 探 索 时 (Run Program), 有 2 种 运 行 模 式 : 1 自 动 控 制 (Run): 事 先 编 排 好 机 器 人 的 动 作 序 列 ( 指 令 (Instruction)), 执 行 指 令, 使 机 器 人 可 以 连 续 动 作 若 干 条 指 令 构 成 机 器 人 的 指 令 集 (Instruction Set) 2 单 步 控 制 (Step): 自 动 控 制 方 式 的 一 种 特 殊 形 式, 只 执 行 指 定 指 令 中 的 一 个 动 作 (2) 手 动 控 制 机 器 人 (Manipulate Robots) 选 定 1 个 机 器 人 后 (Select Robot), 可 以 采 用 手 动 方 式 控 制 它 手 动 控 制 有 4 种 方 式 : 1Move: 机 器 人 朝 着 正 前 方 移 动 一 个 交 叉 点 2Left: 机 器 人 原 地 沿 逆 时 针 方 向 旋 转 90 度 3Read: 机 器 人 读 取 其 所 在 位 置 的 字 符, 并 将 这 个 字 符 的 值 赋 给 b1; 如 果 这 个 位 置 上 没 有 字 符, 则 不 改 变 b1 的 当 前 值 4Write: 将 b1 中 的 字 符 写 入 机 器 人 当 前 所 在 的 位 置, 如 果 这 个 位 置 上 已 经 有 字 符, 该 字 符 的 值 将 会 被 b1 的 值 替 代 如 果 这 时 b1 没 有 值, 即 在 执 行 Write 动 作 之 前 没 有 执 行 过 任 何 Read 动 作, 那 么 需 要 提 示 用 户 相 应 的 错 误 信 息 (Show Errors) 手 动 控 制 与 单 步 控 制 的 区 别 在 于, 单 步 控 制 时 执 行 的 是 指 令 中 的 动 作, 只 有 一 种 控 制 方 式, 即 执 行 下 个 动 作 ; 而 手 动 控 制 时 有 4 种 动 作 现 采 用 面 向 对 象 方 法 设 计 并 实 现 该 仿 真 系 统, 得 到 如 图 3-1 所 示 的 用 例 图 和 图 3-2 所 示 的 初 始 类 图 图 3-2 中 的 类 Interpreter 和 Parser 用 于 解 析 描 述 虚 拟 世 界 的 文 件 以 及 机 器 人 行 为 文 件 中 的 指 令 集
问 题 1 (6 分 ) 根 据 说 明 中 的 描 述, 给 出 图 3-1 中 U1~U6 所 对 应 的 用 例 名 问 题 2 (4 分 )
图 3-1 中 用 例 U1~U6 分 别 与 哪 个 ( 哪 些 ) 用 例 之 间 有 关 系, 是 何 种 关 系? 问 题 3 (5 分 ) 根 据 说 明 中 的 描 述, 给 出 图 3-2 中 C1~C5 所 对 应 的 类 名 试 题 四 ( 共 15 分 ) 阅 读 下 列 说 明 和 C 代 码, 回 答 问 题 1 至 问 题 3, 将 解 答 写 在 答 题 纸 的 对 应 栏 内 说 明 在 一 块 电 路 板 的 上 下 两 端 分 别 有 n 个 接 线 柱 根 据 电 路 设 计, 用 (i,π(i)) 表 示 将 上 端 接 线 柱 i 与 下 端 接 线 柱 π(i) 相 连, 称 其 为 该 电 路 板 上 的 第 i 条 连 线 如 图 4-1 所 示 的 π(i) 排 列 为 {8,7,4,2,5,1,9,3,10,6 对 于 任 何 1 i<j n, 第 i 条 连 线 和 第 j 条 连 线 相 交 的 充 要 条 件 是 π(i)> π(j) 在 制 作 电 路 板 时, 要 求 将 这 n 条 连 线 分 布 到 若 干 绝 缘 层 上, 在 同 一 层 上 的 连 线 不 相 交 现 在 要 确 定 将 哪 些 连 线 安 排 在 一 层 上, 使 得 该 层 上 有 尽 可 能 多 的 连 线, 即 确 定 连 线 集 Nets={(i,π(i)),1 i n 的 最 大 不 相 交 子 集 分 析 问 题 记 N(i,j)={t (t, π (t)) Nets,t i, π (t) j N(i,j) 的 最 大 不 相 交 子 集 为 MNS(i,j), size(i,j)= MNS(i,j)
经 分 析, 该 问 题 具 有 最 优 子 结 构 性 质 对 规 模 为 n 的 电 路 布 线 问 题, 可 以 构 造 如 下 递 归 式 : C 代 码 下 面 是 算 法 的 C 语 言 实 现 (1) 变 量 说 明 size[i][j]: 上 下 端 分 别 有 i 个 和 j 个 接 线 柱 的 电 路 板 的 第 一 层 最 大 不 相 交 连 接 数 pi[i]: π(i), 下 标 从 1 开 始 (2)C 程 序 #include "stdlib.h" #include <stdio.h> #define N 10 /* 问 题 规 模 */ Int m=0; /* 牢 记 录 最 大 连 接 集 合 中 的 接 线 柱 */ Void maxnum(int pi[],int size[n+1][n+1],int n) {/* 求 最 大 不 相 交 连 接 数 */ int i, j; for(j=0; j < pi[l]; j++) size[l][j] = 0; /* 当 j<π(1) 时 */ for(j=pi[i];j<=n;j++) (1) ; /* 当 j>=π(1) 时 */ for(i=2; i < n; i++) { for(j=0; j < pi[l]; j++) (2) ; /* 当 j<pi[i] 时 */
for(j=pi[i];j<=n;j++) {/* 当 j>=c[i] 时, 考 虑 两 种 情 况 */ size[i][j]=size[i-l][j]>=size[i-l][pi[i]-l]+1?size[i-l][j]:size[i-l][pi[i]-l]+l; /* 最 大 连 接 数 */ size[n][n]=size[n-l][n]>=size[n-l][pi[n]-l]+1? size[n-l][n]:size[n-l][pi[n]-l]+l; /* 构 造 最 大 不 相 交 连 接 集 合,net[i] 表 示 最 大 不 相 交 子 集 中 第 i 条 连 线 的 上 端 接 线 柱 的 序 号 */ void constructset(int pi[],int size[n+1][n+1],int n,int net[n]){ int i,j=n; m=0; for(i=n;i>1;i--) { /* 从 后 往 前 */ if(size[i][j]!=size[i-l][j]){ /*(i,pi[i]) 是 最 大 不 相 交 子 集 的 一 条 连 线 */ (3) ; /* 将 i 记 录 到 数 组 net 中, 连 接 线 数 自 增 1*/ j= pi[i]-1; /* 更 新 扩 展 连 线 柱 区 间 */ if(j>=pi[l]) net[m++]=l; /* 当 i=1 时 */ 问 题 1 (6 分 )
根 据 以 上 说 明 和 C 代 码, 填 充 C 代 码 中 的 空 (1)~(3) 问 题 2 (6 分 ) 根 据 题 干 说 明 和 以 上 C 代 码, 算 法 采 用 了 (4) 算 法 设 计 策 略 函 数 maxnum 和 constructset 的 时 间 复 杂 度 分 别 为 (5) 和 (6) ( 用 O 表 示 ) 问 题 3 (3 分 ) 若 连 接 排 列 为 {8,7,4,2,5,1,9,3,10,6, 即 如 图 4-1 所 示, 则 最 大 不 相 交 连 接 数 为 (7), 包 含 的 连 线 为 (8) ( 用 (i,π(i)) 的 形 式 给 出 ) 试 题 五 ( 共 15 分 ) 阅 读 下 列 说 明 和 C++ 代 码, 将 应 填 入 (n) 处 的 字 句 写 在 答 题 纸 的 对 应 栏 内 说 明 某 软 件 系 统 中, 已 设 计 并 实 现 了 用 于 显 示 地 址 信 息 的 类 Address( 如 图 5-1 所 示 ), 现 要 求 提 供 基 于 Dutch 语 言 的 地 址 信 息 显 示 接 口 为 了 实 现 该 要 求 并 考 虑 到 以 后 可 能 还 会 出 现 新 的 语 言 的 接 口, 决 定 采 用 适 配 器 (Adapter) 模 式 实 现 该 要 求, 得 到 如 图 5-1 所 示 的 类 图
C++ 代 码 #include <iostream> using namespace std; class Address{ public: void stree() { /* 实 现 代 码 省 略 */ void zip() { /* 实 现 代 码 省 略 */ void city() { /* 实 现 代 码 省 略 */ 其 他 成 员 省 略 ; class DutchAddress { public: virtual void straat()=0; virtual void postcode()=0; virtual void plaats()=0; // 其 他 成 员 省 略 ; class DutchAddressAdapter : public DutchAddress {
private: (1) ; public: DutchAddressAdapter(Address *addr) { address = addr; void straat() { (2) ; void postcode(){ (3) ; void plaat(){ (4) ; // 其 他 成 员 省 略 ; void testdutch(dutchaddress *addr){ addr->straat(); addr->postcode();
addr->plaats(); int main(){ Address*addr = new Address(); (5) ; Cout<< "\n The DutchAddress\n"<< endl; testdutch(addradapter); retum 0; 试 题 六 ( 共 15 分 ) 阅 读 下 列 说 明 和 Java 代 码, 将 应 填 入 (n) 处 的 字 句 写 在 答 题 纸 的 对 应 栏 内 说 明 某 软 件 系 统 中, 已 设 计 并 实 现 了 用 于 显 示 地 址 信 息 的 类 Address( 如 图 6-1 所 示 ), 现 要 求 提 供 基 于 Dutch 语 言 的 地 址 信 息 显 示 接 口 为 了 实 现 该 要 求 并 考 虑 到 以 后 可 能 还 会 出 现 新 的 语 言 的 接 口, 决 定 采 用 适 配 器 (Adapter) 模 式 实 现 该 要 求, 得 到 如 图 6-1 所 示 的 类 图
Java 代 码 import java.util.*; Class Address{ public void street() { // 实 现 代 码 省 略 public void zip() { // 实 现 代 码 省 略 public void city() { // 实 现 代 码 省 略 其 他 成 员 省 略 class DutchAddress{ public void straat() { // 实 现 代 码 省 略 public void postcode() { // 实 现 代 码 省 略 public void plaats() { // 实 现 代 码 省 略 // 其 他 成 员 省 略
class DutchAddressAdapter extends DutchAddress { private (1) ; public DutchAddressAdapter (Address addr){ address= addr; public void straat() { (2) ; public void postcode() { (3) ; public void plaats(){ (4) ; // 其 他 成 员 省 略
class Test { public static void main(string[] args) { Address addr= new Address(); (5) ; System.out.println("\n The DutchAddress\n"); testdutch(addradapter); Static void testdutch(dutchaddressaddr){ addr.straat(); addr.postcode(); Addr.plaats();