您的位置:首页 > 编程语言 > C语言/C++

Day45、《c++小项目----薪酬计算》、正则表达式

2016-10-11 17:55 288 查看
《c++小项目----薪酬计算》

                     普通员工

                   /     |     \

               技术员  经理  销售员

                   \    / \    /

                 技术主管  销售主管

所有员工:姓名、工号、职位级别、出勤率(输入出勤天数/23)

技术员:研发津贴(元/小时)

经理:绩效奖金

销售员:提成比率

 

薪资:基本工资+绩效工资

基本工资:职位级别对应固定的额度*出勤率

绩效工资:因职务而异(用多态)

 

普通员工绩效工资:基本工资的一半

经理的绩效:绩效奖金*绩效因数(输入)

技术员绩效工资:研发津贴*工作小时数*进度因数(输入)

销售员绩效工资:销售额(输入)*提高比率

技术主管绩效工资:(技术员绩效工资+经理的绩效工资)/2

销售主管绩效工资:(销售员绩效工资+经理的绩效工资)/2

 

实例化员工对象,打印员工信息,输入必要数据,计算薪资并计算

 

vi employSalary:

#include<iostream>

using namespace std;

//普通员工

class Employee{

public:

   Employee(const string& name,int id,int grade):

       m_name(name),m_id(id),m_grade(grade){}

   void printInfo(void){//打印员工信息

       printBasic();//员工的公有信息

       printExtra();//员工的特有信息绩效工资

    }

   void paysalary(void){//计算员工工资

       cout<<"工资:"<<calBasic()+calMerit()<<endl;//基本工资加

    }

protected:

   double m_attend;//出勤率

private:

   double calBasic(void){//基本工资计算

       cout<<"出勤天数:";

       int attend;

       cin>>attend;

       m_attend=attend/23.0;

        m_basic=s_grades[m_grade-1]*m_attend;

       return m_basic;

    }

   virtual double calMerit(void){//绩效工资计算

       return m_basic/2;

    }

   void printBasic(void){

       cout<<"姓名="<<m_name<<endl;

       cout<<"工号="<<m_id<<endl;

       cout<<"职级="<<m_grade<<endl;

    }

   virtual void printExtra(void){

       cout<<"职位:普通员工"<<endl;

    }

   string m_name;

   int m_id;

   int m_grade;//职位级别

   double m_basic;//基本工资

   static double s_grades[8];//职级薪资表

};

double Employee::s_grades[]={1000,2000,3000,

       4000,5000,6000,7000,8000};

//技术员类

class Technician:virtual public Employee{

public:

   Technician(const string& name,int id,int grade,double allow):

       Employee(name,id,grade),m_allow(allow){}

protected:

   void printExtra(void){

       cout<<"职位:技术员"<<endl;

       cout<<"研发津贴:"<<m_allow<<endl;

    }

   double calMerit(void){

       cout<<"输入进度因数:";

       double factor;

       cin>>factor;

       //小时数*研发津贴*进度因数

       return 8*26*m_attend*m_allow*factor;

    }

private:

   double m_allow;//研发津贴

};

//经理

class Manager:virtual public Employee{

4000
public:

   Manager(const string& name,int id,int grade,double bonus):

       Employee(name,id,grade),m_bonus(bonus){}

protected:

   void printExtra(void){

       cout<<"职位:经理"<<endl;

       cout<<"绩效奖金"<<m_bonus;

    }

   double calMerit(void){

       cout<<"输入绩效因数";

       double factor;

       cin>>factor;

       //绩效奖金*绩效因数*出勤率

       return m_bonus*factor*m_attend;

    }

private:

   double m_bonus;//绩效奖金

};

//技术主管

class TechMngr:public Technician,publicManager{

public:

   TechMngr(const string& name,int id,int grade,double allow,doublebonus):

       Technician(name,id,grade,allow),

       Manager(name,id,grade,bonus),

       Employee(name,id,grade){}

private:

    void printExtra(void){

       Technician::printExtra();

       Manager::printExtra();

    }

   double calMerit(void){

       //技术员+经理/2

       return (Technician::calMerit()+

           Manager::calMerit())/2;

    }

};

int main(void){

   Employee emp("张飞",10010,3);

   emp.printInfo();

   emp.paysalary();

   cout<<"=============="<<endl;

   Technician tech("孔明",10011,5,20);

   tech.printInfo();

   tech.paysalary();

   cout<<"=============="<<endl;

   Manager mngr("刘备",10000,5,8000);

   mngr.printInfo();

   mngr.paysalary();

   cout<<"=============="<<endl;

   TechMngr techmngr("曹操",11111,6,20,8000);

   techmngr.printInfo();

   techmngr.paysalary();

   return 0;

}

tarena@tarena-virtual-machine:~/project$./a.out

姓名=张飞

工号=10010

职级=3

职位:普通员工

出勤天数:25

工资:4891.3

==============

姓名=孔明

工号=10011

职级=5

职位:技术员

研发津贴:20

出勤天数:26

输入进度因数:3

工资:19760

==============

姓名=刘备

工号=10000

职级=5

职位:经理

绩效奖金8000出勤天数:25

输入绩效因数5

工资:48913

==============

姓名=曹操

工号=11111

职级=6

职位:技术员

研发津贴:20

职位:经理

绩效奖金8000出勤天数:28

输入进度因数:5

输入绩效因数3

工资:34573.9

 

概念:

云平台:多台机器组成的一个计算机集群

 

多文件联合编译:

qmake –project 生成 .pro文件

qmake .pro文件生成Makefile   

 

正则表达式:

href=”\s*\([^>”]*\)\s*”

\s --  匹配任何空白字符(空格、制表、换行等)

* --  重复前一个匹配任意次

\(  -- 子表达式左边界

\ ) -- 字表达式右边界

[^>”] -- 匹配任何不是空格、大于号和双引号的字符

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: