ImageVerifierCode 换一换
格式:DOC , 页数:10 ,大小:82KB ,
资源ID:1323168      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1323168.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】中级软件设计师下午试题-4及答案解析.doc)为本站会员(周芸)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】中级软件设计师下午试题-4及答案解析.doc

1、中级软件设计师下午试题-4 及答案解析(总分:10.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:4.00)【说明】某超市的销售业务由一个销售业务管理系统进行管理,该系统每完成一次交易都需要提供顾客发票,其格式如表 1-1所示。(分数:4.00)(1).【问题 1】设计一的关系模式 Invoice最高满足第几范式?为什么?设计一和设计二哪个更加合理?为什么?(分数:1.00)_(2).【问题 2】根据设计二中关系模式,以下 SQL语句是用于“建立 2005年 1月期间每张发票的发票号,交易日期,交易商品件数和交易总金额的视图”的不完整语句,请填补其中的空缺。CREATE VI

2、EW Invoice_totalU (1) /USELECT Invoice. Ino, Idate,U (2) /U,U (3) /UFROM Invoice, InvoicedetailWHEREU (4) /UANDIdate BETWEEN2005-01-01AND2005-01-31GROUP BYU (5) /U;(分数:1.00)_(3).【问题 3】根据设计二中关系模式,以下 SQL语句是用于“查询从未售出的商品信息”的不完整语句,请填补其中的空缺。SELECT Mno, Mname, priceFROM MerchandiseU (1) /UWHEREU (2) /U(SEL

3、ECTU (3) /UFROM Invoice, detailWHERE A.Mno=Invoice, detail. Mno);(分数:1.00)_(4).【问题 4】设计二中关系 Merchandise中由属性 price表示商品价格,关系 Invoice, detail中的属性 unitprice 也表示商品价格。两个是否有必要同时存在?为什么?(分数:1.00)_二、B试题二/B(总题数:1,分数:3.00)【说明】下面是某租车信息管理系统的介绍:该车库中备有若干车辆,每辆车有车号、车牌、车名、价格等属性。车库不定期地购买并注册新车供用户借用,也可将报废的旧车注销以停止租用。车库可为众

4、多用户提供服务。每个用户在借车之前需注册姓名、地址等内容。每个用户最多可同时借 3辆车。每辆车借期 7天:若有一辆车超期,则不可再借其他车。一辆车超期一天罚款 250元。若一辆车超期3周不归还,则发布通告。若用户借的车丢失,在罚款处理之前不能借车,每辆报失的车罚款该车目前市价(包括折旧)的 1.2倍。注册新用户不受限制;而注销用户之前,该用户必须归还所有借的车,或者报失并接受罚款。【状态图 1】【状态图 2】(分数:3.00)(1).【问题 1】分析车辆的状态和事件,指出图 2-1中的(1)、(2)、(3)、(4)分别是什么?(分数:1.00)_(2).【问题 2】分析用户的状态和事件,指出图

5、 2-2中的(5)、(6)、(7)、(8)分别是什么? (注意,用户与车辆在状态图中的关系)。(分数:1.00)_(3).【问题 3】指出 UML中活动图的含义,并说明活动图和状态图的区别与联系。(分数:1.00)_三、B试题三/B(总题数:1,分数:1.00)1.阅读下列说明和流程图 2-3,将应填入U (n) /U的字句写在答题纸的对应栏内。 【说明】 下面的流程图描述了对 8位二进制整数求补的算法。 该算法的计算过程如下:从二进制数的低位(最右位)开始,依次向高位逐位查看,直到首次遇到“1”时,停止查看。然后,对该“1”位左面的更高位(如果有的话),逐位求反,所得的结果就是对原二进制数求

6、补的结果。 例如:对二进制整数 10101000求补的结果是 01011000。 设 8位二进制整数中的各位,从低位到高位,依次存放在整型数组 BIT的B1T1BIT8中。例如,二进制整数 10101000存放在数组 BIT后,就有 BIT1=0,BIT2=0,BIT7 =0,BIT8=1。若流程图中存在空操作,则用 NOP表示。 【流程图】 注:流程图中U(1) /U处按“循环变量名:循环初值,增量,循环终值”格式描述。(分数:1.00)_四、B试题四/B(总题数:1,分数:1.00)2.阅读下列算法说明和算法,将应填入U (n) /U的字句写在答题纸的对应栏内。 【说明】 下列最短路径算法

7、的具体流程如下:首先构造一个只含 n个顶点的森林,然后依权值从小到大从连通网中选择不使森林中产生回路的边加入到森林中去,直至该森林变成一棵树为止,这棵树便是连通网的最小生成树。该算法的基本思想是:为使生成树上总的权值之和达 到最小,则应使每一条边上的权值尽可能地小,自然应从权值最小的边选起,直至选出 n-1条互不构成回路的权值最小边为止。 (分数:1.00)_五、B试题五/B(总题数:1,分数:1.00)3.阅读下列程序说明,将应填入U (n) /U处的字句写在答卷纸的对应栏内。 【程序说明】 对于一个公司的雇员来说,无非有 3种:普通雇员、管理人员和主管。这些雇员有共同的数据:名字、每小时的

8、工资,也有一些共同的操作:数据成员初始化、读雇员的数据成员及计算雇员的工资。但是,他们也有不同。例如,管理人员除有这些共同的特征外,有可能付固定薪水,主管除有管理人员的共同特征外,还有其他物质奖励等。3 种雇员中,管理人员可以看作普通雇员的一种,而主管又可以看作管理人员的一种。我们很容易想到使用类继承来实现这个问题:普通雇员作为基类,管理人员类从普通雇员类中派生,而主管人员类又从管理人员类中派生。 下面的程序 1完成上述各个类的定义,并建立了 3个雇员(一个普通雇员、一个管理人员和一个主管)的档案,并打印出各自的工资表。将“程序 1”中的成员函数定义为内联函数,pay 成员函数定义为虚函数,重

9、新完成上述要求。 【程序 1】 /普通雇员类 class Employee public: Employee(char *theName, float thePayRate); char *getName0 const; float getPayRate0 const; float pay,(float hours Worked) eonst; protected: ehar *name; /雇员名称 float payRate; /薪水等级 ; Employee:Employee(char *theName, float thePaRate) name = the Name; payRate

10、 = the PayRate; char *Employee:getName0 eonst return name; float Employee:getPayRate0 const return payRate; float Employee:pay(float hoursWorked) const return hours Worked * payRate; class Manager: public Employee public: /is Salaried 付薪文方式:true 付薪固定工资,false 按小时付薪 Manager(char *the Name, float the P

11、ay Rate, bool is Salaried); bool getSalaried0 const; float pay(float hoursWorked) const; protected: bool salaried; ; Manager:Manager(ehar *theName,fioat thePayRate,bool isSalaried) : Employee(theName, thePayRate) salaried = isSalaried; bool Manager:getSalaried0 eonst return salaried; float Manager:p

12、ay(float hoursWorked) eonst if (salaried) return payRate; /* else */ return Employee:pay(hoursWorked); /主管人员类 class Supervisor: public Employee public: Supervisor(char *theName, float thePayRate, float theBouns): Employee (theName, thePayRate,U (1) /U.) ,bouns(theBouns) float getBouns0 const return

13、bouns; float pay(float hoursWorked) const returnU (2) /U; protected: float houris; #include “iostream.h“ void main() Employee e(“Jack“,50.00); Manager m(“Tom“,8000.00,tme); Supervior sCTanya“,8000.00,8000.00); cout“Name:“e.getName0endl; cout “Pay: “e.pay(80)endl; /设每月工作 80小时 cout “Name: “m.getName0e

14、ndl; cout “Pay: “m.pay(40)endl; cout “Name: “s.getName0endl; cout “Pay: “s.pay(40)endl; /参数 40在这里不起作用 #include “employee.h“ class Employee public: Employee(string theName, float thePayRate): name(theName),payRate(thePayRate) string getName0 const return name; float getPayRate0 const return payRate;

15、virtual float pay(float hoursWorked) const returnU (3) /U; protected:, string name; /雇员名 Boat payRate; /薪水等级 ; /管理人员类 /继承普通雇员类 class Manager: public Employee public: /构造函数 /isSalaried 标识管理人员类的付薪方式 /true 按阶段付薪(固定工资) /false 按小时付薪 Manager(string theName, float thePayRate, bool isSalaried): Employee(the

16、Name,thePayRate),salaried(isSalaried) bool getSalaried0 const return salaried; virtual float pay(floatU (4) /U) const; protected: bool salaried; ; float Manager :pay(float hoursWorked) const if (salaried) /固定付薪方式 return payRate; else /按小时付薪 returnU (5) /U; /主管人员类 class Supervisor:U (6) /U public: /构

17、造函数 Supervisor (string theName, float thePayRate, float theBouns) : Manager(theName, thePayRate, true), bouns(theBouns) /取奖金数额 float getBouns0 const return bouns; /计算薪水 virtual float pay(float hours Worked) const U (7) /U float bouns; #include “employee.h“ #nclude “iostream.h“ void main() U (8) /U*e

18、p3; ep0=new Employee(“Jack“ ,“50.00“); ep1=new Manager(“Tom“, “8000.00“,true); ep2=new Supervior(“Tanya“,“8000.00“,“8000.00“); for (int i=0;i3;i+) Cout“Name: “U (9) /Uendl; Cout“Pay: “U (10) /Uendl; /设每月工作 80小时 (分数:1.00)_中级软件设计师下午试题-4 答案解析(总分:10.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:4.00)【说明】某超市的销售业务由一个销售

19、业务管理系统进行管理,该系统每完成一次交易都需要提供顾客发票,其格式如表 1-1所示。(分数:4.00)(1).【问题 1】设计一的关系模式 Invoice最高满足第几范式?为什么?设计一和设计二哪个更加合理?为什么?(分数:1.00)_正确答案:()解析:设计一中 Invoice最高满足第一范式。 根据题意可得出以下函数依赖: InoSno,Cno,Idate 而关系 Invoice的主码是 Ino和 Mno。非主属性 Sno、Cno 和 Idate并非完全依赖于主码,因此关系Invoice不满足第二范式,最高满足第一范式。 设计二更加合理。因为设计二解决了设计一中由于非主属性不完全依赖于主

20、码而造成的数据冗余等问题。 分析 关系数据库设计的方法之一就是设计满足适当范式的模式,通常可以通过判断分解后的模式达到第几范式来评价规范化的程度。 11NF(第一范式):若关系模式 R的每一个分量是不可再分的数据项,则关系模式 R属于第一范式。 22NF(第二范式):若关系模式 R1NF,且每一个非主属性完全依赖于码,则关系模式属于第二范式。当 1NF消除了非主属性对码的部分函数依赖,则称为 2NF。 33NF(第三范式):若关系模式 R(U,F)中若不存在这样的码 X,属性组 Y及非主属性 Z(Z Y)使得 XY,(YX)YZ 成立,则关系模式属于 3NF。即当 2NF消除了非主属性对码的传

21、递函数依赖,则称为 3NF。 4BCNF(巴克斯范式):若关系模式 RlNF,若 XY 且Y X时,X 必含有码,则关系模式属于 BCNF。即当 3NF消除了主属性对码的部分和传递依赖,则称为BCNF。 54NF(第四范式):关系模式 ReINF,若对于 R的每个非平凡多值依赖 XY 且 Y(2).【问题 2】根据设计二中关系模式,以下 SQL语句是用于“建立 2005年 1月期间每张发票的发票号,交易日期,交易商品件数和交易总金额的视图”的不完整语句,请填补其中的空缺。CREATE VIEW Invoice_totalU (1) /USELECT Invoice. Ino, Idate,U

22、(2) /U,U (3) /UFROM Invoice, InvoicedetailWHEREU (4) /UANDIdate BETWEEN2005-01-01AND2005-01-31GROUP BYU (5) /U;(分数:1.00)_正确答案:()解析:AS (2)SUM(amount) (3)SUM(unitprice*amount) (4)Invoice.Ino=invoice detail. Ino (5)Invoice.Ino,Idate或 Invoice detail. Ino,Idate 分析本题是要建立 2005年 1月期间每张发票的发票号,交易日期,交易商品件数和交易总

23、金额的视图。 首先建立视图的格式为 CREATEVIEW视图名AS视图定义,因此(1)空的答案为 AS。 本查询是从 Invoice和 Invoice detail两个关系中查询,两关系的连接条件是两关系的 Ino相等,因此(4)空的答案是 Invoice.ino=Invoice detail.Ino。 统计每张发票的信息需要按发票将数据分组,也就是按发票号 Ino分组,但因为查询关系 Invoice和 lnvoice detail都有属性 Ino。为了避免二义性,所以分组属性是 Invoice.Ino或者是 Invoice detail. Ino。因为在包含聚合运算的 Select子句中,只

24、有在 Group By子句中出现的 属性才能在 SELECT子句中以非聚合形式出现,而 SELECT子句中有非聚合形式的属性 Idate出现,所以(5)空的答案是 Invoice.Ino,Idate或 Invoicedetail.Ino,Idate。 需要查询的是每张发票的交易商品件数和交易总金额。交易商品件数是发票商品数量的总和,因此(2)空的答案是 SUM(amount)。交易总金额是每条交易商品明细中每条记录商品金额的总和,每条记录商品金额是 unitprice*amount,因此(3)空的答案是 SUM (unitprice*amount)。(3).【问题 3】根据设计二中关系模式,以

25、下 SQL语句是用于“查询从未售出的商品信息”的不完整语句,请填补其中的空缺。SELECT Mno, Mname, priceFROM MerchandiseU (1) /UWHEREU (2) /U(SELECTU (3) /UFROM Invoice, detailWHERE A.Mno=Invoice, detail. Mno);(分数:1.00)_正确答案:()解析:A 和 ASA (2)NOT EXISTS (3) * 分析本题是查询从未售出的商品信息。 SQL 语句中有两种格式为表或视图取别名:“表名 AS别名”或“表名别名”。由题中可以看出 Memhandise的别名是 A,因此

26、填空(1)的答案是 A或者 ASA。 要查询“从未出售”的商品,也就是要查询的商品在交易记录中不存在,因此(2)空的答案是 NOTEXISTS。(4).【问题 4】设计二中关系 Merchandise中由属性 price表示商品价格,关系 Invoice, detail中的属性 unitprice 也表示商品价格。两个是否有必要同时存在?为什么?(分数:1.00)_正确答案:()解析:有必要。Merchandise 中由属性 price表示的是商品的当前价格,超市中的价格是有可能变动的,而关系 Invoicedetail中的属性 unitprice表示的是在开具发票时该商品的单价。 分析Mer

27、chandise中由属性 price表示的是商品的当前价格,超市中的价格是有可能变动的,而关系 Invoicedetail中的属性 unitprice表示的是在开具发票时该商品的单价。如果缺少其中任意一个,将导致商品单价不能进行调整,否则,当商品的单价发生变化时,销售历史中的商品价格就随着发生变化。二、B试题二/B(总题数:1,分数:3.00)【说明】下面是某租车信息管理系统的介绍:该车库中备有若干车辆,每辆车有车号、车牌、车名、价格等属性。车库不定期地购买并注册新车供用户借用,也可将报废的旧车注销以停止租用。车库可为众多用户提供服务。每个用户在借车之前需注册姓名、地址等内容。每个用户最多可同

28、时借 3辆车。每辆车借期 7天:若有一辆车超期,则不可再借其他车。一辆车超期一天罚款 250元。若一辆车超期3周不归还,则发布通告。若用户借的车丢失,在罚款处理之前不能借车,每辆报失的车罚款该车目前市价(包括折旧)的 1.2倍。注册新用户不受限制;而注销用户之前,该用户必须归还所有借的车,或者报失并接受罚款。【状态图 1】【状态图 2】(分数:3.00)(1).【问题 1】分析车辆的状态和事件,指出图 2-1中的(1)、(2)、(3)、(4)分别是什么?(分数:1.00)_正确答案:()解析:cancel register(注销旧车的注册) (2)register(车辆注册) (3)retur

29、n(归还) (4)lost report(遗失报告) 分析 根据题意可以分析出车辆的状态和事件,例如根据“车库不定期地购买并注册新车供用户借用,也可将报废的旧车注销以停止租用”,可以得出(1)、(2)空分别是注销旧车的注册和车辆注册。(3)空可以从在库状态和在借状态的合理推断,得出从在借状态到在库状态只有一种事件“归还”。从在借状态到终结状态,也只有一种可能性,那就是遗失。(2).【问题 2】分析用户的状态和事件,指出图 2-2中的(5)、(6)、(7)、(8)分别是什么? (注意,用户与车辆在状态图中的关系)。(分数:1.00)_正确答案:()解析:cancel register(注销用户的

30、注册) (6)borrow/n+1(借车/拥有车的数量+1) (7)penalty and n=0(罚款并且拥有车的数量为 0) (8) 3 分析根据题意“注销用户之前,该用户必须归还所有借的车,或者报失并接受罚款”,得出从“No Car到终结状态的事件(5)空是 cancel register(注销用户的注册)。根据从“No Car”到“Has Car”的事件(6)空是 borrow(借车),同时已知用户可以借多辆车,当前拥有车 n辆,所以需要 n+1。根据“若用户借的车丢失,在罚款处理之前不能借车”可知(7)空是penalty(罚款),同时状态从“Has Car”到达“No Car”说明

31、n=0。根据“每个用户最多可同时借 3辆车”,可以得出(8)空为 3。(3).【问题 3】指出 UML中活动图的含义,并说明活动图和状态图的区别与联系。(分数:1.00)_正确答案:()解析:活动图(activity diagram)显示动作及其结果。活动图着重描述操作(方法)实现中所完成的工作以及用例实例或对象中的活动。活动图是状态图的一个变种,与状态图的目的有一些小的差别,活动图的主要目的是描述动作(执行的工作和活动)及对象状态改变的结果。当状态中的动作被执行(不像正常的状态图,它不需指定任何事件)时,活动图中的状态(称为动作状态)直接转移到下一个阶段。活动图和状态图的另一个区别是活动图中

32、的动作可以放在泳道中。泳道聚合一组活动,并指定负责人和所属组织。活动图是另一种描述交互的方式,描述采取何种动作,做什么(对象状态改变),何时发生(动作序列),以及在何处发生 (泳道)。 活动图可以用作下述目的: 1描述个操作执行过程中(操作实现的实例化)所完成的工作(动作)。这是活动图最常见的用途。 2描述对象内部的工作。 3显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。 4显示用例的实例是如何执行动作以及如何改变对象状态。 说明一次商务活动中的工人(角色)、工作流、组织和对象是如何工作的。 分析所有的系统均有静态结构和动态行为。结构可以用静态模型元素来描述,如类、关系、节点

33、和构件。行为描述结构内的元素如何交互。通常情况下,这些交互是确定的且可以建立模型。抽象系统的动态行为也称为动态建模,UML 支持动态建模。在 UML中有 4 类图,每一类用于不同的目的:状态、序列、协作和活动。状态图被用来描述类(也可以用于子系统或整个系统)中的行为和内部状态。它着眼于描述随着时间的改变,对象如何改变其状态。状态的改变起决于出现的事件,状态中执行的行为和动作,状态转移等。事件可能是条件成真,接收一个信号或一个操作调用或经过指定时间。序列图主要用来描述在指定情节中一组对象是如何交互的。它着眼于消息序列,也就是说,在对象间如何发送和接收消息。序列图有两个坐标轴:纵坐标轴显示时间,横

34、坐标轴显示有关的对象。序列图中最基本的东西是时间。协作图主要用来描述对象在空间中的交互,即除了动态交互,它也直接描述对象是如何链接在一起的。在协作图中没有时间轴,因而将消息按序编号。三、B试题三/B(总题数:1,分数:1.00)1.阅读下列说明和流程图 2-3,将应填入U (n) /U的字句写在答题纸的对应栏内。 【说明】 下面的流程图描述了对 8位二进制整数求补的算法。 该算法的计算过程如下:从二进制数的低位(最右位)开始,依次向高位逐位查看,直到首次遇到“1”时,停止查看。然后,对该“1”位左面的更高位(如果有的话),逐位求反,所得的结果就是对原二进制数求补的结果。 例如:对二进制整数 1

35、0101000求补的结果是 01011000。 设 8位二进制整数中的各位,从低位到高位,依次存放在整型数组 BIT的B1T1BIT8中。例如,二进制整数 10101000存放在数组 BIT后,就有 BIT1=0,BIT2=0,BIT7 =0,BIT8=1。若流程图中存在空操作,则用 NOP表示。 【流程图】 注:流程图中U(1) /U处按“循环变量名:循环初值,增量,循环终值”格式描述。(分数:1.00)_正确答案:()解析:i:1,1,8 (2)1sw (3)0BITi (4)NOP,或空操作 (5)1BITi 分析 根据题意,从二进制数的低位(最右位)开始,依次向高位逐位查看,直到首次遇

36、到“1”时,停止查看。然后,对该“1”位左面的更高位(如果有的话),逐位求反,所得的结果就是对原二进制数求补的结果。所以(1)空是 8次循环根据 BITi的值判断相应补数的值, (2)(5)空是分支处理的结果。四、B试题四/B(总题数:1,分数:1.00)2.阅读下列算法说明和算法,将应填入U (n) /U的字句写在答题纸的对应栏内。 【说明】 下列最短路径算法的具体流程如下:首先构造一个只含 n个顶点的森林,然后依权值从小到大从连通网中选择不使森林中产生回路的边加入到森林中去,直至该森林变成一棵树为止,这棵树便是连通网的最小生成树。该算法的基本思想是:为使生成树上总的权值之和达 到最小,则应

37、使每一条边上的权值尽可能地小,自然应从权值最小的边选起,直至选出 n-1条互不构成回路的权值最小边为止。 (分数:1.00)_正确答案:()解析:G.vexnum (2)fix_mfset(F,Locate Vex(e.vex2) (3) != (4)k+ (5)i+ 分析 本题考查的是克鲁斯卡尔(Kmskal)算法。理解该算法的关键在于:由于生成树上不允许有回路,因此并非每一条居当前权值最小的边都可选。例如,如图 7-1所示的连通网 G5,在依次选中了(e,f),(b,c),(e,d)和(f,g)的 4条边之后,权值最小边为(g,d),由于 g和 d 已经连通,若加上(g,d)这条边将使生成

38、树上产生回路,显然这条边不可取。同理,边(f,d)也不可取,之后则依次取(a,g)和(a,b)两条边加入到生成树。 那么在算法中如何判别当前权值最小边的两个顶点之间是否已经连通?从生成树的构造过程可见,初始态为 n个顶点分属 n棵树,互不连通,每加入一条边,就将两棵树合并为一棵树,在同一棵树上的两个顶点之间自然相连通。由此判别当前权值最小边是否可取只要判别它的两个顶点是否在同一棵树上即可。五、B试题五/B(总题数:1,分数:1.00)3.阅读下列程序说明,将应填入U (n) /U处的字句写在答卷纸的对应栏内。 【程序说明】 对于一个公司的雇员来说,无非有 3种:普通雇员、管理人员和主管。这些雇

39、员有共同的数据:名字、每小时的工资,也有一些共同的操作:数据成员初始化、读雇员的数据成员及计算雇员的工资。但是,他们也有不同。例如,管理人员除有这些共同的特征外,有可能付固定薪水,主管除有管理人员的共同特征外,还有其他物质奖励等。3 种雇员中,管理人员可以看作普通雇员的一种,而主管又可以看作管理人员的一种。我们很容易想到使用类继承来实现这个问题:普通雇员作为基类,管理人员类从普通雇员类中派生,而主管人员类又从管理人员类中派生。 下面的程序 1完成上述各个类的定义,并建立了 3个雇员(一个普通雇员、一个管理人员和一个主管)的档案,并打印出各自的工资表。将“程序 1”中的成员函数定义为内联函数,p

40、ay 成员函数定义为虚函数,重新完成上述要求。 【程序 1】 /普通雇员类 class Employee public: Employee(char *theName, float thePayRate); char *getName0 const; float getPayRate0 const; float pay,(float hours Worked) eonst; protected: ehar *name; /雇员名称 float payRate; /薪水等级 ; Employee:Employee(char *theName, float thePaRate) name = th

41、e 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; class Manager: public Employee public: /is Salaried 付薪文方式:true 付薪固定工资,false 按小时付薪 Manager(char *the Na

42、me, 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) : Employee(theName, thePayRate) salaried = isSalaried; bool Manager:getSalaried0 eonst return salaried; float Manager:pay(float hoursWorked) eonst if (sala

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1