[计算机类试卷]2006年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc
《[计算机类试卷]2006年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]2006年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc(21页珍藏版)》请在麦多课文档分享上搜索。
1、2006年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 阅读下列说明以及数据流图,回答问题 1、问题 2和问题 3。 说明 某学校建立了一个网上作业提交与管理系统,基本功能描述如下: (1)账号和密码。任课老师用账号和密码登录系统后,提交所有选课学生的名单。系统自动为每个选课学生创建登录系统的账号和密码。 (2)作业提交。学生使用账号和密码登录系统后,可以向系统申请所选课程的作业。系统首先检查学生的当前 状态,如果该学生还没有做过作业,则从数据库服务器申请一份作业。若申请成功,则显示需要完成的作业。学生需在线完成
2、作业,单击 “提交 ”按钮上交作业。 (3)在线批阅。系统自动在线批改作业,显示作业成绩,并将该成绩记录在作业成绩统计文件中 1 如果将数据库服务器 (记为 DB)作为一个外部实体,那么在绘制该系统的数据流图时,还应有哪些外部实体和数据存储 ? 2 根据说明结合问题 1的解答,指出在该系统的顶层数据流图中应有哪些数据流。请采用说明中的词汇给出这些数据流的起点、终点以及数据流名称,下表给出了数据流的部 分信息,请填充空缺处。3 根据数据流图的设计原则,阅读下图所示的数据流图,找出其中的错误之处。4 阅读下列说明以及 UML类图,回答问题 1、问题 2和问题 3。 说明 某客户信息管理系统中保存着
3、两类客户的信息。 (1)个人客户,对于这类客户,系统保存了其客户标识 (由系统生成 )和基本信息 (包括姓名、住宅电话和 E-mail)。 (2)集团客户。集团客户可以创建和管理自己的若干名联系人。对于这类客户,系统除了保存其客户标识 (由系统生成 )之外,也保存了其联系人的信息。联系人的信息包括姓名、住宅电话、 E-mail、办公电话以及职位。 该系统除了可以保存客户信息之外,还具有以下功能: (1)向系统中添加客户 (addCustomer); (2)根据给定的客户标识,在系统中查找该客户 (getCustomer): (3)根据给定的客户标识,从系统中删除该客户 (removeCusto
4、mer): (4)创建新的联系人 (addContact): (5)在系统中查找指定的联系人 (getContact); (6)从系统中删除指定的联系人 (removeContact)。 该系统采用面向对象方法进行开发。在面向对象分析阶段,根据 上述描述,得到如下表所示的类。 描述该客户信息管理系统的 UML类图如下图所示。 4 请使用说明中的术语,给出上图中类 Customer和类 Person的属性。 5 识别关联的多重度是面向对象建模过程中的一个重要步骤。根据说明中给出的描述,完成图中的 (1) (6)。 6 根据说明中的叙述,抽象出如下表所示的方法,请指出上图中的类 Customer-
5、 InformationSystem和7 阅读下列说明,回答问题 1、问题 2和问题 3。 说明 某单位资料室需要建立一个图书管理系统,初步的需求分 析结果如下: (1)资料室有图书管理员若干名,他们负责己购入图书的编目和借还工作,每名图书管理员的信息包括工号和姓名; (2)读者可在阅览室读书,也可通过图书流通室借还图书,读者信息包括读者 D、姓名、电话和 E-mail,系统为不同读者生成不同的读者 ID; (3)每部书在系统中对应唯一的一条图书在版编目数据 (CIP,以下简称书目 ),书目的基本信息包括 ISBN号、书名、作者、出版商、出版年月,以及本资料室拥有该书的册数 (以下简称册数 )
6、,不同书目的 ISBN号不相同: (4)资料室对于同一书目的图书可拥有多册(本 ),图书信息包括图书 ID、 ISBN号、存放位置、当前状态,每一本书在系统中被赋予唯一的图书 ID: (5)一名读者最多只能借阅十本图书,且每本图书最多只能借两个月,读者借书时需由图书管理员登记读者 、所借图书 D、借阅时间和应还时间,读者还书时图书管理员在对应的借书信息中记录归还时间; (6)当某书目的可借出图书的数量为零时,读者可以对其进行预约登记,即记录读者 ID、需要借阅的图书的 ISBN号、预约时间。 某书目的信息,以及与该书目对应的图书信息,如下表所示。系统的主要业务处理如下。 (1)入库管理:图书购
7、进入 库时,管理员查询本资料室的书目信息,若该书的书目尚未建立,则由管理员编写该书的书月信息并输入系统,然后编写并输入图书信息;否则,修改该书目的册数,然后编写并输入图书信息,对于进入流通室的书,其初始状态为 “未借出 ”,而送入阅览室的书的状态始终为 “不外借 ”。 (2)借书管理:读者借书时,若有,则由管理员为该读者办理借书手续,并记录该读者的借书信息,同时将借出图书的状态修改为 “已借出 ”。 (3)预约管理:若图书流通室没有读者要借的书,则可为该读者建立预约登记,需要记录读者 ID、书的 ISBN号、预约时间和预约期限 (最长为 10天 )。一旦其他读者归还这种书,就自动通知该预约读者
8、。系统将自动清除超出预约期限的预约记录并修改相关信息。 (4)还书管理:读者还书时,则记录相应借还信息中的 “归还时间 ”,对于超期归还者,系统自动计算罚金 (具体的计算过程此处省略 )。系统同时自动查询预约登记表,若存在其他读者预约该书的记录,则将该图书的状态修改为 “已预约 ”,并将该图书 ID写入相应的预约记录中 (系统在清除超出预约期限的记录时解除该图书的 “已预约 ”状态 );否则,将该图书的状态修改为 “未借出 ”。 (5)通知处理:对于己到期且未归还的图书,系 统通过 E-mail自动通知读者:若读者预约的书已到,系统则自动通过 E-mail通知该读者来办理借书手续。 7 根据以
9、上说明设计的实体联系图如下图所示,请指出读者与图书、书目与读者、书目与图书之间的联系类型。8 该图书管理系统的主要关系模式如下,请补充 “借还记录 ”和 “预约登记 ”关系中的空缺。 管理员 (工号,姓名 ) 读者 (读者 ID,姓名,电话, E-mail) 书目 (ISBN号,书名,作者,出版商,出版年月,册数,经办人 ) 图书 (图书 ID, ISBN号,存放位置,状态,经办人 ) 借还记录 (a),借出时间,应还时间,归还时间 ) 预约登记 (b),预约时间,预约期限,图书 ID) 注:时间格式为 “年 .月 .日 时:分:秒 ”。 9 请指出问题 2中给出的读者、书目关系模式的主键,以
10、及图书、借还记录和预约登记关系模式的主键和外键。 10 阅读以下说明,回答问题 1、问题 2和问题 3。 说明 某单位正在使用一套 C/S模式的应用软件系统,现在需要升级为 B/S应用模式,但需要保持业务的连续性。开发人员提出用 Web Service作为中间层的接口进行开发。 10 请用 120字以内文字,从业务的继承性、升级成本 (时间、工作量 )和扩展性三个方面简要说明开发人员所提方案的优点。 11 Web Service的三个基本技术是 WSDL、 SOAP、 UDDI,它们都是以 XML为基础定义的。请用 120字以内文字,简要说明 WSDL、 SOAP和 UDDI的作用。 12 服
11、务注册中心、服务提供者和服务请求者之间的交互和操作构成了 Web Service的体系结构,如下图所示。请用 180字以内文字,说明这三者的主要功能及其交互过程。 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 13 阅读下列说明、图和 C代码。 说明 5-1 B树是一种多叉平衡查找树。一棵 m阶的 B树,或为空树,或为满足下列特性的 m叉树: 树中每个结点最多有 m棵子树; 若根结点不是叶子结点,则它至少有两棵子树; 除根之外的所有非叶子结点至少有 m/2棵子树; 所有的非叶子结点中包含下列数据信息:
12、 (n, A0,K1, A1, K2, A2, , Kn, An)其中: Ki(i=1, 2, , n)为关键字,且 KiKi+1(i=1, 2, , n-1); Ai(i=0, 1, , n)为指向子树根结点的指针,且指针 Ai-1,所指子树中所有结点的关键字均小于 Ki, Ai+1,所指子树中所有结点的关键字均大于 Ki, n为结点中关键字的数目。 所有的叶子结点都出现在同一层次上,并且不带信息 (可以看作是外部结点或查找失败的结点,实际上这些结点不存在,指向这些结点的指针为空 )。 例如,一棵 4阶 B树如下图所示 (结点中关键字的数目省略 )。 B树的阶 M、 bool类型、关键字类型
13、及 B树结点的定义如下: #define M 4 /*B树的阶 */ typedef enum FALSE=0,TRUE=1bool; typedef int ElemKeyType; typedef struct BTreeNode int numkeys; /*结点中关键字的数日 */ struct BTreeNode*parent; /*指向父结点的指针,树根的父结点指针为空 */ struct BTreeNode *AM; /*指向子树结点的指针数组 */ ElemKeyType KM; /*存储关键字的数组, K0闲置不用 */ BTreeNode; 函数 SearchBtree(B
14、TreeNode*root,ElemKcyTypeakey,BTreeNode: *pb)的功能是:在给定的一棵 M阶 B树中查找关键字 akey所在结点,若找到则返回 TRUE,否则返回 FALSE。其中, root是指向该M阶 B树根结点的指针,参数 ptr返回 akey所在结点的指针,若 akey不在该 B树中,则 ptr返回查找失败时空指针所在结点的指针。例如,在上图所示的 4阶 B树中查找关键字 25时, ptr返回指向结点 e的指针。 注;在结点中查找关键字 akey时采用二分法。 函数 5-1 bool SearchBtree(BTreeNode* root, ElemKeyTy
15、pe akey, BTreeNode *ptr) int lw, hi, mid; BTreeNode*p = root; *ptr = NULL; while ( p ) 1w = 1; hi=(1); while (1w = hi) mid = (1w + hi)/2; if (p - Kmid = akey) *ptr = p; return TRUE; else if (2) hi=mid - 1; else 1w = mid + 1; *ptr = p; p = (3); return FALSE; 说明 5-2 在 M阶 B树中插入一个关键字时,首先在最接近外部结点的某个非叶子结点
16、中增加一个关键字,若该结点中关键字的个数不超过 M-1,则完成插入;否则,要进行结点的 “分裂 ”处理。所谓 “分裂 ”,就是把结点中处于中间位置上的关键字取出来并插入其父结点中,然后以该关键字为分界线,把原结点分成两个结点。 “分裂 ”过程可能会一直持续到树根,若树根结点也需要分裂,则整棵树的高度增加 1。 例如,在上图所示的 B树中插入 关键字 25时,需将其插入结点 e中。由于 e中已经有 3个关键字,因此将关键字 24插入结点 e的父结点 b,并以24为分界线将结点 e分裂为 e1和 e2两个结点,结果如下图所示。 函数 Isgrowing(BTreeNode*root, ElemKe
17、yTypeakey)的功能是:判断在给定的 M阶B树中插入关键字 akey后,该 B树的高度是否增加,若增加则返回 TRUE,否则返回 FALSE。其中, root是指向该 M阶 B树根结点的指针。 在函数 Isgrwing中,首先调用函数 SearchBtree(即函数 5-1)查找关键字 akey是否在给定的 M阶 B树中,若在,则返回 FALSE(表明无需插入关键字 akey,树的高度不会增加 );否则,通过判断结点中关键字的数目考查插入关键字 akey后该 B树的高度是否增加。 函数 5-2 bool Isgrowing(BTreeNode* root, ElernKeyType ak
18、ey) BTreeNode *t, *f; if( !SearchBtree(4) ) ) t=f; while (5) t=t - parent; if( !t ) return TRUE; return FALSE; 14 阅读下列说明、图和 c+代码。 说明 某订单管理系统的部分 UML类图如下图所示。 上图中, Product表示产品, ProductList表示产品目录, Order表示产品订单,OrderItem表示产品订单中的一个条目, OrderList表示订单列表, SalesSystem提供订单管理系统的操作接口。 请完善类 Order的成员函数 getOrderedAmo
19、unt()和类SalesSystem的 stafistic()方法,各个类的属性及部分方法定义参见下面的 C+代码。 C+代码 class Product /产品 private: string pid; /产品识别码 string description; /产品描述 double price; /产品单价 public: void setProductPrice(double price); /设置产品单价 string getProduetld(); /获取产品识别码 string getProduetDescriprion 0; /获取产品描述 double getProductPri
20、ce0; /获得产品单价 /其他成员省略 ; class ProductList /产品列表类 private: vector Product products; public: ProductList(); Product getProductBylndex(int i); /获得产品列表中的第 i件产品 void addProduct(Product t); /在产品列表中加入一件产品 Product * getProductByID(string pid); /获得识别码为 pid的产品 指针 unsigned iht getProductAmount(); /获得产品列表中的产品娄量
21、; class OrderItem /订单条目类 private: Product *productPtr; /指向被订购产品的指针 int quantity; /订购数量 public: OrderItem (Product *,iht); Product * getProductptr O; /获得指向被订购产品的指针 int getQuantity (); /获取被订刚强产品数量 ; class Order /订单类 private: unsigned int orderid; /订单识别号 vector Orderltem items; /订单内容 (订单项 ) public: Ord
22、er(unsigned int orderid); /获得识别码为 fid的产品在当前订单中被订购的数量 int getOrderedAmount(string fid); void additem(Product *productPtr,unsigned int n); /在订单中增加一个订 单项 ; class OrderList /订单列表类 private: vector Order orders; public: OrderList(); /Begin()返回指向订单列表第一个元素的迭代器 (指针 ) virtual vector Order :iterator OrderList:
23、Begin(); /End()返回指向订单列表最后一个元素之后的迭代器 (指向一个不存在的元素 ) virtual vector Order :iterator orderList:End(); void addOrder(Order t); /在订单列表中加入一份订单 /其他成员省略 ; class SalesSystem private: ProductList catalog; /产品目录 OrderList sales; /订单列表 public: SalesSystem(); void statistic(); /统计所有产品的订购情况 /其他成员省略 ; /在订单中查找识别码为 t
24、id的产品的订购数量,若该产品没有被订购,则返回 0 int Order:getOrderedAmount(string tid) for (int k=0; k items.size(); k+) if(1)=tid) return (2); return 0; /方法 statistic()依次统计产品目录中每个产品的订购总量,并打印输出 /每个产品的识别码、描述、订购总量和订购金额 void SalesSystem:statistic() unsigned int k, t, ordered_qty = 0; vector Order :iterator it; Product p; c
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 2006 上半年 软件 水平 考试 中级 设计师 下午 应用技术 试题 答案 解析 DOC

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