A modular, object-oriented Java console application that simulates a basic e-commerce workflow.
It supports cart management, product expiration, shipping logic, and customer checkout with complete validation and exception handling.
- ✅ Define general products with
name,price, andavailableQuantity - 📆 Support for expirable products (e.g., Cheese, Biscuits)
- 🚚 Support for shippable products (e.g., TV, Cheese) with
weightinfo - 🛒 Customers can add products to a cart with quantity checks
⚠️ Throws exceptions for:- Out-of-stock items
- Expired items
- Empty cart
- Insufficient customer balance
- 💳 Checkout process:
- Calculates subtotal, shipping, and total amount
- Deducts from customer's balance
- Displays receipt and shipping notice
- Java 17+
- OOP design principles
- Custom exceptions
- No external libraries (pure Java)
- All products are available, None are expired, The customer has enough balance, Cart is not empty, Including shippable and non-shippable products.

- All products are available, None are expired, The customer has enough balance, Cart is not empty, non-shippable products are there.

- Insufficient Customer balance (balance is 50, products total is 67.60).

- Insufficent product quantity (6 Mobile scratch card are required to be added but 5 only available).

- Empty cart.

- Expired products(biscuits)
