上半年软件设计师考试模拟试题及答案下午卷6.docx
- 文档编号:1198373
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:27
- 大小:414.34KB
上半年软件设计师考试模拟试题及答案下午卷6.docx
《上半年软件设计师考试模拟试题及答案下午卷6.docx》由会员分享,可在线阅读,更多相关《上半年软件设计师考试模拟试题及答案下午卷6.docx(27页珍藏版)》请在冰点文库上搜索。
上半年软件设计师考试模拟试题及答案下午卷6
2021上半年软件设计师考试模拟试题及答案-下午卷
试题一
阅读下列说明和图,回答问题1至问题4,将解答填入对应栏内。
[说明]
某医院欲开发病人监控系统。
该系统通过各种设备监控病人的生命特征,并在生命特征异常时向医生和护理人员报警。
该系统的主要功能如下:
1本地监控:
定期获取病人的生命特征,如体温、血压、心率等数据。
2格式化生命特征:
对病人的各项重要生命特征数据进行格式化,然后存入日志文件并检查生命特征。
3检查生命特征:
将格式化后的生命特征与生命特征范围文件中预设的正常范围进行比较。
如果超出了预设范围,系统就发送一条警告信息给医生和护理人员。
4维护生命特征范围:
医生在必要时(如,新的研究结果出现时)添加或更新生命特征值的正常范围。
5提取报告:
在医生或护理人员请求病人生命特征报告时,从日志文件中获取病人生命特征生成特征报告,并返回给请求者。
6生成病历:
根据日志文件中的生命特征,医生对病人的病情进行描述,形成病历存入病历文件。
7查询病历:
根据医生的病历查询请求,查询病历文件,给医生返回病历报告。
8生成治疗意见:
根据日志文件中的生命特征和病历,医生给出治疗意见,如处方等,并存入治疗意见文件。
9查询治疗意见:
医生和护理人员查询治疗意见,据此对病人进行治疗。
现采用结构化方法对病人监控系统进行分析与设计,获得如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。
1、使用说明中的词语,给出图1-1中的实体E1~E3的名称。
2、使用说明中的词语,给出图1-2中的数据存储D1~D4的名称。
3、图1-2中缺失了4条数据流,使用说明、图1-1和图1-2中的术语,给出数据流的名称及其起点和终点。
4、说明实体E1和E3之间可否有数据流,并解释其原因。
试题二
阅读下列说明,回答问题1至问题3,将解答填入对应栏内。
[说明]
某服装销售公司拟开发一套服装采购管理系统,以方便对服装采购和库存进行管理。
[需求分析]
5采购系统需要维护服装信息及服装在仓库中的存放情况。
服装信息主要包括:
服装编码、服装描述、服装类型、销售价格、尺码和面料,其中,服装类型为销售分类,服装按销售分类编码。
仓库信息包括:
仓库编码、仓库位置、仓库容量和库管员。
系统记录库管员的库管员编码、姓名和级别。
一个库管员可以管理多个仓库,每个仓库有一名库管员。
一个仓库中可以存放多类服装,一类服装可能存放在多个仓库中。
6当库管员发现有一类或者多类服装缺货时,需要生成采购订单。
一个采购订单可以包含多类服装。
每类服装可由多个不同的供应商供应,但具有相同的服装编码。
采购订单主要记录订单编码、订货日期和应到货日期,并详细记录所采购的每类服装的数量、采购价格和对应的多个供应商。
7系统需记录每类服装的各个供应商信息和供应商生产服装的情况。
供应商信息包括:
供应商编码、供应商名称、地址、企业法人和联系电话。
一个供应商可以供应多类服装,一类服装可由多个供应商供应。
库管员根据入库时的服装质量情况,设定每个供应商所供应的每类服装的服装质量等级,作为后续采购服装时,选择供应商的参考标准。
[概念模型设计]
根据需求阶段收集的信息,设计的实体联系图(不完整)如图2-1所示。
[逻辑结构设计]
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):
库管员(库管员编码,姓名,级别)
仓库信息( 5 ,仓库位置,仓库容量)
服装(服装编码,服装描述,服装类型,尺码,面料,销售价格)
供应商(供应商编码,供应商名称,地址,联系电话,企业法人)
供应情况( 6 ,服装质量等级)
采购订单( 7 )
采购订单明细( 8 )
5、根据需求分析的描述,补充图2—1中的联系和联系的类型。
6、根据补充完整的图2-1,将逻辑结构设计阶段生成的关系模式中的空
(1)~(4)补充完整,并给出其主键(用下划线指出)。
7、如果库管员定期需要轮流对所有仓库中的服装质量进行抽查,对每个仓库中的每一类被抽查服装需要记录一条检查结果,并且需要记录抽查的时间和负责抽查的库管员。
请根据该要求,对图2-1进行修改,画出修改后的实体间联系和联系的类型。
试题三
阅读下列说明和图,回答问题1至问题3,将解答填入对应栏内。
[说明]
一个简单的图形编辑器提供给用户的基本操作包括:
创建图形、创建元素、选择元素以及删除图形。
图形编辑器的组成及其基本功能描述如下:
8图形由文本元素和图元元素构成,图元元素包括线条、矩形和椭圆。
9图形显示在工作空间中,一次只能显示一张图形(即当前图形,current)。
10编辑器提供了两种操作图形的工具:
选择工具和创建工具。
对图形进行操作时,一次只能使用一种工具(即当前活动工具,accive)。
①创建工具用于创建文本元素和图元元素。
②对于显示在工作空间中的图形,使用选择工具能够选定其中所包含的元素,可以选择一个元素,也可以同时选择多个元素。
被选择的元素称为当前选中元素(selected)。
③每种元素都具有对应的控制点。
拖拽选定元素的控制点,可以移动元素或者调整元素的大小。
现采用面向对象方法开发该图形编辑器,使用UML进行建模。
构建出的用例图和类图分别如图3-1和图3-2所示。
8、根据说明中的描述,给出图3-1中U1和U2所对应的用例,以及
(1)和
(2)处所对应的关系。
9、根据说明中的描述,给出图3-2中缺少的C1至C8所对应的类名以及(3)至(6)处所对应的多重度。
10、图3-2中的类图设计采用了桥接(Bridge)设计模式,请说明该模式的内涵。
试题四
阅读下列说明和c代码,回答问题1至问题3,将解答写在对应栏内。
[说明]
某应用中需要对100000个整数元素进行排序,每个元素的取值在0~5之间。
排序算法的基本思想是:
对每一个元素x,确定小于等于x的元素个数(记为m),将x放在输出元素序列的第m个位置。
对于元素值重复的情况,依次放入第m-1、m-2、…个位置。
例如,如果元素值小于等于4的元素个数有10个,其中元素值等于4的元素个数有3个,则4应该在输出元素序列的第10个位置、第9个位置和第8个位置上。
算法具体的步骤为:
步骤1:
统计每个元素值的个数。
步骤2:
统计小于等于每个元素值的个数。
步骤3:
将输入元素序列中的每个元素放入有序的输出元素序列。
[C代码]
下面是该排序算法的C语言实现。
11常量和变量说明
R:
常量,定义元素取值范围中的取值个数,如上述应用中R值应取6。
i:
循环变量。
n:
待排序元素个数。
a:
输入数组,长度为n。
b:
输出数组,长度为n。
c:
辅助数组,长度为R,其中每个元素表示小于等于下标所对应的元素值的个数。
12函数sort
1voidsort(intn,inta[],intb[]) {
2 intc[R],i;
3 for(i=0;i< 11 ;i++) {
4 c[i]=0;
5 }
6 for(i=0;i<n;i++) {
7 c[a[i]]= 12 ;
8 }
9 for(i=1;i<R;i++) {
10 c[i]= 13 ;
11 }
12 for(i=0;i<n;i++) {
13 b[c[a[i]]-1]= 14 ;
14 c[a[i]]=c[a[i]]-1;
15 }
16 }
11、根据说明和C代码,填充C代码中的空缺
(1)~(4)。
12、根据C代码,函数的时间复杂度和空间复杂度分别为 (5) 和 (6) (用O符号表示)。
13、根据以上C代码,分析该排序算法是否稳定。
若稳定,请简要说明(不超过100字);若不稳定,请修改其中代码使其稳定(给出要修改的行号和修改后的代码)。
试题五
阅读下列说明和C++代码,将应填入 (n) 处的字句写在对应栏内。
[说明]
某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图5-1所示。
现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中增加新的餐饮形式,得到如图5-2所示的类图。
其中MenuComponent为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。
类Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。
每种菜单中都可以添加子菜单,例如图5-1中的甜点菜单。
类MenuItem表示菜单中的菜式。
[C++代码]
#include<iostream>
#include<list>
#include<string>
usingnamespacestd;
classMenuComponent {
protected:
stringname;
public:
MenuComponent(stringname) {this->name=name; }
StringgetName19{returnname;}
14 :
//添加新菜单
virtualvoidprint19=0; //打印菜单信息
};
clasSMenuItem:
publicMenuComponent {
private:
doubleprice;
public:
Menultem(stringname,doubleprice):
MenuComponent(name){this->price=price;}
doublegetPrice19{returnprice;}
voidadd(MenuComponent*menuComponent) {return; } //添加新菜单
voidprint19 {cout<<" "<<getName19<<","<<getPrice19<<end1;}
};
clasSMenu:
publicMenuComponent {
private:
list< 15 >menuComponents;
pubiic:
Menu(stringname):
MenuC0mponent(name){}
voidadd(MenuComponent*menuComponent) //添加新菜单
{ 16 ; }
voidprint19{
cout<<"\n"<<getName19<<"\n-------------------------"<<end1;
std:
:
list<MenuC0mponent*>:
:
iteratoriter;
for(iter=menuComponents.begin19;iter!
=menuComponents.end19;iter++)
17 ->print19;
}
};
voidmain19{
MenuComponent*allMenus=newMenu("ALLMENUS");
MenuComponent*dinerMenu=newMenu("DINERMENU");
…//创建更多的Menu对象,此处代码省略
allMenus->add(dinerMenu); //将dinerMenu添加到餐厅菜单中
…//为餐厅增加更多的菜单,此处代码省略
18 ->print19; //打印饭店所有菜单的信息
}
试题六
阅读下列说明和Java代码,将应填入 (n) 处的字句写在对应栏内。
[说明]
某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图6-1所示。
现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中增加新的餐饮形式,得到如图6-2所示的类图。
其中MenuComponent为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。
类Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。
每种菜单中都可以添加子菜单,例如图6-1中的甜点菜单。
类MenuItem表示菜单中的菜式。
[Java代码]
importJava.util.*;
19 MenuComponent{
protectedStringname;
20 ;//添加新菜单
publicabstractvoidprint24; //打印菜单信息
publicStringgetName24{returnname;}
}
classMenuItemextendsMenuComponent{
privatedoubleprice;
publicMenultem(Stringname,doubleprice){
this.name=name;this.price=price;
}
publicdoublegetPrice24 {returnprice;}
publicvoidadd(MenuComponentmenuComponent){return;}//添加新菜单
publicvoidprint24{
System.out.print(""+getName24);
System.out.println(","+getPrice24);
}
}
classMenuextendsMenuComponent {
privateList<MenuComponent>menuComponents=newArrayList<MenuComponent>24;
publicMenu(Stringname){this.name=name;}
publicvoidadd(MenuComponentmenuComponent){ //添加新菜单
menuComponents. 21 ;
}
publiCvoidprint24{
System.out.print(“\n"+getName24);
System.out.println(","+"-------------------------");
Iteratoriterator=menuComponents.iterator24;
while(iterator.hasNext24){
MenuComponentmenuC0mponent=(MenuComponent)iterator.next24;
22 ;
}
}
ClassMenuTestDrive{
publicstaticvoidmain(Stringargs[]){
MenuComponentallMenus=newMenu("ALLMENUS");
MenuComponentdinerMenu=newMenu("DINERMENU");
…//创建更多的Menu对象,此处代码省略
allMenus.add(dinerMenu); //将dinerMenu添加到餐厅菜单中
…//为餐厅增加更多的菜单,此处代码省略
23 ; //打印饭店所有菜单的信息
}
}
答案:
试题一
1、E1:
病人 E2:
护理人员 E3:
医生
本题考查数据流图(DFD)应用于采用结构化方法进行系统分析与设计,是比较传统的题目,要求考生细心分析题目中所描述的内容。
DFD是一种便于用户理解、分析系统数据流程的图形化建模工具,是系统逻辑模型的重要组成部分。
本问题考查顶层DFD。
顶层DFD一般用来确定系统边界,将待开发系统看作一个加工,因此图中只有唯一的一个处理和一些外部实体,以及这两者之间的输入输出数据流。
题目要求根据描述来确定图中的外部实体。
分析题目中的描述,并结合已经在顶层数据流图中给出的数据流进行分析。
从中可以看出,与系统的交互者包括病人、医生和护理人员。
其中,本地监控定期获取病人的生命特征,病人是生命特征数据来源,医生和护理人员提出相关请求,并得到相关报告结果,如请求病人生命特征报告,并获得相关报告。
医生还需要在必要时添加或更新生命特征范围。
对应图1-1中数据流和实体的对应关系,可知E1为病人,E2为护理人员,E3为医生。
2、D1:
生命特征范围文件 D2:
日志文件
D3:
病历文件 D4:
治疗意见文件
本问题考查0层DFD中数据存储的确定。
根据说明中描述:
(2)格式化生命特征:
对病人的各项重要生命特征数据进行格式化,然后存入日志文件并检查生命特征;(4)维护生命特征范围:
医生在必要时(如新的研究结果出现时)添加或更新生命特征值的正常范围;(6)生成病历:
根据日志文件中的生命特征,医生对病人的病情进行描述,形成病历存入病历文件;(8)生成治疗意见:
根据日志文件中的生命特征和病历,医生给出治疗意见,如处方等,并存入治疗意见文件。
因此,D1为生命特征范围文件,D2为日志文件,D3为病例文件,D4为治疗意见文件。
3、
数据流名称
起点
终点
重要生命特征
本地监控
格式化生命特征
格式化后的生命特征
格式化生命特征
检查生命特征
病例
生成病历
D3或病历(文件)
生命特征
D2或日志(文件)
生成病例
本问题考查0层DFD中缺失的处理和数据流。
从说明中的描述及图1-2可知,本地监控之后要对重要生命特征存储日志文件并进行格式化,所以在本地监控和格式化生命特征之间缺少了数据流重要生命特征;检查生命特征是对格式化后的生命特征进行检查,所以在格式化生命特征和检查生命特征之间缺少了数据流格式化后的生命特征;根据日志文件中的生命特征,医生对病人的病情进行描述,形成病历存入病历文件。
4、E1和E3之间不可以有数据流,因为数据流的起点和终点中必须有一个是加工(处理)。
本问题考查绘制DFD时的注意事项。
在DFD中,每条数据流的起点和终点之一必须是加工(处理)。
本题中,医生和护理人员根据查询到的治疗意见对病人进行治疗属于系统之外的行为,所以两个实体之间不可以有数据流。
试题二
5、
本题考查数据库设计,属于比较传统的题目,考查点也与往年类似。
本问题考查数据库的概念结构设计,题目要求补充完整实体联系图中的联系和联系的类型。
根据题目的需求描述可知,一个库管员可以管理多个仓库,每个仓库有一名库管员。
所以,仓库实体和库管员实体之间存在“管理”联系,联系的类型为多对一(*:
1)。
根据题目的需求描述可知,一个仓库中可以存放多类服装,一类服装可能存放在多个仓库中。
所以,仓库实体和服装实体之间存在“存放”联系,联系的类型为多对多(*:
*)。
根据题目的需求描述可知,一个采购订单可以包含多类服装,每类服装可由多个不同的供应商供应。
所以,采购订单实体与服装实体和供应商实体三者之间存在“采购”联系,三者之间联系的类型为多对多对多(*:
*:
*)。
根据题目的需求描述可知,一个供应商可以供应多类服装,一类服装可由多个供应商供应。
所以,供应商实体和服装实体之间存在“供应”联系,联系的类型为多对多(*:
*)。
6、仓库编码,库管员编码
(2)供应商编码,服装编码
(3)订单编码,订货日期,应到货日期
(4)订单编码,服装编码,供应商编码,数量,采购价格
本问题考查数据库的逻辑结构设计,题目要求补充完整各关系模式,并给出各关系模式的主键。
根据实体联系图和需求描述,系统记录库管员的库编码、姓名和级别。
所以,对于“库管员”关系模式,需补充属性“库管员编码”。
根据实体联系图和需求描述,仓库信息主要包括:
仓库编码、仓库位置、仓库容量和库管员。
对于“仓库信息”关系模式,由于仓库实体与库管员实体有多对一联系,需记录对应的库管员,并且需补充属性——仓库编码。
因此,“仓库信息”关系模式,需补充属性“仓库编码”和“库管员编码”。
根据实体联系图和需求描述,供应商信息包括:
供应商编码、供应商名称、地址、企业法人和联系电话。
所以,对于“供应商”关系模式,需补充属性“供应商编码”。
根据实体联系图和需求描述,“供应情况”关系模式,需记录供应商和服装的多对多联系,即一个供应商可以供应多类服装,一类服装可由多个供应商供应。
所以,对于“供应商”关系模式,需补充属性“供应商编码”和“服装编码”。
根据实体联系图和需求描述,采购订单主要记录订单编码、订货日期和应到货日期。
所以,对于“采购订单”关系模式需补充属性:
订单编码、订货日期和应到货日期。
由于采购订单还需详细记录所采购的每类服装的数量、采购价格和对应的多个供应商。
因此,“采购订单明细”关系模式,需记录采购订单实体与服装实体和供应商实体三者之间存在的多对多对多联系。
对于“采购订单明细”关系模式,需补充属性:
订单编码、服装编码、供应商编码、数量和采购价格。
7、
本问题考查的是数据库的概念结构设计,根据新增的需求增加实体联系图中的实体的联系和联系的类型。
根据问题描述,多个库管员需对每个仓库中的每一类被抽查服装记录一条抽查结果。
则在库管员实体与仓库实体和服装实体三者之间存在“抽查”联系,联系的类型是多对多对多(*:
*:
*)。
试题三
8、U1:
移动元素 U2:
调整元素大小(U1和U2的答案可以互换)
(1)<<extend>>
(2)<<extend>>
本题主要考查在面向对象分析与设计过程中,如何利用用例图和类图描述系统需求模型及设计模型。
考生需要理解面向对象方法的相关概念和思想,并熟悉UML的语法及应用。
用例图和类图是考试题中出现次数最多的两种UML模型。
本问题主要考查用例之间的关系。
在UML中,用例之间有3种关系:
包含(include)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上半年 软件 设计师 考试 模拟 试题 答案 下午