A clean, textbook Object-Oriented Programming (OOP) project built for a 2nd-semester university course. Built using C++ and the Qt 6 Framework with an SQLite database.
SwiftStore is an Inventory Management System divided into three distinct user roles, each with their own dedicated interface and functionality:
- Admin Dashboard: Has full control over the inventory. Can add new products, search via real-time filtering, create restock requests, and register new users.
- Customer Portal: A shopping interface where customers can browse available stock, add items to a dynamic shopping cart, and perform checkout transactions.
- Vendor Fulfillment Portal: A dedicated dashboard for vendors to view pending restock requests sent by the Admin and fulfill them, automatically injecting stock back into the database.
This project implements rigorous software engineering and Object-Oriented Programming methodologies:
- Separation of Concerns: Zero SQL queries exist in the UI code. All database logic (
SELECT,INSERT,UPDATE) is completely encapsulated inside theDatabaseManagerclass. - Encapsulation (Data Hiding): Data models are strictly defined as
classobjects withprivatemember variables, accessed only via securepublicGetter and Setter methods. - Class Methods (Slots): Bypasses advanced C++11 lambdas in favor of strict class member slot methods for handling UI signals (button clicks, text changes).
- Defensive Programming: Implements SQL database transactions (
db.transaction(),db.commit(),db.rollback()) andtry/catchexception handling to prevent database corruption during checkout and fulfillment phases.
- C++ Compiler (MSVC on Windows, GCC/Clang on Linux/Mac)
- CMake (Version 3.16 or higher)
- Qt 6 Framework (with the SQL module installed)
-
Clone the repository:
git clone https://github.com/yokominaka/SwiftStore-IMS.git cd SwiftStore-IMS -
Create a build directory:
mkdir build cd build -
Run CMake:
cmake .. cmake --build . -
Run the executable:
- On Windows:
OOP_Project.exe - On Linux/Mac:
./OOP_Project
- On Windows:
Upon running the application for the first time, a default administrator account is automatically created.
- Username:
admin - Password:
admin123 - Role: Admin
Note: Log in with this account first. From the Admin Dashboard, you can register new Customer and Vendor accounts to test the other portals!