From 486fbc46ef1565ffc08ff968cff569d593bb0db5 Mon Sep 17 00:00:00 2001 From: MelnikovDM Date: Fri, 19 Dec 2025 00:16:07 +0300 Subject: [PATCH] Add new files --- TEMA9/Mod_tema9.py | 54 ++++++++++++++++++++++ TEMA9/task.md | 113 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 167 insertions(+) create mode 100644 TEMA9/Mod_tema9.py create mode 100644 TEMA9/task.md diff --git a/TEMA9/Mod_tema9.py b/TEMA9/Mod_tema9.py new file mode 100644 index 0000000..4738027 --- /dev/null +++ b/TEMA9/Mod_tema9.py @@ -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}") diff --git a/TEMA9/task.md b/TEMA9/task.md new file mode 100644 index 0000000..42bf28e --- /dev/null +++ b/TEMA9/task.md @@ -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: 'За дело' +``` \ No newline at end of file