Skip to content

A point of sale (POS) system designed with VB.NET

Notifications You must be signed in to change notification settings

ZaidQtaish/CompuTech

Repository files navigation

CompuTech

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.


Table of Contents


Requirements

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 .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.

Tables

Users

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

Customers

Column Type Description
CustomerId AutoNumber (PK) Unique customer identifier
CustomerFName Text First name
CustomerLName Text Last name
CustomerEmail Text Email address

Items

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

Orders

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

Order_Items

Column Type Description
OrderId Number (FK) Associated order
ItemId Number (FK) Ordered item
Quantity Number Quantity of the item

Relationships

Users ──(1:M)──> Orders
Customers ──(1:M)──> Orders
Orders ──(1:M)──> Order_Items
Items ──(1:M)──> Order_Items

Technologies

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

About

A point of sale (POS) system designed with VB.NET

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published