Accounts Receivable

Accounts Receivable

A common business application is an ‘Accounts Receivable' (AR) system. Companies use an AR system to bill their customers on sales of their products. In this assignment question you will develop the functionality of a simple Accounts Receivable system. You will develop classes for a BillofSales, Customer, Item, and Product. The requirement for each of these classes is given below.
+ Customer customer
+ ArrayList items
. public BillOfSales(Customer c)
. public void add( String productDescription, double productPrice, int productQuantity)
. public double calcAmountDue()
. public String toString()
+ String name, street, city, state, zipcode
. Customer(String name, String street, String city, String state, String zipcode)
. public String toString()
+ Product product
+ int quantity
. public Item( Product product, item quantity)
. double calcTotalPrice()
. public String toString()
+ String description
+ double price
. public Product( String description, double price)
. String getDescription();
. double getPrice();
In the above, a prefix of a plus (+) indicates a field and a prefix of a dot (.) indicates a method.

You have been provided a test class BillOfSalesTst which has a static test method. For convenience, you do not need to create an instance of BillOfSalesTst. Just right-click and execute the test method. Your output should look like the following:

John Q. Public
123 Elm Steet
Pleasantville, PA 15213

Description Unit Price Num Total
TV 299.99 1 299.99

9.99 7 69.93
Speakers 49.99 2 99.98
Amount due: 469.90


The following suggestions will help you in developing this assignment. The actual algorithmic complexity of this assignment is not high. There are two interesting parts: hooking up the various classes together (the so called ‘plumbing' of the system) and formatting the output.

For hooking up the classes, it will be helpful to draw a picture of the four classes, their fields and methods using index cards, along the lines of the discussion on CRC cards given in the textbook (pg. 426). For formatting the output, read the documentation for the method String.format on the official Java documentation at:,%20java.lang.Object...%29

For guidance, the sample output used above was produced with the format string, "%-25s %8s %5s %10s\n". The header was produced in the toString method of BillOfSales class with 

String.format("%-25s %8s %5s %10s\n", "Description", "Unit Price", "Num", "Total");

Create a new project in BlueJ by clicking on the menu option Project New project. This will create a folder with the project name (see below). All BlueJ project-related files for this project will be stored in this folder. Create new classes by clicking on the [New Class] button. All Java class files that you create (.java files) will be stored in the BlueJ project folder. The project folder will contain other files as well. After completing and testing your assignment, zip the entire BlueJ folder and submit it. Since your Instructor will need all files in the project folder, make sure you zip the entire folder. For this assignment the names of the BlueJ project, Java class files, and the zip file you submit are given below:

Powered by