![]() |
MS Visual Basic .NET Applications: |
|
Introduction to Serialization |
|
||||
To process an order, we will use the same approach as for the Georgetown Cleaning Services application to calculation the cost of a cleaning order When an order has been processed, we will let the user save it. To make this useful and convenient, we will save cleaning orders for each day in a common file but we will give the user the opportunity to save the order for another day. To implement this behavior, we will use the serialization of an ArrayList object which itself will use a whole cleaning order stored in a variable.
|

<Serializable()> Public Class CleaningOrder
Public OrderID As Integer
Public OrderNumber As String
Public CustomerName As String
Public CustomerPhone As String
Public DateLeft As DateTime
Public TimeLeft As DateTime
Public DatePickedUp As DateTime
Public TimePickedUp As DateTime
Public UnitPriceShirts As Decimal
Public QuantityShirts As Integer
Public SubTotalShirts As Double
Public UnitPricePants As Double
Public QuantityPants As Integer
Public SubTotalPants As Double
Public Item1Name As String
Public UnitPriceItem1 As Double
Public QuantityItem1 As Integer
Public SubTotalItem1 As Double
Public Item2Name As String
Public UnitPriceItem2 As Double
Public QuantityItem2 As Integer
Public SubTotalItem2 As Double
Public Item3Name As String
Public UnitPriceItem3 As Double
Public QuantityItem3 As Integer
Public SubTotalItem3 As Double
Public Item4Name As String
Public UnitPriceItem4 As Double
Public QuantityItem4 As Integer
Public SubTotalItem4 As Double
Public CleaningTotal As Double
Public TaxRate As Double
Public TaxAmount As Double
Public OrderTotal As Double
Public Sub New()
OrderID = 0
OrderNumber = "010119000"
CustomerName = "Unknown"
CustomerPhone = "N/A"
DateLeft = DateTime.Today
TimeLeft = DateTime.Now
DatePickedUp = DateTime.Today
TimePickedUp = DateTime.Now
UnitPriceShirts = 0
QuantityShirts = 0
SubTotalShirts = 0
UnitPricePants = 1.75
QuantityPants = 0
SubTotalPants = 0.0
Item1Name = "None"
UnitPriceItem1 = 0.0
QuantityItem1 = 0
SubTotalItem1 = 0.0
Item2Name = "None"
UnitPriceItem2 = 0.0
QuantityItem2 = 0
SubTotalItem2 = 0.0
Item3Name = "None"
UnitPriceItem3 = 0.0
QuantityItem3 = 0
SubTotalItem3 = 0.0
Item4Name = "None"
UnitPriceItem4 = 0.0
QuantityItem4 = 0
SubTotalItem4 = 0.0
CleaningTotal = 0.0
TaxRate = 5.75
TaxAmount = 0.0
OrderTotal = 0.0
End Sub
End Class
|
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Soap
Public Class Form1
Inherits System.Windows.Forms.Form
Dim CleaningOrders As ArrayList
|
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
CleaningOrders = New ArrayList
End Sub
|
Private Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
Dim orderID As Integer = 0
Dim CleaningOrders As ArrayList = New ArrayList
Dim strFilename As String = "CleaningOrders.gcs"
Dim gcsSoap As SoapFormatter = New SoapFormatter
If File.Exists(strFilename) Then
Dim gcsStream As FileStream = New FileStream(strFilename, FileMode.Open, FileAccess.Read, FileShare.Read)
CleaningOrders = gcsSoap.Deserialize(gcsStream)
Dim order As CleaningOrder = CleaningOrders(CleaningOrders.Count - 1)
orderID = order.OrderID
gcsStream.Close()
Else
Dim gcsStream As FileStream = New FileStream(strFilename, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write)
gcsSoap.Serialize(gcsStream, CleaningOrders)
gcsStream.Close()
End If
If Me.txtCustomerName.Text = "" Then
MsgBox("A cleaning order must have a name for the customer")
Me.txtCustomerName.Focus()
Exit Sub
End If
CalculateTotal()
Dim cleanOrder As CleaningOrder = New CleaningOrder
cleanOrder.OrderID = orderID + 1
cleanOrder.CustomerName = Me.txtCustomerName.Text
cleanOrder.CustomerPhone = Me.txtCustomerPhone.Text
cleanOrder.DateLeft = Me.dtpDateLeft.Value
cleanOrder.TimeLeft = Me.dtpTimeLeft.Value
cleanOrder.DatePickedUp = Me.dtpDateExpected.Value
cleanOrder.TimePickedUp = Me.dtpTimeExpected.Value
cleanOrder.UnitPriceShirts = CDbl(Me.txtShirtsUnitPrice.Text)
cleanOrder.QuantityShirts = CInt(Me.txtShirtsQuantity.Text)
cleanOrder.SubTotalShirts = CDbl(Me.txtShirtsSubTotal.Text)
cleanOrder.UnitPricePants = CDbl(Me.txtPantsUnitPrice.Text)
cleanOrder.QuantityPants = CInt(Me.txtPantsQuantity.Text)
cleanOrder.SubTotalPants = CDbl(Me.txtPantsSubTotal.Text)
cleanOrder.Item1Name = Me.cboItem1.Text
cleanOrder.UnitPriceItem1 = CDbl(Me.txtItem1UnitPrice.Text)
cleanOrder.QuantityItem1 = CInt(Me.txtItem1Quantity.Text)
cleanOrder.SubTotalItem1 = CDbl(Me.txtItem1SubTotal.Text)
cleanOrder.Item2Name = Me.cboItem2.Text
cleanOrder.UnitPriceItem2 = CDbl(Me.txtItem2UnitPrice.Text)
cleanOrder.QuantityItem2 = CInt(Me.txtItem2Quantity.Text)
cleanOrder.SubTotalItem2 = CDbl(Me.txtItem2SubTotal.Text)
cleanOrder.Item3Name = Me.cboItem3.Text
cleanOrder.UnitPriceItem3 = CDbl(Me.txtItem3UnitPrice.Text)
cleanOrder.QuantityItem3 = CInt(Me.txtItem3Quantity.Text)
cleanOrder.SubTotalItem3 = CDbl(Me.txtItem3SubTotal.Text)
cleanOrder.Item4Name = Me.cboItem4.Text
cleanOrder.UnitPriceItem4 = CDbl(Me.txtItem4UnitPrice.Text)
cleanOrder.QuantityItem4 = CInt(Me.txtItem4Quantity.Text)
cleanOrder.SubTotalItem4 = CDbl(Me.txtItem4SubTotal.Text)
cleanOrder.CleaningTotal = CDbl(Me.txtCleaningTotal.Text)
cleanOrder.TaxRate = CDbl(Me.txtTaxRate.Text)
cleanOrder.TaxAmount = CDbl(Me.txtTaxAmount.Text)
cleanOrder.OrderTotal = CDbl(Me.txtNetPrice.Text)
Me.CleaningOrders.Add(cleanOrder)
Dim stmOrders As FileStream = New FileStream(strFilename, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write)
gcsSoap.Serialize(stmOrders, Me.CleaningOrders)
stmOrders.Close()
Me.btnReset_Click(sender, e)
End Sub
|
![]() |
![]() |
![]() |
Private Sub btnOpen_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnOpen.Click
Dim lstCleaningOrders As ArrayList = New ArrayList
Dim strFilename As String = "CleaningOrders.gcs"
Dim gcsSoap As SoapFormatter = New SoapFormatter
Dim receiptNumber As Integer = CInt(Me.txtReceiptNumber.Text)
If File.Exists(strFilename) Then
Dim gcsStream As FileStream = New FileStream(strFilename, FileMode.Open, FileAccess.Read, FileShare.Read)
lstCleaningOrders = gcsSoap.Deserialize(gcsStream)
gcsStream.Close()
For Each order As CleaningOrder In lstCleaningOrders
If order.OrderID = receiptNumber Then
Me.txtCustomerName.Text = order.CustomerName
Me.txtCustomerPhone.Text = order.CustomerPhone
Me.dtpDateLeft.Value = order.DateLeft
Me.dtpTimeLeft.Value = order.TimeLeft
Me.dtpDateExpected.Value = order.DatePickedUp
Me.dtpTimeExpected.Value = order.TimePickedUp
Me.txtShirtsUnitPrice.Text = order.UnitPriceShirts.ToString()
Me.txtShirtsQuantity.Text = order.QuantityShirts.ToString()
Me.txtShirtsSubTotal.Text = order.SubTotalShirts.ToString()
Me.txtPantsUnitPrice.Text = order.UnitPricePants.ToString()
Me.txtPantsQuantity.Text = order.QuantityPants.ToString()
Me.txtPantsSubTotal.Text = order.SubTotalPants.ToString()
Me.cboItem1.Text = order.Item1Name
Me.txtItem1UnitPrice.Text = order.UnitPriceItem1.ToString()
Me.txtItem1Quantity.Text = order.QuantityItem1.ToString()
Me.txtItem1SubTotal.Text = order.SubTotalItem1.ToString()
Me.cboItem2.Text = order.Item2Name
Me.txtItem2UnitPrice.Text = order.UnitPriceItem2.ToString()
Me.txtItem2Quantity.Text = order.QuantityItem2.ToString()
Me.txtItem2SubTotal.Text = order.SubTotalItem2.ToString()
Me.cboItem3.Text = order.Item3Name
Me.txtItem3UnitPrice.Text = order.UnitPriceItem3.ToString()
Me.txtItem3Quantity.Text = order.QuantityItem3.ToString()
Me.txtItem3SubTotal.Text = order.SubTotalItem3.ToString()
Me.cboItem4.Text = order.Item4Name
Me.txtItem4UnitPrice.Text = order.UnitPriceItem4.ToString()
Me.txtItem4Quantity.Text = order.QuantityItem4.ToString()
Me.txtItem4SubTotal.Text = order.SubTotalItem4.ToString()
Me.txtCleaningTotal.Text = order.CleaningTotal.ToString()
Me.txtTaxRate.Text = order.TaxRate.ToString()
Me.txtTaxAmount.Text = order.TaxAmount.ToString()
Me.txtNetPrice.Text = order.OrderTotal.ToString()
End If
Next
Else
MsgBox("There is no cleaning order with that receipt number!")
Exit Sub
End If
End Sub
|
|
|
||
| Previous | Copyright © 2004-2011 FunctionX | |
|
|
||