一、设计题目
职工工资表
二、设计目的
设计一个职工工资表,能够通过菜单实现简单的信息录入与显示操作。注意对象数组的使用,利用赋值兼容规则实现不同类型的员工的信息存储,并使用虚函数完成对于不同类型员工的工资计算任务。
三、设计要求
使用继承的方法,设计5个类,代表四类员工,利用多态性实现信息的输入与输出。
四、设计思想
如有帮助,请采纳。
参考一下:
#include<iostream>
#include<string>
using namespace std;
#define MAX 10
//员工工资管理
class Employee
{
public:
Employee(string name,int year):m_strName(name),m_nYear(year){} //构造函数
virtual ~Employee(){}
string GetName()const{return m_strName;} //获取姓名
int GetYear()const{return m_nYear;} //获取工龄
virtual int GetSalary() = 0; //获取工资
private:
string m_strName;
int m_nYear;
};
class Worker:public Employee
{
public:
Worker(string name,int year):Employee(name,year){}
~Worker(){}
virtual int GetSalary(){return 12000;} //此处未给出具体工资算法,可进行修改
};
class Manager:public Employee
{
public:
Manager(string name,int year):Employee(name,year){}
~Manager(){}
virtual int GetSalary(){return 13000;} //此处未给出具体工资算法,可进行修改
};
class EmployeeSalarySystem
{
public:
EmployeeSalarySystem(){m_nCount = 0;}
~EmployeeSalarySystem()
{
while(--m_nCount >= 0)
{
delete employee[m_nCount];
employee[m_nCount] = NULL;
}
}
void InPutEmployee()
{
string name;
int year; //工龄
int flag; //职位标志位,Worker:0;Manager:1
cout<<"请输入员工姓名与工龄"<<endl;
cin>>name>>year;
cout<<"请输入员工职位,Worker:0;Manager:1;"<<endl;
cin>>flag;
if(flag == 0)
{
employee[m_nCount] = new Worker(name,year);
++m_nCount;
}
if(flag == 1)
{
employee[m_nCount] = new Manager(name,year);
++m_nCount;
}
}
void ShowEmployee()
{
for(int i=0;i<m_nCount;i++)
cout<<"姓名:"<<employee[i]->GetName()<<" 工龄:"<<employee[i]->GetYear()<<" 工资:"<<employee[i]->GetSalary()<<endl;
}
private:
Employee *employee[MAX]; //上方对MAX进行了宏定义
int m_nCount;
};
void main()//主函数仅为进行调试,具体还可进行改进
{
EmployeeSalarySystem ess;
ess.InPutEmployee();
ess.InPutEmployee();
ess.InPutEmployee();
ess.ShowEmployee();
}