В соответствие с ТЗ проект представляет собой консольное приложение для учета личных доходов и расходов.
- Проект написан на Python 3.12 (будет работать начиная от версии 3.10 +)
- В проекте не использовались дополнительные библиотеки или фреймворки, поэтому в установке виртуальной среды (venv) нет необходимости
- Для запуска приложения необходимо запустить файл
main.pyкомандойpython3 main.pyили через интерфейс IDE - Сохранение данных реализовано в json-файл. Имя файла и путь к нему задается в константе
DATA_PATH, в файлеconfig.py. Если на момент запуска такой файл отсутствует, то он создается автоматически. Если файл с данными уже создан, то данные из него загружаются в память. - Реализована валидация вводимых пользователем данных: Даты вводятся в формате ГГГГ-ММ-ДД, если не вводить дату, а нажать Enter, то автоматически применяется текущая дата. Суммы в виде целого неотрицательного числа или десятичной дроби с максимум двумя знаками после точки. Выбор пунктов меню - только целыми числами. В случае некорректно введенных данных - программа сообщает об этом и предлагает ввести данные заново.
- Реализовано unit-тестирование с использованием библиотеки unittest, которая поставляется вместе с Python. Для запуска тестов необходимо из директории проекта выполнить команду
python3 test_runner.py - В репозитории сохранен файл с данными для примера
После запуска программы пользователь попадает в основное меню
Пункты меню:
- Добавить запись - служит для добавления записи дохода или расхода
- Показывает сумму текущего баланса
- Показывает сумму всех доходов
- Показывает сумму всех расходов
- Открывает меню поиска и редактирования записей
- Сохраняет изменений в файл
- Выход из программы. При выходе предлагается сохранить изменения (действие по умолчанию) или отказаться от сохранения.
Меню поиска записей
- Поиск по категории ("Доход" или "Расход")
- Поиск по сумме
- Поиск по дате (можно произвести поиск за конкретную дату или за период от и до включительно.
- Возврат в главное меню
После поиска найденные записи выводятся в пронумерованном списке и пользователю предлагается выбрать номер записи для редактирования или вернуться назад к списку найденных записей.
Меню редактирования записи
- Изменить дату
- Изменить категорию
- Изменить сумму
- Изменить описание
- Удалить запись
- Назад
При изменении категории, суммы или удалении записи баланс автоматически пересчитывается. Если пользователь хочет удалить запись, то перед удалением запрашивается подтверждение.
Данил Кочетов - GitHub