Этот ответ, пожалуй, является скорее способом показать вам, как получить нужный код, чем полным ответом.
При работе с деньгами лучше всего использовать Тип десятичного числа вместо 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