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

Атрибуты: id, адрес, фамилия_директора, телефон
Методы: addFarm(), updateFarm(), deleteFarm(), getFarmById(), getAllFarms()
Атрибуты: id, farmId, furName, furType, numberUnits, statedPrice
Методы: addLot(), updateLot(), deleteLot(), getLotById(), getLotsByFarm()
Атрибуты: id, farmId, furName, furType, soldUnits, sellingPrice, buyerCategory
Методы: addAuctionResult(), validateAuctionResult(), reportFarmWithHighestPrice(), reportByBuyerCategory(), reportProfitByFarm(), reportFarmsAboveAvgPrice(), reportFarmMaxProfit(), listFarmsLowProfit(), getFarmProfit()

Описание алгоритма «Фиксация результатов торгов»:

Процесс получения информации о лотах зверофермой:
| Шаг | Отправитель | Получатель | Сообщение |
|---|---|---|---|
| 1 | Директор | Консольное меню | Вводит номер зверофермы |
| 2 | Консольное меню | FarmController | getFarmByNumber(number) |
| 3 | FarmController | БД SQLite | SELECT * FROM Farm WHERE id = ? |
| 4 | БД SQLite | FarmController | Возвращает запись |
| 5 | FarmController | Консольное меню | Возвращает объект Farm |
| 6 | Консольное меню | БД SQLite | SELECT * FROM Exhibited_fur WHERE furfarm_number = ? |
| 7 | БД SQLite | Консольное меню | Возвращает список лотов |
| 8 | Консольное меню | Директор | Отображает список лотов |

| Компонент | Файлы | Назначение |
|---|---|---|
| main | main.cpp | Точка входа, главное меню |
| Модуль аутентификации | Auth.cpp / Auth.h | Логин пользователя |
| Модуль управления фермами | Farm.cpp / Farm.h | CRUD ферм |
| Модуль управления лотами | Lot.cpp / Lot.h | CRUD лотов |
| Модуль аукциона | Auction.cpp / Auction.h | Фиксация результатов, отчёты |
| Модуль БД | Database.cpp / Database.h | Подключение к SQLite |