You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A Windows Forms MDI (Multiple Document Interface) desktop application built with VB.NET for managing a computer retail business. The system handles customer records, product inventory, order processing with receipt generation, and employee/user account management — all backed by a Microsoft Access database.
Note: The Microsoft Access Database Engine (ACE OLEDB 12.0 provider) must be installed on the machine to connect to the .accdb database file.
Getting Started
1. Clone the repository
git clone https://github.com/ZaidQtaish/CompuTech.git
cd CompuTech
2. Build the project
dotnet build
3. Run the application
dotnet run
The application will launch with a splash screen, then redirect to the login form. Enter valid credentials stored in the Users table to access the main MDI dashboard.
Project Structure
CompuTech/
├── Config/ # Application configuration
│ ├── App.config # User settings (remember me credentials)
│ └── ApplicationEvents.vb # Application lifecycle event hooks
│
├── Forms/ # All Windows Forms (UI layer)
│ ├── Main/
│ │ ├── Form1.vb # Login form (authentication)
│ │ ├── frmMdiMainScreen.vb # MDI parent — main dashboard with menus
│ │ └── frmSplashScreen.vb # Timed splash screen on startup
│ │
│ ├── Customers/
│ │ ├── frmAddNewCustomer.vb # Add a new customer record
│ │ ├── frmUpdateCustomer.vb # Search & update customer by ID or last name
│ │ ├── frmDeleteCustomer.vb # Search & delete customer by ID or last name
│ │ ├── frmCustomerInfo.vb # Browse customers one-by-one (form view)
│ │ └── frmCustomerDGV.vb # View all customers in a DataGridView table
│ │
│ ├── Items/
│ │ ├── frmAddItem.vb # Add a new inventory item with image upload
│ │ ├── frmUpdateItem.vb # Search & update item by ID or name
│ │ ├── frmDeleteItem.vb # Search & delete item by ID or name
│ │ └── frmItemsInfo.vb # Browse items one-by-one (form view with image)
│ │
│ ├── Orders/
│ │ ├── frmNewOrder.vb # Create a new order (select PC, extras, customer)
│ │ ├── frmOrderInfo.vb # View all orders in a DataGridView
│ │ └── frmOrderRecipt.vb # Order receipt preview & confirmation
│ │
│ └── Users/
│ ├── frmAddNewUser.vb # Add a new user/employee account
│ ├── frmUpdateUser.vb # Search & update user by ID or username
│ └── frmUsersInfo.vb # Browse users one-by-one (form view)
│
├── Models/
│ └── PublicParam.vb # Global state: DB connection string, logged-in user info
│
├── My Project/ # Auto-generated application settings & resources
├── Properties/ # Assembly properties
├── Resources/ # Embedded resource files
├── CompuTech.vbproj # Project file (.NET 8.0, WinForms, OleDb)
└── CompuTech.sln # Solution file
Application Flow
┌─────────────────┐
│ Splash Screen │ (timed — auto-redirects)
└────────┬────────┘
▼
┌─────────────────┐
│ Login Form │ Validates credentials against the Users table
└────────┬────────┘ Supports "Remember Me" via user settings
▼
┌─────────────────────────────────────────────────────────┐
│ MDI Main Screen (Dashboard) │
│ │
│ Menu Bar: │
│ ┌──────────┐ ┌───────────┐ ┌────────┐ ┌──────────┐ │
│ │ Users │ │ Customers │ │ Items │ │ Orders │ │
│ └────┬─────┘ └─────┬─────┘ └───┬────┘ └────┬─────┘ │
│ │ │ │ │ │
│ • Add User • Add Customer • Add Item • New Order │
│ • Update User • Update Cust. • Update Item• View Orders│
│ • View Users • Delete Cust. • Delete Item │
│ • View (Form) • View Items │
│ • View (Table) │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ MDI Child Forms open here │ │
│ └──────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
Features
Authentication
Login (Form1.vb) — Authenticates users against the Users database table using username/password. Only active users can log in.
Remember Me — Optionally persists credentials in application user settings so they are pre-filled on the next launch.
Session Tracking — The logged-in user's UserId and Username are stored in PublicParam and used throughout the app (e.g., stamped on orders).
Customer Management
Action
Form
Description
Add
frmAddNewCustomer
Create a new customer with first name, last name, and email
Update
frmUpdateCustomer
Search by Customer ID or last name, then edit fields
Delete
frmDeleteCustomer
Search by Customer ID or last name, then delete with confirmation
View (Form)
frmCustomerInfo
Navigate through customer records one at a time (First / Prev / Next / Last)
View (Table)
frmCustomerDGV
View all customers in a DataGridView; also supports inline add/delete and selecting a customer for order placement
Item / Inventory Management
Action
Form
Description
Add
frmAddItem
Add a new item with name, type, price, and an uploaded image
Update
frmUpdateItem
Search by Item ID or name, then edit fields and image
Delete
frmDeleteItem
Search by Item ID or name, then delete with confirmation
View
frmItemsInfo
Navigate through item records one at a time with image preview
Order Processing
Action
Form
Description
New Order
frmNewOrder
Select from three pre-configured PC tiers (Player One / Two / Three), choose quantity, add optional extras (mouse $69.99, keyboard $179.99), and assign a customer
Receipt
frmOrderRecipt
Preview the order receipt showing employee, customer, PC details, extras, subtotal, and total (with 10% tax). Confirm to save the order to the database
View Orders
frmOrderInfo
View all orders joined with order items in a DataGridView
User Management
Action
Form
Description
Add
frmAddNewUser
Create a new user with first name, last name, username, password (with confirmation), and active/inactive status
Update
frmUpdateUser
Search by User ID or username, then edit all fields including active status
View
frmUsersInfo
Navigate through user records one at a time with active/inactive status indicator
Database Schema
The application uses a Microsoft Access database (ComputechDB.accdb) located in the build output directory. It connects via the Microsoft.ACE.OLEDB.12.0 provider.