【计算机类职业资格】中级软件设计师下午试题-99及答案解析.doc

上传人:lawfemale396 文档编号:1323222 上传时间:2019-10-17 格式:DOC 页数:12 大小:79.50KB
下载 相关 举报
【计算机类职业资格】中级软件设计师下午试题-99及答案解析.doc_第1页
第1页 / 共12页
【计算机类职业资格】中级软件设计师下午试题-99及答案解析.doc_第2页
第2页 / 共12页
【计算机类职业资格】中级软件设计师下午试题-99及答案解析.doc_第3页
第3页 / 共12页
【计算机类职业资格】中级软件设计师下午试题-99及答案解析.doc_第4页
第4页 / 共12页
【计算机类职业资格】中级软件设计师下午试题-99及答案解析.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、中级软件设计师下午试题-99 及答案解析(总分:105.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明研究生招生系统旨在用计算机对学校的研究生招生事务进行管理。研究生招生可分为报名阶段、考试阶段和录取阶段。招生报考前,招生处要进行考前准备工作,如统计招生导师、考试科目以及制定报考专业标准代码等。招生导师信息包括导师的姓名、性别、年龄、出生年月、所从事专业和研究方向以及所在系别。考试科目包含科目代码、科目的名称以及报考本科目的考试人数。在报名阶段,考生向招生处提交报名数据表,研究生系统根据考生的报考数据确定考生准考生号,并通知考生考试日期。在考试阶段,考试结束后,考生

2、成绩录入研究生招生系统,考生可以从研究生招生系统中获取自己的考试成绩。在录取阶段,研究生招生系统根据考生的报考数据、考试成绩、外校调剂考生信息以及往年保留资格记录文件,确定录取数据,并形成录取文件。系统统计并记录相关招生信息,以供查询。对被录取的考生发放录取通知书,对需要保留资格的考生记录其信息,以供下年度招生使用。招生处可以从研究生招生系统中获得录取数据和招生情况的统计信息,以供咨询。数据流图 11-1 为研究生招生系统顶层图,数据流图 11-2 为研究生招生系统第 0 层 DFD 图,数据流图 11-3 为加工 3 的细化图。数据流图 11-1数据流图 11-2数据流图 11-3(分数:1

3、5.00)_二、试题二(总题数:1,分数:15.00)说明在学校中,存在以下关系: (a)一个系有若干学生,但一个学生只能在一个系; (b)一个学生可以选修多门课程,每门课程有若干学生选修; (c)每个学生所学的每门课程都有一个成绩。该校在学生信息管理数据库设计了三个基本表,分别为表一、表二、表三。(a)表一:学生信息表 STUDENT(STID,NAME,AGE,DEPTNO),其中,STID 表示学号,NAME 表示学生姓名,AGE 表示年龄,DEPTNO 表示系号。(b)表二:课程表 COURSE(COID,NAME),其中,COID 表示课程号,NAME 表示课程名。(c)表三:成绩表

4、 SCORE(SCID,COID,GRADE),其中,SCID 表示学号,COID表示课程号, GRADE 表示成绩,成绩为空时表示这学期正在上的课程。1. 问题 1根据要求将 SQL 语句补充完整。(1)查询各系的学生数SELECT (1) ,COUNT(*) (2) GROUP BY DEPTNO;(2)更改课程号为 C601 的课程名为“大学物理”UPDATE (3) SET (4) (3)基于学生信息表,建立一个计算机系(系编号为 D01)的学生视图。写出命令。CREATE OR REPLACE VIEW V_STUDENTAS (5) (分数:15.00)_三、试题三(总题数:1,分

5、数:15.00)说明背包问题就是有不同价值、不同重量的物品 n 件,求从这 n 件物品中选取一部分物品的选择方案,使选中物品的总重量不超过指定的限制重量,而且选中物品的价值之和为最大。背包问题是一个典型的 NP 完全难题。对该问题求解方法的研究无论是在理论上,还是在实践中都具有一定的意义。如管理中的资源分配、投资决策、装载问题等均可建模为背包问题。常用的背包问题求解方法很多,但本题中采用了一种新的算法来求解背包问题。该算法思想为:首先要对物品进行价重比排序,然后按价重比从大到小依次装进包裹。这种方法并不能找到最佳的方案,因为有某些特殊情况存在,但只要把包中重量最大的物品取出,继续装入,直到达到

6、 limitweight,这时的物品就是 limit weight 的最大价值。这种算法不需要逐个进行试探,所以在数据非常大时,执行效率主要由排序的时间复杂度决定。该算法的流程图为图 11-4。仔细阅读程序说明和 C 程序流程图及源码,回答问题 1 和问题 2。流程图 11-4(分数:15.00)_四、试题四(总题数:1,分数:15.00)1.说明以下 C 语言程序实现了生成从里到外是连续的自然数排列的回旋矩阵,矩阵形式如下:7 6 5 168 1 4 159 2 3 1410 11 12 13程序的变量说明如下:x1:矩阵上边界;x2:矩阵下边界;y1:矩阵左边界;y2:矩阵右边界;s:数组

7、元素升降标记,s 等于 1 为升,s 等于-1 为降;a:存放矩阵元素的数组。仔细阅读 C 语言程序源码,将 (n) 处的语句补充完整。(注:每处仅一个语句)C 程序#includestdio.hvoid main ( )const int N=20;int i=0,j=0,aNN,n;int m,x1,x2,y1,y2,s;while (1)Printf (“/ninput matrix row N( N=2): “);scanf (“%d“,printf (“/n“);if (n=2)break;m=n*n;x1=0; y1=0; x2=n; y2=n;if(n%2=0)j=n-1; y2

8、=n-1; s=1;elsei=n-1; y1=1; s=-1; while (1)if (s=1)for (i; ix2; i+) aij=m-;i-;j-;(1) for (j;j=y1;j-) aij=m-;j+;i-;y1+;(2) elsefor (i;i=x1;i-)aij=m-;i+;j+;(3) for (j;jy2;j+)(4) (5) i+;(6) S=i;if (m1) break;for (i=O;in; i+)for (j=O;jn;j+)printf (“%6d“,aij);printf (“/n“);printf (“/n“);(分数:15.00)_五、试题五(总

9、题数:1,分数:15.00)2.说明建立一个分数类,使之具有下述功能:建立构造函数,它能防止分母为 0,当分数不是最简形式时进行约分以及避免分母为负数。如 经过类 Num(3,-6)的处理,转换为 ; 经过类 Num(8,10)的处理后,转换为 (分数:15.00)_六、试题六(总题数:1,分数:15.00)3.说明以下程序实现了利用鼠标任意移动圆形的位置,仔细阅读代码和相关注释,将程序补充完整。代码 6-1import java.awt.*;import java.awt.event.*;public class CIUSAMPLE extends Frame implements Mous

10、eMotionListener, MouseListenerstatic CIUSAMPLE frm=new CIUSAMPLE ( );int x=70,y=60,posX=70,posY=60,dx,dy;public static void main (String args)frm.setTitle (“Dragging a circle“);frm.setSize (200,150);(1) ffm.addMouseMotionListener (frm);frm.setVisible (true);public void mousePressed (MouseEvent e)(2)

11、 dy=e.getY ( ) -posY;public void mouseDragged (MouseEvent e)(3) y=e.getY ( ) -dy;if(dx0(4) public void paint (Graphics g)g.setColor (Color.pink); /设置绘图颜色为粉红g.fillOval(x,y,50,50); /以基准点为图形在左上角绘出圆形(5) posY=y;public void mouseMoved (MouseEvent e) public void mouseReleased (MouseEvent e) public void mou

12、seEntered (MouseEvent e) public void mouseExited (MouseEvent e) public void mouseClicked (MouseEvent e) (分数:15.00)_七、试题七(总题数:1,分数:15.00)4.说明在一些应用场合中,需要对用户的输入数据进行检查监控。以下 VisualBasic 程序实现了对新添加到 List 列表的内容进行监控,拒绝向 List 列表添加重复信息。例如,在 List 列表中存在元素“a01001;a01002”,如果用户输入数据为“aOl001”或“a01002”,系统则弹出提示信息,拒绝将新数

13、据加入 List 列表;如果用户输入的数据不同与 List 列表中的任何一个元素,则作为新元素加入 List 中。VisualBasic 界面显示如图 11-5 所示。根据程序功能说明,完成程序代码。(分数:15.00)_中级软件设计师下午试题-99 答案解析(总分:105.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明研究生招生系统旨在用计算机对学校的研究生招生事务进行管理。研究生招生可分为报名阶段、考试阶段和录取阶段。招生报考前,招生处要进行考前准备工作,如统计招生导师、考试科目以及制定报考专业标准代码等。招生导师信息包括导师的姓名、性别、年龄、出生年月、所从事

14、专业和研究方向以及所在系别。考试科目包含科目代码、科目的名称以及报考本科目的考试人数。在报名阶段,考生向招生处提交报名数据表,研究生系统根据考生的报考数据确定考生准考生号,并通知考生考试日期。在考试阶段,考试结束后,考生成绩录入研究生招生系统,考生可以从研究生招生系统中获取自己的考试成绩。在录取阶段,研究生招生系统根据考生的报考数据、考试成绩、外校调剂考生信息以及往年保留资格记录文件,确定录取数据,并形成录取文件。系统统计并记录相关招生信息,以供查询。对被录取的考生发放录取通知书,对需要保留资格的考生记录其信息,以供下年度招生使用。招生处可以从研究生招生系统中获得录取数据和招生情况的统计信息,

15、以供咨询。数据流图 11-1 为研究生招生系统顶层图,数据流图 11-2 为研究生招生系统第 0 层 DFD 图,数据流图 11-3 为加工 3 的细化图。数据流图 11-1数据流图 11-2数据流图 11-3(分数:15.00)_正确答案:(“统计数据”:起点“统计查询”,终点“统计报表”文件。“录取数据”:起点“加工 3 录取”,终点“录取文件”。“成绩”:起点“加工 2 考试”,终点“考生”。)解析:解析 试题一本题所设计系统为研究生招生系统,旨在用计算机对学校的研究生招生事务进行管理。回答问题之前,考生需要仔细研读说明部分,不要放过每一个细节,并根据图表,理解系统设计者设计系统的思路,

16、从设计者的角度来思考问题。对于问题 1,“数据流图 11-2 中缺乏 3 条数据流,请根据说明中的术语给出这三条数据流名称,并指出起点和终点”。从题目说明中我们知道数据流图 11-2 为研究生招生系统第 0 层DFD 图,那么把注意力放在图 11-2 上。“统计报表”文件没有数据来源,明显是缺少的,同样“录取文件”也缺少数据来源。这些都是可以很快找到的漏洞。另外,加工 2“考试 2”的对象应该包括“学生”。对于问题 2,对比数据流图 11-2 和数据流图 11-3,可以发现数据流图 11-3 还应依赖于“保留学籍”文件。双向数据流,两端点分别为“加工 3 录取”和“保留学籍”文件。对于问题 3

17、,仔细阅读说明文档即可解答。_正确答案:(根据数据流图 11-2 可知,数据流图 11-3 中还依赖于“保留学籍”文件。双向数据流,两端点分别为“加工 3 录取”和“保留学籍”文件。)解析:_正确答案:(导师=姓名+性别+出生年月+专业+研究方向+系别考试科目=代码+名称+考试人数)解析:二、试题二(总题数:1,分数:15.00)说明在学校中,存在以下关系: (a)一个系有若干学生,但一个学生只能在一个系; (b)一个学生可以选修多门课程,每门课程有若干学生选修; (c)每个学生所学的每门课程都有一个成绩。该校在学生信息管理数据库设计了三个基本表,分别为表一、表二、表三。(a)表一:学生信息表

18、 STUDENT(STID,NAME,AGE,DEPTNO),其中,STID 表示学号,NAME 表示学生姓名,AGE 表示年龄,DEPTNO 表示系号。(b)表二:课程表 COURSE(COID,NAME),其中,COID 表示课程号,NAME 表示课程名。(c)表三:成绩表 SCORE(SCID,COID,GRADE),其中,SCID 表示学号,COID表示课程号, GRADE 表示成绩,成绩为空时表示这学期正在上的课程。1. 问题 1根据要求将 SQL 语句补充完整。(1)查询各系的学生数SELECT (1) ,COUNT(*) (2) GROUP BY DEPTNO;(2)更改课程号为

19、 C601 的课程名为“大学物理”UPDATE (3) SET (4) (3)基于学生信息表,建立一个计算机系(系编号为 D01)的学生视图。写出命令。CREATE OR REPLACE VIEW V_STUDENTAS (5) (分数:15.00)_正确答案:(1)DEPTNO(2)FROM STUDENT(3)COURSE(4)NAME=大学物理 WHERE ID=C601;(5)SELECT*FROM STUDENT WHERE DEPTNO=D01;)解析:解析 试题二根据说明部分以及数据查询要求,可以回答问题 1。由于 SQL 语言的查询要求题干已经明确给出,相对来说容易解答,例如“

20、查询各系的学生数”,则第一项空缺应为系号,第二项空缺则缺少关键字“FROM”以及查询的目标“STUDENT”。其余各项亦可根据题干要求完成。问题 2 是对基本概念的考查。最近几次软件设计师考试中,经常会出现这种问答性的概念题,考生要有所注意。_正确答案:(需求分析阶段的主要任务是需求收集和分析,该阶段得到数据字典和数据流图。概念结构设计阶段主要任务为对用户需求的综合、归纳与抽象,在该阶段形成概念模型,用 E-R 图表示。)解析:三、试题三(总题数:1,分数:15.00)说明背包问题就是有不同价值、不同重量的物品 n 件,求从这 n 件物品中选取一部分物品的选择方案,使选中物品的总重量不超过指定

21、的限制重量,而且选中物品的价值之和为最大。背包问题是一个典型的 NP 完全难题。对该问题求解方法的研究无论是在理论上,还是在实践中都具有一定的意义。如管理中的资源分配、投资决策、装载问题等均可建模为背包问题。常用的背包问题求解方法很多,但本题中采用了一种新的算法来求解背包问题。该算法思想为:首先要对物品进行价重比排序,然后按价重比从大到小依次装进包裹。这种方法并不能找到最佳的方案,因为有某些特殊情况存在,但只要把包中重量最大的物品取出,继续装入,直到达到 limitweight,这时的物品就是 limit weight 的最大价值。这种算法不需要逐个进行试探,所以在数据非常大时,执行效率主要由

22、排序的时间复杂度决定。该算法的流程图为图 11-4。仔细阅读程序说明和 C 程序流程图及源码,回答问题 1 和问题 2。流程图 11-4(分数:15.00)_正确答案:(1)bag.weighttmp=bag.weighttmp+thingi.weight;(2)bag.sumvalue=bag.sumvalue+thingi.value;(3)bag.weighttmp=weightlimit(4)inbag ( );(5)best.sumvaluebag.sumvalue)解析:解析 试题三本题考查的是考生对流程图的阅读能力。本题涉及的算法是背包问题。背包问题求解方法很多,考生首先要理解本

23、题中的新方法,然后对照流程图阅读代码。(1)处应该为物品总重量;(2)处应该为物品总价值;(3)处应该为直到达到极限重量 limit weight;(4)处应该为继续装物品;(5)处应该为比较当前结果与备份结果。问题 2 同样是考查有关基本概念的问题。根据软件设计师考试的趋势,本套题设计上有意识地增加了概念考查部分,希望考生能够加强对基本概念的理解与训练。_正确答案:(“背包问题”求解方法主要是一些启发式算法,如贪婪算法、递归算法等。应用递归算法的目的是穷举所有可能的解,从中选出最佳解。这种解法实际上是穷举了所有的可能,只是加了一些限制。如果所求的数据很大,这种算法的效率就不是很高,甚至是不可

24、实现的。贪婪法不用穷举且速度快,但用贪婪法却不一定能找到最优解。由于贪婪法所得到的解与最优解存在很大的差距,当要求较高时,就会成为贪婪法致命的且无法挽救的缺陷。)解析:四、试题四(总题数:1,分数:15.00)1.说明以下 C 语言程序实现了生成从里到外是连续的自然数排列的回旋矩阵,矩阵形式如下:7 6 5 168 1 4 159 2 3 1410 11 12 13程序的变量说明如下:x1:矩阵上边界;x2:矩阵下边界;y1:矩阵左边界;y2:矩阵右边界;s:数组元素升降标记,s 等于 1 为升,s 等于-1 为降;a:存放矩阵元素的数组。仔细阅读 C 语言程序源码,将 (n) 处的语句补充完

25、整。(注:每处仅一个语句)C 程序#includestdio.hvoid main ( )const int N=20;int i=0,j=0,aNN,n;int m,x1,x2,y1,y2,s;while (1)Printf (“/ninput matrix row N( N=2): “);scanf (“%d“,printf (“/n“);if (n=2)break;m=n*n;x1=0; y1=0; x2=n; y2=n;if(n%2=0)j=n-1; y2=n-1; s=1;elsei=n-1; y1=1; s=-1; while (1)if (s=1)for (i; ix2; i+)

26、 aij=m-;i-;j-;(1) for (j;j=y1;j-) aij=m-;j+;i-;y1+;(2) elsefor (i;i=x1;i-)aij=m-;i+;j+;(3) for (j;jy2;j+)(4) (5) i+;(6) S=i;if (m1) break;for (i=O;in; i+)for (j=O;jn;j+)printf (“%6d“,aij);printf (“/n“);printf (“/n“);(分数:15.00)_正确答案:(1)x2-;(2)s=-1;(3)x1+;(4)aij=m-;(5)j-;(6)y2-;)解析:解析 自然数排列的回旋矩阵是一个经典程

27、序设计题目。本题中生成的是一个从里到外是连续的自然数排列的回旋矩阵。仔细阅读代码,能够发现(1)处应该为矩阵下边界递减;(2)处应该为数组元素递减状态,即为降;(3)处应该为矩阵上边界递增;(4)处应该为存放矩阵元素的数组中的数据递减;(5)处应该为数组元素的列序号递减,即 j-;(6)矩阵右边界递减。五、试题五(总题数:1,分数:15.00)2.说明建立一个分数类,使之具有下述功能:建立构造函数,它能防止分母为 0,当分数不是最简形式时进行约分以及避免分母为负数。如 经过类 Num(3,-6)的处理,转换为 ; 经过类 Num(8,10)的处理后,转换为 (分数:15.00)_正确答案:(1

28、)b=0(2)a%i=0(5)num2=b;)解析:本题中的代码实现了简单的一个分数类的定义,它的构造函数中能防止分母为 0,当分数不是最简形式时进行约分以及避免分母为负数。根据功能设计要求,仔细阅读代码可以知道 a 为分子,b 为分母。(1)是判断分母 b 为零的处理;(2)处实现了当分数不是最简形式时进行约分;(3)处避免分母为负数;(4)、(5)处返回处理完毕的数据。六、试题六(总题数:1,分数:15.00)3.说明以下程序实现了利用鼠标任意移动圆形的位置,仔细阅读代码和相关注释,将程序补充完整。代码 6-1import java.awt.*;import java.awt.event.

29、*;public class CIUSAMPLE extends Frame implements MouseMotionListener, MouseListenerstatic CIUSAMPLE frm=new CIUSAMPLE ( );int x=70,y=60,posX=70,posY=60,dx,dy;public static void main (String args)frm.setTitle (“Dragging a circle“);frm.setSize (200,150);(1) ffm.addMouseMotionListener (frm);frm.setVis

30、ible (true);public void mousePressed (MouseEvent e)(2) dy=e.getY ( ) -posY;public void mouseDragged (MouseEvent e)(3) y=e.getY ( ) -dy;if(dx0(4) public void paint (Graphics g)g.setColor (Color.pink); /设置绘图颜色为粉红g.fillOval(x,y,50,50); /以基准点为图形在左上角绘出圆形(5) posY=y;public void mouseMoved (MouseEvent e) pu

31、blic void mouseReleased (MouseEvent e) public void mouseEntered (MouseEvent e) public void mouseExited (MouseEvent e) public void mouseClicked (MouseEvent e) (分数:15.00)_正确答案:(1)frm.addMouseListener (frm);(2)dx=e.getX()-posX;(3)x=e.getX()-dx;(4)update(g);(5)posX=x;)解析:解析 以下程序实现了利用鼠标任意移动该圆形的位置。分析代码可知(

32、1)实现了对鼠标位置的检测;(2)取得鼠标按下之点与基准点 X 方向的距离;(3)取得拖曳时的基准点 X 价码标;(4)清空画面为背景颜色;(5)更新基准点的 X 坐标。七、试题七(总题数:1,分数:15.00)4.说明在一些应用场合中,需要对用户的输入数据进行检查监控。以下 VisualBasic 程序实现了对新添加到 List 列表的内容进行监控,拒绝向 List 列表添加重复信息。例如,在 List 列表中存在元素“a01001;a01002”,如果用户输入数据为“aOl001”或“a01002”,系统则弹出提示信息,拒绝将新数据加入 List 列表;如果用户输入的数据不同与 List

33、列表中的任何一个元素,则作为新元素加入 List 中。VisualBasic 界面显示如图 11-5 所示。根据程序功能说明,完成程序代码。(分数:15.00)_正确答案:(1)Listl.ListCount-1(2)Listl.LisfIndex=i(3)Listl.Text=Text1.Text Then(4)Next i(5)Listl.Addltem Text1.Text)解析:解析 本代码实现了对用户的输入数据进行检查监控。以下题目中的 VisualBashc 程序实现了对新添加到 List 列表的内容进行监控,拒绝向 List 列表添加重复信息。(1)为所有的列表个数;(2)、(3)实现了 List 列表的内容进行监控,避免重复;(4)实现循环控制变量 i 更新;(5)List 列表的内容进行监控时数据合格,没有重复、接受。

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

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

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