#include string
using namespace std;
class Employee
{
string m_name, m_position;
int m_position_level;
int m_year;
int m_allowance;
int m_basic_salary[6], m_gross_salary;
public:
Employee();
Employee(string name,string position, int year);
void Set_Name(string name);
bool Set_Position(string position);
void Set_Year(int year);
string Get_Name() {return m_name;};
string Get_Position() { return m_position; };
int Get_Year() { return m_year; };
int Ger_Salary() { return m_gross_salary; };
int Compute_Salary();
void Print_Result();
};
Employee::Employee()
{
for (int i = 0; i < 6; i++)
m_basic_salary[i] = 2000000 + (i * 500000);
m_allowance = 100000;
}
Employee::Employee(string name, string position, int year)
{
m_name = name, Set_Position(position), m_year = year;
for (int i = 0; i < 6; i++)
m_basic_salary[i] = 2000000 + (i * 500000);
m_allowance = 100000;
}
void Employee::Set_Name(string name)
{
m_name = name;
}
bool Employee::Set_Position(string position)
{
if (position == "사원")
m_position_level = 0;
else if (position == "대리")
m_position_level = 1;
else if (position == "과장")
m_position_level = 2;
else if (position == "차장")
m_position_level = 3;
else if (position == "부장")
m_position_level = 4;
else if (position == "이사")
m_position_level = 5;
else
m_position_level = -1;
if (m_position_level < 0)
return false;
else
m_position = position;
return true;
}
void Employee::Set_Year(int year)
{
m_year = year;
}
int Employee::Compute_Salary()
{
switch (m_year / 5)
{
case 0: m_allowance; break;
case 1: m_allowance *= 5; break;
case 2: m_allowance *= 10; break;
case 3: m_allowance *= 10; break;
case 4: m_allowance *= 20; break;
case 5: m_allowance *= 20; break;
default:m_allowance *= 30; break;
}
return m_gross_salary = m_basic_salary[m_position_level] + 50000 * m_year + m_allowance;
}
void Employee::Print_Result()
{
cout << m_name << " " << m_position << "의 총 근무 년수는 " << m_year << "년입니다.\n";
cout << m_name << " " << m_position << "의 봉급은 " << m_gross_salary << "원입니다.\n\n";
}
int main(void)
{
Employee a[3] = { Employee("홍길동", "과장",17),Employee("장길산","부장",23),Employee("엄꺽정","이사",34)}, *ob = new Employee;
Employee *oa = a;
for (int i = 0; i < 3; i++, oa++)
{
(*oa).Compute_Salary();
(*oa).Print_Result();
}
string name, position;
int year;
cout << "종업원의 이름을 입력하시요. :";
cin >> name;
(*ob).Set_Name(name);
cout << "종업원의 직급을 입력하시요. :";
cin >> position;
while ((*ob).Set_Position(position) == 0)
{
cout << "** 에러발생. 사원, 대리, 과장, 차장, 부장, 이사 중에서 입력하세요 **" << endl << endl;
cout<< "종업원의 직급을 입력하시요. :";
cin >> position;
}
cout << "종업원의 근무 년수을 입력하시요. :";
cin >> year;
(*ob).Set_Year(year);
(*ob).Compute_Salary();
cout <<"\n"<< (*ob).Get_Name() << " " << (*ob).Get_Position() << "의 총 근무 년수는 " << (*ob).Get_Year() << "년입니다.\n";
cout << (*ob).Get_Name() << " " << (*ob).Get_Position() << "의 봉급은 " << (*ob).Ger_Salary() << "원입니다.\n\n";
delete ob;
return 0;
}
