Загрузка данных


private: System::Void buttonOK_Click(System::Object^ sender, System::EventArgs^ e) 
{
    try
    {
        // Базовая ставка
        double baseRate = Convert::ToDouble(textBoxBaseRate->Text);

        // КБМ (класс предыдущего года) — обычно вводится вручную
        double kbm = Convert::ToDouble(textBoxKBM->Text);   // например 0.8 или 1.0

        // Количество страховых случаев (для небольшой надбавки)
        int accidents = Convert::ToInt32(textBoxAccidents->Text);

        // Получаем коэффициенты из комбобоксов
        double kvs = GetKVS(comboBoxAgeExp->SelectedIndex);      // Возраст и стаж
        double kt  = GetKT(comboBoxTerritory->SelectedIndex);    // Территория
        double km  = GetKM(comboBoxPower->SelectedIndex);        // Мощность

        // Ограничение водителей
        bool limitedDrivers = checkBoxLimited->Checked;
        double ko = limitedDrivers ? 1.0 : 1.8;   // неограниченная = 1.8

        // Период использования (в месяцах)
        int months = Convert::ToInt32(comboBoxPeriod->Text);
        double ks = months / 12.0;

        // ==================== РАСЧЁТ ====================
        double price = baseRate;

        price *= kt;     // территория
        price *= kbm;    // КБМ
        price *= kvs;    // возраст и стаж
        price *= ko;     // ограничение водителей
        price *= km;     // мощность
        price *= ks;     // период

        // Небольшая надбавка за аварии (можно настроить)
        if (accidents >= 3)      price *= 1.50;
        else if (accidents == 2) price *= 1.25;
        else if (accidents == 1) price *= 1.10;

        price = Math::Round(price, 2);

        // ==================== КРАСИВЫЙ ВЫВОД ====================
        String^ result = "=== РАСЧЁТ ПОЛИСА ОСАГО ===\n\n";
        result += "Базовая ставка:          " + baseRate.ToString("N0") + " ₽\n";
        result += "КТ (территория):         " + kt.ToString("0.00") + "\n";
        result += "КБМ:                     " + kbm.ToString("0.00") + "\n";
        result += "КВС (возраст+стаж):      " + kvs.ToString("0.00") + "\n";
        result += "КО (водители):           " + ko.ToString("0.00") + "\n";
        result += "КМ (мощность):           " + km.ToString("0.00") + "\n";
        result += "КС (период):             " + ks.ToString("0.00") + "\n\n";
        result += "ИТОГОВАЯ СТОИМОСТЬ:      " + price.ToString("N2") + " ₽";

        MessageBox::Show(result, "Результат расчёта ОСАГО", 
                         MessageBoxButtons::OK, MessageBoxIcon::Information);
    }
    catch (Exception^ ex)
    {
        MessageBox::Show("Ошибка! Проверьте, что все поля заполнены правильно.\n\n" + ex->Message,
                         "Ошибка ввода", MessageBoxButtons::OK, MessageBoxIcon::Error);
    }
}