您的当前位置:首页xx年下半年软件设计师下午试卷及答案

xx年下半年软件设计师下午试卷及答案

来源:小侦探旅游网


xx年下半年软件设计师下午试卷及答案

试题一

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

希赛公司拟开发一个销售管理系统,其主要功能描述如下:

1.接受客户订单,检查库存货物是否满足订单要求。如果满足,进行供货处理:即修改库存记录文件,给库房开具备货单并且保留客户订单至订单记录文件;否则进行缺货处理:将缺货订单录入缺货记录文件。

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

3.根据采购部门提供的进货通知单进行进货处理:即修改库存记录文件,并从缺货记录文件中取出缺货订单进行供货处理。

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

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

图1-1 顶层数据流图

2016

1 / 18

图1-2 0层数据流图 【问题1】

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

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

数据流图1-2缺少了四条数据流,根据说明及数据流图1-1提供的信息,分别指出这四条数据流的起点和终点。 起点 试题二

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

希赛公司拟开发一个宾馆客房预订子系统,主要是针对客房的预订和入住等情况进行管理。 【需求分析结果】

1.员工信息主要包括:员工号、姓名、出生年月、性别、部门、岗位、住址、联系电话和密码等信息。岗位有管理和服务两种。岗位为“管理”的员工可以更改员工表中的本部门员工的岗位和密码,要求将每一次更改前的信息保留;岗位为“服务”的员工只能修改员工表中本人的密码,且负责多个客房的清理等工作。

2.部门信息主要包括:部门号、部门名称、部门负责人、电话等信息;一个员工只能属于一个部门,一个部门只

2016

2 / 18

有一位负责人。

终点 3.客房信息包括:客房号、类型、价格、状态等信息。其中类型是指单人间、三人间、普通标准间、豪华标准间等;状态是指空闲、入住和维修。 4.客户信息包括:身份证号、姓名、性别、单位和联系电话。 5.客房预定情况包括:客房号、预定日期、预定入住日期、预定入住天数、身份证号等信息。一条预定信息必须且仅对应一位客户,但一位客户可以有多条预定信息。 【概念模型设计】

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

图 2-1 实体联系图 【逻辑结构设计】 逻辑结构设计阶段设计的部分关系模式如下: 员工( (4) ,姓名,出生年月,性别,岗位,住址,联系电话,密码) 权限

部门(部门号,部门名称,部门负责人,电话) 客房( (5) ,类型,价格,状态,入住日期,入住时间,员工号) 客户( (6) ,姓名,性别,单位,联系电话)

更改权限 ,密码,更改日期,更改时间,管理员号) 预定情况( (8) ,预定日期,预定入住日期,预定入住天数) 【问题1】

2016

3 / 18

根据问题描述,填写图2-1中(1)~(3)处联系的类型。联系类型分为一对一、一对多和多对多三种,分别使用1 : 1,1 : n 或 1 : *,m : n 或 * : *表示。 【问题2】 补充图2-1中的联系并指明其联系类型。 【问题3】 根据需求分析结果和图2-1,将逻辑结构设计阶段生成的关系模式中的空(4)~(8)补充完整。 【问题4】 若去掉权限表,并将权限表中的操作权限属性放在员工表中,则与原有设计相比有什么优缺点? 试题三 阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。 【说明】

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

1. 用户在初始使用系统时,必须在系统中注册成为作者或审稿人。 2. 作者登录后提交稿件和浏览稿件审阅结果。提交稿件必须在规定提交时间范围内,其过程为先输入标题和摘要、选择稿件所属主题类型、选择稿件所在位置。上述几步若未完成,则重复;若完成,则上传稿件至数据库中,系统发送通知。 3. 审稿人登录后可设置兴趣领域、审阅稿件给出意见以及罗列录用和拒绝的稿件。 4. 会议委员会主席是一个特殊审稿人,可以浏览提交的稿件、给审稿人分配稿件、罗列录用和拒绝的稿件以及关闭审稿过程。其中关闭审稿过程须包括罗列录用和拒绝的稿

2016

4 / 18

件。

系统采用面向对象方法开发,使用 UML 进行建模。在建模用例图时,常用的方式是先识别参与者,然后确定参与者如何使用系统来确定用例,每个用例可以构造一个活动图。参

与者名称、用例和活动名称分别参见表3-1、表3-2和表3-3。系统的部分用例图和提交稿件的活动图分别如图3-1和图3-2所示。 表3-1参与者列表 名称 User Reviewer 表3-2用例名称列表 说明 用户 审稿人 名称 Author 说明 作者 PCChair 委员会主席 名称 login submit paper close reviewing process set preferences list papers 表3-3活动名称列表 说明 登录系统 提交稿件 关闭审稿过程 设定兴趣领域 名称 register browse review results reviewer enter review 说明 注册 浏览稿件审阅结果 人 审阅稿件给出意见 assign paper to 分配稿件给审稿罗列录用或/和拒绝browse submitted 浏览提交的稿件 的稿件 papers accepted/rejected 名称 select paper location 说明 名称 说明 选择稿件位置 upload paper 上传稿件 send 发送通知 select subject 选择主题类型 group abstract 要 enter title and 输入标题和摘 notification

2016

5 / 18

图 3-1 ORS 用例图

图 3-2 提交稿件过程的活动图 【问题1】 根据【说明】中的描述,使用表3-1中的英文名称,给出图3-1中A1~A4所对应的参与者。 【问题2】

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

根据【说明】中的描述,给出图3-1中和所对应的关系。 【问题4】

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

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

希赛公司供应各种标准的营养套餐。假设菜单上共有n项食物m1,m2,?,mn,每项食物mi的营养价值为vi,价格为pi,其中i=1,2,?,n,套餐中每项食物至多出现一次。客人常需要一个算法来求解总价格不超过M的营养价值最大的套餐。 【问题1】

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

2016

6 / 18

中的空缺(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) 1 for i = 0 to n 2 nv[i][0] = 0 3 for j = 1 to M 4 nv[0][j] = 0 5 for i = 1 to n 6 for j = 1 to M

7 if j 8 nv[i][j] = nv[i - 1][j] 9 else if

10 nv[i][j] = nv[i - 1][j] 11 else 12 nv[i][j] = nv[i - 1][j–p[i]] + v[i] 13 j = M

2016

7 / 18

14 for i = n downto 1 15 if 16 x[i] = 0 17 else

18 x[i] = 1 19 20 return x and nv[n][M] 【问题2】

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

编码 m1 m2 m3 m4 m5 营养价值 200 180 225 200 50 价格 50 30 45 25 5 若要求总价格不超过100的营养价值最大的套餐,则套餐应包含的食物有,对应的最大营养价值为 。 【问题3】

【问题1】中伪代码的时间复杂度为。 从下列的3道试题中任选1道解答。 如果解答的试题数超过1道,则题号小的1道解答有效。 试题五

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

已知集合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运算前后示意图 链表结点的结构

2016

8 / 18

类型定义如下: typedef struct Node{ ElemType elem; struct Node *next; }NodeType; 【C 函数】 void Difference(NodeType **LA, NodeType *LB) { NodeType *pa, *pb, *pre, *q; pre = NULL; ; while (pa) { pb = LB; while ( ) pb = pb->next; if ( ) { if (!pre) *LA = ; else

= pa->next; q = pa; pa = pa->next; free(q); }

else { ; pa = pa->next; } } } 试题六

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

已知某类库开发商提供了一套类库,类库中定义了Application类和Document类,它们之间的关系如图6-1所示,其中,Application类表示应用程序自身,而Document类则表示应用程序打开的文档。Application类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就一个Document对象表示。 图 6-1 Application与Document关系图

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

2016

9 / 18

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

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

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

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

5.将文档对象加入到Application的文档对象集合中。 【C++代码】

#include #include using namespace std; class Document{ public: void save(){ } void open(string docName){ close(){ }

virtual void read(string docName) = 0; }; class Appplication{ private: vector docs; public:

bool canOpenDocument(string docName){ } void addDocument(Document * aDocument){

}

void

2016

10 / 18

_back( ); }

virtual Document * doCreateDocument() = 0; void openDocument(string docName){ if ( ){ cout return; }

adoc = ; ; ; ; } }; 试题七

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

已知某类库开发商提供了一套类库,类库中定义了Application类和Document类,它们之间的关系如图7-1所示,其中,Application 类表示应用程序自身,而Document类则表示应用程序打开的文档。Application类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就一个Document对象表示。 图 7-1 Application与Document关系图

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

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

2016

11 / 18

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

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

5.将文档对象加入到Application的文档对象集合中。 【Java 代码】

abstract class Document{ save(){ }

public void open(String docName){ } public void close(){ }

public abstract void read(String docName); }; abstract class Appplication{ private Vector docs; public

boolean

canOpenDocument(String

public void

docName){ }

public void addDocument(Document aDocument){ ( ); }

public abstract Document doCreateDocument(); public void openDocument(String docName){ if ( ){

( \\文档无法打开!\\ return; }

2016

12 / 18

adoc = ; ; ; ; } }; 试题一

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

希赛公司拟开发一个销售管理系统,其主要功能描述如下:

1.接受客户订单,检查库存货物是否满足订单要求。如果满足,进行供货处理:即修改库存记录文件,给库房开具备货单并且保留客户订单至订单记录文件;否则进行缺货处理:将缺货订单录入缺货记录文件。

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

3.根据采购部门提供的进货通知单进行进货处理:即修改库存记录文件,并从缺货记录文件中取出缺货订单进行供货处理。

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

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

图1-1 顶层数据流图

2016

13 / 18

图1-2 0层数据流图 【问题1】

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

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

数据流图1-2缺少了四条数据流,根据说明及数据流图1-1提供的信息,分别指出这四条数据流的起点和终点。 起点 试题二

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

希赛公司拟开发一个宾馆客房预订子系统,主要是针对客房的预订和入住等情况进行管理。 【需求分析结果】

1.员工信息主要包括:员工号、姓名、出生年月、性别、部门、岗位、住址、联系电话和密码等信息。岗位有管理和服务两种。岗位为“管理”的员工可以更改员工表中的本部门员工的岗位和密码,要求将每一次更改前的信息保留;岗位为“服务”的员工只能修改员工表中本人的密码,且负责多个客房的清理等工作。

2.部门信息主要包括:部门号、部门名称、部门负责人、电话等信息;一个员工只能属于一个部门,一个部门只

2016

14 / 18

有一位负责人。

终点 3.客房信息包括:客房号、类型、价格、状态等信息。其中类型是指单人间、三人间、普通标准间、豪华标准间等;状态是指空闲、入住和维修。 4.客户信息包括:身份证号、姓名、性别、单位和联系电话。 5.客房预定情况包括:客房号、预定日期、预定入住日期、预定入住天数、身份证号等信息。一条预定信息必须且仅对应一位客户,但一位客户可以有多条预定信息。 【概念模型设计】

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

图 2-1 实体联系图 【逻辑结构设计】 逻辑结构设计阶段设计的部分关系模式如下: 员工( (4) ,姓名,出生年月,性别,岗位,住址,联系电话,密码) 权限

部门(部门号,部门名称,部门负责人,电话) 客房( (5) ,类型,价格,状态,入住日期,入住时间,员工号) 客户( (6) ,姓名,性别,单位,联系电话)

更改权限 ,密码,更改日期,更改时间,管理员号) 预定情况( (8) ,预定日期,预定入住日期,预定入住天数) 【问题1】

2016

15 / 18

根据问题描述,填写图2-1中(1)~(3)处联系的类型。联系类型分为一对一、一对多和多对多三种,分别使用1 : 1,1 : n 或 1 : *,m : n 或 * : *表示。 【问题2】 补充图2-1中的联系并指明其联系类型。 【问题3】 根据需求分析结果和图2-1,将逻辑结构设计阶段生成的关系模式中的空(4)~(8)补充完整。 【问题4】 若去掉权限表,并将权限表中的操作权限属性放在员工表中,则与原有设计相比有什么优缺点? 试题三 阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。 【说明】

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

1. 用户在初始使用系统时,必须在系统中注册成为作者或审稿人。 2. 作者登录后提交稿件和浏览稿件审阅结果。提交稿件必须在规定提交时间范围内,其过程为先输入标题和摘要、选择稿件所属主题类型、选择稿件所在位置。上述几步若未完成,则重复;若完成,则上传稿件至数据库中,系统发送通知。 3. 审稿人登录后可设置兴趣领域、审阅稿件给出意见以及罗列录用和拒绝的稿件。 4. 会议委员会主席是一个特殊审稿人,可以浏览提交的稿件、给审稿人分配稿件、罗列录用和拒绝的稿件以及关闭审稿过程。其中关闭审稿过程须包括罗列录用和拒绝的稿

2016

16 / 18

件。

系统采用面向对象方法开发,使用 UML 进行建模。在建模用例图时,常用的方式是先识别参与者,然后确定参与者如何使用系统来确定用例,每个用例可以构造一个活动图。参

与者名称、用例和活动名称分别参见表3-1、表3-2和表3-3。系统的部分用例图和提交稿件的活动图分别如图3-1和图3-2所示。 表3-1参与者列表 名称 User Reviewer 表3-2用例名称列表 说明 用户 审稿人 名称 Author 说明 作者 PCChair 委员会主席 名称 login submit paper close reviewing process set preferences list papers 表3-3活动名称列表 说明 登录系统 提交稿件 关闭审稿过程 设定兴趣领域 名称 register browse review results reviewer enter review 说明 注册 浏览稿件审阅结果 人 审阅稿件给出意见 assign paper to 分配稿件给审稿罗列录用或/和拒绝browse submitted 浏览提交的稿件 的稿件 papers accepted/rejected 名称 select paper location 说明 名称 说明 选择稿件位置 upload paper 上传稿件 send 发送通知 select subject 选择主题类型 group abstract 要 enter title and 输入标题和摘 notification

2016

17 / 18

2016

18 / 18

因篇幅问题不能全部显示,请点此查看更多更全内容