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

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

1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 23及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 阅读下列说明和数据流图,回答问题 1至问题 3。 【说明】 图书管理系统旨在用计算机对图书进行管理,包括图书的购入、借阅、归还及注销。管理人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,给出统计表格,以便掌握图书的流通情况。 系统要实现以下 4方面的功能:购入新书、读者借书、读者还书及图书注销。 (1)购入新书:需要为该书编制图书卡片,包括分类目录号、图书流 水号 (要保证每本书都有唯一的流水号,即使同类图书也是如此 )、书名、作者、内

2、容摘要、价格和购书日期等信息,写入图书目录文件中。 (2)读者借书:填写借书单,包括读者号、欲借图书分类目录号,系统首先检查该读者号是否有效,若无效,则拒绝借书,否则进一步检查该读者所借图书是否超过最大限制数,若已达到最大借阅数,则拒绝借书,否则读者可以借出该书,登记图书分类目录号、图书流水号、读者号和借阅日期等,写回到借书文件中去。 (3)读者还书:根据图书流水号,从借书文件中读出和该图书相关的借阅记录,表明还书日期,再写回借书文件 中;如果图书逾期未还,则处以相应罚款。 (4)图书注销:将一些过时或无保留价值的图书注销,从图书文件中删除相关记录。 (5)流通查询:管理员可以对图书流通情况进

3、行查询,包括某位读者、某种图书和全部图书,给出流通情况统计表。 以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定顶层数据流图是正确的。如图 9-1所示是顶层数据流图,如图9-2所示是第 0层数据流图,如图 9-3所示是第 1层数据流图。【数据字典】 (1)数据流条目 图书管理要求 =入库单 |借书单 |还书单 |注销单 入库单 =分类目录号 +数量 +书名 +作者 +内容摘要 +价格 +购书日期 借书单 =读者号 +(d)+借阅日期 还书单 =(e)+还书日期 (2)文件说明 文件名:目录文件 组成: 分类目录号 +书名 +作者 +内容摘要 +价格+入库日期 +总数 +库存数

4、+ (f) 1 根据题意,指出数据流图中缺失的数据流 (a)的名称,并指出该数据流的起点。 2 将下述文件正确填充在数据流图 (b)、 (c)处:读者文件、借书文件。 3 根据题意,补充数据字典中 (d)、 (e)、 (f)处的空缺。 4 阅读下列说明,回答问题 1至问题 3。 【说明】 关 于一位花商有以下一些事实。 (1)销售在不同地区生长的花,这些地区一年的最低气温在一定范围内变化。 (2)想用编号来表示发货类型。 (3)要出售某些类型的花。 假定已经通过 SQL语句建立了基本表: CREATE TABLE Zone(ID CHAR(2) PRIMARY KEY, LowerTemp N

5、UMERIC(3), UpperTemp NUMERIC(3); CREATE TABLE Delivery(ID CHAR (2) PRIMARY KEY, Category CHAR(5), DelSize NUMERIC(5, 3); CREATE TABLE FlowerInfo(ID CHAR (3), ComName CHAR(25), LatName CHAR(30), Czone NUMERIC(3), Hzone NUMERIC(3), Delivered NUMERIC(3), SunNeed CHAR(3), PRIMARY KEY(ID); 地区 (ID,最高温度,最低

6、温度 ) 发货 (ID,发货类型,发货规格 ) 花的信息 (ID,普通名,拉丁名,花能够生长的 最冷地区,花能够生长的最热地区,发货类型,日光需求 ) 4 写出 SQL语句,将记录 (ID, Category=pot, DelSize=1.5)插入 Delivery表中。 5 写出 SQL语句实现如下功能:查询以花瓶 (pot)形式发货的所有鲜花的 ID、普通名及花瓶的规格,得到结果表按照普通名的字母逆序打印。 6 写出如下 SQL实现语句。 (1)把对表 Zone的 INSERT权限授予用户 Smith,并允许它再将此权限授予他人。 (2)收回已经授予 Tom的对表 FlowerInfo中属

7、性 ComName的修改权 限。 (3)建立视图 viewpot,表现问题 2的功能。 7 阅读下列说明和图,回答问题 1至问题 3。 【说明】 公司 IT部门决定开发一个计算机管理系统以记录期刊的传阅情况。 期刊在公司内部传阅,员工可以要求加入传阅队列。图书室登记公司收到的期刊,交给名单中的第一名员工。员工应在 3个工作日内完成阅读,员工阅读完毕后通知系统,系统提醒下一位阅读者取书,下一个员工必须确认已收到期刊。当传阅名单中 “下一位 ”员工出差在外时将无法进行传阅,此时将期刊传给再下一位,而将该员工做标记,再次传递此书时优先考虑该员工。最后一位 员工阅读完毕后,将期刊交还图书室以便共用。系

8、统能在员工忘记传递期刊时发出提醒信息。系统详细记录期刊传阅情况,当员工阅读完后通知系统,系统记录该员工的员工号及日期,并在备注栏注明是传出;同样,当员工收到期刊后给系统收书确认,系统记录该员工的员工号及日期,并在备注栏注明是收到。 公司的员工都有一个唯一的员工号。公司订阅了多种期刊,为每一本期刊 (有唯一期刊流水号 )产生一份传阅名单,并详细记录传阅情况。员工的出差情况存储在系统主机中。 该系统采用面向对象方法开发,系统中的类及类之间的关系用UML类图表示,图 9-4是 该系统的类图的一部分,图 9-5描述了成功传递期刊的序列图。 7 根据题意,给出类 “传阅记录 ”的主要属性。 8 根据题意

9、,将图 9-5中的 (1) (5)处补充完整。 9 同一种期刊分不同的期,所以有多本同一种期刊。 “传阅名单 ”只需每一种期刊一份,还是应该每本期刊一份 ?为什么 ? 10 阅读下列函数说明、图和 C代码,将应填入 (n)处的字句写在对应栏内。 【说明】 假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数 m表示为: m=ak10k-2+ak-110k-3+a310+a2 其中 a1保存该长整数的位数, a0保存该长整数的符号: 0表示正数, 1表示负数。 运算时先决定符号,再进行绝对值运算。对于绝对值相减情况,总是绝对值较大的减去绝对值较小的,以避免出现不够

10、减的情况。注:不考虑溢出情况,即数组足够大。 【函数】 int cmp(int *LA, int *LB); /*比较长整数 LA与 LB的绝对值大小 */ /*若 LA绝对值较大返回正值, LA较小返回负值,相等则返回 0*/ int ADD(int *LA, int*LB, int *LC) /*计算长整数 LA与 LB的和,结果存储于 LC中 */ /*注意:正数与负数的和相当于正数与负数绝对值的差 */ /*数据有误返回 0,正常返回 1*/ if(LA=NULL | LB=NULL | LC=NULL)return 0; int *pA, *pB,i,N,carry,flag; fl

11、ag=LA0+LB0; switch(flag)/*根据参与运算的两个数的符号进行不同的操作 */ case 0: case 2: LC0=LA0;/*LA与 LB同号,结果符号与 LA(LB)相同 */ pA=LA; pB=LB; (1) ; break; case 1:/*LA与 LB异号 */ /*比较两 者的绝对值大小,结果符号与较大者相同 */ flag= (2) ; if(flag 0)/*LA较大 */ LC0=LA0; pA=LA; pB=LB; else if(flag 0)/*LB较大 */ LC0=LB0; pA=LB; pB=LA; else/*LA与 LB相等 */

12、LC0=0; LC1=0; return 1; flag=-1; break; default: return 0; break; /*switch*/ /*绝对值相加减 */ /*注意对于减法 pA指向较大数, pB指向较小数,不可能出现不够减的情况 */ (3) ; N=LA1 LB1?LA1:LB1; for(i=0;i N;i+) if(i =pA1)/*LA计算完毕 */ carry+=flag *pBi+2; else if(i =pB1)/*LB计算完毕 */ carry +=pAi+2; else carry +=pAi+2+flag *pBi+2; LCi+2=Carry%1

13、0; carry /=10; if( (4) )/*需要借位,针对减法 */ LCi+2+=10; carry-; /*for*/ if( (5) )/*最高进位,针对加法 */ LCi+2=carry; i+; if(LCi+1=0)i-;严若最高位为零,针对减法 */ LC1=i; return 1; ;/*ADD*/ 阅读下列函数说明、图和 C代码,将应填入 (n) 处的字句写在对应栏内。 1. 【说明】 假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数 m表示为: m=ak10k-2+ak-110k-3+a310+a2 其中 a1保存该长整数的 位数

14、, a0保存该长整数的符号: 0表示正数, 1表示负数。 运算时先决定符号,再进行绝对值运算。对于绝对值相减情况,总是绝对值较大的减去绝对值较小的,以避免出现不够减的情况。注:不考虑溢出情况,即数组足够大。 【函数】 int cmp(int *LA, int *LB); /*比较长整数 LA与 LB的绝对值大小 */ /*若 LA绝对值较大返回正值, LA较小返回负值,相等则返回 0*/ int ADD(int *LA, int*LB, int *LC) /*计算长整数 LA与 LB的和,结果存储于 LC中 */ /*注意:正数与负数的和相当于正数与负数绝对值的差 */ /*数据有误返回 0,

15、正常返回 1*/ if(LA=NULL | LB=NULL | LC=NULL)return 0; int *pA, *pB,i,N,carry,flag; flag=LA0+LB0; switch(flag)/*根据参与运算的两个数的符号进行不同的操作 */ case 0: case 2: LC0=LA0;/*LA与 LB同号,结果符号与 LA(LB)相同 */ pA=LA; pB=LB; (1); break; case 1:/*LA与 LB异号 */ /*比较两者的绝对值大小,结果符号与较大者相同 */ flag=(2); if(flag 0)/*LA较大 */ LC0=LA0; pA=

16、LA; pB=LB; else if(flag 0)/*LB较大 */ LC0=LB0; pA=LB; pB=LA; else/*LA与 LB相等 */ LC0=0; LC1=0; return 1; flag=-1; break; default: return 0; break; /*switch*/ /*绝对值相加减 */ /*注意对于减法 pA指向较大数, pB指向较小数,不可能出现不够减的情况 */ (3); N=LA1 LB1?LA1:LB1; for(i=0;i N;i+) if(i =pA1)/*LA计算完毕 */ carry+=flag *pBi+2; else if(i =

17、pB1)/*LB计算完毕 */ carry +=pAi+2; else carry +=pAi+2+flag *pBi+2; LCi+2=Carry%10; carry /=10; if(4)/*需要借位,针对减法 */ LCi+2+=10; carry-; /*for*/ if(5)/*最高进位,针对加法 */ LCi+2=carry; i+; if(LCi+1=0)i-;严若最高位为零,针对减法 */ LC1=i; return 1; ;/*ADD*/ 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。

18、 11 阅读以下说明和 C+码,将相应的文字填入 (n)处,写在对应栏内。 说明 以下代码实现了对象引用作为函数参数,仔细阅读以下代码,分析运行结果,填入(n)处。 代码 #include iostream.h class Sample int x,y; public: Sample() x=y=0; Sample (int i, int j ) x=i; y j; void copy ( Sample y j; void print ( cout “x=“ x end1 ; cout “y=“ y end1; ; void Sample: copy ( Sample y=s.y; void

19、func ( Sample s1, Sample s2.setxy ( 30,40 ); void main ( ) Sample p ( 1,2 ) ,q; q.copy ( p ); time ( p,q ); p.print ( ); q.print ( ); 运行结果 (1) (2) (3) (4) 12 阅读以下说明和 JAVA 2代码,将应填入 (n)处的字句写在对应栏内。 说明 以下程序为类类型的变量应用实例,通过异常处理检验了类 CCircle的变量的合法性,即参数半径应为非负值。仔细阅读代码和相关注释,将程序补充完整。 JAVA代码 /定义自己的异常类 class CCirc

20、leException extends Exception / 定义类 CCircle class CCircle private double radius; public void setRadius ( double r ) (1) if ( r 0 ) (2) else (3) Public void show ( ) System. out. println ( “area=“+3.14*radius*radius ); public class ciusample public static void main ( String args ) CCircle cir=new CCi

21、rcle( ); (4) cir. setRadius ( -2.0 ) (5) System. out. println ( e+“ throwed“ ) ; cir. show( ) ; 13 阅读以下说明和 Visual Basic代码,将相应文字填入 (n)处,并写在对应栏内。 说明 以下 Visual Basic代码实现了对位图 (BMP)进行旋转显示。以下程序共实现了对 BMP位图图形进行 180旋转 、 90旋转 (顺时针 )、 90旋转 (逆时针 )、水平翻转、垂直翻转共 5项处理。显示界面如图 12-8所示。仔细阅读 代码 7-1至 代码 7-3,完成 (n)代码,并写在对应

22、栏内。 代码 7-1 Begin VB. Form Form1 AutoRedraw =-1 True Caption=“图像的施转 “ /.窗体描述 ( 略 ) Begin VB. CommandButton Command7 Caption=“退出 “ /.窗体描述 (略 ) End Begin VB.CommandButton Command6 Caption = “复位 “ /.窗体描述 (略 ) End Begin VB.CommandButton Command5 Caption= “垂直翻转 “ /.窗体描述 (略 ) End Begin VB.CommandButton Com

23、mand4 Caption=“水平翻转 “ /.窗体描述 (略 ) End Begin VB.CommandButton Command3 Caption= “90(逆时针 )“ /.窗本描述 (略 ) End Begin VB.CommandButton Command2 Caption= “90(顺时针 )“ /.窗体描述 (略 ) End Begin VB.PictureBox Picture2 /.窗体描述 (略 ) End Begin VB.CommandButton Command1 Caption=“180“ /.窗体描述 (略 ) End Begin VB.PictureBox

24、 Picture 1 /.窗体描述 (略 ) End End 代码 7-2 Private Declare Function BitBlt Lib “gdi32“ ( ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal n Width As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long ) As Long Const srcopy = 可见, ca

25、rry需要进行初始化,故空 (3)应填 carryy=0。仔细 分析 该计算式,可知 flag是符号, flag为 1时,计算 pA+pB, flag为 -1时,计算 pA-pB。由此也推断出空 (1)应填flag=1。 case 1中亦有对应语句 flag=-1可得验证。 由注释可见空 (4)要填需要借位的条件。当不够减时需要向高一位借位,也就是不借位时相减结果是负数。因此空 (4)应填 LCi+2 0。 同 (4),空 (5)要填需要有最高进位的条件。 carry变量表示的就是进位。因此空 (5)应填 carry(或 carry !=0)。注:此处 carry不可能为负数。 二、选答题(共

26、 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 11 【正确答案】 (1)x=1 (2)v=2 (3)x=30 (4)y=40 【试题解析】 本题考查考生对 C+面向对象语言的掌握程度和人工运算代码的能力。本题说明对象引用作为函数参数的作用。 Sample类 中的 copy()成员函数进行对象拷贝。在 main()中先建立对象 p和 q, p与 q对象的 x, y值相同,调用 func( )函数,由于第 2个参数为引用类型,故实参发生改变;而第 1个参数不是引用类型,实参不发生改变。 12 【正确答案】 (1)thr

27、ows CCircleException (2)throw new CCircleException(); /抛出异常 (3)radius=r; (4)try (5)catch(CCircleException e) /捕捉由 setRadius()抛出的异 常 【试题解析】 本题主要考查 JAVA语言中 Class类型的变量应用。本段代码中对于类 Ccircle的半径变量进行合法性检验,如果圆 Ccircle的半径为负值,则抛出异常处理。 13 【正确答案】 (1)BitB1t Picture2.hDC, i, j, 1, 1, Picture1.hDC w-i, h-j, srcopy (

28、2) BitB1t Picture2.hDC, i, j, 1, 1, Picture1.hDC w-j, h-i, srcopy (3) BitB1t Picture2.hDC, i, j, 1, 1, Picture1.hDC j, i, srcopy (4) BitB1t Picture2.hDC, i, j, 1, 1, Picture1.hDC i, j, 【试题解析】 本题中 Visual Basic代码实现了对位图 (BMP)进行旋转显示。 (1)为旋转 180*时对 BMP的操作。 (2)为顺时针旋转 90时对 BMP的操作。 (3)为逆时针旋转 90时对 BMP的操作。 (4)为水平翻转时对 BMP的操作。 (5)为垂直翻转时对BMP的操作。 做题中注意阅读前 后代码。

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

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

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