diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..62bdf20 --- /dev/null +++ b/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..a9fd48a --- /dev/null +++ b/.project @@ -0,0 +1,28 @@ + + + ATM-Management-System-Maintenance-Project + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + + + 1768836522542 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + + diff --git a/README.md b/README.md index 7a5b30d..82c9795 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ This repository contains an ATM Management System project implemented in Java. ## Instructions -To run the program, follow these steps: +To run the program, follow these steps: -- -1. Run the `AtmMainDriver` file. +1. Run the `AtmMainDriver` file. 2. No additional packages need to be downloaded. 3. The username and password for both "Admin" and "User" are as follows: - Username: zahid diff --git a/atm/bin/atm/AccountData.class b/atm/bin/atm/AccountData.class new file mode 100644 index 0000000..ff995f1 Binary files /dev/null and b/atm/bin/atm/AccountData.class differ diff --git a/atm/bin/atm/Admin.class b/atm/bin/atm/Admin.class new file mode 100644 index 0000000..4b767b5 Binary files /dev/null and b/atm/bin/atm/Admin.class differ diff --git a/atm/bin/atm/AfterLogin.class b/atm/bin/atm/AfterLogin.class new file mode 100644 index 0000000..9e3b196 Binary files /dev/null and b/atm/bin/atm/AfterLogin.class differ diff --git a/atm/bin/atm/AtmMainDriver.class b/atm/bin/atm/AtmMainDriver.class new file mode 100644 index 0000000..d3bfa60 Binary files /dev/null and b/atm/bin/atm/AtmMainDriver.class differ diff --git a/atm/bin/atm/LoginForm.class b/atm/bin/atm/LoginForm.class new file mode 100644 index 0000000..917258e Binary files /dev/null and b/atm/bin/atm/LoginForm.class differ diff --git a/atm/bin/atm/TestTransactionHistory.class b/atm/bin/atm/TestTransactionHistory.class new file mode 100644 index 0000000..9d61c2e Binary files /dev/null and b/atm/bin/atm/TestTransactionHistory.class differ diff --git a/atm/build/classes/atm/AccountData.class b/atm/build/classes/atm/AccountData.class index 63e2f61..cf427aa 100644 Binary files a/atm/build/classes/atm/AccountData.class and b/atm/build/classes/atm/AccountData.class differ diff --git a/atm/build/classes/atm/Admin.class b/atm/build/classes/atm/Admin.class index 41f6dd1..0783623 100644 Binary files a/atm/build/classes/atm/Admin.class and b/atm/build/classes/atm/Admin.class differ diff --git a/atm/build/classes/atm/AfterLogin.class b/atm/build/classes/atm/AfterLogin.class index 42bdefe..1e3f39d 100644 Binary files a/atm/build/classes/atm/AfterLogin.class and b/atm/build/classes/atm/AfterLogin.class differ diff --git a/atm/build/classes/atm/AtmMainDriver.class b/atm/build/classes/atm/AtmMainDriver.class index 0357465..0da7eea 100644 Binary files a/atm/build/classes/atm/AtmMainDriver.class and b/atm/build/classes/atm/AtmMainDriver.class differ diff --git a/atm/build/classes/atm/LoginForm$ATM_System.class b/atm/build/classes/atm/LoginForm$ATM_System.class deleted file mode 100644 index 44cf94b..0000000 Binary files a/atm/build/classes/atm/LoginForm$ATM_System.class and /dev/null differ diff --git a/atm/build/classes/atm/LoginForm.class b/atm/build/classes/atm/LoginForm.class index c6d6812..d77e5f1 100644 Binary files a/atm/build/classes/atm/LoginForm.class and b/atm/build/classes/atm/LoginForm.class differ diff --git a/atm/build/classes/atm/TestTransactionHistory.class b/atm/build/classes/atm/TestTransactionHistory.class new file mode 100644 index 0000000..c029fa9 Binary files /dev/null and b/atm/build/classes/atm/TestTransactionHistory.class differ diff --git a/atm/src/atm/Admin.java b/atm/src/atm/Admin.java index 7e4e6a4..c22a146 100644 --- a/atm/src/atm/Admin.java +++ b/atm/src/atm/Admin.java @@ -2,9 +2,9 @@ import java.awt.Color; import java.awt.Container; import java.awt.event.*; +import java.io.*; import java.util.*; import javax.swing.*; -import java.io.*; /*\ I have to add these options Add Account @@ -23,7 +23,7 @@ public class Admin extends JFrame implements ActionListener JLabel atmLab; Container con; ArrayList customerlist; - String s1,s2,s3; + String s1; Admin() { super("ADMIN"); @@ -67,7 +67,42 @@ public class Admin extends JFrame implements ActionListener saveToFile.addActionListener(this); logOut.addActionListener(this); + loadPersons(); + } + /*******************************LOAD ACCOUNT FROM FILE*******************************************/ + public void loadPersons() + { + String ss[]=null; + String pincode,customername,accounttype,accountnumber,startbalance; + + try + { + FileReader fr=new FileReader("Customer Record.txt"); + BufferedReader br=new BufferedReader(fr); + + String line=br.readLine(); + + while(line != null) + { + ss=line.split(","); + pincode=ss[0]; + customername=ss[1]; + accounttype=ss[2]; + accountnumber=ss[3]; + startbalance=ss[4]; + + AccountData atm=new AccountData(pincode,customername,accounttype,accountnumber,startbalance); + customerlist.add(atm); + line=br.readLine(); + } + br.close(); + fr.close(); + } + catch(IOException ioEX) + { + System.out.println("No existing customer records found. Starting fresh."); + } } /*******************************ADD ACCOUNT************************************************/ @@ -218,6 +253,7 @@ public void edit(String n) /************************************************************************************************************/ /***************************************************************************************************/ + @Override public void actionPerformed(ActionEvent e) { diff --git a/atm/src/atm/AfterLogin.java b/atm/src/atm/AfterLogin.java index fe8a76a..39732b9 100644 --- a/atm/src/atm/AfterLogin.java +++ b/atm/src/atm/AfterLogin.java @@ -1,290 +1,489 @@ -package atm; -import java.awt.*; -import java.awt.event.*; -import java.util.*; -import javax.swing.*; -import java.io.*; - -public class AfterLogin extends JFrame implements ActionListener -{ - - JButton equiryBtn,withdrawBtn,logoutBtn,transferBtn; - JLabel atmLab; - Container con; - ArrayList customerlist; - Admin adm = new Admin(); - String s1; - - AfterLogin() - { - - super("Transaction"); - customerlist=new ArrayList(); - - con = this.getContentPane(); - con.setLayout(null); - con.setBackground(Color.BLACK); - - - atmLab = new JLabel(new ImageIcon("atm.png")); - atmLab.setBounds(60,10,300,100); - - equiryBtn = new JButton("Balance Enquiry"); - equiryBtn.setBounds(10,130,150,40); - - transferBtn = new JButton("Transfer Money"); - transferBtn.setBounds(260,130,150,40); - - withdrawBtn = new JButton("WithDraw Money"); - withdrawBtn.setBounds(260,230,150,40); - - - logoutBtn = new JButton("Logout"); - logoutBtn.setBounds(10,230,150,40); - - con.add(atmLab); - con.add(equiryBtn); - con.add(withdrawBtn); - con.add(transferBtn); - con.add(logoutBtn); - /********************************************************************/ - - equiryBtn.addActionListener(this); - transferBtn.addActionListener(this); - withdrawBtn.addActionListener(this); - logoutBtn.addActionListener(this); - - loadPersons(); - } - /*****************************Load Data from File****************************************/ - - public void loadPersons() - { - String ss[]=null; - String pincode,customername,accounttype,accountnumber,startbalance; - - try - { - FileReader fr=new FileReader("Customer Record.txt"); - BufferedReader br=new BufferedReader(fr); - - - String line=br.readLine(); - - while(line != null) - { - ss=line.split(","); - pincode=ss[0]; - customername=ss[1]; - accounttype=ss[2]; - accountnumber=ss[3]; - startbalance=ss[4]; - - AccountData atm=new AccountData(pincode,customername,accounttype,accountnumber,startbalance); - customerlist.add(atm); - line=br.readLine(); - } - br.close(); - fr.close(); - } - catch(IOException ioEX) - { - System.out.println(ioEX); - } - } - -/***************************************************************************************************************************/ - - -/********************************************************* Balance Enquiry of Customer ************************************/ - public void inquiry(String n) - { - for(int i=0;i transactions = new ArrayList<>(); + String line = br.readLine(); + + while(line != null) { + transactions.add(line); + line = br.readLine(); + } + br.close(); + fr.close(); + + // Display last 10 transactions + StringBuilder history = new StringBuilder(); + int start = Math.max(0, transactions.size() - 10); + + if(transactions.isEmpty()) { + history.append("No transactions found."); + } else { + history.append("Last ").append(Math.min(10, transactions.size())).append(" Transactions:\n\n"); + for(int i = start; i < transactions.size(); i++) { + history.append(transactions.get(i)).append("\n"); + } + } + + JOptionPane.showMessageDialog(null, history.toString(), "Transaction History", JOptionPane.INFORMATION_MESSAGE); + } catch(IOException ioEX) { + JOptionPane.showMessageDialog(null, "No transaction history found for this account.", "Transaction History", JOptionPane.INFORMATION_MESSAGE); + } +} + +/***************************************************************************************************************************/ + + +/********************************************************* Balance Enquiry of Customer ************************************/ + private void inquiry(String k) { + for(int i=0;i lines = new ArrayList<>(); + String line; + while ((line = br.readLine()) != null) lines.add(line); + br.close(); + + int start = Math.max(0, lines.size() - 10); + System.out.println("\nLast " + Math.min(10, lines.size()) + " transactions:"); + for (int i = start; i < lines.size(); i++) { + System.out.println(lines.get(i)); + } + } catch (IOException e) { + System.out.println("Failed to read transactions: " + e); + e.printStackTrace(); + } + } +} diff --git a/atm/transactions_1234.txt b/atm/transactions_1234.txt new file mode 100644 index 0000000..860dd06 --- /dev/null +++ b/atm/transactions_1234.txt @@ -0,0 +1,12 @@ +Deposit | 101 | 1001 | 2026-02-05 23:57:24 +Deposit | 102 | 1002 | 2026-02-05 23:57:24 +Deposit | 103 | 1003 | 2026-02-05 23:57:24 +Deposit | 104 | 1004 | 2026-02-05 23:57:24 +Deposit | 105 | 1005 | 2026-02-05 23:57:24 +Deposit | 106 | 1006 | 2026-02-05 23:57:24 +Deposit | 107 | 1007 | 2026-02-05 23:57:24 +Deposit | 108 | 1008 | 2026-02-05 23:57:24 +Deposit | 109 | 1009 | 2026-02-05 23:57:24 +Deposit | 110 | 1010 | 2026-02-05 23:57:24 +Deposit | 111 | 1011 | 2026-02-05 23:57:24 +Deposit | 112 | 1012 | 2026-02-05 23:57:24