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 | Современная типографика |
- Регистрация и авторизация пользователей (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.
Вы можете свободно использовать, модифицировать и распространять код при сохранении текста лицензии.











