定义Staff(员工)类,由Staff分别派生出Saleman(销售员)类和Manager(经理)类,再由Saleman(销售员)类和Manager(经理)类采用多重继承方式派生出新类SaleMana

2023-10-27

定义Staff(员工)类,由Staff分别派生出Saleman(销售员)类和Manager(经理)类,再由Saleman(销售员)类和Manager(经理)类采用多重继承方式派生出新类SaleManager(销售经理)类
要求:
(1)在Staff类中包含的数据成员有编号(num)、姓名(name)、出勤率(rateOfAttend)、基本工资(basicSal)和奖金(prize)。在Saleman类中还包含数据成员销售员提成比例(deductRate)和个人销售额(personAmount),在Manager类中还包含数据成员经理提成比例(totalDeductRate)和总销售额(totalAmount)。在SaleManager类中不包含其它数据成员。
(2)各类人员的实发工资公式如下:
员工实发工资 = 基本工资 + 奖金 * 出勤率
销售员实发工资 = 基本工资 + 奖金 * 出勤率 + 个人销售额 * 销售员提成比例
经理实发工资 = 基本工资 + 奖金 * 出勤率 + 总销售额 * 经理提成比例
销售经理实发工资 =基本工资 + 奖金 * 出勤率 + 个人销售额 * 销售员提成比例+ 总销售额 * 经理提成比例
(3)每个类都有构造函数、输出基本信息函数(Output)和输出实发工资函数(OutputWage)。

#include <iostream>

using namespace std;

class staff {
public:
    staff(string na, int nu, float rateofatten, int basis, int pri) {
        name = na;
        num = nu;
        rateofattend= rateofatten;
        basicsal = basis;
        prize = pri;
    }
    void output() {
        cout << "员工姓名:" <<name<< endl;
        cout << "编号:" << num << endl;
        cout << "出勤率:" << rateofattend << endl;
        cout << "基本工资:" << basicsal << endl;
        cout << "奖金:" << prize << endl;
    }
    void outputwage(){
        cout << "员工实发工资为:" << basicsal + prize * rateofattend << endl<<endl;
    }

protected:
    int num;
    string name;
    float rateofattend;
    int basicsal, prize;
};
class saleman : public staff {
protected:
    float deductrate;
    int personamount;

public:
    saleman(string na, int nu, float rateofatten, int basis, int pri,int personm,float dedu) :staff(na, nu,  rateofatten,  basis, pri){
        personamount = personm;
        deductrate = dedu;
    }
    void output() {
        staff::output();
        cout << "销售员的个人销售额:" << personamount << endl;
        cout << "销售员的提成比例:" << deductrate << endl;
    }
    void outputwage() {
        cout << "销售员实发工资为:" << basicsal + prize * rateofattend + personamount * deductrate<< endl<<endl;
    }
};

class manager :public staff {
protected:
    float totaldeductrate;
    int totalamout;
public:
    manager(string na, int nu, float rateofatten, int basis, int pri, int to,float tot ) :staff(na, nu, rateofatten, basis, pri) {
        totalamout = to;
        totaldeductrate = tot;
    }
    void output() {
        staff::output();
        cout << "经理的个人销售额:" << totaldeductrate << endl;
        cout << "经理的提成比例:" <<totalamout << endl;
    }
    void outputwage() {
        cout << "经理实发工资为:" << basicsal + prize * rateofattend + totalamout * totaldeductrate << endl << endl;
    }
};

class SaleManager :public saleman, public manager {
public:
    SaleManager(string na, int nu, float rateofatten, int basis, int pri, int personm, float dedu, int to, float tot) :saleman(na, nu, rateofatten, basis,pri, personm,  dedu),manager(na,  nu, rateofatten, basis, pri,  to, tot) {
        
    }
    void output() {
        staff::output();
        cout << "销售员的个人销售额:" << personamount << endl;
        cout << "销售员的提成比例:" << deductrate << endl;
        cout << "经理的销售额:" << totaldeductrate << endl;
        cout << "经理的提成比例:" << totalamout << endl;
    }
    void outputwage() {
        cout << "销售经理实发工资为:" << manager::basicsal + manager::prize * manager::rateofattend + totalamout * totaldeductrate +personamount*deductrate<< endl << endl;
    }
};
int main()
{
    staff obj("zhang",101,0.9, 2000,3000);
    obj.output();
    obj.outputwage();
    saleman obj1("sun", 201, 0.9, 3000, 4000, 10000, 0.1);
    obj1.output();
    obj1.outputwage();
    manager obj2("li", 301, 0.9, 4000, 5000, 20000, 0.1);
    obj2.output();
    obj2.outputwage();
    SaleManager obj3("wu", 401, 1, 5000, 6000, 10000, 0.1, 40000, 0.05);
    obj3.output();
    obj3.outputwage();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

定义Staff(员工)类,由Staff分别派生出Saleman(销售员)类和Manager(经理)类,再由Saleman(销售员)类和Manager(经理)类采用多重继承方式派生出新类SaleMana 的相关文章

  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l

随机推荐

  • 图的基本概念

    图 G Graph V Vertex E Edge 图G由顶点集V和边集E组成 记为G V E 其中V G 表示图G中顶点的有限非空集 E G 表示图G中顶点之间的关系 边 集合 若V V1 V2 Vn 则用 V 表示图G中顶点的个数 也称
  • Android开发之数据储存

    相关文章 Content Provider 内容提供者 Broadcast Receiver 广播接收者 什么是Service 服务 Android提供了五种数据存储方式 分别是 SharePreferences SQLite Conter
  • Android http java.net.SocketException: sendto failed: EPIPE 解决方案

    在项目中Http上传文件时遇到这样一个错误 W System err java net SocketException sendto failed EPIPE Broken pipe Caused by libcore io ErrnoEx
  • 教妹学Java(十):Unicode字符集简介

    大家好 我是沉默王二 一个和黄家驹一样身高 和刘德华一样颜值的程序员 本篇文章通过我和三妹对话的形式来谈一谈 Unicode字符集简介 教妹学 Java 没见过这么有趣的标题吧 语不惊人死不休 没错 本篇文章的标题就是这么酷炫 接受不了的同
  • 深度学习——利用GPU进行训练数据——安装错误的修正

    安装pytorch时 torch cuda is available 返回false 上网查阅资料 输入 conda list 查看从官网下载的pytorch是CPU版本还是GPU版本 显然 我安装的是cup版本 一 卸载pytorch 使
  • tkinter处理附件上传

    python import tkinter as tk from tkinter import filedialog def upload file selectFile tk filedialog askopenfilename entr
  • 包含.cpp .h的文件怎么运行(VisualStudio2013)

    网上下载c 代码 有 cpp h 文件 需要先建立空项目 下面网站中到第4步 再把 cpp文件复制到源文件中 h复制到头文件中 点开 cpp文件 运行ctrl F7 编译 ctrl F5 开始执行 https jingyan baidu c
  • 2.5.1 HMC扫描小型机

    最后更新2021 07 24 HMC扫描小型机是最基本的动作 其前提是HMC与小型机的FSP卡连接正确 由于FSP出厂设置是通过DHCP协议获得自身IP 而HMC自身又设置了DHCP服务功能 所以只要网线接通 HMC就会自动识别到小型机 但
  • 从入门到高手:大数据领域就业和发展指南

    随着秋季校招落下帷幕 网上的各类招聘数据也已分布 大数据行业工程师以平均月薪11 600元领跑全国 成为 超高薪 高大上 的代名词 如果你学的是大数据相关专业 那么恭喜你 你的发展良机来了 如果你想要转行大数据也为时不晚 本文将利用从前程无
  • MySQL之InnoDB主键索引的B+树的高度计算

    文章目录 MySQL之InnoDB主键索引的B 树的高度计算 1 高度为2和3 主键bigint类型 一行记录数据大小1k MySQL之InnoDB主键索引的B 树的高度计算 1 高度为2和3 主键bigint类型 一行记录数据大小1k I
  • 关于static变量的文件作用域

    Scenario A 在一个头文件中都有staic int a 9 然后 此头文件被多个cpp文件包含 不会报错 因为static的变量具有文件作用域 如果去掉static 则报错重复定义错误了 Scenario B 在a cpp中定义两个
  • UVM基础-Phase机制(一)

    一 UVM phase机制基础 1 1 function phase和task phase 在uvm component组件内 注册到factory机制的组件 一般内部都会有运行phase的function或task 保证在验证过程 环境能
  • 华为OD机试Python 【最多几个直角三角形】

    题目 我们手上有N条长度不等的线段 想知道我们能用这些线段组成多少个直角三角形 每条线段只能用一次 一个三角形由三条线段组成 输入 第一行是一个数字T 代表有T组数据 在接下来的T行中 每一行的开始是一个数字N 代表线段的数量 后面跟着N个
  • Flex布局做出自适应页面--语法和案例

    本文发布在 github项目地址 https github com tenadolanter flex layout demo SegmentFault地址 https segmentfault com a 1190000012916949
  • mongo中的一些查询条件

    查询表中学生年级大于20 如下 db getCollection student find age gt 20 lt lt less than lte lt less than or equal to gt gt greater than
  • npm安装uView2.0后无代码提示的解决方法

    npm安装uView2 0后无代码提示的解决方法 两年前 关于uView1 x的时候我也写过一篇类似的文章 但由于各种原因新的uView2 x还没正式用过 今天踩了几个小坑 产生bug 在按照官网的npm下载步骤一步一步来 我个人习惯将np
  • [Leetcode] 13. 罗马数字转整数

    题目描述 罗马数字包含以下七种字符 I V X L C D 和 M 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如 罗马数字 2 写做 II 即为两个并列的 1 12 写做 XII 即为 X II
  • @RefreshScope 配置方法

  • MinGW 和 MSYS 的手动安装与环境配置

    2010 11 18 注 目前MinGW已经提供了自动安装包 尽管如此 这篇文章的内容依然有效 如果需要查看关于MinGW和MSYS自动安装的内容 请移步 http www swingworks net 2010 11 install mi
  • 定义Staff(员工)类,由Staff分别派生出Saleman(销售员)类和Manager(经理)类,再由Saleman(销售员)类和Manager(经理)类采用多重继承方式派生出新类SaleMana

    定义Staff 员工 类 由Staff分别派生出Saleman 销售员 类和Manager 经理 类 再由Saleman 销售员 类和Manager 经理 类采用多重继承方式派生出新类SaleManager 销售经理 类 要求 1 在Sta