1、计算机水平考试中级软件设计师 2004 年下半年下午真题及答案解析(总分:105.00,做题时间:150 分钟)试题一至试题四是必答题 试题一(15 分) 阅读下列说明和数据流图,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。 说明 某图书管理系统的主要功能是图书管理和信息查询。对于初次借书的读者,系统自动生成读者号,并与读者基本信息(姓名、单位、地址等)一起写入读者文件。 系统的图书管理功能分为四个方面:购入新书、读者借书、读者还书以及图书注销。 1.购入新书时需要为该书编制入库单。入库单内容包括图书分类目录号、书名、作者、价格、数量和购书日期,将这些信息写入图书目录文件并修改文件中
2、的库存总量(表示到目前为止,购入此种图书的数量)。 2.读者借书时需填写借书单。借书单内容包括读者号和所借图书分类目录号。系统首先检查该读者号是否有效,若无效,则拒绝借书;若有效,则进一步检查该读者已借图书是否超过最大限制数(假设每位读者能同时借阅的书不超过 5 本),若已达到最大限制数,则拒绝借书;否则允许借书,同时将图书分类目录号、读者号和借阅日期等信息写入借书文件中。 3.读者还书时需填写还书单。系统根据读者号和图书分类目录号,从借书文件中读出与该图书相关的借阅记录,标明还书日期,再写回到借书文件中,若图书逾期,则处以相应的罚款。 4.注销图书时,需填写注销单并修改图书目录文件中的库存总
3、量。 系统的信息查询功能主要包括读者信息查询和图书信息查询。其中读者信息查询可得到读者的基本信息以及读者借阅图书的情况;图书信息查询可得到图书基本信息和图书的借出情况。 图书管理系统的顶层图如图 1-1 所示;图书管理系统的第 0 层 DFD 图如图 1-2 所示,其中,加工 2 的细化图如图 1-3 所示。 数据流图 1-1 数据流图 1-2 数据流图 1-3 (分数:15.00)(1).问题 1(2 分) 数据流图 1-2 中有两条数据流是错误的,请指出这两条数据流的起点和终点。(分数:5.00)_(2).问题 2(6 分) 数据流图 1-3 中缺少三条数据流,请指出这三条数据流的起点和终
4、点。(分数:5.00)_(3).问题 3(7 分) 根据系统功能和数据流图填充下列数据字典条目中的(1)和(2): 查询请求信息查询读者请求信息| 查询图书请求信息 读者情况=读者号姓名所在单位借书情况 管理工作请求单 (1) 入库单 (2)(分数:5.00)_试题二(15 分) 阅读下列说明和 E-R 图,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。 说明 某网上订书系统的 E-R 图(已消除了不必要的冗余)如图 2-1 所示(图中没有标出主码)。图中实体的说明如表 2-1 所示,相关属性说明如表 2-2 所示。 一个顾客可以在同一天填写多张购书单,每张购书单上可填写多种图书,每种
5、图书可以订购多本,bid 相同的图书在同一张购书单上不能出现多次。 注:为简化起见,不考虑信用卡号码泄漏所带来的安全性等问题。 图 2-1 (分数:15.00)(1).问题 1(9 分) 根据 E-R 图中给出的词汇,按照“关系模式名(属性,属性, )”的格式,将此E-R 图转换为 4 个关系模式,并指出每个关系模式中的主码和外码,其中模式名根据需要取实体名或联系名。(分数:5.00)_(2).问题 2(2 分) 创建 Customers 表时,cid 使用 INTEGER 数据类型,cname 使用 CHAR(80)数据类型,address 使用 CHAR(200)数据类型,cardnum
6、使用 CHAR(16)数据类型并且要求此列值惟一。请在下列用于创建表 Customers 的 SQL 语句空缺处填入正确的内容。 (分数:5.00)_(3).问题 3(4 分) 如下的 SQL 语句是书店用于查询“所有订购了 bid 为123-456图书的用户订购其他图书的情况”的不完整语句,请在空缺处填入正确的内容。 Select bid From Orderlist A (分数:5.00)_试题三(15 分) 阅读下列说明和图,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。 说明 某指纹门禁系统的体系结构如图 3-1 所示,其主要部件有:主机(MainFrame)、锁控器(Lock
7、Controller)、指纹采集器(FingerReader)和电控锁(Lock)。 (1) 系统中的每个电控锁都有一个惟一的编号。锁的状态有两种:“已锁住”和“未锁住”。 (2) 在主机上可以设置每把锁的安全级别以及用户的开锁权限。只有当用户的开锁权限大于或等于锁的安全级别并且锁处于“已锁住”状态时,才能将锁打开。 (3) 用户的指纹信息、开锁权限以及锁的安全级别都保存在主机上的数据库中。 (4) 用户开锁时,只需按一下指纹采集器。指纹采集器将发送一个中断事件给锁控器,锁控器从指纹采集器读取用户的指纹并将指纹信息发送到主机,主机根据数据库中存储的信息来判断用户是否具有开锁权限,若有且锁当前处
8、于“已锁住”状态,则将锁打开;否则系统报警。 该系统采用面向对象方法开发,系统中的类以及类之间的关系用 UML 类图表示,图 3-2 是该系统类图的一部分;系统的动态行为采用 UML 序列图表示,图 3-3 是用户成功开锁的序列图。 图 3-1 图 3-2 图 3-3 (分数:15.00)(1).问题 1(6 分) 图 3-2 是该系统类图的一部分,依据上述说明中给出的术语,给出类 Lock 的主要属性。(分数:5.00)_(2).问题 2(5 分) 依据上述说明中给出的词语,将图 3-3 中的(1)(5)处补充完整。(分数:5.00)_(3).问题 3(4 分) 组装(Composition
9、)和聚集(Aggregation)是 UML 中两种非常重要的关系。请说明组装和聚集分别表示什么含义?两者的区别是什么?(分数:5.00)_试题四(15 分) 阅读下列说明和图,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。 说明 在并发系统设计中,通过对信号量 S 的 P、V 操作实现进程的同步与互斥控制。 P(S):S:=S-1,若 S0,则执行 P 操作的进程继续执行;若 S0,则执行 V 操作的进程继续执行;若 S0,则从阻塞队列唤醒一个进程,并将其插入就绪队列,然后执行 V 操作的进程继续执行。(分数:15.00)(1).问题 1(4 分) 在某并发系统中,有一个发送进程 A
10、、一个接收进程 B、一个环形缓冲区 BUFFER、信号量 S1 和 S2。发送进程不断地产生消息并写入缓冲区 BUFFER,接收进程不断地从缓冲区 BUFFER 取消息。假设发送进程和接收进程可以并发地执行,那么,当缓冲区的容量为 N 时,如何使用 P、V 操作才能保证系统的正常工作。发送进程 A 和接收进程 B 的工作流程如图 4-1 所示。请在图 4-1 中的空(1)(4)处填入正确的内容。 图 4-1 (分数:5.00)_(2).问题 2(5 分) 若系统中有多个发送进程和接收进程,进程间的工作流程如图 4-2 所示,其中空(1)(4)的内容与图 4-1 相同。发送进程产生消息并顺序地写
11、入环形缓冲区 BUFFER,接收者进程顺序地从 BUFFER 中取消息,且每条消息只能读取一次。为了保证进程间的正常通讯,增加了信号量 SA 和SB。 请说明信号量 SA 和 SB 的物理意义,并在图 4-2 中的空(5)和空(6)处填入正确的内容。 请从图 4-2 的(a)(l)中选择四个位置正确地插入 P(SA)、V(SA)、P(SB)、V(SB)。 图 4-2 (分数:5.00)_(3).问题 3(6 分) 设系统中只有进程 A 和进程 B,除了互斥地使用 CPU 和打印机 R 外,进程 A 和 B 不使用其他资源。另外,进程 B 的优先级比 A 高,而进程 A 先于 B 准备好。进程
12、A 和 B 的执行情况如图 4-3 所示,其中粗实线表示进程在执行中,细实线表示打印机 R 在使用中。(每个进程具有三种状态:运行、就绪和阻塞) 请分别说明进程 A 和 B 在图 4-3 所示的 t1、t2、t3、t4 时刻所处的状态;若是阻塞状态,请说明阻塞原因。 图 4-3 (分数:5.00)_1.从下列的 3 道试题(试题五至试题七)中任选 1 道解答,如果解答的试题数超过 1 道,则题号小的 1 道解答有效。 试题五(15 分,每空 3 分) 阅读下列函数说明和 C 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 说明 函数 int Toplogical(LinkedWDigr
13、aph G)的功能是对图 G 中的顶点进行拓扑排序,并返回关键路径的长度。其中图 G 表示一个具有 n 个顶点的 AOE-网,图中顶点从 1n 依次编号,图 G 的存储结构采用邻接表表示,其数据类型定义如下: 图 5-1 图 5-2 (分数:15.00)_2.试题六(15 分,每空 3 分) 阅读以下说明和 C+代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 说明 通常情况下,用户可以对应用系统进行配置,并将配置信息保存在配置文件中。应用系统在启动时首先将配置文件加载到内存中,这些内存配置信息应该有且仅有一份。下面的代码应用了单身模式(Singleton)以保证 Configure 类
14、只能有一个实例。这样,Configure 类的使用者无法定义该类的多个实例,否则会产生编译错误。 (分数:15.00)_3.试题七(15 分,每空 3 分) 阅读以下说明和 JAVA 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 说明 类 Queue 表示队列,类中的方法如下表所示。 类 Node 表示队列中的元素;类EmptyQueueException 给出了队列操作中的异常处理操作。 (分数:15.00)_计算机水平考试中级软件设计师 2004 年下半年下午真题答案解析(总分:105.00,做题时间:150 分钟)试题一至试题四是必答题 试题一(15 分) 阅读下列说明和数据流
15、图,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。 说明 某图书管理系统的主要功能是图书管理和信息查询。对于初次借书的读者,系统自动生成读者号,并与读者基本信息(姓名、单位、地址等)一起写入读者文件。 系统的图书管理功能分为四个方面:购入新书、读者借书、读者还书以及图书注销。 1.购入新书时需要为该书编制入库单。入库单内容包括图书分类目录号、书名、作者、价格、数量和购书日期,将这些信息写入图书目录文件并修改文件中的库存总量(表示到目前为止,购入此种图书的数量)。 2.读者借书时需填写借书单。借书单内容包括读者号和所借图书分类目录号。系统首先检查该读者号是否有效,若无效,则拒绝借书;若有
16、效,则进一步检查该读者已借图书是否超过最大限制数(假设每位读者能同时借阅的书不超过 5 本),若已达到最大限制数,则拒绝借书;否则允许借书,同时将图书分类目录号、读者号和借阅日期等信息写入借书文件中。 3.读者还书时需填写还书单。系统根据读者号和图书分类目录号,从借书文件中读出与该图书相关的借阅记录,标明还书日期,再写回到借书文件中,若图书逾期,则处以相应的罚款。 4.注销图书时,需填写注销单并修改图书目录文件中的库存总量。 系统的信息查询功能主要包括读者信息查询和图书信息查询。其中读者信息查询可得到读者的基本信息以及读者借阅图书的情况;图书信息查询可得到图书基本信息和图书的借出情况。 图书管
17、理系统的顶层图如图 1-1 所示;图书管理系统的第 0 层 DFD 图如图 1-2 所示,其中,加工 2 的细化图如图 1-3 所示。 数据流图 1-1 数据流图 1-2 数据流图 1-3 (分数:15.00)(1).问题 1(2 分) 数据流图 1-2 中有两条数据流是错误的,请指出这两条数据流的起点和终点。(分数:5.00)_正确答案:(起点:读者文件 终点,登记读者信息或 3 起点:处理查询请求或 2 终点:读者文件)解析:(2).问题 2(6 分) 数据流图 1-3 中缺少三条数据流,请指出这三条数据流的起点和终点。(分数:5.00)_正确答案:(起点:图书目录文件 终点:图书信息查询
18、或 2.2 起点:借书文件 终点:读者信息查询或2.1 起点:借书文件 终点:图书信息查询或 2.2)解析:(3).问题 3(7 分) 根据系统功能和数据流图填充下列数据字典条目中的(1)和(2): 查询请求信息查询读者请求信息| 查询图书请求信息 读者情况=读者号姓名所在单位借书情况 管理工作请求单 (1) 入库单 (2)(分数:5.00)_正确答案:( (1)入库单借书单还书单注销单 (2)分类目录号+书名+作者+价格+数量+购书日期 解析:第一题为系统分析题,重点考察了考生对系统分析中结构化分析方法的理解与掌握程度,以及考生使用结构化分析方法进行系统分析解决实际应用问题的能力。试题采用实
19、际工程应用中常用的数据流图(DFD)和数据字典(DD)结构分析方法,以图书管理系统为例,进行系统分析。该题共有 3 个小题,第 1 题是对数据流图进行改错,分值为 2 分;第 2 题则是要求考生对数据流图补充完整,分值为 6 分;第 3 题则要求根据系统功能和数据流图来填充数据字典条目,分值为 7 分。从整个题目应用性较强,重点考察考生用系统分析方法解决实际问题的能力,这个能力对软件设计师来讲是必备的。)解析:试题二(15 分) 阅读下列说明和 E-R 图,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。 说明 某网上订书系统的 E-R 图(已消除了不必要的冗余)如图 2-1 所示(图中
20、没有标出主码)。图中实体的说明如表 2-1 所示,相关属性说明如表 2-2 所示。 一个顾客可以在同一天填写多张购书单,每张购书单上可填写多种图书,每种图书可以订购多本,bid 相同的图书在同一张购书单上不能出现多次。 注:为简化起见,不考虑信用卡号码泄漏所带来的安全性等问题。 图 2-1 (分数:15.00)(1).问题 1(9 分) 根据 E-R 图中给出的词汇,按照“关系模式名(属性,属性, )”的格式,将此E-R 图转换为 4 个关系模式,并指出每个关系模式中的主码和外码,其中模式名根据需要取实体名或联系名。(分数:5.00)_正确答案:(Customers(cid,cname,add
21、erss,cardnum),主码:cid orders(Ordernum,Orderdate,cid) 主码: Ordernum ;外码:cid Books解析:(2).问题 2(2 分) 创建 Customers 表时,cid 使用 INTEGER 数据类型,cname 使用 CHAR(80)数据类型,address 使用 CHAR(200)数据类型,cardnum 使用 CHAR(16)数据类型并且要求此列值惟一。请在下列用于创建表 Customers 的 SQL 语句空缺处填入正确的内容。 (分数:5.00)_正确答案:(1)PRIMARY KEY(cid) (2)UNIQUE(card
22、num) 注;(1)和(2)的次序可以颠倒。)解析:(3).问题 3(4 分) 如下的 SQL 语句是书店用于查询“所有订购了 bid 为123-456图书的用户订购其他图书的情况”的不完整语句,请在空缺处填入正确的内容。 Select bid From Orderlist A (分数:5.00)_正确答案:(3)not in (4)c (5)C.ordernum)解析:试题三(15 分) 阅读下列说明和图,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。 说明 某指纹门禁系统的体系结构如图 3-1 所示,其主要部件有:主机(MainFrame)、锁控器(LockController)、
23、指纹采集器(FingerReader)和电控锁(Lock)。 (1) 系统中的每个电控锁都有一个惟一的编号。锁的状态有两种:“已锁住”和“未锁住”。 (2) 在主机上可以设置每把锁的安全级别以及用户的开锁权限。只有当用户的开锁权限大于或等于锁的安全级别并且锁处于“已锁住”状态时,才能将锁打开。 (3) 用户的指纹信息、开锁权限以及锁的安全级别都保存在主机上的数据库中。 (4) 用户开锁时,只需按一下指纹采集器。指纹采集器将发送一个中断事件给锁控器,锁控器从指纹采集器读取用户的指纹并将指纹信息发送到主机,主机根据数据库中存储的信息来判断用户是否具有开锁权限,若有且锁当前处于“已锁住”状态,则将锁
24、打开;否则系统报警。 该系统采用面向对象方法开发,系统中的类以及类之间的关系用 UML 类图表示,图 3-2 是该系统类图的一部分;系统的动态行为采用 UML 序列图表示,图 3-3 是用户成功开锁的序列图。 图 3-1 图 3-2 图 3-3 (分数:15.00)(1).问题 1(6 分) 图 3-2 是该系统类图的一部分,依据上述说明中给出的术语,给出类 Lock 的主要属性。(分数:5.00)_正确答案:(锁的编号、安全级别、锁的当前状态)解析:(2).问题 2(5 分) 依据上述说明中给出的词语,将图 3-3 中的(1)(5)处补充完整。(分数:5.00)_正确答案:(1)中断事件 (
25、2)读取用户指纹 (3)读取用户开锁权限 (4)读取锁的安全级别 (5)判断用户是否有权限开锁或用户是否可以开锁)解析:(3).问题 3(4 分) 组装(Composition)和聚集(Aggregation)是 UML 中两种非常重要的关系。请说明组装和聚集分别表示什么含义?两者的区别是什么?(分数:5.00)_正确答案:( 组装和聚集都表示实例之间的整体/部分关系。组装是聚集的一种形式。 聚集是概念性的,只是区分整体与部分。 组装具有很强的归属关系,而且整体与部分的对象生存周期是一致的。或者回答:如果没有成分对象,组装对象也不存在;在任何时候,每个给定的成分对象只能是组装对象的组成部分。)
26、解析:试题四(15 分) 阅读下列说明和图,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。 说明 在并发系统设计中,通过对信号量 S 的 P、V 操作实现进程的同步与互斥控制。 P(S):S:=S-1,若 S0,则执行 P 操作的进程继续执行;若 S0,则执行 V 操作的进程继续执行;若 S0,则从阻塞队列唤醒一个进程,并将其插入就绪队列,然后执行 V 操作的进程继续执行。(分数:15.00)(1).问题 1(4 分) 在某并发系统中,有一个发送进程 A、一个接收进程 B、一个环形缓冲区 BUFFER、信号量 S1 和 S2。发送进程不断地产生消息并写入缓冲区 BUFFER,接收进程不
27、断地从缓冲区 BUFFER 取消息。假设发送进程和接收进程可以并发地执行,那么,当缓冲区的容量为 N 时,如何使用 P、V 操作才能保证系统的正常工作。发送进程 A 和接收进程 B 的工作流程如图 4-1 所示。请在图 4-1 中的空(1)(4)处填入正确的内容。 图 4-1 (分数:5.00)_正确答案:(1)P(S1) (2)V(S2) (3)P(S2) (4)V(S1)解析:(2).问题 2(5 分) 若系统中有多个发送进程和接收进程,进程间的工作流程如图 4-2 所示,其中空(1)(4)的内容与图 4-1 相同。发送进程产生消息并顺序地写入环形缓冲区 BUFFER,接收者进程顺序地从
28、BUFFER 中取消息,且每条消息只能读取一次。为了保证进程间的正常通讯,增加了信号量 SA 和SB。 请说明信号量 SA 和 SB 的物理意义,并在图 4-2 中的空(5)和空(6)处填入正确的内容。 请从图 4-2 的(a)(l)中选择四个位置正确地插入 P(SA)、V(SA)、P(SB)、V(SB)。 图 4-2 (分数:5.00)_正确答案:(1、(5)1,表示允许同时对缓冲区进行写操作的进程数量(0.5 分) (6)1,表示允许同时对缓冲区进行读操作的进程数量(0.5 分) 2、解法 1 解法 2 )解析:(3).问题 3(6 分) 设系统中只有进程 A 和进程 B,除了互斥地使用
29、CPU 和打印机 R 外,进程 A 和 B 不使用其他资源。另外,进程 B 的优先级比 A 高,而进程 A 先于 B 准备好。进程 A 和 B 的执行情况如图 4-3 所示,其中粗实线表示进程在执行中,细实线表示打印机 R 在使用中。(每个进程具有三种状态:运行、就绪和阻塞) 请分别说明进程 A 和 B 在图 4-3 所示的 t1、t2、t3、t4 时刻所处的状态;若是阻塞状态,请说明阻塞原因。 图 4-3 (分数:5.00)_正确答案:( )解析:1.从下列的 3 道试题(试题五至试题七)中任选 1 道解答,如果解答的试题数超过 1 道,则题号小的 1 道解答有效。 试题五(15 分,每空
30、3 分) 阅读下列函数说明和 C 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 说明 函数 int Toplogical(LinkedWDigraph G)的功能是对图 G 中的顶点进行拓扑排序,并返回关键路径的长度。其中图 G 表示一个具有 n 个顶点的 AOE-网,图中顶点从 1n 依次编号,图 G 的存储结构采用邻接表表示,其数据类型定义如下: 图 5-1 图 5-2 (分数:15.00)_正确答案:(1)indegreep-adjvex+,及其等价形式 (2)Stack top-,及其等价形式 (3)indegreep-adjvex-,及其等价形式 (4)vew+p-weig
31、htvep-adjvex,及其等价形式 (5)vew),及其等价形式)解析:2.试题六(15 分,每空 3 分) 阅读以下说明和 C+代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 说明 通常情况下,用户可以对应用系统进行配置,并将配置信息保存在配置文件中。应用系统在启动时首先将配置文件加载到内存中,这些内存配置信息应该有且仅有一份。下面的代码应用了单身模式(Singleton)以保证 Configure 类只能有一个实例。这样,Configure 类的使用者无法定义该类的多个实例,否则会产生编译错误。 (分数:15.00)_正确答案:(1) private (2) Configure
32、 *Configure:_inStance (3) new Configure (4) _inStance (5) Configure:Instance)解析:3.试题七(15 分,每空 3 分) 阅读以下说明和 JAVA 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 说明 类 Queue 表示队列,类中的方法如下表所示。 类 Node 表示队列中的元素;类EmptyQueueException 给出了队列操作中的异常处理操作。 (分数:15.00)_正确答案:(1) try (2) Exception e 或者:EmptyQueueException e,e 是对象名,可用任意合法标识符替换 (3) throws EmptyQueueException (4) throw (new EmptyQueueException() (5) Exception)解析: