Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

/* Accounting class * Anderson, Franceschi */ import javax.swing.JOptionPane; import java.text.DecimalFormat; import javax.swing.JFrame; import java.awt.Graphics; import java.util.Scanner; import java.io.File; import java.io.FileWriter; import java.io.BufferedWriter; import java.io.IOException;

/* Accounting class * Anderson, Franceschi */

import javax.swing.JOptionPane; import java.text.DecimalFormat; import javax.swing.JFrame; import java.awt.Graphics; import java.util.Scanner; import java.io.File; import java.io.FileWriter; import java.io.BufferedWriter; import java.io.IOException; import java.io.FileNotFoundException;

public class Accounting extends JFrame { private BankAccount bankAccount;

public Accounting() { bankAccount = new BankAccount(getBackground()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300, 300); setVisible(true); }

public void balanceCheckBook() { // ***** Write the body of this method ***** // // Using a while loop, read the file transactions.txt // The file transactions.txt contains // transactions between you and your bank // // You will need to call the animate method inside // the body of the loop that reads the file contents // // The animate method takes three arguments: // a String, representing the type of transaction // a double, representing the transaction money amount // a double, representing the new checkbook balance // So if these three variables are: // transactionName, currentAmount, and balance, // then the call to animate will be: // // animate(transactionName, currentAmount, 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 animate(String currentTransaction, double currentAmount, double currentBalance) { // set the current transaction in the bankAccount object if (currentTransaction.startsWith("Ch")) { bankAccount.setCurrentTransaction(new Check(currentAmount)); } else { if (currentTransaction.startsWith("With")) { bankAccount.setCurrentTransaction(new Withdrawal(currentAmount)); } else { if (currentTransaction.startsWith("Dep")) { bankAccount.setCurrentTransaction(new Deposit(currentAmount)); } else { bankAccount.setCurrentTransaction(new UnknownTransaction(currentAmount)); } } }

// 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); bankAccount.draw(g); }

public static void main(String[] args) { Accounting app = new Accounting(); 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;

public abstract class Transaction { 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 ); }

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Databases Theory And Applications 27th Australasian Database Conference Adc 20 Sydney Nsw September 28 29 20 Proceedings Lncs 9877

Authors: Muhammad Aamir Cheema ,Wenjie Zhang ,Lijun Chang

1st Edition

3319469215, 978-3319469218

More Books

Students also viewed these Databases questions