[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷64及答案与解析.doc
《[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷64及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷64及答案与解析.doc(16页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 64及答案与解析 一、必答题(共 4道大题,每道大题 15分) 0 阅读下列说明和图,回答问题 l至问题 3,将解答填入答题纸的对应栏内。【说明】 C市刚开通了地铁线,为方便乘客,计划开发自动售票系统。该公司在每一个地铁站放置了多台自动售票机,每一台售票机有一唯一编号,售票记录统一汇总主机。自动售票机只发售从该站起始的各种地铁票,因此乘客只需输入目的站,起始站默认为该站,售票机给出从该站到达目的站的单程票。打印地铁票时为其编一个唯一的流水号,并同时打印自动 售票机的编号及票价。售票机的状态变化如下: “空闲 ”时,显示地铁线路图,等待
2、乘客输入目的站;当乘客输入目的站后,转入“目的站确认票数输入 ”状态,同时给出票价,此时若目的站有误,可返回到空闲状态重新输入,否则,输入票数;乘客输入票数后,转入 “票数确认付款 ”状态,同样此时若票数有误,可返回到上一状态重新输入,否则,投入钱币付款;当付款金额足够时, “出票找零 ”(有必要时进行找零 );然后转入 “空闲 ”等待输入目的站状态。该系统采用面向对象方法开发,系统中的类以及类之间的关系用 UML类图表示,图 1一 1是该系统类图 的一部分,图 12描述了自动售票机的状态转换图。【图 11】【图 12】 1 根据题意,给出 “自动售票机 ”类的主要属性。 2 根据题意,给出
3、“地铁票 ”类的主要属性。 3 根据题中所述术语,指出图 12中状态 l到状态 4分别是什么 ? 3 阅读下列说明和图,回答问题 1至问题 3,将解答填入答题纸的对应栏内。【说明】图书管理系统详细记录图书库存情况、读者信息以及读者借阅记录 (包括借书日期和还书日期 )。新书入库时要为该书编制图书卡片,包括分类目录号、图书流水号 (要保证每本书都有唯一的流水号,即使同类图 书也是如此 )、书名、作者、内容摘要、价格和购书日期。同一个书名由于版次、作者等不同有可能存在多 “种 ”图书,其间用 “分类目录号 ”区分。系统为每一位合法读者编制一个唯一的借书证号,读者需要提供姓名、单位。一个读者最多可以
4、同时借阅 5本图书。借阅图书时,新添借阅记录,并将对应的 “归还标记 ”字段置为 “false”,表示 “尚未归还 ”;归还图书时,将相应的 “归还标记 ”字段置为 “true”,表示 “已经归还 ”。一本书可能供多位读者借阅,同一本书读者可以重复借阅。图 2 1为该系统的 ER图。【图 2 1】4 实体间的联系 有 “一对一 ”、 “一对多 ”和 “多对多 ”,指出 “借阅 ”联系属于哪一种 ?“借阅关系模式的外键是什么 ?有主键吗 ?为什么 ? 5 由于同一个分类目录号 (同一种图书 )有多个副本,若用表 Book(图书流水号,分类目录号,书名,作者,内容摘要,价格,购书日期 )存储图书信
5、息则有很多的冗余信息,该如何分解使之满足 BCNF,并指出分解后的关系模式的主键。 6 若用表 Reader存储读者信息, Book表存储图书信息, Borrow表存储借阅情况。以下 SQL语句是 “查询证号为 12345的读者当前所借阅的图书书名 (即尚未归还的图书 )”,请补充完整。 SELECT书名 FROM Book WHERE流水号 (1) (SELECT流水号 FROM(2) WHERE证号 =“12 345”AND (3) ) 以下 SQL语句是 “查询书名包含 软件设计师 的图书情况 ”,请补充完整。 SELECT*FROM Book WHERE书名 (4)“软件设计师 ” 7
6、 阅读下列说明和图,回答问题,将解答填入答题纸的对应栏内。【说明】本流程图描述了某子程序的处理流程,现要求用白盒测试法对其进行测试。【问题】根据判定覆盖、条件覆盖、判定条件覆盖、多重条件覆 盖 (条件组合覆盖 )、路径覆盖 5种覆盖标准,从供选择的答案中分别找出满足相应覆盖标准的最小的测试数据组 (用 回答 )。供选择的答案: 8 阅读下列函数说明、图和 C代码,将应填入 (n)处的字句写在答题纸对应栏内。【说明】当一元多项式 中有许多系数为零时,可用一个单链表来存储,每个节点存储一个非零项的指数和对应系数。为了便于进行运算,用带头节点的单链表存储,头节点中存储多项式中的非零项数,且各节点按指
7、数递减顺序存储。例如:多项式 8x5一 2x2+7的存储结构为:函数中使用的预定义符号如下: #define EpSI1e一 6structNode( *多项式中的一项* double c; *系数 * int e; *指数 * structN0de *next; ; typedef struct *多项式头节点 * int n; *多项式不为零的项数 * struct Node *head; )POLY;【函数】 void Del(PoLY*C, struct Node*p) *若 p是空指针则删除头节点,否则删除 p节点的后继 * struct Node*t; *c是空指针或 c没有节点
8、* if(C=NULL C一 head=NULL)return; if(1) +删除头节点 * t=C一 head: C一 head=t一 next; return; *if* t=p一 next; p一 next=t一 next; ); *Del* voidInsert(POLY *C, structN0de *pC) *将 pc节点按指数降序插入到多项式 c中 * *若 c中存在 pc对应的指数项,则将系数相加;若其结果为零,则删除该节点 * struct N0de*t, *tp; *pc为 空指针或其系数近似为零 * if(pC=NULL fabs(pC一 c) head=NuLL)(
9、*若 C为空,作为头节点插入 * C一 head=pC; pC一 next =NULL; C一 n+: retUrn; *i * *若 pc的指数比头节点的还大,插入到头节点之前 * if(pC一 eC一 head一 e) (2) ; C一 head=pC; C一 n+: return: / *i *, (3) ; t=C一 head: while(t!=NULL) if(t一 epC一 e)( tp=t; t=t一 next: else if(t一 e=pc一 e) *c中已经存在该幂次项 * t一 c+=pc一 c; *系数相加 * i (fabs(t一 c)n一一: (5) ; else
10、 t=NuLL; *c中已经不存在该幂次项 * *while* if(t=NuLL) *适当位置插入 * pC一 next=tp一 next; tp一 next=pC; C一 n+: /*if*, ; *Insert* 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 9 阅读下列函数说明和 c+代码,将应填入 (n)处的字句写在答题纸对应栏内。 【说明】 任何一种程序都是为了解决问题而撰写的,解决问题时需要实现一些特定的运算法则。在策略 (Strategy)模式下,可以更换实现算法的部分而不留痕迹,切换
11、整个算法,简化改为采用其他方法来解决同样问题。以下是一个 “剪刀石头布 ”游戏。猜拳时的 “策略 ”有 2种方法:第一种是 “猜赢后继续出同样的招式 ”(WinningStrategy),第二种是 “从 上一次出的招式中,以概率分配方式求出下一个招式的几率 ”(ProbStrategy)。程序中定义了 Hand类表示猜拳时的 “手势 ”,类内部以 O(石头 )、 1(剪刀 )、 2(布 )来表示。 Hand类的实例只会产生 3个。以下是 C+语言实现,能够正确编译通过。 【 C+代码】 ClasS Hand private: int handvalue; StatiC Hand*hand0;
12、StatiC Hand*handl; Static Hand*hand2: (1): Hand(int handvalue) thiS一 handvalue=handvalue; publiC: (2)Hand*getHand(int handvalue)( *省略具体实现 * ; Hand*Hand: hand0=new Hand(0); Hand*Hand: handl=new Hand(1); Hand*Hand: hand2=new Hand(2); ClasS Strategy public: (3)Hand*nextHand()=0; ; class WinningStrategy
13、 : public strategy private: boo1 won; Hand*prevHand; public: WinningStrategy() won=false; Hand*nextHand() if(!won) prevHand=Hand: getHand(rand() 3); return prevHand; ; class probStrategy: public strategy public: Hand*nextHand() int handvalue=0; *省略具体实现 * return Hand: getHand(handvalue); ; Class Play
14、er( private: string name; Strategy*Strategy; public: Player(string name, (4)strategy) thiS一 name=name; thiS一 strategy=strategy; Hand*nextHand()(向战略请示手势 return (5); ; 10 阅读以下说明和 JaVa代码,将应填入 (n)处的字句写在答题纸对应栏内。 【说明】 任何一种程序都是为了解 决问题而撰写的,解决问题时需要实现一些特定的运算法则。在策略 (strategy)模式下,可以更换实现算法的部分而不留痕迹,切换整个算法,简化改为采用其
15、他方法来解决同样问题。以下是一个 “剪刀石头布 ”游戏。猜拳时的 “策略 有 2种方法:第一种是 “猜赢后继续出同样的招式, (winningStrategy),第二种是 “从上一次出的招式种,以概率分配方式求出下一个招式的几率 ”(ProbStrategy)。程序中定义了 Hand类表示猜拳时的 “手势 ”,类内部以 0(石头 )、 1(剪刀 )、 2(布 )来表示。 Hand类的实例只会产 生 3个。以下是 JaVa语言实现,省略了不相关属性及方法,方法实现体亦有所省略,能够正确编译通过。 【 Java代码】 Hand.Java文件 publiC class Hand public sta
16、tic final int HANDVALUEGUU=0;石头 public static final int HANDVALUECHO=1;剪刀 public static final int HANDVALUEPAA=2;布 public static final Handhand= new Hand(HANDVALUE_GUU), new Hand(HANDVALUECHO), new Hand(HANDVALUEPAA), ; private int handvalue; (1) Hand(int handvalue) this handvalue=handvalue; publ ic
17、(2)Hand getHand(int handvalue)从值取得对象实例 return hand fhandvalue: Strategy java文件 public interface Strategy( public (3)Hand nextHand(); ProbStrategy。 Java文件 import java.util Random; public class ProbStrategy implements Strategy( public Hand nextHand() int handvalue=0; *省略具体实现 * return Hand.getHand(hand
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 中级 设计师 下午 应用技术 试题 模拟 64 答案 解析 DOC
