Main.java Code
import java.util.*; import javax.swing.*; import javax.swing.JOptionPane; public class Main { DebitCard debitCard; DbHelper dbHelper; public Main() { debitCard = new DebitCard(); dbHelper = new DbHelper(); } public static void main(String[] args) { Main mn = new Main(); mn.initLoginGUI(); } public void initLoginGUI() { String card_n; int pin; boolean i =false; do { card_n=JOptionPane.showInputDialog(null,"WELCOME TO MY ATM \nPlease enter card No: ", "My ATM", JOptionPane.INFORMATION_MESSAGE); pin=Integer.parseInt(JOptionPane.showInputDialog(null,"Please enter PIN: ", "My ATM", JOptionPane.INFORMATION_MESSAGE)); dbHelper.loadData(); if(card_n.equals(dbHelper.card_No) && pin==dbHelper.card_pin) { JOptionPane.showMessageDialog(null,"Log in Successfully", "My ATM", JOptionPane.INFORMATION_MESSAGE); initServicesGUI(); } else { JOptionPane.showMessageDialog(null,"Invalid Card No or wrong Pin Code", "Error Message ", JOptionPane.ERROR_MESSAGE); i=true; } } while(i); } public void initServicesGUI() { while(true) { int usr_choice=Integer.parseInt(JOptionPane.showInputDialog(null,"Please enter \n1 for 'Deposit Amount'\n2 for 'Withdraw Amount'\n3 for 'Check Balance'\n4 for 'Exit the Program'\n ", "My ATM", JOptionPane.INFORMATION_MESSAGE)); try { switch(usr_choice) { case 1 : depositAmoount(); break; case 2 : cashWithdraw(); break; case 3 : checkBalance(); break; case 4 : showDeveloperInfo(); System.exit(0); default : JOptionPane.showMessageDialog(null,"Sorry ! Invalid choice ", "Error Message ", JOptionPane.ERROR_MESSAGE); } } catch (NumberFormatException e) { System.out.println("Error occured " + e); } } } public void depositAmoount() { try { long amount=Integer.parseInt(JOptionPane.showInputDialog(null,"Please enter money to deposit\n(Amount must be multiple of 500 and upto maximum Rs. 25000/- per transaction.", "Deposit Amount", JOptionPane.INFORMATION_MESSAGE)); if(amount%500==0 && amount>0 && amount<=25000) { long up_amount=dbHelper.acc_balance + amount; dbHelper.saveData(up_amount); JOptionPane.showMessageDialog(null,"$"+ amount+ " hase been deposited successfully", "Message", JOptionPane.INFORMATION_MESSAGE); dbHelper.loadData(); } else { JOptionPane.showMessageDialog(null,"Amount must be multiple of 500 and upto maximum Rs. 25000/- per transaction.", "Message", JOptionPane.INFORMATION_MESSAGE); } } catch (NumberFormatException e) { System.out.println("Error occured " + e); } } public void cashWithdraw() { long amount=Integer.parseInt(JOptionPane.showInputDialog(null,"Please enter money to Withdraw\n(Amount must be multiple of 500 and upto maximum Rs. 25000/- per transaction.", "Withdraw Cash", JOptionPane.INFORMATION_MESSAGE)); try { if(amount%500==0 && amount>0 && amount<=25000) { long up_amount=dbHelper.acc_balance - amount; if(up_amount>=0) { dbHelper.saveData(up_amount); JOptionPane.showMessageDialog(null,"$"+ amount+ " hase been withdrawn successfully", "Message", JOptionPane.INFORMATION_MESSAGE); dbHelper.loadData(); } else { JOptionPane.showMessageDialog(null,"There is not enough amount to withdraw", "Message", JOptionPane.INFORMATION_MESSAGE); } } else { JOptionPane.showMessageDialog(null,"Amount must be multiple of 500 and upto maximum Rs. 25000/- per transaction.", "Message", JOptionPane.INFORMATION_MESSAGE); } } catch (NumberFormatException e) { System.out.println("Error occured " + e); } } public void checkBalance() { JOptionPane.showMessageDialog(null,"Your current balance is : $" + dbHelper.acc_balance , "Check Balance", JOptionPane.INFORMATION_MESSAGE); } public void showDeveloperInfo() { JOptionPane.showMessageDialog(null,"Developed by : VU ACADEMY (BC090402315)", "Developer Info", JOptionPane.INFORMATION_MESSAGE); } }DebitCard.java Code
import java.util.*; import javax.swing.*; public class DebitCard { private String cardNo; private int pin; private long balance; public DebitCard() { this.cardNo=""; this.pin=0; this.balance=0; } public DebitCard(String c_no, int p, long b) { this.cardNo=c_no; this.pin=p; this.balance=b; } public DebitCard(DebitCard d) { this.cardNo=d.cardNo; this.pin=d.pin; this.balance=d.balance; } public void setcardNo(String c_no) { this.cardNo=c_no; } public void setpin(int p) { this.pin=p; } public void setbalance(long b) { this.balance=b; } public String getcardNo() { return this.cardNo; } public int getpin() { return this.pin; } public long getbalance() { return this.balance; } }DbHelper.java Code
import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.PrintWriter; import java.util.*; import javax.swing.*; import javax.swing.JOptionPane; public class DbHelper { private static String FILE_NAME = "BC090402315.txt"; String card_No; int card_pin; long acc_balance; public void loadData() { String tokens[]=null; try { FileReader Freader = new FileReader(FILE_NAME); BufferedReader Breader = new BufferedReader(Freader); String line = Breader.readLine(); tokens = line.split(","); card_No = tokens[0]; card_pin = Integer.parseInt(tokens[1]); acc_balance = Long.parseLong(tokens[2]); Breader.close(); Freader.close(); } catch (Exception e) { System.out.println("Error occured " + e); } } public void saveData(long acc_b) { try { FileWriter fw = new FileWriter(FILE_NAME); PrintWriter pw = new PrintWriter(fw); pw.println(card_No+","+card_pin+","+acc_b); pw.flush(); pw.close(); fw.close(); } catch (Exception e) { System.out.println("Error occured " + e); } } }