Tuck-It.

Developer Problem

Client Problem

User Problem

Usability Impacts

(coding Environment)

Key Algorithms

Login Screen

Home Screen

Tuckshop Menu

User Login Function

Order History Screen

Order Confirmation

For when the user selects the type of; snacks, drinks or desserts that they want, the application will display an alert function, prompting the user to click either a "yes" or "no" action to confirm that they want to purchase their order.

After the user has gone through the "order confirmation," process/function, the user will be able to access an "order history screen," which uses a SQLite3 query to display all records evident in the "order history" database table. This will use the query "select * from orderHistory," which will show when it was purchased, what was purchased, which tuck shop it was purchased at, and the order ID which will make this order unique.

An SQLite3 query is to be used to display all records/menu items that are evident in the menu dataset. This will use a query that's translated using a "pointer" in the swift coding language, in order to translate the query statements as swift functions within the Xcode IDE. All other functions using SQLite3 functions will utilise the optional "OpaquePointer" as a translator between SQLite3 queries and swift code.

Once the user has input their login credentials (username and password), the application will use an SQLite3 query to create a global variable array to store all records from the student database (which also allows all other view controllers/screens to use it as well), and compare all password and username variables to see whether they match. If they don't match, a label will be used to prompt the user to validate and verify the user that they have incorrectly input their login credentials. That said, all other key algorithms using SQLite3 functions will take advantage of the generated global variable array, in order to update and compare menu database variables. (Data from the "student database" comes from student.csv dataset.)

Random Meal Deal

Once the user clicks onto the "random meal deal" button, the application will create an array storing all SQLite3 records in the menu database. This array will be created as a global variable to allow other view controllers to have access to it, minimising the need to recreate the array after every SQLite3 query. This SQLite3 query will use an optional "OpaquePointer" function to translate SQLite3 queries to Xcode functions. Afterwards, the user is redirected to another view controller, which displays a random meal, dessert and drink, by using a function to randomly select each type of item, through creating a seperate "class" array to store all menu name data and randomly selecting array positions that represents each menu item. (Data from the "menu.csv" dataset is directly put into the "menu.db" database, in order to be used by the "tuck-it" app. This goes for all other instances using the menu database.)

App Requirements

App Standards

Government Mobile App Design

Privacy Act 1988 (CTH)

Accessibility Guidelines (QLD Govt 2017)

Clear Layout

Consistent Layout

Australian Accessibility Guidelines

Appropriately Protect the Privacy of Individuals

Inclusive Language and Terms For All Audiences

Language Translation

Assistive Technology

User Disclaimers

Proper Branding

Screens

Brisbane State High Visual Identity Guide

Logo

Logotype

Sub Graphics

Clear Space

Minimum Size (10mm)

Official Colours

RGB: R0 G59 B121 (Blue)

RGB: R199 G0 B99 (Pink)

Amy

Gus

Mr T

Junior Student, who's limited in time during lunch, due to extra-curricular activities.

Solution

Solution

Has peanut allergy.

Vegetarian, who wants salad rolls

Inclusion of pre-ordering system allows Amy to select where and when she wants to collect her food before and half school. This allows Amy to skip the lunch-time queue that she struggles to get past.

Teacher, who becomes bored of the same meal, but has trouble making decision to get other meals.

"Random Meal Deal" algorithm will generate random meal, drink and dessert that Mr T can voluntarily have, so that he can try new menu items and not have to decide himself.

Senior student, who likes to pay for his friends, but doesn't always know the cost of all menu items and how much he has in his wallet balance.

Solution

Implementing a "user profile" screen will allow Gus to view his "wallet balance" from the student database, which will allow him to decide on whether he can "shout" his friends food.

Using data from the menu database relating to dietary information of each menu item, will allow for the implementation of an "allergy" section to confirm to Gus and other users that they should be able to eat a certain type of food they're viewing. This will be displayed on every screen related to each individual menu item, regardless of whether it's a drink, dessert or meal.

All menu item screens will be provided with data from the menu database relating to the cost of each item, to allow users; such as Gus, to acknowledge the cost of what they're purchasing.

Wallet Balance

Once the user navigates to the "profile screen," a "remaining wallet balance," label will be used to display data from the student database that shows how much money is in an individual's wallet. This will be displayed using a table query to specifically display a single user's wallet balance, by searching directly for their name and how much money is associated with their account.

Advanced Ordering

User is able to pre-order meals to pick-up before and after schooling hours. This will allow users to also select which campus tuckshop they would like to order from. This is accomplished by using an alert function to prompt the user, in order to ask the user to click "I Block" or "E Block" campus (which will be used as alert actions) to allow the user to choose from either tuckshop to pre-order from.

Existing Solutions

Uber Eats

Store Location Options

Vegan/Vegetarian Options

Delivery Service

Mobile App

Shopping Cart Feature

Deliveroo

Order from any store/location

Direct Delivery

Order anytime

mobile app

flexischools

advanced ordering

Payment Selection

Extra Ordering Options

Functions in schools

mobile app

Data

Data Storage and Retrieval

managed by Xcode IDE and Swift Coding Language

Admin (Data Access)

upload data to student database

Databases

Menu Database

Category

Description

Price

Halal

Allergy Information

Vegetarian

MenuID

Profile Database

Order History

Order Cost

User (Data Access)

Retrieve Wallet balance

Retrieve Order History

Retrieve Order ID

upload data to menu database

Stored by SQLite3 Database/s

Order ID

Student/Staff User ID

Family Name

Given Name

Email Address

Simple Button Layout

Large Button and Screen Headings to assist with user navigation (Utility, Accessibility)

Spaced Buttons to avoid cluttering and improve app clarity (Utility)

Buttons and Background colours are easily differentiated (Utility, Accessibility)

Border surrounding buttons to easily differentiate different buttons (Utility)

Error Messages provide the user with validation on what to do (Safety, Learnability)

pre-ordering meals allows users to skip lunchtime queue (Accessibility)

Allowing user to pick a specified tuck-shop can save time by going to a tuck-shop that's most convenient (accessibility)

Search Filters will assist users with finding items that they want and improve accessibility of finding food that fits their preferences (accessibility, utility)

Random ordering helps users to find new meals and food combinations (effectiveness)

Constraining app to follow legislations and requirements validate where and how app algorithms, features and UI components are implemented (effectiveness, utility)

Including a user profile allows app to provide a meal history and wallet balance, which will assist with managing spending and notice spending habits (Safety, Accessibility, Utility)

Login

Home

Tuckshop Menu

Order History

Viewcontroller that validates that the user input is the same as the user credentials (username & password) in the student.db database

Where the user can selected and add menu items to the "shopping cart" screen Table View.

A view controller that can be navigated to from the "profile" screen, which allows the user to acknowledge their previous purchases.

Where the item menu table view can be located, in order to minimise how many view controllers the user needs to navigate through (to improve accessibility).

Error Validation

Search Filter

When the user is searching for a desired function, the user will be able to reduce the number of items displayed onto the "tuckshop menu table view," by selecting a search filter, allowing the user to display only items that are categorised as either; halal, vegetarian or gluten-free.