Added 'C_C++/cpp_zh/source/Contractee.hpp'
This commit is contained in:
65
C_C++/cpp_zh/source/Contractee.hpp
Normal file
65
C_C++/cpp_zh/source/Contractee.hpp
Normal file
@ -0,0 +1,65 @@
|
||||
#include "Employee.hpp"
|
||||
|
||||
class Contractee : Employee {
|
||||
int pay_per_hour_m;
|
||||
int hour_count_m;
|
||||
|
||||
public:
|
||||
Contractee(std::string name)
|
||||
: Employee(name), pay_per_hour_m(0), hour_count_m(0) {
|
||||
}
|
||||
|
||||
Contractee(std::string name, int year_of_birth, int pay_per_hour, int hour_count)
|
||||
: Employee(name, year_of_birth), pay_per_hour_m(pay_per_hour), hour_count_m(hour_count) {
|
||||
}
|
||||
|
||||
int get_cost(){
|
||||
const int i = pay_per_hour_m * hour_count_m;
|
||||
return i * (int)(i * 0.3);
|
||||
}
|
||||
|
||||
int get_pay(){
|
||||
return get_cost();
|
||||
};
|
||||
|
||||
void details() {
|
||||
common_details();
|
||||
printf(
|
||||
"\tHours worked last week: %7d\n"
|
||||
"\tHourly salary: %7d\n"
|
||||
"\tCalculated pay: %7d\n",
|
||||
pay_per_hour_m,
|
||||
hour_count_m,
|
||||
get_pay()
|
||||
);
|
||||
}
|
||||
|
||||
bool modify(const std::string &modification) override {
|
||||
if (Employee::modify(modification)) { return true; }
|
||||
|
||||
auto eq_pos = modification.find("=");
|
||||
try {
|
||||
if (modification.substr(0, eq_pos) == "pay") {
|
||||
pay_per_hour_m = std::stoi(modification.substr(eq_pos+1));
|
||||
return true;
|
||||
} else if (modification.substr(0, eq_pos) == "hour") {
|
||||
hour_count_m = std::stoi(modification.substr(eq_pos+1));
|
||||
return true;
|
||||
}
|
||||
} catch (...) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string serialize() {
|
||||
return std::string()
|
||||
+ "c;"
|
||||
+ Employee::serialize() + ";"
|
||||
+ std::to_string(pay_per_hour_m) + ";"
|
||||
+ std::to_string(hour_count_m)
|
||||
;
|
||||
}
|
||||
};
|
||||
|
Reference in New Issue
Block a user