1、中级软件设计师下午试题-7 及答案解析(总分:104.00,做题时间:90 分钟)一、B试题一/B(总题数:3,分数:15.00)1.问题 1 如果将上述应用的数据库设计成如下关系模式; RS (A#,A1,A2,A3,B#,B1,B2,D1),请指出该关系模式的候选键。(分数:5.00)填空项 1:_2.问题 2 假设上述关系模式 RS 上存在函数依赖:A1A3。上述关系模式 RS 最高满足第几范式(在1NFBCNF 之内)?为什么?(分数:5.00)填空项 1:_3.问题 3 如果将上述应用的数据库设计为如下三个关系模式: R1 (A#,A1,A2,A3) R2 (B#,B1,B2) R3
2、 (A#,B#,D1) 那么关系模式 R2 是否一定满足第 3 范式?为什么?(分数:5.00)填空项 1:_二、B试题二/B(总题数:3,分数:15.00)4.问题 1 试解释这个对象联系图。(分数:5.00)填空项 1:_5.问题 2 试用 ORDB 的定义语言,定义这个数据库。(分数:5.00)填空项 1:_6.问题 3 使用 ORDB 的查询语言,分别写出下列查询的 SELECT 语句; 1) 检索每个学生的学习课程和成绩。 2) 检索至少有一门课程的求学地与籍贯在同一城市的学生的学号和姓名。 (分数:5.00)填空项 1:_三、B试题三/B(总题数:1,分数:15.00)7.说明 假
3、设二叉树采用链式存储方式存储,编写一个后序遍历二叉树的非递归方式。 Void postorder (btree * B) btree * stack m0 , *p; int tag m0, top =0; p=b; do while (p! =NULL) top+ +; U(1) /U tag top =0; p =p- left; if (top 0) U(2) /U if (tagtop3 = =1) U(3) /U print (“%d“, p- data); if(top0) U(4) /U tag top = 1; while (p! = NULL public: Point(in
4、t i, int j) U (1) /U int getx( ) return x; int gety( ) return y; void disp( ) U (2) /U ; float distance( Point U(3) /U return d; void main( ) U (4) /U p1. disp ( ); cout “与”; p2. diap( ); cout “之间距离=” distance (p1,p2) end1; (分数:15.00)填空项 1:_六、B试题六/B(总题数:1,分数:15.00)11.说明 编写一个完整的 JavaApplet 程序使用复数类 Co
5、mplex 验证两个复数 1+2i 和 3+4i 相加产生一个新的复数 4+6i。 复数类 Complex 必须满足如下要求: (1) 复数类 Complex 的属性有: RealPart: int 型,代表复数的实数部分 ImaginPart: int 型,代表复数的虚数部分 (2) 复数类 Complex 的方法有: Complex():构造函数,将复数的实部和虚部都置 0 Complex (intr,inti):构造函数,形参 r 为实部的初值,i 为虚部的初值。 ComplexeomplexAdd (Complexa):将当前复数对象与形参复数对象相加,所得的结果仍是一个复数值,返回给
6、此方法的调用者 String ToString():把当前复数对象的实部、虚部组合成 s+ bi 的字符串形式,其中 a 和 b 分别为实部和虚部的数据。 importjava. applet. * ; importjava. awt. * ; publicclassabcextends Applet Complex a, b, c; publi cvoid init( ) a = newComplex(1,2); b = newComplex(3,4); c = newComplex(); publievoidpaint (Graphicsg) U (1) /U g. drawstring(
7、 “第一个复数:” + a. toString(), 10,50); g. drawstring( “第二个复数:” + b. toString( ), 10,70 ); g. drawstring( “两复之和:” + c. toString( ), 10,90); class Complex int RealPart; int ImaginPart; Complex( ) U (2) /U Complex( intr , inti) U (3) /U ComplexeomplexAdd (Complexa) Complextemp = newComplex( ); temp. BealPa
8、rt = RealPart + a. BealPart; U(4) /U returntemp; public StringtoString( ) return( RealPart + “ + “ + ImaginPart + “ i “); (分数:15.00)填空项 1:_七、B试题七/B(总题数:1,分数:15.00)12.说明 已有一个工程文件,窗体上有两个图片框,名称为 P1,P2。分别用来表示信号灯合汽车,其中在 P1 中轮流装入“黄灯.ico”、“红灯.ico”、“绿灯.ico”文件来实现信号灯的切换;还有两个计时器 Timer1 和 Timer2,Timer1 用于变换信号灯,
9、黄灯 1 秒,红灯 2 秒,绿灯 3 秒;Timer2 用于控制汽车向左移动。运动时,信号灯不断变换,单击“开车”按钮后,汽车开始移动,如果移动到信号灯前或信号灯下,遇到红灯或黄灯,则停止移动。下面是实现上述功能的程序,请填空。 Private Sub Timer41_ Timer() a=a+1 IfU (1) /UThen a=1 End If Select Case a Case 1 P1. Picture = LoadPicture( “黄灯.ico” ) Case 2, 3 P1. Picture = LoadPicture( “红灯”.ico” ) Case4, 5, 6 P1.
10、Picture = LeadPicture( “绿灯. ico” ) U (2) /U End Select End Sub Private Sub Timer2_Timer( ) IfU (3) /UAnd (P2. Left P1. Left And P2. Left P1. Left + P1. Width) Or P2. Left = 100 Then Timer2. Enabled = False Else U (4) /U End If End Sub(分数:15.00)填空项 1:_中级软件设计师下午试题-7 答案解析(总分:104.00,做题时间:90 分钟)一、B试题一/B(
11、总题数:3,分数:15.00)1.问题 1 如果将上述应用的数据库设计成如下关系模式; RS (A#,A1,A2,A3,B#,B1,B2,D1),请指出该关系模式的候选键。(分数:5.00)填空项 1:_ (正确答案:(A#,B#))解析:解答要点 根据候选关键字的定义:设关系模式 R (A1,A2,An),F 是 R 上的函数依赖集。X 是 R的一个子集,xA1A2AnF +(它的意思是 X 能够决定唯一的一个元组)。不存在 X 的真子集 Y,使得 Y 也能决定唯一的一个元组,则 X 就是 R 的一个候选键(它的意思是,X 能决定唯一的一个元组但又没有多余的属性集。)由于(A#,B#) +=
12、(A#,A1,A2,A3,B#,B1,B2,D1),即 (A#,B#)(A#,A1,A2,A3,B#,B1,B2,D1)F +,而且(A#) +=(A#,A1,A2,A3),(B#)+=(B#,B1,B2)。因此,(A#,B#)是关系模式贴的候选键。假设第二问的关系模式 RS 上存在函数依赖:A1A3,则贴只满足 1NF,不满足 2NF,因为存在非主属性A3 对键(A#,B#)的传递依鞍,而且存在非主属性对键的部分函数依赖。在第三问中,因为 R2 中有两个非主属性 B1 和 B2,候选键是 B#,既不存在非属性对候选键的部分函数依赖,也不存在非主属性对候选键的传递函数依赖。2.问题 2 假设上
13、述关系模式 RS 上存在函数依赖:A1A3。上述关系模式 RS 最高满足第几范式(在1NFBCNF 之内)?为什么?(分数:5.00)填空项 1:_ (正确答案:最高满足 INF)解析:3.问题 3 如果将上述应用的数据库设计为如下三个关系模式: R1 (A#,A1,A2,A3) R2 (B#,B1,B2) R3 (A#,B#,D1) 那么关系模式 R2 是否一定满足第 3 范式?为什么?(分数:5.00)填空项 1:_ (正确答案:满足第三范式)解析:二、B试题二/B(总题数:3,分数:15.00)4.问题 1 试解释这个对象联系图。(分数:5.00)填空项 1:_ (正确答案:对象 stu
14、dent 包含身份证号,姓名,籍贯和学习(studies)等属性,对象 study 包含课程名,成绩,求学地,大学以及学生(student )等属性。对象 student 和 study 之间联系为 1:N。)解析:基本表的创建,修改和撤销语句语法为: CREATE TABLE SQL 模式名. 基本表名 (列名类型, 完整性约束,); 其中,完整性约束包括主键子句,检查子句和外键子句。5.问题 2 试用 ORDB 的定义语言,定义这个数据库。(分数:5.00)填空项 1:_ (正确答案:CREATETYPE MyString char vaiying;)解析:CREATE TABLE stu
15、dent ( sno integer, shame MyString, city MyString studies setoff ( ref (study); CREATETABLE study (coursename MyString grade integer, city MyString, university MyString, student ( ref (student) ) );6.问题 3 使用 ORDB 的查询语言,分别写出下列查询的 SELECT 语句; 1) 检索每个学生的学习课程和成绩。 2) 检索至少有一门课程的求学地与籍贯在同一城市的学生的学号和姓名。 (分数:5.
16、00)填空项 1:_ (正确答案:1) SELECT A. sname, B. coursename, B. grade)解析:FROM student as A, A. studies as B; 2) SELECT A. sno, A. sname FROM student as A, A. student as B WHERE A. ciy = B. ciy三、B试题三/B(总题数:1,分数:15.00)7.说明 假设二叉树采用链式存储方式存储,编写一个后序遍历二叉树的非递归方式。 Void postorder (btree * B) btree * stack m0 , *p; int
17、 tag m0, top =0; p=b; do while (p! =NULL) top+ +; U(1) /U tag top =0; p =p- left; if (top 0) U(2) /U if (tagtop3 = =1) U(3) /U print (“%d“, p- data); if(top0) U(4) /U tag top = 1; while (p! = NULL public: Point(int i, int j) U (1) /U int getx( ) return x; int gety( ) return y; void disp( ) U (2) /U ; float distance( Point U(3) /U return d; void main( ) U (4) /U p1. disp ( ); cout “与”; p2. diap( ); cout “之间距离=” distance (p1,p2) end1; (分数:15.00)填空项 1:_ (正确答案:x=i; y=j;)解析:clout6)解析:If b Then Timer2. Enabled =b (a (4) P2. Move P2. Left - 10, P2. Top, P2. Width, P2. Height