import java.util.ArrayList;
import java.util.Scanner;
// Transaction class to represent income and expenses
class Transaction {
private String type;
private double amount;
private String description;
public Transaction(String type, double amount, String description) {
this.type = type;
this.amount = amount;
this.description = description;
}
return type;
}
public double getAmount() {
return amount;
}
public String getDescription() {
return description;
}
}
public class FinancialTracker {
private List<Transaction> transactions;
private double budget;
public FinancialTracker() {
this.transactions = new ArrayList<>();
this.budget = 0.0;
}
// Method to add income
public void addIncome(double amount, String description) {
Transaction transaction = new Transaction("Income", amount, description);
transactions.add(transaction);
}
// Method to add expense
public void addExpense(double amount, String description) {
Transaction transaction = new Transaction("Expense", amount, description);
transactions.add(transaction);
}
// Method to set budget
public void setBudget(double budget) {
this.budget = budget;
}
// Method to view transactions
public void viewTransactions() {
for (Transaction transaction : transactions) {
System.out
.println
("Type: " + transaction
.getType() + ", Amount: " + transaction
.getAmount
() + ", Description: " + transaction
.getDescription
()); }
}
// Method to view budget
public void viewBudget() {
System.out
.println
("Budget: " + budget
); }
// Method to visualize spending habits
public void visualizeSpendingHabits() {
double totalIncome = 0.0;
double totalExpense = 0.0;
for (Transaction transaction : transactions) {
if (transaction
.getType().equals
("Income")) { totalIncome += transaction.getAmount();
} else {
totalExpense += transaction.getAmount();
}
}
System.out
.println
("Total Income: " + totalIncome
); System.out
.println
("Total Expense: " + totalExpense
);
// Simple bar chart to visualize spending habits
int incomeBars = (int) (totalIncome / 100);
int expenseBars = (int) (totalExpense / 100);
System.out
.println
("Income: " + new String
(new char
[incomeBars
]).replace
("\0", "*")); System.out
.println
("Expense: " + new String
(new char
[expenseBars
]).replace
("\0", "*")); }
public static void main(String[] args) {
FinancialTracker financialTracker = new FinancialTracker();
Scanner scanner
= new Scanner
(System.in
);
while (true) {
System.out
.println
("1. Add Income"); System.out
.println
("2. Add Expense"); System.out
.println
("3. Set Budget"); System.out
.println
("4. View Transactions"); System.out
.println
("5. View Budget"); System.out
.println
("6. Visualize Spending Habits"); System.out
.println
("7. Exit");
System.out
.print("Choose an option: "); int option = scanner.nextInt();
switch (option) {
case 1:
System.out
.print("Enter income amount: "); double incomeAmount = scanner.nextDouble();
System.out
.print("Enter income description: "); String incomeDescription
= scanner
.next(); financialTracker.addIncome(incomeAmount, incomeDescription);
break;
case 2:
System.out
.print("Enter expense amount: "); double expenseAmount = scanner.nextDouble();
System.out
.print("Enter expense description: "); String expenseDescription
= scanner
.next(); financialTracker.addExpense(expenseAmount, expenseDescription);
break;
case 3:
System.out
.print("Enter budget: "); double budget = scanner.nextDouble();
financialTracker.setBudget(budget);
break;
case 4:
financialTracker.viewTransactions();
break;
case 5:
financialTracker.viewBudget();
break;
case 6:
financialTracker.visualizeSpendingHabits();
break;
case 7:
break;
default:
System.out
.println
("Invalid option. Please choose a valid option."); }
}
}
}