[计算机类试卷]2005年下半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc
《[计算机类试卷]2005年下半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]2005年下半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc(18页珍藏版)》请在麦多课文档分享上搜索。
1、2005年下半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 阅读下列说明和图,回答问题 1问题 3。 说明 某公司的主要业务是出租图书和唱碟。由于业务需求,该公司委托软件开发公司 A开发一套信息管理系统。该系统将记录所有的图书信息、唱碟信息、用户信息、用户租借信息等。 A公司决定采用面向对象的分析和设计方法开发此系统。图 1-1所示为某类图书或唱碟被借阅时应记录的信息,图 1-2描述了系统定义的两个类 Book和 CD,分别表示图书和唱碟的信 息。1 经过进一步分析,设计人员决定定义一个类 Items on loan
2、,以表示类 Book和 CD的共有属性和方法。请采用图 1-2中属性和方法的名称给出类 Items_on_loan应该具有的属性和方法 (注意:不同名称的属性和方法表示不同的含义,如 CD中的composer与 Book甲的 author无任何关系 )。 2 为了记录每种图书或唱碟租借的历史记录,引入类 CirculationHistory,类中存储的信息是图 1-1中所表示的内容。请采用 UML表示法将下列四个类间的关系表示出来。 3 现需了 解十大最畅销 (借出次数最多 )图书或唱碟。为此,引入 TenPopulate类以存储所有十大畅销图书或 CD的名称及其被借出的次数。下列顺序图描述了
3、某类图书或唱碟被借出后成为十大畅销图书或唱碟时对象间的消息交互。系统在一次运行过程中,应有 (1)个 TenPopulate实例对象最合适,一个 TenPopulate类实例对象最多需要和 (2)个 Items_on_loan实例对象交互。4 阅读下列说明和图,回答问题 1至问题 3。 说明 某企业决定开发一个企业仓储管理系统,山李工承担系统的设计工作。该系统的网络连接如图 2-1 所示。 图 2-1 该企业有多个仓库,图 2-1所示的中心数据库存储了各个仓库中每种货物的库存信息。每个仓库配备一台前端机,进出货物均由前端机辅助实现。管理员每天上班时,通过前端机从中心数据库的库存表中读取本仓库各
4、种货物的库存数,每个仓库的当日业务数据也都暂存在前端机,当天业务结束后,再将前端机中存储的数据传输到主机进行存储与汇总。 每个仓库可以存放多种货物,但同一种货物不能存放在不同的仓库中。每个仓库有多个管理员,但每个管理员只管理一个仓库。货物出库 /入库时,由仓库管理员将货物的条码通过阅读器输入前 端机中,货物数量的默认值为 1,可以由管理员修改。前端机根据输入的货物信息,打印 “出库 /入库 ”清单。出库 /入库单中同一种货物最多只出现一次,每份出库 /入库单由流水号唯一标识。图 2-2是一个出库单的实例。 图 2-2 该系统处理业务的过程如下。 1初始化:前端机根据仓库号从货物表中读取本仓库中
5、每种货物的货物编码、库存量、货物名称和单价; 2登记出库 /入库信息:由前端机存储每一笔 “出库从库 ”记录: 3汇总:在每个工作日结束前汇总当日各种货物的 “出库 /入库 ”量至日汇总表; 4更新库存表:根据当日的汇总信息 更新货物的库存。 李工经过分析,设计出如图 2-3所示的关系模式。 图 2-3 出入库单 (流水号,出入库标志,管理员号,时间 ) 出入库记录 (货物编码,数量,流水号 ) 日汇总表 (日期,货物编码,数量,出入库标志 ) 仓库 (仓库号,仓库名,仓库电话 ) 管理员 (管理员号,姓名,仓库号 ) 货物 (a) 注:时间格式为年 -月 -日时:分;日期格式为年 -月 -日
6、。 卖体联系图的表示方法如图 2-4所示,其中方框表示实体,菱形表示联系,联系的类型在实体与联系的边上标出。图 2-5为与该系统对应的实体联系图。4 根据题意,补 充图 2-3中 (a)处的空缺,即货物关系模式的属性。 5 根据题意,补充图 2-5中缺失的联系和联系的类型,使其成为完善的实体联系图。其中,联系名分别取名为联系 1,联系 2,联系 3, 。 6 写出每种关系模式的主键。 7 阅读下列说明和图,回答问题 1至问题 4,将解答填入答题纸的对应栏内。 说明 某公司计划与客户通过 Internet交换电子邮件和数据 (以下统一称为 “消息 ”)。为保障安全,在对传输的数据进行加密的同时,
7、还要对参与通信的实体进行身份认证。因此,需同时使用对称与非对称密钥体系。图 3-1描述了 接收者 B使用非对称密钥体系对发送者 A进行认证的过程。 图 3-1 图 3-2描述了发送和接收消息的过程,其中的认证过程使用了图 3-1中的方法。图 31中的方框 a和方框 b与图 3-2中的方框 a和方框 b相同。 图 3-2 图 3-2中发送和接收消息的过程是: 1)发送者 A使用与接收者 B共享的对称密钥体系的密钥加密将要发送的消息。 2)为了实现身份认证, A使用与 B共享的摘要算法生成消息摘要,并使用公钥密码体系把生成的消息摘要加密后发送给 B(这里假设 A和 B都能通过安全的方法获得对方的公
8、钥 )。 3)B使用非对称密钥体系解 密收到的消息摘要,使用与A共享的对称密钥体系的密钥解密加密后的消息,再使用与 A共享的摘要算法针对解密后的消息生成消息摘要。 4)B对比自己生成的消息摘要与接收到的 A发送的消息摘要是否相同,从而验证发送者 A的身份。 7 请在下列选项中选择合适的答案,填入图 3-1、图 3-2的方框 a和方框 b。 B的公钥, B的私钥,摘要算法, A的私钥, A的公钥,会话密钥 8 请在下列选项中选择合适的答案,填入图 3-2的方框 c至方框 f。 B的公钥, B的私钥,摘要算法, A的私钥, A的公钥,会话密钥 9 按照 图 3-2中的方法发送邮件时,使用不同的密码
9、体制加密消息和消息摘要,请用 150字以内文字简要说明这样做的理由。 10 请从下面关于摘要函数的说法中选出所有正确的描述。 a很容易使不同的输入数据生成相同的输出数据。 b根据输入数据获取输出数据的时间非常短。 c根据输入数据获取输出数据的时间非常长。 d输出数据的长度比输入数据的长度要长。 e根据输出数据无法还原出输入数据。 11 阅读下列函数说明、图和 C代码,将应填入 (n)处的字句。 说明 散列文件的存储单位称为桶 (BUCKET)。假如一个桶能存放 m个记录,当桶中已有 m个同义词(散列函数值相同 )的记录时,存放第 m+1个同义词会发生 “溢出 ”。此时需要将第m+1个同义词存放
10、到另一个称为 “溢出桶 ”的桶中。相对地,称存放前 m个同义词的桶为 “基桶 ”。溢出桶和基桶大小相同,用指针链接。查找指定元素记录时,首先在基桶中查找。若找到,则成功返回,否则沿指针到溢出桶中进行查找。 例如:设散列函数为 Hash(Key)=Key mod 7,记录的关键字序列为15,14,21,87,97,293,35,24,149,19,63,16,103,77,5,153,145,356,51,68,705,453,建立的散列文件内容如图 4-1所示。 图 4-1 为简化起见,散列文件的存储单位以内存单元表示。 函数 InsertToHashTable(int NewElemKey)
11、的功能是:将元素 NewEIemKey插入散列桶中,若插入成功则返回 0,否则返回 -1。 采用的散列函数为 Hash(NewElemKey)=NewElemKey % P,其中 P为设定的基桶数目。 函数中使用的预定义符号如下: #define NULLKEY -1 /*散 列桶的空闲单元标识 */ #define P 7 /*散列文件中基桶的数目 */ #define ITEMS 3 /*基桶和溢出桶的容量 */ typedef struct BucketNode /*基桶和溢出桶的类型定义 */ int KcyDataITEMS; struct BucketNode *Link; BUC
12、KET; BUCKET BucketP; /*基桶空间定义 */函数 int lnsertToHashTable(int NewElemKey) /*将元素 NewElemKey插入散 列桶中,若插入成功则返回 0,否则返回 -1*/ /*设插入第一个元素前基桶的所有 KeyData、 Link域已分别初始化为 NULLKEY、 NULL*/ int Index; /*基桶编号 */ int i,k; BUCKET *s,*front,*t; (1) ; for(i=0; i ITEMS;i+)/*在基桶查找空闲单元,若找到则将元素存入 */ if(BucketIndex.KeyDatai=N
13、ULLKEY) BucketIndex.KeyDatai=NewElemKey; break; if( (2) ) return 0; /*若基桶已满,则在溢出桶中查找空闲单元,若找不到则申请新的溢出桶 */ (3) ; t=BucketIndex.Link; if(t!=NULL) /*有溢出桶 */ while (t!=NULL) for(k=0; k ITEMS; k+) if(t- KeyDatak=NULLKEY)/*在溢出桶链表中找到空闲单元 */ t- KeyDatak=NewElemKey; break; /*if*/ front=t; if( (4) )t=t- Link;
14、else break; /*while*/ /*if*/ if( (5) ) /*申请新溢出桶并将元素存入 */ s=(BUCKET*)malloe(sizeof(BUCKET); if(!s) return-1; s- Link=NULL; for(k=0; kITEMS; k+) s- KeyDatak=NULLKEY; s- KeyData0=NewElemKey; (6) ; /*if*/ return 0; /*InsertToHashTable*/ 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有
15、效。 12 阅读以下说明和 C+代码,将应填入 (n)处。 说明 在一公文处理系统中,开发者定义了一个公文类 OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的 DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组 DocExplorer对象。当 OfficeDoc对象的内容或状态发生变化时,所有与之相关联的 DocExplorcr对象都将得到通知,这种应用被称为观察者模式。以下代码写在一个 C+源文件中,能够正确编译通过。 C+代码 #include iostream con
16、st OBS_MAXNUM=20;/最多与 OfficeDoc对象相关联的 DocExplorer对象的个数 (1); class DocExplorer /关注 OfficeDoc公文对象的类 public: DocExplorer( (2) *doc); /构造函数 (3) void update(OfficeDoc *doc)=0;/更新自身状态的函数 /其他相关属性和方法省略 ; class OfficeDoc /公文类 private: DocExplorer *myObsOBS_MAXNUM; /关注此公文类的 DocExplorer类对象指针数组 int index; /与 Of
17、ficeDoc对象关联的 DocExplorer对象的个数 public: OfficeDoe() index=0; void attach(DocExplorer *o) /将一 DoeExplorer对象与 OfficeDoe对象相关联 if(index =OBS_MAXNUM |o=NULL)return; for(int loop=0; loop index; loop+) if(myObsloop=o) return; myObsindex=o; index+; void detaeh(DocExplorer *o) /接触某 DoeExplorer对象与 OfficeDoc对象的关
18、联 if(0=NULL) return; for(int loop=0; loop index; loop+) if(myObsloop=o) if(loop =index-2)myObsloop=myObsindex-1; myObsindex-1=NULL; index-; break; private: void notifyObs() /通知所有的 DocExplorer对象更改自身状态 for(int loop=0; loop index; loop+) myObsloop- (4); /DocExplorer对象更新自身状态 /其他公文类的相关属性和方法 ; DocExplorer
19、:DocExplorer(OfficeDoc *doc)/DocExplorer 类对象的构造函数 doc- (5); /将此 DocExplorer对象与 doc对象相关联 13 阅读以下说明和 Java代码,将应填入 (n)处。 说明 在一公文处理系统中,开发者定义了一个公文类 OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的 DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组 DocExplorer对象。当 OfficeDoc对象的内容或状态发生变化时,所有与之相关联
20、的 DocExplorer对象都将得到通知,这种应用被称为观察者模式。以下代码采用 Java语言实现,能够正确编译通过。 Java代码 /Subject.java 文件 public interface Subject public void attach(Observer DocExplorer); public void detach(Observer DocExplorer); void notifyObservers(); /Observer.java 文件 public interface Observer void update(1) ); /OfficeDoc.java 文件 i
21、mport java.util.*; public class OfficeDoc implements Subject(/OfficeDoc 类实现 Subject 接口 private Vector ObserverVeetor=new java.util.Vector(); /存储与 OfficeDoc相关联的 DocExplorer 对象 public void attach(Observer observer) /将某 DocExplorer 对象与 OfficeDoc 相关联 ObserverVector.addElement(observer); public void deta
22、ch(Observer observer) /解除某 DocExplorer 对象与 OfficeDoc的关联关系 ObserverVector.removeElement(observer); public void notifyObservers() /当 OfficeDoc对象状态已发生变化时,通知所有的 DocExplorer对象 Enumeration enumeration=(2); while (enumeration.hasMoreElements() (Observer)enumeration.nextElement().(3); public Enumeration Obs
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 2005 年下 半年 软件 水平 考试 中级 设计师 下午 应用技术 试题 答案 解析 DOC

链接地址:http://www.mydoc123.com/p-492530.html