1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 34及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 阅读以下说明,回答问题 1 4,将解答填入对应的解答栏内。 说明 实体 1:学生 (学号,姓名,性别,年龄,所在系 )关键字为:学号 实体 2:课程 (课程号,课程名,学分数,先行课 )关键字为:课程号 实体 1与实体 2的联系:学习 (学号,课程号,成绩 )关键字为: (学号,课程号 ) 注:一个学生可以选修多门课程,一门课程也可以被多个学生选修,学生修课后有成绩。 1 把 上面用关系表示的实体,实体与实体之间的联系,用 E-R图表示出来,要求在图中表示联系的类型
2、(1:1, L:N, M:N)。 2 使用关系代数表达式写出查询所有年龄在 20岁以下的学生姓名和年龄。 3 用 SQL语言写出查询:查询年龄不在 20 23岁 (包括 20岁和 23岁 )之间的学生的姓名,系别和年龄。 4 用 SQL语言写出操作:把数学系全体学生的成绩置零。 5 阅读以下说明,回答问题 1 4,将解答填入对应的解答栏内。 说明 现有如下关系模式: R(A#, B#, C, DE),其中, A#, B#为组合键, R上 存在的函数依赖有 (A #, B#) E , B#C , CD 5 该关系模式满足 2NF吗 ?为什么 ? 6 如果将关系模式 R分解为: R1(A#, B#
3、, E) R2(B#, C, D) 指出关系模式 R2的键,并说明该关系模式最高满足第几范式 (在 1NF BCNF之内 ) 7 将关系模式 R分解到 BCNF 8 在 E-R模型中,如果实体间是 1:N的联系,如何设计相应部分的关系模型 ? 9 阅读以下说明,回答问题 1 4,将解答填入对应的解答栏内。 说明 输入 1个长整型,求各位数字的平方和。 例如:输入 -123,输出 14。 #include stdio. h void main( ) int digit; long in , s; seanf(“ % Id“, (1); (2); while(in 0) (3); s = s +
4、digit* digit; (4); pfinff( “sum = % 1dn“, s ); 10 阅读以下说明,回答问题,将解答填入对应的解答栏内。 说明 某旅馆的电话服务如下:可以拨分机号和外线号码。分机号是从 7201至7299。外线号码先拨 9,然后是市话号码或长话号码。长话号码是以区号和市话号码组成。区号是从 100到 300中任意的数字串。市话号码是以局号和分局号组成。局号可以是 455, 466, 888, 552中任意一个号码。分局号是任意长度为 4的数字串。要求:写出在数据字典中,电话号码的数据条 目的定义 (即组成 )。 二、选答题(共 3道大题,每道大题 15分) 从下列
5、 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 11 阅读下列函数说明和 Java代码,将应填入 (n)处的字句写在对应栏内。 【说明】 通常情况下,用户可以对应用系统进行配置,并将配置信息保存在配置文件中,应用系统在启动时首先将配置文件加载到内存中,这些内存配置信息应该有且仅有一份。 下面的代码应用了单身模式 (Singleton)以保证 Configure类只能有一个实例。这样, Configure类的使用者无法定义该类的多个实例,否则会产生编译错误。 # include iostream.h class Configure (1); Configu
6、re(); /构造函数 public: static Configure *Instance(); public: int GetConfigureData()return data; /获取配置信息 int SetConfigureDate(int m_data) data=m_data; return data; /设置配置信息 private: static Configure* _instance; int data; /配置信息 ; (2)=NULL; Configure * Configure Instance() if(_instance=NULL) _instance=(3);
7、 /加载配置文件并设置内存配置信息,此处省略 return (4); void main() Configure *t=NULL; t=(5); int d=t- GetConfigureData(); /获取配置信息后进行其它工作,此处省略 12 阅读下列函数 说明和 Java代码,将应填入 (n)处的字句写在对应栏内。 【说明】 类 Queue表示队列,类中的方法如下表所示。 类 Node表示队列中的元素;类 EmptyQueueException给出了队列操作中的异常处理操作。 public class TestMain /主类 public static viod main (Stri
8、ng args) Queue q=new Queue(); q.enqueue(“first!“); q.enqueue(“second!“); q.enqueue(“third!“); (1) while(true) System.out.println(q.dequeue(); catch( (2) ) public class Queue /队列 Node m_FirstNode; public Queue()m_FirstNode=null; public boolean isEmpty() if(m_FirstNode=null)return true; else return fa
9、lse; public viod enqueue(Object newNode) /入队操作 Node next=m_FirstNode; if(next=null)m_FirstNode=new Node(newNode); else while(next.getNext()!=null)next=next.getNext(); next.setNext(new node(newNode); public Object dequeue() (3) /出队操作 Object node; if (isEempty() (4); /队列为空 , 抛出异常 else node=m_FirstNode
10、.getObject(); m_FirstNode=m_FirstNode.getNext(); return node; public class Node /队列中的元素 Object m_Data; Node m_Next; public Node(Object data) m_Data=data; m_Next=null; public Node(Object data, Node next) m_Data=data; m_Next=-next; public void setObject(Object data) m_Data=data; public Object getObjec
11、t(Object data) return m_data; public void setNext(Node next) m_Next=next; public Node getNext() return m_Next; public class EmptyQueueException extends (5) /异常处理类 public EmptyQueueException() System.out.println(“队列已空 ! “); 软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 34答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 【正确答案】 【试题解析】
12、实体联系模型 (ER模型 )中的基本语义单位是实体和联系。 ER模型的图形表示称为 ER图。联系可以同一个或多个实体有关。实体与实体之间的联系可以是一对一,一对多和多对多。利用 ER模型进行数据库的概念设计,可以分成三步:首先设计局部 ER,然后把各个局部 ER模型综合成一个全局的模型 ,最后对全局 ER模型进行优化,得到最终的 ER模型。关于 SQI语言,见 (13)解析。 2 【正确答案】 Sname, Sage( Sage 20( Student ) ) 3 【正确答案】 SELECT Shame, Sdept, Sage FROM Student WHERE Sage NOT BETW
13、EEN 20 AND 23或 SELECT Shame, Sdept, Sage FROM Student WHERE NOT(Sage BETWEEN 20 AND 23 )或 SELECT Sname, Sdept, Sage FROM Student WHERE(Sage 23) 4 【正确答案】 UPDATE SC SET Grade =0 WHERE MA =(SELECT Sdept FROM Student WHERE Student. Sno = SC. Sno) 5 【正确答案】 该关系模式不满足 2NF的要求 6 【正确答案】 R2(B#, C, D)最高满足 2NF 7
14、【正确答案】 R11(A#, B#, E) R21(B#, C) R22(C, D) 8 【正确答案】 在 E-R模型中,一个 1:N联系可以转换成为一个独立的关系模式,相连的实体的键以及联系本身的属性转换为关系的属性,关系的键为 N端实体的键。也可以与 N端对应的关系模式合并,将 1端实体对应的关系模式的键和联系本身的属性加入到 N端实体对应的关系模式的属性中。更倾向于后面这种方法。 【试题解析】 第二范式 (2NF):如果关系模式 R(U, F) 中的所有非主属性都完全依赖于任意一个候选关键字,则称关系 R是属于第二范式的。第三范式 (3NF):如果关系模式 R(U, F)中的所有非主属性
15、对任何候选关键字都不存在传递信赖,则称关系 R是属于第三范式的。 BCNF:如果关系模式R(U, P)的所有属性 (包括主属性和非主属性 )都不传递依赖于 R的任何候选关键字,那么称关系 R是属于 BCNF的。 由题可知, D并不依赖 B#,所以不满足 2NF。 R2, C和 D都依赖于 B#,可以满足 2NF;但 C, D问存在传递信赖,所以不 B2不属于第三范式,它最高满足2NF。将关系模式 R分解到 BCNF,就意味着要打破传递依赖,所以将 R2中的 C和 D分解到一个新的关系中。 9 【正确答案】 1.if(in 2 s=0 3 digit=in 10 4 in=in/10 【试题解析
16、】 本题的关键一是要考虑负数,还要将各个位数用模 10的方法单独取出来。 10 【正确答案】 电话号码 =分机号外线号码 分机号 =72017299 外线号码 =9+市话号码长话号码 长话号码 =区号 +市话号码 区号 =100300 市话号码 =局号 +分局号 局号 =455 466 888 552 分局号 =4数字 4 【试题解析】 数据字典是关于数据的信息的集合,对数据流图中的各个元素作完整的定义与说明,是数据流图的补充 工具。一般说来,数据字典应该由对下列六类元素的定义组成。 (1) 数据流 (2)数据项 (3)数据结构 (4)数据存储 (5)处理逻辑。 (6)外部实体除了数据定义之外
17、,数据字典中还应该包含关于数据的一些其他信息。根据题目所给的信息,需要注意的是最后分局号的写法。 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 11 【正确答案】 (1)public (2)Configure *Configure _instance (3)new Configure (4)_instance (5)Configure Instance() 【试题解析】 (1)public C+类中,构造函数属于公有成员函数,因此应该填入:public。 (2)Configure *Configure
18、 _instance C+类中静态成员变量赋初值,只能在函数和类外进行。 (3)new Configure Instance是类 Configure的静态成员函数,它只能访问类的静态成员 _instance,当指针 _instance为 NULL时,应该给_instance动 态分配内存,所以此处应该填入: new Configure。 (4)_instance 类Configure的静态成员函数 Instance的返回值是 Configure*,即 Configure类指针类型,由于此函数只能访问类的静态成员 _instance,因此返回值应当是指针_instance。所以此处应该填入: _
19、instance。 (5)Configure Instance() t是一个Configure类指针,初值为 NULL,因此此处必须首先动态开辟一个 Configure类对象,让 t指向这个对象,下面才能进行 d=t- GetConfigureData()访问对象的成员函数。所以此处应该填入: new Configure。 12 【正确答案】 (1)try (2)Exception e或者 EmptyQueueException e (3)throw EmptyQueueException (4)throw(new EmptyQueueException() (5)Exception 【试题解
20、析】 (1)try 从紧随其后的 catch可以断定这是异常处理的 try-catch结构。 (2)Exception e或者 EmptyQueueException e 其中 e是对象名,可用任意合法标识符替换,这是 catch要捕获的信息。 (3)throw EmptyQueueException 当队列为空时,抛出错误信息 EmptyQueueException。 (4)throw(new EmptyQueueException() 当队列为空时,抛出异常。动态生成 EmptyQueueException对象,出错处理。 (5)Exception EmptyQueueException对象是从异 常处理类 Exception扩展而来。