-1

我正在制作一个显示订单总价的应用程序。它根据订购的商品数量以及客户是批发商还是零售商来决定价格。

它使用的计算:

如果批发商,1-4 件 = 每件 10 美元。

5 件以上物品 = 每件 9 美元(如果是批发商)。

1-3 件 = 每件 15 美元(如果是零售商)。

4-8 件 = 每件 14 美元(如果是零售商)。

9+ 件 = 每件 12 美元(如果是零售商)。我被困在计算上,对如何去做感到困惑。

GUI是完整的,这是我目前所拥有的:

图形用户界面图片:http: //i.imgur.com/P2tDz.png

Dim quantity As Decimal
Dim price As Decimal
Dim wholesaler As Integer
Dim retailer As Integer

Integer.TryParse(txtUnits.Text, price)

chkRetailer.Text = retailer
chkWholesale.Text = wholesaler


If wholesaler Then
    If Quantity <= 4 Then
        Price = 10
    Else
        Price = 9
    End If
ElseIf retailer Then
    If Quantity <= 3 Then
        Price = 15
    ElseIf Quantity <= 8 Then
        Price = 14
    Else
        Price = 12
    End If
End If

lblTotPrice.Text = price * quantity

lblTotPrice.Text = price.ToString("C0")

这是我感到困惑的计算,我相信我的显示和声明是正确的。

谢谢你。

4

4 回答 4

2

使用Case 语句会更清楚 (提供的链接的 VB 示例非常有帮助)

首先使用一个IF声明来确定您是否是批发商,并确定两个案例声明中的哪一个分配有效价格

于 2012-09-13T21:45:39.263 回答
0

如果按如下方式嵌套 if 循环会更简单。(我在这里使用伪代码。)

If Wholesaler Then
  If Quantity <= 4 Then
    Price = 10
  Else
    Price = 9
  EndIf
ElseIf Retailer Then
  If Quantity <= 3 Then
    Price = 15
  ElseIf Quantity <= 8 Then
    Price = 14
  Else
    Price = 12
  EndIf
End If

TotalCost = Price * Quantity
于 2012-09-13T20:36:29.693 回答
0

这里有很多错误。

该语句从 txtUnits 获取输入并将其分配给 price。

Integer.TryParse(txtUnits.Text, price)

这两行除了将 0 分配给复选框的 text 属性外什么也没做。

chkRetailer.Text = retailer
chkWholesale.Text = wholesaler

这些语句将始终评估为 False,因为它们将始终等于 0。永远不会分配价格。

If wholesaler Then
  'never reaches here
ElseIf retailer Then
  'or here
End If

您正在对标签进行两项分配。这个

lblTotPrice.Text = price * quantity

没用,因为它立即被替换为

lblTotPrice.Text = price.ToString("C0")
于 2012-09-14T01:02:24.993 回答
0

我认为你是对的,但是你将价格 * 数量分配给 lblTotPrice,然后分配价格。最后两行试试这个

Dim subTotal as integer
subtotal = price * quantity 
lblTotPrice.Text = subtotal.ToString("C0") 

您还可以做一些其他可能会有所帮助的事情,例如使用 Select Case 语句在代码中会更好地工作,但我认为这是您的主要问题。

于 2012-09-14T13:14:52.577 回答