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.
- Requirements
- Getting Started
- Project Structure
- Application Flow
- Features
- Database Schema
- Technologies
| Requirement | Version |
|---|---|
| .NET SDK | 8.0 or later |
| Windows | 7 or later |
| IDE | Visual Studio 2022 or VS Code with VB extension |
| Database Driver | Microsoft ACE OLEDB 12.0 |
Note: The Microsoft Access Database Engine (ACE OLEDB 12.0 provider) must be installed on the machine to connect to the
.accdbdatabase file.
git clone https://github.com/ZaidQtaish/CompuTech.git
cd CompuTechdotnet builddotnet runThe 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.
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
┌─────────────────┐
│ 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 │ │
│ └──────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
- Login (
Form1.vb) — Authenticates users against theUsersdatabase 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
UserIdandUsernameare stored inPublicParamand used throughout the app (e.g., stamped on orders).
| 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 |
| 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 |
| 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 |
| 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 |
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.
| Column | Type | Description |
|---|---|---|
UserId |
AutoNumber (PK) | Unique user identifier |
UserFName |
Text | First name |
UserLName |
Text | Last name |
Username |
Text | Login username |
Password |
Text | Login password |
Active |
Yes/No | Whether the account is active |
| Column | Type | Description |
|---|---|---|
CustomerId |
AutoNumber (PK) | Unique customer identifier |
CustomerFName |
Text | First name |
CustomerLName |
Text | Last name |
CustomerEmail |
Text | Email address |
| Column | Type | Description |
|---|---|---|
ItemId |
AutoNumber (PK) | Unique item identifier |
Name |
Text | Item name |
Type |
Text | Item type/category |
Price |
Currency | Item price |
ImagePath |
Text | File path to item image |
| Column | Type | Description |
|---|---|---|
OrderId |
AutoNumber (PK) | Unique order identifier |
UserId |
Number (FK) | Employee who created the order |
CustomerId |
Number (FK) | Customer the order belongs to |
| Column | Type | Description |
|---|---|---|
OrderId |
Number (FK) | Associated order |
ItemId |
Number (FK) | Ordered item |
Quantity |
Number | Quantity of the item |
Users ──(1:M)──> Orders
Customers ──(1:M)──> Orders
Orders ──(1:M)──> Order_Items
Items ──(1:M)──> Order_Items
| Technology | Purpose |
|---|---|
| VB.NET | Primary programming language |
| Windows Forms | Desktop UI framework (MDI architecture) |
| .NET 8.0 | Runtime and SDK |
| Microsoft Access | Database engine (.accdb) |
| OleDb (System.Data.OleDb) | ADO.NET data provider for database access |
| User Settings | Persisting "Remember Me" login credentials |