Hello-
I am trying to create a program that will allow a user to enter in checking or savings data; date, type of transaction (deposit or withdrawl), display the previous balance and the new balance based on the new transaction entered. I cannot figure out how to locate the element of the prior transaction to make the appropriate calculation. My code is quite long, and I should mention that I am brand new to this forum, so I hope I have placed my code in here properly. Thanks ahead of time.
Imports System.IO
Public Class frmAccounts
Dim calc As Account
Dim activity As Transaction
Private Sub frmAccounts_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
txtDate.Text = CStr(Today) 'Displays today's date
lblTo.Visible = False
End Sub
Private Sub cboAccounts_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboAccounts.SelectedIndexChanged
lstTransactions.Items.Clear()
activity = New Transaction
Dim nameOfAccount As String = cboAccounts.Text
Dim listDisplay As ListBox
If cboAccounts.Text = "Savings" Then
grpCheck.Visible = False
activity.AcctName = "Savings"
Else
grpCheck.Visible = True
activity.AcctName = "Checking"
End If
listDisplay = lstTransactions
calc = New Account
AddHandler calc.approvedTransaction, AddressOf ApprovedFunds
AddHandler calc.negativeBalance, AddressOf insufficientFunds
calc.ReadFile(nameOfAccount, listDisplay)
txtBalance.Text = FormatCurrency(calc.Balance)
End Sub
Private Sub btnDeposit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeposit.Click
'Sends all deposit data to WriteTransaction, which writes the user data to either csvSAVINGS.TXT or csvCHECKING.TXT
activity = New Transaction 'instance of Transaction
calc = New Account 'instance of Account
activity.TransactionDate = CStr(Today) 'Date of transaction
activity.AcctName = cboAccounts.Text '=Savings or Checking Account chose on form
activity.TransactionAmount = CDbl(txtDeposit.Text) 'Amount depositing into Account selected above
activity.DepoOrWith = grpDeposit.Text 'Description for writing to file
calc.CalcBalance(activity)
calc.WriteTransaction(activity) 'WriteTransaction Method in Class Account, writes all user data to selected file.
txtBalance.Text = FormatCurrency(calc.Balance)
End Sub
Private Sub insufficientFunds(ByVal m_balance As Double)
End Sub
Private Sub ApprovedFunds()
MessageBox.Show("Transaction Complete", "Approved")
End Sub
End Class 'frmAccounts
Class Transaction
Private m_prevBal As Double
Private m_date As Date 'Today's date = CStr(Today)
Private m_creditDebit As String 'Deposit or Withdrawl
Private m_amount As Double 'Amount for the transaction
Private m_checkOrSave As String 'Checking or Savings
Public Property TransactionDate() As Date 'Date of transaction being made
Get
Return m_date
End Get
Set(ByVal value As Date)
m_date = value
End Set
End Property
Public Property DepoOrWith() As String 'Deposit or Withdrawl (for both checking and savings)-->DESCRIPTION of transaction
Get
Return m_creditDebit
End Get
Set(ByVal value As String)
m_creditDebit = value
End Set
End Property
Public Property TransactionAmount() As Double 'Amount on transaction attempting to complete
Get
Return m_amount
End Get
Set(ByVal value As Double)
m_amount = value
End Set
End Property
Public Property AcctName() As String 'Checking or Savings account
Get
Return m_checkOrSave
End Get
Set(ByVal value As String)
m_checkOrSave = value
End Set
End Property
Public Property PreviousBalance() As Double
Get
Return m_prevBal
End Get
Set(ByVal value As Double)
m_prevBal = value
End Set
End Property
Public ReadOnly Property NewBalance() As Double
Get
If m_creditDebit = "Deposit" Then 'Need to somehow inclued the transfer from and check clearings.
NewBalance = m_prevBal + m_amount
Return NewBalance
ElseIf m_creditDebit.ToLower = "Withdrawl" Then
NewBalance = m_prevBal - m_amount
Return NewBalance
End If
End Get
End Property
End Class
Class Account
Private m_Balance As Double 'Balance for either checking or savings
Private m_Savings As Account
Private m_transSet() As Transaction
Private m_Checking As Account
Dim fileInput() As String
Public Event negativeBalance(ByVal m_balance As Double)
Public Event approvedTransaction()
Public Property SavAccount() As Account
Get
Return m_Savings
End Get
Set(ByVal value As Account)
m_Savings = value
End Set
End Property
Public Property CheckAccount() As Account
Get
Return m_Checking
End Get
Set(ByVal value As Account)
m_Checking = value
End Set
End Property
Public ReadOnly Property Balance() As Double
Get
Return m_transSet(m_transSet.Length - 1).NewBalance
End Get
End Property
Public WriteOnly Property transDate() As Date
Set(ByVal value As Date)
m_transSet(0).TransactionDate = value
End Set
End Property
Public WriteOnly Property Description() As String
Set(ByVal value As String)
m_transSet(1).DepoOrWith = value
End Set
End Property
Public WriteOnly Property Amount() As Double
Set(ByVal value As Double)
m_transSet(2).TransactionAmount = value
End Set
End Property
Public WriteOnly Property AccountName() As String
Set(ByVal value As String)
m_transSet(3).AcctName = value
End Set
End Property
Sub ReadFile(ByVal NameofAccount As String, ByRef listDisplay As ListBox)
Dim fmtStr As String = "{0,-10} {1,-30}{2,20:c} {3, 10}"
Dim tran As Transaction
Dim x As Integer = 0
Dim sr As StreamReader = Nothing
If NameofAccount = "Savings" Then
sr = File.OpenText("csvSAVINGS.TXT")
Else 'If NameofAccount = "Checking" Then
sr = File.OpenText("csvCHECKING.TXT")
End If
Do While (sr.Peek <> -1)
tran = New Transaction
fileInput = sr.ReadLine.Split(","c)
tran.TransactionDate = fileInput(0)
tran.DepoOrWith = fileInput(1)
tran.TransactionAmount = fileInput(2)
tran.PreviousBalance = fileInput(3)
ReDim Preserve m_transSet(x)
m_transSet(x) = tran
listDisplay.Items.Add(String.Format(fmtStr, tran.TransactionDate.ToShortDateString, tran.DepoOrWith, _
FormatCurrency(tran.TransactionAmount) & " PREV BAL", FormatCurrency(tran.PreviousBalance) & _
" New BAL" & FormatCurrency(tran.NewBalance)))
x += 1
tran = Nothing
Loop
sr.Close()
End Sub
Function CalcBalance(ByVal activity As Transaction) As Double
Dim tran As Transaction
Dim x As Integer = -1
Dim sr As StreamReader = Nothing
If activity.AcctName = "Savings" Then
sr = File.OpenText("csvSAVINGS.TXT")
ElseIf activity.AcctName = "Checking" Then
sr = File.OpenText("csvCHECKING.TXT")
End If
Do While (sr.Peek <> -1)
tran = New Transaction
fileInput = sr.ReadLine.Split(","c)
tran.TransactionDate = fileInput(0)
tran.DepoOrWith = fileInput(1)
tran.TransactionAmount = fileInput(2)
tran.PreviousBalance = fileInput(3)
ReDim Preserve m_transSet(x)
m_transSet(x) = tran
x += 1
tran = Nothing
Loop
sr.Close()
If Balance <= 0 Then
RaiseEvent negativeBalance(Balance)
Else
RaiseEvent approvedTransaction()
End If
Return Balance
End Function
Sub WriteTransaction(ByVal activity As Transaction)
CalcBalance(activity)
Dim temp() As String = {activity.TransactionDate & "," & activity.DepoOrWith.ToString & "," & _
activity.TransactionAmount & "," & Balance}
Select Case activity.AcctName
Case Is = "Savings"
Dim sw As StreamWriter = File.AppendText("csvSAVINGS.TXT")
sw.WriteLine(Join(temp, ","))
sw.Close()
Case Is = "Checking"
Dim sw As StreamWriter = File.AppendText("csvCHECKING.TXT")
sw.WriteLine(Join(temp, ","))
'RaiseEvent approvedTransaction(temp(0))
sw.Close()
Case Is = "Transfer to Checking"
Dim sw1 As StreamWriter = File.AppendText("csvCHECKING.TXT")
Dim sw2 As StreamWriter = File.AppendText("csvSAVINGS.TXT")
Dim temp2() As String = {activity.TransactionDate & "," & activity.AcctName & "," & activity.TransactionAmount}
sw1.WriteLine(Join(temp, ","))
sw2.WriteLine(Join(temp2, ","))
sw1.Close()
sw2.Close()
Case Is = "Transfer to Savings"
Dim sw1 As StreamWriter = File.AppendText("csvSAVINGS.TXT")
Dim sw2 As StreamWriter = File.AppendText("csvCHECKING.TXT")
Dim temp2() As String = {activity.TransactionDate & "," & activity.AcctName & "," & activity.TransactionAmount}
sw1.WriteLine(Join(temp, ","))
sw2.WriteLine(Join(temp2, ","))
sw1.Close()
sw2.Close()
End Select
End Sub
End Class