An open API service indexing awesome lists of open source software.

https://github.com/topotun77/library_of_books

Система управления библиотекой книг
https://github.com/topotun77/library_of_books

logging python

Last synced: 7 months ago
JSON representation

Система управления библиотекой книг

Awesome Lists containing this project

README

          

# Система управления библиотекой книг

### В видео показан процесс работы с приложением (кликните на картинку скриншота для просмотра видео):

[![Посмотрите видео](https://github.com/Topotun77/library_of_books/blob/master/Media/ScreenShot01.JPG?raw=true)](https://disk.yandex.ru/i/jnuVZ2AuR5oYfw)

#### Данный проект представляет собой консольное приложение по ведению учета книг в библиотеке и позволяет производить
следующие операции:

1. Регистрацию пользователя.
2. Вход/выход пользователя в систему.
3. Добавление книги.
4. Удаление книги.
5. Поиск книги.
6. Отображение всех книг.
7. Изменение статуса книги (“в наличии” или “выдана”).

#### Ниже приведет полный перечень пунктов меню:
```
Выберете одно из следующих действий:
0 = Завершить работу,
1 = Регистрация пользователя,
2 = Вход в систему,
3 = Выход из системы,
4 = Добавить книгу,
5 = Удалить книгу по ID,
6 = Найти и удалить книгу,
7 = Поиск книг по ключевому слову,
8 = Поиск книг по ключевому слову с учетом их наличия,
9 = Взять книгу домой,
10 = Вывести список всех книг,
Любой другой ввод = Вывести содержимое всей базы.
```

#### В проекте использовано логирование важных операций пользователей, таких как:

- Регистрация пользователя.
- Вход/выход пользователя в систему.
- Неудачные попытки входа в систему.
- Добавление книг.
- Удаление книг.
- Журналируются ошибки, возникающие в процессе работы приложения.

Логирование реализовано как через декоратор к методам `@loging_decor`, так и непосредственно в функциях.

При написании кода все функции и основные блоки кода подробно документировались.
Переменные и функции в коде аннонировались.

#### Пример оформления кода:
```python
@loging_decor
def del_book(self, book: Book) -> str:
"""
Метод удаляет книгу по ее ID.
:param book: Объект класса Book
:return: Успех/неудача
"""
if self.current_user is None:
return color(f'Войдите в свой аккаунт чтобы удалить книгу "{book}".')
if self.contains_book(book_name=book.title, available=False) is None:
return color(f'Книга "{book.title}" не была найдена в базе.', RED)
else:
self.books.remove(book)
self.__write_json()
return color(f'Книга "{book.title}" удалена успешно.', LIGHTYELLOW)
```
#### При разработке проекта были созданы следующие модули:
- `main.py` - основной модуль, предназначенный для запуска приложения.
- `models.py` - модуль, содержащий описание классов со всеми аттрибутами и методами.
- `constants.py` - константы, используемые в проекте.
- `utilities.py` - дополнительные утилиты.
- `tests.py` - модуль тестирования.

#### Дополнительно используются файлы:
- `bd.json` - файл с базой данных в формате `JSON`.
- `library_books.log` - журнал (лог) приложения.

Также есть возможность использования данного модуля в качестве библиотеки внутри других решений.

Для наглядности тестирование реализовано моделированием различных ситуаций.
Можно реализовать через `Unittest`.

---
### Ниже приведен полный текст технического задания:

#### Тестовое задание
**Задание:** Разработка системы управления библиотекой
#### Описание
Необходимо разработать консольное приложение для управления библиотекой книг.
Приложение должно позволять добавлять, удалять, искать и отображать книги. Каждая книга должна содержать следующие поля:
• id (уникальный идентификатор, генерируется автоматически)
• title (название книги)
• author (автор книги)
• year (год издания)
• status (статус книги: “в наличии”, “выдана”)

#### Требования
1. Добавление книги: Пользователь вводит title, author и year, после чего книга добавляется в библиотеку с уникальным id и статусом “в наличии”.
2. Удаление книги: Пользователь вводит idкниги, которую нужно удалить.
3. Поиск книги: Пользователь может искать книги по title, author или year.
4. Отображение всех книг: Приложение выводит список всех книг с их id, title, author, year и status.
5. Изменение статуса книги: Пользователь вводит id книги и новый статус (“в наличии” или “выдана”).

#### Дополнительные требования
• Реализовать хранение данных в текстовом или json формате.
• Обеспечить корректную обработку ошибок (например, попытка удалить несуществующую книгу).
• Написать функции для каждой операции (добавление, удаление, поиск, отображение, изменение статуса).
• Не использовать сторонние библиотеки.