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

c++工资管理系统

2013-07-28 21:14 381 查看
用类的方法

描述:

根据是否为经理和普通职员发工资

如果是经理,则工资为10000加上入职时间乘以5000

反之则为2000加上入职时间 乘以200

代码如下:

//SalarySystem.h

#pragma once

#include <string>
#include <iostream>

using namespace std;

const int MAX_COUNT = 1000;

// 员工类即基类
class Emplyee
{
public:
Emplyee(string strName, int nYears)
: m_strName(strName) , m_nYears(nYears)
{

};

public:
virtual int GetSalary() = 0;

string GetName()
{
return m_strName;
}

protected:
int m_nYears;
string m_strName;
};

//经理类
class Manager : public Emplyee
{
public:
Manager(string strName, int nYears)
: Emplyee(strName, nYears) //利用基类的构造函数,完成对属性的初始化工作
{

};
public:
virtual int GetSalary()
{
return 5000*m_nYears+10000;
}
};

//普通员工类
class Worker : public Emplyee
{
public:
Worker(string strName , int nYears)
: Emplyee(strName, nYears)
{

};
public:
virtual int GetSalary()
{
return 200*m_nYears+2000;
}
};

class SalarySystem
{
public:
SalarySystem(void);
~SalarySystem(void);

public:
void InputEmplyee(void);

void DisplaySalary(void);

double GetAverSalary(void);

private:
int m_nCount; //当前员工数目

Emplyee* m_arrEmplyee[MAX_COUNT];
};

// SalarySystem.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "SalarySystem.h"

SalarySystem::SalarySystem(void)
{
m_nCount = 0;
}
SalarySystem::~SalarySystem(void)
{
for (int i=0;i<m_nCount;++i)
{
Emplyee* pEmplyee = m_arrEmplyee[i];
delete pEmplyee;
m_arrEmplyee[i] = NULL;
}
}

void SalarySystem::InputEmplyee(void)
{
cout<<"请输入员工信息\n"<<"格式:\n员工姓名\t入职时间\t是否为经理级别\n"<<endl;

string strName = "";
int nYears = 0;
bool bManager = false;
int nIndex = 0;

while (nIndex<MAX_COUNT)
{
cin.clear();
cin>>strName>>nYears>>bManager;
if("end" == strName)
break;

Emplyee* pEmplyee = NULL;

if(bManager)
{
pEmplyee = new Manager(strName,nYears);

}
else
{
pEmplyee = new Worker(strName,nYears);
}

m_arrEmplyee[nIndex]=pEmplyee;

++nIndex;

}
m_nCount = nIndex;
}

double SalarySystem::GetAverSalary()
{
int nTotal = 0;
for (int i=0;i<m_nCount;++i)
{
Emplyee* pEmplyee = m_arrEmplyee[i];
nTotal += pEmplyee->GetSalary();
}
return(double)nTotal/(m_nCount);
}

void SalarySystem::DisplaySalary(void)
{
cout<<"工资管理系统"<<endl;
cout<<"当前员工总数:"<<m_nCount<<"\n平均工资是:"<<GetAverSalary()<<endl;
cout<<"员工具体工资信息如下:"<<endl;
for (int i=0;i<m_nCount;++i)
{
Emplyee* pEmplyee = m_arrEmplyee[i];
cout<<pEmplyee->GetName()<<"\t"<<pEmplyee->GetSalary()<<endl;
}
}

int _tmain(int argc, _TCHAR* argv[])
{
SalarySystem nSalarySys;
nSalarySys.InputEmplyee();
nSalarySys.DisplaySalary();

return 0;
}

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