软件设计师考试上半年软件设计师考试真题及答案下午卷Word下载.docx
- 文档编号:7090852
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:28
- 大小:278.43KB
软件设计师考试上半年软件设计师考试真题及答案下午卷Word下载.docx
《软件设计师考试上半年软件设计师考试真题及答案下午卷Word下载.docx》由会员分享,可在线阅读,更多相关《软件设计师考试上半年软件设计师考试真题及答案下午卷Word下载.docx(28页珍藏版)》请在冰点文库上搜索。
各个医师可以具有不同的出诊费用,与职称和出诊类型无关。
2.患者首先在门诊挂号处挂号,选择科室和医师,根据选择的医师缴纳挂号费(医师出诊费)。
收银员为患者生成挂号单,如表10-1所示,其中,就诊类型为医师的出诊类型。
表10-1 ×
×
医院门诊挂号单
收银员:
13011 时间:
2007年2月1日08:
58
就诊号
姓名
科室
医师
就诊类型
挂号费
20070205015
叶萌
内科
杨玉明
专家门诊
5元
3.患者在医师处就诊后,凭借挂号单和医师手写处方到门诊药房交费买药。
收银员根据就诊号和医师处方中开列的药品信息,查询药品库(如表10-2所示)并生成门诊处方单(如表10-3所示)。
表10-2 药品库
药品编码
药品名称
类型
库存
货架编号
单位
规格
单价
12007
牛蒡子
中药
51590
B1401
G
炒
11090
百部
36950
B1523
片
表10-3 ×
医院门诊处方单
时间:
2007年2月1日10:
31
病人姓名
医师姓名
金额总计
工程总计
2
收银员
21081
数量
金额(元)
10
4.由于药品价格会发生变化,因此,门诊管理系统必须记录处方单上药品的单价。
根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如下所示:
1.实体联系图
2.关系模式
挂号单(就诊号,病患姓名,医师编号,时间,
4
)
收银员(编号,姓名,级别)
医师(编号,姓名,科室,职称,出诊类型,出诊费用)
门诊处方(
5
,收银员,时间)
处方明细(就诊号,
6
药品库(药品编码,药品名称,
7
4、【问题1】
根据问题描述,填写图10-3实体联系图中
(1)~(4)处联系的类型。
5、【问题2】
图10-3中还缺少几个联系?
请指出每个联系两端的实体名,格式如下。
实体1:
实体2
例如,收银员与门诊处方之间存在联系,表示为:
收银员:
门诊处方
或
门诊处方:
6、【问题3】
根据实体联系图10-3,填写挂号单、门诊处方、处方明细和药品库关系模式中的空(5)~(8)处,并指出挂号单、门诊处方和处方明细关系模式的主键。
试题三
某图书管理系统的主要功能如下:
1.图书管理系统的资源目录中记录着所有可供读者借阅的资源,每项资源都有一个唯一的索引号。
系统需登记每项资源的名称、出版时间和资源状态(可借阅或已借出)。
2.资源可以分为两类:
图书和唱片。
对于图书,系统还需登记作者和页数;
对于唱片,还需登记演唱者和介质类型(CD或者磁带)。
3.读者信息保存在图书管理系统的读者信息数据库中,记录的信息包括:
读者的识别码和读者姓名。
系统为每个读者创立了一个借书记录文件,用来保存读者所借资源的相关信息。
现采用面向对象方法开发该图书管理系统。
识别类是面向对象分析的第一步。
比拟常用的识别类的方法是寻找问题描述中的名词,再根据相关规那么从这些名词中删除不可能成为类的名词,最终得到构成该系统的类。
表10-4给出了[说明]中出现的所有名词。
表10-4
图书管理系统
资源目录
读者
资源
索引号
系统
名称
出版时间
资源状态
图书
唱片
作者
页数
演唱者
介质类型
CD
磁带
读者信息
读者信息数据库
识别码
借书记录文件
信息
通过对表10-4中的名词进展分析,最终得到了图10-4所示的UML类图(类的说明如表10-5所示)。
表10-5
类名
说明
LibrarySystem
图书管理系统
BorrowerDB
保存读者信息的数据库
CatalogItem
资源目录中保存的每项资源
Borrower
读者
BorrowerItems
为每个读者创立的借书记录文件
7、【问题1】
表10-5所给出的类并不完整,根据[说明]和表10-4,将图10-4中的(a)~(c)处补充完整。
8、【问题2】
根据【说明】中的描述,给出图10-4中的类CatalogItem以及(b)、(c)处所对应的类的关键属性(使用表10-4中给出的词汇),其中,CamlogItem有4个关键属性;
(b)、(c)处对应的类各有两个关键属性。
9、【问题3】
识别关联的多重度是面向对象建模过程中的一个重要步骤。
根据[说明]中给出的描述,完成图10-4中的
(1)~(6)。
试题四
阅读以下说明和图,填补流程图中的空缺。
10、
在一条农村公路的一边稀疏地分布着房子,其分布如图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)
。
试题五
(以下试题五至试题七中任选一题解答)
阅读以下说明和C语言函数,应填入
(n)
处。
11、
在一个分布网络中,资源(石油、天然气、电力等)可从生产地送往其他地方。
在传输过程中,资源会有损耗。
例如,天然气的气压会减少,电压会降低。
我们将需要输送的资源信息称为信号。
在信号从信源地送往消耗地的过程中,仅能容忍一定范围的信号衰减,称为容忍值。
分布网络可表示为一个树型构造,如图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保存信号衰减容忍值。
树的节点类型定义如下:
typedefstructTreeNode{
intid;
/*当前节点的识别号*/
intChildNum;
/*当前节点的子节点数目*/
intd;
/*父节点到当前节点的信号衰减值*/
structTreeNode**childptr;
/*向量,存放当前节点到其所有子节点的指针*/
intM;
/*当前节点到其所有子节点的信号衰减值中的最大值*/
boolboost;
/*是否在当前节点放置信号放大器的标志*/
}TreeNode;
【C语言函数】
voidplaceBoosters(TreeNode*root)
{
/*
计算root所指节点处的衰减量,如果衰减量超出了容忍值,那么放置放大器*/
TreeNode*p;
inti,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)
(p->d+p->M>Tolerance)
/*在p所指节点中放置信号放大器*/
p->boost=true;
p->M=0;
}
(p->d+p->M>degradation)
degradation=p->d+p->M;
root->M=
试题六
阅读以下说明和C++代码,应填入
12、
某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。
游戏需要模拟的鸭子种类及其特征如表10-6所示:
表10-6
为支持将来能够模拟更多种类鸭子的特征,采用策略设计模式(Strategy)设计的类图如图10-11所示:
其中,Duck为抽象类,描述了抽象的鸭子,而类RubberDuck、MallardDuck、CottonDuck和RedHeadDuck分别描述具体的鸭子种类,方法fly()、quack()和display()分别表示不同种类的鸭子都具有飞行特征、发声特征和外观特征;
类FlyBehavior与QuackBehavior为抽象类,分别用于表示抽象的飞行行为与发声行为:
类FlyNoWay与FlyWithWings分别描述不能飞行的行为和用翅膀飞行的行为;
类Quack、Squeak与QuackNoWay分别描述发出“嘎嘎〞声的行为、发出橡皮与空气摩擦声的行为与不发声的行为。
请填补以下代码中的空缺。
【C++代码】
#include<iostream>
usingnamespace
classFlyBehavior{
public:
fly()=0;
};
classQuackBehavior{
quack()=0;
classFlyWithWings:
publicFlyBehavior{
voidfly(){
cout<<“使用翅膀飞行!
〞
<<endl;
classFlyNoWay:
cout<<“不能飞行!
〞<<endl;
classQuack:
publicQuackBehavior{
voidquack(){
cout<<“发出\‘嘎嘎\’声
!
classSqueak:
voidquack(){cout<<“发出空气与橡皮摩擦声!
}
classQuackNoWay:
voidquack
(){
cout<<“不能发声
classDuck{
protected:
FlyBehavior*
QuackBehavior*
(6)
(7)
);
virtualvoiddisplay()=0;
classRubberDuck:
publicDuck{
RubberDuck(){
flyBehavior=new
(8)
quackBehavior=new
(9)
~RubberDuck(){
if(!
flyBehavior)deleteflyBehavior;
quackBehavior)
deletequackBehavior;
voiddisplay(){/*此处省略显示橡皮鸭的代码*/
//其他代码省略
试题七
阅读以下说明和Java代码,应填入
13、
游戏需要模拟的鸭子种类及其特征如表10-7所示:
表10-7
为支持将来能够模拟更多种类鸭子的特征,采用策略设计模式(Strategy)设计的类图如图10-12所示:
其中,Duck为抽象类,描述了抽象的鸭子,而类RubberDuck、MallardDuck、CottonDuck和RedHeadDuck分别描述具体的鸭子种类,方法fly()、quack()和display()分别表示不同种类的鸭子都具有飞行特征、发声特征和外观特征;
接口FlyBehavior与QuackBehavior分别用于表示抽象的飞行行为与发声行为;
类FlyNoWay与FlyWithWings分别描述不能飞行的行为和用翅膀飞行的行为;
类Quack、Squeak与QuackNoWay分别描述发出“嘎嘎〞声的行为、发出橡皮与空气摩擦声的行为与不发声的行为。
【Java代码】
FlyBehavior{
publicvoidfly();
QuackBehavior{
publicvoidquack();
classFlyWithWingsimplementsFlyBehavior{
publicvoidfly(){System.out.println(“使用翅膀飞行!
〞);
classFlyNoWayimplementsFlyBehavior{
publicvoidfly(){System.out.println(“不能飞行!
classQuackimplementsQuackBehavior{
publicvoidquack(){System.out.println(“发出\‘嘎嘎\’声!
classSqueakimplementsQuackBehavior{
publicvoidquack(){System.out.println(“发出空气与橡皮摩擦声!
classQuackNoWayimplementsQuackBehavior{
publicvoidquack(){System.out.println(“不能发声!
abstractclassDuck{
protected
FlyBehavior
QuackBehavior
publicvoidfly(){
publicvoidquack()
public
voiddisplay();
classRubberDuckextendsDuck{
publicRubberDuck(){
flyBehavior=new
publicvoiddisplay(){/*此处省略显示橡皮鸭的代码*/
答案:
1、
(1)费用单
(2)待租赁房屋列表
(3)看房请求
(4)变更房屋状态请求 2、(5)房主信息文件
(6)租赁者信息文件
(7)房屋信息文件(8)看房记录文件
3、
(1)起点:
房主
终点:
变更房屋状态
数据流名称:
变更房屋状态请求
(2)起点:
租赁者终点:
登记租赁者信息数据流名称:
租赁者信息
(3)起点:
安排租赁者看房数据流名称:
看房请求
[解析]此题考察的是DFD的应用,属于比拟传统的题目,考察点也与往年类似。
[问题1]考察的是顶层DFD。
顶层DFD通常用来确定系统边界,其中只包含一个唯一的加工(即待开发的系统)、外部实体以及外部实体与系统之间的输入输出数据流。
题目要求填充的正是数据流。
细心的考生可能会发现,在0层DFD中,与“房主〞相关的数据流有5条。
其中的“费用单〞是顶层DFD中没有出现过的,而且是系统输出给“房主〞的。
这条数据流恰好可以与第
(1)空对应,因此
(1)处缺失的数据流就是“费用单〞。
如果确定了(4)处的数据流,实际上[问题3]要求的一条数据流也就找到了。
由于(4)处缺失的数据流是一条输入数据流,从[说明]中可以看出,只有功能6“当租赁者
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 设计师 考试 上半年 答案 下午
![提示](https://static.bingdoc.com/images/bang_tan.gif)