Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Programming Activity 11-2 Guidance ================================== Special placement of transactions.obj file -------------------------------------------- As usual, place the starting framework code in your project folder's src subfolder. However,

Programming Activity 11-2 Guidance ================================== Special placement of "transactions.obj" file -------------------------------------------- As usual, place the starting framework code in your project folder's "src" subfolder. However, place the framework "transactions.obj" file in your project folder itself, at the same level as the "src" subfolder; not within the "src" subfolder. Note that NetBeans uses the project folder as the current folder when it runs your program. Where to add your code ---------------------- The framework source file you are to modify is the "Accounting.java" file. There is only 1 part to change. As usual, it is indicated by a comment block that starts with 5 asterisks (*****). As explained there, and in your textbook, you are to provide the entire body of the "balanceCheckBook()" method. Starter code ------------ Use the try-with-resources form of the "try" statement as shown in this week's outline. To get you started on the right foot, here is the code for the local variables and the beginning of the "try" block: double balance = 0.00; double currentAmount; Transaction transaction; try (FileInputStream fis = new FileInputStream("transactions.obj"); ObjectInputStream ois = new ObjectInputStream(fis);) // fis and cis are resources that will be automatically closed. { "while" loop ------------ Within the "try" block, create a "while" loop to process the object file. The "while" loop's condition is (true). For each iteration of the "while" loop, get one object from the object file, assigning it to the "transaction" variable. To do this, use the "ois" object and its "readObject()" function. In this assignment statement, explicitly cast the returned "Object" type to a "Transaction" object type (on the right hand side of the assignment operator). After obtaining the "transaction" object, use its "getAmount()" function to assign its amount to "currentAmount". Then use the new value of "currentAmount" to update "balance". Next, call "animate" as detailed in the framework comments. Since, we are using the try-with-resources form of the "try" statement, there is no need to provide a statement to close the object file, because that will be done automatically. This also means, only a single "try" statement is needed. There is no need for another (nested) "try" statement. Since the "while" loop condition should be "while (true)", it will just keep reading objects from the file until an EOFException causes it to cease, at which point control will be transferred to the EOFException catch block. "catch" blocks -------------- The "try" block should be followed by 4 "catch" blocks for the following exceptions in the order shown: a) FileNotFoundException In this catch block, display the following message to the system console: "The file transactions.obj was not found." b) ClassNotFoundException In this catch block, display the following message to the system console: "A ClassNotFoundException was encountered." Normally, the "ClassNotFoundException" exception could be used to flag and ignore individual corrupted objects in the input object file. This would require using a second (nested) "try" block inside the "while" loop. However, since the provided input object file, transactions.obj", has no corrupted objects that could cause this exception, and to avoid making things overly complicated for this activity, do not take that approach. c) EOFException In this catch block, display the following message to the system console: "The end of the file was reached." d) IOException In this catch block, display the following message to the system console: "An IOException was encountered." End-of-file exception --------------------- Here is the code for the end of file "catch" block: // An EOF exception is part of normal processing: catch (EOFException eofe) { System.out.println("The end of the file was reached."); } This "catch" block is executed when the code in the "try" block encounters the end of the input file. After this "catch" block executes, the program flow continues with the code after the last "catch" block. This trailing code is where you display messages to the user on the system console and in a pop-up window. Because we are using the "try-with-resources" form of the "try" statement, there is no need for a "finally" block. Output messages --------------- After the "catch" blocks, display both the console and the pop-up dialog messages as shown in the "Example Programming Activity 11-2 Output" document on our course web page. Skip optional part ------------------ Skip the optional part of the textbook instructions that is labeled "If you have time...". Watch the related video ----------------------- This assignment involves some complex concepts. However, given all that has been provided, it really is an exercise in following instructions, using what you have been given, and doing things step-by-step in the correct ORDER and syntax. Don't forget that there is also a video provided about reading objects from a file. Your solution should be short ----------------------------- The only code in the "try" block is the "while" block mentioned in the instructions. Not counting comments, blank lines, or the "animate" call, the "while" block can easily be coded with 3 simple lines of code--each mentioned in the instructions. There is 1 line of code inside each of the catch blocks. Each of these writes a message to the system console as detailed in the instructions. Make sure you put your catch blocks in the correct ORDER, as given in the instructions. The code following the last catch block needs only 3 statements to display the ending balance to the system console and in a pop-up window.

================================================================

/* 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 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

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(); } }

================================================================

Tis is the OUTPUT of the code.

image text in transcribed

image text in transcribed

image text in transcribed

image text in transcribed

Example Programming Activity 11-2 Output The following 4 screen shots show the transaction displays that occur as the program processes the "transactions.obj" file Check: Reading objects from a file Check Amourt:-$500 UU Currer t accurt balance =-5500.00 Check AEC Bank Deposit: Reading objects from a file Deposit: Amount- 3000.00 Current acccunt balance $2,500 00 Deposit arnk$5ASC Eank ABC Eanlk Withdrawal: Reading objects from a file Withdrawal: Amount- 8400.00 Current acccunt balance $2,100.00 Withdrawal Check: Reading objects from a file Check Amount-$300 00 Current account kalance = $1,800 O Check ACC Dank The "Message" pop-up dialog box that is displayed at the end of the processing Reading objacts troma rofe Teare Tools Wndow Help Check: Amount 500.00 Chack itz Activity 11 2 (run) ABC Bank of the Ele waz reachhed. balance-1, 200-00 nding ala OK balaiceChe:kBook-Nias... Hembers l 1219 PM Exception Cases FileNotFoundException: The following is all that is displayed if the "transactions.obj" file is not found dkeitz Acivity 11.2 Hle Ldr View Nangee source ketector Kun lebug Frotie leam ocls Wndcw Help Search (Ctri confa Proj Files EanAscount.wa ||| rme Check jav Depest.jaa Eding balance-0.0o Ending Balarce Erding balance ic $000 OK Wembers 1 12-22 PM

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_2

Step: 3

blur-text-image_3

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

Professional Microsoft SQL Server 2014 Integration Services

Authors: Brian Knight, Devin Knight

1st Edition

1118850904, 9781118850909

More Books

Students also viewed these Databases questions