1、计算机水平考试中级软件设计师 2012 年上半年下午真题及答案解析(总分:90.00,做题时间:150 分钟)试题一(共 15 分) 阅读下列说明和图,回答问题 1 至问题 4,将解答填入答题纸的对应栏内。 【说明】 某学校欲开发图书管理系统,以记录图书馆所藏图书及其借出和归还情况,提供给借阅者借阅图书功能,提供给图书馆管理员管理和定期更新图书表功能。主要功能的具体描述如下: (1)处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者 ID)进行检查。通过与教各处维护的学生数据库、人事处维护的职工数据库中的数据进行比对,以验证借阅者 ID 是否合法。若合法,则检查借阅者在逾期未还图书表中是否
2、有逾期末还图书,以及罚金表中的罚金是否超过限额。如果没有逾期未还图书并且罚金末超过限额,则允许借阅图书,更新图书表,并将借阅的图书存入借出图书表。借阅者归还所借图书时,先由图书馆管理员检查图书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表;然后,检查所还图书是否逾期,若是,执行“处理逾期”操作;最后,更新图书表,删除借出图书表中的相应记录。 (2)维护图书。图书馆管理员查询图书信息;在新进图书时录入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录。 (3)处理逾期。系统在每周一统计逾期末还图书,逾期末还的图书按规则计算罚金,并记入罚金表,并给有逾期未还图书的借阅
3、者发送提醒消息。借阅者在借阅和归还图书时,若罚金超过限额,管理员收取罚金,并更新罚金表中的罚金额度。 现采用结构化方法对该图书管理系统进行分析与设计,获得如图 1-1 所示的项层数据流图和图 1-2 所示的 0 层数据流图。 (分数:15.00)(1).问题 1(4 分) 使用说明中的词语,给出图 1-1 中的实体 E1E4 的名称。 (分数:3.75)填空项 1:_(2).问题 2(4 分) 使用说明中的词语,给出图 1-2 中的数据存储 D1D4 的名称。 (分数:3.75)填空项 1:_(3).问题 3(5 分) 在 DFD 建模时,需要对有些复杂加工(处理)进行进一步精化,绘制下层数据
4、流图。针对图 1-2 中的加工“处理借阅”,在 1 层数据流图中应分解为哪些加工? (使用说明中的术语) (分数:3.75)填空项 1:_(4).问题 4(2 分) 说明问题 3中绘制 1 层数据流图时要注意的问题。(分数:3.75)填空项 1:_试题二(共 15 分) 阅读下列说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。 说明 某医院拟开发一套住院病人信息管理系统,以方便对住院病人、医生、护士和手术等信息进行管理。 需求分析 (1)系统登记每个病人的住院信息,包括:病案号、病人的姓名、性别、地址、身份证号、电话号码、入院时间及病床等信息,每个病床有唯一所属的病区及病房,如表
5、2-1 所示。其中病案号唯一标识病人本次住院的信息。 (2)在一个病人的一次住院期间,由一名医生对该病人的病情进行诊断,并填写一份诊断书,如表 2-2 所示。对于需要进行一次或多次手术的病人,系统记录手术名称、手术室、手术日期、手术时间、主刀医生及多名协助医生,每名医生在手术中的责任不同,如表 2-3 所示,其中手术室包含手术室号、楼层、地点和类型等信息。 (3)护士分为两类:病床护士和手术室护士。每个病床护士负责护理一个病区内的沂有病人,每个病区由多名护士负责护理。手术室护士负责手术室的护理工作。每个手术室护士负责多个手术室,每个手术室由多名护士负责,每个护士在手术室中有不同的责任,并由系统
6、记录其责任。 (分数:15.00)(1).问题 1(6 分) 补充图 2-1 中的联系和联系的类型。(分数:5.00)_(2).问题 2(5 分) 根据图 2-1,将逻辑结构设计阶段生成的关系模式中的空(1)(5)补充完整,并用下划线指出主键。(分数:5.00)_(3).问题 3(4 分) 如果系统还需要记录医生给病人的用药情况,即记录医生给病人所开处方中药品的名称、用量、价格、药品的生产厂家等信息。请根据该要求,对图 2-1 进行修改,画出补充后的实体、实体间联系和联系的类型。(分数:5.00)_(分数:15.00)(1). (分数:5.00)_(2).问题 2(7 分) 根据说明中的描述,
7、给出图 32 中 C1C3 所对应的类名以及(1)(4)处所对应的多重度(类名使用说明中给出的英文词汇)。(分数:5.00)_(3).问题 3(3 分) 根据说明中的描述,将类 C2 和 C3 的属性补充完整(属性名使用说明中给出的英文词汇)。(分数:5.00)_试题四(共 15 分) 阅读下列说明和 C 代码,回答问题 1 至问题 3,将解答写在答题纸的对应栏内。 说明 用两台处理机 A 和 B 处理 n 个作业。设 A 和 B 处理第 i 个作业的时间分别为 ai和 bi。由于各个作业的特点和机器性能的关系,对某些作业,在 A 上处理时间长,而对某些作业在 B 上处理时间长。一台处理机在某
8、个时刻只能处理一个作业,而且作业处理是不可中断的,每个作业只能被处理一次。现要找出一个最优调度方案,使得 n 个作业被这两台处理机处理完毕的时间(所有作业被处理的时间之和)最少。 (分数:15.00)(1).问题 1(9 分) 根据以上说明和 C 代码,填充 C 代码中的空(1(5)。(分数:5.00)_(2).问题 2(2 分) 根据以上 C 代码,算法的时间复杂度为_(6)_(用 O 符号表示)。(分数:5.00)_(3). (分数:5.00)_1.试题五(共 15 分) 阅读下列说明和 C+代码,将应填入_(n)_处的字句写在答题纸的对应栏内。 说明 某咖啡店售卖咖啡时,可以根据顾客的要
9、求在其中加入各种配料,咖啡店会根据矽加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。 (分数:15.00)_2.试题六(共 15 分) 阅读下列说明和 Java 代码,将应填入_(n)_处的字句写在答题纸的对应栏内。 说明 某咖啡店售卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。 (分数:15.00)_计算机水平考试中级软件设计师 2012 年上半年下午真题答案解析(总分:90.00,做题时间:150 分钟)试题一(共 15 分) 阅读下列说明和图,回答问题 1 至问题 4,将解答填入答
10、题纸的对应栏内。 【说明】 某学校欲开发图书管理系统,以记录图书馆所藏图书及其借出和归还情况,提供给借阅者借阅图书功能,提供给图书馆管理员管理和定期更新图书表功能。主要功能的具体描述如下: (1)处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者 ID)进行检查。通过与教各处维护的学生数据库、人事处维护的职工数据库中的数据进行比对,以验证借阅者 ID 是否合法。若合法,则检查借阅者在逾期未还图书表中是否有逾期末还图书,以及罚金表中的罚金是否超过限额。如果没有逾期未还图书并且罚金末超过限额,则允许借阅图书,更新图书表,并将借阅的图书存入借出图书表。借阅者归还所借图书时,先由图书馆管理员检查图
11、书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表;然后,检查所还图书是否逾期,若是,执行“处理逾期”操作;最后,更新图书表,删除借出图书表中的相应记录。 (2)维护图书。图书馆管理员查询图书信息;在新进图书时录入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录。 (3)处理逾期。系统在每周一统计逾期末还图书,逾期末还的图书按规则计算罚金,并记入罚金表,并给有逾期未还图书的借阅者发送提醒消息。借阅者在借阅和归还图书时,若罚金超过限额,管理员收取罚金,并更新罚金表中的罚金额度。 现采用结构化方法对该图书管理系统进行分析与设计,获得如图 1-1 所示的项层数据流图和图
12、 1-2 所示的 0 层数据流图。 (分数:15.00)(1).问题 1(4 分) 使用说明中的词语,给出图 1-1 中的实体 E1E4 的名称。 (分数:3.75)填空项 1:_ (正确答案:E1:借阅者 E2:图书管理员 E3/E4: 学生数据库/职工数据库 注:E3 和 E4 不分顺序,但必须不同。)解析: 本题考查采用结构化方法进行系统分析与设计,主要考查数据流图(DFD)的应用,是比较传统的题目,要求考生细心分析题目中所描述的内容。 DFD 是一种便于用户理解、分析系统数据流程的图形化建模工具,是系统逻辑模型的重要组成部分。 本题考查顶层 DFD。顶层 DFD 一般用来确定系统边界,
13、将待开发系统看作一个加工,图中只有唯一的一个处理和一些外部实体,以及这两者之间的输入输出数据流。题目要求根据描述确定图中的外部实体。分析题目中描述,并结合已经在顶层数据流图中给出的数据流进行分析。从题目的说明中可以看出:和系统的交互者包括图书管理员、借阅者两类人,图书管理员需要维护图书信息、得到查询所得的图书信息,借阅者提供借阅者 ID、借阅与归还的图书。还有通过与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行比对以验证借阅者 ID 是否合法的两个数据库作为外部实体。 对应图 1-1 中数据流和实体的对应关系,可知 E1 为借阅者,E2 为图书管理员,E3 和 E4为学生数据库和职
14、工数据库。(2).问题 2(4 分) 使用说明中的词语,给出图 1-2 中的数据存储 D1D4 的名称。 (分数:3.75)填空项 1:_ (正确答案:D1:图书表 D2:借出图书表 D3:逾期来还图书表 D4:罚金表)解析: 本题考查 0 层 DFD 中数据存储的确定。说明中描述维护图书信息主要存储或者更新图书表:借阅时需要检查逾期未还图书表,确定是否有逾期末还图书以及罚金表中的罚金限额,归还时出现缺失和损坏需要处以罚金并存入罚金表:借阅与归还图书时需要存入借出图书表和更新借出图书表。在处理逾期时需要将罚金记入罚金表,要检查和更新罚金限额。根据描述和图 1-2 中的数据存储的输入输出数据流提
15、示,可知 D1 为图书表,D2 为借出图书表,D3 为逾期末还图书表,D4 为罚金表。(3).问题 3(5 分) 在 DFD 建模时,需要对有些复杂加工(处理)进行进一步精化,绘制下层数据流图。针对图 1-2 中的加工“处理借阅”,在 1 层数据流图中应分解为哪些加工? (使用说明中的术语) (分数:3.75)填空项 1:_ (正确答案:检查借阅者身份或检查借阅者 ID;检查逾期未还图书;检查罚金是否超过限额;借阅图书;归还图书。)解析: 本题考查将 0 层 DFD 中的处理进一步精化建模,绘制下层数据流图。从说明中对“处理借阅”的描述和图 1-2 可知,处理借阅需要检查借阅者身份、检查逾期末
16、还图书、检查罚金是否超过限额、借阅图书和归还图书。描述中:检查所还图书是否逾期,若是,执行“处理逾期”操作。这里处理逾期明确说明是一个操作,而且在描述(3)中单独描述,图 1-2 中已经建模为单独一个处理,所以在本问题中仍然不分解。(4).问题 4(2 分) 说明问题 3中绘制 1 层数据流图时要注意的问题。(分数:3.75)填空项 1:_ (正确答案:保持父图与子图平衡。父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然
17、算是平衡的。)解析: 本题考查在绘制下层数据流图时需要注意的问题。问题 3 明确给出是对复杂处理进行进一步精化,绘制下层数据流图,因此需要注意的问题是绘制下层数据流图时要保持父图与子图平衡。父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。试题二(共 15 分) 阅读下列说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。 说明 某医院拟开发一套住院病人信息管理系统,以方便对住院病人、医生、护士和手术等
18、信息进行管理。 需求分析 (1)系统登记每个病人的住院信息,包括:病案号、病人的姓名、性别、地址、身份证号、电话号码、入院时间及病床等信息,每个病床有唯一所属的病区及病房,如表 2-1 所示。其中病案号唯一标识病人本次住院的信息。 (2)在一个病人的一次住院期间,由一名医生对该病人的病情进行诊断,并填写一份诊断书,如表 2-2 所示。对于需要进行一次或多次手术的病人,系统记录手术名称、手术室、手术日期、手术时间、主刀医生及多名协助医生,每名医生在手术中的责任不同,如表 2-3 所示,其中手术室包含手术室号、楼层、地点和类型等信息。 (3)护士分为两类:病床护士和手术室护士。每个病床护士负责护理
19、一个病区内的沂有病人,每个病区由多名护士负责护理。手术室护士负责手术室的护理工作。每个手术室护士负责多个手术室,每个手术室由多名护士负责,每个护士在手术室中有不同的责任,并由系统记录其责任。 (分数:15.00)(1).问题 1(6 分) 补充图 2-1 中的联系和联系的类型。(分数:5.00)_正确答案:( )解析: 本题考查数据库设计,属于比较传统的题目,考查点也与往年类似。 本题考查数据库的概念结构设计,题目要求补充完整实体联系图中的联系和联系的类型。 根据题目的需求描述可知,一名病人在一次住院期间对应一张病床,而一个病床可以有多名病人曾经住过。所以,病床实体和病人实体之间存在“住院”联
20、系,联系的类型为多对一,表示为*:1。 根据题目的需求描述可知,一名病人在一次住院期间,由一名医生做出诊断,并给出一份诊断书。所以,病人实体和医生实体之间存在“诊断“联系,联系的类型为多对多,表示为*:1。 根据题目的需求描述可知,一名病人在一次住院期间可以进行多次手术,一次手术安排在一个手术室,由多名医生参与。所以,病人实体与医生实体和手术室实体三者之间存在“手术“联系,三者之间联系的类型为多对多对多,表示为*:*:*。 根据题目的需求描述可知,一名手术室护士负责多个手术室,每个手术室由多名护士负责。所以,护士实体和手术室实体之间存在“负责”联系,联系的类型为多对多,表示为*:*。(2).问
21、题 2(5 分) 根据图 2-1,将逻辑结构设计阶段生成的关系模式中的空(1)(5)补充完整,并用下划线指出主键。(分数:5.00)_正确答案:( )解析: (3).问题 3(4 分) 如果系统还需要记录医生给病人的用药情况,即记录医生给病人所开处方中药品的名称、用量、价格、药品的生产厂家等信息。请根据该要求,对图 2-1 进行修改,画出补充后的实体、实体间联系和联系的类型。(分数:5.00)_正确答案:( )解析:(分数:15.00)(1). (分数:5.00)_正确答案:(A1:顾客 A2:订单处理人员 A3:派送人员 U1:收货 U2:派单)解析:(2).问题 2(7 分) 根据说明中的
22、描述,给出图 32 中 C1C3 所对应的类名以及(1)(4)处所对应的多重度(类名使用说明中给出的英文词汇)。(分数:5.00)_正确答案:(C1: Customer C2: Order C3: Product (1)1 (2)0n 或 0* (3)0n 或 0* (4) 1n或 1*)解析: (3).问题 3(3 分) 根据说明中的描述,将类 C2 和 C3 的属性补充完整(属性名使用说明中给出的英文词汇)。(分数:5.00)_正确答案:(C2: volume、 delivery date、 form of payment C3: cubic volume、 cost price、 sal
23、e price)解析: 本题考查类的关键属性的识别。由“说明”中给出的描述可知,类 C2 的属性至少应包括volume、delivery、date、form of payment;类 C3 的属性至少应包括 cubic volume、cost price、sale price。试题四(共 15 分) 阅读下列说明和 C 代码,回答问题 1 至问题 3,将解答写在答题纸的对应栏内。 说明 用两台处理机 A 和 B 处理 n 个作业。设 A 和 B 处理第 i 个作业的时间分别为 ai和 bi。由于各个作业的特点和机器性能的关系,对某些作业,在 A 上处理时间长,而对某些作业在 B 上处理时间长。
24、一台处理机在某个时刻只能处理一个作业,而且作业处理是不可中断的,每个作业只能被处理一次。现要找出一个最优调度方案,使得 n 个作业被这两台处理机处理完毕的时间(所有作业被处理的时间之和)最少。 (分数:15.00)(1).问题 1(9 分) 根据以上说明和 C 代码,填充 C 代码中的空(1(5)。(分数:5.00)_正确答案:(1) px1y01 (2)pxykpx-ak-1yk-1 (3)ybk-10 (4)pxyn=1 或 pxyn 或 pxyn!=0 (5)(xy)?x:y)解析: (2).问题 2(2 分) 根据以上 C 代码,算法的时间复杂度为_(6)_(用 O 符号表示)。(分数
25、:5.00)_正确答案:( (6)O(m 2n)解析:(3). (分数:5.00)_正确答案:(7)(1,1,2,2,1,1) (8) 15)解析: 根据题意和算法,可以得到若作业 1、2、5 和 6 在处理机 A,而作业 3 和 4 在处理机 B 上处理,可以得到最优解。此时在处理机 A 上的处理时间为 14,而在处理机 B 上的处理时间为 15,因此最优解的值,即最短的处理时间为 15,而最优解为(1,1,2,2,l,1)。1.试题五(共 15 分) 阅读下列说明和 C+代码,将应填入_(n)_处的字句写在答题纸的对应栏内。 说明 某咖啡店售卖咖啡时,可以根据顾客的要求在其中加入各种配料,
26、咖啡店会根据矽加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。 (分数:15.00)_正确答案:(1) protected (2) virtual string getDescription (3) virtual int cost()=0 (4) Beverage* beverage (5) beverage (6) beverage)解析: 本题考查装饰器(Decorator)模式的概念及应用。 Decorator 模式动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式提供了比继承更有弹性的替代方案。 Decorator 模式的优点是有效避免了使用继承方式扩
27、展对象功能而带来的灵活性差、子类无限制扩展的问题;装饰者与被装饰者之间虽然都是同一类型,但是它们彼此是完全独立并可以独立任意改变的。 Decorator 模式的适用场合是:想透明并且动态地给对象增加新的职责;给对象增加的职责,在未来存在增加或减少的可能。 Decorator模式的类图如下所示: 2.试题六(共 15 分) 阅读下列说明和 Java 代码,将应填入_(n)_处的字句写在答题纸的对应栏内。 说明 某咖啡店售卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。 (分数:15.00)_正确答案:(1) ab
28、stract (2) String getDescription (3) abstract int cost() (4) Beverage beverage (5) beverage (6) beverage)解析: 本题考查装饰器(Decorator)模式的概念及应用。 Decorator 模式动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式提供了比继承更有弹性的替代方案。 Decorator 模式的优点是有效避免了使用继承方式扩展对象功能而带来的灵活性差、子类无限制扩展的问题;装饰者与被装饰者之间虽然都是同一类型,但是它们彼此是完全独立并可以独立任意改变的。 Decorator
29、 模式的适用场合是:想透明并且动态地给对象增加新的职责;给对象增加的职责,在未来存在增加或减少的可能。 Decorator模式的类图如下所示: 题目利用 Decorator 模式来计算各种配料组合的咖啡的价格。Beverage 相当于抽象的 Component 类,最终要计算出 Beverage 的价钱。Espresso 和 DarkRoast 是 4 个具体的组件,代表一种咖啡类型。M 跳 ha 和 Whlp 是配料装饰者,可以添加到不同类型的咖啡中。CondimentDecorator 相当于Decorator,是装饰者共同实现的接口。在本题中,确定装饰者共同实现的接口是什么,是一个重要的考查点。