[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷6及答案与解析.doc
《[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷6及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷6及答案与解析.doc(14页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 6及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 【说明】 某超市的销售业务由一个销售业务管理系统进行管理,该系统每完成一次交易都需要提供顾客发票,其格式如表 1-1所示。 对于这样一个销售业务管理系统,分别给出了以下两种关系数据库的设计 (下划线表示主关键字 ) 设计一: 顾客 Customer(顾客代码 Cno,姓名 name,住址 address,联系电话 phone) 收银员 Salesman(收银员代码 Sno,身份证号 idno,姓名 flame,住址 address,联系电话 phone) 商品 Merc
2、handise(商品代码 Milo,商品名称Mname,价格 price) 发票 Invoice(发票号码 Ino,交易日期 Idate,顾客代码 Cno,收银员代码 Sno,商品代码 Mno,单价 unitprice,数量 amount) 设计二: 顾客Customer(顾客代码 Cno,姓名 name,住址 address,联系电话 phone) 收银员Salesman(收银员代码 Sno,身份证号 idno,姓名 name,住址 address,联系电话吵one) 商品 Merchandise(商品代码 Mno,商品名称 mllame,价格 pnce) 发票Invoice(发票号码 In
3、o,交易日期 Idate,顾客代码 Cno,收银员代码 Sno) 发票明细Invoicedetail(发票号码 Ino,商品代码 Uno,单价 unitprice,数量 amount) 1 设计一的关系模式 Invoice最高满足第几范式 ?为什么 ?设计一和设计二哪个更加合理 ?为什么 ? 2 根据设计二中关系模式,以下 SQL语句是用于 “建立 2005年 1月期间每张发票的发票号,交易日期,交易商品件数和交易总金额的视图 ”的不 完整语句,请填补其中的空缺。 CREATE VIEW Invoice_total(1) SELECT Invoice. Ino, Idate, (2), (3)
4、 FROM Invoice, Invoicedetail WHERE(4)AND Idate BETWEEN2005-01-01AND2005-01-31 GROUP BY(5); 3 根据设计二中关系模式,以下 SQL语句是用于 “查询从未售出的商品信息 ”的不完整语句,请填补其中的空缺。 SELECT Mno, Mname, price FROM Merchandise(1) WHERE(2) (SELECT(3) FROM Invoice, detail WHERE A.Mno=Invoice, detail. Mno); 4 设计二中关系 Merchandise中由属性 price表示
5、商品价格,关系 Invoice, detail中的属性 unitprice也表示商品价格。两个是否有必要同时存在 ?为什么 ? 5 【说明】 下面是某租车信息管理系统的介绍:该车库中备有若干车辆,每 辆车有车号、车牌、车名、价格等属性。车库不定期地购买并注册新车供用户借用,也可将报废的旧车注销以停止租用。 车库可为众多用户提供服务。每个用户在借车之前需注册姓名、地址等内容。每个用户最多可同时借 3辆车。每辆车借期 7天:若有一辆车超期,则不可再借其他车。一辆车超期一天罚款 250元。若一辆车超期 3周不归还,则发布通告。若用户借的车丢失,在罚款处理之前不能借车,每辆报失的车罚款该车目前市价 (
6、包括折旧 )的 1.2倍。注册新用户不受限制;而注销用户之前,该用户必须归还所有借的车,或者报失并接受罚款。 5 分析 车辆的状态和事件,指出图 2-1中的 (1)、 (2)、 (3)、 (4)分别是什么 ? 6 分析用户的状态和事件,指出图 2-2中的 (5)、 (6)、 (7)、 (8)分别是什么 ?(注意,用户与车辆在状态图中的关系 )。 7 指出 UML中活动图的含义,并说明活动图和状态图的区别与联系。 8 阅读下列说明和流程图 2-3,将应填入 (n)的字句写在答题纸的对应栏内。 【说明】 下面的流程图描述了对 8位二进制整数求补的算法。 该算法的计算过程如下:从二进制数的低位 (最
7、右位 )开始,依次向高位逐位查看,直到首 次遇到 “1”时,停止查看。然后,对该 “1”位左面的更高位 (如果有的话 ),逐位求反,所得的结果就是对原二进制数求补的结果。 例如:对二进制整数 10101000求补的结果是 01011000。 设 8位二进制整数中的各位,从低位到高位,依次存放在整型数组 BIT的B1T1 BIT8中。例如,二进制整数 10101000存放在数组 BIT后,就有BIT1=0, BIT2=0, , BIT7 =0, BIT8=1。若流程图中存在空操作,则用NOP表示。 【流程图】 注:流程图中 (1)处按 “循环变量名:循环初值,增量,循环终值 ”格式描述。 9 阅
8、读下列算法说明和算法,将应填入 (n)的字句写在答题纸的对应栏内。 【说明】 下列最短路径算法的具体流程如下:首先构造一个只含 n个顶点的森林,然后依权值从小到大从连通网中选择不使森林中产生回路的边加入到森林中去,直至该森林变成一棵树为止,这棵树便是连通网的最小生成树。该算法的基本思想是:为使生成树上总的权值之和达 到最小,则应使每一条边上的权值尽可能地小,自然应从权值最小的边选起,直至选出 n-1条互不构成回路的权值最小边为止。【算法】 /*对图 定义一种新的表示方法,以一维数组存放图中所有边,并在构建图的存储结构时将它构造为一个 “有序表 ”。以顺序表 MSTree返回生成树上各条边。 *
9、/ typedef strnct VertexType vex 1; VertexType vex2; VRType weight; EdgeType; typedef ElemType EdgeType; typedefstruct / 有向网的定义 VertexType vexsMAX_VERTEX_NUM; / 顶点信息 EdgeType edgeMAX_EDGE_NUM; / 边的信息 Mt vexnum,arcnum; / 图中顶点的数目和边的数目 ELGraph; void MiniSpanTree_Kruskal(ELGraph G, SqList InitSet(F, G.ve
10、xnum); / 将森林 F 初始化为 n 棵树的集合 InitList(MSTree, G.vexaum); / 初 始化生成树为空树 i=O; k=l; while( k (1) e = G.edgei; / 取第 i条权值最小的边 rl = fix_mfset(F, LocateVex(e.vexl); r2 =(2) / 返回两个顶点所在树的树根 if(ri (3) r2) / 选定生成树上第 k条边 if (Listlnsert(MSTree, k, e) (4); / 插入生成树 mix_mfset(F, ri, r2); / 将两棵树归并为一棵树 (5); /继续考察下一条权值最
11、小边 Destroy Set(F); 10 阅读下列程序说明,将应填入 (n)处的字句写在答卷纸的对应栏内。 【程序说明】 对于一个公司的雇员来说,无非有 3种:普通雇员、管理人员和主管。这些雇员有共同的数据:名字、每小时的工资,也有一些共同的操作:数据成员初始化、读雇员的数据成员及计算雇员的工资。但是,他们也有不同。例如,管理人员除有这些共同的特征外,有可能付固定薪水,主管除有管理人员的共同特征外,还有其他物质奖励等。 3种雇员中,管理人员可以看作普通雇员的一种,而主管又可以看作管理人员的一 种。我们很容易想到使用类继承来实现这个问题:普通雇员作为基类,管理人员类从普通雇员类中派生,而主管人
12、员类又从管理人员类中派生。 下面的程序 1完成上述各个类的定义,并建立了 3个雇员 (一个普通雇员、一个管理人员和一个主管 )的档案,并打印出各自的工资表。将 “程序 1”中的成员函数定义为内联函数, pay成员函数定义为虚函数,重新完成上述要求。 【程序 1】 /普通雇员类 class Employee public: Employee(char *theName, float thePayRate); char *getName0 const; float getPayRate0 const; float pay,(float hours Worked) eonst; protected:
13、 ehar *name; /雇员名称 float payRate; /薪水等级 ; Employee:Employee(char *theName, float thePaRate) name = the Name; payRate = the PayRate; char *Employee:getName0 eonst return name; float Employee:getPayRate0 const return payRate; float Employee:pay(float hoursWorked) const return hours Worked * payRate; c
14、lass Manager: public Employee public: /is Salaried 付薪文方式: true 付薪固定工资, false 按小时付薪 Manager(char *the Name, float the Pay Rate, bool is Salaried); bool getSalaried0 const; float pay(float hoursWorked) const; protected: bool salaried; ; Manager:Manager(ehar *theName,fioat thePayRate,bool isSalaried) :
15、 Employee(theName, thePayRate) salaried = isSalaried; bool Manager:getSalaried0 eonst return salaried; float Manager:pay(float hoursWorked) eonst if (salaried) return payRate; /* else */ return Employee:pay(hoursWorked); /主管人员类 class Supervisor: public Employee public: Supervisor(char *theName, floa
16、t thePayRate, float theBouns): Employee (theName, thePayRate,(1.) ,bouns(theBouns) float getBouns0 const return bouns; float pay(float hoursWorked) const return (2); protected: float houris; #include “iostream.h“ void main() Employee e(“Jack“,50.00); Manager m(“Tom“,8000.00,tme); Supervior sCTanya“,
17、8000.00,8000.00); cout “Name:“ e.getName0 endl; cout “Pay: “ e.pay(80) endl; /设每月工作 80小时 cout “Name: “ m.getName0 endl; cout “Pay: “ m.pay(40) endl; cout “Name: “ s.getName0 endl; cout “Pay: “ s.pay(40) endl; /参数 40在这里不起作用 #include “employee.h“ class Employee public: Employee(string theName, float t
18、hePayRate): name(theName),payRate(thePayRate) string getName0 const return name; float getPayRate0 const return payRate; virtual float pay(float hoursWorked) const return (3); protected:, string name; /雇员名 Boat payRate; /薪水等级 ; /管理人员类 /继承普通雇员类 class Manager: public Employee public: /构造函数 /isSalaried
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 中级 设计师 下午 应用技术 试题 模拟 答案 解析 DOC
