Пушной аукцион

Система управления зверофермами и учёта торгов пушниной

View the Project on GitHub Cloudy680/tpmp-lab4-rep2

Дополнительная спецификация

Надёжность

  1. Система корректно обрабатывает ошибки ввода пользователя:
    • Отрицательные значения количества и цены отклоняются
    • Некорректные категории покупателя отклоняются
    • Попытка продать больше единиц, чем есть в лоте, отклоняется
  2. При открытии базы данных выполняется проверка существования файла.

  3. Удаление фермы запрещено, если на неё есть ссылки в лотах или результатах.

Удобство использования

  1. Интерфейс — консольный (CLI) с нумерованным меню.

  2. После каждой операции система ожидает нажатия Enter перед возвратом в меню.

  3. Пункт «0» во всех меню служит для выхода на уровень выше.

  4. Сообщения об ошибках информативны.

  5. Предопределённые учётные записи: admin/admin123, farm1/farm1pass, farm2/farm2pass.

Производительность

  1. Время отклика на запросы не превышает 1 секунды при объёме данных до 10 000 записей.

  2. База данных SQLite работает в режиме «:memory:» для тестов.

Сопровождаемость

  1. Исходный код разделён на модули согласно диаграмме компонентов.

  2. Проект собирается с помощью CMake.

  3. Настроена автоматическая сборка и тестирование через GitHub Actions.

  4. Unit-тесты покрывают Database, Auth, Farm, Lot, Auction.

Безопасность

Требование Реализация
Аутентификация Таблица Users с полями username (UNIQUE), password, role
Разграничение доступа admin — полный доступ, farm_user — только свои данные
Защита от SQL-инъекций Параметризованные запросы в Auth::login()
Хранение паролей В учебном проекте — открытым текстом