Home - gogafefe/StAlGoLM GitHub Wiki

StAlGoLM

Клиент-серверное приложение на C++/Qt: сервер с аккаунтами, ролями (user / moderator / admin) и практическими заданиями по математике и алгоритмам со статистикой правильных ответов.

Команда

  • Голь Фёдор (251-952) — task2 (метод Ньютона, вариант №6), оконный клиент, модульные тесты Task2, стратегия тестирования и тест-кейсы
  • Корнеев Алексей — базовый сервер: аккаунты, роли, статистика, task1 (сравнение методов интегрирования)
  • Степан — task3 (метод половинного деления, вариант №3), Docker, Doxygen, UseCase и диаграммы классов, тесты Task3

Технологии

  • C++11, Qt 6 (Core, Network, Sql)
  • SQLite — хранение пользователей и статистики (QSqlDatabase, драйвер QSQLITE)
  • Протокол поверх сырого TCP (порт 33333), без готовых HTTP/JSON-библиотек — команды в виде текстовых строк
  • Docker / docker compose — контейнеризация сервера (инструкция: documentation/Docker.md)
  • Doxygen — документация по коду (documentation/Doxygen.md, готовый HTML в documentation/doxygen/html/index.html)

Структура репозитория

Файл Назначение
main.cpp Точка входа, запуск сервера
mytcpserver.h/.cpp Приём подключений, разбор входящих сообщений, диспетчеризация команд
server_functions.h/.cpp Обработка каждой команды (processCommand, cmd_*)
databasemanager.h/.cpp Работа с SQLite — пользователи, роли, статистика
task1.h/.cpp … task4.h/.cpp Генерация заданий — один файл на один вариант
tests/ Модульные тесты Task2 и Task3 (QtTest)
client/ Оконный клиент (Qt Widgets): кнопки вместо PuTTY
documentation/ Отчётные материалы: Docker, Doxygen, UseCase, диаграммы классов
StAlGoLM.pro Сборочный файл Qt (qmake)

Полезные страницы

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

qmake StAlGoLM.pro
make
./StAlGoLM

Проверить вручную — PuTTY, тип соединения Raw, хост localhost, порт 33333.

Диаграммы и тестирование

  • Диаграммы-классов — новые диаграммы клиента и сервера (draw.io), описание архитектуры.
  • UseCase — диаграмма вариантов использования, акторы и команды.
  • Юнит-тесты — QtTest для Task2 и Task3, исходники и команды запуска.
  • Тест-кейсы — ручные сценарии, ожидаемые результаты и таблицы проекта.