The Westfield Carpet company has asked you to write a Visual Basic application that calculates the price of carpeting. To calculate the price of the carpet, you multiply the area of the floor (width x Length) by the price per square foot of the carpet. For example, the area of a floor this is 12 feet long and 10 feet wide is 120 feet to cover that floor with carpet that cost $8 per square foot would cost $960. You should create a class named rectangle with the following properties as doubles: width, length, Area. The area property should be read-only. Provide a method named CalcArea that calculates the x length and stores the result in the area property. Next, create a class named carpet with the following properties: Color (string), style (string) and price (double). The application should have a form similar to the one shown in the figure below. (the carpet price is the price per square foot.) When the calculate button is clicked, the application should copy the data in the text boxes into the appropriate object properties, and then display the area and price.
Suggested Control Names and Attributes:
Name Property | Text Property | Container | Control Type | Notes |
frmCarpetPrice | Carpet Price Calculator | N/A | Form | Holds Controls |
grpCarpetData | Carpet Data | frmCarpetPrice | GroupBox | Holds controls for carpet data |
txtColor | grpCarpetData | TextBox | Captures color of carpet | |
txtStyle | grpCarpetData | TextBox | Captures style of carpet | |
txtPrice | grpCarpetData | TextBox | Captures carpet price (per square foot) | |
grpRoomSize | Room Size | frmCarpetPrice | GroupBox | Holds controls for room size |
txtWidth | grpRoomSize | TextBox | Captures width of room | |
txtLength | grpRoomSize | TextBox | Captures length of room | |
lblArea | grpRoomSize | Label | Display’s area of room | |
lblTotal | frmCarpetPrice | Label | Displays total cost of carpet | |
btnCalculate | &Calculate | frmCarpetPrice | Button | Triggers event to calculate area and price |
btnClear | C&lear | frmCarpetPrice | Button | Triggers event to clear form |
btnExit | E&xit | frmCarpetPrice | Button | Triggers event to close application |
Write the Code for frmCarpet:
' Project: Carpet Price Calculator ' Description: This is the code for the Carpet Class Public Class Carpet Private m_Color As String Private m_Style As String Private m_Price As Double Public Sub New() m_Color = "" m_Style = "" m_Price = 0.0 End Sub Public Property Color As String Get Return m_Color End Get Set(value As String) m_Color = value End Set End Property Public Property Style As String Get Return m_Style End Get Set(value As String) m_Style = value End Set End Property Public Property Price As Double Get Return m_Price End Get Set(value As Double) m_Price = value End Set End Property End Class
Write the Code for frmCarpetPrice:
' Project: Carpet Price Calculator ' Description: User inputs details about the desired carpet and room dimensions. Details are assigned ' to two classes (Carpet and Rectangle). Total area and total price are calculated and displayed. Public Class frmCarpetPrice ' Declare local variables Dim objRectangle As Rectangle ' objRectangle is an object of class Rectangle Dim objCarpet As Carpet ' objCarpet is an object of class Carpet Dim validWidth As Boolean = False ' variable to determine if input is valid Dim validLength As Boolean = False ' variable to determine if input is valid Dim validPrice As Boolean = False ' variable to determine if input is valid Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click Dim totalPrice As Double = 0 objRectangle = New Rectangle() ' create an instance of rectangle objCarpet = New Carpet() ' create an instance of carpet If (txtColor.Text = "") Or (txtStyle.Text = "") Or (txtPrice.Text = "") Or (txtWidth.Text = "") Or (txtLength.Text = "") Then MessageBox.Show("One or more fields is blank. Please try again.") Else GetCarpetData(objCarpet) GetRoomData(objRectangle) End If If validWidth And validLength And validPrice Then totalPrice = objCarpet.Price * objRectangle.Area lblTotal.Text = (totalPrice).ToString("C") End If End Sub Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click ' Clears previous input from the form txtColor.Text = "" txtStyle.Text = "" txtPrice.Text = "" txtWidth.Text = "" txtLength.Text = "" lblArea.Text = "" lblTotal.Text = "" txtColor.Focus() End Sub Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click ' Ends the program when the user clicks on the exit button End End Sub Sub GetRoomData(objRectangle As Rectangle) ' Assigns values from the form to the instance of Rectangle validWidth = False ' initialize to false in case of prior input validLength = False ' initialize to false in case of prior input Try If (CDbl(txtWidth.Text) > 0) Then objRectangle.Width = CDbl(txtWidth.Text) validWidth = True Else MessageBox.Show("Please enter a positive number for width.") txtWidth.Text = "" validWidth = False End If Catch ex As Exception MessageBox.Show("Please enter a positive number for width.") validWidth = False End Try Try If (CDbl(txtLength.Text) > 0) Then objRectangle.Length = CDbl(txtLength.Text) validLength = True Else MessageBox.Show("Please enter a positive number for length.") txtLength.Text = "" validLength = False End If Catch ex As Exception MessageBox.Show("Please enter a positive number for length.") validLength = False End Try If validWidth And validLength Then lblArea.Text = CStr(objRectangle.Area) End If End Sub Sub GetCarpetData(objCarpet As Carpet) ' Assigns values from the form to the instance of Carpet validPrice = False ' initialize to false in case of prior input objCarpet.Color = txtColor.Text objCarpet.Style = txtStyle.Text Try If (CDbl(txtPrice.Text) >= 0) Then objCarpet.Price = CDbl(txtPrice.Text) validPrice = True Else MessageBox.Show("Price cannot be negative.") txtPrice.Text = "" validPrice = False End If Catch ex As Exception MessageBox.Show("Please enter a non-negative number for price.") validPrice = False End Try End Sub End Class
Write the Code for frmRectangle:
' Project: Carpet Price Calculator ' Description: This is the code for the Rectangle Class Public Class Rectangle Private m_Width As Double Private m_Length As Double Private m_Area As Double Public Sub New() m_Width = 0.0 m_Length = 0.0 m_Area = 0.0 End Sub Public Property Width As Double Get Return m_Width End Get Set(value As Double) m_Width = value End Set End Property Public Property Length As Double Get Return m_Length End Get Set(value As Double) m_Length = value End Set End Property ReadOnly Property Area As Double Get CalcArea() Return m_Area End Get End Property Sub CalcArea() m_Area = m_Width * m_Length End Sub End Class