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 -- 匹配任何空白字符(空格、制表、换行等)
* -- 重复前一个匹配任意次
\( -- 子表达式左边界
\ ) -- 字表达式右边界
[^>”] -- 匹配任何不是空格、大于号和双引号的字符
普通员工
/ | \
技术员 经理 销售员
\ / \ /
技术主管 销售主管
所有员工:姓名、工号、职位级别、出勤率(输入出勤天数/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 -- 匹配任何空白字符(空格、制表、换行等)
* -- 重复前一个匹配任意次
\( -- 子表达式左边界
\ ) -- 字表达式右边界
[^>”] -- 匹配任何不是空格、大于号和双引号的字符
相关文章推荐
- C++执行正则表达式计算之regex_replace
- Regular Expression 正则表达式-4 (C++)
- 正则表达式语法 (转,开发项目一定要看,用到正则表达式的地方很多的)
- 用C++模板实现正则表达式
- C++ boost 正则表达式用法
- [C++] [正则表达式] 一个不错的正则表达式引擎4C++
- C++计算四则表达式的模板
- C/C++中使用正则表达式
- Regular Expression 正则表达式-3 (C++)
- C++ 正则表达式
- C++一个不错的正则表达式引擎(二)
- 利用正则表达式计算含有中文的字符串长度
- 用C++.NET创建XML文档(用正则表达式和字符串类两种方法匹配)
- 由于自己开发的项目需要正则表达式,这里记录一下,以便查阅
- TPL: 一个新的C++正则表达式(regex)库
- Regular Expression 正则表达式-4 (C++)
- 利用正则表达式计算含有中文的字符串长度
- c++正则表达式,python
- 用 C++ 实现的加、减、乘、除表达式计算
- C++ boost 正则表达式用法