The three components for a serving of popcorn at a movie theater are popcorn, butter substitute, and a bucket. Using Visual Basic, write a program that requests the cost of these three items and the price of the service as input and then displays the profit.

Suggested Control Names and Attributes:
| Name Property | Text Property | Control Type | Notes |
| frmPopcorn | Popcorn | Form | Holds Controls |
| txtPopcornCost | TextBox | Captures cost of popcorn | |
| txtBucketCost | TextBox | Captures cost of bucket | |
| txtButterCost | TextBox | Captures cost of butter | |
| txtPrice | TextBox | Captures price charged per bucket | |
| btnCalculate | Determine Profit | Button | Triggers event to display profit |
| txtProfit | TextBox | Displays profit. Set Read Only property to True. |
Hints:
- Use a function to determine if the user input is valid.
- Use a sub procedure to calculate and display the results.
Write the Code:
' Project: Popcorn Profit
' Description: Receives input for cost of ingredients and selling price.
' Determines the profit and displays to the screen.
Public Class Popcorn
' Declare global variables
Dim popcornCost As Double = 0
Dim butterCost As Double = 0
Dim bucketCost As Double = 0
Dim price As Double = 0
Dim profit As Double = 0
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
' Evaluates input and displays calculation or error message
If InputIsValid() = True Then
CalculateValue()
Else
MessageBox.Show("Missing or invalid input. Please try again.")
End If
End Sub
Function InputIsValid() As Boolean
' Validates the input
Dim valid As Boolean = True
If IsNumeric(txtPopcornCost.Text) Then
popcornCost = CDbl(txtPopcornCost.Text)
If popcornCost < 0 Then
MessageBox.Show("Cost of popcorn cannot be negative.")
valid = False
End If
Else
MessageBox.Show("Cost of popcorn must be numeric.")
valid = False
End If
If IsNumeric(txtButterCost.Text) Then
butterCost = CDbl(txtButterCost.Text)
If butterCost < 0 Then
MessageBox.Show("Cost of butter cannot be negative.")
valid = False
End If
Else
MessageBox.Show("Cost of butter must be numeric.")
valid = False
End If
If IsNumeric(txtBucketCost.Text) Then
bucketCost = CDbl(txtBucketCost.Text)
If bucketCost < 0 Then
MessageBox.Show("Cost of bucket cannot be negative.")
valid = False
End If
Else
MessageBox.Show("Cost of bucket must be numeric.")
valid = False
End If
If IsNumeric(txtPrice.Text) Then
price = CDbl(txtPrice.Text)
If (price < 0) Then
MessageBox.Show("Price cannot be negative.")
valid = False
End If
Else
MessageBox.Show("Price of popcorn must be numeric.")
valid = False
End If
Return valid
End Function
Sub CalculateValue()
profit = price - popcornCost - butterCost - bucketCost
txtProfit.Text = profit.ToString("C")
End Sub
End Class