<?php
header("Content-Type: text/plain; charset=utf-8");
//b_internal_encoding('utf-8');
class Departament
{
public function __construct($name) //создаём департамент
{
$this->name = $name;
}
public function countEmployees($employees) //число сотрудников в департаменте
{
$countEmployees=0;
foreach ($employees as $employee)
{
$countEmployees+= $employee->quantity;
}
echo "Число сотрудников: {$countEmployees}\n\n\n";
}
public function getSalaryAllEmployees($employees) //посчитать зарплату всех сотрудников этого департамента
{
$totalSalary=0;
foreach ($employees as $employee)
{
$totalSalary+=$employee->getSalary($employee) * $employee->quantity;
}
echo "Общая Зарплата по этому департаменту:".round($totalSalary)."\n";
return $totalSalary;
}
public function getCoffeAll($employees) //расходы на кофе по этому департаменту
{
$countCoffe = 0;
foreach ($employees as $employee)
{
$countCoffe+= $employee->getCoffe($employee) * $employee->quantity;
}
echo "Кол-во выпитого коффе = {$countCoffe}\n";
return $countCoffe;
}
public function getPageAll($employees) //Число страниц документов и отчетов, которые производит этот департамент
{
$countPage = 0;
foreach ($employees as $employee)
{
$countPage+= $employee->page * $employee->quantity;
}
echo "Всего страниц этого депа: {$countPage}\n";
return $countPage;
}
public function getAll($object, $employees)
{
$this->getSalaryAllEmployees($employees);
$this->getCoffeAll($employees);
$this->getPageAll($employees);
$this->countEmployees($employees);
}
}
class EmployeeGroup
{
public $position;
public $coffe;
public $page;
public $rank;
public $boss = false;
public $baseSalary;
public $quantity;
public function getSalary($employee) //Посчитать зарплату отдельного работника с учётом ранга. Возвращает работник->$baseSalary.
{
switch($employee->rank)
{
case 1:
$employee->baseSalary;//Ранг 1, зп по дефолту
break;
case 2:
$employee->baseSalary+=($employee->baseSalary)*25/100; //Ранг 2, прибавляем к з/п 25%
break;
case 3:
$employee->baseSalary+=($employee->baseSalary)*50/100;//Ранг 3, прибавляем к з/п 50%
break;
default:
echo "Error. Switch, class EmployeeGroup, неверно задан ранг.";
}
If ($employee->boss == true)
{
$employee->baseSalary+=($employee->baseSalary)*50/100;//Босс, прибавляем к з/п 50%(+за ранг отдельно накидывается)
}
return $employee->baseSalary;
}
public function getCoffe($employee) //Сколько кофе выпили сотрудники. Босс пьёт в два раза больше.
{
If ($employee->boss == true)
{
$employee->coffe*=2;
return $employee->coffe;
}
else {
return $employee->coffe;
}
}
//Создаём сотрудника: профессия, ранг, босс(bool), кофе, страницы, оклад, название депортамента.
public function __construct($position, $rank, $boss, $coffe, $page, $baseSalary, $quantity)
{
$this->position = $position;
$this->rank = $rank;
$this->boss = $boss;
$this->coffe = $coffe;
$this->page = $page;
$this->baseSalary = $baseSalary;
$this->quantity = $quantity;
}
}
$procurement = new Departament("Закупки");// Создаём департамент ЗАКУПОК.
//Создаём сотрудника: профессия, ранг, босс(bool), кофе, страницы, оклад, кол-во сотрудников этого типа..
$procurementEmp[] = new EmployeeGroup("Менеджер", 1, false, 20, 200, 500, 9); //9 сотрудников ме1
$procurementEmp[] = new EmployeeGroup("Менеджер", 2, false, 20, 200, 500, 3); //3 сотрудника ме2
$procurementEmp[] = new EmployeeGroup("Менеджер", 3, false, 20, 200, 500, 2); //2 сотрудника ме3
$procurementEmp[] = new EmployeeGroup("Маркетолог", 1, false, 15, 150, 400, 2); //2 сотрудника ма1
$procurementEmp[] = new EmployeeGroup("Менеджер", 2, true, 20, 0, 500, 1); //босс ме2;
$procurement->getAll($procurement, $procurementEmp); //получить все данные.
$sales = new Departament("Продажи");// Создаём департамент Продажи.
$salesEmp[] = new EmployeeGroup("Менеджер", 1, false, 20, 200, 500, 12); //12 сотрудников ме1
$salesEmp[] = new EmployeeGroup("Маркетолог", 1, false, 15, 150, 400, 6); //6 сотрудника ма1
$salesEmp[] = new EmployeeGroup("Аналитик", 1, false, 50, 5, 800, 3); //3 сотрудника ан1
$salesEmp[] = new EmployeeGroup("Аналитик", 2, false, 50, 5, 800, 2); //2 сотрудника ан2
$salesEmp[] = new EmployeeGroup("Маркетолог", 2, true, 15, 0, 400, 1); //босс ма2;
$sales->getAll($sales, $salesEmp); //получить все данные.
$advertising = new Departament("Реклама");// Создаём департамент Рекламы.
$advertisingEmp[] = new EmployeeGroup("Маркетолог", 1, false, 15, 150, 400, 12); //12 сотрудника ма1
$advertisingEmp[] = new EmployeeGroup("Маркетолог", 2, false, 15, 150, 400, 10); //10 сотрудника ма2
$advertisingEmp[] = new EmployeeGroup("Менеджер", 1, false, 20, 200, 500, 8); //8 сотрудников ме1
$advertisingEmp[] = new EmployeeGroup("Инженер", 1, false, 5, 50, 200, 2); //2 ин1
$advertisingEmp[] = new EmployeeGroup("Маркетолог", 3, true, 15, 0, 400, 1); //босс ма3;
$advertising->getAll($advertising, $advertisingEmp); //получить все данные.
$logistics = new Departament("Логистика");// Создаём департамент Рекламы.
$logisticsEmp[] = new EmployeeGroup("Менеджер", 1, false, 20, 200, 500, 13); //13 сотрудников ме1
$logisticsEmp[] = new EmployeeGroup("Менеджер", 2, false, 20, 200, 500, 5); //5 сотрудников ме2
$logisticsEmp[] = new EmployeeGroup("Инженер", 1, false, 5, 50, 200, 5); //5 ин1
$logisticsEmp[] = new EmployeeGroup("Менеджер", 1, false, 20, 200, 500, 1); //босс ме1
$logistics->getAll($logistics, $logisticsEmp); //получить все данные.
?>
preferences:
25.22 ms | 405 KiB | 5 Q