2007年5月软件设计师下午试题.docx

上传人:李医生 文档编号:6198020 上传时间:2020-09-22 格式:DOCX 页数:14 大小:812.03KB
返回 下载 相关 举报
2007年5月软件设计师下午试题.docx_第1页
第1页 / 共14页
2007年5月软件设计师下午试题.docx_第2页
第2页 / 共14页
2007年5月软件设计师下午试题.docx_第3页
第3页 / 共14页
2007年5月软件设计师下午试题.docx_第4页
第4页 / 共14页
2007年5月软件设计师下午试题.docx_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《2007年5月软件设计师下午试题.docx》由会员分享,可在线阅读,更多相关《2007年5月软件设计师下午试题.docx(14页珍藏版)》请在三一文库上搜索。

1、.2007 年 5 月软件设计师下午试题试题一(共15 分)阅读以下说明和图,回答问题1 至问题 3,将解答填入答题纸的对应栏内。说明 某房屋租赁公司欲建立一个房屋租赁服务系统,统一管理房主和租赁者的信息,从而快速地提供租赁服务。该系统具有以下功能:1登记房主信息。对于每名房主,系统需登记其姓名、住址和联系电话,并将这些信息写入房主信息文件。2登记房屋信息。所有在系统中登记的房屋都有一个唯一的识别号(对于新增加的房屋,系统会自动为其分配一个识别号) 。除此之外, 还需登记该房屋的地址、 房型(如平房、带阳台的楼房、独立式住宅等)、最多能够容纳的房客数、租金及房屋状态(待租赁、已出租)。这些信息

2、都保存在房屋信息文件中。一名房主可以在系统中登记多个待租赁的房屋。3登记租赁者信息。所有想通过该系统租赁房屋的租赁者,必须首先在系统中登记个人信息,包括:姓名、住址、电话号码、出生年月和性别。这些信息都保存在租赁者信息文件中。4租赁房屋。 已经登记在系统中的租赁者,可以得到一份系统提供的待租赁房屋列表。一旦租赁者从中找到合适的房屋, 就可以提出看房请求。 系统会安排租赁者与房主见面。 对于每次看房,系统会生成一条看房记录并将其写入看房记录文件中。5收取手续费。房主登记完房屋后,系统会生成一份费用单,房主根据费用单交纳相应的费用。6变更房屋状态。当租赁者与房主达成租房或退房协议后,房主向系统提交

3、变更房屋状态的请求。系统将根据房主的请求,修改房屋信息文件。数据流图1-1 和 1-2 分别给出了该系统的顶层数据流图和0 层数据流图。.问题 1( 4 分)使用 说明 中给出的词汇,将数据流图1-1 中( 1) ( 4)处的数据流补充完整。问题 2( 4 分)使用 说明 中给出的词汇,将数据流图1-2 中的( 5) ( 8)补充完整。问题 3( 7 分)数据流程图1-2 中缺失了三条数据流,请指出这三条数据流的起点、终点和数据流名称。.试题二(共15 分)阅读下列说明,回答问题1 至问题3,将解答填入答题纸的对应栏内。说明 某医院的门诊管理系统实现了为患者提供挂号、处方药品收费的功能。具体的

4、需求及设计如下:1医院医师具有编号, 姓名 , 科室 , 职称 , 出诊类型和出诊费用,其中出诊类型分为专家门诊和普通门诊, 与医师职称无关; 各个医师可以具有不同的出诊费用, 与职称和出诊类型无关。2患者首先在门诊挂号处挂号,选择科室和医师,根据选择的医师缴纳挂号费(医师出诊费) 。收银员为患者生成挂号单,如表2-1 所示,其中, 就诊类型为医师的出诊类型。3患者在医师处就诊后,凭借挂号单和医师手写处方到门诊药房交费买药。收银员根据就诊号和医师处方中开列的药品信息,查询药品库(如表2-2 所示)并生成门诊处方单(如表 2-3 所示)。4由于药品价格会发生变化,因此,门诊管理系统必须记录处方单

5、上药品的单价。根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如下所示:1. 实体联系图.2关系模式挂号单(就诊号, 病患姓名 , 医师编号 , 时间 , ( 5)收银员(编号, 姓名 , 级别)医师(编号 , 姓名 , 科室 , 职称 , 出诊类型 , 出诊费用)门诊处方( ( 6) , 收银员 , 时间)处方明细(就诊号, ( 7)药品库(药品编码 , 药品名称 , ( 8) )问题 1( 4 分)根据问题描述,填写2-1 实体联系图中 (1) (4) 处联系的类型。问题 2( 4 分)图 2-1 中还缺少几个联系?请指出每个联系两端的实体名,格式如下:实体 1:实体 2例如,

6、收银员与门诊处方之间存在联系,表示为:收银员:门诊处方或门诊处方:收银员问题 3( 7 分)根据实体联系图2-1,填写挂号单、 门诊处方、 处方明细和药品库关系模式中的空( 5)( 8)处,并指出挂号单、门诊处方和处方明细关系模式的主键。试题三(共15 分).阅读下列说明和图,回答问题1 至问题3,将解答填入答题纸的对应栏内。说明 某图书管理系统的主要功能如下:1图书管理系统的资源目录中记录着所有可供读者借阅的资源,每项资源都有一个唯一的索引号。系统需登记每项资源的名称、出版时间和资源状态(可借阅或已借出)。2资源可以分为两类:图书和唱片。 对于图书, 系统还需登记作者和页数;对于唱片,还需登

7、记演唱者和介质类型(CD 或者磁带)。3读者信息保存在图书管理系统的读者信息数据库中,记录的信息包括:读者的识别码和读者姓名。 系统为每个读者创建了一个借书记录文件,用来保存读者所借资源的相关信息。现采用面向对象方法开发该图书管理系统。识别类是面向对象分析的第一步。比较常用的识别类的方法是寻找问题描述中的名词,再根据相关规则从这些名词中删除不可能成为类的名词,最终得到构成该系统的类。表3-1 给出了 说明 中出现的所有名词。通过对表3-1 中的名词进行分析,最终得到了图3-1 所示的UML类图(类的说明如表3-2 所示)。.问题 1( 3 分)表 3-2 所给出的类并不完整,根据 说明 和表

8、3-1,将图 3-1 中的( a) ( c)处补充完整。问题 2( 6 分)根据 说明 中的描述,给出图3-1 中的类CatalogItem 以及( b)、( c)处所对应的类的关键属性(使用表3-1 中给出的词汇),其中,CatalogItem有 4 个关键属性;(b)、(c)处对应的类各有2 个关键属性。问题 3( 6 分)识别关联的多重度是面向对象建模过程中的一个重要步骤。根据 说明 中给出的描述,完成图3-1 中的 (1)(6) 。试题四 (共 15 分 )阅读以下说明和图,填补流程图中的空缺,将解答填入答题纸的对应栏内。说明 在一条农村公路的一边稀疏地分布着房子,其分布如图4-1 所

9、示。某电信公司需要在某些位置放置蜂窝电话基站,由于基站的覆盖范围是6 公里,因此必须使得每栋房子到某个基站的直线距离不超过6 公里。为简化问题,假设所有房子在同一直线上,并且基站沿该直线放置。现采用贪心策略实现用尽可能少的基站覆盖所有的房子。.实现贪心算法的流程如图4-2 所示,请填充其中空白并计算该算法的时间复杂度,其中:1 di(1 i 表示N)第i 个房子到公路A 端的距离, N 表示房子的总数,房子的编号按照房子到公路A 端的距离从小到大进行编号。2 sk 表示第k( k 1)个基站到公路A端的距离,算法结束后k 的值为基站的总数。该算法的时间复杂度为( 5)。试题五(共15 分)阅读

10、以下说明和C 语言函数,将应填入( n)处的字句写在答题纸的对应栏内。.说明 在一个分布网络中,资源(石油、天然气、电力等)可从生产地送往其他地方。在传输过程中,资源会有损耗。例如,天然气的气压会减少,电压会降低。我们将需要输送的资源信息称为信号。 在信号从信源地送往消耗地的过程中,仅能容忍一定范围的信号衰减,称为容忍值。分布网络可表示为一个树型结构,如图5-1 所示。信号源是树根,树中的每个节点(除了根)表示一个可以放置放大器的子节点,其中某些节点同时也是信号消耗点,信号从一个节点流向其子节点。每个节点有一个d 值,表示从其父节点到该节点的信号衰减量。例如,在图5-1 中,节点 w、 p、

11、q 的 d值分别为 2、 1、 3,树根节点表示信号源,其d 值为 0。每个节点有一个M 值,表示从该节点出发到其所有叶子的信号衰减量的最大值。显然,叶子节点的 M 值为0。对于非叶子节点 j , M(j)=maxM(k) + d(k) | k是 j的孩子节点 。在此公式中,要计算节点的M 值,必须先算出其所有子节点的M 值。在计算M 值的过程中,对于某个节点i,其有一个子节点k 满足 d(k)+M(k) 大于容忍值,则应在k 处放置放大器,否则,从节点i 到某叶子节点的信号衰减量会超过容忍值,使得到达该叶子节点时信号不可用,而在节点i处放置放大器并不能解决到达叶子节点的信号衰减问题。例如,在

12、图 5-1中,从节点p 到其所有叶子节点的最大衰减值为4。若容忍值为 3,则必须在 s 处放置信号放大器,这样可使得节点p 的 M 值为 2。同样,需要在节点q、v 处放置信号放大器,如图5-2阴影节点所示。若在某节点放置了信号放大器,则从该节点输出的信号与信号源输出的信号等价。.函数 placeBoosters(TreeNode *root) 的功能是:对于给定树型分布网络中各个节点,计算其信号衰减量的最大值,并确定应在树中的哪些节点放置信号放大器。全局变量Tolerance 保存信号衰减容忍值。树的节点类型定义如下:typedef struct TreeNode int id;/* 当前节

13、点的识别号*/int ChildNum;/* 当前节点的子节点数目*/int d;/* 父节点到当前节点的信号衰减值*/struct TreeNode *childptr;/*向量,存放当前节点到其所有子节点的指针*/int M;/* 当前节点到其所有子节点的信号衰减值中的最大值*/bool boost;/* 是否在当前节点放置信号放大器的标志*/TreeNode;C 语言函数 void placeBoosters(TreeNode *root )/*计算root 所指节点处的衰减量,如果衰减量超出了容忍值,则放置放大器*/TreeNode *p;int i,degradation;if (

14、( 1) ) degradation = 0; root M = 0;i = 0;if (I = root ChildNum)return;p = ( 2) ;for(;i ChildNum &p; i+,p =(3) )p M = 0;(4) ;.if (p d + p M Tolerance) /* 在 p 所指节点中放置信号放大器*/p boost = true;p M = 0;if (p d + p M degradation)degradation = p d + p M;root M =( 5) ;试题六(共15 分)阅读下列说明和C+ 代码,将应填入( n)处的字句写在答题纸的对

15、应栏内。说明 某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如表6-1 所示:表 6-1为支持将来能够模拟更多种类鸭子的特征,采用策略设计模式(Strategy)设计的类图如图 6-1 所示:.分别描述发出“嘎嘎 ”声的行为、 发出橡皮与空气摩擦声的行为与不发声的行为。请填补以下代码中的空缺。C+ 代码 #includeusing namespace (1) ;classFlyBehavior public: ( 2) fly() = 0;classQuackBehavior public: ( 3) q

16、uack() = 0;classFlyWithWings:publicFlyBehaviorpublic:void fly() cout “使用翅膀飞行!” endl; ;classFlyNoWay:publicFlyBehaviorpublic: void fly() cout不能飞行“! ” endl; ;classQuack:publicQuackBehaviorpublic:void quack()发“出cout嘎嘎 声! ” endl; ;classSqueak:publicQuackBehaviorpublic:voidquack() cout “发出空气与橡皮摩擦声! ” end

17、l;classQuackNoWay:publicQuackBehavior.public:voidquack() cout “不能发声! ” endl; ;class Duckprotected:FlyBehavior *( 4) ;QuackBehavior *( 5) ;public:void fly() ( 6) ; void quack() ( 7) ; ;virtual void display()=0;class RubberDuck :public Duckpublic:RubberDuck()flyBehavior = new ( 8) ;quackBehavior = new

18、 ( 9) ;RubberDuck()if(!flyBehavior) delete flyBehavior;if(!quackBehavior) deletequackBehavior;void display() /*此处省略显示橡皮鸭的代码*/;/其它代码省略试题七(共15 分)阅读下列说明和Java 代码,将应填入( n)处的字句写在答题纸的对应栏内。说明 某游戏公司现欲开发一款面向儿童的模游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子类及其特征如表7-1 所示:表 7-1.其中, Duck 为抽象类,描述了抽象的鸭子,而类RubberDuck

19、 、 MallardDuck 、 CottonDuck和 RedHeadDuck 分别描述具体的鸭子种类,方法fly() 、 quack() 和 display() 分别表示不同种类的鸭子都具有飞行特征、发声特征和外观特征;类FlyBehavior与 QuackBehavior 为抽象类,分别用于表示抽象的飞行行为与发声行为;类FlyNoWay与 FlyWithWings 分别描述不能飞行的行为和用翅膀飞行的行为;类Quack、 Squeak 与 QuackNoWay 为支持将来能够模拟更多种类鸭子的特征,采用策略设计模式(Strategy)设计的类图如图 7-1 所示:其中,Duck 为抽象

20、类,描述了抽象的鸭子, 而类RubberDuck 、MallardDuck 、CottonDuck和 RedHeadDuck 分别描述具体的鸭子种类,方法fly() 、 quack() 和 display() 分别表示不同种类的鸭子都具有飞行特征、发声特征和外观特征;接口 FlyBehavior与 QuackBehavior分别用于表示抽象的飞行行为与发声行为;类FlyNoWay与 FlyWithWings分别描述不能飞行的行为和用翅膀飞行的行为;类Quack、 Squeak 与 QuackNoWay分别描述发出“嘎嘎 ”声的行为、发出橡皮与空气摩擦声的行与不发声的行为。请填补以下代码中的空缺

21、。Java 代码 ( 1) FlyBehavior public void fly();.;( 2) QuackBehavior public voidquack();class FlyWithWings implements FlyBehaviorpublic void fly()System.out.println(使用翅膀飞行“!” ); ;class FlyNoWay implementsFlyBehaviorpublic void fly()System.out.println(不能飞行! “” ); ;classQuackimplementsQuackBehaviorpublic

22、voidquack()System.out.println(发出 嘎嘎“声! ” ); ;classSqueakimplementsQuack Behaviorpublic voidquack()System.out.println(发“出空气与橡皮摩擦声!” ); ;classQuackNoWay implementsQuackBehaviorpublic voidquack()System.out.println( 不能发声 “! ” ); ;abstract class DuckprotectedFlyBehavior(3) ;protectedQuackBehavior( 4);public void fly()( 5) ; public void quack() ( 6) ; ;public ( 7) void display();classRubberDuckextends DuckpublicRubberDuck()flyBehavior = new ( 8) ;quackBehavior = new ( 9) ;public void display() /*此处省略显示橡皮鸭的代码*/;/其它代码省略.

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1