Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Java Project #1334

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
130 changes: 130 additions & 0 deletions ExpenseTracker.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@

import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.HashMap;

public class ExpenseTracker {
private static HashMap<String, User> users = new HashMap<>();
private static HashMap<String, ArrayList<Expense>> expenses = new HashMap<>();

public static void main(String[] args) {
createUser("sample_user", "sample_password");

String username = JOptionPane.showInputDialog(null, "Create username:");
String password = JOptionPane.showInputDialog(null, "Create password:");
createUser(username, password);

addExpense("sample_user");

while (true) {
String userUsername = JOptionPane.showInputDialog(null, "Enter your username:");
String userPassword = JOptionPane.showInputDialog(null, "Enter your password:");
if (authenticateUser(userUsername, userPassword)) {
JOptionPane.showMessageDialog(null, "User authenticated successfully.");

String description = JOptionPane.showInputDialog(null, "Enter expense description:");
double amount = Double.parseDouble(JOptionPane.showInputDialog(null, "Enter expense amount:"));
String date = JOptionPane.showInputDialog(null, "Enter expense date (YYYY-MM-DD):");
String category = JOptionPane.showInputDialog(null, "Enter expense category:");
Expense expense = new Expense(description, amount, date, category);

addExpenseDetails(userUsername, expense);
JOptionPane.showMessageDialog(null, "Expense added successfully.");

generateExpenseReport(userUsername);
} else {
JOptionPane.showMessageDialog(null, "Authentication failed. Please try again.");
}
}
}

private static void createUser(String username, String password) {
users.put(username, new User(username, password));
expenses.put(username, new ArrayList<>());
}

private static boolean authenticateUser(String username, String password) {
User user = users.get(username);
return user != null && user.getPassword().equals(password);
}

private static void addExpense(String username) {
Expense expense1 = new Expense("Groceries", 50.0, "2024-04-06", "Food");
Expense expense2 = new Expense("Utilities", 100.0, "2024-04-10", "Bills");

addExpenseDetails(username, expense1);
addExpenseDetails(username, expense2);
}

private static void addExpenseDetails(String username, Expense expense) {
ArrayList<Expense> userExpenses = expenses.get(username);
if (userExpenses != null) {
userExpenses.add(expense);
}
}

private static void generateExpenseReport(String username) {
ArrayList<Expense> userExpenses = expenses.get(username);
if (userExpenses != null && !userExpenses.isEmpty()) {
StringBuilder report = new StringBuilder("Expense Report for " + username + ":\n");
for (Expense expense : userExpenses) {
report.append("Description: ").append(expense.getDescription()).append("\n")
.append("Amount: ").append(expense.getAmount()).append("\n")
.append("Date: ").append(expense.getDate()).append("\n")
.append("Category: ").append(expense.getCategory()).append("\n\n");
}
JOptionPane.showMessageDialog(null, report.toString());
} else {
JOptionPane.showMessageDialog(null, "No expenses found for this user.");
}
}
}

class User {
private String username;
private String password;

public User(String username, String password) {
this.username = username;
this.password = password;
}

public String getUsername() {
return username;
}

public String getPassword() {
return password;
}
}

class Expense {
private String description;
private double amount;
private String date;
private String category;

public Expense(String description, double amount, String date, String category) {
this.description = description;
this.amount = amount;
this.date = date;
this.category = category;
}

public String getDescription() {
return description;
}

public double getAmount() {
return amount;
}

public String getDate() {
return date;
}

public String getCategory() {
return category;
}
}
Loading