当前位置:文档之家› 类的继承与派生综合题

类的继承与派生综合题

1. 类的继承与派生综合题1题目描述定义Staff(员工)类,由Staff分别派生出Saleman(销售员)类和Manager(经理)类,再由Saleman(销售员)类和Manager(经理)类采用多重继承方式派生出新类SaleManager(销售经理)类。

要求:a.在Staff类中包含的数据成员有编号(num)、姓名(name)、出勤率(rateOfAttend)、基本工资(basicSal)和奖金(prize)。

在Saleman类中还包含数据成员:销售员提成比例(deductRate)和个人销售额(personAmount),在Manager类中还包含数据成员:经理提成比例(totalDeductRate)和总销售额(totalAmount)。

在SaleManager类中不包含其他数据成员。

b.各类人员的实发工资公式如下:员工实发工资=基本工资+奖金*出勤率销售员实发工资=基本工资+奖金*出勤率+个人销售额*销售员提成比例经理实发工资=基本工资+奖金*出勤率+总销售额*经理提成比例销售经理实发工资=基本工资+奖金*出勤率+个人销售额*销售员提成比例+总销售额*经理提成比例c.每个类都有构造函数、输出基本信息函数(Output)和输出实发工资函数(OutputWage)。

主函数如下:int main(){Salemanobjsale(101101, "LD", 0.88f, 1200, 800, 0.05f, 10000);Manager objmana(101102, "NXG", 0.90f, 2500, 1000, 0.10f, 20000);SaleManagerobjsalemana(101103, "HDY", 0.99f, 3500, 2000, 0.20f, 100000, 0.20f,150000);objsale.Output();cout<< "销售员的实发工资:" << " ";cout<<objsale.OutputWage(0.88f, 1200, 800, 0.05f, 10000) <<endl;cout<<endl;objmana.Output();cout<< "经理的实发工资:" << " ";cout<<objmana.OutputWage(0.90f, 2500, 1000, 0.10f, 20000) <<endl;cout<<endl;objsalemana.Output();cout<< "销售经理的实发工资:" << " ";cout<<objsalemana.OutputWage(0.99f, 3500, 2000, 0.20f, 10000, 0.20f, 150000) <<endl;cout<<endl;return 0;}输入描述略输出描述略样例输入略样例输出员工的基本信息:编号姓名出勤率基本工资奖金101101 LD 0.88 1200 800提成比例:0个人销售额:10000销售员的实发工资: 2403员工的基本信息:编号姓名出勤率基本工资奖金101102 NXG 0.9 2500 1000提成比例:0.1总销售额:20000经理的实发工资: 5399员工的基本信息:编号姓名出勤率基本工资奖金101103 HDY 0.99 3500 2000提成比例:0个人销售额:100000提成比例:0.2总销售额:150000销售经理的实发工资: 374802. 类的继承与派生综合题2题目描述创建一个银行账户的继承层次,表示银行的所有客户账户。

所有的客户都能在他们的银行账户存钱,取钱,但是账户也可以分成更具体的类型。

例如,一方面存款账户SavingsAccount依靠存款生利,另一方面支票账户CheckingAccount对每笔交易(即存款或取款)收取费用。

创建一个类层次,以Account作为基类,SavingsAccount和CheckingAccount 作为派生类。

基类Account应该包括一个double类型的数据成员balance,表示账户的余额。

该类应当提供三个成员函数。

成员函数credit可以向当前余额加钱;成员函数debit负责从账户中取钱,并且保证账户不会被透支。

如果提取金额大于账户金额,函数将保持balance不变,并打印信息“Debit amount exceeded account balance”;成员函数getBalance则返回当前balance的值。

派生类SavingsAccount不仅继承了基类Account的功能,而且还应提供一个附加的double类型数据成员interestrate表示这个账户的比率(百分比)。

SavingsAccount的构造函数应接受初始余额值和初始利率值,还应提供一个public成员函数calculateInterest,返回代表账户的利息的一个double值,这个值是balance和interestrate的乘积。

注意:类SavingsAccount应继承成员函数credit和debit,不需要重新定义。

派生类CheckingAccount不仅继承了基类Account的功能,还应提供一个附加的double类型数据成员表示每笔交易的费用。

CheckingAccount的构造函数应接受初始余额值和交易费用值。

类CheckingAccount需要重新定义成员函数credit 和debit,当每笔交易完成时,从balance中减去每笔交易的费用。

重新定义这些函数时应用(即调用)基类Account的这两个函数来执行账户余额的更新。

CheckingAccount的debit函数只有当钱被成功提取时(即提取金额不超过账户余额时)才应收取交易费。

提示:定义Account的debit函数使它返回一个bool 类型值,表示钱是否被成功提取。

然后利用该值决定是否需要扣除交易费。

如果取款或存款后,账户的余额小于每笔交易的费用,则废弃这次交易,使账户余额恢复到取款或存款之前的值,并打印“Transaction fee exceeded account balance while debiting”或“Transaction fee exceeded account balance while crediting”。

实验要求:要求将每个类的定义和实现分开在不同的文件里,并严格按照上述名称定义成员变量和成员函数,所有类的成员变量均定义为private的。

当这个继承层次中的类定义完毕后,编写一个主程序,能够生成不同的账户对象,并调用成员函数。

主函数代码:int main(){SavingsAccount savings(100, 3); //余额100元,利息3%CheckingAccount checkings1(100, 5); //余额100元,交易费5元CheckingAccount checkings2(50, 5); //余额50元,交易费5元cout<< "\nSavings Account:" <<endl;savings.debit(200);savings.debit(40);savings.credit(50);savings.debit(49);savings.debit(43);savings.credit(1);savings.credit(savings.calculateInterest());cout<< fixed <<setprecision(2);cout<< " 账户的余额为:" <<savings.getBalance() <<endl;cout<< "\nChecking Account 1:" <<endl;checkings1.debit(200);checkings1.debit(40);checkings1.credit(50);checkings1.debit(49);checkings1.debit(43);checkings1.credit(1);cout<< fixed <<setprecision(2);cout<< " 账户的余额为:" << checkings1.getBalance() <<endl;cout<< "\nChecking Account 2:" <<endl;checkings2.debit(200);checkings2.debit(40);checkings2.credit(50);checkings2.debit(49);checkings2.debit(43);checkings2.credit(1);cout<< fixed <<setprecision(2);cout<< " 账户的余额为:" << checkings2.getBalance() <<endl;return 0;}输入描述略输出描述略样例输入无样例输出Savings Account:Debit amount exceeded account balance账户的余额为:19.57Checking Account 1:Debit amount exceeded account balanceTransaction fee exceeded account balance while debiting账户的余额为:42.00Checking Account 2:Debit amount exceeded account balanceTransaction fee exceeded account balance while debitingTransaction fee exceeded account balance while crediting 账户的余额为:2.00。

相关主题