上半年软件设计师考试真题及答案下午卷.docx
- 文档编号:12669020
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:28
- 大小:246.42KB
上半年软件设计师考试真题及答案下午卷.docx
《上半年软件设计师考试真题及答案下午卷.docx》由会员分享,可在线阅读,更多相关《上半年软件设计师考试真题及答案下午卷.docx(28页珍藏版)》请在冰点文库上搜索。
上半年软件设计师考试真题及答案下午卷
2021上半年软件设计师考试真题及答案-下午卷
试题一
阅读以下说明和图,答复以下问题1至问题4,将解答填入对应栏内。
【说明】
某音像制品出租商店欲开发一个音像管理信息系统,管理音像制品的租借业务。
需求如下:
1.系统中的客户信息文件保存了该商店的所有客户的用户名、密码等信息。
对于首次来租借的客户,系统会为其生成用户名和初始密码。
2.系统中音像制品信息文件记录了商店中所有音像制品的详细信息及其库存数量。
3.根据客户所租借的音像制品的品种,会按天收取相应的费用。
音像制品的最长租借周期为1周,每位客户每次最多只能租借6件音像制品。
4.客户租借某种音像制品的具体流程如下。
1根据客户提供的用户名和密码,验证客户身份。
2假设该客户是合法客户,查询音像制品信息文件,查看商店中是否还有这种音像制品。
3假设还有该音像制品,且客户所要租借的音像制品数小于等于6个,就可以将该音像制品租借给客户。
这时,系统给出相应的租借确认信息,生成一条新的租借记录并将其保存在租借记录文件中。
4系统计算租借费用,将费用信息保存在租借记录文件中并告知客户。
5客户付清租借费用之后,系统接收客户付款信息,将音像制品租借给该客户。
5.当库存中某音像制品数量不能满足客户的租借请求数量时,系统可以承受客户网上预约租借某种音像制品。
系统接收到预约请求后,检查库存信息,验证用户身份,创立相应的预约记录,生成预约流水号给该客户,并将信息保存在预约记录文件中。
6.客户归还到期的音像制品,系统修改租借记录文件,并查询预约记录文件和客户信息文件,判定是否有客户预约了这些音像制品。
假设有,那么生成预约提示信息,通知系统履行预约效劳,系统查询客户信息文件和预约记录文件,通知相关客户前来租借音像制品。
1、【问题1】
图(a)中只有一个外部实体E1。
使用【说明】中的词语,给出E1的名称。
2、【问题2】
使用【说明】中的词语,给出图(b)中的数据存储D1~D4的名称。
3、【问题3】
数据流图(b)缺少了3条数据流,根据说明及数据流图(a)提供的信息,分别指出这3条数据流的起点和终点。
起点
终点
4、【问题4】
在进展系统分析与设计时,面向数据构造的设计方法(如Jackson方法)也被广泛应用。
简要说明面向数据构造设计方法的根本思想及其适用场合。
试题二
阅读以下说明,答复以下问题1至问题3,将解答填入对应栏内。
【说明】
某地区举行篮球比赛,需要开发一个比赛信息管理系统来记录比赛的相关信息。
【需求分析结果】
1.登记参赛。
球队的信息。
记录球队的名称、代表地区、成立时间等信息。
系统记录球队每个队员的姓名、年龄、身高、体重等信息。
每个球队有一个教练负责管理球队,一个教练仅负责一个球队。
系统记录教练的姓名、年龄等信息。
2.安排球队的训练信息。
比赛组织者为球队提供了假设干块场地,供球队进展适应性训练。
系统记录现有的场地信息,包括:
场地名称、场地规模、位置等信息。
系统可为每个球队安排不同的训练场地,如下表所示。
系统记录训练场地安排的信息。
球队名称
场地名称
训练时间
解放军
一号球场
2021-06-09 14:
00--18:
00
解放军
一号球场
2021-06-12 09:
00--12:
00
解放军
二号球场
2021-06-11 14:
00--1800
山西
一号球场
2021-06-10 09:
00--12:
00
3.安排比赛。
该赛事聘请专职裁判,每场比赛只安排一个裁判。
系统记录裁判的姓名、年龄、级别等信息。
系统按照一定的规那么,首先分组,然后根据球队、场地和裁判情况,安排比赛(每场比赛的对阵双方分别称为甲队和乙队)。
记录参赛球队名称、比赛时间、比分、比赛场地等信息,如下表所示。
A组:
甲队—乙队
场地名称
比赛时间
裁判
比分
解放军—北京
一号球场
2021-06-1715:
00
李大明
天津—山西
一号球场
2021-06-1719:
00
胡学梅
B组:
甲队—乙队
场地名称
比赛时间
裁判
比分
上海—安徽
二号球场
2021-06-1715:
00
丁鸿平
山东—辽宁
二号球场
2021-06-1719:
00
郭爱琪
4.所有球员、教练和裁判可能出现重名情况。
【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如下:
1.实体联系图(图2-1)
2.关系模式
教练(教练编号,姓名,年龄)
队员(队员编号,姓名,年龄,身高,体重, (a) )
球队(球队名称,代表地区,成立时间, (b) )
场地(场地名称,场地规模,位置)
训练记录( (c) )
裁判(裁判编号,姓名,年龄,级别)
比赛记录( (d) )
5、【问题1】
根据问题描述,补充联系及其类型,完善实体联系图2-1。
(联系及其类型的书写格式参照教练与球队之间的联系描述,联系名称也可使用联系1、联系2、……)
6、【问题2】
根据实体联系图,填充关系模式中的a.、b.、c.和d.,并给出训练记录和比赛记录关系模式的主键和外键。
7、【问题3】
如果考虑记录一些特别资深的热心球迷的情况,每个热心球迷可能支持多个球队。
热心球迷包括:
姓名、住址和喜欢的俱乐部等根本信息。
根据这一要求修改上图的实体联系图,给出修改后的关系模式(仅给出增加的关系模式描述)。
试题三
阅读以下说明和图,答复以下问题1至问题4,将解答填入对应栏内。
【说明】
某汽车停车场欲建立一个信息系统,已经调查到的需求如下:
1.在停车场的入口和出口分别安装一个自动栏杆、一台停车卡打印机、一台读卡器和一个车辆通过传感器,示意图如下:
2.当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡。
当驾驶员拿走停车卡后,系统命令栏杆自动抬起;汽车通过入口后,入口处的传感器通知系统发出命令,栏杆自动放下。
3.在停车场内分布着假设干个付款机器。
驾驶员将在入口处获取的停车卡插入付款机器,并缴纳停车费。
付清停车费之后,将获得一张出场卡,用于离开停车场。
4.当汽车到达出口时,驾驶员将出场卡插入出口处的读卡器。
如果这张卡是有效的,系统命令栏杆自动抬起;汽车通过出口后,出口传感器通知系统发出命令,栏杆自动放下。
假设这张卡是无效的,系统不发出栏杆抬起命令而发出告警信号。
5.系统自动记录停车场内空闲的停车位的数量。
假设停车场当前没有车位,系统将在入口处显示“车位已满〞信息。
这时,停车卡打印机将不再出卡,只允许场内汽车出场。
根据上述描述,采用面向对象方法对其进展分析与设计,得到了如下表所示的类/用例/状态列表、以下图(a)所示的用例图、图(b)所示的初始类图以及图(c)所示的描述入口自动栏杆行为的UML状态图。
类/用例/状态列表
8、【问题1】
根据说明中的描述,使用上页表给出的用例名称,给出图(a)中U1、U2和U3所对应的用例。
9、【问题2】
根据说明中的描述,使用上页表给出的类的名称,给出图(b)中的,A~D所对应的类。
10、【问题3】
根据说明中的描述,使用上页表给出的状态名称,给出图(c)中S1~S4所对应的状态。
11、【问题4】
简要解释图(a)中用例U1和U3之间的extend关系的内涵。
试题四
阅读以下说明,答复以下问题1至问题3,将解答填入对应栏内。
【说明】
快速排序是一种典型的分治算法。
采用快速排序对数组A[p..r]排序的3个步骤如下。
1.分解:
选择一个枢轴(pivot)元素划分数组。
将数组A[p..r]划分为两个子数组(可能为空)A[p..q-1]和A[q+1..r],使得A[q]大于等于A[p..q-1)中的每个元素,小于A[q+1..r]中的每个元素。
q的值在划分过程中计算。
2.递归求解:
通过递归的调用快速排序,对子数组A[p..q-1]和A[q+1..r]分别排序。
3.合并:
快速排序在原地排序,故不需合并操作。
12、【问题1】
下面是快速排序的伪代码,请填补其中的空缺;伪代码中的主要变量说明如下。
A:
待排序数组
p,r:
数组元素下标,从p到r
q:
划分的位置
x:
枢轴元素
i:
整型变量,用于描述数组下标。
下标小于或等于i的元素的值小于或等于枢轴元素的值
j:
循环控制变量,表示数组元素下标
QUICKSORT(A,p,r){
if (p<r){
q=PARTITION(A,p,r);
QUICKSORT(A,p,q-1);
QUICKSORT(A,q+1,r);
}
}
PARTITION(A,p,r){
x=A[r];i=p-1;
for(j=p;j≤r-1;j++){
if (A[j]≤x){
i=i+1;
交换A[i]和A[j]
}
}
交
(1) 和
(2) //注:
空
(1)和空
(2)答案可互换,但两空全部答对方可得分return (3)
}
13、【问题2】
(1)假设要排序包含n个元素的数组,请给出在各种不同的划分情况下,快速排序的时间复杂度,用O记号。
最正确情况为 (4) ,平均情况为 (5) ,最坏情况为 (6) 。
(2)假设要排序的n个元素都具有一样值时,快速排序的运行时间复杂度属于哪种情况?
(7) 。
(最正确,平均、最坏)
14、【问题3】
(1)待排序数组是否能被较均匀地划分对快速排序的性能有重要影响,因此枢轴元素的选取非常重要。
有人提出从待排序的数组元素中随机地取出一个元素作为枢轴元素,下面是随机化快速排序划分的伪代码——利用原有的快速排序的划分操作,请填充其中的空缺处。
其中,RANDOM(i,j)表示随机取i到j之间的一个数,包括i和j。
RANDOMIZED-PARTITION(A,p,r){
i=RANDOM(p,rl);
交换 (8) 和 (9) ;//注:
空(8)和空(9)答案可互换,但两空全部答对方可得分
returnPARTITION(A,p,r);
}
(2)随机化快速排序是否能够消除最坏情况的发生?
(10) 。
(是或否)
试题五
阅读以下说明和C代码,将应填入 处的字句写在对应栏内。
15、【说明】
栈(Stack)构造是计算机语言实现中的一种重要数据构造。
对于任意栈,进展插入和删除操作的一端称为栈顶(StockTop),而另一端称为栈底(StockBottom)。
栈的根本操作包括:
创立栈(NewStack)、判断栈是否为空(IsEmpty)、判断栈是否已满(IsFull)、获取栈顶数据(Top)、压栈/入栈(Push)、弹栈/出栈(Pop)。
当设计栈的存储构造时,可以采取多种方式。
其中,采用链式存储构造实现的栈中各数据项不必连续存储(如以下图所示)。
以下C代码采用链式存储构造实现一个整数栈操作。
【C代码】
typedefstructList{
intdata; //栈数据
structList*next; //上次入栈的数据地址
}List;
typedefstructStack{
List*pTop; //当前栈顶指针
}Stack;
Stack*NewStack() {return(Stack*)calloc(1/sizeof(Stack));}
intIsEmpty(Stack*S){//判断栈S是否为空栈
if(
(1) )return1;
return0;
}
intTop(Stack*s){//获取栈顶数据。
假设栈为空,那么返回机器可表示的最小整数
if(IsEmpty(S))returnINT_MIN;
return
(2) ;
}
voidPush(Stack*S,inttheData){//将数据theData压栈
List*newNode;
newNode=(List*)calloc(1/sizeof(List));
newNode->data=theData;
newNode->next=S->pTop;
S->pTop= (3) ;
}
voidPop(Stack*S) {//弹栈
List*lastTop;
if(IsEmpty(S) ) return;
lastTop=S->pTop;
S->pTop= (4) ;
free(lastTop);
}
#defineMD(a) a<<2
intmain(){
inti;
Stack*myStack;
myStack=NewStack();
Push(myStack,MD
(1));
Push(myStack,MD
(2));
Pop(myStack);
Push(myStack,MD(3)+1);
while(!
IsEmpty(myStack) ){
printf("%d",Top(myStack));
Pop(myStack);
}
return0;
}
以上程序运行时的输出结果为:
(5)
试题六
阅读以下说明和C++代码,将应填入 (n) 处的字句写在对应栏内。
16、【说明】
某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。
遥控器如左下所示。
该遥控器共有4个按钮,编号分别是0至3,按钮0和2能够遥控翻开电器1和电器2,按钮1和3那么能遥控关闭电器1和电器2。
由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。
现假设需要控制客厅电视和卧室电灯,对该遥控系统进展设计所得类图如右下所示。
右上图中,类RomoteController的方法onPressButton(intbutton)表示当遥控器按键按下时调用的方法,参数为按键的编号;Command接口中on和off方法分别用于控制电器的开与关;Light中turnLight(intdegree)方法用于调整电灯灯光的强弱,参数degree值为0时表示关灯,值为100时表示开灯并且将灯光亮度调整到最大;TV中setChannel(intchannel)方法表示设置电视播放的频道,参数channel值为0时表示关闭电视,为1时表示开机并将频道切换为第1频道。
【C++代码】
classLight{ //电灯类
public:
voidtrunLight(intdegree){//调整灯光亮度,0表示关灯,100表示亮度最大);
};
classTV{//电视机类
public:
voldsetChannel(intchannel]{//调整电视频道,0表示关机,1表示开机并切换到1频道};
};
classCommand{//抽象命令类
public:
virtualvoidon()=0;
virtualvoidoff()=0;
};
classRemoteController{ //遥控器类
protected:
Command*commands[4];//遥控器有4个按钮,按照编号分别对应4个Command对象
public:
voidonPressButton(intbutton){ //按钮被按下时执行命令对象中的命令
if(button%2==0)commands[button]->on();
elsecommands[button]->off();
}
voidsetCommand(intbutton,Command*command){
(1) =command;//设置每个按钮对应的命令对象
}
};
classLightCommand:
publicCommand{ //电灯命令类
protected:
Light*light; //指向要控制的电灯对象
public:
voidOn(){light->trunLight(100););
voidoff()[light->
(2) ;);
LightCommand(Light*light){this->light=light;);
};
classTVCommand:
publicCommand{//电视机命令类
protected:
TV*tv; //指向要控制的电视机对象
public:
voidon(){tv-> (3) ;};
voidoff(){tv->setChannel(0););
TVCommand(TV*tv){this->tv=tv;);
};
voidmain(){
Lightlight; TVtv;//创立电灯和电视对象
LightCommandlightCommand(&light);
TVCommandtVCommand(&tv);
RemoteControllerremoteController;
remoteController.setCommand(0, (4) ); //设置按钮0的命令对象
…//此处省略设置按钮1、按钮2和按钮3的命令对象代码
}
此题中,应用命令模式能够有效让类 (5) 和类 (6) 、类 (7) 之间的耦合性降至最小。
试题七
阅读以下说明和Java代码,将应填入 (n) 处的字句写在对应栏内。
17、【说明】
某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。
遥控器如以下图(a)所示。
该遥控器共有4今按钮,编号分别是0至3,按钮0和2能够遥控翻开电器1和电器2,按钮1和3那么能遥控关闭电器1和电器2。
由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。
现假设需要控制客厅电视和卧室电灯,对该遥控系统进展设计所得类图如以下图(b)所示。
图(b)中,类RomoteController的方法onPrcssButton(intbutton)表示当遥控器按键按下时调用的方法,参数为按键的编号;command接口中on和off方法分别用于控制电器的开与关;Light中turnLight(intdegree)方法用于调整电灯灯光的强弱,参数degree值为0时表示关灯,值为100时表示开灯并且将灯光亮度调整到最大;TV中sctChannel(intchannel)方法表示设置电视播放的频道,参数channel值为0时表示关闭电视,为1时表示开机并将频道切换为第1频道。
【Java代码】
classLight{ //电灯类
publicvoidtrunLight(intdegree){//调整灯光亮度,0表示关灯,100表示亮度最大}
};
classTV{//电视机类
publicvoidsetChannel(intchannel){//0表示关机,1表示开机并切换到1频道}
};
interfaceCommand{//抽象命令类
voidon();
voidoff();
};
classRemoteController{ //遥控器类
protectedCommand []commands=newCommand[4];
//遥控器有4个按钮,按照编号分别对应4个Command对象
publicvoidonPressButton(intbutton){
//按钮被按下时执行命令对象中的命令
if(button % 2==0)commands[button].on();
elsecommands[button].off();
}
publicvoidsetCommand(intbutton, Commandcommand){
(1) =command;//设置每个按钮对应的命令对象
}
};
classLightCommandimplementsCommand{ //电灯命令类
protectedLightlight; //指向要控制的电灯对象
publicvoidon(){light.trunLight(100););
publicvoidoff(){light.
(2) ;);
publicLightCommand(Lightlight){this.light=light;);
};
classTVCommandimplementsCommand{//电视机命令类
protectedTvtv; //指向要控制的电视机对象
publicvoidon(){tv. (3) ;};
publicvoidoff(){tv.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上半年 软件 设计师 考试 答案 下午