форкнуто от main/python-labs
Родитель
647afd0582
Сommit
486fbc46ef
@ -0,0 +1,54 @@
|
|||||||
|
|
||||||
|
class Employee:
|
||||||
|
def __init__(self, fio="Unknown", otdel="Not specified",
|
||||||
|
dolzhnost="Not specified", oklad=0):
|
||||||
|
self.fio = fio
|
||||||
|
self.otdel = otdel
|
||||||
|
self.dolzhnost = dolzhnost
|
||||||
|
self.oklad = oklad
|
||||||
|
self._poosherenia = []
|
||||||
|
|
||||||
|
def increase_oklad(self, amount):
|
||||||
|
if amount < 0:
|
||||||
|
print(f"Error: amount cannot be negative ({amount})")
|
||||||
|
return self.oklad
|
||||||
|
else:
|
||||||
|
old_oklad = self.oklad
|
||||||
|
self.oklad += amount
|
||||||
|
print(f"{self.fio}: salary increased by {amount:,} rub. "
|
||||||
|
f"({old_oklad:,} → {self.oklad:,} rub.)")
|
||||||
|
return self.oklad
|
||||||
|
|
||||||
|
def change_department(self, new_department):
|
||||||
|
old_department = self.otdel
|
||||||
|
self.otdel = new_department
|
||||||
|
print(f"Employee {self.fio} transferred from {old_department} to {new_department}.")
|
||||||
|
|
||||||
|
def change_position(self, new_position):
|
||||||
|
old_position = self.dolzhnost
|
||||||
|
self.dolzhnost = new_position
|
||||||
|
print(f"Employee {self.fio} position changed from {old_position} to {new_position}.")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def poosherenia(self):
|
||||||
|
return self._poosherenia.copy()
|
||||||
|
|
||||||
|
def add_poosherenia(self, text):
|
||||||
|
"""Adds a new commendation"""
|
||||||
|
self._poosherenia.append(text)
|
||||||
|
print(f"{self.fio}: added commendation: '{text}'")
|
||||||
|
|
||||||
|
def show_info(self):
|
||||||
|
"""Shows employee information"""
|
||||||
|
print(f"\n{'='*40}")
|
||||||
|
print(f"EMPLOYEE: {self.fio}") # ← английское имя!
|
||||||
|
print(f"Department: {self.otdel}") # ← английское имя!
|
||||||
|
print(f"Position: {self.dolzhnost}") # ← английское имя!
|
||||||
|
print(f"Salary: {self.oklad} rub.")
|
||||||
|
if self._poosherenia:
|
||||||
|
print("Commendations:")
|
||||||
|
for item in self._poosherenia:
|
||||||
|
print(f" • {item}")
|
||||||
|
else:
|
||||||
|
print("No commendations")
|
||||||
|
print(f"{'='*40}")
|
||||||
@ -0,0 +1,113 @@
|
|||||||
|
# Общее контрольное задание по теме 9
|
||||||
|
|
||||||
|
## Задание:
|
||||||
|
Создайте и запишите в модуль класс, содержащий следующие компоненты:
|
||||||
|
- конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения;
|
||||||
|
- метод для обеспечения операции повышения оклада сотрудника на заданное значение;
|
||||||
|
- метод для обеспечения перевода сотрудника из одного отдела в другой;
|
||||||
|
- метод для изменения должности сотрудника;
|
||||||
|
- свойство, содержащее перечень (список) поощрений сотрудника.
|
||||||
|
Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобразите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изменения должности и оклада, объявления благодарности.
|
||||||
|
|
||||||
|
## Решение:
|
||||||
|
- Содержание модуля:
|
||||||
|
```
|
||||||
|
>>>class Employee:
|
||||||
|
def __init__(self, fio="Unknown", otdel="Not specified",
|
||||||
|
dolzhnost="Not specified", oklad=0):
|
||||||
|
self.fio = fio
|
||||||
|
self.otdel = otdel
|
||||||
|
self.dolzhnost = dolzhnost
|
||||||
|
self.oklad = oklad
|
||||||
|
self._poosherenia = []
|
||||||
|
|
||||||
|
def increase_oklad(self, amount):
|
||||||
|
if amount < 0:
|
||||||
|
print(f"Error: amount cannot be negative ({amount})")
|
||||||
|
return self.oklad
|
||||||
|
else:
|
||||||
|
old_oklad = self.oklad
|
||||||
|
self.oklad += amount
|
||||||
|
print(f"{self.fio}: salary increased by {amount:,} rub. "
|
||||||
|
f"({old_oklad:,} → {self.oklad:,} rub.)")
|
||||||
|
return self.oklad
|
||||||
|
|
||||||
|
def change_department(self, new_department):
|
||||||
|
old_department = self.otdel
|
||||||
|
self.otdel = new_department
|
||||||
|
print(f"Employee {self.fio} transferred from {old_department} to {new_department}.")
|
||||||
|
|
||||||
|
def change_position(self, new_position):
|
||||||
|
old_position = self.dolzhnost
|
||||||
|
self.dolzhnost = new_position
|
||||||
|
print(f"Employee {self.fio} position changed from {old_position} to {new_position}.")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def poosherenia(self):
|
||||||
|
return self._poosherenia.copy()
|
||||||
|
|
||||||
|
def add_poosherenia(self, text):
|
||||||
|
"""Adds a new commendation"""
|
||||||
|
self._poosherenia.append(text)
|
||||||
|
print(f"{self.fio}: added commendation: '{text}'")
|
||||||
|
|
||||||
|
def show_info(self):
|
||||||
|
"""Shows employee information"""
|
||||||
|
print(f"\n{'='*40}")
|
||||||
|
print(f"EMPLOYEE: {self.fio}") # ← английское имя!
|
||||||
|
print(f"Department: {self.otdel}") # ← английское имя!
|
||||||
|
print(f"Position: {self.dolzhnost}") # ← английское имя!
|
||||||
|
print(f"Salary: {self.oklad} rub.")
|
||||||
|
if self._poosherenia:
|
||||||
|
print("Commendations:")
|
||||||
|
for item in self._poosherenia:
|
||||||
|
print(f" • {item}")
|
||||||
|
else:
|
||||||
|
print("No commendations")
|
||||||
|
print(f"{'='*40}")
|
||||||
|
```
|
||||||
|
|
||||||
|
- Тест модуля:
|
||||||
|
```
|
||||||
|
>>>import Mod_tema9
|
||||||
|
>>>sotr1 = Mod_tema9.Employee("Иванов И.И.", "IT-отдел", "Программист", 80000)
|
||||||
|
>>>sotr1.show_info()
|
||||||
|
|
||||||
|
========================================
|
||||||
|
EMPLOYEE: Иванов И.И.
|
||||||
|
Department: IT-отдел
|
||||||
|
Position: Программист
|
||||||
|
Salary: 80000 rub.
|
||||||
|
No commendations
|
||||||
|
========================================
|
||||||
|
>>>sotr2 = Mod_tema9.Employee("Петрова А.С.", "Бухгалтерия", "Бухгалтер", 60000)
|
||||||
|
>>>sotr2.show_info()
|
||||||
|
|
||||||
|
========================================
|
||||||
|
EMPLOYEE: Петрова А.С.
|
||||||
|
Department: Бухгалтерия
|
||||||
|
Position: Бухгалтер
|
||||||
|
Salary: 60000 rub.
|
||||||
|
No commendations
|
||||||
|
========================================
|
||||||
|
>>>sotr1.change_department("Отдел разработки")
|
||||||
|
Employee Иванов И.И. transferred from IT-отдел to Отдел разработки.
|
||||||
|
>>>sotr1.increase_oklad(15000)
|
||||||
|
Иванов И.И.: salary increased by 15,000 rub. (80,000 → 95,000 rub.)
|
||||||
|
95000
|
||||||
|
>>>sotr1.change_position("Старший программист")
|
||||||
|
Employee Иванов И.И. position changed from Программист to Старший программист.
|
||||||
|
>>>sotr1.add_poosherenia("Заработал, молодец")
|
||||||
|
Иванов И.И.: added commendation: 'Заработал, молодец'
|
||||||
|
>>>sotr1.add_poosherenia("За все хорошее")
|
||||||
|
Иванов И.И.: added commendation: 'За все хорошее'
|
||||||
|
>>>sotr2.change_department("Отдел финансовых махинаций")
|
||||||
|
Employee Петрова А.С. transferred from Бухгалтерия to Отдел финансовых махинаций.
|
||||||
|
>>>sotr2.increase_oklad(60000)
|
||||||
|
Петрова А.С.: salary increased by 60,000 rub. (60,000 → 120,000 rub.)
|
||||||
|
120000
|
||||||
|
>>>sotr2.change_position("Главный бухгалтер")
|
||||||
|
Employee Петрова А.С. position changed from Бухгалтер to Главный бухгалтер.
|
||||||
|
>>>sotr2.add_poosherenia("За дело")
|
||||||
|
Петрова А.С.: added commendation: 'За дело'
|
||||||
|
```
|
||||||
Загрузка…
Ссылка в новой задаче