Member 12810770 Ответов: 1

Промежуточная задача Visual basic :(


Здравствуйте, я пытаюсь решить проблему, возникшую у меня с моим кодом. я хочу, чтобы мой второй список отображал промежуточный итог всех товаров и цен из моего первого списка. я не могу понять, как получить промежуточный итог. пожалуйста, помогите мне новичку в этом, так что мой код может быть грязным. когда я добавляю товары в свой первый список, я не могу получить расширенную цену каждого из них в качестве промежуточного итога во второй список.



Public Class Form1
    Dim extendedprice As Decimal
    Dim subtotal As Decimal


    Private Sub btnorder_Click(sender As Object, e As EventArgs) Handles btnorder.Click
        Dim itemnumber As Decimal
        Dim price As Decimal
        Dim quantity As Decimal

        itemnumber = txtitemnumber.Text
        quantity = txtquantity.Text
        extendedprice = price * quantity

        'Item Number 100 displays Wrench
        If itemnumber = 100 Then
            extendedprice = 3.5 * quantity
            listorder.Items.Add("Item Number: 100")
            listorder.Items.Add("Description: Wrench")
            listorder.Items.Add("Quantity:" & quantity)
            listorder.Items.Add("Price: $3.50")
            listorder.Items.Add("Extended Price:" & extendedprice.ToString("c"))

        End If

        'Item Number 200 displays Pipe Wrench
        If itemnumber = 200 Then
            extendedprice = 5.75 * quantity
            listorder.Items.Add("Item Number: 200")
            listorder.Items.Add("Description: Pipe Wrench")
            listorder.Items.Add("Quantity:" & quantity)
            listorder.Items.Add("Price: $5.75")
            listorder.Items.Add("Extended Price:" & extendedprice.ToString("c"))
        End If

        'Item Number 300 displays Rip Saw
        If itemnumber = 300 Then
            extendedprice = 16.23 * quantity
            listorder.Items.Add("Item Number: 300")
            listorder.Items.Add("Description: Rip Saw")
            listorder.Items.Add("Quantity:" & quantity)
            listorder.Items.Add("Price: $16.23")
            listorder.Items.Add("Extended Price:" & extendedprice.ToString("c"))
        End If

        'Item Number 400 displays Framing Hammer
        If itemnumber = 400 Then
            extendedprice = 32.5 * quantity
            listorder.Items.Add("Item Number: 400")
            listorder.Items.Add("Description: Framing Hammer")
            listorder.Items.Add("Quantity:" & quantity)
            listorder.Items.Add("Price: $32.50")
            listorder.Items.Add("Extended Price:" & extendedprice.ToString("c"))
        End If

        'Item Number 500 displays Square
        If itemnumber = 500 Then
            extendedprice = 27.5 * quantity
            listorder.Items.Add("Item Number: 500")
            listorder.Items.Add("Description: Square")
            listorder.Items.Add("Quantity:" & quantity)
            listorder.Items.Add("Price: $27.50")
            listorder.Items.Add("Extended Price:" & extendedprice.ToString("c"))
        End If

        'Item Number 600 displays Solder
        If itemnumber = 600 Then
            extendedprice = 6.34 * quantity
            listorder.Items.Add("Item Number: 600")
            listorder.Items.Add("Description: Solder")
            listorder.Items.Add("Quantity:" & quantity)
            listorder.Items.Add("Price: $6.34")
            listorder.Items.Add("Extended Price:" & extendedprice.ToString("c"))
        End If

        'Item Number 700 displays Paste
        If itemnumber = 700 Then
            extendedprice = 4.26 * quantity
            listorder.Items.Add("Item Number: 700")
            listorder.Items.Add("Description: Paste")
            listorder.Items.Add("Quantity:" & quantity)
            listorder.Items.Add("Price: $4.26")
            listorder.Items.Add("Extended Price:" & extendedprice.ToString("c"))
        End If

        'Item Number 800 displays Screwdriver
        If itemnumber = 800 Then
            extendedprice = 11.77 * quantity
            listorder.Items.Add("Item Number: 800")
            listorder.Items.Add("Description: Screwdriver")
            listorder.Items.Add("Quantity:" & quantity)
            listorder.Items.Add("Price: $11.77")
            listorder.Items.Add("Extended Price:" & extendedprice.ToString("c"))
        End If

        ' Adds a line under the order
        listorder.Items.Add("--------------------------------------------")

        'Clears the Item Number Text Box & Quantity Text Box
        txtitemnumber.Text = ""
        txtquantity.Text = ""


    End Sub

    Private Sub btncheckout_Click(sender As Object, e As EventArgs) Handles btncheckout.Click
        Dim discount As Decimal
        Dim totalprice As Decimal


        discount = extendedprice - discount
        totalprice = extendedprice * discount




        listinvoice.Items.Add("Timber Tom’s Hardware")
        listinvoice.Items.Add(Date.Now)
        listinvoice.Items.Add("--------------------------------------------")




        listinvoice.Items.Add("Sub Total " & subtotal.ToString("c"))


        'no discount
        If rbnodiscount.Checked Then
            totalprice = extendedprice
            listinvoice.Items.Add("No Discount")
            listinvoice.Items.Add("Total Price:" & totalprice.ToString("c"))
        End If

        '10% discount
        If rb10discount.Checked Then
            discount = extendedprice * 0.1
            totalprice = extendedprice - discount
            listinvoice.Items.Add("10%Discount:" & discount.ToString("c"))
            listinvoice.Items.Add("Total Price:" & totalprice.ToString("c"))
        End If


        '15% discount
        If rb15discount.Checked Then
            discount = extendedprice * 0.15
            totalprice = extendedprice - discount
            listinvoice.Items.Add("15% Discount:" & discount.ToString("c"))
            listinvoice.Items.Add("Total Price:" & totalprice.ToString("c"))
        End If




    End Sub

    Private Sub btnclearitems_Click(sender As Object, e As EventArgs) Handles btnclearitems.Click

        'Clears Order List Box
        listorder.Items.Clear()

    End Sub

    Private Sub btnclearinvoice_Click(sender As Object, e As EventArgs) Handles btnclearinvoice.Click

        'Clears Invoice List Box
        listinvoice.Items.Clear()

    End Sub

    Private Sub btnexit_Click(sender As Object, e As EventArgs) Handles btnexit.Click

        'Asks if you want to exit
        If MsgBox("Are you sure you want to exit?", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
            Application.Exit()

        End If
    End Sub
End Class


Что я уже пробовал:

я пробовал разные способы, но я потерял эту последнюю часть ;(

[no name]

Строки-это не числа. Вы не можете перемножать строки и числа вместе.

Suvendu Shekhar Giri

Вы знаете отладку?

1 Ответов

Рейтинг:
1

CHill60

Предполагая, что вы все еще должны выполнить это задание...

Вы должны преобразовать содержимое текстовых полей в соответствующий тип, прежде чем пытаться использовать их в каких-либо расчетах:

Dim itemnumber As Integer
Dim quantity As Decimal

If Not Integer.TryParse(txtitemnumber.Text, itemnumber) Then
	MessageBox.Show("No item number supplied")
	Return
End If
If Not Decimal.TryParse(txtquantity.Text, quantity) Then
	MessageBox.Show("No Quantity supplied")
	Return
End If
Затем в кнопке оформления заказа вы предполагаете, что в счете-фактуре есть только один товар, и extendedprice будет присвоено значение только один раз. Лучше было бы пройти через счет-фактуру и рассчитать требуемые значения - я использую здесь ваш listview, это не лучший подход, но он будет делать, чтобы продемонстрировать.
Private Sub btncheckout_Click(sender As Object, e As EventArgs) Handles btncheckout.Click

	Dim discount As Decimal

	'no discount
	If rbnodiscount.Checked Then
		discount = 0
	End If
	'10% discount
	If rb10discount.Checked Then
		discount = 10
	End If
	'15% discount
	If rb15discount.Checked Then
		discount = 15
	End If

	Dim subTotal As Decimal = 0.0
	For Each item In listorder.Items
		If item.ToString().StartsWith("Extended Price:") Then
			Dim extendedprice As Decimal = Decimal.Parse(item.ToString().Substring(16))
			subTotal = subTotal + extendedprice
		End If
	Next

	Dim totalprice As Decimal = subTotal - ((discount / 100.0) * subTotal)

	listinvoice.Items.Add("Timber Tom’s Hardware")
	listinvoice.Items.Add(Date.Now)
	listinvoice.Items.Add("--------------------------------------------")

	listinvoice.Items.Add("Sub Total " & subtotal.ToString("c"))
	listinvoice.Items.Add(String.Format("{0} Discount", IIf(discount = 0, "No", discount.ToString() + "%")))
	listinvoice.Items.Add("Total Price:" & totalprice.ToString("c"))

End Sub
Ваш следующий шаг должен состоять в том, чтобы переместить всю эту информацию об элементах в коллекцию-отделить ваши данные от вашей презентации


Graeme_Grant

Хороший ответ на старый вопрос ;)

CHill60

Не знаю, как он оказался в верхней части моего списка (помыл палец мыши и теперь, вероятно, ничего не может с ним сделать), но я полагал, что они, должно быть, уже приближаются к концу семестровых экзаменов ;)

Graeme_Grant

Такое случается со всеми нами :)