Skip to content

Triggerossi/cpp_bmi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Калькулятор индекса массы тела (ИМТ)

Десктопное приложение для расчета индекса массы тела с визуализацией результатов на основе категорий веса. Разработано с использованием фреймворка Qt для создания кроссплатформенного графического интерфейса.

📋 Функциональность

  • Расчет ИМТ по стандартной формуле ВОЗ: вес (кг) / рост² (м)
  • Определение категории веса по шкале ВОЗ:
    • Недостаточный вес (ИМТ < 18.5)
    • Нормальный вес (ИМТ 18.5-24.9)
    • Избыточный вес (ИМТ 25-29.9)
    • Ожирение (ИМТ 30-34.9)
    • Экстремальное ожирение (ИМТ ≥ 35)
  • Визуальная индикация результатов:
    • Цветное выделение результата в зависимости от категории
    • Графические изображения для каждой категории веса
    • Наглядное отображение результата расчета
  • Валидация входных данных:
    • Проверка на пустые поля
    • Проверка корректности числовых значений
    • Проверка реалистичных диапазонов (рост: 0-250 см, вес: 0-500 кг)
    • Информативные сообщения об ошибках
  • Управление данными:
    • Кнопка сброса всех полей
    • Автоматическое скрытие изображения при сбросе
    • Сохранение настроек интерфейса

🛠 Технологии и библиотеки

  • Язык программирования: C++17
  • Фреймворк GUI: Qt 6
  • Используемые модули Qt:
    • QtWidgets - для графического интерфейса
    • QtGui - для работы с изображениями
    • QtCore - основные классы и функции
  • Система сборки: qmake/CMake
  • Формат изображений: PNG для визуализации категорий

📁 Структура проекта

bmi-calculator/
├── main.cpp                 # Точка входа приложения
├── mainwindow.h             # Заголовочный файл главного окна
├── mainwindow.cpp           # Реализация главного окна (основная логика)
├── images/                  # Директория с изображениями категорий ИМТ
│   ├── underweight.png      # Изображение для недостаточного веса
│   ├── normal.png           # Изображение для нормального веса
│   ├── bese.png             # Изображение для избыточного веса
│   ├── overweight.png       # Изображение для ожирения
│   └── obese.png            # Изображение для экстремального ожирения
├── CMakeLists.txt           # Файл конфигурации CMake (или .pro для qmake)
└── README.md                # Документация проекта

🚀 Установка и запуск

Предварительные требования

  1. Иметь комп

Сборка и запуск

Способ 1: Использование Qt Creator (рекомендуется)

  1. Откройте файл проекта (CMakeLists.txt или *.pro) в Qt Creator
  2. Нажмите "Configure Project"
  3. Нажмите кнопку "Run" (зеленая стрелка)

Способ 2: Командная строка (CMake)

# Создаем директорию для сборки
mkdir build && cd build

# Генерируем файлы сборки
cmake ..

# Компилируем проект
make  # или mingw32-make на Windows с MinGW

# Запускаем приложение
./bmi-calculator  # на Linux/macOS
# или
bmi-calculator.exe  # на Windows

Способ 3: Скачать zip

  1. Откройте репозиторий и скачайте zip проекта
  2. Разархивируйте и перейдите а папку build
  3. Запустите BMICalculator.exe

🖥 Как пользоваться

Ввод данных

  1. В поле "Рост (см)" введите свой рост в сантиметрах
  2. В поле "Вес (кг)" введите свой вес в килограммах

Расчет ИМТ

  1. Нажмите кнопку "Рассчитать ИМТ"
  2. Приложение выполнит расчет и отобразит:
    • Численное значение индекса массы тела
    • Категорию веса согласно классификации ВОЗ
    • Соответствующее изображение-визуализацию
    • Цветную рамку, соответствующую категории

Интерпретация цветовых индикаторов

  • Синяя рамка - Недостаточный вес (ИМТ < 18.5)
  • Зеленая рамка - Нормальный вес (ИМТ 18.5-24.9)
  • Оранжевая рамка - Избыточный вес (ИМТ 25-29.9)
  • Красная рамка - Ожирение и выше (ИМТ ≥ 30)

Сброс данных

  • Для выполнения нового расчета нажмите "Сбросить"
  • Все поля будут очищены, изображение скроется

📊 Формула расчета

ИМТ рассчитывается по стандартной формуле Всемирной организации здравоохранения (ВОЗ):

ИМТ = вес (кг) / (рост (м))²

Пример расчета:

  • Рост: 175 см (1.75 м)
  • Вес: 70 кг
  • ИМТ = 70 / (1.75 * 1.75) = 22.86
  • Категория: Нормальный вес

⚠️ Важные замечания

Ограничения метода ИМТ

  1. Интерпретация результатов:

    • ИМТ является ориентировочным показателем
    • Не учитывает мышечную массу, возраст, пол и телосложение
    • Может давать неточные результаты для спортсменов, беременных и пожилых людей
  2. Ограничения ввода:

    • Рост: от 0 до 250 см
    • Вес: от 0 до 500 кг
    • Поддерживаются только числовые значения
    • Десятичный разделитель - точка
  3. Требования к изображениям:

    • Убедитесь, что файлы изображений находятся в папке images/
    • Изображения должны быть в формате PNG
    • Рекомендуемый размер: 250x250 пикселей
    • Относительный путь к изображениям: ../images/

🔧 Решение возможных проблем

Проблема: Изображения не загружаются

Решение: Проверьте путь к папке images/. В коде используется относительный путь ../images/ - убедитесь, что структура папок соответствует ожидаемой при запуске приложения.

Проблема: Приложение не компилируется

Решение:

  1. Убедитесь, что все зависимости Qt установлены
  2. Проверьте правильность настроек в файле проекта (CMakeLists.txt или *.pro)
  3. Убедитесь, что компилятор C++ правильно настроен

Проблема: Ошибка "Пожалуйста, введите корректные числовые значения!"

Решение:

  • Вводите только числа (без букв и специальных символов)
  • Используйте точку как десятичный разделитель
  • Убедитесь, что значения находятся в допустимых диапазонах (weight < 500 height <250)

Проблема: Некорректное отображение интерфейса

Решение: Убедитесь, что установлена корректная версия Qt и все необходимые модули.

👥 История разработки

Авторы

  • Makar: Разработка основной логики приложения, реализация алгоритма расчета ИМТ, обработка пользовательского ввода, валидация данных, система визуальной индикации результатов
  • Artem: Проектирование и реализация графического интерфейса, работа с изображениями, настройка системы сборки, тестирование на разных платформах

Основные этапы разработки

  1. Инициализация проекта: Настройка Qt проекта, создание базовой структуры
  2. Разработка логики: Реализация расчета ИМТ, категоризации результатов
  3. Создание GUI: Проектирование интерфейса, добавление элементов управления
  4. Интеграция изображений: Добавление визуализации категорий ИМТ
  5. Валидация и обработка ошибок: Реализация проверки входных данных
  6. Тестирование: Проверка работы на разных платформах и сценариях
  7. Документирование: Создание документации и инструкций

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published