专业软件设计师网站|培训机构|服务商(加客服微信:cnitpm或QQ:800184589进软件设计师学霸群)

软题库 培训课程
当前位置:信管网 >> 软件设计师 >> 案例分析 >> 文章内容
2007年上半年软件设计师下午案例分析真题文字版
来源:信管网 2021年05月17日 【所有评论 分享到微信

免费下载软件设计师历年真题:http://www.cnitpm.com/zhenti/rs.html
该套题在线考试:http://www.cnitpm.com/exam/examam.aspx?t1=2&sid=535681
1、 试题一

阅读以下说明和图,回答问题1至问题3。
【说明】
某房屋租赁公司欲建立一个房屋租赁服务系统,统一管理房主和租赁者的信息,从而快速地提供租赁服务。该系统具有以下功能:
1.登记房主信息。对于每名房主,系统需登记其姓名、住址和联系电话,并将这些信息写入房主信息文件。
2.登记房屋信息。所有在系统中登记的房屋都有一个唯一的识别号(对于新增加的房屋,系统会自动为其分配一个识别号)。除此之外,还需登记该房屋的地址、房型(如平房、带阳台的楼房、独立式住宅等)、最多能够容纳的房客数、租金及房屋状态(待租赁、已出租)。这些信息都保存在房屋信息文件中。一名房主可以在系统中登记多个待租赁的房屋。
3.登记租赁者信息。所有想通过该系统租赁房屋的租赁者,必须首先在系统中登记个人信息,包括:姓名、住址、电话号码、出生年月和性别。这些信息都保存在租赁者信息文件中。
4.租赁房屋。已经登记在系统中的租赁者,可以得到一份系统提供的待租赁房屋列表。一旦租赁者从中找到合适的房屋,就可以提出看房请求。系统会安排租赁者与房主见面。对于每次看房,系统会生成一条看房记录并将其写入看房记录文件中。
5.收取手续费。房主登记完房屋后,系统会生成一份费用单,房主根据费用单交纳相应的费用。
6.变更房屋状态。当租赁者与房主达成租房或退房协议后,房主向系统提交变更房屋状态的请求。系统将根据房主的请求,修改房屋信息文件。
数据流图10-1和图10-2分别给出了该系统的顶层数据流图和0层数据流图。

【问题1】

使用[说明]中给出的词汇,将数据流图10-1中(1)~(4)处的数据流补充完整。

【问题2】

使用[说明]中给出的词汇,将数据流图10-2中的(5)~(8)补充完整。

【问题3】

数据流程图10-2中缺失了三条数据流,请指出这三条数据流的起点、终点和数据流名称。
信管网参考答案:
查看解析:www.cnitpm.com/st/2455015356.html

2、 试题二
阅读下列说明,回答问题1至问题3。
【说明】
某医院的门诊管理系统实现了为患者提供挂号、处方药品收费的功能。具体的需求及设计如下:
1.医院医师具有编号,姓名,科室,职称,出诊类型和出诊费用,其中出诊类型分为专家门诊和普通门诊,与医师职称无关;各个医师可以具有不同的出诊费用,与职称和出诊类型无关。
2.患者首先在门诊挂号处挂号,选择科室和医师,根据选择的医师缴纳挂号费(医师出诊费)。收银员为患者生成挂号单,如表10-1所示,其中,就诊类型为医师的出诊类型。
3.患者在医师处就诊后,凭借挂号单和医师手写处方到门诊药房交费买药。收银员根据就诊号和医师处方中开列的药品信息,查询药品库(如表10-2所示)并生成门诊处方单(如表10-3所示)。

4.由于药品价格会发生变化,因此,门诊管理系统必须记录处方单上药品的单价。
根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如下所示:

2.关系模式
挂号单(就诊号,病患姓名,医师编号,时间,  4  )
收银员(编号,姓名,级别)
医师(编号,姓名,科室,职称,出诊类型,出诊费用)
门诊处方(  5  ,收银员,时间)
处方明细(就诊号,  6  )
药品库(药品编码,药品名称,  7  )
【问题1】
根据问题描述,填写图10-3实体联系图中(1)~(4)处联系的类型。
【问题2】
图10-3中还缺少几个联系?请指出每个联系两端的实体名,格式如下。
实体1:实体2
例如,收银员与门诊处方之间存在联系,表示为:
收银员:门诊处方    或    门诊处方:收银员
【问题3】
根据实体联系图10-3,填写挂号单、门诊处方、处方明细和药品库关系模式中的空 (5)~(8)处,并指出挂号单、门诊处方和处方明细关系模式的主键。
信管网参考答案:
查看解析:www.cnitpm.com/st/2455119993.html

3、 试题三
阅读下列说明和图,回答问题1至问题3。
【说明】
某图书管理系统的主要功能如下:
1.图书管理系统的资源目录中记录着所有可供读者借阅的资源,每项资源都有一个唯一的索引号。系统需登记每项资源的名称、出版时间和资源状态(可借阅或已借出)。
2.资源可以分为两类:图书和唱片。对于图书,系统还需登记作者和页数;对于唱片,还需登记演唱者和介质类型(cd或者磁带)。
3.读者信息保存在图书管理系统的读者信息数据库中,记录的信息包括:读者的识别码和读者姓名。系统为每个读者创建了一个借书记录文件,用来保存读者所借资源的相关信息。
现采用面向对象方法开发该图书管理系统。识别类是面向对象分析的第一步。比较常用的识别类的方法是寻找问题描述中的名词,再根据相关规则从这些名词中删除不可能成为类的名词,最终得到构成该系统的类。表10-4给出了[说明]中出现的所有名词。

通过对表10-4中的名词进行分析,最终得到了图10-4所示的uml类图(类的说明如表10-5所示)。

【问题1】
表10-5所给出的类并不完整,根据[说明]和表10-4,将图10-4中的(a)~(c)处补充完整。

【问题2】
根据【说明】中的描述,给出图10-4中的类catalogitem以及(b)、(c)处所对应的类的关键属性(使用表10-4中给出的词汇),其中,camlogitem有4个关键属性;(b)、 (c)处对应的类各有两个关键属性。
【问题3】
识别关联的多重度是面向对象建模过程中的一个重要步骤。根据[说明]中给出的描述,完成图10-4中的(1)~(6)。
信管网参考答案:
查看解析:www.cnitpm.com/st/2455213422.html

4、 试题四
阅读以下说明和图,填补流程图中的空缺。
【说明】
在一条农村公路的一边稀疏地分布着房子,其分布如图10-5所示。某电信公司需要在某些位置放置蜂窝电话基站,由于基站的覆盖范围是6公里,因此必须使得每栋房子到某个基站的直线距离不超过6公里。为简化问题,假设所有房子在同一直线上,并且基站沿该直线放置。现采用贪心策略实现用尽可能少的基站覆盖所有的房子。

实现贪心算法的流程如图10-6所示,请填充其中空白并计算该算法的时间复杂度,其中:
1.d[i](1≤i≤n)表示第i个房子到公路a端的距离,n表示房子的总数,房子的编号按照房子到公路a端的距离从小到大进行编号。
2.s[k]表示第k(k≥1)个基站到公路a端的距离,算法结束后k的值为基站的总数。
该算法的时间复杂度为  (5)  。

信管网参考答案:
查看解析:www.cnitpm.com/st/2455317292.html

5、 试题五
(以下试题五至试题七中任选一题解答)
阅读以下说明和c语言函数,应填入  (n)  处。
【说明】
在一个分布网络中,资源(石油、天然气、电力等)可从生产地送往其他地方。在传输过程中,资源会有损耗。例如,天然气的气压会减少,电压会降低。我们将需要输送的资源信息称为信号。在信号从信源地送往消耗地的过程中,仅能容忍一定范围的信号衰减,称为容忍值。分布网络可表示为一个树型结构,如图10-9所示。信号源是树根,树中的每个节点(除了根)表示一个可以放置放大器的子节点,其中某些节点同时也是信号消耗点,信号从一个节点流向其子节点。
每个节点有一个d值,表示从其父节点到该节点的信号衰减量。例如,在图10-9中,节点w、p、q的d值分别为2、1、3,树根节点表示信号源,其d值为0。
每个节点有一个m值,表示从该节点出发到其所有叶子的信号衰减量的最大值。显然,叶子节点的m值为0。对于非叶子节点j,m(j)=max{m(k)+d(k)|k是j的孩子节点}。在此公式中,要计算节点的m值,必须先算出其所有子节点的m值。

在计算m值的过程中,对于某个节点i,其有一个子节点k满足d(k)+m(k)大于容忍值,则应在k处放置放大器,否则,从节点i到某叶子节点的信号衰减量会超过容忍值,使得到达该叶子节点时信号不可用,而在节点i处放置放大器并不能解决到达叶子节点的信号衰减问题。
例如,在图10-9中,从节点p到其所有叶子节点的最大衰减值为4。若容忍值为3,则必须在s处放置信号放大器,这样可使得节点p的m值为2。同样,需要在节点小v处放置信号放大器,如图10—10阴影节点所示。若在某节点放置了信号放大器,则从该节点输出的信号与信号源输出的信号等价。

函数placeboosters(treenode*root)的功能是:对于给定树型分布网络中各个节点,计算其信号衰减量的最大值,并确定应在树中的哪些节点放置信号放大器。
全局变量tolerance保存信号衰减容忍值。
树的节点类型定义如下:
typedef struct treenode{
int id;                      /*当前节点的识别号*/
int childnum;                /*当前节点的子节点数目*/
int d;                       /*父节点到当前节点的信号衰减值*/
struct treenode **childptr;  /*向量,存放当前节点到其所有子节点的指针*/
int m;                       /*当前节点到其所有子节点的信号衰减值中的最大值*/
bool boost;                  /*是否在当前节点放置信号放大器的标志*/
}treenode;
【c语言函数】
void placeboosters(treenode *root)
{                               /*  计算root所指节点处的衰减量,如果衰减量超出了容忍值,则放置放大器*/
treenode *p;
int i,degradation;
if(  (1)  ){
degradation = 0;root->m = 0;
i = 0;
if  (i>=root->childnum)
return;
p=  (2)  ;
for(;i<root->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)  ;
}
}
信管网参考答案:
查看解析:www.cnitpm.com/st/2455416424.html

6、 试题六
阅读下列说明和c++代码,应填入  (n)  处。
【说明】
某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如表10-6所示:

为支持将来能够模拟更多种类鸭子的特征,采用策略设计模式(strategy)设计的类图如图10-11所示:
其中,duck为抽象类,描述了抽象的鸭子,而类rubberduck、mallardduck、 cottonduck和redheadduck分别描述具体的鸭子种类,方法fly()、quack()和display()分别表示不同种类的鸭子都具有飞行特征、发声特征和外观特征;类flybehavior与 quackbehavior为抽象类,分别用于表示抽象的飞行行为与发声行为:类flynoway与 flywithwings分别描述不能飞行的行为和用翅膀飞行的行为;类quack、squeak与 quacknoway分别描述发出“嘎嘎”声的行为、发出橡皮与空气摩擦声的行为与不发声的行为。请填补以下代码中的空缺。
【c++代码】
#include<iostream>
using namespace  (1)  ;    class flybehavior{
public:  (2)   fly()=0;
};
class quackbehavior{
public:  (3)   quack() = 0;
};
class flywithwings:public flybehavior{
public:void fly(){  cout<< “使用翅膀飞行 ! ”  <<endl;  }
};
class flynoway:public flybehavior{
public:void fly(){  cout<< “不能飞行!”<<endl;}
};
class quack:public quackbehavior{
public:void quack(){  cout<<“发出\‘嘎嘎\’声  !”<<endl;  }
};
class squeak:public quackbehavior{
public:void quack(){cout<<“发出空气与橡皮摩擦声!”<<endl;   }
};
class quacknoway:public quackbehavior{
public:void quack  (){  cout<<“不能发声  !”<<endl;  }
};
class duck{
protected:
flybehavior*  (4)  ;
quackbehavior*  (5)  ;
public:
void fly(){  (6)  ;  }
void quack(){  (7)  ;);
virtual void display()=0;
};
class rubberduck:public duck{
public:
rubberduck(){
flybehavior=new   (8)  ;
quackbehavior=new  (9)  ;
}
~rubberduck(){
if(!flybehavior)delete flybehavior;
if(!quackbehavior)  delete quackbehavior;
}
void display(){/*此处省略显示橡皮鸭的代码*/   }
};
//其他代码省略
信管网参考答案:
查看解析:www.cnitpm.com/st/245551202.html

7、 试题七
阅读下列说明和java代码,应填入  (n)  处。
【说明】
某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如表10-7所示:

为支持将来能够模拟更多种类鸭子的特征,采用策略设计模式(strategy)设计的类图如图10-12所示:

其中,duck为抽象类,描述了抽象的鸭子,而类rubberduck、mallardduck、 cottonduck 和 redheadduck分别描述具体的鸭子种类,方法fly()、quack()和display()分别表示不同种类的鸭子都具有飞行特征、发声特征和外观特征;接口flybehavior与 quackbehavior分别用于表示抽象的飞行行为与发声行为;类flynoway与flywithwings分别描述不能飞行的行为和用翅膀飞行的行为;类quack、squeak与quacknoway分别描述发出“嘎嘎”声的行为、发出橡皮与空气摩擦声的行为与不发声的行为。请填补以下代码中的空缺。
【java代码】
(1)   flybehavior{
public void fly();
};
(2)  quackbehavior{
public void quack();
};
class flywithwings implements flybehavior{
public void fly(){system.out.println(“使用翅膀飞行!”);}
};
class flynoway implements flybehavior{
public void fly(){system.out.println(“不能飞行!”);}
};
class quack implements quackbehavior{
public void quack(){system.out.println(“发出\‘嘎嘎\’声!”); }
};
class squeak implements quackbehavior{
public void quack(){system.out.println(“发出空气与橡皮摩擦声 !”);
}
};
class quacknoway implements quackbehavior{
public void quack(){system.out.println(“不能发声!”);}
};
abstract class duck{
protected  flybehavior  (3)  ;
protected  quackbehavior  (4)  ;
public void fly(){  (5)  ;  }
public void quack()  {  (6)  ;};
public   (7)  void display();
};
class rubberduck extends duck{
public rubberduck(){
flybehavior=new  (8)  ;
quackbehavior=new  (9)  ;
}
public void display(){/*此处省略显示橡皮鸭的代码*/  }
};
//其他代码省略
信管网参考答案:
查看解析:www.cnitpm.com/st/2455614600.html

扫码关注公众号

温馨提示:因考试政策、内容不断变化与调整,信管网网站提供的以上信息仅供参考,如有异议,请以权威部门公布的内容为准!

信管网致力于为广大信管从业人员、爱好者、大学生提供专业、高质量的课程和服务,解决其考试证书、技能提升和就业的需求。

信管网软考课程由信管网依托10年专业软考教研倾力打造,官方教材参编作者和资深讲师坐镇,通过深研历年考试出题规律与考试大纲,深挖核心知识与高频考点,为学员考试保驾护航。面授、直播&录播,多种班型灵活学习,满足不同学员考证需求,降低课程学习难度,使学习效果事半功倍。

相关内容

发表评论  查看完整评论  

推荐文章