答案:// 源程序///////////////////欢迎使用中江工资管理系统////////////////////////////
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
// *********************************************************************
// 雇员类定义
class employee
{
protected:
char name[20]; // 姓名
int id; // 工号
double bp,bo,ta,ap; // 基本工资、资金、缴税、实发工资
public:
employee (); // 构造函数
~employee (); // 析构函数
void SetName (char* tname); // 设置姓名
void SetId (int tid); // 设置工号
void SetBasicPay (double tbp); // 设置基本工资
void SetBonus (double tbo); // 设置资金
char* GetName (); // 获取姓名
int GetId (); // 获取工号
double GetBasicPay (); // 获取基本工资
double GetBonus (); // 获取奖金
double GetTax (); // 获取缴税
double GetAccumPay (); // 获取实发工资
};
// -----------------------------------------------------------------------
// 雇员类的实现
employee::employee ()
{
id = 0;
bp = 0.0;
bo = 0.0;
ta = 0.0;
ap = 0.0;
}
employee::~employee ()
{}
void employee::SetName (char* tname)
{ strcpy(name,tname); }
void employee::SetId (int tid)
{ id=tid; }
void employee::SetBasicPay (double tbp)
{ bp=tbp; }
void employee::SetBonus (double tbo)
{ bo=tbo; }
char* employee::GetName ()
{ return name; }
int employee::GetId ()
{ return id; }
double employee::GetBasicPay ()
{ return bp; }
double employee::GetBonus ()
{ return bo; }
double employee::GetTax () // 缴税为基本工资的5%
{ return bp*0.05; }
double employee::GetAccumPay () // 实发工资=基本工资+奖金-缴税
{ return bp+bo-ta; }
// ************************************************************************
// 管理界面类定义
class EMM
{
private:
employee Array[100];
int n; // 员工人数
void InfEmployee (int count); // 显示员工基本信息
public:
EMM (); // 构造函数
~EMM (); // 析构函数
void AddEmployee (); // 增加新员工
void DeleteEmployee (); // 删除员工
void IndexEmployee (); // 查询员工
void OutputEmployee (); // 打印员工信息
};
// -------------------------------------------------------------------------
// 管理界面的实现
EMM::EMM ()
{ n=0; }
EMM::~EMM ()
{}
void EMM::AddEmployee () // 增加新员工
{
char tname[20];
int tid;
double tbp,tbo;
cin >> tname >> tid >> tbp >> tbo;
if(n>=50)
cout << "增加员工信息失败!\n";
else
{
Array[n].SetName (tname);
Array[n].SetId (tid);
Array[n].SetBasicPay (tbp);
Array[n].SetBonus (tbo);
}
++n;
}
void EMM::DeleteEmployee () // 删除员工
{
int tid;
char ch;
cout << "请输入待删除员工的工号: " << ends;
cin >> tid;
for (int j = 0; j < n; j++)
if (tid == Array[j].GetId())
{
InfEmployee (j);
cout << "请确认是否删除该员工 y/n ? : ";
cin >> ch;
if (ch == 'Y' || ch == 'y')
{
--n;
cout << "工号" << tid << "的员工已被删除!" << endl;
}
goto loop;
}
cout << "该员工" << tid << "不存在!" << endl;
loop:;
}
void EMM::IndexEmployee () // 查询员工
{
int i, j, tid;
char tname[20];
cout << "请选择查询方式:1、工号 2、姓名 :";
cin >> i;
if (i == 1)
{
cout << "请输入待查找的员工的工号:"<<ends;
cin >> tid;
for (j = 0; j < n; j++)
if (tid == Array[j].GetId())
{
InfEmployee (j);
goto loop;
}
}
if (i == 2)
{
cout << "请输入待查找的员工的姓名:"<<ends;
cin >> tname;
for( j = 0; j < n; j++)
if (strcmp(tname,Array[j].GetName()) == 0)
{
InfEmployee (j);
goto loop;
}
}
cout << "该员工不存在!" << endl;
loop: ;
}
void EMM::OutputEmployee () // 打印员工信息
{
cout << "所有员工信息列表:" <<endl;
cout << "姓名\t工号\t基本工资\t奖金\t缴税\t实发工资" << endl;
for (int i = 0; i < n; i++)
{
cout << Array[i].GetName() << '\t' << Array[i].GetId() << '\t';
cout << Array[i].GetBasicPay() << "\t\t" << Array[i].GetBonus() << '\t';
cout << Array[i].GetTax() << '\t' << Array[i].GetAccumPay() <<endl;
}
}
void EMM::InfEmployee (int count)
{
cout << "姓名: " << Array[count].GetName() << endl;
cout << "工号: " << Array[count].GetId() << endl;
cout << "基本工资: " << Array[count].GetBasicPay() << endl;
cout << "奖金: " << Array[count].GetBonus() <<endl;
cout << "缴税: " << Array[count].GetTax() <<endl;
cout << "实发工资: "<< Array[count].GetAccumPay() <<endl;
}
// *********************************************************************
// 界面信息
void Infor ()
{
cout << "\n===欢迎使用中江工资管理系统===" << endl;
cout << "\t0:增加新员工" << endl;
cout << "\t1:删除员工" << endl;
cout << "\t2:查询员工" << endl;
cout << "\t3:打印员工信息 " << endl;
cout << "\t4:退出系统" << endl;
cout << "请选择您的功能操作:" << ends;
}
// ---------------------------------------------------------------------
int main()
{
EMM a;
int i=0, c=1;
while (1)
{
Infor();
cin >> i;
system("cls");
cout << endl;
switch(i)
{
case 0:
int count;
cout << "请输入要添加新员工的人数n: ";
cin >> count;
cout << "序号 姓名 工号 基本工资 奖金" << endl;
while (count--)
{
cout << "NO." << c <<ends;
a.AddEmployee();
++c;
}
cout << "成功增加员工信息!\n";
break;
case 1:
a.DeleteEmployee();
break;