[go: up one dir, main page]

0% found this document useful (0 votes)
103 views24 pages

Lab 4 XML

This document describes an application created in Microsoft Visual Studio .NET for a car repair shop to manage orders. The application allows users to enter customer and vehicle information, add parts and labor, and view order summaries. It uses controls like labels, text boxes, and group boxes. The application calculates totals for parts, labor, tax, and the full order amount using values entered for each item. Validation ensures only numeric values are entered for prices and quantities.

Uploaded by

Darwin Vargas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
103 views24 pages

Lab 4 XML

This document describes an application created in Microsoft Visual Studio .NET for a car repair shop to manage orders. The application allows users to enter customer and vehicle information, add parts and labor, and view order summaries. It uses controls like labels, text boxes, and group boxes. The application calculates totals for parts, labor, tax, and the full order amount using values entered for each item. Validation ensures only numeric values are entered for prices and quantities.

Uploaded by

Darwin Vargas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

MS Visual Basic Example Application: College Park Auto Repair

Introduction
This application is an example of creating and managing XML elements using the XmlTextWriter and
the XmlTextReader classes of the .NET Framework, which implement the processes of writing to, and
reading from, an XML file. The application is used by a car repair shop that takes orders and processes
them.

Windows Controls Used:

• Label
• Button
• Text Box
• Group Box

Practical Learning: Creating the Application

1. Start Microsoft Visual Studio .NET and create a Windows Forms Application
named CollegeParkAutoRepair1
2. In the Solution Explorer, right-click Form1.vb and click Rename
3. Type CPAR.vb and press Enter
4. From the Menus & Toolbars section of the Toolbox, click MenuStrip and click the form
5. Design the menu items as follows:

MenuItem DropDownItems
Text Name Text Name Shortcut
&File mnuFile &New Repair Order mnuFileNew Ctrl+N
&Open Existing
mnuFileOpen Ctrl+O
Order...
&Save Current Order mnuFileSave Ctrl+S
Separator
&Print... mnuFilePrint Ctrl+P
Print Pre&view... mnuFilePrintPreview
Separator
E&xit mnuFileExit

6. Design the form as follows:


Control Name Text Other Properties
Group Order Identification
Label Customer Name:
TextBox txtCustomerName
Label Address
TextBox txtAddress
Label City:
TextBox txtCity
Label State:
TextBox txtState
Label ZIP Code:
TextBox txtZIPCode TextAlign: Right
Label Make / Model:
TextBox txtMake
TextBox txtModel
Label Year:
TextBox txtCarYear TextAlign: Right
Label Problem Description:
TextBox txtProblem
GroupBox Parts Used
Label Part Name
Label Unit Price
Label Qty
Label Sub Total
TextBox txtPartName1
TextBox txtUnitPrice1 0.00 TextAlign: Right
TextBox txtQuantity1 0 TextAlign: Right
TextAlign: Right
TextBox txtSubTotal1 0.00
Enabled: False
TextBox txtPartName2
TextBox txtUnitPrice2 0.00 TextAlign: Right
TextBox txtQuantity2 0 TextAlign: Right
TextAlign: Right
TextBox txtSubTotal2 0.00
Enabled: False
TextBox txtPartName3
TextBox txtUnitPrice3 0.00 TextAlign: Right
TextBox txtQuantity3 0 TextAlign: Right
TextAlign: Right
TextBox txtSubTotal3 0.00
Enabled: False
TextBox txtPartName4
TextBox txtUnitPrice4 0.00 TextAlign: Right
TextBox txtQuantity4 0 TextAlign: Right
TextAlign: Right
TextBox txtSubTotal4 0.00
Enabled: False
TextBox txtPartName5
TextBox txtUnitPrice5 0.00 TextAlign: Right
TextBox txtQuantity5 0 TextAlign: Right
TextAlign: Right
TextBox txtSubTotal5 0.00
Enabled: False
GroupBox Jobs Performed
Label Price
TextBox txtJobPerformed1
TextBox txtJobPrice1 0.00 TextAlign: Right
TextBox txtJobPerformed2
TextBox txtJobPrice2 0.00 TextAlign: Right
TextBox txtJobPerformed3
TextBox txtJobPrice3 0.00 TextAlign: Right
TextBox txtJobPerformed4
TextBox txtJobPrice4 0.00 TextAlign: Right
TextBox txtJobPerformed5
TextBox txtJobPrice5 0.00 TextAlign: Right
GroupBox Order Summary
Label Total Parts:
TextBox txtTotalParts 0.00 TextAlign: Right
Label Total Labor:
TextBox txtTotalLabor 0.00 TextAlign: Right
Label Tax Rate:
TextBox txtTaxRate 7.75 TextAlign: Right
Label %
Label Tax Amount:
TextBox txtTaxAmount 0.00 TextAlign: Right
Label Total Order:
TextBox txtTotalOrder 0.00 TextAlign: Right
Label Recommendations
Multiline: True
TextBox txtRecommendations ScrollBars:
Vertical

7. Right-click the form and click View Code


8. Just above the Public Class CPAR line, import the following namespaces:

Imports System.IO
Imports System.Xml
Imports System.Text

Public Class CPAR

End Class

9. Under the Public Class CPAR line, create a sub-procedure named Calculate as follows:

Imports System.IO
Imports System.Xml

Public Class CPAR


Private Sub Calculate()
Dim UnitPricePart1 As Double, UnitPricePart2 As Double
Dim UnitPricePart3 As Double, UnitPricePart4 As Double
Dim UnitPricePart5 As Double
Dim SubTotalPart1 As Double, SubTotalPart2 As Double
Dim SubTotalPart3 As Double, SubTotalPart4 As Double
Dim SubTotalPart5 As Double, TotalParts As Double
Dim QuantityPart1 As Integer, QuantityPart2 As Integer
Dim QuantityPart3 As Integer, QuantityPart4 As Integer
Dim QuantityPart5 As Integer
Dim Job1Price As Double, Job2Price As Double
Dim Job3Price As Double, Job4Price As Double
Dim Job5Price As Double, TotalLabor As Double
Dim TaxRate As Double, TaxAmount As Double
Dim TotalOrder As Double

' Don't charge a part unless it is clearly identified


If txtPartName1.Text = "" Then
txtUnitPrice1.Text = "0.00"
txtQuantity1.Text = "0"
txtSubTotal1.Text = "0.00"
UnitPricePart1 = 0.0
Else
Try
UnitPricePart1 = CDbl(txtUnitPrice1.Text)
Catch Exc As FormatException
MsgBox("Invalid Unit Price")
txtUnitPrice1.Text = "0.00"
txtUnitPrice1.Focus()
End Try

Try
QuantityPart1 = CInt(txtQuantity1.Text)
Catch Exc As FormatException
MsgBox("Invalid Quantity")
txtQuantity1.Text = "0"
txtQuantity1.Focus()
End Try
End If

If txtPartName2.Text = "" Then


txtUnitPrice2.Text = "0.00"
txtQuantity2.Text = "0"
txtSubTotal2.Text = "0.00"
UnitPricePart2 = 0.0
Else
Try
UnitPricePart2 = CDbl(txtUnitPrice2.Text)
Catch Exc As FormatException
MsgBox("Invalid Unit Price")
txtUnitPrice2.Text = "0.00"
txtUnitPrice2.Focus()
End Try

Try
QuantityPart2 = CInt(txtQuantity2.Text)
Catch Exc As FormatException
MsgBox("Invalid Quantity")
txtQuantity2.Text = "0"
txtQuantity2.Focus()
End Try
End If

If txtPartName3.Text = "" Then


txtUnitPrice3.Text = "0.00"
txtQuantity3.Text = "0"
txtSubTotal3.Text = "0.00"
UnitPricePart3 = 0.0
Else
Try
UnitPricePart3 = CDbl(txtUnitPrice3.Text)
Catch Exc As FormatException
MsgBox("Invalid Unit Price")
txtUnitPrice3.Text = "0.00"
txtUnitPrice3.Focus()
End Try

Try
QuantityPart3 = CInt(txtQuantity3.Text)
Catch Exc As FormatException
MsgBox("Invalid Quantity")
txtQuantity3.Text = "0"
txtQuantity3.Focus()
End Try
End If

If txtPartName4.Text = "" Then


txtUnitPrice4.Text = "0.00"
txtQuantity4.Text = "0"
txtSubTotal4.Text = "0.00"
UnitPricePart4 = 0.0
Else
Try
UnitPricePart4 = CDbl(txtUnitPrice4.Text)
Catch Exc As FormatException
MsgBox("Invalid Unit Price")
txtUnitPrice4.Text = "0.00"
txtUnitPrice4.Focus()
End Try

Try
QuantityPart4 = CInt(txtQuantity4.Text)
Catch Exc As FormatException
MsgBox("Invalid Quantity")
txtQuantity4.Text = "0"
txtQuantity4.Focus()
End Try
End If

If txtPartName5.Text = "" Then


txtUnitPrice5.Text = "0.00"
txtQuantity5.Text = "0"
txtSubTotal5.Text = "0.00"
UnitPricePart5 = 0.0
Else
Try
UnitPricePart5 = CDbl(txtUnitPrice5.Text)
Catch Exc As FormatException
MsgBox("Invalid Unit Price")
txtUnitPrice5.Text = "0.00"
txtUnitPrice5.Focus()
End Try

Try
QuantityPart5 = CInt(txtQuantity5.Text)
Catch Exc As FormatException
MsgBox("Invalid Quantity")
txtQuantity5.Text = "0"
txtQuantity5.Focus()
End Try
End If

' Don't bill the customer for a job that is not specified
If txtJobDescription1.Text = "" Then
txtJobPrice1.Text = "0.00"
Job1Price = 0.0
Else
Try
job1Price = CDbl(txtJobPrice1.Text)
Catch Exc As FormatException
MsgBox("Invalid Job Price")
txtJobPrice1.Text = "0.00"
txtJobPrice1.Focus()
End Try
End If

If txtJobDescription2.Text = "" Then


txtJobPrice2.Text = "0.00"
job2Price = 0.0
Else
Try
job2Price = CDbl(txtJobPrice2.Text)
Catch Exc As FormatException
MsgBox("Invalid Job Price")
txtJobPrice2.Text = "0.00"
txtJobPrice2.Focus()
End Try
End If

If txtJobDescription3.Text = "" Then


txtJobPrice3.Text = "0.00"
job3Price = 0.0
Else
Try
job3Price = CDbl(txtJobPrice3.Text)
Catch Exc As FormatException
MsgBox("Invalid Job Price")
txtJobPrice3.Text = "0.00"
txtJobPrice3.Focus()
End Try
End If

If txtJobDescription4.Text = "" Then


txtJobPrice4.Text = "0.00"
job4Price = 0.0
Else
Try
job4Price = CDbl(txtJobPrice4.Text)
Catch Exc As FormatException
MsgBox("Invalid Job Price")
txtJobPrice4.Text = "0.00"
txtJobPrice4.Focus()
End Try
End If

If txtJobDescription5.Text = "" Then


txtJobPrice5.Text = "0.00"
job5Price = 0.0
Else
Try
job5Price = CDbl(txtJobPrice5.Text)
Catch Exc As FormatException
MsgBox("Invalid Job Price")
txtJobPrice5.Text = "0.00"
txtJobPrice5.Focus()
End Try
End If

SubTotalPart1 = UnitPricePart1 * QuantityPart1


SubTotalPart2 = UnitPricePart2 * QuantityPart2
SubTotalPart3 = UnitPricePart3 * QuantityPart3
SubTotalPart4 = UnitPricePart4 * QuantityPart4
SubTotalPart5 = UnitPricePart5 * QuantityPart5
txtSubTotal1.Text = FormatNumber(SubTotalPart1)
txtSubTotal2.Text = FormatNumber(SubTotalPart2)
txtSubTotal3.Text = FormatNumber(SubTotalPart3)
txtSubTotal4.Text = FormatNumber(SubTotalPart4)
txtSubTotal5.Text = FormatNumber(SubTotalPart5)

TotalParts = SubTotalPart1 + SubTotalPart2 + _


SubTotalPart3 + SubTotalPart4 + SubTotalPart5

TotalLabor = Job1Price + Job2Price + Job3Price + _


Job4Price + Job5Price

Try
TaxRate = CDbl(txtTaxRate.Text)
Catch Exc As FormatException
MsgBox("Invalid Tax Rate")
txtTaxRate.Text = "7.75"
txtTaxRate.Focus()
End Try

Dim totalPartsAndLabor As Double = totalParts + totalLabor


TaxAmount = totalPartsAndLabor * TaxRate / 100
TotalOrder = totalPartsAndLabor + TaxAmount

txtTotalParts.Text = FormatNumber(TotalParts)
txtTotalLabor.Text = FormatNumber(TotalLabor)
txtTaxAmount.Text = FormatNumber(TaxAmount)
txtTotalOrder.Text = FormatNumber(TotalOrder)
End Sub
End Class

10. In the Class Name combo box, select mnuFileNew


11. In the Method Name combo box, select Click and implement the event as follows:

Private Sub mnuFileNew_Click(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles mnuFileNew.Click
txtCustomerName.Text = ""
txtAddress.Text = ""
txtCity.Text = ""
txtState.Text = ""
txtZIPCode.Text = ""
txtMake.Text = ""
txtModel.Text = ""
txtCarYear.Text = ""
txtProblem.Text = ""

txtPartName1.Text = ""
txtUnitPrice1.Text = "0.00"
txtQuantity1.Text = "0"
txtSubTotal1.Text = "0.00"
txtPartName2.Text = ""
txtUnitPrice2.Text = "0.00"
txtQuantity2.Text = "0"
txtSubTotal2.Text = "0.00"
txtPartName3.Text = ""
txtUnitPrice3.Text = "0.00"
txtQuantity3.Text = "0"
txtSubTotal3.Text = "0.00"
txtPartName4.Text = ""
txtUnitPrice4.Text = "0.00"
txtQuantity4.Text = "0"
txtSubTotal4.Text = "0.00"
txtPartName5.Text = ""
txtUnitPrice5.Text = "0.00"
txtQuantity5.Text = "0"
txtSubTotal5.Text = "0.00"

txtJobDescription1.Text = ""
txtJobPrice1.Text = "0.00"
txtJobDescription2.Text = ""
txtJobPrice2.Text = "0.00"
txtJobDescription3.Text = ""
txtJobPrice3.Text = "0.00"
txtJobDescription4.Text = ""
txtJobPrice4.Text = "0.00"
txtJobDescription5.Text = ""
txtJobPrice5.Text = "0.00"

txtTotalParts.Text = "0.00"
txtTotalLabor.Text = "0.00"
txtTaxRate.Text = "7.75"
txtTaxAmount.Text = "0.00"
txtTotalOrder.Text = "0.00"

txtRecommendations.Text = ""
txtCustomerName.Focus()
End Sub

12. Under the above End Sub line, create the following common eventand click the first text
box under Unit Price
13. In the Properties window, click the Events button and double-click Leave
14. Call the Calculate() method as follows:

Private Sub ControlsLeave(ByVal sender As Object, _


ByVal e As EventArgs) _
Handles
txtUnitPrice1.Leave, _

txtUnitPrice2.Leave, _

txtUnitPrice3.Leave, _

txtUnitPrice4.Leave, _
txtUnitPrice5.Leave, _

txtQuantity1.Leave, _

txtQuantity2.Leave, _

txtQuantity3.Leave, _

txtQuantity4.Leave, _

txtQuantity5.Leave, _

txtJobPrice1.Leave, _

txtJobPrice2.Leave, _

txtJobPrice3.Leave, _

txtJobPrice4.Leave, _

txtJobPrice5.Leave, _

txtTaxRate.Leave
Calculate()
End Sub

15. Return to the form


16. From the Printing section of the Toolbox, click the PrintDocument button and click
the form
17. While the print document control is still selected, in the Properties window, change its
name to docPrint
18. Right-click the form and click View Code
19. In the Class name combo box, select docPrint
20. In the Method Name combo box, select PrintPage and implement the event as follows:

Private Sub docPrint_PrintPage(ByVal sender As Object, _


ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
Handles docPrint.PrintPage
e.Graphics.DrawLine(New Pen(Color.Black, 2), 60, 90, 680, 90)
e.Graphics.DrawLine(New Pen(Color.Black, 1), 60, 93, 680, 93)

Dim strDisplay As String = "College Park Auto Repair"


Dim fntString As System.Drawing.Font = _
New Font("Times New Roman", 28, _
FontStyle.Bold)
e.Graphics.DrawString(strDisplay, fntString, _
Brushes.Black, 160, 100)

strDisplay = "Customer Car Repair Order"


fntString = New System.Drawing.Font("Times New Roman", 18, _
FontStyle.Bold)
e.Graphics.DrawString(strDisplay, fntString, _
Brushes.Black, 220, 150)

e.Graphics.DrawLine(New Pen(Color.Black, 1), _


60, 184, 680, 184)
e.Graphics.DrawLine(New Pen(Color.Black, 2), _
60, 187, 680, 187)

fntString = New System.Drawing.Font("Times New Roman", _


12, FontStyle.Bold)
e.Graphics.DrawString("Order Identification", fntString, _
Brushes.Black, 80, 200)

e.Graphics.DrawLine(New Pen(Color.Black, 1), _


100, 250, 640, 250)

fntString = New System.Drawing.Font("Times New Roman", _


10, FontStyle.Bold)
e.Graphics.DrawString("Customer Name:", fntString, _
Brushes.Black, 100, 260)
fntString = New System.Drawing.Font("Times New Roman", 10, _
FontStyle.Regular)
e.Graphics.DrawString(txtCustomerName.Text, fntString, _
Brushes.Black, 260, 260)

e.Graphics.DrawLine(New Pen(Color.Black, 1), _


100, 280, 640, 280)

fntString = New Font("Times New Roman", 10, FontStyle.Bold)


e.Graphics.DrawString("Address:", fntString, _
Brushes.Black, 100, 290)
fntString = New Font("Times New Roman", _
10, FontStyle.Regular)
e.Graphics.DrawString(txtAddress.Text, fntString, _
Brushes.Black, 260, 290)

e.Graphics.DrawLine(New Pen(Color.Black, 1), _


100, 310, 640, 310)

fntString = New Font("Times New Roman", _


10, FontStyle.Regular)
Dim strAddress As String = txtCity.Text.ToString()& ", " & _
txtState.Text(+" " & txtZIPCode.Text)
e.Graphics.DrawString(strAddress, fntString, _
Brushes.Black, 260, 320)
e.Graphics.DrawLine(New Pen(Color.Black, 1), _
100, 340, 640, 340)

fntString = New Font("Times New Roman", 10, FontStyle.Bold)


e.Graphics.DrawString("Car:", fntString, _
Brushes.Black, 100, 350)
fntString = New Font("Times New Roman", _
10, FontStyle.Regular)
Dim strCar As String = txtMake.Text & ", " & txtModel.Text & _
", " & txtCarYear.Text
e.Graphics.DrawString(strCar, fntString, _
Brushes.Black, 260, 350)
e.Graphics.DrawLine(New Pen(Color.Black, 1), _
100, 370, 640, 370)

fntString = New Font("Times New Roman", 10, FontStyle.Bold)


e.Graphics.DrawString("Problem Description:", fntString, _
Brushes.Black, 100, 380)
fntString = New Font("Times New Roman", _
10, FontStyle.Regular)
e.Graphics.DrawString(txtProblem.Text, fntString, _
Brushes.Black, _
New RectangleF(260, 380, 420, 380))
e.Graphics.DrawLine(New Pen(Color.Black, 1), _
100, 400, 640, 400)

fntString = New System.Drawing.Font("Times New Roman", _


12, FontStyle.Bold)
e.Graphics.DrawString("Parts Used", fntString, _
Brushes.Black, 80, 430)

e.Graphics.DrawLine(New Pen(Color.Black, 2), _


80, 450, 680, 450)

e.Graphics.DrawString("Parts Name", fntString, _


Brushes.Black, 100, 460)
e.Graphics.DrawString("Unit Price", fntString, _
Brushes.Black, 420, 460)
e.Graphics.DrawString("Qty", fntString, _
Brushes.Black, 520, 460)
e.Graphics.DrawString("Sub-Total", fntString, _
Brushes.Black, 562, 460)

e.Graphics.DrawLine(New Pen(Color.Black, 1), _


100, 480, 640, 480)

fntString = New Font("Times New Roman", 10, _


FontStyle.Regular)
Dim fmtString As StringFormat = New StringFormat
fmtString.Alignment = StringAlignment.Far

e.Graphics.DrawString(txtPartName1.Text, fntString, _
Brushes.Black, 100, 490)
e.Graphics.DrawString(txtUnitPrice1.Text, fntString, _
Brushes.Black, 480, 490, fmtString)
e.Graphics.DrawString(txtQuantity1.Text, fntString, _
Brushes.Black, 540, 490, fmtString)
e.Graphics.DrawString(txtSubTotal1.Text, fntString, _
Brushes.Black, 630, 490, fmtString)
e.Graphics.DrawLine(New Pen(Color.Black, 1), _
100, 510, 640, 510)

e.Graphics.DrawString(txtPartName2.Text, fntString, _
Brushes.Black, 100, 520)
e.Graphics.DrawString(txtUnitPrice2.Text, fntString, _
Brushes.Black, 480, 520, fmtString)
e.Graphics.DrawString(txtQuantity2.Text, fntString, _
Brushes.Black, 540, 520, fmtString)
e.Graphics.DrawString(txtSubTotal2.Text, fntString, _
Brushes.Black, 630, 520, fmtString)
e.Graphics.DrawLine(New Pen(Color.Black, 1), _
100, 540, 640, 540)

e.Graphics.DrawString(txtPartName3.Text, fntString, _
Brushes.Black, 100, 550)
e.Graphics.DrawString(txtUnitPrice3.Text, fntString, _
Brushes.Black, 480, 550, fmtString)
e.Graphics.DrawString(txtQuantity3.Text, fntString, _
Brushes.Black, 540, 550, fmtString)
e.Graphics.DrawString(txtSubTotal3.Text, fntString, _
Brushes.Black, 630, 550, fmtString)
e.Graphics.DrawLine(New Pen(Color.Black, 1), _
100, 570, 640, 570)

e.Graphics.DrawString(txtPartName4.Text, fntString, _
Brushes.Black, 100, 580)
e.Graphics.DrawString(txtUnitPrice4.Text, fntString, _
Brushes.Black, 480, 580, fmtString)
e.Graphics.DrawString(txtQuantity4.Text, fntString, _
Brushes.Black, 540, 580, fmtString)
e.Graphics.DrawString(txtSubTotal4.Text, fntString, _
Brushes.Black, 630, 580, fmtString)
e.Graphics.DrawLine(New Pen(Color.Black, 1), _
100, 600, 640, 600)

e.Graphics.DrawString(txtPartName5.Text, fntString, _
Brushes.Black, 100, 610)
e.Graphics.DrawString(txtUnitPrice5.Text, fntString, _
Brushes.Black, 480, 610, fmtString)
e.Graphics.DrawString(txtQuantity5.Text, fntString, _
Brushes.Black, 540, 610, fmtString)
e.Graphics.DrawString(txtSubTotal5.Text, fntString, _
Brushes.Black, 630, 610, fmtString)
e.Graphics.DrawLine(New Pen(Color.Black, 1), _
100, 630, 640, 630)

fntString = New Font("Times New Roman", _


12, FontStyle.Bold)
e.Graphics.DrawString("Jobs Performed", fntString, _
Brushes.Black, 80, 650)
e.Graphics.DrawLine(New Pen(Color.Black, 2), _
80, 670, 680, 670)

e.Graphics.DrawString("Job Name", fntString, _


Brushes.Black, 100, 680)
e.Graphics.DrawString("Price", fntString, _
Brushes.Black, 562, 680)
e.Graphics.DrawLine(New Pen(Color.Black, 1), _
100, 700, 640, 700)

fntString = New Font("Times New Roman", 10, _


FontStyle.Regular)

e.Graphics.DrawString(txtJobDescription1.Text, fntString, _
Brushes.Black, 100, 710)
e.Graphics.DrawString(txtJobPrice1.Text, fntString, _
Brushes.Black, 600, 710, fmtString)
e.Graphics.DrawLine(New Pen(Color.Black, 1), _
100, 730, 640, 730)

e.Graphics.DrawString(txtJobDescription2.Text, fntString, _
Brushes.Black, 100, 740)
e.Graphics.DrawString(txtJobPrice2.Text, fntString, _
Brushes.Black, 600, 740, fmtString)
e.Graphics.DrawLine(New Pen(Color.Black, 1), _
100, 760, 640, 760)

e.Graphics.DrawString(txtJobDescription3.Text, fntString, _
Brushes.Black, 100, 770)
e.Graphics.DrawString(txtJobPrice3.Text, fntString, _
Brushes.Black, 600, 770, fmtString)
e.Graphics.DrawLine(New Pen(Color.Black, 1), _
100, 790, 640, 790)

e.Graphics.DrawString(txtJobDescription4.Text, _
fntString, Brushes.Black, 100, 800)
e.Graphics.DrawString(txtJobPrice4.Text, fntString, _
Brushes.Black, 600, 800, fmtString)
e.Graphics.DrawLine(New Pen(Color.Black, 1), _
100, 820, 640, 820)

e.Graphics.DrawString(txtJobDescription5.Text, _
fntString, Brushes.Black, 100, 830)
e.Graphics.DrawString(txtJobPrice5.Text, fntString, _
Brushes.Black, 600, 830, fmtString)
e.Graphics.DrawLine(New Pen(Color.Black, 1), _
100, 850, 640, 850)

fntString = New System.Drawing.Font("Times New Roman", _


12, FontStyle.Bold)
e.Graphics.DrawString("Order Summary", fntString, _
Brushes.Black, 80, 870)
e.Graphics.DrawLine(New Pen(Color.Black, 2), _
80, 890, 680, 890)

fntString = New System.Drawing.Font("Times New Roman", _


10, FontStyle.Bold)
e.Graphics.DrawString("Total Parts:", fntString, _
Brushes.Black, 500, 900)
fntString = New System.Drawing.Font("Times New Roman", _
10, FontStyle.Regular)
e.Graphics.DrawString(txtTotalParts.Text, fntString, _
Brushes.Black, 640, 900, fmtString)

fntString = New System.Drawing.Font("Times New Roman", _


10, FontStyle.Bold)
e.Graphics.DrawString("Total Labor:", fntString, _
Brushes.Black, 500, 920)
fntString = New System.Drawing.Font("Times New Roman", _
10, FontStyle.Regular)
e.Graphics.DrawString(txtTotalLabor.Text, fntString, _
Brushes.Black, 640, 920, fmtString)

fntString = New System.Drawing.Font("Times New Roman", _


10, FontStyle.Bold)
e.Graphics.DrawString("Tax Rate:", fntString, _
Brushes.Black, 500, 940)
fntString = New System.Drawing.Font("Times New Roman", _
10, FontStyle.Regular)
e.Graphics.DrawString(txtTaxRate.Text, fntString, _
Brushes.Black, 640, 940, fmtString)

fntString = New System.Drawing.Font("Times New Roman", _


10, FontStyle.Bold)
e.Graphics.DrawString("Tax Amount:", fntString, _
Brushes.Black, 500, 960)
fntString = New System.Drawing.Font("Times New Roman", _
10, FontStyle.Regular)
e.Graphics.DrawString(txtTaxAmount.Text, fntString, _
Brushes.Black, 640, 960, fmtString)

fntString = New System.Drawing.Font("Times New Roman", _


10, FontStyle.Bold)
e.Graphics.DrawString("Repair Total:", fntString, _
Brushes.Black, 500, 980)
fntString = New System.Drawing.Font("Times New Roman", _
10, FontStyle.Regular)
e.Graphics.DrawString(txtTotalOrder.Text, fntString, _
Brushes.Black, 640, 980, fmtString)

fntString = New System.Drawing.Font("Times New Roman", _


10, FontStyle.Bold)
e.Graphics.DrawString("Recommendations:", fntString, _
Brushes.Black, 100, 900)
fntString = New System.Drawing.Font("Times New Roman", _
10, FontStyle.Regular)
e.Graphics.DrawString(txtRecommendations.Text, fntString, _
Brushes.Black, New RectangleF(100, 920, 350, 280))
End Sub

21. Return to the form


22. From the Printing section of the Toolbox, click the PrintDialog button and click the
form
23. While the print control is still selected, in the Properties window, change its Name
to dlgPrint
24. Click Document and select docPrint
25. Right-click the form and click View Code
26. In the Class Name combo box, select mnuFilePrint
27. In the Method Name combo box, select Click and implement the event as follows:

Private Sub mnuFilePrint_Click(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles mnuFilePrint.Click
If dlgPrint.ShowDialog() = DialogResult.OK Then
docPrint.Print()
End If
End Sub

28. Return to the form


29. From the Printing section of the Toolbox, click PrintPreviewDialog and click the form
30. In the Properties window, change its (Name) to dlgPrintPreview
31. Still in the Properties windows, set its Document property to docPrint
32. Right-click the form and click View Code
33. In the Class Name combo box, select mnuFilePrintPreview
34. In the Method Name combo box, select Click and implement the event as follows:

Private Sub mnuFilePrintPreview_Click(ByVal sender As Object,


_
ByVal e As
System.EventArgs) _
Handles
mnuFilePrintPreview.Click
dlgPrintPreview.ShowDialog()
End Sub

35. Save the file


36. Return to the form
37. From the Dialogs section of the Toolbox, click SaveFileDialog and click the form
38. Change its properties as follows:
Title: Save Current Repair Order
DefaultExt: xml
Filter: Repair Orders (*.xml)|*.xml|All Files|
Name: dlgSave
39. Right-click the form and click View Code
40. In the Class Name combo box, select mnuFileSave
41. In the Method Name combo box, select Click and implement the event as follows:

Private Sub mnuFileSave_Click(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles mnuFileSave.Click
' Just in case, calculate the order now
Calculate()
' This number will be used to incrementally
' create the files by their names
Dim iFilename As Integer
Dim Filename As String
' If this directory doesn't exist, create it
' Also, get a reference to this directory for later use
Dim FolderName As String = "C:\College Park Auto Repair"
Dim Folder As DirectoryInfo = Directory.CreateDirectory(FolderName)

' Get the list of files, if any, from the above folder
Dim ListOfFiles() As FileInfo = Folder.GetFiles("*.xml")

' If there is no XML file in the directory,


' then get ready to create the first file
If ListOfFiles.Length = 0 Then
' Create the name of the (initial) file
iFilename = 1000
Else ' If there was at least one file in the directory
' Get a reference to the last file
Dim fleLast As FileInfo = ListOfFiles(ListOfFiles.Length - 1)
' Get the name of the last file without its extension
Dim fwe As String = Path.GetFileNameWithoutExtension(fleLast.FullName)
' Get the name of the file
iFilename = CInt(fwe)
End If

Filename = FolderName& "\" & cstr(iFilename + 1)& ".xml"

' Get ready to display it in the Save dialog box


dlgSave.FileName = Filename

' Find out if the user clicked OK after displaying the Save dialog box
If dlgSave.ShowDialog() = DialogResult.OK Then
Dim wtrRepairOrder As XmlTextWriter = New XmlTextWriter(Filename, _
Encoding.UTF8)

' Create the contents of the XML file


' Notice that we are not making an attempt to check the values
wtrRepairOrder.WriteStartDocument()

wtrRepairOrder.WriteStartElement("RepairOrders")
wtrRepairOrder.WriteStartElement("Invoice")

wtrRepairOrder.WriteElementString("CustomerName", txtCustomerName.Text)
wtrRepairOrder.WriteElementString("Addres", txtAddress.Text)
wtrRepairOrder.WriteElementString("City", txtCity.Text)
wtrRepairOrder.WriteElementString("State", txtState.Text)
wtrRepairOrder.WriteElementString("ZIPCode", txtZIPCode.Text)
wtrRepairOrder.WriteElementString("Make", txtMake.Text)
wtrRepairOrder.WriteElementString("Model", txtModel.Text)
wtrRepairOrder.WriteElementString("CarYear", txtCarYear.Text)
wtrRepairOrder.WriteElementString("ProbDescription", txtProblem.Text)
wtrRepairOrder.WriteElementString("PartName1", txtPartName1.Text)
wtrRepairOrder.WriteElementString("UnitPrice1", txtUnitPrice1.Text)
wtrRepairOrder.WriteElementString("Quantity1", txtQuantity1.Text)
wtrRepairOrder.WriteElementString("SubTotal1", txtSubTotal1.Text)
wtrRepairOrder.WriteElementString("PartName2", txtPartName2.Text)
wtrRepairOrder.WriteElementString("UnitPrice2", txtUnitPrice2.Text)
wtrRepairOrder.WriteElementString("Quantity2", txtQuantity2.Text)
wtrRepairOrder.WriteElementString("SubTotal2", txtSubTotal2.Text)
wtrRepairOrder.WriteElementString("PartName3", txtPartName3.Text)
wtrRepairOrder.WriteElementString("UnitPrice3", txtUnitPrice3.Text)
wtrRepairOrder.WriteElementString("Quantity3", txtQuantity3.Text)
wtrRepairOrder.WriteElementString("SubTotal3", txtSubTotal3.Text)
wtrRepairOrder.WriteElementString("PartName4", txtPartName4.Text)
wtrRepairOrder.WriteElementString("UnitPrice4", txtUnitPrice4.Text)
wtrRepairOrder.WriteElementString("Quantity4", txtQuantity4.Text)
wtrRepairOrder.WriteElementString("SubTotal4", txtSubTotal4.Text)
wtrRepairOrder.WriteElementString("PartName5", txtPartName5.Text)
wtrRepairOrder.WriteElementString("UnitPrice5", txtUnitPrice5.Text)
wtrRepairOrder.WriteElementString("Quantity5", txtQuantity5.Text)
wtrRepairOrder.WriteElementString("SubTotal5", txtSubTotal5.Text)
wtrRepairOrder.WriteElementString("JobDescription1", _
txtJobDescription1.Text)
wtrRepairOrder.WriteElementString("JobPrice1", txtJobPrice1.Text)
wtrRepairOrder.WriteElementString("JobDescription2", _
txtJobDescription2.Text)
wtrRepairOrder.WriteElementString("JobPrice2", txtJobPrice2.Text)
wtrRepairOrder.WriteElementString("JobDescription3", _
txtJobDescription3.Text)
wtrRepairOrder.WriteElementString("JobPrice3", txtJobPrice3.Text)
wtrRepairOrder.WriteElementString("JobDescription4", _
txtJobDescription4.Text)
wtrRepairOrder.WriteElementString("JobPrice4", txtJobPrice4.Text)
wtrRepairOrder.WriteElementString("JobDescription5", _
txtJobDescription5.Text)
wtrRepairOrder.WriteElementString("JobPrice5", txtJobPrice5.Text)
wtrRepairOrder.WriteElementString("TotalPart", txtTotalParts.Text)
wtrRepairOrder.WriteElementString("TotalLabor", txtTotalLabor.Text)
wtrRepairOrder.WriteElementString("TaxRate", txtTaxRate.Text)
wtrRepairOrder.WriteElementString("TaxAmount", txtTaxAmount.Text)
wtrRepairOrder.WriteElementString("TotalOrder", txtTotalOrder.Text)
wtrRepairOrder.WriteElementString("Recommendation", _
txtRecommendations.Text)

wtrRepairOrder.WriteEndElement()
wtrRepairOrder.WriteEndElement()

wtrRepairOrder.WriteEndDocument()

wtrRepairOrder.Flush()
wtrRepairOrder.Close()
End If
End Sub

42. Execute the application to test it


43. Create a new record and click Calculate Order:

44. Click File -> Save and OK to Save the file


45. Click File -> New Repair Order
46. Create another repair order:

47. Save it
48. Close the form and return to your programming environment
49. Display the form.
From the Dialogs section of the Toolbox, click OpenFileDialog and click the form
50. Change its properties as follows:
Title: Open Existing Repair Order
DefaultExt: xml
Filter: Repair Orders (*.xml)|*.xml|All Files|
Name: dlgOpen
51. Right-click the form and click View Code
52. In the Class Name combo box, select mnuFileOpen
53. In the Method Name combo box, select Click and implement the event as follows:

Private Sub mnuFileOpen_Click(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles mnuFileOpen.Click
Dim rdrRepairOrder As XmlTextReader = Nothing

Try
If dlgOpen.ShowDialog() = DialogResult.OK Then
rdrRepairOrder = New XmlTextReader(dlgOpen.FileName)

' Scan the XML file


Do
' every time you find an element, find out what type it
is
' If you find text, put it in the combo box' list
If (XmlNodeType.Element <> 0) And _
(rdrRepairOrder.Name = "CustomerName") Then
txtCustomerName.Text = _
rdrRepairOrder.ReadElementString("CustomerName")
txtAddress.Text = _
rdrRepairOrder.ReadElementString("Addres")
txtCity.Text =
rdrRepairOrder.ReadElementString("City")
txtState.Text =
rdrRepairOrder.ReadElementString("State")
txtZIPCode.Text = _
rdrRepairOrder.ReadElementString("ZIPCode")
txtMake.Text =
rdrRepairOrder.ReadElementString("Make")
txtModel.Text =
rdrRepairOrder.ReadElementString("Model")
txtCarYear.Text = _
rdrRepairOrder.ReadElementString("CarYear")
txtProblem.Text = _
rdrRepairOrder.ReadElementString("ProbDescription")
txtPartName1.Text = _
rdrRepairOrder.ReadElementString("PartName1")
txtUnitPrice1.Text = _
rdrRepairOrder.ReadElementString("UnitPrice1")
txtQuantity1.Text = _
rdrRepairOrder.ReadElementString("Quantity1")
txtSubTotal1.Text = _
rdrRepairOrder.ReadElementString("SubTotal1")
txtPartName2.Text = _
rdrRepairOrder.ReadElementString("PartName2")
txtUnitPrice2.Text = _
rdrRepairOrder.ReadElementString("UnitPrice2")
txtQuantity2.Text = _
rdrRepairOrder.ReadElementString("Quantity2")
txtSubTotal2.Text = _
rdrRepairOrder.ReadElementString("SubTotal2")
txtPartName3.Text = _
rdrRepairOrder.ReadElementString("PartName3")
txtUnitPrice3.Text = _
rdrRepairOrder.ReadElementString("UnitPrice3")
txtQuantity3.Text = _
rdrRepairOrder.ReadElementString("Quantity3")
txtSubTotal3.Text = _
rdrRepairOrder.ReadElementString("SubTotal3")
txtPartName4.Text = _
rdrRepairOrder.ReadElementString("PartName4")
txtUnitPrice4.Text = _
rdrRepairOrder.ReadElementString("UnitPrice4")
txtQuantity4.Text = _
rdrRepairOrder.ReadElementString("Quantity4")
txtSubTotal4.Text = _
rdrRepairOrder.ReadElementString("SubTotal4")
txtPartName5.Text = _
rdrRepairOrder.ReadElementString("PartName5")
txtUnitPrice5.Text = _
rdrRepairOrder.ReadElementString("UnitPrice5")
txtQuantity5.Text = _
rdrRepairOrder.ReadElementString("Quantity5")
txtSubTotal5.Text = _
rdrRepairOrder.ReadElementString("SubTotal5")
txtJobDescription1.Text = _
rdrRepairOrder.ReadElementString("JobDescription1")
txtJobPrice1.Text = _
rdrRepairOrder.ReadElementString("JobPrice1")
txtJobDescription2.Text = _
rdrRepairOrder.ReadElementString("JobDescription2")
txtJobPrice2.Text = _
rdrRepairOrder.ReadElementString("JobPrice2")
txtJobDescription3.Text = _
rdrRepairOrder.ReadElementString("JobDescription3")
txtJobPrice3.Text = _
rdrRepairOrder.ReadElementString("JobPrice3")
txtJobDescription4.Text = _
rdrRepairOrder.ReadElementString("JobDescription4")
txtJobPrice4.Text = _
rdrRepairOrder.ReadElementString("JobPrice4")
txtJobDescription5.Text = _
rdrRepairOrder.ReadElementString("JobDescription5")
txtJobPrice5.Text = _
rdrRepairOrder.ReadElementString("JobPrice5")
txtTotalParts.Text = _
rdrRepairOrder.ReadElementString("TotalPart")
txtTotalLabor.Text = _
rdrRepairOrder.ReadElementString("TotalLabor")
txtTaxRate.Text = _
rdrRepairOrder.ReadElementString("TaxRate")
txtTaxAmount.Text = _
rdrRepairOrder.ReadElementString("TaxAmount")
txtTotalOrder.Text = _
rdrRepairOrder.ReadElementString("TotalOrder")
txtRecommendations.Text = _
rdrRepairOrder.ReadElementString("Recommendation")
End If
Loop While rdrRepairOrder.Read()
End If
Catch Exc As XmlException
MsgBox("The file name you provided is not valid")
Finally
rdrRepairOrder.Close()
End Try
End Sub

54. Execute the application and open one the previous orders
55. In the Class Name combo box, select mnuFileSave and, to control the indentation when
the file is saved, change the top section of the event as follows:

Private Sub mnuFileSave_Click(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles mnuFileSave.Click
. . . No Change

' Find out if the user clicked OK after displaying the Save
dialog box
If dlgSave.ShowDialog() = DialogResult.OK Then
Dim wtrRepairOrder As XmlTextWriter = New
XmlTextWriter(Filename, _
Encoding.UTF8)
wtrRepairOrder.Formatting = Formatting.Indented
wtrRepairOrder.Indentation = 4

. . . No Change
End If
End Sub

56. In the Class Name combo box, select mnuFileExit


57. In the Method Name combo box, select Click and implement the event as follows:

Private Sub mnuFileExit_Click(ByVal sender As Object, _


ByVal e As System.EventArgs) _
Handles mnuFileExit.Click
End
End Sub

58. Execute the application


59. Create and save a few more repair orders
60. Close the form

You might also like