# iloveflo/laptrinh_java architecture

> Architecture diagram of the GitHub repository iloveflo/laptrinh_java, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/iloveflo/laptrinh_java
- Repository: https://github.com/iloveflo/laptrinh_java

## Overview

BDTHD is a Java Swing clothing-store system backed by MySQL. Its main customer journey runs from sign-in and role selection through product browsing, cart management, and order placement; staff and administrators use separate management screens for inventory, invoices, people, and reporting. The graph includes major README capabilities even where source was not sampled. Edges are limited to relationships visible in excerpts or the source index, plus README-documented capabilities; unsampled internals are not inferred.

Main entry points: [`src/GUI/Menu.java`](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Menu.java) (Admin menu), [`src/GUI/KhachhangForm.java`](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/KhachhangForm.java) (Customer portal), [`src/GUI/Start.java`](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Start.java) (Sign-in screen), [`src/BackEnd/AuthService.java`](https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/AuthService.java) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access &amp; Accounts"]
  node_app["Application entry<br/>[Main.java]"]
  node_login["Sign-in screen<br/>[Start.java]"]
  node_auth["Authentication<br/>[AuthService.java]"]
  node_sessions["Session state"]
  node_registration["Registration"]
  node_recovery["Password &amp; OTP"]
end

subgraph group_customer["Customer Shopping"]
  node_customer_ui["Customer portal<br/>[KhachhangForm.java]"]
  node_catalog["Product browsing<br/>[SanphamKH.java]"]
  node_cart_ui["Shopping cart<br/>[Giohang.java]"]
  node_order_ui["Order placement"]
  node_guides["Shopping guides"]
  node_support["Customer support<br/>[Lienhehotro.java]"]
end

subgraph group_operations["Store Operations"]
  node_admin_menu["Admin menu<br/>[Menu.java]"]
  node_staff_portal["Staff portal<br/>[NhanvienForm.java]"]
  node_product_admin["Product management<br/>[Sanpham.java]"]
  node_invoice_ui["Invoice screens<br/>[Hoadonban.java]"]
  node_people_ui["People management<br/>[Khachhang.java]"]
  node_reporting["Sales reports<br/>[Thongke.java]"]
  node_best_sellers["Best sellers"]
  node_low_stock["Low-stock items<br/>[Mathangsaphet.java]"]
end

subgraph group_domain["Business Services"]
  node_product_data["Product data<br/>[Sanphamdata.java]"]
  node_cart_service["Cart service"]
  node_order_processor["Order processing"]
  node_invoice_services["Invoice services"]
  node_people_data["Customer &amp; staff data<br/>[KhachhangData.java]"]
end

subgraph group_platform["Persistence &amp; Integrations"]
  node_database[("MySQL database")]
  node_db_connection["JDBC connection<br/>[ketnoiCSDL.java]"]
  node_email["Email delivery"]
end

node_user(("Store user"))

node_user -->|"starts"| node_app
node_app -->|"opens"| node_login
node_user -->|"signs in"| node_login
node_login -->|"delegates"| node_auth
node_auth -->|"sets session"| node_sessions
node_auth -->|"opens admin"| node_admin_menu
node_auth -->|"opens customer"| node_customer_ui
node_login -->|"offers registration"| node_registration
node_login -->|"offers recovery"| node_recovery
node_user -->|"shops"| node_customer_ui
node_customer_ui -->|"shows"| node_catalog
node_customer_ui -->|"opens"| node_cart_ui
node_customer_ui -->|"invokes"| node_order_processor
node_customer_ui -->|"opens"| node_guides
node_catalog -->|"reads products"| node_product_data
node_catalog -->|"adds items"| node_cart_service
node_cart_ui -->|"manages cart"| node_cart_service
node_cart_service -->|"reads account"| node_sessions
node_admin_menu -->|"opens"| node_product_admin
node_admin_menu -->|"opens"| node_invoice_ui
node_admin_menu -->|"opens"| node_people_ui
node_admin_menu -->|"opens"| node_reporting
node_admin_menu -->|"opens"| node_best_sellers
node_admin_menu -->|"opens"| node_low_stock
node_staff_portal -->|"opens"| node_low_stock
node_product_admin -->|"manages"| node_product_data
node_invoice_ui -->|"uses"| node_invoice_services
node_people_ui -->|"uses"| node_people_data
node_user -->|"requests help"| node_support
node_reporting -->|"reports sales"| node_database
node_invoice_services -->|"reads and writes"| node_database
node_product_data -.->|"reads and writes"| node_database
node_db_connection -->|"connects"| node_database
node_recovery -->|"sends OTP"| node_email

click node_app "https://github.com/iloveflo/laptrinh_java/blob/main/src/Main.java"
click node_login "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Start.java"
click node_auth "https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/AuthService.java"
click node_sessions "https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/SessionManager.java"
click node_registration "https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/RegisterService.java"
click node_recovery "https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/QuenMatKhauService.java"
click node_customer_ui "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/KhachhangForm.java"
click node_catalog "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/SanphamKH.java"
click node_cart_ui "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Giohang.java"
click node_order_ui "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Khachhangdathang.java"
click node_guides "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Huongdanchonsize.java"
click node_admin_menu "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Menu.java"
click node_staff_portal "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/NhanvienForm.java"
click node_product_admin "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Sanpham.java"
click node_invoice_ui "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Hoadonban.java"
click node_people_ui "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Khachhang.java"
click node_reporting "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Thongke.java"
click node_product_data "https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/Sanphamdata.java"
click node_cart_service "https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/GioHangService.java"
click node_order_processor "https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/DatHangProcessor.java"
click node_invoice_services "https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/HoaDonBanService.java"
click node_people_data "https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/KhachhangData.java"
click node_db_connection "https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/ketnoiCSDL.java"
click node_support "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Lienhehotro.java"
click node_best_sellers "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Mathangbanchay.java"
click node_low_stock "https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Mathangsaphet.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_login,node_auth,node_sessions,node_registration,node_recovery,node_user toneBlue
class node_customer_ui,node_catalog,node_cart_ui,node_order_ui,node_guides,node_support toneAmber
class node_admin_menu,node_staff_portal,node_product_admin,node_invoice_ui,node_people_ui,node_reporting,node_best_sellers,node_low_stock toneMint
class node_product_data,node_cart_service,node_order_processor,node_invoice_services,node_people_data toneRose
class node_database,node_db_connection,node_email toneIndigo
```

## Components

### Access & Accounts

- [Application entry](https://github.com/iloveflo/laptrinh_java/blob/main/src/Main.java): `src/Main.java`
- [Sign-in screen](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Start.java): `src/GUI/Start.java`
- [Authentication](https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/AuthService.java): `src/BackEnd/AuthService.java`
- [Session state](https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/SessionManager.java): `src/BackEnd/SessionManager.java`
- [Registration](https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/RegisterService.java): `src/BackEnd/RegisterService.java`
- [Password & OTP](https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/QuenMatKhauService.java): `src/BackEnd/QuenMatKhauService.java`

### Customer Shopping

- [Customer portal](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/KhachhangForm.java): `src/GUI/KhachhangForm.java`
- [Product browsing](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/SanphamKH.java): `src/GUI/SanphamKH.java`
- [Shopping cart](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Giohang.java): `src/GUI/Giohang.java`
- [Order placement](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Khachhangdathang.java): `src/GUI/Khachhangdathang.java`
- [Shopping guides](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Huongdanchonsize.java): `src/GUI/Huongdanchonsize.java`
- [Customer support](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Lienhehotro.java): `src/GUI/Lienhehotro.java`

### Store Operations

- [Admin menu](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Menu.java): `src/GUI/Menu.java`
- [Staff portal](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/NhanvienForm.java): `src/GUI/NhanvienForm.java`
- [Product management](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Sanpham.java): `src/GUI/Sanpham.java`
- [Invoice screens](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Hoadonban.java): `src/GUI/Hoadonban.java`
- [People management](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Khachhang.java): `src/GUI/Khachhang.java`
- [Sales reports](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Thongke.java): `src/GUI/Thongke.java`
- [Best sellers](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Mathangbanchay.java): `src/GUI/Mathangbanchay.java`
- [Low-stock items](https://github.com/iloveflo/laptrinh_java/blob/main/src/GUI/Mathangsaphet.java): `src/GUI/Mathangsaphet.java`

### Business Services

- [Product data](https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/Sanphamdata.java): `src/BackEnd/Sanphamdata.java`
- [Cart service](https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/GioHangService.java): `src/BackEnd/GioHangService.java`
- [Order processing](https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/DatHangProcessor.java): `src/BackEnd/DatHangProcessor.java`
- [Invoice services](https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/HoaDonBanService.java): `src/BackEnd/HoaDonBanService.java`
- [Customer & staff data](https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/KhachhangData.java): `src/BackEnd/KhachhangData.java`

### Persistence & Integrations

- **MySQL database**
- [JDBC connection](https://github.com/iloveflo/laptrinh_java/blob/main/src/BackEnd/ketnoiCSDL.java): `src/BackEnd/ketnoiCSDL.java`
- **Email delivery**

### Other components

- **Store user**

## Connections

- Store user → Application entry: starts (evidence: `src/Main.java`)
- Application entry → Sign-in screen: opens (evidence: `src/Main.java`)
- Store user → Sign-in screen: signs in (evidence: `README.md`)
- Sign-in screen → Authentication: delegates (evidence: `src/GUI/Start.java`)
- Authentication → Session state: sets session (evidence: `src/BackEnd/AuthService.java`)
- Authentication → Admin menu: opens admin (evidence: `src/BackEnd/AuthService.java`)
- Authentication → Customer portal: opens customer (evidence: `src/BackEnd/AuthService.java`)
- Sign-in screen → Registration: offers registration (evidence: `README.md`)
- Sign-in screen → Password & OTP: offers recovery (evidence: `README.md`)
- Store user → Customer portal: shops (evidence: `README.md`)
- Customer portal → Product browsing: shows (evidence: `src/GUI/KhachhangForm.java`)
- Customer portal → Shopping cart: opens (evidence: `src/GUI/KhachhangForm.java`)
- Customer portal → Order processing: invokes (evidence: `src/GUI/KhachhangForm.java`)
- Customer portal → Shopping guides: opens (evidence: `src/GUI/KhachhangForm.java`)
- Product browsing → Product data: reads products (evidence: `src/GUI/SanphamKH.java`)
- Product browsing → Cart service: adds items (evidence: `src/GUI/SanphamKH.java`)
- Shopping cart → Cart service: manages cart (evidence: `src/GUI/Giohang.java`)
- Cart service → Session state: reads account (evidence: `src/BackEnd/GioHangService.java`)
- Admin menu → Product management: opens (evidence: `src/GUI/Menu.java`)
- Admin menu → Invoice screens: opens (evidence: `src/GUI/Menu.java`)
- Admin menu → People management: opens (evidence: `src/GUI/Menu.java`)
- Admin menu → Sales reports: opens (evidence: `src/GUI/Menu.java`)
- Admin menu → Best sellers: opens (evidence: `src/GUI/Menu.java`)
- Admin menu → Low-stock items: opens (evidence: `src/GUI/Menu.java`)
- Staff portal → Low-stock items: opens (evidence: `src/GUI/NhanvienForm.java`)
- Product management → Product data: manages (evidence: `src/GUI/Sanpham.java`)
- Invoice screens → Invoice services: uses (evidence: `src/GUI/Hoadonban.java`)
- People management → Customer & staff data: uses (evidence: `src/GUI/Khachhang.java`)
- Store user → Customer support: requests help (evidence: `README.md`)
- Sales reports → MySQL database: reports sales (evidence: `README.md`)
- Invoice services → MySQL database: reads and writes (evidence: `src/BackEnd/HoaDonBanService.java`)
- Product data → MySQL database: reads and writes
- JDBC connection → MySQL database: connects (evidence: `README.md`)
- Password & OTP → Email delivery: sends OTP (evidence: `README.md`)
