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)
{}
}