Автоматизация домашнего бюджета
В рамках данного цикла лабораторных работ необходимо автоматизировать работу ведения домашнего бюджета. Для этого в рамках базы данных PostgreSQL необходимо создать объекты в схеме вашего пользователя (логин и пароль пользователя для доступа к базе данных студент должен получить у преподавателя) и написать клиентское приложение на базе компонентов ADO.NET или JDBC.
Под домашним бюджетом понимается ведение статистики финансовых операций с разделением их на группы для последующего анализа и планирования. Финансовая операция характеризуется расходной суммой, приходной суммой и датой проведения. Для разделения операций на группы вводится понятие статьи, в рамках которой производится финансовая операция. Статья характеризуется наименованием назначения платежа. Каждая операция должна принадлежать одной и только одной статье. Для построения динамики распределения финансовых потоков по статьям и анализа используется расчетный период времени равный одному месяцу. Каждый месяц в системе автоматически должен формироваться итоговый отчетный документ, будем называть его балансом. Баланс характеризуется расходной суммой, приходной суммой, суммой чистой прибыли и датой формирования. Каждая операция может попасть только в один баланс. После формирования баланса покрываемый им период времени считается закрытым и для коррекции или создания операций в рамках этого периода, необходимо расформирование баланса. На основании попадания операции в баланс на этапе анализа и планирования принимается решение об интервале времени, в рамках которого будет учитываться операция. При анализе в рамках одного баланса все операции агрегируются по статьям.
База данных должна удовлетворять следующим требованиям:
-
Контроль целостности данных, используя механизм связей
-
Операции модификации групп данных и данных в связанных таблицах должны быть выполнены в рамках транзакций.
-
Логика работы приложения должна контролироваться триггерами. В частности:
• Триггер должен запрещать ввод операции с нулевыми суммами
• Триггер должен контролировать, чтобы вводимая операция не попадала в закрытый период.
-
Все операции вычисления различных показателей (из требований к клиентскому приложению) должны реализовываться хранимыми процедурами.
Требования к клиентскому приложению:
-
Вход в приложение осуществляется после корректного введения пароля и логина с соответствующими ролями (пользователь не может вносить изменения в БД, администратор владеет всеми правами). Логин и пароль хранятся в виде хэшей.
-
Необходимо реализовать интерфейсы для ввода, модификации и удаления
• Операций
• Статей
-
Должен быть реализован журнал анализа, отображающий сформированные балансы. В рамках этого журнала необходимо организовать формирование баланса и расформирование.
-
Необходимо реализовать возможность просмотра следующих показателей (лучше графический вид):
• Динамика изменения расходов и доходов за произвольный период времени и с произвольным набором анализируемых статей.
• Процентное соотношение финансовых потоков по статьям.
• Графическое отображение чистой прибыли бюджета от времени.
Сначала делаем бэкап базы данных из файла в папке /db.
Затем добавляем в файл src/config.ini все необходимые данные для подключения к базе данных (название бд, хост, порт, юзер, пароль).
В таблице users можно (желательно) поменять имена пользователей. Также можно поменять пароли (про дефолтные логины и пароли ниже). Пароли хранятся в хэше, поэтому если хотите их обновить, то в src/database/get_hash_from_passwrd.py возможно это сделать: пишем новый пароль, копируем хэш и вставляем в базу данных.
По дефолту:
simon: 12345 - это админ.
leyla: 1234 - это читатель.
Создаём переменное окружение:
python3 -m venv env
source env/bin/activate
Установка зависимостей:
pip install -r requirements.txt
python src/main.py