This Beta version of the Mini Food Ordering App allows an Admin to manage menus, discounts, and delivery partners, while Customers can browse menus, place orders, and receive printed invoices β all through a console interface.
β Key Features
#π©βπΌAdmin Functionalities #
β Add/Delete Menus and Menu Items (with IDs)
π·οΈ Set Discount Percentage
π View Menu List
π Manage Delivery Partners
π View Customer Invoices
#π©βπ³ Customer Functionalities #
π View Menus
ββ Add/Delete Items to Cart (via Menu ID & Item ID)
π View Cart
π° View Total Price (with applied discounts)
π§Ύ Make Payment (UPI / Cash)
π§ Assigned Delivery Partner
π§Ύ Generate Invoice
- β Menu Display: Dynamic list of food items by menu
- β Order Placement: Customer selects items and quantities
- β Discount System: Flat discount applied if total > βΉ500 π€
- β Payment Options: Choose between Cash π΅ or UPI π±
- β Delivery Assignment: Random assignment to available delivery agents
- β Invoice Generation: Print full bill with items, quantities, price, discount, total, payment method, and delivery partner and also store it using serialization concept
π SOLID Design Principles Used
π§± Principle β Implementation
S - Single Responsibility Each class does one job only β e.g., MenuManager manages menus, OrderManager handles cart logic, InvoiceGenerator generates invoices.
O - Open/Closed System is open for extension, closed for modification β e.g., new payments/discounts can be added without changing existing classes using interfaces.
L - Liskov Substitution Subtypes like CashPayment, UpiPayment are interchangeable via IPaymentService abstraction.
I - Interface Segregation Interfaces are granular and focused β e.g., IMenuViewer, IMenuManager, IDeliveryService.
D - Dependency Inversion High-level modules (Customer, etc.) depend on interfaces, not concrete classes β promoting flexibility and testability.
π οΈ Technologies Used
β Java 17 π§ Object-Oriented Programming π₯οΈ Console-based User Interaction π§± SOLID Design Principles
π How to Run git clone https://github.com/yourusername/food-ordering-console-app.git cd food-ordering-console-app
β‘οΈ Open the project in your favorite IDE (e.g., IntelliJ IDEA, Eclipse). β‘οΈ Run FoodOrderingDriver.java from the com.aurionpro.tests package to start the application.