Question
/* Accounting class Anderson, Franceschi */ import javax.swing.JOptionPane; import java.text.DecimalFormat; import javax.swing.JFrame; import java.awt.Graphics; import java.util.ArrayList; import java.io.FileInputStream; import java.io.ObjectInputStream; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import
/* Accounting class Anderson, Franceschi */
import javax.swing.JOptionPane; import java.text.DecimalFormat; import javax.swing.JFrame; import java.awt.Graphics; import java.util.ArrayList; import java.io.FileInputStream; import java.io.ObjectInputStream; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.io.IOException; import java.io.EOFException; import java.io.FileNotFoundException;
public class Accounting extends JFrame { private BankAccount bankAccount;
public Accounting() { super("Reading objects from a file"); bankAccount = new BankAccount(getBackground()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300, 300); setVisible(true); }
public void balanceCheckBook() { // // ***** Student writes the body of this method ***** // // Using a while loop, read the file transactions.obj // The file transactions.obj contains transaction objects // // You will need to call the animate method inside // the body of the loop that reads the objects // // The animate method takes two arguments: // a Transaction object, representing the transaction // a double, representing the new checkbook balance // So if these two variables are transaction and balance, // then the call to animate will be: // // animate(transaction, balance); // // You should make that call in the body of your while // loop, after you have updated the checkbook balance // // Student code starts here:
// Student code ends here. }
public void writeTransactions(ArrayList
try { FileOutputStream fos = new FileOutputStream("transactions.obj"); ObjectOutputStream oos = new ObjectOutputStream(fos);
Transaction tempTransaction; for (int i = 0; i < transactionList.size(); i++) { tempTransaction = (Transaction) transactionList.get(i); oos.writeObject(tempTransaction); } oos.close(); } catch (IOException ioe) { System.out.println(ioe.toString()); System.out.println(ioe.getMessage()); } }
public void animate(Transaction currentTransaction, double currentBalance) { // set the currentTransaction data member in the bankAccount object bankAccount.setCurrentTransaction(currentTransaction);
// set the currentBalance data member in the bankAccount object bankAccount.updateBalance(currentBalance);
repaint(); try { Thread.sleep(3000); // wait for the animation to finish } catch (Exception e) { } }
public void paint(Graphics g) { super.paint(g); if (bankAccount != null) { bankAccount.draw(g); } }
public static void main(String[] args) { Accounting app = new Accounting();
// Generate an ArrayList of Transaction objects to write to file Transaction.obj ArrayList
// write transactions as objects to file transaction.obj app.writeTransactions(transactionList);
// read transaction.obj, balance the checkbook app.balanceCheckBook(); } }
/* BankAccount class Anderson, Franceschi */ import javax.swing.JFrame; import java.awt.Graphics; import java.awt.Color;
public class BankAccount { private Transaction currentTransaction; private double currentBalance; private Color background;
public BankAccount( Color newBackground ) { currentBalance = 0.0; currentTransaction = null; background = newBackground; }
public void setCurrentTransaction( Transaction ca ) { currentTransaction = ca; }
public Transaction getCurrentTransaction( ) { return currentTransaction; }
public void updateBalance( double newCurrentBalance ) { currentBalance = newCurrentBalance; currentTransaction.updateBalance( currentBalance ); }
public void draw( Graphics g ) { if (currentTransaction != null) currentTransaction .draw( g, 50, 200, 175, background ); }
}
/* Check class Anderson, Franceschi */ import java.awt.Graphics; import java.awt.Color; import java.text.DecimalFormat;
public class Check extends Transaction { public Check( double p ) { super( p ); }
public void draw( Graphics g, int startX, int endX, int y, Color background ) { String display1 = "Check: Amount = " + money.format( amount ); // set color to red g.setColor( Color.RED ); g.drawString( display1, 20, 50 ); // set color to black g.setColor( Color.BLACK ); g.drawString( display2, 20, 75 );
// set color to blue g.setColor( Color.BLUE ); g.drawString( "Check", startX + 3, y - 44 );
// draw check g.drawRect( startX, y, 200, 100 ); g.drawString( "ABC Bank", startX + 20, y + 20 );
for ( int x = startX + 100; x < endX + 20; x += 1 ) { // sign the check g.setColor( Color.BLACK ); g.drawLine( x, ( int ) ( y + 60 + 10 * Math.sin( x ) ), x + 1, ( int ) ( y + 60 + 10 * Math.sin( x + 1 ) ) );
try { Thread.sleep( ( int )( 30 ) ); } catch ( InterruptedException e ) { e.printStackTrace( ); } } } }
/* Deposit class Anderson, Franceschi */ import java.awt.Graphics; import java.awt.Color; import java.text.DecimalFormat;
public class Deposit extends Transaction { public Deposit( double p ) { super( p ); }
public void draw( Graphics g, int startX, int endX, int y, Color background ) { String display1 = "Deposit: Amount = " + money.format( amount ); // set color to blue g.setColor( Color.BLUE ); g.drawString( display1, 20, 50 );
// set color to black g.setColor( Color.BLACK ); g.drawString( display2, 20, 75 );
// set color to blue g.setColor( Color.BLUE ); g.drawString( "Deposit", startX + 3, y - 44 );
// draw Work, Internet, Bank g.drawLine( startX, y - 20, endX, y - 20 ); g.drawLine( startX, y + 40, endX, y + 40 ); g.drawString( "Work", startX - 40, y + 20 ); g.drawString( "ABC Bank", endX + 10, y + 20 );
// Animate a dollar bill int x; for ( x = startX; x < endX - 60; x += 5 ) { g.setColor ( new Color( 0, 255, 0 ) );// green g.fillRect( x, y, 60, 20 ); g.setColor ( new Color( 0, 0, 0 ) ); g.drawString( "$$$", x + 20, y + 15 );
try { Thread.sleep( ( int )( 100 ) ); } catch (InterruptedException e ) { e.printStackTrace( ); } g.setColor( background ); // background g.fillRect( x, y, 60, 20 ); //erase } g.setColor ( new Color( 0, 255, 0 ) ); // green g.fillRect( x, y, 60, 20 ); g.setColor ( new Color( 0, 0, 0 ) ); g.drawString( "$$$", x + 20, y + 15 ); } }
/* Transaction class Anderson, Franceschi */
import java.awt.Graphics; import java.awt.Color; import java.text.DecimalFormat; import java.io.Serializable;
public abstract class Transaction implements Serializable { public static final DecimalFormat money = new DecimalFormat( "$#,##0.00" );
protected double amount; protected double currentBalance;
protected String display2 = "";
public Transaction( double p ) { setAmount( p ); }
public void setAmount( double newAmount ) { amount = newAmount; // display1 = "Check: Amount = " + money.format( amount ); }
public double getAmount( ) { return amount; }
public void updateBalance( double newCurrentBalance ) { currentBalance = newCurrentBalance; display2 = "Current account balance = " + money.format( currentBalance ); }
public abstract void draw( Graphics g, int startX, int endX, int y , Color c ); }
/* UnknownTransaction class Anderson, Franceschi */ import java.awt.Graphics; import java.awt.Color; import java.text.DecimalFormat;
public class UnknownTransaction extends Transaction { public UnknownTransaction( double p ) { super( p ); }
public void draw( Graphics g, int startX, int endX, int y, Color background ) { String display1 = "Unknown Transaction: Amount = " + money.format( amount ); if ( amount < 0 ) g.setColor( Color.RED ); else g.setColor( Color.BLUE ); g.drawString( display1, 20, 50 );
// set color to black g.setColor( Color.BLACK ); g.drawString( display2, 20, 75 );
// set color to blue g.setColor( Color.BLUE ); g.drawString( "Unknown Transaction", startX + 5, y - 45 );
int x; for ( x = startX; x < endX; x += 5 ) { g.setColor( Color.DARK_GRAY ); // Draw a question mark g.drawArc( x, y, 20, 20, 0, 180 ); g.drawLine( x + 20, y + 10, x, y + 60 ); g.drawArc( x, y + 55, 10, 10, 180, 225 ); g.fillOval( x, y + 80, 15, 15 );
try { Thread.sleep( ( int )( 70 ) ); } catch (InterruptedException e ) { e.printStackTrace( ); } g.setColor( background ); // background g.fillRect( x, y - 10, x + 50, y + 100 ); //erase }
g.setColor( Color.DARK_GRAY ); // Draw a question mark g.drawArc( x, y, 20, 20, 0, 180 ); g.drawLine( x + 20, y + 10, x, y + 60 ); g.drawArc( x, y + 55, 10, 10, 180, 225 ); g.fillOval( x, y + 80, 15, 15 );
} }
/* Withdrawal class Anderson, Franceschi */ import java.awt.Graphics; import java.awt.Color; import java.text.DecimalFormat;
public class Withdrawal extends Transaction { public Withdrawal( double p ) { super( p ); }
public void draw( Graphics g, int startX, int endX, int begY, Color background ) { String display1 = "Withdrawal: Amount = " + money.format( amount ); // set color to red g.setColor( Color.RED ); g.drawString( display1, 20, 50 ); // set color to black g.setColor( Color.BLACK ); g.drawString( display2, 20, 75 ); // set color to blue g.setColor( Color.BLUE ); g.drawString( "Withdrawal", startX + 5, begY - 45 );
// draw an automated teller machine g.drawRect( startX, begY, 200, 100 );
g.drawRect( startX + 10, begY + 10, 20, 20 ); g.drawRect( startX + 40, begY + 10, 20, 20 ); g.drawRect( startX + 70, begY + 10, 20, 20 );
g.drawRect( startX + 10, begY + 40, 20, 20 ); g.drawRect( startX + 40, begY + 40, 20, 20 ); g.drawRect( startX + 70, begY + 40, 20, 20 );
g.drawRect( startX + 10, begY + 70, 20, 20 ); g.drawRect( startX + 40, begY + 70, 20, 20 ); g.drawRect( startX + 70, begY + 70, 20, 20 );
g.drawString( "1",startX + 17, begY + 25 ); g.drawString( "2",startX + 47, begY + 25 ); g.drawString( "3",startX + 77, begY + 25 );
g.drawString( "4",startX + 17, begY + 55 ); g.drawString( "5",startX + 47, begY + 55 ); g.drawString( "6",startX + 77, begY + 55 );
g.drawString( "7",startX + 17, begY + 85 ); g.drawString( "8",startX + 47, begY + 85 ); g.drawString( "9",startX + 77, begY + 85 );
// Animate a dollar bill int y; for ( y = begY + 5; y < begY + 75; y += 5 ) { g.setColor ( new Color( 0, 255, 0 ) ); // green g.fillRect( startX + 120, y, 60, 20 ); g.setColor ( new Color( 0, 0, 0 ) ); g.drawString( "$$$", startX + 140, y + 15 );
try { Thread.sleep( ( int )( 100 ) ); } catch ( InterruptedException e ) { e.printStackTrace( ); } g.setColor( background ); // background g.fillRect( startX + 120, y, 60, 20 ); //erase } g.setColor( new Color( 0, 255, 0 ) ); // green g.fillRect( startX + 120, y, 60, 20 ); g.setColor( new Color( 0, 0, 0 ) ); g.drawString( "$$$", startX + 140, y + 15 ); }
}
Please only answer if you know the answer.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started