软件设计师考试历年试题.docx

上传人:b****2 文档编号:492778 上传时间:2023-04-29 格式:DOCX 页数:17 大小:247.58KB
下载 相关 举报
软件设计师考试历年试题.docx_第1页
第1页 / 共17页
软件设计师考试历年试题.docx_第2页
第2页 / 共17页
软件设计师考试历年试题.docx_第3页
第3页 / 共17页
软件设计师考试历年试题.docx_第4页
第4页 / 共17页
软件设计师考试历年试题.docx_第5页
第5页 / 共17页
软件设计师考试历年试题.docx_第6页
第6页 / 共17页
软件设计师考试历年试题.docx_第7页
第7页 / 共17页
软件设计师考试历年试题.docx_第8页
第8页 / 共17页
软件设计师考试历年试题.docx_第9页
第9页 / 共17页
软件设计师考试历年试题.docx_第10页
第10页 / 共17页
软件设计师考试历年试题.docx_第11页
第11页 / 共17页
软件设计师考试历年试题.docx_第12页
第12页 / 共17页
软件设计师考试历年试题.docx_第13页
第13页 / 共17页
软件设计师考试历年试题.docx_第14页
第14页 / 共17页
软件设计师考试历年试题.docx_第15页
第15页 / 共17页
软件设计师考试历年试题.docx_第16页
第16页 / 共17页
软件设计师考试历年试题.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

软件设计师考试历年试题.docx

《软件设计师考试历年试题.docx》由会员分享,可在线阅读,更多相关《软件设计师考试历年试题.docx(17页珍藏版)》请在冰点文库上搜索。

软件设计师考试历年试题.docx

软件设计师考试历年试题

2008年下半年软件设计师下午试卷

试题一(共15分)

阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

某营销企业拟开发一个销售管理系统,其主要功能描述如下:

1.接受客户订单,检查库存货物是否满足订单要求。

如果满足,进行供货处理:

即修改库存记录文件,给库房开具备货单并且保留客户订单至订单记录文件;否则进行缺货处理:

将缺货订单录入缺货记录文件。

2.根据缺货记录文件进行缺货统计,将缺货通知单发给采购部门。

3.根据采购部门提供的进货通知单进行进货处理:

即修改库存记录文件,并从缺货记录文件中取出缺货订单进行供货处理。

4.根据保留的客户订单进行销售统计,打印统计报表给经理。

现采用结构化方法对销售管理系统进行分析与设计,获得如图1-1所示的顶层数据流

图和图1-2所示的0层数据流图。

【问题1】(4分)

使用说明中的词语,给出图1-1的外部实体E1~E4的名称。

【问题2】(3分)

使用说明中的词语,给出图1-2的数据存储D1~D3的名称。

【问题3】(8分)

数据流图1-2缺少了四条数据流,根据说明及数据流图1-1提供的信息,分别指出这

四条数据流的起点和终点。

起点

终点

 

试题二(共15分)

阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。

【说明】

某宾馆拟开发一个宾馆客房预订子系统,主要是针对客房的预订和入住等情况进行管理。

【需求分析结果】

1.员工信息主要包括:

员工号、姓名、出生年月、性别、部门、岗位、住址、联系电话和密码等信息。

岗位有管理和服务两种。

岗位为“管理”的员工可以更改(添加、删除和修改)员工表中的本部门员工的岗位和密码,要求将每一次更改前的信息保留;岗位为“服务”的员工只能修改员工表中本人的密码,且负责多个客房的清理等工作。

2.部门信息主要包括:

部门号、部门名称、部门负责人、电话等信息;一个员工只能属于一个部门,一个部门只有一位负责人。

3.客房信息包括:

客房号、类型、价格、状态等信息。

其中类型是指单人间、三人间、普通标准间、豪华标准间等;状态是指空闲、入住和维修。

4.客户信息包括:

身份证号、姓名、性别、单位和联系电话。

5.客房预定情况包括:

客房号、预定日期、预定入住日期、预定入住天数、身份证号等信息。

一条预定信息必须且仅对应一位客户,但一位客户可以有多条预定信息。

【概念模型设计】

根据需求阶段收集的信息,设计的实体联系图(不完整)如图2-1所示:

 

图2-1实体联系图

【逻辑结构设计】

逻辑结构设计阶段设计的部分关系模式(不完整)如下:

员工((4),姓名,出生年月,性别,岗位,住址,联系电话,密码)

权限(岗位,操作权限)

部门(部门号,部门名称,部门负责人,电话)

客房((5),类型,价格,状态,入住日期,入住时间,员工号)

客户((6),姓名,性别,单位,联系电话)

更改权限(员工号,(7),密码,更改日期,更改时间,管理员号)

预定情况((8),预定日期,预定入住日期,预定入住天数)

【问题1】(3分)

根据问题描述,填写图2-1中

(1)~(3)处联系的类型。

联系类型分为一对一、一对多和多对多三种,分别使用1:

1,1:

n或1:

*,m:

n或*:

*表示。

【问题2】(2分)

补充图2-1中的联系并指明其联系类型。

【问题3】(7分)

根据需求分析结果和图2-1,将逻辑结构设计阶段生成的关系模式中的空(4)~(8)补充完整。

(注:

一个空可能需要填多个属性)

【问题4】(3分)

若去掉权限表,并将权限表中的操作权限属性放在员工表中(仍保持管理和服务岗位的操作权限规定),则与原有设计相比有什么优缺点(请从数据库设计的角度进行说明)?

试题三(共15分)

阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。

【说明】

在线会议审稿系统(ORS:

OnlineReviewingSystem)主要处理会议前期的投稿和审稿事务,其功能描述如下:

1.用户在初始使用系统时,必须在系统中注册(register)成为作者或审稿人。

2.作者登录(login)后提交稿件和浏览稿件审阅结果。

提交稿件必须在规定提交时间范围内,其过程为先输入标题和摘要、选择稿件所属主题类型、选择稿件所在位置(存储位置)。

上述几步若未完成,则重复;若完成,则上传稿件至数据库中,系统发送通知。

3.审稿人登录后可设置兴趣领域、审阅稿件给出意见以及罗列录用和(或)拒绝的稿件。

4.会议委员会主席是一个特殊审稿人,可以浏览提交的稿件、给审稿人分配稿件、罗列录用和(或)拒绝的稿件以及关闭审稿过程。

其中关闭审稿过程须包括罗列录用和(或)拒绝的稿件。

系统采用面向对象方法开发,使用UML进行建模。

在建模用例图时,常用的方式是先识别参与者,然后确定参与者如何使用系统来确定用例,每个用例可以构造一个活动图。

参与者名称、用例和活动名称分别参见表3-1、表3-2和表3-3。

系统的部分用例图和提交稿件的活动图分别如图3-1和图3-2所示。

表3-1参与者列表

名称

说明

名称

说明

User

用户

Author

作者

Reviewer

审稿人

Pcchair

委员会主席

表3-2用例名称列表

名称

说明

名称

说明

login

登录系统

register

注册

submitpaper

提交稿件

browsereviewresults

浏览稿件审阅结果

closereviewing

process

关闭审稿过程

assiagnpapertoreviewer

分配稿件给出意见

setpreferences

高定兴趣领域

enterreview

审阅稿件给出意见

listaccepted/rejected

papers

罗列录用或/扣拒绝的稿件

browsesubmittedpapers

浏览提交的稿件

表3-3活动名称列表

名称

说明

名称

说明

selectpaperlocation

选择稿件位置

uploadpaper

上传稿件

electsubjectgroup

选择主题类型

sendnotification

发送通知

entertitleandabstract

输入标题和摘要

 

图3-1ORS用例图

图3-2提交稿件过程的活动图

【问题1】(4分)

根据【说明】中的描述,使用表3-1中的英文名称,给出图3-1中A1~A4所对应的参与者。

【问题2】(3分)

根据【说明】中的描述,使用表3-2中的英文名称,给出图3-1中U1~U3所对应的用例。

【问题3】(4分)

根据【说明】中的描述,给出图3-1中

(1)和

(2)所对应的关系。

【问题4】(4分)

根据【说明】中的描述,使用表3-2和表3-3中的英文名称,给出图3-2中Action1~Action4对应的活动。

试题四(共15分)

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

某餐厅供应各种标准的营养套餐。

假设菜单上共有n项食物m1,m2,…,mn,每项食物mi的营养价值为vi,价格为pi,其中i=1,2,…,n,套餐中每项食物至多出现一次。

客人常需要一个算法来求解总价格不超过M的营养价值最大的套餐。

【问题1】(9分)

下面是用动态规划策略求解该问题的伪代码,请填充其中的空缺

(1)、

(2)和(3)处。

伪代码中的主要变量说明如下:

n:

总的食物项数;

v:

营养价值数组,下标从1到n,对应第1到第n项食物的营养价值;

p:

价格数组,下标从1到n,对应第1到第n项食物的价格;

M:

总价格标准,即套餐的价格不超过M;

x:

解向量(数组),下标从1到n,其元素值为0或1,其中元素值为0表示对应的食物不出现在套餐中,元素值为1表示对应的食物出现在套餐中;

nv:

n+1行M+1列的二维数组,其中行和列的下标均从0开始,nv[i][j]表示由前i项食物组合且价格不超过j的套餐的最大营养价值。

问题最终要求的套餐的最大营养价值为nv[n][M]。

伪代码如下:

MaxNutrientValue(n,v,p,M,x)

1fori=0ton

2nv[i][0]=0

3forj=1toM

4nv[0][j]=0

5fori=1ton

6forj=1toM

7ifj

8nv[i][j]=nv[i-1][j]

9elseif

(1)

10nv[i][j]=nv[i-1][j]

11else

12nv[i][j]=nv[i-1][j–p[i]]+v[i]

13j=M

14fori=ndownto1

15if

(2)

16x[i]=0

17else

18x[i]=1

19(3)

20returnxandnv[n][M]

【问题2】(4分)

现有5项食物,每项食物的营养价值和价格如表4-1所示。

表4-1食物营养价值及价格表

编码

营养价值

价格

m1

200

50

m2

180

30

m3

225

45

m4

200

25

m5

50

5

若要求总价格不超过100的营养价值最大的套餐,则套餐应包含的食物有(4)(用食物项的编码表示),对应的最大营养价值为(5)。

【问题3】(2分)【问题1】中伪代码的时间复杂度为(6)(用Ο符号表示)。

试题五(共15分)

阅读下列说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

已知集合A和B的元素分别用不含头结点的单链表存储,函数Difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。

例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},如图5-1(a)所示,运算完成后的结果如图5-1(b)所示。

图5-1集合A、B运算前后示意图

链表结点的结构类型定义如下:

typedefstructNode{

ElemTypeelem;

structNode*next;

}NodeType;

【C函数】

voidDifference(NodeType**LA,NodeType*LB)

{

NodeType*pa,*pb,*pre,*q;

pre=NULL;

(1);

while(pa){

pb=LB;

while(

(2))

pb=pb->next;

if((3)){

if(!

pre)

*LA=(4);

else

(5)=pa->next;

q=pa;

pa=pa->next;

free(q);

}

else{

(6);

pa=pa->next;

}

}

}

试题六(共15分)

阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

 

已知某类库开发商提供了一套类库,类库中定义了Application类和Document类,它们之间的关系如图6-1所示,其中,Application类表示应用程序自身,而Document类则表示应用程序打开的文档。

Application类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就由一个Document对象表示。

 

图6-1Application与Document关系图

当开发一个具体的应用程序时,开发者需要分别创建自己的Application和Document子类,例如图6-1中的类MyApplication和类MyDocument,并分别实现Application和Document类中的某些方法。

已知Application类中的openDocument方法采用了模板方法(TemplateMethod设计模式,该方法定义了打开文档的每一个主要步骤,如下所示:

1.首先检查文档是否能够被打开,若不能打开,则给出出错信息并返回;

2.创建文档对象;

3.通过文档对象打开文档;

4.通过文档对象读取文档信息;

5.将文档对象加入到Application的文档对象集合中。

【C++代码】

#include

#include

usingnamespacestd;

classDocument{

public:

voidsave(){/*存储文档数据,此处代码省略*/};

voidopen(stringdocName){/*打开文档,此处代码省略*/}

voidclose(){/*关闭文档,此处代码省略*/}

virtualvoidread(stringdocName)=0;

classAppplication{

private:

vector<

(1)>docs;/*文档对象集合*/

public:

boolcanOpenDocument(stringdocName){

/*判断是否可以打开指定文档,返回真值时表示可以打开,

返回假值表示不可打开,此处代码省略*/

}

voidaddDocument(Document*aDocument){

/*将文档对象添加到文档对象集合中*/

docs.push_back(

(2));

}

virtualDocument*doCreateDocument()=0;/*创建一个文档对象*/

voidopenDocument(stringdocName){/*打开文档*/

if((3)){

cout<<"文档无法打开!

"<

return;

}

(4)adoc=(5);

(6);

(7);

(8);

}

};

试题七(共15分)

阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

已知某类库开发商提供了一套类库,类库中定义了Application类和Document类,它们之间的关系如图7-1所示,其中,Application类表示应用程序自身,而Document类则表示应用程序打开的文档。

Application类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就由一个Document对象表示。

 

图7-1Application与Document关系图

当开发一个具体的应用程序时,开发者需要分别创建自己的Application和Document

子类,例如图7-1中的类MyApplication和类MyDocument,并分别实现Application和Document类中的某些方法。

已知Application类中的openDocument方法采用了模板方法(TemplateMethod)设计模式,该方法定义了打开文档的每一个主要步骤,如下所示:

1.首先检查文档是否能够被打开,若不能打开,则给出出错信息并返回;

2.创建文档对象;

3.通过文档对象打开文档;

4.通过文档对象读取文档信息;

5.将文档对象加入到Application的文档对象集合中。

【Java代码】

abstractclassDocument{

publicvoidsave(){/*存储文档数据,此处代码省略*/}

publicvoidopen(StringdocName){/*打开文档,此处代码省略*/}

publicvoidclose(){/*关闭文档,此处代码省略*/}

publicabstractvoidread(StringdocName);

};

abstractclassAppplication{

privateVector<

(1)>docs;/*文档对象集合*/

publicbooleancanOpenDocument(StringdocName){

/*判断是否可以打开指定文档,返回真值时表示可以打开,

返回假值表示不可打开,此处代码省略*/

}

publicvoidaddDocument(DocumentaDocument){

/*将文档对象添加到文档对象集合中*/

docs.add(

(2));

}

publicabstractDocumentdoCreateDocument();/*创建一个文档对象*/

publicvoidopenDocument(StringdocName){/*打开文档*/

if((3)){

System.out.println("文档无法打开!

");

return;

}

(4)adoc=(5);

(6);

(7);

(8);

}

};

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2