2012-09-13 140 views
-1

我正在申請顯示訂單的總價格。它根據訂購的物品數量以及客戶是批發商還是零售商來決定價格。VB.net價格計算

計算它的用途:

1-4項= $ 10元項目,如果批發商。

如果是批發商,5件商品= 9美元。

1-3件商品=零售商每件15美元。

4-8件=每件14美元,如果零售商。

如果是零售商,9件商品=每件12美元。 我被卡在計算上,並且對我將如何做到這一點感到困惑。

的GUI是完整的,這裏是我到目前爲止有: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") 

這是我在迷茫的計算,我有顯示和聲明正確我相信。

謝謝。

+0

您的零售商/批發商控件應該是RadioButton,而不是複選框。 –

+0

這裏有一個非常基本的數據流問題。您應該**不**從零售商處設置chkRetailer.Text屬性。您必須從chkRetailer.Checked屬性中設置零售商。零售商必須是布爾型的變量。將'Option Strict On'放在源文件的頂部,以幫助捕捉那樣的邏輯錯誤。 –

+0

你並沒有真正解釋你的意思,堅持計算。計算似乎是價格*數量。我還建議將複選框更改爲單選按鈕,因爲使用複選框,您可以選擇BOTH(該程序將其標記爲批發商) – tehdoommarine

回答

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 
+0

更新OP,這個答案有一點幫助,但仍然需要幫助。 –

2

這將是使用Case statements(提供的鏈接的VB例子是非常有幫助的)更清晰的

首先使用IF語句來確定,如果你是一個批發商,並確定哪兩個案例陳述分配有效價格

+0

你甚至讀過這篇文章嗎? –

+1

你的指責令人困惑。也許指定哪些計算會讓你感到困惑,從而更好地滿足你的需求。 – Michael

+2

此外,您的代碼的最後一行覆蓋倒數第二行,這可能是爲什麼你沒有看到你想要的結果 – Michael

0

這裏有很多錯誤。

此聲明採用txtUnits的輸入並將其分配給價格。

Integer.TryParse(txtUnits.Text, price) 

這兩行除了給複選框的文本屬性賦0外沒有任何作用。

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") 
+0

那麼我應該怎樣糾正它呢? –

+0

我不會給你答案。當你通過調試器時會發生什麼? – Jeff

0

我覺得你這樣做是正確更換,但隨後分配給lblTotPrice價格*數量,然後分配價格。嘗試一下本作的最後兩行

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

也有一些其他的事情可以做,可以幫助,如使用選擇Case語句,將工作更好一點的代碼,但我覺得這是你主要問題。