<4D F736F F D20D6D02D30312D CFC2C8EDBCFEC9E8BCC6CAA6CFC2CEE7>

Similar documents
<4D F736F F D20D6D02D30332D CFC2B5E7D7D3C9CCCEF1C9E8BCC6CAA6CFC2CEE7CCE2>

程序员-下午题-10下

全国计算机技术与软件专业技术资格 ( 水平 ) 考试 2004 年下半年网络管理员级下午试卷 ( 考试时间 14:00~16:30 共 150 分钟 ) 请按下述要求正确填写答题纸 1. 在答题纸的指定位置填写你所在的省 自治区 直辖市 计划单列市的名称 2. 在答题纸的指定位置填写准考证号 出生年

untitled

新・解きながら学ぶJava

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

<4D F736F F D20C8EDC9E82DCFC2CEE7CCE22D3130C9CF>

FY.DOC

Microsoft Word - 第3章.doc

<4D F736F F D20CDF8B9A42DCFC2CEE7CCE22D3038CFC2>

<4D F736F F D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

Chapter12 Derived Classes

PowerPoint Presentation

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

新版 明解C++入門編

untitled

<4D F736F F D20CDF8B9A42DCFC2CEE7CCE22D3039C9CF>

试题一至试题四是必答题试题一 ( 共 15 分 ) 阅读下列说明和图, 回答问题 1 至问题 3, 将解答填入答题纸的对应栏内 [ 说明 ] 某公司的主要业务是出租图书和唱碟 由于业务需求, 该公司委托软件开发公司 A 开发一套信息管理系统 该系统将记录所有的图书信息 唱碟信息 用户信息 用户租借信

10-下-监理师下午试卷

《大话设计模式》第一章

CC213

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ

Microsoft Word - ch04三校.doc

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

全国计算机技术与软件专业技术资格(水平)考试

希赛网 ( 专注软考 PMP 通信 建造师考试希赛网, 专注于软考 PMP 通信 建造师考试的专业 IT 知识库和在线教育平台, 希赛网在线题库, 提供历年真题 模拟试题 章节练习 知识点练习 错题本练习等在线做题服务, 更有能力评估报告, 让你告别盲目做题, 针对性

生成word文档

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

试题中通用的表示规则 关于概念数据模型 关系模式 关系数据库的表结构标记, 试题中若无特殊声明, 将使用如下的通用标记规则 1. 概念数据模型的标记规则分别如图 1 图 2 和图 3 所示 其中 : (1) 实体类型用长方形表示 长方形内为称 (2) 实体类型间的联系用菱形表示 在联系与实体间的连线

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

生成word文档


Microsoft Word - 01.DOC

<4D F736F F D20D6D02D30322D CFC2CDF8C2E7B9A4B3CCCAA6CFC2CEE7CCE2>

软设-下午题-10下

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

chp6.ppt

提问袁小兵:

新・解きながら学ぶC言語

第3章.doc

Microsoft PowerPoint - ds-1.ppt [兼容模式]

untitled

JavaIO.PDF

untitled

新・明解C言語入門編『索引』

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

C 1

<4D F736F F D20B3F52D30322D CFC2CDF8C2E7B9DCC0EDD4B1CFC2CEE7CCE2>

软件设计师

树的非递归中序和层次遍历实现

(Microsoft Word - \270\ \317\302\317\265\267\326\317\302\316\347I)

生成word文档

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

生成word文档

基于ECO的UML模型驱动的数据库应用开发1.doc

CHAPTER VC#

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

生成word文档

新版 明解C言語入門編

Java

生成word文档

<4D F736F F D20CAFDBEDDBFE22DCFC2CEE7CCE22D3037C9CF>

2014 年全国硕士研究生入学统一考试 数学三试题 一 选择题 :1~8 小题, 每小题 4 分, 共 32 分, 下列每小题给出的四个选项中, 只有一项符合题目要求 的, 请将所选项前的字母填在答题纸... 指定位置上. (1) 设 lim a = a, 且 a 0, 则当 n 充分大时有 ( )

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

ebook39-5

c_cpp

软件工程文档编制

<4D F736F F D20CFB5B7D62DCFC2CEE749CAD4CCE22D3038CFC242>

untitled

生成word文档

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

Guava学习之Resources

_汪_文前新ok[3.1].doc

生成word文档

untitled

PowerPoint Presentation

生成word文档

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检

untitled

********* 潼南区 小学数学 ********* 潼南区 小学数学 ********* 潼南区

untitled

Strings

<4D F736F F D C9CFB0EBC4EACFB5CDB3BCAFB3C9CFEEC4BFB9DCC0EDCAA6C9CFCEE7CAD4BEED>

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

<4D F736F F D C4EAD0C5CFA2CFB5CDB3BCE0C0EDCAA6CFC2CEE7CAD4BEED>

extend

上海交通大学

试题一 (20 分 ) 某市政务信息系统建设项目全部由政府投资 建设单位甲采用公开招标的方式选定监理公司丙承担这个项目建设过程的监理工作, 并签订了委托监理合同 建设项目招标时, 应甲方要求, 丙方编写了招标文件 在招标文件中有以下几项主要内容 : 1. 项目的技术要求 2. 项目工程的设计说明 3

生成word文档

生成word文档

Strings

<4D F736F F D20D6D02D30342D CFC2C7B6C8EBCABDCFC2CEE7CCE2>

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

无类继承.key

希赛网 专注于在线教育服务 18 年 拥有海量学员见证 是软考行业的开拓者与推 动机构 自成希赛体系的培训系统 负责软考教材编排与评审 出版了 80%以上辅导教材 全职自有师资 直播+录播双保障教学保障 高精准做题和知识系统 助力软考学员一次通关 希赛软考

Transcription:

全国计算机技术与软件专业技术资格 ( 水平 ) 考试 2006 年下半年 软件设计师 下午试卷 ( 考试时间 14:00~16:30 共 150 分钟 ) 请按下述要求正确填写答题纸 1. 在答题纸的指定位置填写你所在的省 自治区 直辖市 计划单列市的名称 2. 在答题纸的指定位置填写准考证号 出生年月日和姓名 3. 答题纸上除填写上述内容外只能写解答 4. 本试卷共 7 道题, 试题一至试题四是必答题, 试题五至试题七选答 1 道 每题 15 分, 满分 75 分 5. 解答时字迹务必清楚, 字迹不清时, 将不评分 6. 仿照下面例题, 将解答写在答题纸的对应栏内 例题 2006 年下半年全国计算机技术与软件专业技术资格 ( 水平 ) 考试日期是 (1) 月 (2) 日 因为正确的解答是 11 月 4 日, 故在答题纸的对应栏内写上 11 和 4 ( 参看下表 ) 例题 解答栏 (1) 11 (2) 4 2006 年下半年软件设计师下午试卷第 1 页 ( 共 1 页 )

试题一 ( 共 15 分 ) 阅读以下说明以及数据流图, 回答问题 1 至问题 5, 将解答填入答题纸的对应栏内 [ 说明 ] 某银行已有一套基于客户机 / 服务器模式的储蓄系统 A 和一套建帐软件 建帐软件主 要用于将储蓄所手工处理的原始数据转换为系统 A 所需的数据格式 该建帐软件具有以下 功能 : (1) 分户帐录入 : 手工办理业务时建立的每个分户帐数据均由初录员和复录员分别 录入, 以确保数据的正确性 ; (2) 初录 / 复录比对 : 将初录员和复录员录入的数据进行一一比较, 并标记两套数据 是否一致 ; (3) 数据确认 : 当上述两套数据完全一致后, 将其中任一套作为最终进入系统 A 的 原始数据 ; (4) 汇总核对和打印 : 对经过确认的数据进行汇总, 并和会计账目中的相关数据进行核对, 以确保数据的整体正确性, 并打印输出经过确认的数据, 为以后核查可能的错误 提供依据 ; (5) 数据转换 : 将经过确认的数据转换为储蓄系统 A 需要的中间格式数据 ; (6) 数据清除 : 为加快初录和复录的处理速度, 在数据确认之后, 可以有选择地清 除初录员和复录员录入的数据 该软件的数据流图如图 1-1~ 图 1-3 所示 图中部分数据流数据文件的格式如下 : 初录分户帐 = 储蓄所号 + 帐号 + 户名 + 开户日 + 开户金额 + 当前余额 + 性质 复录分户帐 = 储蓄所号 + 帐号 + 户名 + 开户日 + 开户金额 + 当前余额 + 性质 初录数据 复录数据 会计账目 操作结果 试题一至试题四是必答题 = 手工分户帐 + 一致性标志 = 手工分户帐 + 一致性标志 = 储蓄所号 + 总户数 + 总余额 = 初录操作结果 + 比对操作结果 + 复录操作结果 2006 年下半年软件设计师下午试卷第 2 页 ( 共 2 页 )

初录员 / 复录员手工分户帐 操核作对结结果果建帐软件 中间格式数据系统 A 分户帐清单 打印机 会计 会计账目 图 1-1 建帐软件顶层数据流图 操作结果 1 录入比对 6 手工分户帐 数据清除会计账目 核对结果 中间格式数据 5 数据转换 2 数据确认 3 汇总核对 分户帐清单 4 打印清单 确认的数据 图 1-2 建帐软件第 0 层数据流图 初录分户帐初录员 初录结果 初录操作结果 1.1 初录 初录数据 1.3 比对 比对操作结果 复录数据 复录操作结果 1.2 复录 复录结果 复录员 复录分户帐 图 1-3 建帐软件第 1 层数据流图 2006 年下半年软件设计师下午试卷第 3 页 ( 共 3 页 )

软件需要打印的分户帐清单样式如表 1-1 所示 : 表 1-1 分户帐清单样式表 储蓄所 帐号 开户日 户名 其他分户帐数据 储蓄所 1 储蓄所 1 合计 储蓄所 2 共 XXX 户, 总余额 9999999.99 元 储蓄所 2 合计 共 XXX 户, 总余额 9999999.99 元 [ 问题 1] (4 分 ) 请采用说明中的词汇, 给出数据确认处理所需的数据流在第 1 层图中的全部可选起点 ( 第 0 层图和第 1 层图中均未给出 ) [ 问题 2] (2 分 ) 不考虑数据确认处理 ( 加工 2), 请指出数据流图中存在的错误 [ 问题 3] (2 分 ) 打印分户帐清单时, 必须以下列哪一组数据作为关键字进行排序, 才能满足需求? 请 从下面选项中选择, 并将对应序号填入答题纸相应栏 1 储蓄所 2 帐号 3 开户日 4 总户数和总余额 [ 问题 4] (4 分 ) 加工 1( 录入比对处理 ) 除能够检查出初录数据和复录数据不一致外, 还应当检测出 下列哪些错误, 请将对应序号填入答题纸对应栏 1 输入的无效字符 2 输入的半个汉字 3 显示器无法显示 4 初录员重复录入同一帐户 5 汇总数据与会计账目不符 6 打印机卡纸 [ 问题 5] (3 分 ) 请使用数据字典条目定义形式, 给出第 0 层 DFD 中的 手工分户帐 数据流和第 1 层 DFD 中的 初录分户帐 复录分户帐 的关系 2006 年下半年软件设计师下午试卷第 4 页 ( 共 4 页 )

试题二 ( 共 15 分 ) 阅读以下说明, 回答问题 1 至问题 4, 将解答填入答题纸的对应栏内 [ 说明 ] 某宾馆需要建立一个住房管理系统, 部分的需求分析结果如下 : (1) 一个房间有多个床位, 同一房间内的床位具有相同的收费标准 不同房间的床位收费标准可能不同 (2) 每个房间有房间号 ( 如 201 202 等 ) 收费标准 床位数目等信息 (3) 每位客人有身份证号码 姓名 性别 出生日期和地址等信息 (4) 对每位客人的每次住宿, 应该记录其入住日期 退房日期和预付款额信息 (5) 管理系统可查询出客人所住房间号 根据以上的需求分析结果, 设计一种关系模型如图 2-1 所示 : 房间 m 住宿 n 客人 图 2-1 住房管理系统的实体联系图 [ 问题 1](1 分 ) 根据上述说明和实体 - 联系图, 得到该住房管理系统的关系模式如下所示, 请补充住宿关系 房间 ( 房间号, 收费标准, 床位数目 ) 客人 ( 身份证号, 姓名, 性别, 出生日期, 地址 ) 住宿 ( (1), 入住日期, 退房日期, 预付款额 ) [ 问题 2](4 分 ) 请给出问题 1 中住宿关系的主键和外键 [ 问题 3](4 分 ) 若将上述各关系直接实现为对应的物理表, 现需查询在 2005 年 1 月 1 日到 2005 年 12 月 31 日期间, 在该宾馆住宿次数大于 5 次的客人身份证号, 并且按照入住次数进行降序 排列 下面是实现该功能的 SQL 语句, 请填补语句中的空缺 SELECT 住宿. 身份证号,count( 入住日期 ) FROM 住宿, 客人 WHERE 入住日期 >= 20050101 AND 入住日期 <= 20051231 AND 住宿. 身份证号 = 客人. 身份证号 GROUP BY (2) (3) count( 入住日期 ) > 5 (4) [ 问题 4](6 分 ) 为加快 SQL 语句的执行效率, 可在相应的表上创建索引 根据问题 3 中的 SQL 语句, 除主键和外键外, 还需要在哪个表的哪些属性上创建索引, 应该创建什么类型的索引, 请 说明原因 2006 年下半年软件设计师下午试卷第 5 页 ( 共 5 页 )

试题三 ( 共 15 分 ) 阅读以下说明和图, 回答问题 1 至问题 3, 将解答填入答题纸的对应栏内 [ 说明 ] S 公司开办了在线电子商务网站, 主要为各注册的商家提供在线商品销售功能 为更好地吸引用户,S 公司计划为注册的商家提供商品 (Commodity) 促销 (Promotion) 功能 商 品的分类 (Category) 不同, 促销的方式和内容会有所不同 注册商家可发布促销信息 商家首先要在自己所销售的商品的分类中, 选择促销涉及 的某一具体分类, 然后选出该分类的一个或多个商品 ( 一种商品仅仅属于一种分类 ), 接 着制定出一个比较优惠的折扣政策和促销活动的优惠时间, 最后由系统生成促销信息并将 该促销信息公布在网站上 商家发布促销信息后, 网站的注册用户便可通过网站购买促销商品 用户可选择参与 某一个促销 (Promotion) 活动, 并选择具体的促销商品 (Commodity), 输入购买数量等购买 信息 系统生成相应的一份促销订单 (POrder) 只要用户在优惠活动的时间范围内, 通过 网站提供的在线支付系统, 确认在线支付该促销订单 ( 即完成支付 ), 就可以优惠的价格 完成商品的购买活动, 否则该促销订单失效 系统采用面向对象方法开发, 系统中的类以及类之间的关系用 UML 类图表示, 图 3-1 是该系统类图中的一部分 ; 系统的动态行为采用 UML 序列图表示, 图 3-2 是发布促销的序 列图 (5) (2) (3) (6) (1) (4) 图 3-1 在线促销系统部分类图 2006 年下半年软件设计师下午试卷第 6 页 ( 共 6 页 )

(7) (8) (9) (10) 图 3-2 发布促销序列图 [ 问题 1](6 分 ) 识别关联的多重度是面向对象建模过程中的一个重要步骤 根据说明中给出的描述, 完成图 3-1 中的 (1)~(6) [ 问题 2](4 分 ) 请从表 3-1 中选择方法, 完成图 3-2 中的 (7)~(10) 表 3-1 可选消息列表功能描述方法名向促销订单中添加所选的商品 buycommodities 向促销中添加要促销的商品 addcommodities 查找某个促销的所有促销订单信息列表 getpromotionorders 生成商品信息 createcommodity 查找某个分类中某商家的所有商品信息列表 getcommodities 生成促销信息 createpromotion 生成促销订单信息 createporder 查找某个分类的所有促销信息列表 getcategorypromotion 查找某商家所销售的所有分类列表 getcategories 查找某个促销所涉及的所有商品信息列表 getpromotioncommodities [ 问题 3](5 分 ) 关联 (Association) 和聚集 (Aggregation) 是 UML 中两种非常重要的关系 请说明关联和聚集的关系, 并说明其不同点 2006 年下半年软件设计师下午试卷第 7 页 ( 共 7 页 )

试题四 ( 共 15 分 ) 阅读以下说明和图, 填补流程图中的空缺, 将解答填入答题纸的对应栏内 [ 说明 ] 某汽车制造工厂有两条装配线 汽车装配过程如图 4-1 所示, 即汽车底盘进入装配线, 零件在多个工位装配, 结束时汽车自动完成下线工作 S0,0 S0,1 S0,2 S0,3 S0,n-2 S0,n-1 a 0,0 a 0,1 a 0,2 a 0,3... a 0,n-2 a 0,n-1 底盘 e 0 t 0,0 t 0,1 t 0,2 t 0,n-2 x 0... 汽车 e 1 t 1,0 t 1,1 t 1,2 t 1,n-2 x 1 a 1,0 a 1,1 a 1,2 a 1,3... a 1,n-2 a 1,n-1 S1,0 S1,1 S1,2 S1,3 S1,n-2 S1,n-1 图 4-1 汽车装配线 (1) e0 和 e1 表示底盘分别进入装配线 0 和装配线 1 所需要的时间 (2) 每条装配线有 n 个工位, 第一条装配线的工位为 S0,0, S0,1,, S0,n-1, 第二条装 配线的工位为 S1,0, S1,1,, S1,n-1 其中 S0,k 和 S1,k(0 k n-1) 完成相同的任务, 但所需 时间可能不同 (3) ai,j 表示在工位 Si,j 处的装配时间, 其中 i 表示装配线 (i=0 或 i=1),j 表示工位 号 (0 j n-1) (4) ti,j 表示从 Si,j 处装配完成后转移到另一条装配线下一个工位的时间 (5) x0 和 x1 表示装配结束后, 汽车分别从装配线 0 和装配线 1 下线所需要的时间 (6) 在同一条装配线上, 底盘从一个工位转移到其下一个工位的时间可以忽略不计 图 4-2 所示的流程图描述了求最短装配时间的算法, 该算法的输入为 : n: 表示装配线上的工位数 ; e[i]: 表示 e1 和 e2,i 取值为 0 或 1; a[i][j]: 表示 ai,j,i 的取值为 0 或 1,j 的取值范围为 0~n-1; t[i][j]: 表示 ti,j, i 的取值为 0 或 1,j 的取值范围为 0~n-1; x[i]: 表示 x0 和 x1,i 取值为 0 或 1 算法的输出为 : fi: 最短的装配时间 ; li: 获得最短装配时间的下线装配线号 (0 或者 1) 算法中使用的 f[i][j] 表示从开始点到 Si,j 处的最短装配时间 2006 年下半年软件设计师下午试卷第 8 页 ( 共 8 页 )

开始 (1) j = 1 初始化数据 (2) <= f[1][ ][j-1]+ ]+t[1][ ][j-1]+ ]+a[0][ ][j]? Y f[0][ ][j]= ]=f[0][ ][j-1]+ ]+a[0][ ][j] N f[0][ ][j]= ]=f[1][ ][j-1]+ ]+t[1][ ][j-1]+ ]+a[0][ ][j] 第 0 条装配线 j 号工位完成装配的最短时间 (3) Y f[1][ ][j]= ]=f[1][ ][j-1]+ ]+a[1][ ][j] N f[1][ ][j]= ]=f[0][ ][j-1]+ ]+t[0][ ][j-1]+ ]+a[1][ ][j] 第 1 条装配线 j 号工位完成装配的最短时间 j += 1 Y j < n? N f[0][ ][n-1]+ ]+x[0]<= N f[1][ ][n-1]+ ]+x[1]? Y (4) (5) 最短装配时间 结束 图 4-2 求最短装配时间算法 2006 年下半年软件设计师下午试卷第 9 页 ( 共 9 页 )

从下列的 3 道试题 ( 试题五至试题七 ) 中任选 1 道解答 如果解答的试题数超过 1 道, 则题号小的 1 道解答有效 试题五 (15 分 ) 阅读以下说明 图和 C 代码, 将应填入 (n) 处的字句写在答题纸的对应栏内 [ 说明 ] 一般的树结构常采用孩子 - 兄弟表示法表示, 即用二叉链表作树的存储结构, 链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点 例如, 图 5-1(a) 所示的树的孩子 - 兄弟表示如图 5-1(b) 所示 D D B B A E A F P C F E P C (a) (b) 图 5-1 树及其孩子 - 兄弟表示示意图函数 LevelTraverse() 的功能是对给定树进行层序遍历 例如, 对图 5-1 所示的树进 行层序遍历时, 结点的访问次序为 :D B A E F P C 对树进行层序遍历时使用了队列结构, 实现队列基本操作的函数原型如下表所示 : 函数原型 void InitQueue(Queue *Q) Bool IsEmpty(Queue Q) void EnQueue(Queue *Q,TreeNode p) void DeQueue(Queue *Q,TreeNode *p) Bool Status 类型定义如下 : 说明 初始化队列 判断队列是否为空, 若是则返回 TRUE, 否则 返回 FALSE 元素入队列 元素出队列 typedef enum {FALSE = 0,TRUE = 1 Bool; typedef enum {OVERFLOW = -2,UNDERFLOW = -1,ERROR = 0,OK = 1 Status; 树的二叉链表结点定义如下 : typedef struct Node { char data; struct Node *firstchild,*nextbrother; Node,*TreeNode; 2006 年下半年软件设计师下午试卷第 10 页 ( 共 10 页 )

[ 函数 ] Status LevelTraverse(TreeNode root) { /* 层序遍历树, 树采用孩子 - 兄弟表示法,root 是树根结点的指针 */ Queue tempq; TreeNode ptr,brotherptr; if (!root) return ERROR; InitQueue(&tempQ); (1) ; brotherptr = root -> nextbrother; while (brotherptr){ EnQueue(&tempQ,brotherptr); (2) ; /*end-while*/ while ( (3) ) { (4) ; printf("%c\t",ptr->data); if ( (5) ) continue; (6) ; brotherptr = ptr->firstchild->nextbrother; while (brotherptr){ EnQueue(&tempQ,brotherptr); (7) ; /*end-while*/ /*end-while*/ return OK; /*LevelTraverse*/ 2006 年下半年软件设计师下午试卷第 11 页 ( 共 11 页 )

试题六 ( 共 15 分 ) 阅读以下说明和 C++ 代码, 将应填入 (n) 处的字句写在答题纸的对应栏内 [ 说明 ] 传输门是传输系统中的重要装置 传输门具有 Open( 打开 ) Closed( 关闭 ) Opening ( 正在打开 ) StayOpen( 保持打开 ) Closing( 正在关闭 ) 五种状态 触发传输门状态转 换的事件有 complete 和 timeout 三种 事件与其相应的状态转换如图 6-1 所示 Closed 已关闭 complete Opening 正在打开 complete Open 打开 timeout StayOpen 保持打开 Closing 正在关闭 图 6-1 传输门响应事件与其状态转换图下面的 [C++ 代码 1] 与 [C++ 代码 2] 分别用两种不同的设计思路对传输门进行状态模拟, 请填补代码中的空缺 [C++ 代码 1] const int CLOSED = 1; const int OPENING = 2; const int OPEN = 3; const int CLOSING = 4; const int STAYOPEN = 5; // 定义状态变量, 用不同整数表示不同状态 class Door { private: int state; // 传输门当前状态 public: void setstate(int state){ this->state = state; // 设置当前状态 Door():state(CLOSED){; void getstate(){ switch(state){ // 根据当前状态输出相应的字符串 case OPENING: cout <<"OPENING" << endl; case CLOSED: cout << "CLOSED" << endl; case OPEN: cout << "OPEN" << endl; case CLOSING: cout << "CLOSING" << endl; break; break; break; break; 2006 年下半年软件设计师下午试卷第 12 页 ( 共 12 页 )

case STAYOPEN: cout << "STAYOPEN" << endl; break; void () { if ( (1) ) else if ( (2) ) else if ( (3) ) void timeout(){ if (state == OPEN) void complete(){ ; int main(){ if (state == OPENING) // 发生 事件时进行状态转换 setstate(opening); setstate(closing); setstate(stayopen); // 发生 timeout 事件时进行状态转换 setstate(closing); // 发生 complete 事件时进行状态转换 setstate(open); else if (state == CLOSING) setstate(closed); Door adoor; adoor.getstate(); adoor.(); adoor.getstate(); adoor.complete(); adoor.getstate(); adoor.(); adoor.getstate(); adoor.(); adoor.getstate(); return 0; [C++ 代码 2] class Door { public: ; DoorState *CLOSED, *OPENING, *OPEN, *CLOSING, *STAYOPEN, *state; Door(); virtual ~Door(){ // 释放申请的内存, 此处代码省略 ; void setstate(doorstate *state) { this->state = state; void getstate(){ ; // 此处代码省略, 本方法输出状态字符串, // 例如, 当前状态为 CLOSED 时, 输出字符串为 CLOSED void (); void timeout(); void complete(); 2006 年下半年软件设计师下午试卷第 13 页 ( 共 13 页 )

Door::Door(){ CLOSED = new DoorClosed(this); OPENING = new DoorOpening(this); OPEN = new DoorOpen(this); CLOSING = new DoorClosing(this); STAYOPEN = new DoorStayOpen(this); state = CLOSED; void Door::(){ (4) ; void Door::timeout(){ (5) ; void Door::complete(){ (6) ; class DoorState // 定义一个抽象的状态, 它是所有状态类的基类 { protected: Door *door; public: ; DoorState(Door *door) { this->door = door; virtual ~DoorState(void); virtual void () { virtual void complete() { virtual void timeout() { class DoorClosed :public DoorState{ // 定义一个基本的 Closed 状态 public: DoorClosed(Door *door):doorstate(door) { ; virtual ~ DoorClosed (){ void (); void DoorClosed::() { (7) ; // 其它状态类的定义与实现代码省略 int main(){ Door adoor; adoor.getstate(); adoor.(); adoor.getstate(); adoor.complete(); adoor.getstate(); adoor.timeout(); adoor.getstate(); return 0; 2006 年下半年软件设计师下午试卷第 14 页 ( 共 14 页 )

试题七 ( 共 15 分 ) 阅读以下说明以及 Java 程序, 将应填入 (n) 处的字句写在答题纸的对应栏内 [ 说明 ] 传输门是传输系统中的重要装置 传输门具有 Open( 打开 ) Closed( 关闭 ) Opening ( 正在打开 ) StayOpen( 保持打开 ) Closing( 正在关闭 ) 五种状态 触发状态的转换事 件有 complete 和 timeout 三种 事件与其相应的状态转换如图 7-1 所示 Closed 已关闭 complete Opening 正在打开 complete Open 打开 timeout StayOpen 保持打开 Closing 正在关闭 图 7-1 传输门响应事件与其状态转换图下面的 [Java 代码 1] 与 [Java 代码 2] 分别用两种不同的设计思路对传输门进行状态模拟, 请填补代码中的空缺 [Java 代码 1] public class Door { public static final int CLOSED = 1; public static final int OPENING = 2; public static final int OPEN = 3; public static final int CLOSING = 4; public static final int STAYOPEN = 5; private int state = CLOSED; // 定义状态变量, 用不同的整数表示不同状态 private void setstate(int state){this.state = state; // 设置传输门当前状态 public void getstate(){ // 此处代码省略, 本方法输出状态字符串, // 例如, 当前状态为 CLOSED 时, 输出字符串为 CLOSED public void () { if ( (1) ) else if ( (2) ) // 发生 事件时进行状态转换 setstate(opening); setstate(closing); else if ( (3) ) setstate(stayopen); 2006 年下半年软件设计师下午试卷第 15 页 ( 共 15 页 )

// 发生 timeout 事件时进行状态转换 public void timeout(){ if (state == OPEN) setstate(closing); public void complete(){// 发生 complete 事件时进行状态转换 if (state == OPENING) setstate(open); else if (state == CLOSING) setstate(closed); public static void main(string [] args){ Door adoor = new Door(); adoor.getstate(); adoor.(); adoor.getstate(); adoor.complete(); adoor.getstate(); adoor.(); adoor.getstate(); adoor.(); adoor.getstate(); return; [Java 代码 2] public class Door { public final DoorState CLOSED = new DoorClosed(this); public final DoorState OPENING = new DoorOpening(this); public final DoorState OPEN = new DoorOpen(this); public final DoorState CLOSING = new DoorClosing(this); public final DoorState STAYOPEN = new DoorStayOpen(this); private DoorState state = CLOSED; // 设置传输门当前状态 public void setstate(doorstate state){ this.state = state; public void getstate(){ // 根据当前状态输出对应的状态字符串 System.out.println(state.getClass().getName()); public void (){ (4) ;// 发生 事件时进行状态转换 public void timeout(){ (5) ;// 发生 timeout 事件时进行状态转换 public void complete(){ (6) ;// 发生 complete 事件时进行状态转换 public static void main(string[] args){ Door adoor = new Door(); adoor.getstate(); adoor.(); adoor.getstate(); adoor.complete(); adoor.getstate(); adoor.timeout(); adoor.getstate(); return; 2006 年下半年软件设计师下午试卷第 16 页 ( 共 16 页 )

public abstract class DoorState { // 定义所有状态类的基类 protected Door door ; public DoorState(Door door) { this.door = door; public void () { public void complete() { public void timeout() { class DoorClosed extends DoorState{ // 定义一个基本的 Closed 状态 public DoorClosed(Door door) { super(door); public void () { (7) ; // 该类定义的其余代码省略 // 其余代码省略 2006 年下半年软件设计师下午试卷第 17 页 ( 共 17 页 )

软件设计师推荐 软件设计师考试政策 考试时间 :http://www.csairk.com/pxjd/200910121714211235.htm 考试大纲 :http://www.csairk.com/ksdg/201006171615111082.htm 软件设计师考试辅导 类别 一次 分期 真题 模拟题 在线辅导 588 388 11 10 查看详情 :http://www.csairk.com/ruankao/kspx.htm 冲刺辅导 388 5 6 查看详情 :http://www.csairk.com/ruankao/kscc.htm 软件设计师考试视频推荐视频名称 价格 内容 软件设计师视频教程 420 3862 分钟 查看详情 :http://v.educity.cn/chapters.asp?csid=2 软件设计师考试串讲视频教程 198 670 分钟 查看详情 :http://v.educity.cn/chapters.asp?csid=70 软件设计师考试真题解析视频 218 2599 分钟 查看详情 :http://v.educity.cn/chapters.asp?csid=49 软件设计师考试书籍推荐书籍名称价格软件设计师考试软件设计考点精讲 真题解析与考前必练 49.00 查看详情 :http://www.csairk.com/book/viewbook.asp?id=204 软件设计师考试考点突破 程序设计 实战练习一本通 69.00 查看详情 :http://www.csairk.com/book/viewbook.asp?id=200 软件设计师考试冲刺指南 ( 新修订版 ) 55.00 查看详情 :http://www.csairk.com/book/viewbook.asp?id=159 软件设计师考试考点分析与真题详解 ( 最新版 ) 89.90 查看详情 :http://www.csairk.com/book/viewbook.asp?id=138 软件设计师考试试题分类精解 ( 第 3 版 ) 69.80 查看详情 :http://www.csairk.com/book/viewbook.asp?id=135