类的简单运用

原创 2018年04月17日 19:18:43
//要求:公司有四个职务:经理:基本工资(8000) 技工:时薪100  销售:销售额的百分之四 销售经理:基本工资(4000)以及销售额的百分之二
//用到:类,多继承,虚继承,序函数&抽象类,随机变量

#include <iostream>
using namespace std;
#include <cstring>
#include <time.h>


class employee          //员工类
{
protected:
    string m_name;      //姓名
    static int m_num;   //员工编号,由一千开始增加
    int m_id;           //员工个人编号
    double m_salary;     //   薪水
public:
    employee(string name);
    virtual double Getsalary() = 0; // 虚函数 ,薪水
    virtual void show() = 0;        //虚函数 ,显示员工信息


};
int employee::m_num = 1000;         //员工编号赋初值由一千开始
employee::employee(string name)     //构造函数赋值,员工姓名,员工ID
{
    m_name = name;
    m_num ++;
    m_id = m_num;
}
class Manager:virtual public employee       //经理虚继承员工类,避免下面销售经理在继承经理和销售的类时,出现二义性
{
protected:
    int m_BS;                               //基本工资 
    int m_ES;                               //额外工资
public:
    Manager(string name,int bs,int es = 0);     //构造函数赋值,姓名,基本工资,额外工资
    double Getsalary();
    void show();
};
Manager::Manager(string name,int bs,int es):employee(name)
{
    m_BS = bs;
    m_ES = es;
}
void Manager::show()
{
    cout <<"姓名: "<< m_name << "  工号: " << m_id << "  职位: 经理" <<"  薪水:"<< m_salary<< endl; 
}
double Manager::Getsalary()
{
    m_salary =  m_BS + m_ES;
    return m_salary;
}
class Sale:virtual public employee              //销售类,虚继承员工类
{
protected:
    int m_SS;                                   //销售额
    static double m_exo;                        //销售经理提成额度累积量
public:
    Sale(string name,int ss = 0);               //销售构造函数,姓名,销售额
    double Getsalary();
    void show();
};
double Sale::m_exo = 0;                     //静态变量赋初值
void Sale::show()
{
    cout << "姓名: " << m_name << "  工号: " << m_id << "  职位: 销售" << "  薪水: " << m_salary << endl;
}
Sale::Sale(string name,int ss ):employee(name)  
{
    m_SS = ss;
}
double Sale::Getsalary()
{
    m_exo += 0.02*m_SS;
    m_salary = 0.04*m_SS;
    return m_salary;
}
class SaleManager:public Manager,public Sale            //销售经理,继承销售和经理类
{
public:
    SaleManager(string name,int bs,int ss = 0,int es = 0); //构造函数赋值,姓名,基本工资,销售额,额外工资(销售的提成)
    double Getsalary();    
    void show();
};
SaleManager::SaleManager(string name,int bs,int ss ,int es ):Sale(name,ss),Manager(name,bs,es),employee(name)
{
    
}
void SaleManager::show()
{
    cout << "姓名: " << m_name << "  工号: "<< m_id << "  职位:  销售经理" << "  薪水: " << m_salary << endl;
}
double SaleManager::Getsalary()
{
    m_salary =  m_BS + m_ES + m_exo;
    return m_salary;
}


class Technician:public employee                //技工,继承员工类
{
protected:
   // int m_HS;
    int m_H;                                    //定义变量工时,
public:
    Technician(string name,int hs);             //构造函数,姓名,工时
    double Getsalary();
    void show();
};
Technician::Technician(string name,int h):employee(name)
{
    //m_HS = hs;
    m_H = h;
}
double Technician::Getsalary()
{
    m_salary = m_H *100;
    return m_salary;
}
void Technician::show()
{


    cout << "姓名: " << m_name << "  工号: " << m_id <<"  职位: 技工" << "  薪水: " << m_salary << endl;


}
    int main(int argc, char **argv)
{
    //srand((unsigned int ) time(NULL));   //设置随机函数种子     
    //int i = rand() % 200000;              //可以设置随机数来方便手动输入
    //这里简单一点手动赋值
    Manager s1("陶吉吉",8000);
    Technician s2("章吉吉",240);
    Sale s3("小胖纸" , 150000);
    Sale s4("帅哥卫",200000);
    SaleManager s5("小陶",4000);
    s1.Getsalary();
    s2.Getsalary();
    s3.Getsalary();
    s4.Getsalary();
    s5.Getsalary();
    s1.show();
    s2.show();
    s3.show();
    s4.show();
    s5.show();
    return 0;
}

实战COM(07)----COM+的特性之建立者字符串

本文欢迎转载,唯请注明出处及作者 blackcolor@263.net---------------------------------------------------              ...
  • blackcolor
  • blackcolor
  • 2001-08-03 10:12:00
  • 780

C++一个类的简单继承

#include using namespace std; class rectangle{ public: void SetParameter() { coutwidth; }...
  • Jerry_ICCAS
  • Jerry_ICCAS
  • 2016-04-25 23:49:27
  • 376

练习代码(三)复用类

小白做课后习题,有不对的地方或者不好的地方多多包容。 1.创建两个带有缺省构造器(空参数列表)的类A和类B。从A中继承产生一个名为C的信类,并在C内创建一个B类的成员。不要给C编写构造器。创建一...
  • lb_383691051
  • lb_383691051
  • 2015-06-20 17:42:19
  • 1027

使用JDBC开发简单的数据库应用

1、JDBC简介 JDBC是Java应用程序与数据库进行连接的“桥梁”。它的设计目标是跨平台,也即是说只要你安装了对应数据库的驱动程序,你就可以通过实现 JDBC的驱动程序连接多种数据库...
  • sinat_16244265
  • sinat_16244265
  • 2016-12-03 18:52:54
  • 451

c++类的例子

  • 2014年06月03日 10:53
  • 3.57MB
  • 下载

医院挂号系统待机界面

  • 2009年11月29日 15:08
  • 1KB
  • 下载

File类的简单运用

在前面的例子当中,简单叙述了Path类和File类,而File类是我们在应用程序开发过程中经常的运用到的。因此,下面简单描述一下File类的文件读取方法使用,以及一些字符编码的理解。1.File.Re...
  • qq_21282161
  • qq_21282161
  • 2015-05-04 00:36:41
  • 182

JACK_C#_类的简单运用

//角色位置坐标         struct Position2D{             public int X;             public int Y;         }  ...
  • JACKSHINE2
  • JACKSHINE2
  • 2017-12-05 11:17:33
  • 40

BufferReader类的简单运用

System.in为打印流的一个实例化对象,InputStreamReader类的作用是将外部的字节数据转换为字符数据输入到程序内存当中。 BufferedReader类的作用则是用于将缓冲当中的数...
  • qq_34970891
  • qq_34970891
  • 2017-02-13 22:07:24
  • 1423

C#_类的简单运用

//角色位置坐标 public struct Position2D{ public int X; public int Y...
  • Cooolcyh
  • Cooolcyh
  • 2017-12-16 15:58:40
  • 54
收藏助手
不良信息举报
您举报文章:类的简单运用
举报原因:
原因补充:

(最多只允许输入30个字)