Skip to content

Latest commit

 

History

History
178 lines (138 loc) · 12.3 KB

File metadata and controls

178 lines (138 loc) · 12.3 KB

PlutusBank

Финансовая песочница для безопасного обучения банкингу

Qt C++ QML PostgreSQL License Platform


PlutusBank — мобильное банковское приложение-тренажёр, в котором можно безопасно освоить управление финансами: от выпуска карт и переводов до кредитов и вложений — без риска потерять реальные деньги.

Дипломный проект


О проекте

В школах не учат управлять деньгами. Люди впервые открывают банковское приложение — и сталкиваются с кредитами, переводами, депозитами, комиссиями, блокировками карт. Цена ошибки — реальные финансовые потери.

PlutusBank решает эту проблему. Это мост между незнанием и реальным банкингом: полноценный симулятор, где каждая операция выглядит и работает как в настоящем банке, но выполняется в безопасной «песочнице» с виртуальными средствами.

Чему учит PlutusBank:

  • Открывать и управлять дебетовыми и кредитными картами
  • Выполнять переводы между своими счетами и другим пользователям
  • Пополнять баланс и отслеживать историю транзакций
  • Понимать, что такое заморозка и блокировка карты
  • Ориентироваться в интерфейсе современного банковского приложения
  • В перспективе — работать с депозитами, кредитами, криптовалютами и инвестициями

Технологический стек

Слой Технология Назначение
Язык C++17 Бизнес-логика, контроллеры, работа с данными
UI-фреймворк Qt 6.10 + QML Декларативный интерфейс с анимациями
Сборка CMake 3.21+ Кросс-платформенная сборка (Windows / Android)
СУБД PostgreSQL 18 Хранение пользователей, карт, транзакций
Архитектура MVC Контроллеры (C++) + Представления (QML) через Q_PROPERTY / Q_INVOKABLE
Платформы Android 9+ (API 28), Windows Мобильная и десктопная сборки
Шрифты Manrope Современная типографика

Скриншоты

Развернуть скриншоты приложения
Screenshot 1 Screenshot 2
Screenshot 3 Screenshot 4
Screenshot 5 Screenshot 6
Screenshot 7 Screenshot 8
Screenshot 9 Screenshot 10
Screenshot 11 Screenshot 12

И многое другое...


Roadmap

Реализовано

  • Регистрация и авторизация пользователей (SHA-256 хэширование паролей с индивидуальной солью)
  • Главная страница с отображением баланса и списка карт
  • Выпуск дебетовых и кредитных карт
  • Детальная страница карты с реквизитами
  • Пополнение счёта (деньги из воздуха в рамках песочницы, кд на пополнение)
  • Переводы между своими счетами
  • Переводы другим пользователям по номеру телефона
  • История транзакций с группировкой по датам
  • Заморозка и блокировка карт
  • Кредитный модуль: каталог продуктов, калькулятор, оформление, график платежей, оплата по графику, история закрытых кредитов
  • Страница настроек с профилем и выходом из аккаунта
  • Кросс-платформенная сборка (Android + Windows)
  • PostgreSQL-бэкенд с серверной частью (TCP) и логированием

Планы разработки

  • Модуль вкладов - накопительные счета с начислением процентов (пополняемые / непополняемые), выбор срока и ставки, досрочное закрытие с пересчётом
  • Симуляция времени - "прокрутка" календаря вперёд для начисления процентов по вкладам, обновления графиков кредитов и оценки изменения активов
  • Криптовалютный модуль - виртуальные кошельки, покупка и продажа криптовалют по симулированному курсу (Пуассоновский шум?), переводы между кошельками, история операций
  • Оплата услуг и товаров - симуляция покупок
  • Обучающие сценарии и подсказки - интерактивные туториалы при первом запуске, контекстные подсказки к финансовым операциям, объяснение терминов
  • Система достижений? - награды за освоение финансовых инструментов (первый перевод, первый вклад, погашение кредита и тд)

Архитектура

PlutusBank/
├── client/                         # Мобильное / десктопное приложение (Qt Quick)
│   ├── src/                        # C++ — контроллеры и сетевой слой
│   │   ├── main.cpp                # Точка входа, регистрация контроллеров в QML
│   │   ├── NetworkClient.*         # Singleton, TCP-клиент (синхронные запросы к серверу)
│   │   ├── AuthController.*        # Авторизация / регистрация
│   │   ├── UserSession.*           # Singleton, сессия текущего пользователя
│   │   ├── CardController.*        # Выпуск, заморозка, блокировка карт
│   │   ├── TransferController.*    # Переводы между счетами / другим пользователям
│   │   ├── HistoryController.*     # История транзакций
│   │   └── LoanController.*        # Кредиты: каталог, калькулятор, оформление, платежи
│   ├── qml/                        # QML — декларативный UI
│   │   ├── Main.qml                # Корневой StackView-навигатор
│   │   ├── Auth.qml                # Экран входа
│   │   ├── Register.qml            # Экран регистрации
│   │   ├── MainPage.qml            # Главная: баланс, карты, быстрые действия
│   │   ├── CreateCardDialog.qml    # Мастер выпуска карты (3 шага)
│   │   ├── CardDetailPage.qml      # Реквизиты и управление картой
│   │   ├── TransferPage.qml        # Переводы
│   │   ├── TopUpPage.qml           # Пополнение счёта
│   │   ├── HistoryPage.qml         # История операций с группировкой по датам
│   │   ├── SettingsPage.qml        # Настройки пользователя
│   │   ├── LoanCatalogPage.qml     # Каталог кредитных продуктов
│   │   ├── LoanCalculatorPage.qml  # Кредитный калькулятор (аннуитет)
│   │   ├── MyLoansPage.qml         # Список активных кредитов
│   │   ├── LoanSchedulePage.qml    # График платежей по кредиту
│   │   ├── LoanHistoryPage.qml     # Закрытые кредиты
│   │   ├── Theme.qml               # QML-singleton: цвета, градиенты
│   │   └── assets/                 # Шрифт Manrope, логотип, SVG-иконки
│   ├── android/                    # AndroidManifest, Gradle-конфигурация
│   ├── connection.ini              # Адрес и порт сервера
│   └── CMakeLists.txt              # Сборка клиента
│
├── server/                         # TCP-сервер (консольное Qt-приложение)
│   ├── main.cpp                    # Точка входа, запуск BankServer + консоль управления
│   ├── BankServer.*                # QTcpServer: приём подключений, kick/kickall
│   ├── ClientSession.*             # Сессия клиента: буферизация, маршрутизация запросов
│   ├── RequestHandler.*            # Роутер методов: auth, cards, transfers, loans …
│   ├── DatabaseManager.*           # Singleton, все SQL-запросы к PostgreSQL
│   ├── ConsoleHandler.*            # Чтение stdin в отдельном потоке (help, status, kick)
│   ├── Logger.*                    # Логирование в консоль и файл (debug/info/warning/error)
│   ├── ServerConfig.h              # Чтение settings.ini (порт, БД, логирование)
│   ├── settings.ini                # Конфигурация сервера
│   ├── database/
│   │   └── backup.sql              # Полный дамп схемы PostgreSQL
│   └── CMakeLists.txt              # Сборка сервера
│
└── shared/                         # Общий код клиента и сервера
    └── NetworkProtocol.h           # Формат фреймов, pack/tryExtract, makeSuccess/makeError

Быстрый старт

Зависимости: Qt 6.10, CMake 3.21+, PostgreSQL 18

Гайд по установке


Лицензия

Проект распространяется под лицензией MIT.

Вы можете свободно использовать, модифицировать и распространять код при сохранении текста лицензии.