Difference between revisions of "Directory:Derek Elder/Programs/CheckingAccount4"
MyWikiBiz, Author Your Legacy — Friday November 29, 2024
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) {} }