1、计算机水平考试中级软件设计师 2011 年下半年下午真题及答案解析(总分:90.00,做题时间:150 分钟)(分数:15.00)(1). (分数:3.75)_(2). (分数:3.75)_(3). (分数:3.75)_(4). (分数:3.75)_(分数:15.00)(1). (分数:5.00)_(2). (分数:5.00)_(3). (分数:5.00)_(分数:15.00)(1). (分数:5.00)_(2). (分数:5.00)_(3). (分数:5.00)_1. (分数:15.00)_二、从下列的 2 道试题(试题五和试题六)中任(总题数:2,分数:30.00)2. (分数:15.00
2、)_3. (分数:15.00)_计算机水平考试中级软件设计师 2011 年下半年下午真题答案解析(总分:90.00,做题时间:150 分钟)(分数:15.00)(1). (分数:3.75)_正确答案:(3 分,各 1 分) E1:应聘者 E2:部门经理 E3:工资系统)解析:解析:本题考查数据流图(DFD)的应用,采用结构化方法进行系统分析与设计,是一道传统题目,要求考生细心分析题目中所描述的内容。 DFD 是一种便于用户理解、分析系统数据流程的图形化建模工具,是系统逻辑模型的重要组成部分。 本问题考查顶层 DFD。顶层 DFD -般用来确定系统边界,将待开发系统看作一个加工,因此图中只有唯一
3、的一个处理和一些外部实体,以及这两者之间的输入输出数据流。外部实体可以是使用系统的用户,也可以是为系统提供输入或接收系统输出的外部系统。本问题要求根据描述确定图中的外部实体。应仔细分析题目中描述,并结合已经在顶层数据流图中给出的数据流进行分析。从题目的说明中可以看出,与系统的交互者包括应聘者、部门经理和工资系统。分析说明中的描述可知,应聘者提供自身信息,并接收系统验证合格后的致谢信息等。部门经理设置职位要求。对录用者而言,将其录用职位和信息发送给工资系统。对应图 1-1 中数据流和实体的对应关系,可知 E1 为应聘者,E2 为部门经理,E3 为工资系统。(2). (分数:3.75)_正确答案:
4、(2 分,各 1 分) D1:末录用的应聘者表 D2:评价结果表)解析:解析:本问题考查 DFD 中数据存储的确定。本题中涉及的数据存储只有 2 个,一个是存储未被录用的应聘者信息,即未录用的应聘者表;另一个是存储对录用的应聘者进行职位安排评价的评价结果,即评价结果表。可以确定图 1-2 中 D1 和 D2 为未录用的应聘者表和评价结果表,因为有一个处理与这两个数据存储相关,需要再对应图 1-3,可确认 D1 为未录用的应聘者表,D2 为评价结果表。(3). (分数:3.75)_正确答案:(6 分,各 2 分) P1:验证信息 P2:审查申请 P3:职位安排评价)解析:解析:本问题考查 1 层
5、 DFD 中缺失的处理。从说明(1)中接受申请的描述功能,需先对应聘者信息进行验证,受理验证合格的申请,可知缺失的处理 P1 为验证信息。说明(2)中,根据职位要求,审查已经受理的申请,对录用者进行职位安排评价,可知缺失的处理 P2 为审查申请,P3 为职位安排评价。(4). (分数:3.75)_正确答案:(4 分) 不平衡。图 l-2 中加工的输入输出流与其子图 1-3 中的输入输出流的数量不同。(1 分) )解析:解析:本问题考查绘制分层 DFD 时的注意事项。在分层 DFD 中,需要保持父图与子图的平衡。即父图中某加工的输入输出数据流必须与其子图的输入输出数据流在数量和名字上相同,或者父
6、图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流。 本题中,图 1-2 中加工的输入输出流与其子图 1-3 中的输入输出流的数量不同。也无需将父图中一条数据流分解成子图中多条数据流,因此,补充子图中缺失的输入或输出数据流:录用职位、已受理的申请、谢绝决策。(分数:15.00)(1). (分数:5.00)_正确答案:(5 分,每个联系 0.5 分,每个联系的联系类型 0.5 分,图中的 n 可表示为*或 m,对联系名称可不做要求,但不能出现重名) )解析:解析:本题考查数据库系统中实体联系模型(E-R 模型)和关系模式
7、设计方面的应用知识。 两个实体集之间的联系类型分为三类:一对一(1:1)联系、一对多(1:n)联系和多对多(m:n)联系。 根据题意,每名员工只能在一个部门工作,所以部门和员工之间有一个 1:n 的“所属”联系;由于每个部门有一名经理,只需负责管理本部门的事务和人员,因此部门和经理之间有一个 1:1 的“管理”联系;由于一个业务员可以安排多个托运申请,但一个托运申请只由一个业务员处理,故业务员和托运申请之间有一个 1:n 的“托运”联系;又由于一个客户可以有多个货物托运申请,但一个托运申请对应唯一的一个客户号,故客户和托运申请之间有一个 1:n 的“申请”联系。 根据上述分析,完善图 2-1
8、所示的实体联系图可参见参考答案(2). (分数:5.00)_正确答案:(8 分) )解析:解析:根据题意,部门和员工之间有一个 1:n 的“所属”联系需要将一端的码并入多端,故员工关系模式中的空(a)应填写部门号;在客户关系模式中,客户号为主键,故空(b)应填写客户号;在托运申请关系模式中,申请号、客户号为主键,故空(c)应填写申请号、客户号;又由于一个业务员可以安排多个托运申请,但一个托运申请只由一个业务员处理,因此在安排承运关系模式中,申请号为主键,故空(d)应填写申请号。 部门关系模式中的部门号为主键,经理为外键;因为经理来自员工关系。员工关系模式中的员工号为主键,部门号为外键,因为部门
9、号来自部门关系。安排承运关系模式中的申请号为主键,业务员为外键,因为业务员来自员工关系。(3). (分数:5.00)_正确答案:(2 分,联系 1 分,关系模式 1 分) )解析:解析:根据题意,权限的设置人是部门经理,因此,需要建立一个权限关系模式,以及经理到权限之间的 1:n 的“设置”联系。修改后的实体联系图和关系模式参见参考答案。(分数:15.00)(1). (分数:5.00)_正确答案:(4 分) U1:使用常规卡行驶 U2:使用单次卡行驶(各 1 分) (1):extend (2 分)解析:解析:本题属于经典的考题,主要考查面向对象分析方法以及 UML 的用例图和类图的相关知识。
10、本问题要求将图 3-1 所给出的用例图补充完整。用例图的构成要素有:参与者、用例以及用例之间的关系。图中缺少了两个用例,以及一个用例关系。解答此题时,首先应从说明中找到所有的用例。 用例表示系统的一个单一业务功能。从题目的描述中可以看出,系统的主要功能就是申请行驶卡,以及使用行驶卡行驶。由于行驶卡分为三种,所以在说明中详细描述了三种行驶卡的使用方法。再结合用例图来看,缺少的两个用例与用例“使用季卡行驶”有关联关系,由此可以推断出,需要补充的这两个用例必定与另外两种行驶卡相关,分别为“使用常规卡行驶”和“使用单次卡行驶”。 下面需要解决的问题是这两个用例与U1 和 U2 的对应关系。这就需要仔细
11、考查一下用例图所给出的用例关系。由图 3-1 可知,U1 和“使用季卡行驶”之间是泛化(generalization)关系。当多个用例共同拥有一种类似的结构和行为时,可以将它们的共性抽象为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。根据说明中的“季卡的使用流程与常规卡类似,但是不需要打印费用单,系统自动从卡中扣除应付费用”可知,U1 应该对应着用例“使用常规卡行驶”。由此不难得出 U2 对应着用例“用单次卡行驶”。 现在图中只剩下(1)处的用例关系没有确定。用例之间的关系在用例图上只有三种:包含(incl
12、ude)、扩展(extend)和泛化(generalization)。 包含关系是指当多个用例中存在相同事件流时,可以把这些公共事件流抽象成为公共用例,这个公共用例称为抽象用例,而原始用例称为基础用例。基础用例和抽象用例之间是包含关系。 如果一个用例明显地混合了两种或两种以上的不同场景,则可以将这个用例分为一个基本用例和多个扩展用例。扩展关系用“extend”表示,箭头指向基本用例。 包含关系和扩展关系的区别在于,抽象用例中的事件流一定要插入到基本用例中去,并且插入点只有一个,通常抽象用例不能脱离基本用例而独立存在。扩展用例的事件流往往可以抽象为基本用例的备选事件流,在扩展关系中,可以根据一定
13、的条件来决定是否将扩展用例的事件流插入到基本用例的事件流中,并且插入点可以有多个。 根据以上分析可知,(1)处的用例关系选择“extend”最为合适。(2). (分数:5.00)_正确答案:(8 分,各 1 分) C1:RoadSegment C2:Trajectory C3:Card C4:RegularCard C5:PrepaidCard C6:MinitripCard (2)1 (3)13)解析:解析:本问题考查的是类图建模。解题的重点在于根据类图中提供的类及类之间的关联关系,推断出剩余的类。 可以先观察一下类图。可以看到,需要补充的类基本上集中在两个结构上:聚集结构(类C1 和 C2
14、)以及继承结构(类 C3C6)。继承结构是比较容易辨识的类之间的关联关系,图上给出了其中的一个子类 SeasonCard。以这个类为线索,回到说明中寻找与类 SeasonCard 相关的其他类。从说明中可知,“系统提供了 3 种卡”,常规卡、季卡、单次卡,而“季卡和单次卡都是预付卡”。这些描述暗示,“季卡”、“单次卡”与“预付卡”之间存在着特殊/一般关系,即“is-a”关系,这是继承结构的典型标志。由此可以得出类 C5 和 C6 应该分别对应 PrepaidCard(预付卡)和 MinitripCard(单次卡)。根据 C5 和 C6 所对应的类,可以推断出,C4 和 C3 必定也是与行驶卡相
15、关的类。三种卡中,已经有两种卡有了对应的类,还剩下一种卡即“常规卡”。而“常规卡”只能是与“预付卡”同层次的概念,所以只能对应于 C4,C3表示的是能代表所有这几种卡的公共概念。所以 C3 和 C4 应分别对应于 Card 和 RegularCard。确定了 C3之后,就可以识别出(2)和(3)处的多重度。Customer 和 Card 之间是持有和被持有的关系,由于系统中只有 3 种卡,所以一个客户最多只能有 3 种卡,所以(3)处应填 13。而对于任何一张卡来说,只能有唯一地一个所属人,因此(2)处应填 1。 现在还剩下类 C1 和 C2 没有确定。由于这两个类之间是聚集关系,所以需要在说
16、明中寻找具有“部分一整体”关系的概念。由说明中的“行程(Trajectory)由一组连续的路段构成”可知,C1 和 C2 应分别对应于 RoadSegment 和 Trajectory。(3). (分数:5.00)_正确答案:(3 分,每个类 1 分) RoadSegment 的属性:Distance Trajectory 的属性:Entry、Exit、DateOfEntry Card 的属性:UnitPrice、ValidPeriod)解析:解析:本问题考查类的关键属性的识别。由说明中给出的描述可知,类 RoadSegment 的属性至少应包括 Distance;类 Trajectory 的
17、属性至少应包括 Entry、Exit 和 DateOfEntry;类 Card 的属性至少应包括 UnitPrice、ValidPeriod。1. (分数:15.00)_正确答案:(共 15 分,各 3 分) (1)bestXj=xj (2)j解析:二、从下列的 2 道试题(试题五和试题六)中任(总题数:2,分数:30.00)2. (分数:15.00)_正确答案:(共 15 分,各 3 分) (1)State (2)tissueMachine-getHasQuarterState() (3)tissueMachine-getNoQuarterState() (4)tissueMachine-getNoQuarterState() (5)tissueMachine-getSoldOutState()解析:3. (分数:15.00)_正确答案:(共 15 分,各 3 分) (1)State (2)tissueMachine.getHasQuarterState() (3)tissueMachine.getNoQuarterState() (4)tissueMachine.getNoQuarterState() (5)tissueMachine.getSoldOutState()解析: