[计算机类试卷]2006年下半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc
《[计算机类试卷]2006年下半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]2006年下半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc(19页珍藏版)》请在麦多课文档分享上搜索。
1、2006年下半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 阅读以下说明以及数据流图,回答问题 1至问题 5。【说明】 某银行已有一套基于客户机 /服务器模式的储蓄系统 A和一套建账软件。建账软件主要用于将储蓄所手工处理的原始数据转换为系统 A所需的数据格式。该建账软件具有以下功能。 (1)分户账录入:手工办理业务时建立的每个分户账数据均由初录员和复录员分别录入,以确保数据的正确性。 (2)初录 /复录比对:将初录员和复录员录入的数据进行一一 比较,并标记两套数据是否一致。 (3)数据确认:当上述两套数据完全一致后,
2、将其中任一套作为最终进入系统 A的原始数据。 (4)汇总核对和打印:对经过确认的数据进行汇总,并和会计账目中的相关数据进行核对,以确保数据的整体正确性,并打印输出经过确认的数据,为以后核查可能的错误提供依据。 (5)数据转换:将经过确认的数据转换为储蓄系统 A需要的中间格式数据。 (6)数据清除:为加快初录和复录的处理速度,在数据确认之后,可以有选择地清除初录员和复录员录入的数据。 该软件的数据流图如图 10-1至图 10-3所示。图中部分数 据流数据文件的格式如下: 初录分户账 =储蓄所号 +账号 +户名 +开户日 +开户金额 +当前余额 +性质 复录分户账 =储蓄所号 +账号 +户名 +开
3、户日 +开户金额 +当前余额 +性质 初录数据 =手工分户账 +一致性标志 复录数据 =手工分户账 +一致性标志 会计账目 =储蓄所号 +总户数 +总余额 操作结果 =初录操作结果 +比对操作结果 +复录操作结果 软件需要打印的分户账清单样式如表 10-1所示:1 请采用说明中的词汇,给出数据确认处理所需的数据流在第 1层图中的全部可选起点 (第 0层图和第 1层图中均未给出 )。 2 不考虑数据确认处 理 (加工 2),请指出数据流图中存在的错误。 3 打印分户账清单时,必须以下列哪一组数据作为关键字进行排序,才能满足需求 ?请从下面选项中选择。 储蓄所 账号 开户日 总户数和总余额 4 加
4、工 1(录入比对处理 )除能够检查出初录数据和复录数据不一致外,还应当检测出下列哪些错误。 输入的无效字符 输入的半个汉字 显示器无法显示 初录员重复录入同一账户 汇总数据与会计账目不符 打印机卡纸 5 请使用数据字典条目 定义形式,给出第 0层 DFD中的 “手工分户账 ”数据流和第1层 DFD中的 “初录分户账 ”、 “复录分户账 ”的关系。 6 阅读以下说明,回答问题 1至问题 4。【说明】 某宾馆需要建立一个住房管理系统,部分的需求分析结果如下: (1)一个房间有多个床位,同一房间内的床位具有相同的收费标准,不同房间的床位收费标准可能不同; (2)每个房间有房间号 (如201、 202
5、等 )、收费标准、床位数目等信息; (3)每位客人有身份证号码、姓名、性别、出生日期和地址等信息: (4)对每位客人的每次住宿,应该记录其入住日期、退房日期和预付 款额信息; (5)管理系统可查询出客人所住房间号。 根据以上的需求分析结果,设计一种关系模型如下图所示: 6 根据上述说明和实体 -联系图,得到该住房管理系统的关系模式如下所示,请补充住宿关系。 房间 (房间号,收费标准,床位数目 ) 客人 (身份证号,姓名,性别,出生日期,地址 ) 住宿 (1),入住日期,退房日期,预付款额 ) 7 请给出问题 1中住宿关系的主键和外键。 8 若将上述各关系直接实现为对应的物理表,现需查询在 20
6、05年 1月 1日到 2005年 12月 31日期间,在该宾馆住宿 次数大于 5次的客人身份证号,并且按照入住次数进行降序排列。下面是实现该功能的 SQL语句,请填补语句中的空缺。 SELECT 住宿身份证号, count (入住日期 ) FROM 住宿,客人 WHERE 入住日期 =20050101AND入住日期 =20051231 AND 住宿身份证号 =客人身份证号 GROUP BY (2) (3) count(入住日期 ) 5 (4) 9 为提交 SQL语句的执行效率,可在相应的表上创建索引。根据问题 3中的 SQL语句,除主键和外键外,还需要在哪个表的哪些属性上创建索引,应该创建什么
7、类型的索引,请说明原因。 10 阅读以下说明和图,回答问题 1至问题 3。【说明】 S公司开办了在线电子商务网站,主要为各注册的商家提供在线商品销售功能。为更好地吸引用户, S公司计划为注册的商家提供商品 (Commodity)促销 (Promotion)功能。商品的分类 (Category)不同,促销的方式和内容也会有所不同。 注册商家可发布促销信息。商家首先要在自己所销售的商品的分类中,选择促销涉及的某一具体分类,然后选出该分类的一个 或多个商品 (一种商品仅仅属于一种分类 ),接着制定出一个比较优惠的折扣政策和促销活动的优惠时间,最后由系统生成促销信息并将该促销信息公布在网站上。 商家发
8、布促销信息后,网站的注册用户便可通过网站购买促销商品。用户可选择参与某一个促销活动,并选择具体的促销商品,输入购买数量等购买信息。系统生成相应的一份促销订单 (POrder)。只要用户在优惠活动的时间范围内,通过网站提供的在线支付系统,确认在线支付该促销订单 (即完成支付 ),就可以优惠的价格完成商品的购买活动,否则该促销订单失效。 系统采用面向对象方法开发,系统 中的类以及类之间的关系用 UML类图表示,图 10-4是该系统类图中的一部分;系统的动态行为采用 UML序列图表示,图 10-5是发布促销的序列图。10 识别关联的多重度是面向对象建模过程中的一个重要步骤。根据说明中给出的描述,完成
9、图 10-4中的 (1) (6)。 11 请从表 10-2中选择方法,完成图 10-5中的 (7) (10)。12 关联 (Association)和聚集 (Aggregation)是 UML中两种非常重要的关系。请说明关联和聚集的关系,并说明其不同点。 13 阅读以下说明和图,填 补流程图中的空缺。 【说明】 某汽车制造工厂有两条装配线。汽车装配过程如图 10-6所示,即汽车底盘进入装配线,零件在多个工位装配,结束时汽车自动完成下线工作。 (1)e0和 e1表示底盘分别进入装配线 0和装配线 1所需要的时间。 (2)每条装配线有 n个工位,第一条装配线的工位为 S0,0, S0,1, , S
10、0,n-0,第二条装配线的工位为 S1,0, S1,1, , S1,n-1。其中 S0,k和 S1,k(0kn-1)完成相同的任务,但所需时间可能不同。 (3)aij表示在工位 Sij处的装配时间,其中 i表示装配线 (i=0或i=1), j表示工位号 (0jn-1)。 (4)tij表示从 Sij处装配完成后转移到另一条装配线下一个工位的时间。 (5)X0和 X1表示装配结束后,汽车分别从装配线 0和装配线1下线所需要的时间。 (6)在同一条装配线上,底盘从一个工位转移到其下一个工位的时间可以忽略不计。 图 10-7所示的流程图描述了求最短装配时间的算法,该算法的输入为; n: 表示装配线上的
11、工位数; ei: 表示 e1和 e2, i取值为 0或1: aij: 表示 ai,j, i的取值为 0或 1, j的取值范围为 0 n-1; tij: 表示ti,j, i的取值为 0或 1, j的取值范围为 0 n-1; xi: 表示 X0和 X1, i取值为 0或 1。 算法的输出为: fi:最短的装配时间; li:获得最短装配时间的下线装配线号 (0或者 1)。 算法中使用的 fij表示从开始点到 Si,j处的最短装配时间。 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 14 阅读以下说明、图和
12、C代码。 【说明】 一般的树结构常采用孩子 -兄弟表示法表示,即用二叉链表作树 的存储结构,链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。例如,图 10-8(a)所示的树的孩子 -兄弟表示如图10-8(b)所示。 函数LevelTraverse()的功能是对给定树进行层序遍历。例如,对图 10-1所示的树进行层序遍历时,结点的访问次序为 D B A E F P C。 对树进行层序遍历时使用了队列结构,实现队列基本操作的函数原型如下表所示: Bool、 Status类型定义如下: typedef enum FALSE=0, TRUE=1 Bool; typedef enum
13、 OVERFLOW=-2, UNDERFLOW=-1, ERROR=0, OK=1Status; 树的二叉链表结点定义如下: typedef struct Node char data; struct Node *firstchild,*nextbrother; Node, *TreeNode;【函数】 Status LevelTraverse ( TreeNode root ) /*层序遍历树,树采用孩子 -兄弟表示法, root是树根结点的指针 */ Queue tempQ; TreeNode ptr, brotherptr; if (! root) return ERROR; InitQ
14、ueue( void click() /发生 click事件时进行状态转换 if (1) setState(OPENING); else if (2) setState(CLOSING); else if (3) setState(STAYOPEN); void timeout() /发生 timeout事件时进行状态转换 if (state = OPEN) setState(CLOSING); void complete() /发生 complete事件时进行状态转换 if (state = OPENING) setState(OPEN); else if (state = CLOSING)
15、 setState(CLOSED); ; int main() Door aDoor; aDoor.getState(); aDoor.click(); aDoor.getState(); aDplete(); aDoor.getState(); aDoor.click(); aDoor.getState(); aDoor.click(); aDoor.getState(); return 0; 【 C+代码 2】 class Door public: DoorState *CLOSED, *OPENING, *OPEN, *CLOSING,*STAYOPEN, *state; Door();
16、 virtual Door()/ 释放申请的内存,此处代码省略 ); void setState(DoorState *state) this- state = state; void getState() /此处代码省略,本方法输出状态字符串, /例如,当前状态为 CLOSED时,输出字符串为 “CLOSED” ; void click(); void timeout(); void complete(); ; Door:Door() CLOSED = new DoorClosed(this); OPENING = new DoorOpening(this); OPEN = new Door
17、Open(this); CLOSING = new DoorClosing(this); STAYOPEN = new DoorStayOpen(this); state = CLOSED; void Door : click() (4); ) void Door : timeout() (5); ) void Door : complete() (6); class DoorState/定义一个抽象的状态,它是所有状态类的基类 protected: Door *door; public: DoorState(Door *door) this- door = door; virtualDoor
18、State(void); virtual void click() virtual void complete() virtual void timeout() ; class DoorClosed :public DoorState/定义一个基本的 Closed状态 public: DoorClosed(Door *door) :DoorState(door) virtual DoorClosed() void click(); ; void DoorClosed : click() (7); /其他状态类的定义与实现代码省略 int main() Door aDoor; aDoor.get
19、State(); aDoor.click(); aDoor.getState();aDplete(); aDoor.getState(); aDoor.timeout(); aDoor.getState(); return 0; 16 阅读以下说明以及 Java程序。 【说明】 传输门是传输系统中的重要装置。传输门具有 Open(打开 )、 Closed(关闭 )、 Opening (正在打开 )、 StayOpen(保持打开 )和Closing(正在关闭 )五种状态。触发状态的转换事件有 click、 complete和 timeout三种。事件与其相应的状态转换如下图所示。 下面的 Jav
20、a代码 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; /定义状态变量,用不同的整
21、数表示不同状态 private void setState(int state) this.state = state; /设置传输门当前状态 public void getState() /此处代码省略,本方法输出状态字符串, /例如,当前状态为 CLOSED时,输出字符串为“CLOSED“ public void click() /发生 click事件时进行状态转换 if (1); ) setState(OPENING); else if (2); ) setStateCLOSING); else if (3); ) setState(STAYOPEN); /发生 timeout事件时进行
22、状态转换 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.click(); aDoor.getState(
23、); aDplete(); aDoor.getState(); aDoor.click(); aDoor.getState(); aDoor.click(); 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); publi
24、c 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(); pu
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 2006 年下 半年 软件 水平 考试 中级 设计师 下午 应用技术 试题 答案 解析 DOC

链接地址:http://www.mydoc123.com/p-492600.html