Food Delivery App Low Level Implementation. This application primarily is a platform for restaurants and diners to connect facilitated by food delivery executives. This employs OOP principles, e.g., interfaces, inheritance, polymorphism, whichever provides the best and most appropriate design.
-
Customers are generally charged 40/- delivery charge per order. There are additionally, two special categories:
- Elite Customers - Free delivery (50/- off on bill value greater than 200/- after restaurant discount)
- Special Customers - 20/- delivery charge per order (25/- off on bill value greater than 200/- after restaurant discount) (Note: Apply restaurant discount first on bill value, then apply customer discount)
-
Restaurants do not generally have overall bill discounts. However there are additionally, two special categories.
- Fast food - Has an option to discount overall bill value
- Authentic restaurants - Has the option to discount overall bill value + 50/- off on all orders (if bill is greater than 100/- after overall bill value discount)
-
Each food item has a unique ID for ease of selection. Each food item can have their own individual discounts which must be taken into account when entering a food item.
-
Restaurants needs to pay 1% of the total bill value (after discounts) to the food tech company (Assume Restaurants have surplus money to pay)
-
Owners must add categories to each food item so that customers can have clarity. The categories consist of : "Starter", "Main Course", "Dessert", "Beverage".
-
Customers start with Rs. 1000/- in their account, which will be called the wallet. (For sake of simplicity, assume this is the maximum which a customer can spend, no more top-up)
-
There is a reward scheme for customers as follows -
- Fast food - 10 points per 150/- spent
- Authentic restaurants - 25 points per 200/- spent
- Rest - 5 points per 100/- spent (All the above rewards are applicable on total order value after all discounts, 1 point = 1 rupee)
-
The reward points must be added:
- Customer - To the rewards account of the customer.
- Restaurant - The same points must also be added to the restaurant (Restaurants don’t use the reward points, it is just for rating purpose)
-
When a customer makes a purchase, the amount must be deducted from the rewards account first and then from the wallet.
-
A customer may add food items from only one restaurant in a single order.
-
Customers must always add items to cart, be shown the order final total before placing the order.
-
At least 5 restaurants and customers each are hardcoded includes different categories mentioned above, to demonstrate everything.
This application has a Parent Menu to navigate all functionalities.
- The first two menu options pertains to restaurant owner login and customer login. (Restaurant owner and customer are both users according to the application, and have some common functionalities) They lists all user profiles from which the user can pick the account to log in.
- Option 3 should display user details of selected restaurant or customer details. (Give
option to choose between the two and the subsequent User)
- Customer: Name (Category, if any), address, account balance
- Restaurant: Name, address, number of orders taken
- Option 4 - Print details of total charges collected from restaurants (as transaction fee) and delivery charges from customers
- Option 5 - Exit the application
- Add food items - To add item details - ID (generated by application), Name, price, quantity, discounts if any, Print their details
- Edit food items - Modify any of the above-mentioned item details - Name, price, quantity, discounts
- Print rewards - To print the number of reward points claimed by customers
- Discount overall bill value - Applicable for Authentic and fast-food restaurants (Input is taken as integer, which is percentage discount, say 1 means 1% discount)
- Exit
- Selecting: Select using restaurant name. Display all the restaurants so that the user can choose one. The customer after selecting gets a list view of the items under that restaurant. Then the customer can choose the item by its code and quantity. The customer can add it to their cart or exit the option. Print success messages or appropriate error messages.
- Checkout option: Items have to be checked out altogether. If you cannot check out the items (insufficient balance), give an option to the user to delete any item and then let the user check out the items by showing the total amount of the order.
- Print reward: Option to see how much reward has been won.
- List recent orders: Display the last 10 orders in the following manner "Bought item: “ ”, quantity: “ ” for Rs “ ” from Restaurant “ ” and Delivery Charge: “
- Exit