Assessment item 3
GUI Program Development
Value: 30%
Due Date: 11-Jan-2019
Return Date: 04-Feb-2019
Submission method options: EASTS (online)
Task
Your task for this assignment is to write a single Windows Forms application for a small burger restaurant to take and track customer orders.
An overview and detailed requirement list are as follows.
‘Some Burger Joint’ is a small family owned business specialising in unique burgers, fries and drinks. Due to their exploding popularity, the owners wish to hire dedicated wait staff and also implement a digital order taking system. The system needs to allow the wait staff to enter the orders of patrons covering their choice of:
• Burger (with customisations)
• Fries (size, condiment selection)
• Drink (type/brand/size)
The owners also are very experimental with their burger options, regularly altering the menu. They do not wish to have the program modified each time they do this, but rather be able to add/change the menu themselves as needed.
You are required to write a single GUI application that allows:
1. Taking of customer orders and calculating the total cost of an order.
2. Management of available menu items.
You must use the following when building your solution:
• Menu Class
this is a static class
contains the list of burgers and their base cost.
contains a list of burger changes and their costs.
contains a list of fries sizes and their costs.
contains a list of condiments and the costs (both for being applied or removed).
contains a list of drink names.
contains a list of drink sizes and their costs.
Values are used by other classes to calculate the total costs of orders.
Values are used by the UI to provide dropdowns/autocomplete functionality.
• Order Class
Has a unique ID generated by the system.
Has a customer name/ table.
Has a collection of OrderItems.
Has a 'paid' status.
Calculates the total cost of the order. (by totalling the cost of the OrderItems within it).
• OrderItem Class
Represents a single line item in an order,
Has a 'Name' property that can be set naming the item.
Has a quantity property that shows how many of this item has been requested.
Calculates its own total cost (differs based on the type of OrderItem)
Can be a 'Burger', 'Fries' or 'Drink' type of OrderItem
• Burger Class
Sub-classes 'OrderItem'
Has a list of customisations being made for this order.
Cost Calculation = Base Cost for the burger (based on name) +- The cost of optional customisations (Customisations has a name, value and a bool indicating if they are being added or removed) * quantity.
• Fries Class
Has a list of condiments being applied.
Cost Calculation = Cost based on size, + the cost of optional condiments * quantity.
• Drink Class
Has a Size selection
Cost Calculation = Cost based on size * quantity.
The following functionality must be provided by the application:
1. A method of creating a new 'Order' filling in the customer details and recording the order items.
2. When creating order items for an order:
1. Based on the type of order item, the 'name' field should be selectable from a predefined list (suitable for that order item typ, drawn from the Menu).
2. For the Burger type, a UI allowing for easy 'alteration' by adding or removing a set of predefined customisations.
3. For the Fries type, a UI allowing the selection of size and the adding of pre-defined condiments.
4. For the Drinks type, a UI allowing the selection of size.
3. A UI showing the details of the order along with the total cost of the order for the customer.
4. A UI for the owners to manage (add/edit/remove) the list of Burgers and costs, Customisations and costs, Condiments and costs, and Drinks and drink size costs possible in the system.
1. These names will power the selection options on the order item creation UI, and costs will power the cost calculations.
To simplify this implementation the following can be assumed:
1. There is no persistence in this application, when the application starts, starter values for the Burger Names, Customisations, Condiments and Drinks are coded in the Menu
class. A more complete implementation would be to have the Menu class load the values from a config file/database as well as storing the orders created in a file/ database (for sales analysis) however, this is not required for this assignment.
Rationale
This assessment task will assess the following learning outcome/s:
• be able to explain and apply elements of good programming style by identifying, isolating and correcting errors in code.
• be able to interpret algorithms and the program code of solved programming problems.
• be able to investigate and create solutions to programming problems using the C# programming language that contain an analysis, solution design and documented code.
• be able to develop GUI programs for Windows Phone that incorporate sound user interace design principles.
On successful completion of this assessment, you should:
• be able to explain and apply elements of good programming style by identifying, isolating and correcting errors in code;
• be able to interpret algorithms and the program code of solved programming problems;
• be able to investigate and create solutions to programming problems using the C# programming language that contain an analysis, solution design and documented code;
• be able to develop GUI programs for Windows Phone that incorporate sound user interace design principles.