Cash Receipt
Back to the Case Studies homepage
ProblemYou are a self-employed junior programmer. You've just started your own business and today, you've gotten your first job from a manager at a small arts and crafts store. The manager wants you to write a complete Java program that can be used by any cashier within her company to generate customer receipts for her convenience store which currently sells only three items.
Then, since the program is going to be used by multiple cashiers, use JOptionPane to prompt the user to enter:
Now the program waits for the cashier to enter in a payment given amount. So now:
Some details:Constants: Store the cost of each item as a constant. Also, store the tax rate (7%) as a constant. Input: Prompt the user to enter his/her name. Then use JOptionPane to input the quantity of each item. Finally use JOptionPane to input the amount of change given. Calculate and Output:
Use Math.round() to round all output to two decimal spots. If your input values were 2 brush sets ($8 each), 3 paint sets ($40 each), and 4 cans of primer ($18.75 each), and your cashier's name is Joni, your output should look like:
Welcome to ArtSupply. Cashier: Joni 2 brush sets at $ 8.0 3 paint sets at $ 40.0 4 primer at $ 18.75 Product Total: $211.0 Tax: $ 14.77 Total = $ 225.77 Money received: $ 250.0 Change due: $ 24.23 Change rounded up to nearest nickel: $ 24.25 Change given by: Joni
|
Cash | |
---|---|---|
SolutionBefore starting to write code, we will think about the problem in greater detail. Then we will declare and initialize the needed variables. Finally, we will program the problem in two parts: handling input, and obtaining output. Break the Problem DownThis problem is lengthier than others. Luckily in Computer Science, breaking the problem into pieces is often the best strategy. Ultimately the goal is to have the whole program done, and breaking the problem into parts allows it to be manageable. Start by reading the problem and planning which parts to do first. Keep the Code OrganizedThe COMP 1010 Coding Standards give the guidelines required to keep our code organized. Make sure the code is properly indented, all variables are properly named (as in: double change, as opposed to: double a) and initialized. Integer variables can be initialized to zero, if no other value is more appropriate. Strings can be initialized to be empty, that is two double quotes: "". Also, include comments in your code. Get it DoneSome programs will take longer than one sitting to complete. Realize and accept that some programs can be done quickly, and others take more time. An inevitable part of programming is dealing with bugs. Start on programs early enough and do not procrastinate. Leaving a program to the last minute — especially further on in the Computer Science degree — will cost you. Part One: Declare Variables and ConstantsBased on the problem description, we know we will need to use constants, variables, and JOptionPane. JOptionPane requires that we store text in strings, so we must use strings. We're also dealing with integers and decimal value numbers. We will store the decimal value numbers as (doubles). You will need to have two string variables. You also need three integer variables, six double variables and four double constants. The string variables are for:
The integer variables are to store the quantity of items bought. You will need one integer variable for each of the following :
The double variables are for storing:
The double constants are for storing:
To declare a named constant add the keyword final before the type. For example, the following line declares a constant double called cost: final double cost; Part Two: Handling InputNow that we have completed the first task of setting up variables, we need to program a sequence of prompts, calculations and some printing to the terminal. The following pseudocode gives you a good overview of what needs to be done. Pseudocode is a great tool to start writing a program without technical details slowing us down. //Pseudocode: Print out "Welcome to ArtSupply" Prompt for cashier's name. Prompt for number of brush sets. Prompt for number of primers. Calculate product total. Print product total. Calculate tax. Print tax. Calculate total. Print total. Prompt for money received. Print the money received. Calculate change due. Print the change due. Calculate change rounded up to the nearest nickel. Print change rounded up to the nearest nickel. Print cashier's name.
someStringVariable = JOptionPane.showInputDialog("What is your input?"); Once we have the input text stored, we want to print out the string value and move the cursor to a new line. We can do this by using the System.out.println("<text>") function. Continue on by prompting the user to enter in 3 numbers using JOptionPane. Each time the user enters a number we want to convert the entered value to an integer and print the number. The following code illustrates how to convert the entered value to an integer: someIntegerVariable = Integer.parseInt(StringVariable); This method parseInt works well so long as the user enters a number and not something else. This means that the user could crash the program by not entering a number when they are supposed to. The correct way to fix this potential problem is to do error checking. However, for the sake of simplicity, we will assume that the user always enters a number. After the inputs are entered and properly stored, we need to do some math. Proceed by calculating the subtotal, tax and the total amount using simple math equations. After the values are calculated, print the subtotal, the tax, and the total amount. Make sure the output is in the same order as the output shown in the problem description. You are now about half way done this program! Part Three: OutputNow the cashier is waiting for the customer to pay. Assuming the customer is not a thief, they would hand the cashier an amount greater than or equal to the total amount owing. This means we do not need to error-check to make sure the customer gives the cashier a proper amount (meaning that the customer did not shortchange the cashier). Use JOptionPane to prompt for an amount given, and then convert the string returned to a double (again assume they enter a proper number, so that no error checking is needed). The following code shows how to convert a string to a double: DoubleVariable = Double.parseDouble(StringVariable);
Your code is now complete! Post-programming InstructionsNow you may want to close your program, submit it and be happy that you're done! Unfortunately, reality doesn't work that way. You are only about half done with your program. Now you need to make sure your program works, and is up to standards. Below are a few steps you need to take when you feel you have finished your program. Look it overAfter your program is working, check for efficiency. This will come into play later on in the Computer Science degree, but you should practice doing it now. The next two sections are some methods to help you become more efficient. Fix the Errors in the CodeIf you have any bugs in your program, check them over and fix them! Optimize the Code by Removing Unnecessary VariablesAt the top of the main method, you should have a number of variables. If you have any more than what the above solution suggests, see if you can get rid of any extras you don't need. Try to Break your ProgramIn this question, breaking your code would be easy to do unless you implement the error-checking procedures. You could easily break your code by entering in a letter instead of a number and trying to convert that string into an integer or double. However, if you do implement the error checking procedures in this program, and for your future programs, the best way to make sure you have complete and fantastic code is if you cannot make your program explode no matter what you do. The number one reason individuals are penalized for their code is because a random situation arises, even though it's highly unlikely to happen (but they do), and the programmer has not added the necessary code to handle the exception. The Feeling of HopelessnessThere will be times that arise when you've gone too far down one path and your code is too far gone to fix properly. Understand that at times completely restarting the whole program over is a quicker and saner option than attempting to fix it properly. In other cases, backing up part way is more efficient. Make sure you save working versions of your program along the way. Lastly within this section, back up your code! If your computer dies and you lose your file, that's your responsibility! Parting StatementsRemember that this is not the only "correct" way to do this program. There can be many different ways to accomplish this program and it can be further developed to handle error-checking from any aspect. Remember to code efficiently, accurately, and properly. This means: no more excess code than needed, know what you're trying to code and break it down as needed to accomplish parts of it at a time rather than the whole thing in one sitting, and comment and indent your code appropriately. Always remember to test your program as much as you possibly can, and practice, practice, practice! The more you code, the better you will become at it. | ||
Code |