Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

PROGRAMMING ACTIVITY 2: READING OBJECTS FROM A FILE (I WILL GIVE OUT DOUBLE THE

ID: 646766 • Letter: P

Question

PROGRAMMING ACTIVITY 2: READING OBJECTS FROM A FILE (I WILL GIVE OUT DOUBLE THE POINTS IF SOMEONE FINISHES THIS!!!!!!!!!!)

In this activity, you will read objects from a file and perform this activity:

Read an object file containing bank account transaction objects. Loop through all the objects and calculate the new balance of the bank account. Assume that we do not know the number of transaction items, that is, objects, in the file.

Notice that this activity is identical to Programming Activity 1, except that the transactions you will read are stored in the file as objects.

The framework will display the current transaction and current balance so that you can check the correctness of your code as the program executes.

Task Instructions: Reading from the transactions.obj File

In Moodle under source code go to Chapter 11, you will find a Programming Activity 2 folder. Copy the contents of the folder onto a folder on your computer.(i will post the source code below)

Open the Accounting.java file. Search for five asterisks (*****) to find the balanceCheckBook method where you will add your code. The method header has been coded for you. Write the code to read the transactions from the transactions.obj file, and calculate the balance after all the transactions in that file have been executed.

This program first writes Transaction objects to the file transactions.obj; that code is provided. You need to code the body of the balanceCheckBook method in order to read that file. Example 11.18 shows the student code section of the Accounting.java file.

? To process the transactions, you will need to read one Transaction object at a time from the transactions.obj file; you will retrieve the transaction amount using the getAmount method of the Transaction class. The API for that method is:

public double getAmount( )

? Then process the transaction; you do not need to check the type of transaction. Just add the amount to the checkbook balance.

? imgAfter you have processed each transaction, call the animate method. This method belongs to the Accounting class, so you will call animate without using an object reference. The API of the animate method is the following:

public void animate( Transaction currentTransaction, double currentBalance )

? As you can see, the animate method takes two arguments:

CSE 230/ 505 ONSAY

? currentTransaction is the current Transaction object

? currentBalance is the current balance of the checkbook

Assuming that you have a Transaction object reference called transactionObject and a double called balance, a call to animate will look like the following:

animate( transaction, balance );

? When you call animate, the window will display the current transaction graphically. It will also display the transaction amount (red if negative, blue if positive) and the current checkbook balance (in black). By adding the previous checkbook balance to the current transaction amount, you will be able to compute the current checkbook balance and check that your program is correct.

? Stop reading from the file when you reach the end of the file. You will need to set up a catch block to handle the EOFException that occurs when the end of the file is reached.

? Display the ending balance in a dialog box.

? To test your code, compile and run the Accounting.java application.

/* 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.File;

import java.io.FileNotFoundException;

import java.io.PrintWriter;

import java.util.Scanner;

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

//

//

// end of student code

//

}

public void writeTransactions( ArrayList transactionList )

{

//

// writing to file transactions.obj

//

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 transactionList = new ArrayList( );

Check c1 = new Check( -500.00 );

transactionList.add( c1 );

Deposit d1 = new Deposit( 3000.00 );

transactionList.add( d1 );

Withdrawal w1 = new Withdrawal( -400.00 );

transactionList.add( w1 );

c1 = new Check( -300.00 );

transactionList.add( c1 );

// 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 );

}

}

Explanation / Answer

omg need help pleaseeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote