软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷41_第1页
软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷41_第2页
软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷41_第3页
软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷41_第4页
软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷41_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件水平考试(中级)软件设计师下午

(应用技术)试题模拟试卷41

一、必答题(本题共15题,每题1.0分,共15分。)

阅读以下关于住宅安全系统的技术说明,根据要求回答问题1〜问题4。[说呢基

于某嵌入式系统的住宅安全系统可使用传感器(如红外探头、摄像头等)来检测各种

意外情况,如非法进入、火警和水灾等。房主可以在安装该系统时配置安全监控

设备(如传感器、显示器、报警器等),也可以在系统运行时修改配置,通过录像机

和电视机监控与系统连接的所有传感器,并通过控制面板上的键盘与系统进行信息

交互。在安装过程中,系统给每个传感器赋予一个ID编号和类型,并设置房主密

码以启动和关闭系统,设置传感器事件发生时应自动拨出的电话号码。当系统检测

到一个传感器事件时,就激活警报,拨出预置的电话号码,并报告关于位置和检测

到的事件的性质等信息v住宅安全系统的顶层数捱流图如图6-13所示,图6-14是

住宅安全系统的第0层数据流图,图6-15是对住宅安全系统的第0层数据流图中

图6-13住宅安全系统的顶层数据流图

图814住宅安全系统第0层数据流图

加工4的细化图。图6-15加工4的细化数据流图

1、需求分析是一个包括创建和维持系统需求文档所必需的一切活动的过程。一个

通用的需求分析过程模型如图6-16所示,请从以下供选择的答案中选择合适的内

容填写到图6-16中相应的位置中。

可行性研究

可行性推告

系统模”

■求文桓

图&16需求分析过程模型图[供选择的答案]

A.用户需求和功能需求B.需求描述C需求导出和分析D.需藻薯效性验证、

标准答案:这是一道要求读者掌握需求分析过程模型的理解识记题。本题所涉及的

知识点如下。需求分析是一个包括创建和维持系统需求文档所必需的一切活匆的

过程。它通常包括5个通用的活动:系统可行性研究、需求导出和分析•、需求描述

和文档编写、需求有效性验证及需求管理。每个通用的活动的相关说明见表6-

15o

表6-15需求分析过程各活动说明表

活动名称说明

指明现有软硬件技术能否实现用户对新系统的要求,从业务角度来决定系

可行性研究

统开发是否划算及在预算范围内能否完成开发任务

通过对现有系统分析、与潜在用户和购买者讨论、进行任务分析等导出系

需求导出和分析统需求的过程,也可能需要开发一个或多个不同的系统模型和原型,来帮

助分析员了解所要描述的系统

检查需求的可实现性、一致性和完备性,以发现需求文档中可能存在的错

需求有效性验证

误并给予改正

把在分析活动中收集到的信息以文档的形式确定下来,包括两类需求:用

需求描述户需求,即从客户和最终用户角度对系统需求的抽象描述;系统需求,即

对系统要提供的功能的详尽描述

检查需求的可实现性、一致性和完备性,以发现需求文档中可能存在的错

需求有效性验证

误并给予改正

用于获取、组织和记录系统需求并使客户和项目团队在系统变更需求上达

需求管理

成并保持一致

本试题完整的需求分析过程模型如图6-24所示,图中说明了这些活动之间的美

系,也说明了在需求分析过程的每个阶段将产生哪些文档。

图224需求分析过程模型图

知识点解析:暂无解析

2、请将住宅安全系统的顶层数据流图(见图6-13)中(A)〜(D)空缺处,以及第。层数

据流图(见图6-14)中(E)空缺处的内容填写完整。

标准答案:这是一道要求读者掌握分层数据流图中数据流的平衡原则的综合分析

题。本题的解答思路如下。①为了表达复杂问题的处理过程,用一个数据流图往

往不够。一般是按问题的层次结构进行逐步分解,并以分层的数据流图来反映这种

结构关系。通常根据层次关系,将数据流图分为顶层数据流图、中间层数据流图和

底层数据流图。把整个软件系统看成是一个大的加工,然后根据系统从哪些外部实

体接收数据流,以及系统发送数据流到哪些外部实体,就可以画出系统的输入偷出

图,即顶层数据流图。中间层数据流图是将父层数据流图中的某个加工进行组

化,而它的某些加工还可以进一步细化,这样就形成了一层层的子加工。除顶层图

外,其余分层数据流图从0开始编号,例如,0层图的加工号可以是“1,2,3,…”,其

子图号可能是“1.1,1.2』.3,…”,再下一层的子图可能是“1.1.1,1.1.2,,1.1.3,…”,依次

类推。本题的图6-13并不是完整的顶层数据流图,解答时需通过题干的说明信息

及第。层数据流图来分析顶层图并解答问题。②题干中提及的关键信息“房主可以

在安装该系统时配置安全监控设备(如传感器、显示器、报警器等)“,在顶层数据

流图(图6-13)中这3个名词并没有完整地出现,仅出现了“报警器”一词。在图6-13

中“电视机''实际上起题干中关键信息"显示器''的作用。结合图6-13中“传感器状态”

这一输出数据流信息可判断出,(D)空缺处应填入“芍感器”这一外部实体。③由于

子层数据流图是其父数据流图中某一部分内部的细节图(或加工图),因此子层数据

流图的输入/输出数据流应该保持一致,即在上一级数据流图中有几条数据流,其

子图也一定有同样的数据流,而且它们的输送方向是一致的。④在住宅安全系统

第。层数据流图(见图6-14)中,加工5(信息及状态显示)的输出数据流为“TV信

号,,,其中“IV”是日常生活中电视机的英文缩写。在图6-13顶层数据流图中有一外

部实体——“录像机、电视机”,因此可推理出图6-13中(B)空缺处的数据流就是

“TV信号”。⑤根据数据流的方向可知,在图6-13顶层数据流图中(C)空缺处的数

据流属于输出数据流。在第。层数据流图(见图6-14)中,共有“TV信号”、“电话拨

号”、"告警类型''和"显示信息”4个输出数据流。在图6-13顶层数据流图中现己存

在,,TV信号”、“电话拨号”和“显示信息”3个输出数据流,因此可推理出图6/3中

流向“报警器”外部实体的数据流是“告警类型”,即(C)空缺处填写的数据流应是“告

警类型⑥根据数据流的方向可知,在图6-14所示的第0层数据流图中(E)空缺

处的数据流属于输入数据流,且与“传感器监控''这一加工处理相关。在图6-13顶

层数据流图中,外部实体“传感器”流入“住宅安全系统''的输入数据流是“传感器状

态”,由此可推理出图6-13中(E)空缺处的数据流就是“传感器状态”。⑦同理,根

据数据流的方向可知,在图6-13所示的顶层数据流图中(A)空缺处的数据流属于输

入数据流。在第。层数据流图(见图6-14)中流入“住宅安全系统”加工的输入数据流

共有4个,分别是“用户配置请求”、“开始/停止”、“用户密码”和“传感器状态”。在

图6-13所示的顶层数据流图中现已存在“开始/停止”、“用户密码”和“传感器状态”3

个输出数据流,因此可毒理出图6-13中由“控制面板”外部实体流出的数据流是“用

户配置请求”,即(A)空缺处填写的数据流应是“用广配置请求”。⑧将以上分析结

果归纳整理,完整的住宅安全系统顶层数据流图如图6-25所示。

086-25完整的住宅安全系统顶层数据流图

知识点解析:暂无解析

3、将图6-15所示的加工4的细化数据流图中的数据流补充完整,请按以下答题格

式示例的要求回答问题。[答题格式示例][数据流的起点]一(数据流名称)一[数据流

名称终点]或[数据流的起点]一(数据流名称)

标准答案:本试题的解答思路也是根据数据流图的数据流平衡原则进行分析的,详

细的解答步骤如下。⑴由于子图是其父图中某一部分内部的细节图(加工图),所

以子图的输入/输出数据流应该保持一致。其含义是:在上一级中有几条数据流,

其子图也一定有同样的数据流,而且它们的输送方向是一致的。②在第0层数据

流图(见图6-14)中,“4传感器监控”加工模块有1条输入数据流—“传感器状态”

和3条输出数据流—“电话拨号”、“传感器数据”和“告警类型”。③在图6-15所

示的加工4的细化数据流图中,只有输出数据流“告警类型”,因此,该加工图缺少

了“传感器状态”、“电话拨号”和“传感器数据”这3条数据流。④由于加工4的细

化数据流图(见图6-15)的内部结构、数据流向已清晰地给出,因此只需将“传感器

状态”、"电话拨号''和"传感器数据''这3条数据流进行对号入座。⑤根据常识可

知,“电话拨号”是加工处理“4.5拨号”的输出数据流;“传感器状态”是“4.4读传感

器”处理的输入数据流。⑥“传感器数据''应该是经,41格式显示”处理过的数据

流,所以作为“4.1格式显示”的输出数据流。其中,“格式显示”处理是指将准备输

出显示的传感器数据处理成第0层数据流图(见图6-14)中“5信息与状态显示”能够

接受的传感器数据格式。⑦按照试题中答题格式示例的要求,将以上分析结果整

理如下:[4.5拨号]一(电话拨号)(传感器状态)一[4.4读传感器][4.1格式显示]一(传

感器数据)⑧另外,将以上分析结果归纳整理,完整的加工4的细化数据流图如图

6-26所示。图&26完整的加工4的细化数据流图

知识点解析:暂无解析

4、修改在住宅安全系统第。层数据流图(见图6-14]中的数据存储“配置信息”,将

会影响第0层数据流图中的哪些加工?

标准答案:这是一道要求读者掌握数据流图(DFD图)中数据存储作用的综合分析

题。本题的解答思路如下。①在数据流图(DFD图)中,数据存储是指逻辑上要求

存储的数据,它不考虑具体数据的存储介质和技术手段。②在图6-15所示的加工

4的细化数据流图中,“4.2评估设置”这一加工处理用到了配置信息文件,由此可

知,在第。层数据流图(见图6-14)中“4传感器监控”加工将用到配置信息文件,即

“4传感器监控”加工处理与数据存储“配置信息”有关联。③由题干关键信息“房

主……可以在系统运行时修改配置”可知,此处的“修改配置”结果将存储到“配置信

息”这一数据存储中。在第。层数据流图(见图6-14)中,“3密码处理”是用于检验密

码的,但是它只有一个输出数据流“检验ID信息”到“信息及状态显示”加工处理,

并没有反馈回来的数据流,所以“检验ID信息”是已经验证通过的用户的信息,用

户输入密码应是在“3密码处理”这个环节中进行验证的。如果密码验证是在“5信息

及状态显示''中进行的,那么从“5信息及状态显示”应有一条不合法的用户数捱流

反馈到“密码处理,可见,“密码处理”要用到数据存储“配置信息、”中的用户名和密

码。④由以上分析可知,在第0层数据流图(见图6-14)中,由于输出到加工处理

“5信息及状态显示”的数据流是用来“检验ID信息”的,因此,“5信息及状态显示”

加工处理也将与“配置信息”这一数据存储相关联。

知识点解析:暂无解析

阅读下列某网上订书管理系统的说明和E-R图,根据要求问答问题1〜问题3c

[说明1某网上订书系统的E-R图(已消除了不必要的冗余)如图6-17所示(图中没有

标出主码)。图中实体的说明如表6-10所示,相关属性说明如表6-11所示。

图6-17某网上订书管理系统E・R图

表6-10某网上订书系统实体说明表6-11某周上订书系统相关属性说明

实体说明主要属性说明

Books书店内的书qty_in_stock图书库存量

Customers与书店有业务的顾客year_published出版日期

Orders顾客向书店下的购书单ordernum购书单编号

cid顾客编号

唯一标识每种图书的编

bid

cardnum顾客信用卡号码

orderdate填购书单日期

Qty订购某种图书的数量

ship_date发货日期

一个顾客可以在同一天填写多张购书单,每张购书单上可填写多种图书,每种图书

可以订购多本,bid相同的图书在同一张购书单上不能出现多次。注:为简化起

见,不考虑信用卡号码泄漏所带来的安全性等问题。

5、根据图6-17所示的E-R图中给出的词汇,按照“关系模式名(属性,属性,…)”

的格式,将此E-R图转换为4个关系模式,并指出每个关系模式中的主码和外

码,其中模式名根据需要取实体名或联系名。

标准答案:题干己经指明转换为4个关系模式,根据E-R图和说明可以先得出

Books、Customers和orders三个关系模式。由于一个客户可以填写多张购书单,而

一张购书单仅仅属于一个客户,因此PlaceOrder不需要单独成为一个关系模式,而

购书单和书之间是多对多的关系,所以OrderList需要单独一个关系模式。图6-17

所示的E-R图转换为4个关系模式及其主键、外键如下。

1.Cuslomers(cid,cname,adderss,cardnum)主键为:cid

2.Orders(ordemum,orderdate,cid)主键为:ordemum:外键为:cid

3.Books(bid,titlc,author,qty_in_stock,ycar_publicshcd,price)主键为:bid

4.Orderlisl(bid,ordernuin,qty,ship_date)主键为:(bid,ordemum),外键为bid、

ordernum

知识点解析:暂无解析

6、创建Customers表时,cid使用INTEGER数据类型,cname使用CHAR(80)数据

类型,address使用CHAR(200)数据类型,cardnum使用CHAR(16)数据类型并且要

求此?。&逸TABLECustomers彳Ci&-INTEGERNO不NULL,吾句空缺处填入正确的内

cnameCHAR(80)NOTNULL.

addressCHAR(200),

cardnumCHAR(16)NOTNULL,

⑴,

(2))

容。

标准答案:依题意分析,对于关系模式Customers的主键为cid,而cardnum列值

唯一,因此(1)、(2)空缺处应分别在空缺处填入PrimaryKeycid和UNIQUE

cardnumo

知识点解析:暂无解析

7、以下的SQL语句是书店用于查询“所有订购了bid为“23-456,图书的用户订购

其他图书的情况''的不完整语句,请在空缺处填入正确的内容。

Selectbid

PreenOrderlistA

Wherenotexists(Select♦frocOrders3

whereA.ordernum=B.ordemumandB.cid(3)

ISelectcidfroraOrderlistC,Orders□

where(4).bid»«123-456r

and(5)=D.orcemun))

标准答案:依题意分析,最内层的SQL语句查找订购了123-456的客户

cid,ordernum只出现在Orderlist和order中,因此(5)空缺处应填写C.ordcrnum,(4)

空缺处应该填写C。因为要求寻找这些用户还订购哪些其他书籍,所以(3)空缺处

应填写in。

知识点解析:暂无解析

阅读以下说明和图,根据要求回答问题1〜问题4。[说明]某电子商务公司开办了

在线电子商务网站,主要为各注册的商家提供在线商品销售功能。为更好地吸引用

»该公司计划为注册的商家提供商品(Commodity)促销(Promotion)功能。商品的

分类(Category)不同,促销的方式和内容也会有所不同。注册商家可发布促销信

息。商家首先要在自己所销售商品的分类中,选择促销涉及的某一具体分类,然后

选出该分类的一个或多个商品(一种商品仅属于一种分类),接着制定出一个比较优

惠的折扣政策和促销活动的优惠时间,最后由系统生成促销信息并将该促销信息公

布在网站上。商家发布促销信息后,网站的注册用户便可通过网站购买促销商

品。用户可选择参与某一个促销(Promotion)活动,并选择具体的促销商品

(Commodity),输入购买数量等购买信息。系统生成相应的一份促销订单(POrder)。

只要用户在优惠活动的时间范围内,通过网站提供的在线支付系统,确认在线支付

该促销订单(即完成支付),就可以优惠的价格完成商品的购买活动,否则该促销订

单失效。系统采用面向对象方法开发,系统中的类及类之间的关系用UML类图表

示,如图6-18所示是该系统类图中的一部分;系统的动态行为采用UML序列图表

示,如图6-19所示是发布促销的序列图。

图6-18在线促销系统部分类图

rb'igmag)

图&19发布促销的序列图

8、识别关联的多重度是面向对象建模过程中的一个重要步骤。请根据说明中给出

的描述,将如图6-18所示中(1)〜(6)空缺处的内容填写完整。

标准答案:这是一道要求读者在充分理解需求的基础上,补充UML类图中的类间

关系的多样件描述的综合分析题.本题的解答思路如下.(1)关联表示了对象间的

结构关系,它暗示两个类在概念上位于相同的级别。在UML类图中,符号

----»'表示其相联的两个类之间存在关联关系。(2)识别关联的多重度是面向对象

建模过程中的一个重要步骤。即说明一个关联的实例中有多少个相互连接的对象是

很重要的。其中,这个“多少”被称为关联角色的多重度,把它写成一个表示取值范

围的表达式或写成一个具体值。指定关联一端的多重度,就是说明在关联另一端的

类的每个对象要求在本端的类必须有多少个对象。(3)由题干描述中给出的关键信

息”……选出该分类的一个或多个商品(一种商品仅属于一种分类)……”可知,一个

商品(Commodity)属于一种分类,一个分类(Calegory)中包含0个或多个商品对象,

因此类Commodity和类Category的多样性关系为:。〜n或1〜n个商品对象对应1

个分类对象,即(1)空缺处所填写的内容是“0…n”或(2)空缺处所填写的内

容是“I”。(4)由于一个促销(Promotion)中由一个或多个商品(Commodity)组成(至少

一个),而一个商品可以属于0个或多个促销,因此类Promotion和类Commodity

的多样性关系为:。〜n个促销对象对应1〜n个商品对象,即(3)空缺处所填写的内

容是“0…n”,(4)空缺处圻填写的内容是(5)一个促销(Promolion)可以产生

多个促销订单(POrder),一个促销订单只能对应一个促销。所以类Promotion和类

POrder的多样性关系为:1个促销对象涉及。…n个促销订单对象,即(5)空缺处所

填写的内容是“1”,(6)空缺处所填写的内容是“0…n”。

知识点解析:暂无解析

9、请从表6-12中选择相应的方法名,填写到图6-19所示中(7)〜(10)空缺处的对应

位置中。

表6-12可选消息列表

功能描述方法名

向促销订单中添加所选的商品buyCommodities

向促销中添加要促销的商品addCommodities

查找某个促销的所有促销订单信息列表getPromotionOrders

生成商品信息createCommodity

查找某个分类中某商家的所有商品信息列表getCommodities

生成促销信息createPromotion

生成促销订单信息createPOrder

查找某个分类的所有促销信息列表getCategoryPremotion

查找某商家所销售的所有分类列表getCategories

查找某个促销所涉及的所有商品信息列表getPromofionCommodities

标准答案:这是一道要求读者用UML序列图对系统的行为进行分析和建模的综合

分析题。本题的解答思路如下。序列图描述对象间的消息交互,刻画系统的行

为。根据题目的描述:商家(Businessman)在发布促销信息时,要先浏览自己所销售

商品的分类及分类中的具体商品信息;商家通过⑺空缺处所填入的getCategories

消息将浏览请求提交给类CatagoryManager实例,再由类CatagoryManager的实例

通过⑻空缺处所填入的gelCommodities消息请求类Category(商品分类)实例获得其

分类中该商家的所有商品;类Category的实例通过gctCominodityinfo消息请求类

Comodity(商品)的实例返回商品的详细描述信息。当把商家所销售的商品分类及分

类中的具体商品信息返回给商家之后,商家在其中选择要促销的一个或多个商品,

并输入一些促销信息,通过(9)空缺处所填入的CreatePromotion消息请求类

PromotionManager实例生成促销信息。类PromotionManager实例通过Create消息

创建一个促销(Promolion)对象,并通过(10)空缺处所填入的addCommdities消息向

新建的促销对象中添加要促销的商品对象。

知识点解析:暂无解析

10、该电子商务公司还时外开放一项出租图书和唱碟的业务。由于业务需求,该公

司委托软件开发公司A开发一套信息管理系统。该系统将记录所有的图书信息、

唱碟信息、用户信息和用户租借信息等。A公司决定采用面向对象的分析和设计方

法开发此系统。某类图书或唱碟被借阅时应记录的信息如表6・13所示,如图6-20

所示描述了系统定义的两个类Book和CD,分别表示图书和唱碟的信息。

表6-13图书建碟借阅情况记录表

图书建磔名称:

借出时间归还时间用户

过进一步分析,设计人员新定义一个类Items_on_loan,以表示类Book和CD的共

有属性和方法(要注意,不同名称的属性和方法表示不同的含义,如CD中的

composer与Book中的author无任何关系)。同时为了记录每种图书或唱碟的历史

记录,引入类CirculalionHistory,类中存储的信息是如图1-1所示中所表示的内

容。请采用UML表示法将类Book、类CD、类Items_onloan和类Circulation

Book类名CD

title《名称》

author为怪

)ccoposer

key><,川(<«1•producer

Referencetitleperforners

Referenceauthor

»法Referencetitle

ReferencekeywordReferencecoaiposer

Referpnoproducer

Referenceperforoers

History之间的关系表示出来。图6-20类Book和CD

标准答案:如果新定义的类Items_on」oan要表示类Book和类CD的共有属性和方

法,那么就需要从类Book、CD中找出相同的属性和方法。由试题中给出的图6-

20可知,Book和CD都有title属性和referencetitle方法,因此类Items_on_loan的

属性为title,方法为referencetitle。类Book和类CD应该继承类Items_on」oan,

因此它们之间的关系是继承关系,而CirculationHistory表示对象的租借次薪,它不

属于类Items_on_loan的属性,但类Items_on_loan应该能够查询到

CirculalionHistory记录的信息,所以它们之间是聚集关系。类Book、类CD、类

Items_on_loan和类CirculalionHistory之间的UML关系如图6-27所示。

图6・27各个类之间的UML关系

知识点解析:暂无解析

11、现需了解十大最畅销(借出次数最多)图书或唱碟。为此引入类TemPopulate以

存储所有十大畅销图书或CD的名称及其被借出的次数。利用顺序图描述某类图书

或唱碟被借出后成为十大畅销图书或唱碟时对象间的消息交互,通常在系统一次运

行过程中,应有(11)个TenPopulale实例对象最合适,一个TenPopulale类实例对象

最多需要和(12)个hems_on」oan实例对象交互。[供选择的答案](11)A.1B.2

C.10D.n(图书和唱碟种类数)(12)A.2B.10C.20D.n(图书和唱碟种类数)

标准答案:类TemPopulate存储十大畅销图书或CD的名称及其被借出的次数,顺

序图中要明确的给出这一对象。通常在系统一次运行过程中,有1个TenPopulate

实例对象最合适。为了记录图书或唱片的借出信息,每当有图书或唱片被借出

时,都需要和类TemPopulate的对象发生交互。因此,有可能所有的图书和唱片都

要和类TemPopulate对余发生交互,即一个类TenPopulate实例对象最多需要和图

书及唱碟种类数个Items_on_loan实例对象交互。

知识点解析:暂无解析

阅读以下某旅馆客房管理系统的算法说明和程序流程图,根据要求回答问题1〜问

题4。[算法说明]某旅馆共有N间客房。每间客房的房间号、房间等级、床位数

及占用状态分别存放在数组ROOM、RANK、NBED和STATUS中。房间等级值

为1、2或3。房间的状态值为0(空闲)或1(占用)。客房是以房间(不是床位)为单位

出租的。程序流程图(见图6-21)所反映的算法是,根据几个散客的要求预订一间空

房。程序的输入为:人数M,房间等级要求R(R=O表示任意等级都可以)。程序的

输出为:所有可供选择的房间号。图&21某算法程序流程图

12、在程序流程图(见图6-21)中,若要某个房间I被选中,则需要满足什么条件?

标准答案:在程序流程图(见图6-21)中,I表示房间序号(需注意不是房间的编号)。

当I>N时表示所有的房间都检查过了,若STATUS⑴[力0,表示房间已被占用,

则检查下一个房间;否则直看房间的床铺是否足够。若NBED⑴VM表示房间床

铺不够,则检查下一个房间;若床铺足够,则需看客人对房间等级是否有要求。若

R!=0,表示客人对房间等级有要求,则检查RANK⑴是否等于R。若不等于,则

检查下一个房间;若RANK(I)==R或者R==0,分别表示房间等级满足要求和客人

对房间等级无要求,则当前的房间I满足所有的条件。接着可将房间I的房间编号

ROOM⑴存放到RM(J)中,然后检查下一个房间。综合以上分析结果,某个房间I

要满足下列条件才可被选中:①房间未被占用,即STATUS⑴=二0;②房间的床

铺要足够,WNBED(I)>=M;③若客人要求特定的房间等级R(R!=0),则

RANK(I)==R,否则RANK(I)的值不做考虑。

知识点解析:暂无解析

表6-14桌旋棺房间的情猊表

序号iROOIRANKNBEDSTATUS

111C1260

211C2361

312C1120

412C2330

513C1121

613c2230

当输

入M=3,R=0时,该算法的输出是(1)。当输入M=2,R=1时,该算法的输出是

⑵。

标准答案:当输入M=3,R=(HH,表示客人的人数为3,对房间的等级没有要求,

因此,只要房间的床铺足够且房间未被占用即可满足要求。换言之,在表6-14中

NBED列中的值大于等于3,STATUS列中的值为0即可满足条件,因此输出的结

果为:110112021302。当输入M=2,R=1时,表示客人的人数为2,要求房间的

等级为1级,因此,在房间的床铺足够且房间未被占用时,还要求房间的等级为1

级才可满足要求。换言之,表6-14中RANK列中的值等于1,NBED列中的值大

于等于2,STATUS列中的值为。即可满足条件,因此,输出的结果为:1201。

知识点解析:暂无解析

14、如果等级为r的房间每人每天的住宿费为RATE(r),其中RATE为数组,则为

使该算法在输出每个候选的房间号RM(J)后,再输出这批散客每天所需的总住宿费

DAYRENT(J),在程序流程图(见图6-21)中“ROOM⑴—RM(J)”(b所指向的方框中)

之后应增加的处理语句是(3)。

标准答案:结合常识可知,由于房间的费用是根据房间的等级和房间所住客人的数

量决定的,因此在等级为r的房间每人每天的住宿费为RATE(r)的前提下,为使该

算法在输出每个候选的房间号RM(J)后,再输出这枇散客每天所需的总住宿费

DAYRENT(J),在图6-21中“ROOM⑴一>RM(J)”之后应增加的处理语句如下。

RATE(RANK(I))*M—DAYRENT(J)

知识点解析:暂无解析

15、如果限制该算法最多输出K个可供选择的房间号,则在程序流程图(见图6-21)

中力>N”(a所指向的判断框中)应修改为(4)。

标准答案:如果要限制该算法最多输出K个可供选择的房间号,则必须知道已经

选择的房间的个数。由于变量J的值代表了满足条,牛的房间数量,因此在图6-21

中判断语句“I>N”应修改为:I>N||J=Ko

知识点解析:暂无解析

二、选答题(本题共3题,每题L0分,共3分。)

16、阅读以下应用程序说明和C程序,将C程序段中(1)〜(7)空缺处的语句填写完

整。[说明]以下[C程序]完成从指定数据文件中读入职工的工号和他完成产品个数

的数据信息,对同一职工多次完成的产品个数进行累计,最后按表5-22所示的格

式输出职工完成产品数量的名次(ORDER)。该名次是按每位职工完成的产品数量

(QUANTITY)排序,之后同一名次的职工人数(COUNT)和他们的职工号

(NUMBER,同一名次的职工号以从小到大的顺序输出)。

表5-22职工完成产品数重名次输出格式表

ORDERQUANTITYCOUNTRUBBER

4256235

619219

716721114

••••••••••••

以下[C程序]采用链表结构存储有关信息,链表中的每个表元对应一位职工。在数

据输入同时,形成一个有序链表(按完成的产品数量和工号排序)。当一个职工有新

的数据输入,在累计他的完成数量时会改变原来链表的有序性,为此应对链表进行

删除、查找和插入等处理。[C程序]

#include<stdio.h>

typedefstructele{

intno»QI

structele*nextt

}el«n:

main(intargc»char*♦argv){

FILE*fp;elem*h»*u»*proc():

if<argc==2&&(fp=fopen(argv[l],.r・))JHNULL){

hxproc(fp);

fcldse(fp)i

output(h):

while(hI=NULL)(

u=h-*next»free(h);h=u:

fscanf(fp.*%d,»&m>>

for(v=base:v!=NULL&&v->no!=n:u=v.v=v->next),

if((1))

if((2))

baae«v->ncxt»

else

u->next=v-nexti

v-xj+=m;

else

v«(elem*)malloc(sizeof(elen))।

v->no■n:v-xj■m:p■base;

while(pl-NULL)

if((3))breakj

else(

uxp:pxp->next;

)

if((4))

base>v;

else

u->next=v:

(5);

fscanf(fp.・ld-,&n):

)

returnbase:

)

output(elem♦head){

intcount,order:elem*u»*v;

printf('ORDERQUANTITYCOUNTNUMBERS*)i

u«headtorder«1i

while(u!=NULL){

for(count=1,v»u->next;(6);count**,v=v->next):

printf<B%4d%9d%6d",order.u->q.count):

order*35counti

for(i(7)।printf(•t4d'»u->no).u«:u->next):

printfC

)

标准答案:这是一道要求读者掌握有序链表的特点及其如何在有序链表上实现插

入、删除、查找的操作的程序分析题。本题的解答思路如下。仔细阅读[C程序]可

知,该程序代码采用链表结构存储有关信息,链表中的每个结点对应一位职工。在

数据输入时,形成一个有序链表(按完成的产品数量和工号排序)。当一个职工有新

的数据输入,在累计该职工的完成数量时会改变原来链表的有序性,因此需要对链

表中的结点重新进行排序。而对程序的排序操作可以看成是一组查找、删除、插入

操作的组合操作,这组操作又和链表的特点密切相关。链表是用一组任意的存储

空间来依次存放线性表中的数据元素及其元素之间关系的存储结构。由于链表的存

储空间是在程序运行的过程中动态分配的,需要一个个分配一个存储空间,因此无

须事先估计存储空间大小,也不会出现存储空间的浪费,并能够使存储器中的碎片

充分地得到利用,但是存储空间的地址不一定连续。用链表表示一个数据结构

时,为了表示数据元素之间的逻辑关系,每个数据元素的存储空间都包括数据域和

指针域两个部分。数据域用来存放数据元素本身的值,指针域用来存放和该数据元

素存在某种逻辑关系的其他元素的地址(或对应数组的下标),从而通过指针域中的

指针指示数据元素之间的逻辑关系。在链表结构中进行插入和删除运算不需要移

动数据元素,只需修改数据元素的指针域的地址就可以建立元素之间新的逻辑关

系。由于这种结构失去了随机存取的特性,只能依照链接顺序访问,存取效率不

高,因此不适合进行查找运算。本试题函数proc()完成的功能是从给定的数据文件

中输入职工的工号(即fscanf(fp,”%d”,&n);)和该职工完成的产品数量信息(即

fscanf(fp,"%d",&m);),从而形成一个按照产品数量和工号排序的职工有序链表。

例如输入一个工号为n的职工的全部信息后,就利用指针v从链表的首结点开始顺

序搜索满足条件(即工号等于n)的结点,这个过程依赖for循环语句(即for(v=base

v!=NULL&&v->no!=n;u=v,v=v->next);)的实现。当循环条件v!=NULL且v->

no!二n为真时,说明指针v指向的当前结点存在但却不是满足条件的结点,所以指

针v通过语句U=v,v=v->next实现向后移动,继而指向下一个结点,然后再重复

上述的判断、移动过程,直到找到满足条件的结点或确定链表中根本不存在这样的

结点为止。由于这两种结果不能同时发生,所以for循环后的if・else条件语句,先

要对上述杳找过程可能产生的两种结果做出选择,然后再决定继续执行的操作。又

由于if条件为真的情况下,要执行的复合语句中包含累计产品数量的语句(即v->

q+m;),所以可判断出程序首先是对链表中存在的刚输入职工的工号的情况进行处

理,因此(1)空缺处所填写的内容是%!=?41;1±&&虹>1]0==暧或其他等价形式,根

据上述链表中存在刚输入职工工号的情况,则需要重新对该工号职工进行产品数量

的累计,从而改变原来链表的有序性,为此应该对链表中的结点重新进行排序。那

么,该程序的排序操作可以看成是一组删除、查找、插入操作的组合操作。首

先,将链表中满足条件(即工号为n)的结点v删除。删除分为两种情况:①当删除

的结点是链表的首结点,即v与base同指向一个结点时,需改变链表的头指针,

让它指向首结点的直接后继结点,因此(2)空缺处所填写的内容是、二base"或其他

等价形式;②当删除的结点是链表中的其他结点时,需改变链表中要删除结点的

直接前驱结点的后继指针。其次,在有序链表中为上述被删除的结点v寻找合适

的插入位置。插入位置是根据待插入的结点(即上述被删除的结点)中产品累计数量

的多少,以及工号的大小与链表中现存结点进行比较确定的。根据它们的比较结

果,插入位置可以有以下3种情况(令指针p指向链表中正在与待插入结点进行比

较的结点,而指针u用来指向其直接前驱结点)。①指针p所指向结点的q值(即产

品累计数量)小于待插入结点v的q值(即产品累计数量),于是将结点v插入到p所

指向的结点之前。②指针p所指向结点的q值与待插入结点v的q值相等,但前

者的no值(即工号)大于后者的no值,于是将结点v插入到p所指向的结点之前。

③指针p所指向结点的q值比待插入结点v的q值都大,于是一直向后寻找,直

到p=NULL为止,这时指针u指向链表中的最后一个结点,因而将结点v插入到

链表的尾部,即成为结点U的直接后继。由以上分析可知,(3)空缺处所填写的内

容是“p->qVv->qIIp->q==v->q&&p->no>n->no”或其他等价形式。由于以

上分析中前两种情况都属于在指针P所指向结点之前插入结点v,因此要考虑一个

关键的插入位置,以及是否在首结点之前插入,即⑷空缺处所填写的内容是

“p==base”或其他等价形式,(5)空缺处所填写的内容是“v->ncxt=p”或其他等价形

式。函数oulputO完成的功能是按照指定的格式输出。(6)空缺处所在的for循环实

现了相同q值的结点个数的统计,这些结点按照工号从小到大的顺序形成一个有序

链表段。为了使表达式正确计算,(6)空缺处需要填入"v!=NULL&&v・>q==u->q”

或其他等价形式。由于(7)空缺处所在的for循环实现了有相同产品个数的职工工

号的顺序输出,因此(7)空缺处所填写的内容是“count--!=0(或u!=v)”或其他等价形

式。

知识点解析:暂无解析

17、阅读以下关于某订单管理系统的技术说明、部分UML类图及C++代码,将

C++程序中(1)〜⑸空缺处的语句填写完整。[说明]某订单管理系统的部分UML类

图如图5-15所本。图5・15某订单管理系统的部分UML类图图5/5

中,Product表示产品,ProductList表示产品目录,Order表示产品订单,OrdeHtem

表示产品订单中的一个条目,OrderLisl表示订单列表,SalesSystem提供订单管理

系统的操作接口。请完善类Order的成员函数getOrderedAmount。和类

SalesSystem的slatislic。方法,各个类的属性及部分方法定义参见下面的C++代

•tringpid;

•trinodMcrlpclOG;//rMHf

doubleprlc«i〃产a・依

publics

voidMtFtcductPrle*(doublepxiee);〃H/3价

■Er8ttxo3ccld|〃

•triago«tPro^AcWM€riptlon(lt〃M/1Mtt

double9«tPrefectFrieeOj〃艮

〃XH・

C!<MProAuctUact〃产4m

Rxi*M・:

vectorsFroduct30dMem

publici

FroAaetUstOf

FXCAJCI9«cFro^u:tey:fitexllnt«XI:〃供”金力良中

void3dProduEPrg*ctt)j

Product•o«CPTQ^ct>r:O(ttrlnQpldli〃Mumrn.pidwmt

unsignedint<x«eFroa^ctJlB0une():〃脚i产鼻”囊中献金依■

cl<fsorderXt^l〃g«th类

private:

FroA*ct«produccFcri/fJ*7mM*

Imentity!“UWM

pubHci

ovdcrXt«B(Freduet*.iat>;

FroA»ct,9et^ro<kKcp?r(>i

IM9»<Qu«ntity(lf〃稣.wwawMi

cl”.Oantor(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论