Reference no: EM131186145
This is an individual assignment that requires you to design, develop and test a small procedural Java program.
Learning Outcomes Assessed
The following course learning outcomes are assessed by completing this assessment:
- Identify and use the correct syntax of a common programming language
- Recall and use typical programming constructs to design and implement simple software solutions
- Reproduce and adapt commonly used basic algorithms
- Utilise pseudocode and/or algorithms as a major program design technique
- Write and implement a solution algorithm using basic programming constructs
- Demonstrate debugging and testing skills whilst writing code
- Develop self-reliance and judgement in adapting algorithms to diverse contexts
- Design and write program solutions to identified problems using accepted design constructs
The Federation University Australia Olympic Games are about to commence. The games have been scheduled to begin on Saturday 1st October 2016, competitors are busy training and now it's time to prepare to sell spectator tickets.
Your task is to design, develop and test a small application for recording ticket sales to this event.
Stage 1: Design
This stage requires you to prepare documentation that describes the function of the program and how it is to be tested. There is no coding or code testing involved in this stage. A document template has been provided for your use.
1) Read through Stage 2: Program Development to obtain details of the requirements of this program.
2) Write an algorithm that describes how the program will operate.
a. All program requirements - base, standard and advanced - must be included, even if you do not end up including all these requirements in your program code.
b. The algorithm must be structured logically so that the program would function correctly.
3) Prepare and document test cases that can be used to check that the program works correctly, once it has been coded. You do NOT need to actually run the test cases in this stage; this will occur in Stage 3: Testing.
a. All program requirements - base, standard and advanced, must be included, even if you do not end up including all these requirements in your program code.
b. Make sure the test cases include checking of data entered by the user to make sure that only valid data is accepted. If the user enters invalid data, the user should be informed of this and given another chance to enter the data. NB: As we have not covered exception handling, you may assume that the user will always enter an integer.
c. Test cases should be documented using a template like the one below. You may include extra information if you wish. At this stage, the Actual Result column will be left blank.
Stage 2: Program Development
Using the Design Documentation to assist you, develop a Java program that records spectator ticket sales at the gate for the Federation University Australia Olympic Games, implementing the requirements outlined in this section. These requirements have been broken into three groups:
- Base Functionality includes the minimal level of requirements to achieve the essential components of this assignment. This group of requirements focuses on getting the code to work and on using the programming constructs we cover in class. You can expect to use constants, variables, loops, conditional statements and arithmetic operators for these requirements and you should look for opportunities to use these wherever you can. You will not receive full marks for implementing a requirement, even if it works, if you have not used the appropriate programming construct to do so.
At this level, you can decide if it is easier for you to code everything within a single method, or to modularize it straight away.
- Standard Functionality ensures the code is modularized, and that method calls are used to ensure the program flows correctly. It allows data to pass from one method to another as parameters. It also includes providing a running total of tickets within an order, which is not essential for getting the program to work, but is useful information for the user to see.
- Advanced Functionality provides a challenge task, and is best left until all the other requirements have been addressed. It requires looking at a Java API to find out how to use a class we have not covered in the course, and using this to provide a countdown of days remaining until the games commence.
All three groups require that you follow coding conventions, such as proper layout of code, using naming conventions and writing meaningful comments throughout your program.
1. Display a welcome message when the program starts
- The welcome message should have a row of asterisks at the top and the bottom, just long enough to extend over the text. Hint: Use a For loop for this.
- The first line of the message should read "FEDERATION UNIVERSITY AUSTRALIA OLYMPICS" and be approximately centred in the row of asterisks by printing white space first. Hint: Can you modify the For loop from the previous step to print the white spaces?
- A second line of the message should be blank.
- The third line should read "Developed by" followed by your name and a comma, then " student ID ", then your student id, then finally " for ITECH1000 Sem 2 2016".
- The fourth line should be blank.
2. Provide a menu from which the user can select to Purchase Tickets, View Ticket Sales or Exit. This menu should be repeated each time after the user has chosen and completed an option until the user chooses to Exit. The user selects an option by entering the number next to it. If an invalid number is selected, the user is advised and shown the menu again to make another selection.
3. When the user selects the Purchase Tickets option, provide another menu from which the user can select Adult Tickets, Child Tickets, Finalise Order or Cancel Order. The user selects an option by entering the number next to it. If an invalid number is selected, the user is advised and shown the menu again to make another selection.
a. Should the user select Adult Tickets or Child Tickets, they are prompted to enter the Number of Tickets required. After entering the number of tickets required, they are returned to the Ticket Purchasing Menu so that they may choose to purchase additional tickets. The user may not choose to purchase a negative number of tickets, but a purchase of 0 tickets is permitted.
b. Should the user select Finalise Order:
i. The sale is processed by displaying the number of each type of ticket purchased and the total cost of the tickets in this order. An adult ticket costs $15.50; a child ticket costs $5.75.
ii. A record is kept of the total cost of tickets sold, the total number of adult tickets sold and the total number of child tickets sold. This is a combined total from all orders; there is no need to keep a record of the number of tickets in each individual order.
iii. The user is returned to the menu from Step 2.
c. Should the user select Cancel Order:
i. The order is cancelled and a message displayed to confirm this to the user.
ii. The user is returned to the menu from Step 2.
4. When the user selects the View Ticket Sales option, display the total value of ticket sales and both the total number of adult tickets and the total number of child tickets sold across ALL orders. Highlight this message display with a row of 50 asterisks before and after the message. After the final row of asterisks, redisplay the menu from Step 2.
5. When the user selects Exit System, quit the program with a message to the user.
6. Update the Ticket Purchasing Menu so that a running total of tickets included in an order is displayed until the order is finalized
7. Modularize the code, correctly using method calls and passing data between methods as parameters.
8. Update the Welcome Message to include a countdown of the number of days to go until the games begin.
a. Use the GregorianCalendar class to manage your dates. You will need to import java.util.GregorianCalendar to use this library.
b. The countdown must be calculated based on the number of days between the time the program runs, and Saturday 1st October 2016.
c. There is no pre-defined method for finding the difference between two dates in this library. You will need to develop your own, using the features of the GregorianCalendar class.
Stage 3: Testing
Using a copy of the test cases developed in Stage 1: Design, test the program you have developed in
Stage 2: Program Development. Document your results, including both failed and successful tests.
Note: Please do not leave out any failed tests. If your testing highlights that your program has not worked correctly, then the failed tests help to demonstrate that you have been testing your program properly.
To show that you have tested your program, include small (but readable) screen captures in your Actual Results as well as any explanatory comments. Microsoft Windows includes a Snipping Tool that is useful for taking captures of the relevant parts of the screen.
You may test your program in phases if you wish. Stage 2: Program Development provides three separate groups of functionality in the requirements, working from the minimal level of requirements through to more advanced concepts. Each of these groups can be tested individually.
This phase requires you to check that the base functions (displaying welcome message when the program starts, showing a menu of options until the user chooses to exit, purchasing tickets, viewing ticket sales and exiting the system) have been implemented.
In addition to the Base Functionality, this section includes displaying a running total of tickets that have been added to an order until such time as the order has been finalized. This new functionality must also be tested.
If you originally wrote and tested the Base Functionality by including all the code in a single method, this phase also requires that you modularize your code, and use method calls and pass data between methods to ensure your program still runs correctly. This means all your code will need to be re- tested to ensure that all the previous functionality still works.
This phase requires testing the code that calculates and displays the number of days until the games comments in the welcoming message shown when the program starts.