In this lab we built the HHM Fast Food Management System as a multi-page ASP.NET Web Forms application using VB.NET and SQL Server. The system supports two types of users: customers who browse the menu and place orders, and staff (Manager, Chef, Cashier, Inventory Person) who log in through a separate portal and access role-specific dashboards.
| Page | Purpose |
|---|---|
| LoginChoice.aspx | Entry point: lets user choose between Customer or Staff login |
| Login.aspx | Customer login with email and password, sets session variables |
| Registration.aspx | New customer signup, inserts into Customer table |
| StaffLogin.aspx | Employee login, reads RoleID and routes to the correct dashboard |
| Menu.aspx | Shows food category cards linking to category pages |
| Pizza.aspx / Burgers.aspx / Broast.aspx / Shawarma.aspx | Category pages: load items from MenuItem table via Repeater, allow Add to Cart |
| SearchResults.aspx | LIKE query search across MenuItem, supports Add to Cart from results |
| Cart.aspx | Shows current pending order items, allows quantity changes and checkout |
| Payment.aspx | Displays order total, accepts payment method, finalizes order using a transaction |
| Track.aspx | Customer enters Order ID to check status and estimated time |
| ManagerDashboard.aspx | Manager home with links to Employees, Finance, and Add Employee |
| ManagerAddEmployee.aspx | Form to insert a new employee record with role and salary |
| ManagerEmployees.aspx | GridView to update existing employee salary and role |
| ManagerFinance.aspx | Shows total revenue, expenses, and net profit with supporting GridViews |
| ChefDashboard.aspx | Kitchen display: shows paid orders with item lists, Mark as Ready button assigns a waiter |
| CashierDashboard.aspx | Verification queue: approves paid orders and sends them to kitchen; daily revenue summary |
| InventoryDashboard.aspx | Log new shipments: selects supplier and item, updates stock and records expense |
| Table | Purpose |
|---|---|
| Customer | Stores customer name, email, password |
| Employee | Stores staff credentials, role, and salary |
| RolePermissions | Linked to Employee on login to retrieve access flags |
| MenuItem | Stores product name, price, category, availability |
| [Order] | One row per customer order with status and total |
| OrderLine | One row per product in an order with quantity |
| Payment | Stores payment type, amount, and status for each order |
| Supplier / Shipment / ShipmentItem / Item | Used by Inventory dashboard for restocking and expense tracking |
| # | Test Case | Expected Output |
|---|---|---|
| 1 | Customer registers with a new email | Record inserted, success message shown |
| 2 | Customer registers with a duplicate email | Message: "This email is already registered." |
| 3 | Customer logs in with correct credentials | Session set, redirected to Menu.aspx |
| 4 | Customer logs in with wrong password | Message: "Invalid Customer email or password." |
| 5 | Add item to cart when not logged in | Redirected to Login.aspx |
| 6 | Add item to cart when logged in | Order and OrderLine created or updated, success message shown |
| 7 | Add same item to cart again | Quantity incremented, no duplicate OrderLine row |
| 8 | Complete payment with a method selected | Payment inserted, order status set to Verification, redirected |
| 9 | Complete payment without selecting a method | Message: "Please select a payment method." |
| 10 | Staff logs in as Manager (RoleID 1) | Redirected to ManagerDashboard.aspx |
| 11 | Staff logs in as Chef (RoleID 2) | Redirected to ChefDashboard.aspx |
| 12 | Direct URL access to ManagerDashboard without login | Redirected to StaffLogin.aspx |
| 13 | Cashier approves a Verification order | Order status set to Paid, order moves to Chef queue |
| 14 | Chef marks an order as Ready | Order status set to Ready, waiter name displayed |
| 15 | Inventory logs a shipment with valid quantity | Shipment recorded, Item stock updated, success message shown |
| 16 | Inventory logs a shipment with invalid quantity | Message: "Please enter a valid quantity." |
| 17 | Search for a product that exists | Matching items shown in Repeater |
| 18 | Search for a product that does not exist | Panel shows "Sorry, this item was not found!" |