Условия задачи:
Система управления персоналом. Это упражнение предполагает создание класса Employee из упражнения 4 по программированию. Создайте программу, которая сохраняет объекты Employee в словаре. Используйте идентификационный номер сотрудника в качестве ключа. Программа должна вывести меню, которое позволяет пользователю:
•найти сотрудника в словаре;
•добавить нового сотрудника в словарь;
•изменить имя, отдел и должность существующего сотрудника в словаре;
•удалить сотрудника из словаря;
•выйти из программы.
По завершении работы программа должна законсервировать словарь и сохранить его в файле. При каждом запуске программы она должна попытаться загрузить законсервированный словарь из файла. Если файл не существует, то программа должна начать работу с пустого словаря.
Решение задачи:
import pickle
class Employee():
def __init__(self, name, ID, department, job):
self.__name = name
self.__ID = ID
self.__department = department
self.__job = job
def set_name(self, name):
self.__name = name
def set_ID(self, ID):
self.__ID = ID
def set_department(self, department):
self.__department = department
def set_job(self, job):
self.__job = job
def get_name(self):
return self.__name
def get_ID(self):
return self.__ID
def get_department(self):
return self.__department
def get_job(self):
return self.__job
def __str__(self):
return f'Имя: {self.__name} номер: {self.__ID} должность {self.__job} отдел {self.__department}'
FIND = 1
CREATE = 2
EDIT = 3
DELETE = 4
QUIT = 5
def menu():
print('для того что бы произвести действия со словарем выберите один из вариантов')
print('1 - для поиска работника по словарю')
print('2- для добавления работника в словарь')
print('3 - для редактирования информации о работнике')
print('4 - для удаления информации о работнике')
print('5 - для выхода из словаря')
try:
with open('dict_employee.dat', 'rb') as out_file:
dict_emp = pickle.load(out_file)
except:
dict_emp = {}
answer = int(input('Укажите цифру:'))
return answer, dict_emp
def find(dict_emp):
number = input('Укажите номер сотрудника: ')
if number in dict_emp:
print(dict_emp[number])
else:
print('Сотрудника с таким номером нет в словаре')
def add(dict_emp):
number = input('Укажите номер сотрудника: ')
if number not in dict_emp:
print('Сотрудника нет в списке, можно добавить')
name = input('Укажите имя сотрудника: ')
department = input('Укажите отдел сотрудника: ')
job = input('Укажите должность сотрудника: ')
employee = Employee(name, number, department, job)
dict_emp[number] = employee
with open('dict_employee.dat', 'wb') as in_file:
pickle.dump(dict_emp, in_file)
else:
print('Сотрудника с таким номером есть в словаре')
def edit(dict_emp):
number = input('Укажите номер сотрудника: ')
if number in dict_emp:
print(dict_emp[number])
print('Отредактируйте данные')
name = input('Укажите имя сотрудника: ')
department = input('Укажите отдел сотрудника: ')
job = input('Укажите должность сотрудника: ')
employee = Employee(name, number, department, job)
dict_emp[number] = employee
with open('dict_employee.dat', 'wb') as in_file:
pickle.dump(dict_emp, in_file)
else:
print('Сотрудника с таким номером нет в словаре')
def delit(dict_emp):
number = input('Укажите номер сотрудника: ')
if number in dict_emp:
print(dict_emp[number])
del dict_emp[number]
print('Данные удалены')
else:
print('Сотрудника с таким номером нет в словаре')
answer = 0
while answer != 5:
answer, dict_emp = menu()
if answer == FIND:
find(dict_emp)
elif answer == 2:
add(dict_emp)
elif answer == 3:
edit(dict_emp)
elif answer == 4:
delit(dict_emp)
else:
answer = 5