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.