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

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

1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 24及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 阅读下列说明和数据流图,回答问题 1至问题 3。 【说明】 某供销系统接受顾客的订货单,当库存中某配件的数量小于订购量或库存量低于一定数量时,向供应商发出采货单;当某配件的库存量大于或等于订购量时,或者收到供应商的送货单时并更新了库存后,向顾客发出提货单。该系统还可随时向总经理提供销售和库存情况表。 以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定顶层数据流图是正确的。图 9-8是顶层数据流图,图 9-9所示是第 0层数据流图,图 9-10是第 1层数

2、据流图,其中 (A)是加工 1的子图, (B)是加工 2的子图。【数据字典】 (1)数据流条目 订货单 =配件号 +配件名 +规格 +数量 +顾客名 +地址 提货单 =订货单 +金额 采货单 =配件号 +配件名 +规格 +数量 +供应商名 +地址 送货单 =配件号 +配件名 +规格 +数量 +金额 (2)文件说明 文件名:配件库存 组成: 配件号 +配件名 +规格 +数量 +允许的最低库存量 1 根据题意,图 9-9中哪个文件可不必画出。 2 根据题意,指出图 9-10(A)中缺失 的数据流的名称,并指出该数据流的起点和终点。 3 根据题意,指出图 9-10(B)中缺失的数据流的名称,并指出该

3、数据流的起点和终点。 4 阅读下列说明和图,回答问题 1至问题 3。 【说明】 某学校的教学系统描述如下。 学生信息包括:学号 (Sno)、姓名 (Sname)、性别 (Ssex)、年龄 (Sage)、入学年份 (Syear)、主修专业 (Smajor),其中学号是入学时唯一编定的。 教师信息包括:教工号 (Tno)、姓名 (Tname)、性别 (Tsex)、年龄 (Tage)、职称 (Ttitle),其中教工号是唯一 编定的。 课程信息包括:课程号 (Cno)、课程名称 (Cname)、学时 (Cperiod)、学分(Ccredit),其中课程号是唯一编定的。 每个专业每个年级只有一个班级,

4、这样班级就可用入学年份标识。 每位教师只教授特定的一门的课程,每门课程可以有多个教师教授,各位老师的上课地点及上课时间有所不同。注意:一门课程至少有一位教师教授,否则这门课程就视为不存在。 每位学生可以同时选修多门不同的课程,一门课程至少要有 10位学生选修,否则就取消这门课程的开设。注意:选修课程时要指定任课教师,不能重复选修同一门课程。课 程结束后,任课教师给选修该课程的学生一个成绩 (Grade)。注意:教师不能给没有选修他所教授课程的学生成绩,即使选修了其他教师教授的同一门课也不行。 如图 9-11所示是经分析得到的 E-R图。4 根据题意,给出联系的属性。实体间的联系有 “一对一 ”

5、、 “一对多 ”和 “多对多 ”,指出各联系分别属于哪一种。 5 按照 “有关模式名 (属性,属性, .)”的格式,将此 E-R图转换为 5个关系模式,指出每个关系模式中的主键和外键,其中模式名根据需要取实体名或联系名。 6 若用 Student表存储学生信息, Teacher表存储教师信息, Course表存储课程信息, Study表存储学生选修课程情况。教务处想要 “查询 2006年入学的计算机专业(CS)的学生中平均成绩在 85分以上的学生信息 ”。请将以下 SQL语句补充完整。注:用对应英文表示。 SELECT *FROM Student WHERE Smajor=“CS“ AND S

6、year=“2006“ AND(1) (SELECT Sno FROM Study GROUP BY Sno HAVING(2) 7 阅读下列说明和图,回答问题 1至问题 3。 【说明】 某大型旅店为了便于管理,欲开发一个客房管理系统。希望实现客房预订、入住登记、账务结算、退房,以及将服务项目记入客人账单。 旅客包括散客和团体,散客预订或入住时需要提供姓名、性别、身份证和联系电话,团体则提供团体名称、负责人的姓名、性别、身份证和联系电话,以及团体人数。对于散客,还要提供换房。 旅店还提供了很多服务项目,比如早餐。对每一个入住客人,服务列表记录了住宿期间的各项服务,包括服务类型、日期、数量等。当

7、 然,客人也可以不要任何服务。 旅店的客房有一个唯一的房间号,分为不同的类别,不同的房间床位数和价格不同。 为了有效的管理,需要记录每天的客房状态。客房的状态有:空闲、占用、已预订和维修。 . 客人入住后,客房处于占用状态。 . 客人退房后,客房处于空闲状态。 . 客人预订后,客房处于已预订状态。 . 预订客人入住后,客房处于占用状态。 . 预订客人取消预订后客房处于空闲状态。 . 需要维修时客房处于维修状态。 . 维修完成后客房处于空闲状态。 该系统采用面向对象方法开发,系统中的类及类之间的关系用UML类图 表示,如图 9-12所示是该系统的类图的一部分,图 9-13描述了客房状态的转变情况

8、。7 请用如图 9-12所示的属性和方法的名称给出客人类的属性和方法 (注意;团体类中的负责人姓名等与散客的对应属性含义相同,不必区分 )。 8 在 UML中,重复度 (Multiplicity)定义了某个类的一个实例可以与另一个类的多少个实例相关联。通常把它写成一个表示取值范围的表达式或者一个具体的值。例如图 9-12中的类客人和住宿,客人端的 “1”表示:一个住宿类的实例只能与一个客人类的实例相关联;住宿类端的 “0*”表示 :一个住宿类的实例可以与 0个或多个客人类的实例相关。请指出图 9-12中 (1)到 (4)处的重复度分别为多少 ? 9 根据题意,请指出图 9-13中状态 A、 B

9、分别是什么状态,事件 C、 D分别是什么事件。 10 阅读下列函数说明、图和 C代码,将应填入 (n)处的字句写在对应栏内。 【说明】 当一元多项式 aixi中有许多系数为零时,可用一个单链表来存储,每个节点存储一个非零项的指数和对应系数。 为了便于进行运算,用带头节点的单链表存储,头节点中存储多项式中的非零项数,且各节点按指数递减顺序存储。例如:多项式 8x5-2x2+7的存储结构为: 函数中使用的预定义符号如下: #define EPSI le-6 struct Node( /*多项式中的一项 */ double c; /*系数 */ int e; /*指数 */ struct Node

10、*next; ; typedef struct /*多项式头节点*/ int n; /*多项式不为零的项数 */ struct Node *head; POLY; 【函数】 void Del(POLY *C, struct Node *p) /*若 p是空指针则删除头节点,否则删 除 p节点的后继 */ struct Node *t; /*C是空指针或 C没有节点 */ if(C=NULL|C-head=NULL)return; if(1)/*删除头节点 */ t=C- head; C- head=t- next; return; /*if*/ t=p- next; p- next=t- ne

11、xt; ;/*Del*/ void Insert(POLY *C, struct Node *pC) /*将 pC节点按指数降序插入到多项式 C中 */ /*若 C中存在 pC对应的指数项,则 将系数相加;若其结果为零,则删除该节点 */ struct Node *t, *tp; /*pC为空指针或其系数近似为零 */ if(pC=NULL | fabs(pC- c) EPSI)return; if(C-head=NULL) /*若 C为空 , 作为头节点插入 */ C- head=pC; pC- next=NULL; C- n+; return; /*if*/ /*若 pC的指数比头节点的还

12、大 , 插入到头节点之前 */ if(pC- e C- head- e) (2); C- head=pC; C- n+; return; /*if*/ (3); t=C- head; while(t!=NULL) if(t- e pC- e) tp=t; t=t- next; else if(t- e=pC- e)/*C中已经存在该幂次项 */ t- c+=pC- c;/*系数相加 */ if(fabs(t- c) EPSI)/*系数之和为零 */ (4);/*删除对应节点 */ C- n-; (5); else t=NULL;/*C中已经不存在该幂次项 */ /*while*/ if(t=N

13、ULL)/*适当位置插入 */ pC- next=tp- next; tp- next=pC; C- n+; /*if*/ ;/*Insert*/ 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 11 阅读以下函数说明和 Java代码,将应填入 (n)处的字句写在对应栏内。 【说明】 现要编写一个画矩形的程序,目前有两个画图程序: DP1和 DP2, DP1用函数draw_a_line(x1, y1, x2, y2)画一 条直线, DP2则用 drawline(x1, x2, y1, y2)画一条直线。

14、当实例画矩形时,确定使用 DP1还是 DP2。 为了适应变化,包括 “不同类型的形状 ”和 “不同类型的画图程序 ”,将抽象部分与实现部分分离,使它们可以独立地变化。这里, “抽象部分 ”对应 “形状 ”, “实现部分 ”对应 “画图 ”,与一般的接口 (抽象方法 )与具体实现不同。这种应用称为 Bridge(桥接 )模式。图 9-6显示了各个类间的关系。 这样,系统始终只处理 3个对象: Shape对象、 Drawing对象、 DP1或 DP2对象。以下是 Java语言实现,能够 正确编译通过。 【 Java代码】 /DP1.java文件 public class DP1 static pu

15、blic void draw_a line(double x1,double y1, double x2,double y2) /省略具体实现 /DP2.java文件 public class DP2 static public void drawline(double x1,double y1, double x2,double y2) /省略具体实现 /Drawing.java文件 (1) public class Drawing abstract public void drawLine(double x1, double y1, double x2, double y2); /V1Dr

16、awing.java文件 public class V1Drawing extends Drawing public void drawLine(double x1, double y1, double x2, double y2) DP1.draw_a_line(x1,y1,x2,y2); /V2Drawing.java文件 public class V2Drawing extends Drawing public void drawLine(double x1,double y1, double x2, double y2)(/画一条直线 (2); /Shape.java文件 abstra

17、ct public class Shape abstract public void draw(); private (3) _dp; Shape(Drawing dp) _dp=dp; protected void drawLine(double x1,double y1, double x2, double y2) (4); /Rectangle.java文件 public class Rectangle extends Shape private double_x1,_x2,_y1,_y2; public Rectangle(Drawing dp, double x1,double y1

18、, double x2,double y2) (5); _x1=x1;_x2=x2; _y1=y1;_y2=y2; public void draw() /省略具体实现 12 阅读以下说明和 c+代码,将应填入 (n)处的字句写在对应栏内。 【说明】 现要编写一个画矩形的程序,目前有两个画图程序: DP1和 DP2, DP1用函数draw_a_line(x1, y1, x2, y2)画一条直线, DF2则用 drawline(x1, x2, y1, y2)画一条直线。当实例画矩形时,确定使用 DP1还是 DP2。为了适应变化,包括 “不同类型的形状 ”和 “不同类型的画图程序 ”,将抽象部分与

19、实现部分分离,使它们可以独立地变化。这里, “抽象部分 ”对应 “形状 ”, “实现 部分 ”对应 “画图 ”,与一般的接口 (抽象方 法 )与具体实现不同。这种应用称为 Bridge(桥接 )模式。图 9-7显示了各个类间的关系。 这样,系统始终只处理 3个对象: Shape对象、 Drawing对象、 DP1或 DP2对象。以下是 C+语言实现,能够正确编译通过。 【 C+代码】 class DP1 public: static void draw_a_line(double x1, double y1,double x2, double y2) /省略具体实现 ); class DP2

20、public: static void drawline(double x1, double x2,double y1, double y2) /省略具体实现 ; class Drawing public: (1) void drawLine(double x1,double y1,double x2,double y2)=0; ; class V1Drawing:public Drawing public: void drawLine(double x1, double y1,double x2, double y2) DP1:draw_a_line(x1,y1,x2,y2); ; clas

21、s V2Drawing:public Drawing public: void drawLine(double x1, double y1, double x2, double y2) (2); ; class Shape private: (3) _dp; public: Shape(Drawing *dp); virtual void draw()=0; void drawLine(double x1, double y1, double x2, double y2); ; Shape:Shape(Drawing *dp) _dp = dp; void Shape:drawLine(dou

22、ble x1, double y1, double x2, double y2) /画一条直线 (4); class Rectangle: public Shape private: double _x1,_y1,_x2,_y2; public: Rectangle(Drawing *dp, double x1, double y1, double x2, double y2); void draw(); ; Rectangle:Rectangle(Drawing *dp, double x1, double y1, double x2, double y2) :(5) _x1=x1;_y1=

23、y1;_x2=x2;_y2=y2; void Rectangle:draw() /省略具体实现 软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 24答案与解析 一、必答题(共 4道大题,每道 大题 15分) 1 【正确答案】 采购订单 【试题解析】 分层数据流图中,只涉及单个加工的文件不必画出,可在子图中再画。 依此标准,图 9-10中文件 “采购订单 ”只与加工采购有关,故不必画出。 2 【正确答案】 起点:库存配件,终点:确定顾客订单。 起点:库存配件,终点:制作的销售及库存情况表。 提货单,起点:更新库存,终点:顾客。 到货通知,起点;采购,终点:缺到货对照。 【试题解析】

24、分层数据流图时刻牢记父图与子图平衡原则。对这种数据流缺失题目,认真对照父图与子图就可得出答案。另外 ,还要注意与文件的交互,包括错误数据流大多也是出在此。 根据题述,图 9-11A是加工 1的细化图,加工 1在图 9-10中,认真对照其输入输出数据流。发现缺失数据流 “提货单 ”和 “到货通知 ”,进一步确定数据流的起点和终点。 “提货单 ”是输出数据流,起点应为加工 “更新库存 ”,其终点自然是 “客户 ”; “到货通知 ”是输入数据流,终点应为加工 “缺到货对照 ”,起点应为加工 “采购 ”。 另外,确定顾客订单时,需要检查库存配件,因此应有文件 “配件库存 ”到加工1.2的数据流。同理,

25、也应有文件 “配件库存 ”到加工 1.4的数据流。 3 【正确答案】 采购单,起点:按供应商汇总,终点:供应商。 采购请求,起点:销售,终点:计算配件增量。 【试题解析】 同问题 2的分析,仔细对照父图与子图的输入输出数据流,并确认与文件相关的数据流。 4 【正确答案】 教授:上课地点、上课时间,一对多 选修:任课教师、成绩,多对多 【试题解析】 “每位教师只教授特定的一门的课程,每门课程可以有多个教师教授,各位老师的上课地点及上课时间有所不同 ”,因此联系 “教授 ”的属性应有:上课地点、上课时间,是一对多联系。 “每位学生可以同时选修 多门不同的课程,一门课程至少要有 10位学生选修, 选

26、修课程时要指定任课教师, 任课教师给选修该课程的学生 个成绩 (Grade)”,因此联系 “选修 ”的属性应有:任课教师、成绩,是多对多联系。 5 【正确答案】 教师 (教工号,姓名,性别,年龄,职称 ),主键:教工号 课程 (课程号,课程名称,学时,学分 ),主键:课程号 学生 (学号,姓名,性别,年龄,主修专业,入学年份 ),主键:学号 教授 (教工号,课程号,上课地点,上课时间 ),主键: (教工号 ) 选修 (学号,课程号,任课教师,成绩 ),主键: (学号,课程号 )或 (学号,任课教师 ) 【试题解析】 E-R模型向关系模型的转换应遵循如下原则: 每个实体类型转换成一个关系模式。

27、一个 1:1的联系 (一对一联系 )可转换为一个关系模式,或与任意一段的关系模式合并。若独立转换为一个关系模式,那么两端关系的键及其联系的属性为该关系的属性;若与一段合并,那么将另一端的键及属性的属性合并到该端。 一个 1:n 的联系 (一对多联系 )可转换为一个关系模式,或与 n 段的关系模式合并。若独立转换为一个关系模式,那么两端关系的键及其联系的属性为该关系的属性,而 n端的键为关系 的键。 一个 n:m的联系 (多对多联系 )可转换为一个关系模式,两端关系的键及其联系的属性为该关系的属性,而关系的键为两端实体的键的组合。 3个或 3个以上多对多的联系可转换为一个关系模式,诸关系的键及联

28、系的属性为关系的属性,而关系的键为各实体的键的组合。 具有相同键的关系可以合并。 由于 “每位教师只教授特定的一门的课程 ( 学生 )不能重复选修同一门课程 ”,因此教授联系的主键是 “教工号 ”,修选联系的主键可以是 “(学号,课程号 )”,也可以是 “(学号,任课教师 )”。 6 【正确答案】 (1)Sno IN (2) AVG(Grade) 85 【试题解析】 SELECTALL|DISTINCT目标列表达式 ,目标列表达式 FROM表名或视图名 ,表名或视图名 WHERE条件表达式 GROUP BY列名 1 HAVING条件表达式 ORDER BY列名 2 ASC|DESC 子句顺序为

29、 SELECT、 FROM、 WHERE、 GROUPBY、 HAVING、ORDERBY,但 SELECT 和 FROM是必需的, HAVING子句只能与 GROUPBY搭配起来使用。 子查询的语意应为 “按学号分组、平均分大于 85的学生的学号 ”,可得空 (1)应填Sno IN,空 (2)应填 AVG(Grade) 85。 7 【正确答案】 属性:姓名、性别、身份证、联系电话 方法:预定、入住、结账 【试题解析】 “客人 ”类是 “散客 ”类和 “团体 ”类的泛化,具有二者的公共属性和公共方法。比对二者属性及方法得, “客人 ”类属性有:姓名、性别、身 份证、联系电话,方法有:预订、入住

30、、结账。 8 【正确答案】 (1)01(2) 1*(3) 1(4) 0* 【试题解析】 散客入住时只改变一个客房状态,而团体入住时则有可能改变多个客房状态;客房状态改变不一定是住宿导致的,客房维修同样改变客房状态。因此 (1)处应填 01, (2)处应填 1*。 客人可以有多项服务,但只需用一张 “服务列表 ”,当然也可能不需要任何服务;而一张服务列表必然属于而且只输于一个住宿。因此 (3)处应填 1, (4)处应填 01。 9 【正确答案】 A:空 闲 B:占用 C:入住 D:取消预订 【试题解析】 “维修 ”完成后客房处于 “空闲 ”状态,故状态 A为 “空闲 ”:客人入住后,客房有 “空

31、闲 ”转为 “占用 ”,故状态 B为 “占用 ”;状态 “已预订 ”经 “入住 ”转为 “占用 ”,故 C为 “入住 ”;状态 “已预订 ”经 “取消 ”转为 “空闲 ”,故 D为 “取消 ”。 10 【正确答案】 (1) p=NULL (2) pC- next=C- head- next (3) tp=NULL (4) Del(C, tp) (5) break 【试题解析】 根据注释, Del函数当 p是空指针时,删除头节点,因此易知 (1)空应填 p=NULL。 (2)空是插入头节点的特殊情况,应填 pC- next=C- head- next。 由注释可知空 (4)是删除操作,需调用 D

32、el函数,进一步确定实参。此处需要删除节点 t,结合 Del 函数的说明,实参 p 需要空指针 (NULL)或 t节点的前驱指针,由if(t- e pC- e)tp =t;t=t- next;可知, tp 正是 t节点的前驱指针,因此应填Del(C,tp)。由此也可以确定空 (3),当需要删除头节点时, tp 应是空指针,因此 空(3)应填 tp=NULL。 至于空 (5),应填 break。此时,节点 p已正确处理完毕,应该结束 while循环,而且必须终止,否则 while循环结束后 t值为 NULL,将会错误地执行插入操作。 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题

33、中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 11 【正确答案】 (1) abstract (2) DP2.drawline(x1, x2, y1, y2) (3) Drawing (4) _dp.drawLine(x1, y1, x2, y2) 【试题解析】 由类 Drawing的 drawLine()方法是 abstract的,因此 Drawing要么是接口,要么是抽象类,在此为抽象类,故空 (1)应填 abstract。 空 (2)是调用 DP2系统的相应方法,可参照 DP1的对应函数的函数体,但要注意参数不完全相同,应填 DP2.drawline(x1,

34、 x2, y1, y2)。 _dP属性是用来存储 Drawing对象的,参照 Shape的构造函数可确认这一点,空(3)应填 Drawing。 Shape类的 drawLine方法是通过调用 Drawing对应的方法来实现所需要的功能,因此空 (4)应填 _dp.drawLine(x1, y1, x2, y2)。 空 (5)显然是基类构造函数,应填 super(dp)。 (5) super(dp) 12 【正确答案】 (1) virtual (2) DP2:drawline(x1, x2, y1, y2) (3) Drawing (4) _dp- drawLine(x1, y1, x2, y2

35、) (5) Shape(dp) 【试题解析】 由函数 drawLine()结尾的 “=0”易知,空 (1)应填 virtual。 空 (2)是调用 DP2系统的相应方法,可参照 DP1的对应函数的函数体,但要注意参数不完全相同,应填 DP2:drawline(x1, x2, y1, y2)。 _dp 属性是用来存储 Drawing对象的,参照 Shape的构造函数可确认这一点,空(3)应填 Drawing*。 Shape类的 drawLine方法是通过调用 Drawing对应的方法来实现所需要的功能,因此空 (4)应填 _dp- drawLine(x1, y1, x2, y2)。 空 (5)显然是基类构造函数,应填 Shape(dp)。

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

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

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