Public Class frmTravelPlanner
Dim dailyExpensesCost(9) As Integer
Dim dailyExpensesTitles(9) As String
Dim numberOfExpenses As Integer = 0
Dim costOfExpenses As Double
Sub OutputUserInformation()
lstOutput.Items.Add("Destination: " & txtDestination.Text)
lstOutput.Items.Add("Budget: " & FormatCurrency(txtBudget.Text))
lstOutput.Items.Add("Length of Trip: " & txtLengthOfTrip.Text & " days")
lstOutput.Items.Add("accommodations: " & FormatCurrency(txtaccommodations.Text) * (txtLengthOfTrip.Text))
lstOutput.Items.Add("Food and Drink: " & FormatCurrency(txtFoodAndDrink.Text) * (txtLengthOfTrip.Text))
End Sub
Sub EditDailyExpenses(ByRef dailyExpensesCost, ByRef dailyExpensesTitle)
Dim yesOrNo As Integer
Dim clearSection As Integer = 0
For i = 0 To numberOfExpenses - 1
yesOrNo = MsgBox("Would you like to change the " & dailyExpensesTitle(i) & " expense?", MsgBoxStyle.YesNo)
If yesOrNo = vbYes Then
lstDailyExpensesOutput.Items.RemoveAt(clearSection)
dailyExpensesTitle(i) = InputBox("Please enter your revised expense. (i.e. gas, movies, car rental)")
dailyExpensesCost(i) = InputBox("Please enter your revised budget for this expense.")
lstDailyExpensesOutput.Items.Insert(clearSection, dailyExpensesTitle(i) & " " & FormatCurrency(dailyExpensesCost(i)) & "Per day; " & FormatCurrency((dailyExpensesCost(i)) * txtLengthOfTrip.Text) & " Per trip")
End If
clearSection += 1
Next
End Sub
Function TotalCostOfTravel(ByVal travelCost, ByVal costOfExpenses)
Dim costOfTrip As Double
For i = 0 To numberOfExpenses
costOfExpenses += dailyExpensesCost(i)
Next
costOfTrip = (costOfExpenses * txtLengthOfTrip.Text + CDbl(txtaccommodations.Text) * txtLengthOfTrip.Text + CDbl(txtFoodAndDrink.Text) * txtLengthOfTrip.Text) + travelCost
Return costOfTrip
End Function
Sub OutputCostOfTravel(ByVal costOfTrip)
Dim difference As Double
MsgBox("Your estimated cost for the trip is " & FormatCurrency(costOfTrip) & ".")
MsgBox("Your initial budget for the trip was " & FormatCurrency(txtBudget.Text & "."))
difference = CDbl(txtBudget.Text) - costOfTrip
If difference > 0 Then
MsgBox("Your trip came in under budget and you had " & FormatCurrency(difference) & " left over.")
ElseIf difference < 0 Then
MsgBox("Your trip exceeds your initial budget by " & FormatCurrency(difference) & ". Please reveiw your budget")
ElseIf difference = 0 Then
MsgBox("Your trip is on budget with $0.00 left over.")
End If
End Sub
Sub GetInputFromUser(ByRef dailyExpensesCost As Array, ByRef budget As Integer, ByRef lengthOfTrip As Integer,
ByRef accommodations As Integer, ByRef foodAndDrink As Integer, ByRef numberOfExpenses As Integer, ByRef dailyExpensesTitle As Array)
Dim stopNumber As Double
Dim stopYesOrNo As Integer
' additional expense message box's
stopYesOrNo = MsgBox("Do you have any additional expenses you want to list here? (i.e.; Car Rental, Souvenirs, Gas, Etc.)", MsgBoxStyle.YesNo)
If stopYesOrNo = vbYes Then
Do
dailyExpensesTitle(numberOfExpenses) = CStr(InputBox("What is your first expense? (i.e. Gas, Car Rental, Souvenirs)"))
dailyExpensesCost(numberOfExpenses) = InputBox("What is your daily budget for that expense? (i.e. 25, 35, 45, 55)")
numberOfExpenses += 1
lstDailyExpensesOutput.Items.Add(dailyExpensesTitle(numberOfExpenses - 1) & " " & FormatCurrency(dailyExpensesCost(numberOfExpenses - 1)) & " Per day; " & (FormatCurrency(dailyExpensesCost(numberOfExpenses - 1) * CDbl(txtLengthOfTrip.Text))) & " For whole trip")
stopYesOrNo = MsgBox("Are you done?", MsgBoxStyle.YesNo)
If stopYesOrNo = vbYes Then
stopNumber = -1
End If
Loop Until (stopNumber = -1 Or numberOfExpenses = 10)
End If
End Sub
Private Sub btnCalculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculate.Click
Dim transportationExpense As Double = txtTravelCost.Text
Dim budget, lengthOfTrip, accommodations, foodAndDrink As Double
'clear for new entry
lstDailyExpensesOutput.Items.Clear()
lstOutput.Items.Clear()
'output
OutputUserInformation()
'input
GetInputFromUser(dailyExpensesCost, budget, lengthOfTrip, accommodations, foodAndDrink, numberOfExpenses, dailyExpensesTitles)
OutputCostOfTravel(TotalCostOfTravel(transportationExpense, costOfExpenses))
'make edit buttons visible
btnDailyExpense.Visible = True
btnRecalculate.Visible = True
End Sub
Private Sub btnDailyExpense_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDailyExpense.Click
EditDailyExpenses(dailyExpensesCost, dailyExpensesTitles)
End Sub
Private Sub btnRecalculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRecalculate.Click
Dim transportationExpense As Integer = txtTravelCost.Text
OutputCostOfTravel(TotalCostOfTravel(transportationExpense, costOfExpenses))
End Sub
'programmed by alexander magoon
'cis 115
End Class