将后续号码添加到已添加的现有号码

Add a subsequent number to the existing number that was already added

我是 vb.net 的新手,我在解决老师要求我们做的这个程序时遇到了问题。

我已经花了几个小时在这个程序上,但我无法完成它。我还有很多其他作业要做,并在截止日期前通过。如果您能提供帮助,请提前致谢。问题来了。

计算按钮的 Click 事件过程应该将项目价格添加到已输入的总价格中;此金额代表客户所欠的小计。该过程应在表格上显示小计。它还应显示 5% 的销售税、运费和客户所欠的总计。总计的计算方法是将小计、5% 的销售税和 6.50 美元的运费相加。例如,如果用户输入 15.75 作为价格,然后单击“计算”按钮,则该按钮的 Click 事件过程应显示 15.75 作为小计,0.79 作为销售税,6.50 作为运费,23.04 作为总应付金额。如果用户随后输入 10 作为价格,然后单击“计算”按钮,则该按钮的 Click 事件过程应显示 25.75 作为小计,1.29 作为销售税,6.50 作为运费,33.54 作为总应付金额。但是,当小计至少为 100 美元时,运费为 0.00。适当地测试应用程序。

这是我的代码:

Public Class Form1
    Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
        Const charge_SalesTax As Decimal = 0.05D
        Const charge_Shipping As Decimal = 6.5D


        Dim decItemPrice As Decimal
        Dim decSubtotal As Decimal
        Dim decSalesTax As Decimal
        Dim decShipping As Decimal
        Dim decTotalDue As Decimal

        Dim rndSalesTax As Decimal
        Dim rndShipping As Decimal
        Dim rndTotalDue As Decimal


        Dim intItemPrice As Integer
        Dim intSubTotal As Integer
        Dim intSalesTax As Integer
        Dim intShipping As Integer
        Dim intTotalDue As Integer

        Integer.TryParse(txtItemPrice.Text, intItemPrice)
        Integer.TryParse(lblSubTotal.Text, intSubTotal)
        Integer.TryParse(lblSalesTax.Text, intSalesTax)
        Integer.TryParse(lblShipping.Text, intShipping)
        Integer.TryParse(lblTotalDue.Text, intTotalDue)

        decItemPrice = Val(txtItemPrice.Text)
        lblSubTotal.Text = Convert.ToString(decItemPrice)
        decSalesTax = Val(txtItemPrice.Text) * charge_SalesTax
        rndSalesTax = Math.Round(decSalesTax, 2)
        lblSalesTax.Text = Convert.ToString(rndSalesTax)
        decShipping = charge_Shipping
        lblShipping.Text = Convert.ToString(decShipping)
        decTotalDue = decItemPrice + decSalesTax + decShipping
        rndTotalDue = Math.Round(decTotalDue, 2)
        lblTotalDue.Text = Convert.ToString(rndTotalDue)

如果我在商品价格上添加额外的数字,我遇到了如何计算销售税的问题,我将输入的额外数字应该添加我已经在商品价格上添加的现有数字,并且应该计算销售税、运费和应付总额。我试图通过使用 if else 来实现它,但我不知道将它放在哪里。

您需要保存小计,以便从一个按钮点击到下一个按钮。在 btnCalc_Click 函数内声明的每个变量的范围对于单个函数调用都是局部的。它不会从一个按钮点击到下一个按钮保存。

小计变量需要存在于 btnCalc_Click 函数之外的某个地方。最明智的地方应该是Form1class的成员变量。您的代码看起来像这样:

Public Class Form1
    Private _subtotal As Decimal = 0.0

    Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
        ' Insert your code that reads the entered item price

        ' Add to the subtotal so far
        Me._subtotal += thisItemPrice

        ' Insert your code that calculates the tax and total, and
        ' updates the display
    End Sub

我建议阅读变量作用域。

您可以参考以下步骤解决

  1. 定义decSubtotal为全局变量,初始值为0
  2. 保存每个附加值。decSubtotal += decItemPrice
  3. 请使用decSalesTax = Val(lblSubTotal.Text) * charge_SalesTax代替decSalesTax = Val(txtItemPrice.Text) * charge_SalesTax
  4. 另外,我建议你可以创建一个清除按钮来优化代码。这将有助于重新计算。

详细代码:

Public Class Form1
    Dim decSubtotal As Decimal = 0
Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
    Const charge_SalesTax As Decimal = 0.05D
    Const charge_Shipping As Decimal = 6.5D

    Dim decItemPrice As Decimal
    Dim decSalesTax As Decimal
    Dim decShipping As Decimal
    Dim decTotalDue As Decimal

    Dim rndSalesTax As Decimal
    Dim rndTotalDue As Decimal

    decItemPrice = Val(txtItemPrice.Text)
    decSubtotal += decItemPrice
    lblSubTotal.Text = Convert.ToString(decSubtotal)
    decSalesTax = Val(lblSubTotal.Text) * charge_SalesTax
    rndSalesTax = Math.Round(decSalesTax, 2)
    lblSalesTax.Text = Convert.ToString(rndSalesTax)
    decShipping = charge_Shipping
    lblShipping.Text = Convert.ToString(decShipping)
    decTotalDue = decSubtotal + decSalesTax + decShipping
    rndTotalDue = Math.Round(decTotalDue, 2)
    lblTotalDue.Text = Convert.ToString(rndTotalDue)
End Sub

Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
    decSubtotal = 0
    txtItemPrice.Text = ""
    lblSalesTax.Text = "lblSalesTax"
    lblShipping.Text = "lblShipping"
    lblSubTotal.Text = "lblSubTotal"
    lblTotalDue.Text = "lblTotalDue"
End Sub
End Class

结果:

这段代码最重要的部分是表单级变量decSubtotal。这会在按钮点击之间保持其值。

我对 Decimal 值使用了 .ToString 方法。我添加了一个参数来显示正确的小数位数或货币格式。请参阅 https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings 解释这一魔法的地方。

Private decSubtotal As Decimal

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim decSalesTax As Decimal
    Dim decShipping As Decimal = 0
    Dim decTotalDue As Decimal
    Dim InputPrice As Decimal
    Decimal.TryParse(TextBox1.Text, InputPrice)
    decSubtotal += InputPrice
    Label1.Text = decSubtotal.ToString("C")
    decSalesTax = decSubtotal * 0.065D
    Label2.Text = decSalesTax.ToString("N2")
    If decSubtotal < 100 Then
        decShipping = 6.5D
    End If
    Label3.Text = decShipping.ToString("N2")
    decTotalDue = decSubtotal + decSalesTax + decShipping
    Label4.Text = decTotalDue.ToString("C")
End Sub