하나의 목록 상자에서 선택한 항목의 최종 합계를 계산하고 다른 항목을 추가 할 수있는 Visual Basic 클래스 용 프로그램을 작성했습니다. 항목 중 2 개에는 최종 가격에 추가해야하는 판매 세가 있습니다. 또한이 프로그램에는 모든 세금 기록을 보관하는 데 사용되는 모듈이 있으며 모든 세금 관련 기능을 수행하는 데 사용됩니다.Visual Basic에서 모듈을 사용하여 계산 수행
여기에 최신 코드가 나와 있습니다.
Option Strict On
Public Class Form1
Private Sub btnAdd_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAdd.Click
If (txtQuantity.Text = "") Then
MessageBox.Show("Please enter a quantity for the item you selected")
ElseIf Not Integer.TryParse(txtQuantity.Text, CInt(txtQuantity.Text)) Then
MessageBox.Show("The quantity entered is not numeric. Please add a numeric quantity.")
Exit Sub
Else
lstPurchased.Items.Add(txtQuantity.Text & " " & lstSale.Text)
End If
End Sub
Private Sub btnCalculate_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnCalculate.Click
Dim int As Integer
Dim total As Double = 0
For i As Integer = 0 To lstPurchased.Items.Count - 1
Dim lst() As String = lstPurchased.Items(i).ToString.Split({CChar(" ")}, 2)
Integer.TryParse(lst(0), int)
total += TaxesModule.SalesTax(int, lst(1))
Next
MessageBox.Show(CStr(FormatCurrency(total)))
End Sub
Private Sub btnClear_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnClear.Click
lstPurchased.Items.Clear()
txtQuantity.Clear()
End Sub
End Class
그리고 코드가 지금 기록되면 모듈
Option Strict On
Module TaxesModule
Private Const DONUT_TAX As Decimal = CDec(0.083)
Private Const RAISIN_TAX As Decimal = CDec(0.02)
Private Const SS_TAX As Decimal = CDec(0.062) ' <-- you are not using this
Public Function SalesTax(ByVal Quantity As Integer, ByVal item As String) As Double
Dim TotalWithSalesTax As Double
If item = "Wheat Bread" Then
TotalWithSalesTax += (Quantity * 1.15)
ElseIf item = "White Bread" Then
TotalWithSalesTax += (Quantity * 1.05)
ElseIf item = "Donuts" Then
TotalWithSalesTax += (Quantity * (0.5 * DONUT_TAX) + (Quantity * 0.5))
ElseIf item = "Raisins" Then
TotalWithSalesTax += (Quantity * (0.25 * RAISIN_TAX) + (Quantity * 0.25))
End If
Return TotalWithSalesTax
End Function
End Module
에 대한 가장 최근의 코드는, 나는 데 유일한 문제는 "건포도"에 대한 TotalWithSalesTax가 제대로 계산되지 않는 것입니다. 예를 들어, 목록 상자에서 "건포도"를 선택하고 다른 목록 상자에 1의 수량으로 추가하면 메시지 상자에 표시된 합계는 $ 0.00입니다.
나는 문제가 다음 코드 섹션을 생각하기 시작 해요 :
For i As Integer = 0 To lstPurchased.Items.Count - 1
Dim lst() As String = lstPurchased.Items(i).ToString.Split({CChar(" ")}, 2)
나는 그런
For i As Integer = 1 ...
로 변경을 시도 그리고 그에게 도넛과 건포도를 모두 발생하기 때문에 메시지 상자에 총 $ 0.00을 제공하십시오. 그래서 카운트 설정 방법이 전체 목록을 통과하는 것을 허용하지 않는지 궁금합니다. 그러나이를 수정하는 방법을 모르겠습니다.
저는 Visual Basic에 대해 아직 완전히 익숙하지 않습니다. 프로그래밍은 일반적으로 프로그래밍에 익숙합니다. 모듈로 작업하는 것은 처음입니다. 아무도 내가 뭘 잘못하고 있는지 알아낼 수 없으므로 프로그램의 다른 부분으로 이동할 수 있습니까?
나는 당신이 기본적인 프로그래밍 책을 들고 다시 읽기 시작한다고 생각합니다. 변수 범위와'If' 문에 좀 더 집중하십시오. 코드에 많은 문제가 있습니다. – bansi
오, 그래, 나는 많은 문제가 있다고 확신한다. 나는이 코드를 사용하여 일을 끝내고, 다른 것들을 넣고, 오래된 것들 등으로 돌아가서, 내가 가지고 있는지 확실하지 않다. 내가 의도 한 모든 것. 내가 모듈을 추가하기 전에 적어도 세금이 추가되기 전에 모든 것이 계산되어야하기 때문에 모듈에서 물건을 추가하기 시작했을 때 나는 어떤 것을 망쳤다. –
'Public FinalTotal As Double' 또는 개인용으로 변경하십시오 (이 후에 코드를 수정해야합니다). If item = "Wheat Bread"다음은 무엇을 의미합니까? ElseIf item = "White Bread"'? 그게 어떻게 가능해. 모든 변수를 '비공개'로 변환하십시오. Public 변수는 가능한 한 사용하지 마십시오. 그것은 순수한 악입니다. – bansi