Я уже знал, что Бог этот знает много раз, что с ним не так? (МАШИНА БИЛЕТА) НЕТ ОШИБОК НА VS), я думаю, что верхняя строчка может не работать - PullRequest
0 голосов
/ 13 января 2020

Я просматривал это последние пару дней, и лично я не увлекаюсь VB, вкладка загружается, но я не получаю ответ?

Private Sub Button1_click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim Age As Double 
    Dim seatgrading As Double 
    Dim Cardaddition As Single 
    Dim Memberdiscount As Single 
    Dim installments As Double 
    Dim totalcost As Double 
    Dim eachpayment As Integer 
    Dim total As Single 
    Dim price As Single 
    Dim Subtotal As Single 
    Age = CBOAge.Text

    If RBFootball.Checked = True And Age = rbChild.Checked Then
        price = 275
    ElseIf RBFootball.Checked = True And Age = rbAdult.Checked Then
        price = 450
    ElseIf RBFootball.Checked = True And Age = rbOAP.Checked Then
        price = 295
    End If

    If RBRugby.Checked = True And Age = rbChild.Checked Then
        price = 85
    ElseIf RBRugby.Checked = True And Age = rbAdult.Checked Then
        price = 175
    ElseIf RBRugby.Checked = True And Age = rbOAP.Checked Then
        price = 105
    End If

    ' Seat Grades



    If RBG1.Checked = True Then
        seatgrading = 150
    ElseIf RBG2.Checked = True Then
        seatgrading = 120
    ElseIf RBG3.Checked = True Then
        seatgrading = 87.5
    End If
    total = price + seatgrading

    MemberDiscount = installments

    If RBBronze.Checked = True Then
        MemberDiscount = total * 0.08
    ElseIf RBSilver.Checked = True Then
        MemberDiscount = total * 0.09
    ElseIf RBGold.Checked = True Then
        `Cardaddition` = total * 0.025
    End If

    If RBCard.Checked = True Then
        Cardaddition = Subtotal = 0.025
    End If

    If installments = True Then
        installments = total * 0.0375
        total = totalcost + installments
        eachpayment = totalcost / 12
        For count = 1 To 12
            installments = installments & "payment" & "is" & Format(eachpayment, "currency") & vbCrLf
        Next
    End If
    total = Subtotal - MemberDiscount + Cardaddition
    total = Format(totalcost, "currency")

End Sub

1 Ответ

2 голосов
/ 13 января 2020

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

При работе с деньгами лучше всего использовать Тип десятичного числа вместо Single или Double, в противном случае пенни могут go ошибиться после одного или двух вычислений.

Вы можете иметь оператор If внутри другого оператора If, который иногда может привести к меньшему количеству ввода и / или облегчить чтение.

Я не вижу необходимости в переменной age, потому что уже есть радиокнопки для ребенка / взрослого / OAP.

Способ вычисления итоговой суммы цена мне не была ясна, поэтому я переместил некоторые вещи в то, что может или не может быть правильным заказом.

Возможно, переменная installments предназначена для того, чтобы установить флажок, если платежи будут взято ежемесячно - я предположил, что это так.

Я не мог видеть, где результаты представляются пользователю, поэтому я использовал MessageBox.Show - Я уверен, что вы сможете адаптировать его к как вы хотите чтобы показать итого et c.

Private Sub Button1_click(sender As Object, e As EventArgs) Handles Button1.Click

    ' What I think the variable types are:
    ' Dim rbChild, rbAdult, rbOAP As New RadioButton
    ' Dim rbFootball, rbRugby As New RadioButton
    ' Dim rbG1, rbG2, rbG3 As New RadioButton
    ' Dim rbBronze, rbSilver, rbGold As New RadioButton
    ' Dim cbCard As New CheckBox
    ' Dim cbInstallments As New CheckBox


    Dim price As Decimal

    If rbFootball.Checked Then
        If rbChild.Checked Then
            price = 275
        ElseIf rbAdult.Checked Then
            price = 450
        ElseIf rbOAP.Checked Then
            price = 295
        End If

    End If

    If rbRugby.Checked Then
        If rbChild.Checked Then
            price = 85
        ElseIf rbAdult.Checked Then
            price = 175
        ElseIf rbOAP.Checked Then
            price = 105
        End If

    End If

    Dim seatgrading As Decimal

    If rbG1.Checked Then
        seatgrading = 150
    ElseIf rbG2.Checked Then
        seatgrading = 120
    ElseIf rbG3.Checked Then
        seatgrading = 87.5D
    End If

    Dim subtotal As Decimal = price + seatgrading

    Dim memberDiscount As Decimal

    If rbBronze.Checked Then
        memberDiscount = subtotal * 0.08D
    ElseIf rbSilver.Checked Then
        memberDiscount = subtotal * 0.09D
    ElseIf rbGold.Checked Then
        memberDiscount = subtotal * 0.025D
    End If

    Dim cardSurcharge As Decimal

    If cbCard.Checked Then
        cardSurcharge = subtotal * 0.025D
    End If

    Dim total As Decimal = subtotal - memberDiscount + cardSurcharge

    If cbInstallments.Checked Then
        Dim installmentSurcharge = total * 0.0375D
        total = total + installmentSurcharge
        Dim eachpayment As Decimal = total / 12

        MessageBox.Show("Monthly payment is " & eachpayment.ToString("C"))

    End If

    MessageBox.Show("Total payment is " & total.ToString("C"))

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...