Assigned | Wednesday, February 13thth |
---|---|
Program Due | Thursday, February 28thrd by 2:00am |
Weight | 6% |
Updates |
To gain experience:
This project is considered an OPEN project. Please review the open project policy before beginning your project.
Code from this project will be reviewed in class as noted on the schedule as “Project 1 Analysis.” If you would like your code to be reviewed in class, please contact your instructor. Your name will be held in strict confidence. This practice has worked extremely well in the past. It is a wonderful way to compare and contrast the different designs that people have used.
We all encounter cash registers when we do our shopping. Some of us have even operated a cash register as part of our job.
Your first project will be to implement a simple cash register class. You
will also write a user interface (UI) class that contains
main()
. The UI class will be used to perform user input/output
and to invoke the appropriate methods of the cash register class. The
program will be driven by a simple text-based menu with 1-character menu
options.
Congratulations! Uncle Joe has just made you the manager of his convenience store. Joe’s Convenience Store is a small shop in downtown Arbutus. The store has two cash registers. Your program will simulate some basic cash register functionality. Assume, for simplicity, that a cash register can only contain bills (ones, fives, tens, and twenties). A cash register can also either be locked (it cannot be used) or unlocked (it can be used). The registers are referred to by number (i.e. 1 or 2).
When your program starts, it will automatically “open” the convenience store by unlocking both registers, asking the user to input the number of each of the four bill demoninations to put into each register (each register gets the same number of each bill), and putting the bills into each register. The program must ask for the number of bills in the following order: ones, fives, tens, then twenties.
Next, the following menu must be displayed.
A - Add money R - Remove money T - Transfer money L - Lock register U - Unlock register S - Display register state C - Close the store and quit
Further explanation of these options is as follows.
Note that, where relevant, the cash register on which to perform an action (1 or 2) must be specified before any other inputs needed. In general, be sure to perform the tasks listed for each command in the exact order specified above and prompt for the input needed in the exact order specified above.
proj1
.
Project1
. The cash register class must be called
CashRegister
.
CashRegister
class should
not perform any user input or output. All user
input/output should be performed by Project1
's
main()
or one of main’s helper methods.
CashRegister
methods instead. Remember, we want to provide
the “minimal public interface”.
Project1
and
CashRegister
classes must have appropriate method
header comments, including pre- and post-conditions, as shown in
the course coding standards and discussed in class. Make sure that
your methods catch any violated preconditions. Handle these
violations by throwing a RuntimeException
with an
informative error message. (This will be discussed in class.)
Project1
and CashRegister
classes should have file header comments, but you may omit the
Class Invariant portion (for now).
Scanner
class for user input as discussed in
lab. Be sure to create only one
Scanner
object, which should be an instance variable
in the Project1
class. If you do not follow this
procedure, it is possible that the automated grading script will
not work with your program (and that’s not good!).
main
is by definition a static method, any constants,
instance variables, and helper methods that are also defined within the
Project1
class and used by main should be defined as
private static
. However, if your instructor has taught you
how to avoid having to make all of these things static
, feel
free to follow what he/she has taught.
CashRegister
class.
See the course website for a description of how your project will be graded.
Before submitting your project, be sure to compile and test your code on the GL system. See the Project Compilation section of the course Projects page for details on how to compile and execute your project on GL.
Assuming you’ve used the specified file names, submit your project by typing the command
submit cmsc202 proj1 Project1.java CashRegister.java
See the Project Submission page for detailed instructions.
You may resubmit your files as often as you like, but only the last submittal will be graded and will be used to determine if your project is late. For more information, see the Projects page on the course web site.
Remember — if you make any change to your program, no matter how insignificant it may seem, you should recompile and retest your program before submitting it. Even the smallest typo can cause errors and a reduction in your grade.