C++学习历程(五)公司职员信息系统(多文件编译)

原创 2018年04月15日 16:57:30

需求:1.一家公司内,有四种职位,经理(Manager),技术人员(Technician,销售(Salesman),销售经理(SalesManager)。
2.每个员工都有自己的工号,工号从1000开始,每多一个人加1。
3.公司:经理:8000,技术人员:100/h,销售:4%*月销售额,销售经理:2%*月总销售额。

1.首先创建.h文件  Staff.h,五种职位,创建五个类。

#ifndef _STAFF_H_
#define _STAFF_H_

#include <iostream>

using namespace std;

class Staff
{
    protected:
        string m_name;
        static int m_num;
        string m_position;
        double m_money;
        int m_id;
        static double m_allmoney;

    public:
        Staff(string name,string position);
        virtual void print() = 0;
};

class Technician:public Staff
{
    int m_time;
    public:
        Technician(string name,int time);
        void print();

};

class Manager : public Staff
{
    public:
        Manager(string name);
        void print();
};

class Salesman : public Staff
{
    public:
        Salesman(string name);
        Salesman(string name,int money);
        void print();
};

class SalesManager : public Salesman
{
    public:
        SalesManager(string name);
        void print();
};



#endif

2.然后床垫.cpp文件,staff.cpp

#include "Staff.h"
#include <iostream>

using namespace std;

int Staff::m_num = 1000;
double Staff::m_allmoney = 0;
Staff::Staff(string name,string position)
{
    m_name = name;
    m_position = position;
    m_num ++;
    m_id = m_num;
}


Technician::Technician(string name,int time) :Staff(name,"Technician")
{
    m_time = time;
    m_money = (100 * m_time);
}

void Technician::print()
{
    cout << "The name is      : " << m_name << endl;
    cout << "The jobnumber is : " << m_num << endl;
    cout << "The position is  : " << m_position << endl;
    cout << "The worktime is  : " << m_time << endl;
    cout << "The monthmoney is: " << m_money << endl;
    cout << "*********************************" << endl;
}


Manager::Manager(string name) : Staff(name,"Manager")
{
    m_money = 8000;
}

void Manager::print()
{
    cout << "The name is      : " << m_name << endl;
    cout << "The jobid is     : " << m_id << endl;
    cout << "The position is  : " << m_position << endl;
    cout << "The monthmoney is: " << m_money << endl;
    cout << "***************************" << endl;
}


Salesman::Salesman(string name):Staff(name,"SalesManager")
{
    
}

Salesman::Salesman(string name,int money) : Staff(name,"Salesman")
{
    m_money = 0.04 * money;
    m_allmoney += money;
}

void Salesman::print()
{
    cout << "The name is      : " << m_name << endl;
    cout << "The jobid is     : " << m_id <<  endl;
    cout << "The position is  : " << m_position << endl;
    cout << "The monthmoney is: " << m_money << endl;
    cout << "***************************" << endl; 
}



SalesManager::SalesManager(string name) : Salesman(name)
{
    m_money = 4000 + 0.02 * m_allmoney;
}

void SalesManager::print()
{
    cout << "The name is      : " << m_name << endl; 
    cout << "The jobid is     : " << m_id << endl;
    cout << "The position is  : " << m_position << endl;
    cout << "The monthmoney is: " << m_money << endl;
    cout << "******************************" << endl;
}

3.创建执行文件main.cpp

#include <iostream>
#include "Staff.h"

using namespace std;

int main(int argc, char **argv)
{
    Manager     a("Laowangba");
    Technician  b("Zhanganliu",rand() % 300);
    Salesman    c("Xiaojibatao",24561);
    Salesman    d("Da jibatao",36541);
    Salesman    f("Old jibatao",54134);
    SalesManager  e("Niu jia");

    a.print();
    b.print();
    c.print();
    d.print();
    e.print();
    f.print();

    return 0;
}

使用适配器模式设计RMI方式的网络应用程序

 使用适配器模式设计RMI方式的网络应用程序为网络应用编写本地Java对象指南 简介:    使用Java的RMI方式编写基于网络的应用程序是非常简单的。然而,使用不是基于网络的类,而且还把它复杂化来...
  • wearebug
  • wearebug
  • 2002-04-01 09:31:00
  • 1122

【c++】公司职员系统

http://wenku.baidu.com/link?url=7W1Xe8gGtxs-uS-idLhFEEtPg_EIwlr7IdicivC5M7aDdy-QsUWjFx-qJz3f2_Zkh51m...
  • whueratsjtuer
  • whueratsjtuer
  • 2015-11-18 09:17:43
  • 171

c++单独编译和c++的多文件组织结构

1.通常当一个程序代码较多较复杂时,我们会ba
  • liuwei271551048
  • liuwei271551048
  • 2014-04-13 14:23:21
  • 3310

C++等级学习历程

学习C++的几个阶段
  • dasgk
  • dasgk
  • 2014-08-24 20:17:40
  • 559

NDK编译.so库

转自http://blog.csdn.net/xiaotanyu13/article/details/7731592 为何要用到NDK? 前段时间,工作中需要用android的应用程序访问an...
  • quzhiyong99
  • quzhiyong99
  • 2013-09-05 18:09:31
  • 3639

Dev-C++ 编译多文件程序的方法

  screen.width-461) window.open(/csim...
  • stonezhuzisgu
  • stonezhuzisgu
  • 2007-09-13 12:09:00
  • 1087

C++多文件编译问题

1: 在查找预编译头使用时跳过解决 环境:VS2008 微软官方解释: Visual C++Concepts: Building a C/C++ ProgramCompiler Warning...
  • gexiaobaoHelloWorld
  • gexiaobaoHelloWorld
  • 2012-02-25 12:49:24
  • 5841

linux下c++文件编译、多文件编译、gdb调试

一. gcc常用编译命令选项 假设源程序文件名为test.c。 1. 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文...
  • yimingsilence
  • yimingsilence
  • 2017-05-15 15:32:01
  • 1852

Dev-C++ 编译多文件程序的方法

  • 2010年04月21日 20:43
  • 869KB
  • 下载

C++学习历程及感受

        大一的寒假时间我们的群里突然来了一个“不速之客”——贺利坚老师,刚开始老师让我们下载蓝墨云班课,我在内心默默地想,这个老师到底想干什么啊?真是有点奇葩了,好好上课不就行吗...
  • angeljing521
  • angeljing521
  • 2016-06-23 10:20:03
  • 1731
收藏助手
不良信息举报
您举报文章:C++学习历程(五)公司职员信息系统(多文件编译)
举报原因:
原因补充:

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