Филипп НестеровПроектирование интерфейса и разработка калькулятора

Калькулятор доставки: от массы коробки к расчётному весу

Калькулятор для одной упаковки: пять исходных параметров, промежуточные вычисления и понятная причина выбора итогового веса.

Задача

Коробка 60 × 40 × 40 см весит 8 кг, а расчёт по объёму даёт 19,2 кг. Если показать только итог, человек не поймёт, ошибся ли он при вводе или сработало другое правило. В этом прототипе я сделал основание расчёта видимым рядом с результатом.

Нужно показать, какое правило дало итог, и не смешать расчёт веса со стоимостью перевозки.

Рабочая расчетная модель

Фактическая масса и объемный вес

Измените значения: результат и промежуточные строки пересчитываются сразу.

Как считается

Объемный вес = длина × ширина × высота / делитель. Тарифный вес = max(объемный вес, фактическая масса).

  • Делитель — пример тарифа, не универсальная константа.
  • Габариты одной упаковки измеряются в сантиметрах.
  • Цена, округление тарифа и предельные габариты перевозчика не рассчитаны.

Показал основание рядом с итогом

У формы пять полей: длина, ширина, высота, масса и делитель. Рядом с итогом видны объём коробки, объёмный вес и фактическая масса. Поэтому проверку можно начать с конкретного места: неверный объём — проверить размеры; другой объёмный вес — проверить делитель.

На исходных данных получается 60 × 40 × 40 = 96 000 см³, затем 96 000 / 5000 = 19,2 кг. Масса 8 кг участвует в сравнении, но оказывается меньше. Если изменить только массу на 25 кг, объёмный вес останется прежним, а итог станет 25 кг.

Оставил делитель в форме

Спрятать 5000 внутри формулы было бы проще, но тогда пользователь не увидел бы одно из условий расчёта. При делителе 4000 та же коробка даёт уже 24 кг. Поэтому коэффициент редактируется отдельно, с единицей см³/кг. Калькулятор применяет введённое правило; сам тариф он не подбирает.

Связал ошибку с конкретным полем

Размеры вводятся в сантиметрах, масса — в килограммах. Пустое поле, нулевой делитель или значение вне допустимого диапазона убирают итог и показывают причину ошибки. После исправления расчёт возвращается без повторного заполнения формы.

Размеры в этой версии задаются целыми сантиметрами. Ввод 0,6 вместо 60 отклоняется: переключения единиц здесь нет. Сообщение об ошибке связано с полем и доступно при чтении интерфейса экранной программой.

Что проверено на одной коробке

Габариты во всех пяти примерах — 60 × 40 × 40 см. Изменяется только масса или делитель.

Что изменилиОбъёмный весИтог модели
Исходные: 8 кг, делитель 500096 000 / 5000 = 19,2 кг19,2 кг — по объёму
Масса 25 кг; делитель прежний19,2 кг25 кг — фактическая масса больше
Масса 8 кг; делитель 400024 кг24 кг — по объёму
Масса 19,2 кг; делитель 500019,2 кг19,2 кг — величины равны
Делитель 0Не вычисляетсяОшибка, связанная с полем делителя

Что сделано

Спроектировал форму и разработал расчёт: пять связанных полей, промежуточные значения, явно заданные единицы и проверка допустимого ввода. Собрал контрольные примеры, в которых меняется основание результата.

Готовый прототип пересчитывает вес при изменении вводных, показывает ход расчёта и останавливается на некорректном поле. На одной коробке можно проверить оба исхода: 19,2 кг по объёму и 25 кг по фактической массе.

Контрольные примеры CSV · Повторить проверку · Модель и исходные условия