Assignment Description:
For this assignment, you are required to design and develop a console (text-based) application for a small catering business. This application will simulate booking appointments, tracking catering jobs and processing payments.
The program must cater for each of the following requirements:
1) Add a new catering appointment.
2) List all jobs still actively being worked on
3) List all completed jobs still requiring payment
4) List all jobs scheduled for work on a particular day
5) Accept a payment towards a completed appointment
6) Report detailed status for a particular booked appointment
7) Exit the Program
The work you submit must be your own individual work. Your work may be submitted by staff to an online code-plagiarism checking software service to compare your work to other students’ work.
CRICOS Provider No. 00103D ITECH1400 Foundations of Programming Assignment 2 Semester 1 2015 Page 2 of 5
Task Description:
1) Design.
Prior to commencing coding, you need to plan what you’re going to code. Write an algorithm that describes how your program is going to work and how it links together.
2) Implementation
Develop a program for the catering business staff. This needs to:
a. Use a menu to provide the user with options to access different parts of the program.
b. Include all the functionality listed under the application description and further described under functional requirements. Make sure this includes the following elements:
i. at least one arraylist
ii. at least one example of inheritance
iii. at least one example of polymorphism
iv. at least one example of overloading
c. Keep running until the user selects a menu option to exit the program. You do not need to save any data when you exit.
You should aim to write code following high quality coding practices, including comments, trapped exceptions and exhibiting good design where code is separated into separate methods.
Warning: In this task, you are not allowed to use any automated code-writing tools. You must manually write / type the whole program by yourself. Failing to do so will result in no marks for the entire assignment.
Functional Requirements
1) Add a new catering appointment.
Allow the user to enter information which constitutes a booking for a client seeking catering services. You do not need to treat companies any differently to individual persons. The following information is required for each booking:
The name, address and contact phone number of the client
The type of food, number of people to be served and any special requirements
The appointment date and time
You must also allow the user to indicate the type of booking that is being requested. This may be for supply of food only or for full service, covering both the provision of food and wait-staff to serve the guests. In the case of a full service, you must also collect a deposit of 30% on the day the booking is made. In the case of food-supply only, you must collect a deposit of 20% on the day the booking is made.
CRICOS Provider No. 00103D ITECH1400 Foundations of Programming Assignment 2 Semester 1 2015 Page 3 of 5
2) List all jobs still actively being worked on
This option must display a list of all the catering jobs that are in progress or have been completed on the current day by the catering business. Do not list jobs which are yet to start, or jobs which have been completed on a previous day. For each job that is active, simply report the name of the client, the appointment time, the type of service and its current status.
3) List all completed jobs still requiring payment
The user must be able to select an option to list all the jobs that have been completed but have not yet been paid in full. For each such job, list the name of the client, the type of service they booked and the amount owing. If a client has payment owing for more than one job, you may choose to either consolidate these into one entry or to display them on individual lines at your own discretion.
4) List all jobs scheduled for work on a particular day
The program must allow the user to see a list of all the services that are scheduled on a selected day. The user must be able to specify the day for which the list is to be provided.
5) Accept a payment towards a service job
Payments must be recordable against services. The user must indicate the particular job to which the payment is to be allocated (any method of doing this is acceptable). Then, if the selected job is one for which there is an amount owing, report that amount to the user, and obtain from the user the amount actually being paid right now.
If the amount entered is too much, report an error message. If the amount entered is less than the total that was owing, report the new amount owing afterwards. Otherwise, report that no further payments are required from the client.
Remember to keep track of all payments made on each day.
6) Report detailed status for a particular appointment
The program must be able to report the full details about any particular appointment, by allowing the user to specify the appointment for which they wish to see the details. This means you must report:
The name, address and contact number of the client
The type of catering service they booked
The date of the appointment
The type of food, number of people to be served and any special requirements
The current job status (scheduled, in progress, complete, cancelled)
The total cost, if known
The amount paid and amount owing.
CRICOS Provider No. 00103D ITECH1400 Foundations of Programming Assignment 2 Semester 1 2015 Page 4 of 5
7) Exit the Program
The program must keep running until the user selects the option to exit. You do not need to save any of the data (i.e. there is no need to use files).
3) Testing.
In your supplementary documentation, explain how you have tested your code and the results of your testing. This means writing down the inputs and actions which the marker should follow to reproduce the scenarios you used to check the program is working. Include screenshots demonstrating the results when you tested your code.