Бейсбольные билеты - VB - Не рассчитываете правильную цену? - PullRequest
0 голосов
/ 09 ноября 2011
Public Class Form1
Dim intTicketChoice As Integer
Dim finalCost As Decimal
Dim cost As Decimal
Dim seatType As Integer


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Threading.Thread.Sleep(5000)
End Sub

Private Sub cboTypeOfTicket_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboTypeOfTicket.SelectedIndexChanged

    intTicketChoice = Me.cboTypeOfTicket.SelectedIndex
    Me.ListBox1.Items.Clear()
    EnableObjects()

    Select Case intTicketChoice
        Case 0
            SingleGame(seatType)
        Case 1
            Season(seatType)
    End Select
End Sub

Sub EnableObjects()
    lblNumTickets.Visible = True
    txtNumOfTickets.Visible = True
    lblSeatType.Visible = True
    ListBox1.Visible = True
    lblAnswerText.Visible = False
    lblCost.Visible = False
    btnClear.Visible = True
    btnCompute.Visible = True
End Sub

Private Sub SingleGame(ByVal seatType As Integer)

    Me.ListBox1.Items.Add("Box Seats $55")
    Me.ListBox1.Items.Add("Lower Deck Seats $35")
    Me.ListBox1.Items.Add("Upper Deck Seats $25")
    Me.ListBox1.Items.Add("Standing Room Only $15")


    If ListBox1.SelectedItem = "Box Seats $55" Then
        seatType = 0
    ElseIf ListBox1.SelectedItem = "Lower Deck Seats $35" Then
        seatType = 1
    ElseIf ListBox1.SelectedItem = "Upper Deck Seats $25" Then
        seatType = 2
    ElseIf ListBox1.SelectedItem = "Standing Room Only $15" Then
        seatType = 3
    End If

End Sub

Private Sub Season(ByVal seatType As Integer)

    Me.ListBox1.Items.Add("Box Seats $2500")
    Me.ListBox1.Items.Add("Lower Deck Seats $1500")


    If ListBox1.SelectedItem = "Box Seats $2500" Then
        seatType = 4
    Elseif ListBox1.SelectedItem = "Lower Deck Seats $1500" Then
        seatType = 5
    End If

End Sub

Private Sub btnCompute_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCompute.Click
    Dim ticketNum As Integer

    ticketNum = Convert.ToInt32(txtNumOfTickets.Text)
    intTicketChoice = cboTypeOfTicket.SelectedIndex

    Dim totalCost As Decimal = GetGameCost(ticketNum)


    Try
        ticketNum = Convert.ToInt32(txtNumOfTickets.Text)
    Catch Exception As FormatException
        MsgBox("Number of tickets must be numeric")
        Return

    End Try


    'Display cost:
    lblAnswerText.Visible = True
    Me.lblCost.Text = totalCost.ToString("C")
    lblCost.Visible = True


End Sub

Private Function GetGameCost(ByVal ticketNum As Integer)

    If seatType = 0 Then
        finalCost = (ticketNum * 55D)
    ElseIf seatType = 1 Then
        finalCost = (ticketNum * 35D)
    ElseIf seatType = 2 Then
        finalCost = (ticketNum * 25D)
    ElseIf seatType = 3 Then
        finalCost = (ticketNum * 15D)
    ElseIf seatType = 4 Then
        finalCost = (ticketNum * 2500D)
    ElseIf seatType = 5 Then
        finalCost = (ticketNum * 1500D)
    End If
    Return finalCost
End Function

Конечный класс

Привет, ребята, я застрял на домашнем задании VB. Я новичок в этом, так что не рви меня в клочья, хе-хе. В любом случае, каждый раз, когда я пытаюсь вычислить, мне кажется, что я получаю 55 * ticketnum вместо того, чтобы искать фактический тип seatType и использовать его. Я видел здесь еще один вопрос об этой же проблеме, но не смог найти точного ответа на мой вопрос.

Есть идеи или советы?

1 Ответ

0 голосов
/ 09 ноября 2011

Мы не собираемся разрывать вас в клочья, на самом деле очень приятно получить домашнее задание, в котором автор фактически сделал что-то, а не просто дословно выбросить вопрос о задании, ожидая, что он будет ложкой.fed: -)

В этом случае я бы посмотрел на тот факт, что вы передаете seatType обоим SingleGame и Season по значению.

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

Либо передайте по ссылке, чтобы изменения отразились обратно на переменную объекта.или просто используйте саму переменную объекта (вообще не передавая ее в качестве параметра).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...