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

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

1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 26及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 阅读以下说明和流程图,回答问题 1和问题 2,将解答写在对应栏内。 【说明】 存在某鲜花批发系统,系统中处理的信息单元有鲜花和客户,对鲜花使用编号进行唯一标识,鲜花的具体信息包括:名称、颜色、等级。客户包括鲜花种植商,鲜花经销商,客户不使用编号,只需要名称和地址。系统功能如下所述。 (1)当系统统计销存清单时发现某种鲜花当前库存数量少于指定最低库存量时,向鲜花种植商发出 采购单,订单中要记录所需鲜花的信息、数量、供应商名称和地址。 (2)收到鲜花种植商的鲜花后,向系统

2、录入归档送货单,要记录交易对应的采购单和实际金额。 (3)当某种鲜花库存数量大于或等于订购数量时,接受鲜花经销商的订货单,并更新销存清单,系统要求订单中标明鲜花的信息和经销商的信息。 (4)鲜花经销商订购的鲜花到达批发环节后,系统生成提货单,包括鲜花信息和经销商信息,然后将提货单发给经销商,等待提货。 (5)系统还要随时可以接受管理人员对于销售和库存的查询,并生成销售与库存情况表,提供给 管理人员,包括鲜花信息、本周销售数量、库存数量。 现在假定顶层图是正确的,客户信息文件已经存在并可使用。 1 完成下述文件格式:2 指出哪张图中的哪些文件不必画出。 3 指出在哪些图中遗漏了哪些数据流。回答时

3、请用如下形式之一: XX图中遗漏了 XX加工 (或文件 )流向 XX加工 (或文件 )的 XX数据流。 XX加工 XX遗漏了输入 (或输出 )数据流 XX。 4 阅读以下说明,回答问题 1至问题 3,将解答写在对应栏内。 【说明】 下面是某医院信息管理系统中需要的信息。 科室 :科名、科地址、科电话、医生姓名。 病房:病房号、床位号、所属科室名。 医生:姓名、职称、所属科室名、年龄、工作证号。 病人:病历号、姓名、性别、诊断、主管医生、病房。 其中,一个科室有多个病房,多个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可以负责多个病人的诊治,一个病人的主管医生只有一个。 4 画出上

4、述信息涉及的 ER图。 5 将该 E-R图转换为关系模型。 6 指出每个关系模式的候选码。 7 阅读以下说明,回答问题 1和问题 2,将解答写在对应栏内。 【说明】 一个野生动物园,有如下动物:老虎、豹、狼、丹顶鹤、鹦鹉、天鹅、金鱼、热带鱼、鳄鱼等等。 7 依据说明,完成下面的类图,要求第 1层和第 2层填写标识、主要属性和操作,第 3层填写标识即可。 8 UML规定类图中类之间的关系有关联、聚集、继承,请说明它们的含义和之间的区别。 9 阅读下列 C程序和程序说明,将应填入 (n)处的字句写在对应栏内。 【说明】 应用 Prim算法求解连通网络的最小生成树问题。请阅读程序后填空。 const

5、 int MaxInt INT MAX; /INT MAX的值在 limits h中 const int n 6; /图的顶点数,应由用户定义 typedef int AdjMatrixnn; /用二维数组作为邻接矩阵表示 typedef struct /生成树的边结点 int fromVex, to Vex; /边的起点与终点 int weight; /边上的权值 TreeEdSenode; typedef TreeEdgeNode MSTn-1; /最小生成树定义 void PrimMST (AdjMatrix G, MST T, int rt) /从顶点 rt出发构造图 G的最小生成树

6、T, rt成为树的根结点 TreeEdgeNode e; int i, k 0, min, minpos, v; for(i 0; i n; i+) /初始化最小生成树 T if(i! rt) Tk fromVex rt; (1); Tk+.weight Grti; for(k 0; k n-1; k+) /依次求 MST的候选边 (2); for(i k; i n-1; i+) 八遍历当前候选边集合 if(Ti.weight min) /选具有最小权值的候选边 min Ti weight; (3); if(min MaxInt) /图不连通,出错处理 cerr “Graph is disco

7、nnected!” endl; exit(1); e=Tminpos; Tminpos Tk; (4); v=Tk.to Vex; for(i k+1; i n-1; i+) /修改候选边集合 if(GvTi.to Vex Ti.weight) Ti weight GvTi.toVex; (5); 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 10 阅读以下函数说明和 Java代码,将应填入 (n)处的字句写在对应栏内。 【说明】 以下程序实现数据的排序,将 n个整数分别按照升序和降序进行排序,类So

8、rtInt_1实现升序排序,类 SortInt_2实现降序排序。 【 Java代码】 class SortInt_1 int i,i,k,temp; void SortInt(int a1,int a2)/升序排序 for(i=0;i a1-1;i+) k=i; for(j=i+1;j a1;j+) if(1) k=j; if(k !=i) temp=a2i;a2i=a2k;a2k=temp; class SortInt_2 (2) int i,j,k,temp; void SortInt(int a1, int a2)/降序排序 for(i=0; i a1-1;i+) k=i; for(j=

9、i+1;j a1;j+) if(3)k=j; if(k !=i) temp=a2i;a2i=a2k;a2k=temp; public class test public static void main(String args) int a=10,55,100,35,87,90,100,16; SortInt_1 NewInt=(4); NewInt.SortInt(a.lenvh,a);/调用 SortInt_1 类的方法 System.out.println(“升序排列的数据 : “); for(int i=0;i a.length;i+) System.out.print(ai+“ “)

10、; System.out.println(); NewInt=new SortInt_2();/创建类 SortInt_2的对象 (5);/调用相应方法进行降序排序 System.out.println(“降序排列的数据 : “); for(int i=0;i a.length;i+) System.out.print(ai+“ “); 11 阅读以下说明和 c+代码,将应填入 (n)处的字句写在对应栏内。 【说明】 本程序将两个从小到大的有序链表合成一个新的从小到大的有序链表。链表的每一项由类 Node描述,而链表由 List描述,类 List的成员函数有以下几个: creatList():

11、 创建从小到大的有序链表。 multiplyList(List L1, Llst L2): 将链表 L1 和链表 L2 合并。 print(): 打印链表。 【 C+代码】 #include iostream using namespace std; class List; class Node friend class List; public: Node(int data) (1); private: int data; Node *next; ; class List public: List()list=NULL; void multiplyList(List L1, List L2)

12、; void creatList(); void print(); private: Node *list; ; void List:creatList() Node *p, *u, *pre; int dara; list=NULL; wbile(1) cout “输入链表的一项 : (小于零,结束链表 ) “ endl; cin data; if(dara 0)break;/小于零,结束输入 p=list; while(p !=NULL p=p- next; u=(2); if(p=list)list=u; else pre- next=u; (3); void List:multiply

13、List(List L1, List L2) Node *pL1, *pL2, *pL, *u; list = NULL; pL1 = L1.list; pL2 = L2.11st; while(pL1 != NULL pL1 = pL1- next; else u = new Node(pL2- data); pL2 = pL2- next; if(list = NULL) list =(4); else pL- next=u; pL=u; pL1 = (pL1 != NULL)? pL1:pL2; while(pL1 != NULL) u=(5); pL1 = pL1- next; if(

14、list = NULL) list=pL=u; else pL- next=u; pL=u; void List:print() Node *p; p = list; while(p !=NULL) cout p- data “t“; p=p- next; cout end1; void main() List L1, L2, L; cout “创建第一个链表 n“;L1.creatList(); cout “创建第二个链表 n“;L2.creatList(); L1.print();L2.print(); L.multiplyList(L1,L2); L.print(); 软件水平考试(中级

15、)软件设计师下午(应用技术 )试题模拟试卷 26答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 【正确答案】 订货单鲜花编号 +名称 +颜色 +等级 +数量 +经销商名称 +地址 销存清单鲜花编号 +名称 +颜色 +等级 +本周销售数量 +当前库存数量 +指定最低库存数量 2 【正确答案】 0层图中的 “提货单 ”和 “采购订单 ”不必画出。 3 【正确答案】 加工 1子图中遗漏了 “销存清单 ”到 1.2加工的数据流。 加工 1子图中 1.2加工遗漏了 “采购请求 ”输出数据流。 【试题解析】 数据流图是下午考试的必考题,描述说明和图示内容多,而且复杂,需要考生有充分的理论掌握

16、和分析能力。但可以发现,这类题的出题点和解答思路及方法还是比较固定的,只要考生经过一定的练习,解答这类题会比较顺利。 对于数据流图的基本知识,这里不再详细讲述,考生可参照相关书籍。这里只介绍出题点,解答思路和方法。 数据流图基本出题点有: (1)找出缺少哪些输入输出数据流。 (2)找出哪张图中的哪个文件不必画出。 (3)文件格式。 解答的总体原则是: (1)父图与子图的平衡。 (2)输入输出数据流的平衡。 (3)文件的隐蔽原则 。 具体解释如下所述。 (1)数据流图的思想就是逐层细化,层层分解,父图描述整体的信息,子图描述特定的信息。所以,子图应该是父图中某个加工的分解,子图应该能够完整合并成

17、父图,即不能缺少父图概括性表示的实际的完整信息。 (2)打个比方,父图是汽车,汽车有 4个轮胎,现在将父图中的一个加工 底盘,生成子图,这 4个轮胎作为底盘与整车的连接,一个不能多,也一个不能少。所以,要严格遵守输入输出数据流的平衡,仔细对照,找出缺少或错误的数据流。 (3)如果,一个数据文件只是某个加工单独使用的,那么 这个数据文件就不应该出现在父图中,而应该只出现于专门描述这个加工的子图中,当然,前提是这个数据文件的确对父图没有整体的实质性影响。 运用以上 3个原则,加上仔细和耐心,是可以顺利解答数据流图的试题的。上述说明同样适用于本套模拟题其他同类试题,在其他解析中不再复述,请考生注意。

18、 现在分析本试题,问题 1要求补充文件格式,这些文件是数据流图中某个或某几个加工使用的,一般在说明中都会直接给出文件名称和结构描述,只要对应进行填写即可。 订货单是鲜花经销商向批发系统提交的,说明中已经指出要包括:鲜花信息 、数量、客户信息。鲜花信息包括:鲜花编号、名称、颜色、等级,客户信息包括客户姓名、地址。 同理,可以得出销存清单的文件格式,注意,它包括本周销售数量、现在库存数量、指定最低库存数量。 问题 2要指出哪张图中的哪些文件不必画出。使用上面讲述的原则,注意要从顶层开始,按照加工的分解,逐层细化。 由于已知顶层图假定正确,所以首先看 0层图,发现 0层图中的提货单和采购订单是单个加

19、工单独使用的,是局部数据文件,根据数据隐蔽原则,这两个数据文件不必在 0层图中画出,只需要在对应加工子图中出现。 继续查 看加工 1子图,发现出现的文件都是共用文件,没有局部数据文件。 问题 3是关于数据流的问题,应该使用平衡原则。一是按照父图与子图的输入输出逐条对应,第二是在子图中确定子加工之间、子加工与文件之间是否需要数据流,是否遗漏,以及方向。 首先,可以比较容易地确认 0层图中没有遗漏的数据流。结合 0层图和加工 1子图,发现缺少流向加工 2的 “采购请求 ”输出数据流,在给出的一系列子加工中,按照处理流程逐个分析,可以得出系统应该在子加工 1.2“确定客户订单 ”后生成采购请求。 同

20、理,子加工 1.2“确认客户订单 ”要使 用到销存清单,以确认合格订货单是否可以满足,如果可以满足,要生成提货单,不能满足要生成采购单。所以遗漏了 “销存清单 ”到加工 1 2的输出数据流。 4 【正确答案】 E-R模型如下:5 【正确答案】 科室 (科名,科地址,科电话 ): 病房 (病房号,床位号,科室名 ); 医生 (工作证号,姓名,职称,科室名,年龄 ); 病人 (病历号,姓名,性别,诊治,主管医生,病房号 ); 6 【正确答案】 科室的候选码是科名; 病房的候选码是病房名 +床位号: 医生的候选码是工作证号; 病人的候选码是病历号。 【试题解 析】 本题考查的是数据库方面的知识。 问

21、题 1解析 根据题意,可以得出以下结论。 有 4个实体:科室、医生、病房、病人。 4个联系:组成 (科室与病房 )、从属 (科室与医生 )、入住 (病房与病人 )、诊治 (医生与病人 )。 实体之间的联系类型具体是: 科室与病房的联系是 “一对多 ”; 科室和医生的联系是 “一对多 ”; 病房和病人的联系是 “一对多 ”; 医生和病人的联系是 “一对多 ”。 根据以上分析,可以画出 E-R模型。 问题 2解析 根据上面的 E-R图和说明, 可以得到 4个关系模型结构,如下: 科室 (科名,科地址,科电话 ); 病房 (病房号,床位号,科室名 ): 医生 (工作证号,姓名,职称,科室名,年龄 )

22、; 病人 (病历号,姓名,性别,诊治,主管医生,病房号 ): 问题 3解析 由科名就可以直接确认科室,没有两个科室共用一个科名;两个医生可能同名,但工作证号是唯一的,所以医生的候选码是工作证号,同理,病人的候选码是病历号。病房里有多张床,这里病房是指一个实体,并不只是一个外观上的屋子,所以需要由 “病房号,床位号 ”才能唯一确认一个病房实体。 7 【正确答案】 (1)类 1 . 名称:动物 . 属性:名称,体重,寿命 . 操作:呼吸,进食,运动 (2)类 2 . 名称:哺乳类动物 . 属性:四肢,哺乳期 . 操作:哺乳,胎生,用肺呼吸 (3)类 6 . 名称:老虎 类 7省略 (4)类 3 .

23、 名称:爬行类动物 . 属性和操作:爬行类的属性、操作特殊,难以表述,所以在该类中没有特殊属性和 操作,继承使用父类的属性和操作。 (5)类 8 . 名称:鳄鱼 (6)类 4 . 名称:鸟类 8 【正确答案】 关联是类之间的语义联系,代表类的实例 (对象 )之间的一组连接。 聚集是一种特殊的二元关联,它指出类间的 “整体 部分 ”关系,是关联的特例。例如汽车是整体,轮胎是部分。 继承指出类间的 “一般 特殊 ”关系。例如,电视是特殊类,家用电器是一般类。 【试题解析】 面向对象的基本思想就是对象观念,如抽象与继承。从一些对象中总结出共同的属性和操作,作为父类,具体对象作为子类继承父类,在内部继

24、承并实现共同的操作,并增加自己特殊的属性和方法。 试题给出的类图 已经给出了一些提示,第 3层应该是提到的具体动物,它们被分了类,第 2层应该是这种分类的表示。那么,第 1层的基类又是这种分类的总结。 具体分析过程这里不详细描述,考生结合面向对象的书籍全面理解。 9 【正确答案】 (1)Tk.toVex I (2)min MaxInt (3)minpos i (4)Tk e; (5)Ti fromVex v 【试题解析】 (1)Tk.toVex i 树 n 边的入度点。 (2)min MaxInt 最小值变量初始化。 (3)minpos i 最小值结点的位置。 (4)Tk e; Tminpos

25、与 Tk交换。 (5)Ti fromVex v 候选边的出度点。 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 10 【正确答案】 (1) a2k a2j (2) extends SortInt_1 (3) a2k a2j (4) new SortInt_1() (5) NewInt.SortInt(a.length,a) 【试题解析】 本题所采用的排序方法是简单选择排序,即:对 n 个记录进行选择排序。基本思想如下,通过 n-i次关键字的比较,从 n-i+1个记录中选出关键字最小的记录,并和第 i个

26、记录进行交换,当 i等于 n 时所有记录有序排列。 据此,类 SortInt_1 中的 SortInt方法实现升序排序,则每次应该选择尚未排序记录中关键字最小的记录,因此空 (1)应填 a2j a2k。同理,类 SortInt_2中的SortInt方法实现降序排序,则每次应该选择尚未排序记录中关键字最大的记录,故空 (3)应填 a2j a2k。 根据说明,紧跟空 (4)的语句 NewInt.SortInt(a.length,a)是调用 SortInt_1类的方法,意味着此时 NewInt是一个 SortInt_1类实例,故空 (4)应填 new SortInt_1()。 接着,有语句 “New

27、Int=new SortInt_2()” 创建类 SortInt_2的对象并将其赋值给NewInt变量,根据赋值兼容规则,这意味着 SortInt_2对象是一个 Sortlnt_1对象,亦即 SortInt_2 是 SortInt_1的子类,故空 (2)应 填 extends SortInt_1。 空 (5)比较简单,对照上述的调用,可得空 (5)应填 NewInt.SortInt(a.length,a)。 11 【正确答案】 (1) this- data=data,next=NULL (2) new Node(data) (3) u- next=p (4) pL=u (5) new Node

28、(pL1- data) 【试题解析】 空 (1)是进行一些初始化工作,类 Node有两个成员变量 data和next,故空 (1)应填 “this- data =data,next=NULL;”。 类 List的 createList 方法中,通过 while循环实现数据输入,为了升序存储链表,每读入一个数据,程序需要查找合适的插入点,亦通过一个 while循环查找。因此空 (2)是申请一个新的节点,应该调用 Node的构造方法。故空 (2)应填 new Node(data),注意 Node类的构造函数是有参数的。 接着将节点 u插入到链表中,当 p 为 list,说明此时应将 u 插入到当前

29、第一个节点前 (亦即 p节点之前 ),将 list赋值为 u,否则,应将 u插入到 pre节点之后, p节点之前,将 pre的 next修改为 u。这样,还需将 u的 next指向其下一个节点,即 p,故空 (3)应填 u- next=p。 multiplyList 负责将两个升序排列 L1和 L2 的链表合并起来。通过 while循环逐一比较,如果 L1的当前节点的值大于 L2的,则将 L1的当前节点的值插入到结果链表 list中,并将 L1 的当前节点指针下移,对 L2同样处理。当 list等于 NULL时,因 list初始化为 NULL,则说明是结构链表的头节点。注意到 else块中的 pL变量的使用,可知 pL变量是指向结构链表 list的工作指针,故在结构链表生 成第一节点时也需将其正确初始化。故空 (4)应填 pL=u。 while循环结束直到链表 L1和 L2有一个已经到达链尾。接着将剩余链表的指针赋给批 L1,将剩余节点逐次加入到结果链表即可。故易得空 (5)应填 new Node(pL1- data)。

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

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

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