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

https://github.com/usbashka/library-system

Тестовое задание "Система управления библиотекой"
https://github.com/usbashka/library-system

python3 test-task

Last synced: 6 months ago
JSON representation

Тестовое задание "Система управления библиотекой"

Awesome Lists containing this project

README

          

# USLib [![Made with Godot](https://img.shields.io/badge/Python_3-2A5370?logo=python&logoColor=white)](https://python.org)

USLib — это консольная система управления библиотекой. Она позволяет вести учёт книг, находить их по названию, автору или году
издания, а также понимать, находится ли книга на полке или её кто-то взял почитать. Вся база книг автоматически сохраняется в
JSON-файле и загружается из него при старте приложения.

| Данный проект является тестовым заданием на вакансию Junior Backend Developer (Python) в компанию Effective Mobile |
|--------------------------------------------------------------------------------------------------------------------|

## Установка и запуск
Склонируйте репозиторий:
```bash
git clone https://github.com/USBashka/Library-system
```
Перейдите в директорию проекта:
```bash
cd Library-system
```
Запустите файл `main.py`:
```bash
python main.py
```

## Использование
Всё взаимодействие с приложением происходит через командную строку. Всего есть 7 команд:

### Помощь
Выводит список доступных команд и их краткое описание.
```
> помощь
Доступные команды (вводить можно как на английском, так и на русском):
help / помощь Вывести список доступных команд
add / добавить Добавить новую книгу
del / удалить Удалить книгу
find / найти Найти книгу
list / список Вывести список всех книг
status / статус Установить статус книги (в наличии/выдана)
exit / выход Выйти из приложения
```

### Добавить
Запрашивает название, автора и год издания книги, после чего добавляет её в систему. Название и автор не могут быть пустыми,
а год издания должен быть целым числом не меньше нуля.

```
> добавить
Название книги: Грокаем алгоритмы
Автор: Адитья Бхаргава
Год издания: 2020
Книга "Грокаем алгоритмы" успешно добавлена в систему под ID 3
```

### Удалить
Запрашивает ID книги и удаляет её.

```
> удалить
ID удаляемой книги: 2
Книга "Скибиди" успешно удалена из системы

> удалить
ID удаляемой книги: 1
Книга с указанным ID не найдена
```

### Найти
Позволяет искать книги в системе. Сначала запрашивает по какому параметру искать, затем сам параметр, после чего выводит
таблицу со всеми подходящими книгами. Книга считается подходящей даже в том случае, если пользователь ввёл только часть
названия или только имя автора без фамилии. Также поиск нечувствителен к регистру.

```
> найти
Выберите, по какому параметру искать книги:
1 - Название
2 - Автор
3 - Год издания
Параметр: 1
Введите название книги: ктулху
В библиотеке 1 книга с похожим названием:
ID | Название | Автор | Год | Статус
-----+------------------------------+---------------------------+-----+---------
6| Зов Ктулху | Говард Лавкрафт | 2018|в наличии

> найти
Выберите, по какому параметру искать книги:
1 - Название
2 - Автор
3 - Год издания
Параметр: 2
Введите автора книги: аристотель
В библиотеке 2 книги с похожим автором:
ID | Название | Автор | Год | Статус
-----+------------------------------+---------------------------+-----+---------
4| Этика | Аристотель | 2022|в наличии
5| Политика. Риторика | Аристотель | 2021|в наличии
```

### Список
Показывает таблицу со всеми книгами в библиотеке.
```
> список
В данный момент в системе 8 книг:
ID | Название | Автор | Год | Статус
-----+------------------------------+---------------------------+-----+---------
3| Грокаем алгоритмы | Адитья Бхаргава | 2020|в наличии
4| Этика | Аристотель | 2022|в наличии
6| Зов Ктулху | Говард Лавкрафт | 2018|в наличии
7| Грокаем глубокое обучение | Эндрю Траск | 2020|в наличии
8| Django | Владимир Дронов | 2019|в наличии
9| Сумма Технологии | Станислав Лем | 2021|в наличии
10| Игра в бисер | Герман Гессе | 2021| выдана
11| История тебя | Виктория Салтыкова | 2024|в наличии
```

### Статус
Запрашивает ID книги и позволяет установить её статус. Статусом может быть только "в наличии" или "выдана".

```
> статус
ID взятой/возвращённой книги: 6
Выберите статус для "Зов Ктулху" (сейчас в наличии):
1 - В наличии
2 - Выдана
Статус: 2
Статус успешно изменён на "выдана"
```

### Выход
Завершает работу приложения.

## Тестирование
В файле `test_data.json` находится тестовая база книг. Её можно переименовать в `data.json` (стандартное название файла сохранения) и запустить приложение для тестирования функционала.

Также есть автотесты в `tests.py`. Для запуска нужно ввести в терминале:
```
python -m unittest tests.py
```