[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷51及答案与解析.doc

上传人:terrorscript155 文档编号:507220 上传时间:2018-11-29 格式:DOC 页数:11 大小:224.50KB
下载 相关 举报
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷51及答案与解析.doc_第1页
第1页 / 共11页
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷51及答案与解析.doc_第2页
第2页 / 共11页
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷51及答案与解析.doc_第3页
第3页 / 共11页
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷51及答案与解析.doc_第4页
第4页 / 共11页
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷51及答案与解析.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 51及答案与解析 一、必答题(共 4道大题,每道大题 15分) 0 C市刚开通了地铁线,为方便乘客,计划开发自动售票系统。 该公司在每一个地铁站放置了多台自动售票机,每一台售票机有一唯一编号,售票记录统一汇总主机。自动售票机只发售从该站起始的各种地铁票,因此乘客只需输入目的站,起始站默认为该站,售票机给出从该站到达目的站的单程票。打印地铁票时为其编一个唯一的流水号,并同时打印自动售票机的编号及票价。 售票机的状态变化如下:“空闲 ”时,显示地铁线路图, 等待乘客输入目的站;当乘客输入目的站后,转入“目的站确认 /票数输入 ”状态,同时

2、给出票价,此时若目的站有误,可返回到空闲状态重新输入,否则,输入票数;乘客输入票数后,转入 “票数确认 /付款 ”状态,同样此时若票数有误,可返回到上一状态重新输入,否则,投入钱币付款;当付款金额足够时, “出票 /找零 ”(有必要时进行找零 );然后转入 “空闲 ”等待输入目的站状态。 该系统采用面向对象方法开发,系统中的类以及类之间的关系用 UML类图表示,图 1-1是该系统类图的一部分,图 1-2描述了自动售票机的状态转换图。1 根据题意, 给出 “自动售票机 ”类的主要属性。 2 根据题意,给出 “地铁票 ”类的主要属性。 3 根据题中所述术语,指出图 1-2中状态 1到状态 4分别是

3、什么 ? 3 说明 图书管理系统详细记录图书库存情况、读者信息以及读者借阅记录 (包括借书日期和还书日期 )。 新书入库时要为该书编制图书卡片,包括分类目录号、图书流水号 (要保证每本书都有唯一的流水号,即使同类图书也是如此 )、书名、作者、内容摘要、价格和购书目期。同一个书名由于版次、作者等不同有可能存在多 “种 ”图书,其间用 “分类目录号 ”区分。 系统为每一位合法读者编制 一个唯一的借书证号,读者需要提供姓名、单位。 一个读者最多可以同时借阅 5本图书。借阅图书时,新添借阅记录,并将对应的 “归还标记 ”字段置为 “false”,表示 “尚未归还 ”;归还图书时,将相应的 “归还标记

4、”字段置为 “true”,表示 “已经归还 ”。一本书可能供多位读者借阅,同一本书读者可以重复借阅。 图 2-1为该系统的 E-R图。 图 2-1 4 实体间的联系有 “一对一 ”、 “一对多 ”和 “多对多 ”,指出 “借阅 ”联系属于哪一种 ?“借阅 ”关系模式的外键是什么 ?有主键吗 ?为什么 ? 5 由于同一个分类目录号 (同一 种图书 )有多个副本,若用表 Book(图书流水号,分类目录号,书名,作者,内容摘要,价格,购书日期 )存储图书信息则有很多的冗余信息,该如何分解使之满足 BCNF,并指出分解后的关系模式的主键。 6 若用表 Reader存储读者信息, Book表存储图书信息

5、, Borrow表存储借阅情况。 以下 SQL语句是 “查询证号为 12345的读者当前所借阅的图书书名 (即尚未归还的图书 )”,请补充完整。 SELECT 书名 FROM Book WHERE 流水号 (1) (SELECT流水号 FROM (2) WHERE 证号 =“12345“ AND (3) 以下 SQL语句是 “查询书名包含 软件设计师 的图书情况 ”,请补充完整。 SELECT * FROM Book WHERE书名 (4) “%软件设计师 %“ 7 说明 本流程图描述了某子程序的处理流程,现要求用白盒测试法对其进行测试。根据判定覆盖、条件覆盖、判定 /条件覆盖、多重条件覆盖

6、(条件组合覆盖 )、路径覆盖 5种覆盖标准,从供选择的答案中分别找出满足相应覆盖标准的最小的测试数据组 (用 回答 )。供选择的答案:8 函数 void Del(POLY *C, struct Node *p) /*若 p是空指针则删除头节点,否则删除p节点的后继 */ struct Node *t; /*C是空指针或 C没有节点 */ 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;

7、;/*Del*/ void Insert(POLY *C, struet Node *pC) /*将 pC节点按指数降序插入到多项式 C中 */ /*若 C中存在 pC对应的指数项,则将系数相加;若其结果为零,则删除该节点 */ struct Node *t, *tp; /*pC为空指针或其系数近似为零 */ if(pC = NULL | fabs(pC-c) head = NULL) /*若 C为空,作为头节点插入 */ C-head = pC; pC-next = NULL; C-n+; return; /*if*/ /*若 pC的指数比头节点的还大,插入到头节点之前 */ if(pC-e

8、 C-head-)e) (2) ; C-head = pC; C-n+; return; /*if*/ (3) ; t = C-head; while(t!= NULL) if(t-e pC-e) tp = t; t = t-next; else if(t-e = pC-e) /*C中已经存在该幂次项 */ t-c += pC-c; /*系数相加 */ if(fabs(t-c) n-; (5) ; else t = NULL; /*C中已经不存在该幂次项 */ /*while*/ if(t = NULL)/*适当位置插入 */ pC-next = tp-next; tp-next = pC;

9、C-n+; /*if*/ ;/*Insert*/ 9 阅读以下说明和 Java代码,回答问题 说明 对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过 递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器 (Iterator)。模式以下程序模拟将书籍 (Book)放到书架(BookShelf)上并依次输出书名。这样就要涉及到遍历整个书架的过程。使用迭代器Iterator实现。图 6-1显示了各个类间的关系。以下是 JAVA语言实现,能够正确编译通过。 图 6-1 Java代码 /Iterator. java文件 public interface Iterator publ

10、ic abstract boolean hasNext(); public abstract Object next(); /Aggregate. java文件 public interface Aggregate public abstract Iterator iterator(); /Book. java public class Book /省略具体方法和属性 /BookshelfIterator. java文件 public class Bookshelf工 terator (1) Iterator private BookShelf bookShelf; private int i

11、ndex; public BookshelfIterator(BookShelf bookShelf) this. bookShelf = bookShelf; this. index = 0; public boolean hasNext()/判断是否还有下一个元素 if(index = 0 return NULL; bool appendBook(struct BookShelf *BS, struct Book book) if(BS-index booksBS-index+ = book; return true; return false; int getLength(struct

12、BookShelf *bookShelf) return bookShelf-index; struct Iterator/迭代器 fun1 hasNext;/判断是否还有 下一个元素 fun2 next;/取得下一个元素 ; struct BookshelfIteratorf/书架迭代器 int index; struet BookShelf* bookShelf; bookShelfIterator = 0, NULL; bool BShasNext()/判断是否还有下一本书 if(bookShelfIterator.index return true; else return false

13、; struct Book* BSnext()/取得 下一本书,并将 index加 1,以便下一次正确访问 return getBookAt(bookShelfIterator.bookShelf, (3) ); void main() struct BookShelf bookShelf; bookShelf.index = 0; /将书籍上架,省略代码 /将 bookShelf与bookShelfIterator相关联 bookShelfIterator.bookShelf = (4) ; struct Iterator iterator; iterator.hasNext = BShas

14、Next; iterator.next = BSnext; struct Book* b; while( (5) )/遍历书架,输出书名 b=iterator.next(); printf(“%sn“, b-name); 11 阅读下列函数说明和 C+代码,回答问题 说明 对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器 (Iterator)。模式以下程序模拟将书籍 (Book)放到书架 (BookShelf)上并依次输出书名。这样就要涉及到遍历整个书架的过程。使用迭代器 Iterator实现。图 5-1显示了各个类间

15、的关系。以下是 C+语言实现,能够正确编译通过。 图 5-1 C+代码 template (1) class Iterator public: virtual bool hasNext() = 0; (2) Object* next() = 0; ; class Book /省略具体方法和属性 ; class BookShelf private: vector books; public: BookShelf() Book* getBookAt(int index) return int getLength() return books. size(); ; template class Bo

16、okshelfIterator : public (3) private: BookShelf * bookShelf; int index; public: BookshelfIterator(BookShelf *bookShelf) this-bookShelf = bookShelf; index = 0; bool hasNext()/判断是否还有下一个元素 if(index getLength() return true; else return false; Objeot* next()/取得下一个元素 return bookShelf-getBookAt(index+); ;

17、int main() BookShelf bookShelf; /将书籍上架,省略代码 Book *book; Iterator *it = new BookShelfIterator( (4) ); while( (5) )/遍历书架,输出书名 book=(Book*)it-next(); /*访问元素 */ return 0; 软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 51答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 【正确答案】 “自动售票机 ”类的主要属性有:编号、所在地铁站名 2 【正确答案 】 “地铁票 ”类的主要属性有:起始站、目的站、票价、流水

18、号、自动售票机编号。 3 【正确答案】 状态 1: “目的站确认 /票数输入 ” 状态 2: “票数确认 /付款 ” 状态 3: “出票 /找零 ” 状态 4: “空闲 ” 4 【正确答案】 “借阅 ”联系是 “多对多 ”联系,外键有:借书证号、图书流水号。 “借阅 ”关系模式不存在主键,因为同一本书读者可以重复借阅,即使加上 “借书日期 ”亦不能唯一标识,读者可以在同一天借阅并归还再借阅,应增加一个属性 (如借阅流水号 )来标识。 “一个读者最多可以同时借阅 5本图书 ,一本书可能供多位读者借阅,同一本书读者可以重复借阅 ”,因此联系 “借阅 ”是多对多联系。 要特别分清 “一本图书 ”与

19、“一种图书 ”,一本图书是由流水号标识的,一种图书是由分类目录号标识的。对借阅联系,借阅的是具体的某本书,因此外键有:借书证号、图书流水号。 “借阅 ”关系模式不存在主键,因为同一本书读者可以重复借阅,即使加上 “借书日期 ”亦不能唯一标识,读者可以在同一天借阅并归还再借阅,应增加一个属性 (如借阅流水号 )来标识。 5 【正确答案】 图书 (分类目录号,书名,作者,内容摘要,价格,购书日期 ), 主键:分类目录号 副本 (图书流水号,分类目录号 ),主键:图书流水号 由于同一个分类目录号 (同一种图书 )有多个副本,同一个分类目录号具有相同的很多信息:书名、作者,内容摘要,价格等,同一种书中

20、的不同副本由图书流水号区分。故可分解如下: 图书 (分类目录号,书名,作者,内容摘要,价格,购书日期 ),主键:分类目录号 副本 (图书流水号,分类目录号 ),主键:图书流水号 6 【正确答案】 IN (2) Borrow (3) 归还标记 =“false“ (4) LIKE 是引出子查询的,该类连接 词有: IN、 NOT IN、 EXISTS、 NOTEXISTS, EXISTS引出的子查询一般是 SELECT*型,故排除;再据语意分析应填 IN。 子查询的语意是 “查询当前所借阅的图书流水号 (即尚未归还的图书 )”,因此应从Borrow表中查询,而且归还标记应为 false,故空 (2

21、)应填 Borrow,空 (3)应填:归还标记 =“false“。 对字符串进行的操作通常是使用操作符 LIKE的模式匹配,正符合题意,故空 (4)应填 “LIKE”。 7 【正确答案】 判定覆盖 条件覆盖 判定 /条件覆盖 多重条件覆盖 路径覆盖 【试题解析】 本题考察的是测试用例的设计。软件测试的目的是希望以最少的人力和时间发现潜在的各种错误和缺陷。这样测试用例就显得尤为重要。 软件测试大体上可分为两大类:基于 “白盒 ”的路径测试技术和基于 “黑盒 ”的事务处理流程测试技术 (又称功能测试 )。白盒测试依据的是程序的逻辑结构,而黑盒测试技术依据的是软件行为的描述。 路径测试 (PX):执

22、行所有可能的穿过程序的控制流程路径。在路径测试中,该策略是最强的,一般不可实现。 语句测试 (PI):至少执行程序中所有语句一次。 100%语句覆盖率用 CI表达。语句覆盖是最弱的逻辑覆盖准则。 分支测试 (P2):至少执行程序中每一分支一次。 100%分支覆盖率用 C2表达。 条件组合测试:使每个判定中的所有可能的条件取值组合至少执行一次。只要满足条件组合覆盖,就一定满足分支覆盖。 8 【正确答案】 p=NULL pC-next=C-head-next tp=NULL Del(C,tp) break 【试题解析】 根据注释, Del函数当 p是空指 针时,删除头节点,因此易知 (1)空应填

23、p=NULL。 (2)空是插入头节点的特殊情况,应填 pC-next=C-head-next。 由注释可知空 (4)是删除操作,需调用 Del函数,进一步确定实参。此处需要删除节点 t,结合 Del函数的说明,实参 p需要空指针 (NULL)或 t节点的前驱指针,由if(t-epC-e)tp=t;t=t-next;可知, tp正是 t节点的前驱指针。因此应填Del(C,tp)。由此也可以确定空 (3),当需要删除头节点时, tp应是空指针,因此空(3)应填 tp=NULL。 至于空 (5),应填 break。此时,节点 p已正确处理完毕,应该结束 while循环,而且必须终止,否则 while

24、循环结束后 t值为 NULL,将会错误的执行插入操作。 9 【正确答案】 (1)implements this iterator() it.hasNext() next() 【试题解析】 Iterator是接口类,空 (1)应该填 implements。 根据构造函数 Bookshelflterator(BookshelfbookShelf)可得,空 (2)应填 this,即自身 引用。 空 (3)是取得迭代器实例, BookShelf类方法 iterator()是返回 Iterator接口,故空(3)应填 iterator()。 while循环是遍历书架,输出书名,循环条件是 “还有下一记录

25、 (书 )”,故空 (4)应填 it.hasNext()。注意指针写法。 空 (5)是取得书实例, BookShelf类中方法 next()是返回 Object类实例,取得下一本书,故空 (5)应填 next()。 10 【正确答案】 (1)struct Book* indexindex bookShelfIterator.index+ 可得, fun2应该定义了与 BSnext函数同参数的函数指针,函数指针的定义原型为:函数返回类型函数指针变量名 (参数列表 ),又知函数BSnext的定义为 struct Book*BSnext(),故空 (1)应填 struct Book*。 11 【正确答案】 (1)Object virtual Iterator Object &bookShelf it-hasNext()

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1