Difference between revisions of "Directory:Derek Elder/Programs/CheckingAccount4"
MyWikiBiz, Author Your Legacy — Tuesday November 04, 2025
Jump to navigationJump to searchDerek Elder (talk | contribs)  (Start of page)  | 
				Derek Elder (talk | contribs)   (Additions)  | 
				||
| Line 60: | Line 60: | ||
       add(six);  |        add(six);  | ||
       setBackground(Color.blue);  |        setBackground(Color.blue);  | ||
| − |        setPreferredSize(new Dimension(  | + |        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;   | + |      private int transNumber;  | 
     private float transAmt;  |      private float transAmt;  | ||
     private String transType;  |      private String transType;  | ||
| − | + | ||
     public int getTransID()  |      public int getTransID()  | ||
     {  |      {  | ||
| − |          return transID;   | + |          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  | 
{  | {  | ||
| − | + |     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;  | ||
| + |      }  | ||
}  | }  | ||
</pre>  | </pre>  | ||
| Line 190: | Line 199: | ||
import java.text.NumberFormat;  | import java.text.NumberFormat;  | ||
| − | public class CheckingAccount  | + | public class CheckingAccount extends Account  | 
{  | {  | ||
| − | + |      private float totalServiceCharge;  | |
| − |      private float totalServiceCharge;   | ||
     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   | + |       public void setTransCount(int tCount)  | 
      {  |       {  | ||
| − | + |           transCount = tCount;  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
      }  |       }  | ||
      public float getServiceCharge()  |       public float getServiceCharge()  | ||
| Line 241: | Line 245: | ||
          return totalServiceCharge;  |           return totalServiceCharge;  | ||
      }  |       }  | ||
| − |       public CheckingAccount()   | + |       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:  | + |      public static String filename = "C:\\accounts.txt";  | 
| − | + | ||
     public static void main(String[] args)  |      public static void main(String[] args)  | ||
     {  |      {  | ||
| − |          frame = new   | + |          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 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);   | + |                  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>  | ||
| − | ==  | + | ==JFrameL.java==  | 
<pre>  | <pre>  | ||
| − | + | //*******************************************************************  | |
| − | + | //  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)  | |
| − | + |     {}  | |
| − | + | }  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
</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)
    {}
}