Difference between revisions of "Directory:Derek Elder/Programs/CheckingAccount4"

MyWikiBiz, Author Your Legacy — Thursday November 14, 2024
Jump to navigationJump to search
(Start of page)
 
(Additions)
 
Line 60: Line 60:
 
       add(six);
 
       add(six);
 
       setBackground(Color.blue);
 
       setBackground(Color.blue);
       setPreferredSize(new Dimension(350, 100));
+
       setPreferredSize(new Dimension(400, 100));
 
   }
 
   }
 
   //*****************************************************************
 
   //*****************************************************************
Line 106: Line 106:
  
 
package program04;
 
package program04;
 
+
import java.io.Serializable;
 
import java.text.NumberFormat;
 
import java.text.NumberFormat;
  
public class Transaction
+
public class Transaction implements Serializable
 
{
 
{
 
     private int transID;
 
     private int transID;
     private int transNumber; //Current value of transCount
+
     private int transNumber;
 
     private float transAmt;
 
     private float transAmt;
 
     private String transType;
 
     private String transType;
   
+
 
 
     public int getTransID()
 
     public int getTransID()
 
     {
 
     {
         return transID; //1 = check, 2 = deposit 3 = service charge
+
         return transID;
 
     }
 
     }
 
     public int getTransNumber()
 
     public int getTransNumber()
Line 138: Line 138:
 
         NumberFormat fmt = NumberFormat.getCurrencyInstance();
 
         NumberFormat fmt = NumberFormat.getCurrencyInstance();
 
         String description;
 
         String description;
       
+
 
 
         if(transID == 1)
 
         if(transID == 1)
        {
 
 
             transType = "Check";
 
             transType = "Check";
        }
 
 
         else if(transID == 2)
 
         else if(transID == 2)
        {
 
 
             transType = "Deposit";
 
             transType = "Deposit";
        }
 
 
         else //(transID == 3)
 
         else //(transID == 3)
        {
 
 
             transType = "S.Ch.";
 
             transType = "S.Ch.";
        }
 
  
 
         description = transNumber + "\t\t" + transType + "\t\t" + fmt.format(transAmt);
 
         description = transNumber + "\t\t" + transType + "\t\t" + fmt.format(transAmt);
Line 163: Line 157:
 
//  Account Class      Author: Derek Elder
 
//  Account Class      Author: Derek Elder
 
//********************************************************************
 
//********************************************************************
 +
 
package program04;
 
package program04;
 +
import java.io.Serializable;
  
public class Account
+
public class Account implements Serializable
 
{
 
{
   private String name;
+
    protected String name;
  private double balance;
+
    protected float balance;
 
+
    
  public String getName()
+
    public Account(String initialName, float initialBalance)
  {
+
    {
      return name;
+
        name = initialName;
  }
+
        balance = initialBalance;
  public double getBalance()
+
    }
  {
+
    public String getName()
      return balance;
+
    {
  }
+
        return name;
 +
    }
 +
    public float getBalance()
 +
    {
 +
        return balance;
 +
    }
 +
    public float setBalance(float currentBalance, int tCode)
 +
    {
 +
        if(tCode == 1 || tCode == 0)
 +
            balance -= currentBalance;
 +
        else //if(tCode == 2)
 +
            balance += currentBalance;
 +
        return balance;
 +
    }
 
}
 
}
 
</pre>
 
</pre>
Line 190: Line 199:
 
import java.text.NumberFormat;
 
import java.text.NumberFormat;
  
public class CheckingAccount
+
public class CheckingAccount extends Account
 
{
 
{
    private float balance;
+
     private float totalServiceCharge;
     private float totalServiceCharge; //Changed from double
 
 
     private int transCount;
 
     private int transCount;
 
     private Transaction[] tList;
 
     private Transaction[] tList;
Line 201: Line 209:
 
         if(transCount == tList.length)
 
         if(transCount == tList.length)
 
             increaseArray();
 
             increaseArray();
           
+
           
 
         tList[transCount] = new Transaction(transID, transNumber, transAmt);
 
         tList[transCount] = new Transaction(transID, transNumber, transAmt);
 
         transCount++;
 
         transCount++;
Line 215: Line 223:
 
             }
 
             }
 
         }
 
         }
 +
    }
 +
    public Transaction getSingleTrans(int i)
 +
    {
 +
        return tList[i];
 
     }
 
     }
 
     public int getTransCount()
 
     public int getTransCount()
Line 220: Line 232:
 
         return transCount;
 
         return transCount;
 
     }
 
     }
     public float getBalance()
+
     public void setTransCount(int tCount)
 
     {
 
     {
         return balance;
+
         transCount = tCount;
    }
 
    public float setBalance(float currentBalance, int tCode)
 
    {
 
        if(tCode == 1 || tCode == 0)
 
            balance -= currentBalance;
 
        else //if(tCode == 2)
 
            balance += currentBalance;
 
        return balance;
 
 
     }
 
     }
 
     public float getServiceCharge()
 
     public float getServiceCharge()
Line 241: Line 245:
 
         return totalServiceCharge;
 
         return totalServiceCharge;
 
     }
 
     }
     public CheckingAccount() //Needed?
+
     public CheckingAccount()
 
     {
 
     {
         balance = 0;
+
         //balance = 0;
 +
        super("", 0.0f);
 
         totalServiceCharge = 0;
 
         totalServiceCharge = 0;
 
         tList = new Transaction[10];
 
         tList = new Transaction[10];
 
         transCount = 0;
 
         transCount = 0;
 
     }
 
     }
     public CheckingAccount(float currentBalance, float currentServiceCharge)
+
     public CheckingAccount(String currentName, float currentBalance, float currentServiceCharge)
 
     {
 
     {
         balance = currentBalance;
+
         //balance = currentBalance;
 +
        super(currentName, currentBalance);
 
         totalServiceCharge = currentServiceCharge;
 
         totalServiceCharge = currentServiceCharge;
 
         tList = new Transaction[10];
 
         tList = new Transaction[10];
Line 262: Line 268:
 
         String report = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
 
         String report = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
 
         report += "My Transaction Status\n\n";
 
         report += "My Transaction Status\n\n";
 +
        report += "Name: " + name + "\n";
 
         report += "Balance: " + balance + "\n";
 
         report += "Balance: " + balance + "\n";
 
         report += "Total Service Charge: " + fmt.format(totalServiceCharge) + "\n";
 
         report += "Total Service Charge: " + fmt.format(totalServiceCharge) + "\n";
Line 268: Line 275:
 
         report += "ID\t\tType\t\tAmount\n";
 
         report += "ID\t\tType\t\tAmount\n";
 
         report += "---------------------------------------\n";
 
         report += "---------------------------------------\n";
       
+
       
 
         for(i = 0; i < transCount; i++)
 
         for(i = 0; i < transCount; i++)
 
               report += tList[i] + "\n";
 
               report += tList[i] + "\n";
Line 295: Line 302:
 
import java.text.DecimalFormat;
 
import java.text.DecimalFormat;
 
import javax.swing.JOptionPane;
 
import javax.swing.JOptionPane;
import javax.swing.JFrame;
+
import javax.swing.*; //JFrame
 +
import java.io.*;
  
 
public class Main
 
public class Main
 
{
 
{
     public static JFrame frame;
+
     //public static JFrame frame;
 +
    public static JFrameL frame;
 
     public static CheckingAccount account = null;
 
     public static CheckingAccount account = null;
 
     public static boolean below500 = false;
 
     public static boolean below500 = false;
     public static String filename = "C:\\student\\accounts.dat";
+
     public static String filename = "C:\\accounts.txt";
 
+
 
 
     public static void main(String[] args)
 
     public static void main(String[] args)
 
     {
 
     {
         frame = new JFrame("Checking Account Actions");
+
         frame = new JFrameL("Checking Account Actions");
 
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
         GUI panel = new GUI();
 
         GUI panel = new GUI();
Line 316: Line 325:
 
     {
 
     {
 
         int tCode = 0;
 
         int tCode = 0;
String stringBalance, stringTCode, stringTransAmt, message;
+
        String stringBalance, stringTCode, stringTransAmt, message;
 +
        String name;
 
         float balance, transAmt, charge, balanceBeforeCharge;
 
         float balance, transAmt, charge, balanceBeforeCharge;
 
         //boolean done = false;
 
         //boolean done = false;
Line 323: Line 333:
 
         if(account == null)
 
         if(account == null)
 
         {
 
         {
 +
            name = JOptionPane.showInputDialog("Enter your name: ");
 
             stringBalance = JOptionPane.showInputDialog("Enter your initial balance: ");
 
             stringBalance = JOptionPane.showInputDialog("Enter your initial balance: ");
 
             balance = Float.parseFloat(stringBalance);
 
             balance = Float.parseFloat(stringBalance);
 
             //CheckingAccount account = new CheckingAccount();  //Old version
 
             //CheckingAccount account = new CheckingAccount();  //Old version
             account = new CheckingAccount(balance, charge);
+
             account = new CheckingAccount(name, balance, charge);
 
         }
 
         }
  
Line 347: Line 358:
 
                         charge = 10.15f; //Cost of Check + Below $0 charge
 
                         charge = 10.15f; //Cost of Check + Below $0 charge
 
                         account.setServiceCharge(charge);
 
                         account.setServiceCharge(charge);
                         message = "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
+
                         message = account.getName() + "'s account" + "\n" +
 +
                                "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
 
                                 "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                                 "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                                 "Service charge : Check -- charge $0.15" + "\n" +
 
                                 "Service charge : Check -- charge $0.15" + "\n" +
Line 361: Line 373:
 
                         charge = 5.15f; //Cost of Check + Below $500 charge
 
                         charge = 5.15f; //Cost of Check + Below $500 charge
 
                         account.setServiceCharge(charge);
 
                         account.setServiceCharge(charge);
                         message = "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
+
                         message = account.getName() + "'s account" + "\n" +
 +
                                "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
 
                                 "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                                 "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                                 "Service charge : Check -- charge $0.15" + "\n" +
 
                                 "Service charge : Check -- charge $0.15" + "\n" +
Line 380: Line 393:
 
                     if(account.getBalance() < 50.00)
 
                     if(account.getBalance() < 50.00)
 
                     {
 
                     {
                         message = "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
+
                         message = account.getName() + "'s account" + "\n" +
 +
                            "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
 
                             "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                             "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                             "Service charge : Check -- charge $0.15" + "\n" +
 
                             "Service charge : Check -- charge $0.15" + "\n" +
Line 391: Line 405:
 
                     else
 
                     else
 
                     {
 
                     {
                         message = "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
+
                         message = account.getName() + "'s account" + "\n" +
 +
                                "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
 
                                 "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                                 "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                                 "Service charge : Check -- charge $0.15" + "\n" +
 
                                 "Service charge : Check -- charge $0.15" + "\n" +
Line 407: Line 422:
 
                     if(account.getBalance() < 50.00)
 
                     if(account.getBalance() < 50.00)
 
                     {
 
                     {
                         message = "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
+
                         message = account.getName() + "'s account" + "\n" +
 +
                                "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
 
                                 "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                                 "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                                 "Service charge : Check -- charge $0.15" + "\n" +
 
                                 "Service charge : Check -- charge $0.15" + "\n" +
Line 417: Line 433:
 
                     else
 
                     else
 
                     {
 
                     {
                         message = "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
+
                         message = account.getName() + "'s account" + "\n" +
 +
                                "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
 
                                 "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                                 "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                                 "Service charge : Check -- charge $0.15" + "\n" +
 
                                 "Service charge : Check -- charge $0.15" + "\n" +
Line 437: Line 454:
 
                 if(account.getBalance() <= 50.00)
 
                 if(account.getBalance() <= 50.00)
 
                 {
 
                 {
                     message = "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
+
                     message = account.getName() + "'s account" + "\n" +
 +
                            "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
 
                             "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                             "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                             "Service charge : Deposit -- charge $0.10" + "\n" +
 
                             "Service charge : Deposit -- charge $0.10" + "\n" +
Line 447: Line 465:
 
                 else
 
                 else
 
                 {
 
                 {
                     message = "Transaction : Deposit in the amount of $" + fmt.format(transAmt) + "\n" +
+
                     message = account.getName() + "'s account" + "\n" +
 +
                            "Transaction : Deposit in the amount of $" + fmt.format(transAmt) + "\n" +
 
                             "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                             "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
 
                             "Service charge : Deposit -- charge $0.10" + "\n" +
 
                             "Service charge : Deposit -- charge $0.10" + "\n" +
Line 467: Line 486:
 
                 JOptionPane.showMessageDialog(null, message);
 
                 JOptionPane.showMessageDialog(null, message);
 
                 //done = true;
 
                 //done = true;
                 System.exit(0); //Modify to window listener?
+
                 System.exit(0);
 
             }
 
             }
 
         }
 
         }
Line 478: Line 497:
 
     public static void listChecks()
 
     public static void listChecks()
 
     {
 
     {
 +
        System.out.println("\nListing all Checks for " + account.getName() + ":");
 +
        System.out.println("ID\t\tType\t\tAmount");
 +
        System.out.println("---------------------------------------");
 
         account.getTrans(1);
 
         account.getTrans(1);
 
     }
 
     }
 
     public static void listDeposits()
 
     public static void listDeposits()
 
     {
 
     {
 +
        System.out.println("\nListing all Deposits for " + account.getName() + ":");
 +
        System.out.println("ID\t\tType\t\tAmount");
 +
        System.out.println("---------------------------------------");
 
         account.getTrans(2);
 
         account.getTrans(2);
 +
    }
 +
    public static void readFromFile()
 +
    {
 +
        chooseFile(1);
 +
 +
        try
 +
        {
 +
            FileInputStream fis = new FileInputStream(filename);
 +
            ObjectInputStream in = new ObjectInputStream(fis);
 +
         
 +
            account = (CheckingAccount)in.readObject();
 +
            in.close();
 +
        }
 +
        catch(ClassNotFoundException e)
 +
        {
 +
            System.out.println(e);
 +
        }
 +
        catch(IOException e)
 +
        {
 +
            System.out.println(e);
 +
        }
 +
    }
 +
    public static void writeToFile()
 +
    {
 +
        chooseFile(2);
 +
 +
        try
 +
        {
 +
            FileOutputStream fos = new FileOutputStream(filename);
 +
            ObjectOutputStream out = new ObjectOutputStream(fos);
 +
 +
            out.writeObject(account);
 +
            out.close();
 +
        }
 +
        catch(IOException e)
 +
        {
 +
            System.out.println(e);
 +
        }
 +
    }
 +
    public static void chooseFile(int ioOption)
 +
    {
 +
        int status, confirm;
 +
        String  message = "Would you like to use the current default file: \n" + filename;
 +
 +
        confirm = JOptionPane.showConfirmDialog (null, message);
 +
 +
        if(confirm == JOptionPane.YES_OPTION)
 +
        {
 +
            return;
 +
        }
 +
 +
        JFileChooser chooser = new JFileChooser();
 +
     
 +
        if(ioOption == 1)
 +
        {
 +
            status = chooser.showOpenDialog(null);
 +
        }
 +
        else
 +
        {
 +
            status = chooser.showSaveDialog(null);
 +
        }
 +
 +
        if(status == JFileChooser.APPROVE_OPTION)
 +
        {
 +
            File file = chooser.getSelectedFile();
 +
            filename = file.getPath();
 +
        }
 
     }
 
     }
 
}
 
}
 
</pre>
 
</pre>
==Code from Class==
+
==JFrameL.java==
 
<pre>
 
<pre>
  public static void readElements()
+
//*******************************************************************
  {  
+
// JFrameL - WindowListener Options      Author: Derek Elder
        chooseFile(1);
+
//********************************************************************
try
+
 
{
+
package program04;
FileInputStream fis = new
+
import javax.swing.*;
    FileInputStream(filename);
+
import java.awt.*;
ObjectInputStream in = new
+
import java.awt.event.*;
      ObjectInputStream(fis);
+
import java.io.*;
                        Integer eCountObj = (Integer)in.readObject();
 
                        int eCount = eCountObj.intValue();
 
                        System.out.println("count of objects in file = "+ eCount);
 
                        for (int i = 0; i < eCount; i++)
 
                        {
 
                                System.out.println("reading object "+ i);
 
eList[i] = (ChemicalElement)in.readObject();
 
                        }
 
in.close();
 
                        ChemicalElement.setNumOfElements(eCount);
 
}
 
catch(ClassNotFoundException e)
 
                {
 
                    System.out.println(e);
 
                }
 
  
                catch (IOException e)  
+
public class JFrameL extends JFrame implements WindowListener
                {  
+
{
                    System.out.println(e);
+
    public JFrameL(String title)
                }
+
    {
  }
+
        super(title);
  public static void writeElements()  
+
        addWindowListener(this);
  {
+
    }
         chooseFile(2);
+
    public void windowClosing(WindowEvent e)
      try
+
    {
{
+
         int fileYea;
FileOutputStream fos = new
+
        String selection;
    FileOutputStream(filename);
+
        selection = JOptionPane.showInputDialog("Save the account to a file? " +
ObjectOutputStream out = new
+
                "(Enter 1 to save)");
      ObjectOutputStream(fos);
+
        fileYea = Integer.parseInt(selection);
                        int eCount = ChemicalElement.getNumOfElements();
+
        if(fileYea == 1)
                        Integer eCountObj = new Integer(eCount);
+
        {
                        out.writeObject(eCountObj);
+
            Main.writeToFile();
                        for (int i = 0; i < eCount; i++)
+
        }
                        {
+
        this.setVisible(false);
                                System.out.println("writing object "+ i);
+
        System.exit(0);
out.writeObject(eList[i]);
+
    }
                        }
+
    public void windowClosed(WindowEvent e)
                        out.close();
+
    {}
+
    public void windowOpened(WindowEvent e)
}
+
    {}
catch(IOException e)
+
    public void windowIconified(WindowEvent e)
                {  
+
    {}
                    System.out.println(e);
+
    public void windowDeiconified(WindowEvent e)
                }
+
    {}
+
    public void windowActivated(WindowEvent e)
  }
+
    {}
  public static void chooseFile(int ioOption)  
+
    public void windowDeactivated(WindowEvent e)
  {
+
    {}
      int status, confirm;     
+
}
               
 
      String  message = "Would you like to use the current default file: \n" +
 
                          filename;
 
      confirm = JOptionPane.showConfirmDialog (null, message);
 
      if (confirm == JOptionPane.YES_OPTION)
 
          return;
 
      JFileChooser chooser = new JFileChooser();
 
      if (ioOption == 1)
 
          status = chooser.showOpenDialog (null);
 
      else
 
          status = chooser.showSaveDialog (null);
 
      if (status == JFileChooser.APPROVE_OPTION)
 
      {
 
          File file = chooser.getSelectedFile();
 
          filename = file.getPath();
 
      }
 
  }
 
 
</pre>
 
</pre>

Latest revision as of 00:12, 9 February 2009

GUI.java

//*******************************************************************
//  GUI Class       Author: Derek Elder
//********************************************************************
package program04;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class GUI extends JPanel
{
   private JLabel prompt;
   private JRadioButton one, two, three, four, five, six;
   private String ioFile = "";

   public GUI()
   {
      prompt = new JLabel("Choose your action: ");
      prompt.setFont (new Font("Helvetica", Font.BOLD, 30));
      one = new JRadioButton("Enter a transaction");
      one.setBackground(Color.blue);
      two = new JRadioButton("List all transactions");
      two.setBackground(Color.blue);
      three = new JRadioButton("List all checks");
      three.setBackground(Color.blue);
      four = new JRadioButton("List all deposits");
      four.setBackground(Color.blue);
      five = new JRadioButton("Read from File");
      five.setBackground(Color.blue);
      six = new JRadioButton("Write to File");
      six.setBackground(Color.blue);

      ButtonGroup group = new ButtonGroup();
      group.add(one);
      group.add(two);
      group.add(three);
      group.add(four);
      group.add(five);
      group.add(six);

      GUIListener listener = new GUIListener();
      one.addActionListener(listener);
      two.addActionListener(listener);
      three.addActionListener(listener);
      four.addActionListener(listener);
      five.addActionListener(listener);
      six.addActionListener(listener);

      //Add the components to the JPanel
      add(prompt);
      add(one);
      add(two);
      add(three);
      add(four);
      add(five);
      add(six);
      setBackground(Color.blue);
      setPreferredSize(new Dimension(400, 100));
   }
   //*****************************************************************
   //  Represents the listener for the radio buttons
   //*****************************************************************
   private class GUIListener implements ActionListener
   {
      public void actionPerformed(ActionEvent event)
      {
         Object source = event.getSource();

         if(source == one)
         {
             Main.doTransactions();
         }
         else if(source == two)
         {
             Main.listTransactions();
         }
         else if(source == three)
         {
             Main.listChecks();
         }
         else if(source == four)
         {
             Main.listDeposits();
         }
         else if(source == five)
         {
             Main.readFromFile();
         }
         else //if(source == six)
         {
             Main.writeToFile();
         }
      }
   }
}

Transaction.java

//*******************************************************************
//  Transaction Class       Author: Derek Elder
//********************************************************************

package program04;
import java.io.Serializable;
import java.text.NumberFormat;

public class Transaction implements Serializable
{
    private int transID;
    private int transNumber;
    private float transAmt;
    private String transType;
   
    public int getTransID()
    {
        return transID;
    }
    public int getTransNumber()
    {
        return transNumber;
    }
    public float getTransAmt()
    {
        return transAmt;
    }
    public Transaction(int currentTransID, int currentTransNumber, float currentTransAmt)
    {
        transID = currentTransID;
        transNumber = currentTransNumber;
        transAmt = currentTransAmt;
    }
    public String toString()
    {
        NumberFormat fmt = NumberFormat.getCurrencyInstance();
        String description;

        if(transID == 1)
            transType = "Check";
        else if(transID == 2)
            transType = "Deposit";
        else //(transID == 3)
            transType = "S.Ch.";

        description = transNumber + "\t\t" + transType + "\t\t" + fmt.format(transAmt);

        return description;
    }
}

Account.java

//*******************************************************************
//  Account Class       Author: Derek Elder
//********************************************************************

package program04;
import java.io.Serializable;

public class Account implements Serializable
{
    protected String name;
    protected float balance;
   
    public Account(String initialName, float initialBalance)
    {
        name = initialName;
        balance = initialBalance;
    }
    public String getName()
    {
        return name;
    }
    public float getBalance()
    {
        return balance;
    }
    public float setBalance(float currentBalance, int tCode)
     {
         if(tCode == 1 || tCode == 0)
             balance -= currentBalance;
         else //if(tCode == 2)
             balance += currentBalance;
         return balance;
     }
}

CheckingAccount.java

//*******************************************************************
//  CheckingAccount Class       Author: Derek Elder
//********************************************************************

package program04;

import java.text.NumberFormat;

public class CheckingAccount extends Account
{
    private float totalServiceCharge;
    private int transCount;
    private Transaction[] tList;

     public void addTrans(int transID, int transNumber, float transAmt)
     {
         if(transCount == tList.length)
             increaseArray();
            
         tList[transCount] = new Transaction(transID, transNumber, transAmt);
         transCount++;
     }
     public void getTrans(int checkOrDeposit)
     {
         int i;
         for(i = 0;i < transCount;i++)
         {
             if(tList[i].getTransID() == checkOrDeposit)
             {
                 System.out.println(tList[i]);
             }
         }
     }
     public Transaction getSingleTrans(int i)
     {
         return tList[i];
     }
     public int getTransCount()
     {
         return transCount;
     }
     public void setTransCount(int tCount)
     {
         transCount = tCount;
     }
     public float getServiceCharge()
     {
         return totalServiceCharge;
     }
     public float setServiceCharge(float currentServiceCharge)
     {
         totalServiceCharge += currentServiceCharge;
         return totalServiceCharge;
     }
     public CheckingAccount()
     {
         //balance = 0;
         super("", 0.0f);
         totalServiceCharge = 0;
         tList = new Transaction[10];
         transCount = 0;
     }
     public CheckingAccount(String currentName, float currentBalance, float currentServiceCharge)
     {
         //balance = currentBalance;
         super(currentName, currentBalance);
         totalServiceCharge = currentServiceCharge;
         tList = new Transaction[10];
         transCount = 0;
     }
     public String toString()
     {
         NumberFormat fmt = NumberFormat.getCurrencyInstance();
         int i;

         String report = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
         report += "My Transaction Status\n\n";
         report += "Name: " + name + "\n";
         report += "Balance: " + balance + "\n";
         report += "Total Service Charge: " + fmt.format(totalServiceCharge) + "\n";
         report += "Number of Transactions: " + transCount;
         report += "\n\nChecking Account List:\n\n";
         report += "ID\t\tType\t\tAmount\n";
         report += "---------------------------------------\n";
        
         for(i = 0; i < transCount; i++)
              report += tList[i] + "\n";

         return report;
     }
     private void increaseArray()
     {
         int i;
         Transaction[] temp = new Transaction[tList.length * 2];

         for(i = 0; i < tList.length; i++)
             temp[i] = tList[i];
         tList = temp;
     }
}

Main.java

//*******************************************************************
//  Program 4       Author: Derek Elder
//********************************************************************

package program04;

import java.text.DecimalFormat;
import javax.swing.JOptionPane;
import javax.swing.*; //JFrame
import java.io.*;

public class Main
{
    //public static JFrame frame;
    public static JFrameL frame;
    public static CheckingAccount account = null;
    public static boolean below500 = false;
    public static String filename = "C:\\accounts.txt";
  
    public static void main(String[] args)
    {
        frame = new JFrameL("Checking Account Actions");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        GUI panel = new GUI();
        frame.getContentPane().add(panel);
        frame.pack();
        frame.setVisible(true);
    }
    public static void doTransactions()
    {
        int tCode = 0;
        String stringBalance, stringTCode, stringTransAmt, message;
        String name;
        float balance, transAmt, charge, balanceBeforeCharge;
        //boolean done = false;
        charge = 0.00f;
        frame.setVisible(false);
        if(account == null)
        {
            name = JOptionPane.showInputDialog("Enter your name: ");
            stringBalance = JOptionPane.showInputDialog("Enter your initial balance: ");
            balance = Float.parseFloat(stringBalance);
            //CheckingAccount account = new CheckingAccount();  //Old version
            account = new CheckingAccount(name, balance, charge);
        }

        //while(!done)
        //do
        {
            stringTCode = JOptionPane.showInputDialog("Enter the trans code: ");
            tCode = Integer.parseInt(stringTCode);
            DecimalFormat fmt = new DecimalFormat ("0.00"); //Round to two decimal places
            if(tCode == 1)
            {
                stringTransAmt = JOptionPane.showInputDialog("Enter the trans amount: ");
                transAmt = Float.parseFloat(stringTransAmt);
                account.setBalance(transAmt, tCode);
                account.addTrans(1,account.getTransCount(),transAmt);
                if(account.getBalance() < 0.00)
                {
                    if(below500 == true)
                    {
                        charge = 10.15f; //Cost of Check + Below $0 charge
                        account.setServiceCharge(charge);
                        message = account.getName() + "'s account" + "\n" +
                                "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
                                "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
                                "Service charge : Check -- charge $0.15" + "\n" +
                                "Warning : Balance below $50.00" + "\n" +
                                "Service charge : Below $0 -- charge $10.00" + "\n" +
                                "Total service charge : $" + fmt.format(account.getServiceCharge());
                        JOptionPane.showMessageDialog(null, message);
                        account.addTrans(3,account.getTransCount(),0.15f);
                        account.addTrans(3,account.getTransCount(),10.00f);
                    }
                    else
                    {
                        charge = 5.15f; //Cost of Check + Below $500 charge
                        account.setServiceCharge(charge);
                        message = account.getName() + "'s account" + "\n" +
                                "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
                                "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
                                "Service charge : Check -- charge $0.15" + "\n" +
                                "Service charge : Below $500.00 -- charge $5.00" + "\n" +
                                "Total service charge : $" + fmt.format(account.getServiceCharge());
                        JOptionPane.showMessageDialog(null, message);
                        below500 = true;
                        account.addTrans(3,account.getTransCount(),0.15f);
                        account.addTrans(3,account.getTransCount(),5.00f);
                    }
                    //done = false;
                }
                else if(account.getBalance() < 500.00 && below500 == false)
                {
                    charge = 5.15f; //Cost of Check + Below $500 charge
                    account.setServiceCharge(charge);
                    below500 = true;
                    if(account.getBalance() < 50.00)
                    {
                        message = account.getName() + "'s account" + "\n" +
                            "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
                            "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
                            "Service charge : Check -- charge $0.15" + "\n" +
                            "Warning : Balance below $50.00" + "\n" +
                            "Total service charge : $" + fmt.format(account.getServiceCharge());
                        JOptionPane.showMessageDialog(null, message);
                        account.addTrans(3,account.getTransCount(),0.15f);
                        account.addTrans(3,account.getTransCount(),5.00f);
                    }
                    else
                    {
                        message = account.getName() + "'s account" + "\n" +
                                "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
                                "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
                                "Service charge : Check -- charge $0.15" + "\n" +
                                "Service charge : Below $500.00 -- charge $5.00" + "\n" +
                                "Total service charge : $" + fmt.format(account.getServiceCharge());
                        JOptionPane.showMessageDialog(null, message);
                        account.addTrans(3,account.getTransCount(),0.15f);
                        account.addTrans(3,account.getTransCount(),5.00f);
                    }
                }
                else
                {
                    charge = 0.15f;
                    account.setServiceCharge(charge);
                    if(account.getBalance() < 50.00)
                    {
                        message = account.getName() + "'s account" + "\n" +
                                "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
                                "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
                                "Service charge : Check -- charge $0.15" + "\n" +
                                "Warning : Balance below $50.00" + "\n" +
                                "Total service charge : $" + fmt.format(account.getServiceCharge());
                        JOptionPane.showMessageDialog(null, message);
                        account.addTrans(3,account.getTransCount(),0.15f);
                    }
                    else
                    {
                        message = account.getName() + "'s account" + "\n" +
                                "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
                                "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
                                "Service charge : Check -- charge $0.15" + "\n" +
                                "Total service charge : $" + fmt.format(account.getServiceCharge());
                        JOptionPane.showMessageDialog(null, message);
                        account.addTrans(3,account.getTransCount(),0.15f);
                    }
                }
                //done = false;
            }
            else if(tCode == 2)
            {
                stringTransAmt = JOptionPane.showInputDialog("Enter the trans amount: ");
                transAmt = Float.parseFloat(stringTransAmt);
                charge = 0.10f;
                account.setServiceCharge(charge);
                account.setBalance(transAmt, tCode);
                account.addTrans(2,account.getTransCount(),transAmt);
                if(account.getBalance() <= 50.00)
                {
                    message = account.getName() + "'s account" + "\n" +
                            "Transaction : Check in the amount of $" + fmt.format(transAmt) + "\n" +
                            "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
                            "Service charge : Deposit -- charge $0.10" + "\n" +
                            "Warning : Balance below $50.00" + "\n" +
                            "Total service charge : $" + fmt.format(account.getServiceCharge());
                    JOptionPane.showMessageDialog(null, message);
                    account.addTrans(3,account.getTransCount(),0.10f);
                }
                else
                {
                    message = account.getName() + "'s account" + "\n" +
                            "Transaction : Deposit in the amount of $" + fmt.format(transAmt) + "\n" +
                            "Current Balance : $" + fmt.format(account.getBalance()) + "\n" +
                            "Service charge : Deposit -- charge $0.10" + "\n" +
                            "Total service charge : $" + fmt.format(account.getServiceCharge());
                    JOptionPane.showMessageDialog(null, message);
                    account.addTrans(3,account.getTransCount(),0.10f);
                }
                //done = false;
            }
            else //tCode = 0
            {
                balanceBeforeCharge = account.getBalance();
                charge = account.getServiceCharge();
                account.setBalance(charge, tCode);
                message = "Transaction : End" + "\n" +
                          "Current Balance : $" + fmt.format(balanceBeforeCharge) + "\n" +
                          "Total service charge : $" + fmt.format(account.getServiceCharge()) + "\n" +
                          "Final Balance : $" + fmt.format(account.getBalance());
                JOptionPane.showMessageDialog(null, message);
                //done = true;
                System.exit(0);
            }
        }
        frame.setVisible(true);
    }
    public static void listTransactions()
    {
        System.out.println(account);
    }
    public static void listChecks()
    {
        System.out.println("\nListing all Checks for " + account.getName() + ":");
        System.out.println("ID\t\tType\t\tAmount");
        System.out.println("---------------------------------------");
        account.getTrans(1);
    }
    public static void listDeposits()
    {
        System.out.println("\nListing all Deposits for " + account.getName() + ":");
        System.out.println("ID\t\tType\t\tAmount");
        System.out.println("---------------------------------------");
        account.getTrans(2);
    }
    public static void readFromFile()
    {
        chooseFile(1);

        try
        {
            FileInputStream fis = new FileInputStream(filename);
            ObjectInputStream in = new ObjectInputStream(fis);
           
            account = (CheckingAccount)in.readObject();
            in.close();
        }
        catch(ClassNotFoundException e)
        {
            System.out.println(e);
        }
        catch(IOException e)
        {
            System.out.println(e);
        }
    }
    public static void writeToFile()
    {
        chooseFile(2);

        try
        {
            FileOutputStream fos = new FileOutputStream(filename);
            ObjectOutputStream out = new ObjectOutputStream(fos);

            out.writeObject(account);
            out.close();
        }
        catch(IOException e)
        {
            System.out.println(e);
        }
    }
    public static void chooseFile(int ioOption)
    {
        int status, confirm;
        String  message = "Would you like to use the current default file: \n" + filename;

        confirm = JOptionPane.showConfirmDialog (null, message);

        if(confirm == JOptionPane.YES_OPTION)
        {
            return;
        }

        JFileChooser chooser = new JFileChooser();
       
        if(ioOption == 1)
        {
            status = chooser.showOpenDialog(null);
        }
        else
        {
            status = chooser.showSaveDialog(null);
        }

        if(status == JFileChooser.APPROVE_OPTION)
        {
            File file = chooser.getSelectedFile();
            filename = file.getPath();
        }
    }
}

JFrameL.java

//*******************************************************************
//  JFrameL - WindowListener Options       Author: Derek Elder
//********************************************************************

package program04;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class JFrameL extends JFrame implements WindowListener
{
    public JFrameL(String title)
    {
        super(title);
        addWindowListener(this);
    }
    public void windowClosing(WindowEvent e)
    {
        int fileYea;
        String selection;
        selection = JOptionPane.showInputDialog("Save the account to a file? " +
                "(Enter 1 to save)");
        fileYea = Integer.parseInt(selection);
        if(fileYea == 1)
        {
            Main.writeToFile();
        }
        this.setVisible(false);
        System.exit(0);
    }
    public void windowClosed(WindowEvent e)
    {}
    public void windowOpened(WindowEvent e)
    {}
    public void windowIconified(WindowEvent e)
    {}
    public void windowDeiconified(WindowEvent e)
    {}
    public void windowActivated(WindowEvent e)
    {}
    public void windowDeactivated(WindowEvent e)
    {}
}