Vending Machine JAVA program

Please do the following to complete this assignment.

Purpose:

The purpose of this project is to provide non-trivial practice in the use of Java object-oriented programming features to implement an object-oriented design and have a bit of fun doing it.

Resources Needed:

You will need a computer system with Java 7 or greater SE edition run-time and Java Development Kit (JDK). You may optionally use a Java IDE for example NetBeans, Eclipse, etc. However application builders are not allowed.

Submitted Files:

Design and Analysis:

This is an informal essay-style single-spaced word-processed document. The file formats accepted will be announced at project assignment. The length of the document should be between 1 and 1.5 pages. The following subjects should be discussed in this order:

  1. General program design. How is the program organized? What major data structures were used? How did you divide the functionality among your classes? How are commands processed? Etc.

  2. What alternative approaches were considered and why were they rejected?

  3. What did you learn from doing this project and what would you do differently?

Source files:

Each public class must be contained in a separate Java source file. Only one source file will have a main() method and this source will be named VendingMachineSimulator.java. Other source/class names are up to you following the guidelines specified so far in the course.

The format of the Java source must meet the general Java coding style guidelines discussed so far during the course. Pay special attention to naming guidelines, use of appropriate variable names and types, variable scope (public, private, protected, etc.), indentation, and comments. Classes and methods should be commented with JavaDoc-style comments (see below). Please use course office hours or contact the instructor directly if there are any coding style questions.

JavaDocs:

Sources should be commented using JavaDoc-style comments for classes and methods. Each class should have a short comment on what it represents and use the @author annotation. Methods should have a short (usually 1 short sentence) description of what the results are of calling it. Parameters and returns should be documented with the @param and @return annotations respectively with a short comment on each.

JavaDocs must be generated against every project Java source file. They should be generated with a -private option (to document all protection-level classes) and a d [dir] option to place the resulting files in a javadocs directory/folder at the same level as your source files. See the JavaDocs demonstration for more details.

Submit file:

The submit file is to be a Zip file containing your design and analysis document, your Java sources, and your javadocs directory/folder. Any appropriate file name for this Zip file is acceptable.

If you know how to create a standard Java JAR file, this is also acceptable for your source code. However, make sure you include the source code in your JAR file.

Program Specification:

  1. Create a new multi-class Java program which implements a vending machine simulator which contains the following functionality:

    1. At program startup, the vending machine is loaded with a variety of products in a variety of packaging for example soda/tonic/Coke in bottles, peanuts in bags, juice in cartons, etc. Also included is the cost of each item. The program should be designed to easily load a different set of products easily (for example, from a file).

Also at program startup, money should be loaded into the vending machine. Money should consist of different monetary objects for the specified currency for example $1 bills, $5 bills, quarters, dimes, etc. Your program should be designed to use different national currencies easily (for example the Euro) without changing source code. Money should be maintained as paper bills and coins, not just amounts.

    1. A menu of commands must be provided. At a minimum the menu should consists of the following commands:

      1. Display the list of commands

      2. Display the vending machine inventory. For each item, this command should result in displaying a description and current quantity.

      3. Display the money currently held in the vending machine.

      4. Purchase an item. The result of this selection should be the following actions:

        1. Prompt the user to indicate what item to purchase

        2. Prompt the user to specify what monetary items are being used for payment (the actual items for example quarters, dimes, etc.), not a money amount

        3. If the user specified enough money to purchase the selected item, the item is purchased (deducted from inventory), supplied money is added to the vending machine, and any change is returned in the form of monetary items (quarters, dimes, etc.).

        1. If the user did not specify enough money for the selected item, the transaction is aborted with the supplied money not added to the machine (not accepted) and the product not purchased (i.e. the state of the vending machine is unchanged).

      1. Exit – exits the program displaying a departing message.

  1. Additional points to consider:

    1. You can use the Java Standard Edition (SE) API library as supplied by Oracle (AKA Sun) except the collection classes other than String and standard arrays (i.e. not ArrayList, Map, Vector, etc.). These other collections will be covered later in the course.

    1. When developing complex classes, consider creating a main() method to test them out. Once tested successfully, delete the main() method.

    2. You should generate error messages when appropriate, for example on invalid input values or not enough money supplied for the selected item to purchase. Exceptions will be covered later in the course so for this program displaying appropriate messages on the console is fine.

Other Activates:

  1. Observe the presentation on JavaDocs.

  1. Observe the Vending Machine Simulator demonstration for an example of one implementation.

  1. Create a compressed zipped folder containing your Design and Analysis document, your Java source code files, and your javadocs folder.

  1. Submit your compressed zipped folder.

Assignment Rubric:

Part

70%

80%

90%

100%

% of

Grade

Design and

All but one subject

All assigned

All assigned subjects

All assigned

15%

Analysis

addressed with

subjects address

address with

subjects address

Document

relevant,

with mostly

accurate and

with accurate,

information. Few

relevant

relevant. Nicely

relevant, and

minor

information.

formatted document.

insightful

typographical

Nicely formatted

Document is within

information. Very

issues. Document

document.

assigned length

nicely formatted.

is close to assigned

Document is

Document is

length

close to assigned

within assigned

length

length

Functionality

Majority of

Most required

Nearly all required

All required

55%

required function

function parts

function parts work

function parts

parts work as

work as indicted

as indicted in the

work as indicted

indicted in the

in the

assignment text

in the assignment

assignment text.

assignment text

above and submitted

text above and

One major or 3

above and

documentation. One

submitted

minor defects. All

submitted

to two minor

documentation.

major functionality

documentation.

defects.

at least partially

One major or 3

Vending Machine JAVA program 1

Vending Machine JAVA program 2

working (example

minor defects.

change provided

All major

but not correct).

functionality at

Design document

least partially

does not fully

working

reflect

((example

functionality.

change provided

but not correct).

Code

Majority of the

Most of the code

Almost all code

All code

25%

code conforms to

conforms to

conforms to coding

conforms to

coding standards as

coding standards

standards as

coding standards

explained and

as explained and

explained and

as explained and

demonstrated so far

demonstrated so

demonstrated so far

demonstrated so

in the course (ex.

far in the course

in the course (ex.

far in the course

method design,

(ex. method

method design,

(ex. method

naming,

design, naming,

naming, formatting,

design, naming,

formatting, etc.).

formatting, etc.).

etc.). One to two

formatting, etc.).

Five to six minor

Three to four

minor coding

Appropriate level

coding standard

minor coding

standard violations.

of useful

violations. Some

standard

Appropriate level of

comments.

useful comments.

violations.

useful comments.

Complete

Some JavaDocs

Mostly useful

Public class

JavaDocs as

commenting.

comments.

JavaDocs complete.

specified. Code

Code compiles

Public class

Code compiles.

compiles with no

with multiple

JavaDocs

Code compiles with

errors or

warnings or fails to

complete. Code

no errors or

warnings.

compile with

compiles with

warnings.

difficult to

one to two

diagnose error.

warnings.

Submit

More than one file

All but one file

All file submitted in

All file submitted

5%

package

submitted in

submitted in

correct format but

in correct file

incorrect format.

correct format.

not in the specified

formats and

Files not enclosed

Files not

compressed file.

compressed as

in the specified

enclosed in the

specified.

compressed file.

specified

compressed file.