# smagic205/appthuvien123 architecture

> Architecture diagram of the GitHub repository smagic205/appthuvien123, 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/smagic205/appthuvien123
- Repository: https://github.com/smagic205/appthuvien123

## Overview

This is a Vietnamese-language desktop library-management application built with Java Swing and backed by a local MySQL database. The user workflow starts with login or account creation, then uses a dashboard to manage books, authors, library users, borrowing/returns, and circulation reports. The graph reflects documented UI-to-DAO relationships and the sampled database connection; several form implementations are only partially shown, so no finer-grained behavior is inferred.

Main entry points: [`src/My_classes/DB.java`](https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/DB.java) (DB connector), [`src/My_Forms/MainForm.java`](https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/MainForm.java) (Dashboard), [`src/My_Forms/LoginForm.java`](https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/LoginForm.java) (Login), [`src/My_Forms/SignUpForm.java`](https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/SignUpForm.java) (Sign up)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and navigation"]
  node_login["Login<br/>[LoginForm.java]"]
  node_signup["Sign up<br/>[SignUpForm.java]"]
  node_main["Dashboard<br/>[MainForm.java]"]
  node_users["User management"]
  node_loginhelper["Login helper<br/>[Login.java]"]
end

subgraph group_catalog["Library catalog"]
  node_books["Book management<br/>[Quanlysach.java]"]
  node_addbook["Add books<br/>[themsach.java]"]
  node_editbook["Edit books<br/>[SuaSach.java]"]
  node_authors["Author management<br/>[Quanlytacgia.java]"]
  node_authormodel["Author model<br/>[TacGia.java]"]
end

subgraph group_circulation["Circulation and reports"]
  node_loanui["Borrow and return<br/>[Quanlymuontra.java]"]
  node_reports["Circulation reports"]
end

subgraph group_persistence["Data access"]
  node_userdao["User DAO<br/>[NguoiDungDAO.java]"]
  node_authordao["Author DAO<br/>[TacGiaDAO.java]"]
  node_loandao["Circulation DAO<br/>[MuonTraDAO.java]"]
  node_reportdao["Report DAO"]
  node_db["DB connector<br/>[DB.java]"]
end

node_operator(("Library staff"))
node_mysql[("MySQL library database")]

node_operator -->|"signs in"| node_login
node_operator -->|"creates account"| node_signup
node_login -->|"checks credentials"| node_db
node_login -->|"uses helper"| node_loginhelper
node_login -->|"opens dashboard"| node_main
node_login -->|"opens sign up"| node_signup
node_signup -->|"stores account"| node_db
node_signup -->|"returns to login"| node_login
node_main -->|"opens login"| node_login
node_main -->|"opens circulation"| node_loanui
node_main -->|"opens authors"| node_authors
node_main -->|"opens books"| node_books
node_main -->|"opens users"| node_users
node_main -->|"opens reports"| node_reports
node_users -->|"manages users"| node_userdao
node_books -->|"queries books"| node_db
node_books -->|"opens editor"| node_editbook
node_addbook -->|"stores books"| node_db
node_editbook -->|"refreshes list"| node_books
node_editbook -->|"updates books"| node_db
node_authors -->|"manages authors"| node_authordao
node_authordao -->|"creates records"| node_authormodel
node_loanui -->|"handles circulation"| node_loandao
node_reports -->|"loads report data"| node_reportdao
node_userdao -->|"queries users"| node_db
node_authordao -->|"queries authors"| node_db
node_loandao -->|"records loans"| node_db
node_reportdao -->|"reads circulation"| node_db
node_db -->|"connects to"| node_mysql

click node_login "https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/LoginForm.java"
click node_signup "https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/SignUpForm.java"
click node_main "https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/MainForm.java"
click node_users "https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/Quanlynguoidung.java"
click node_userdao "https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/NguoiDungDAO.java"
click node_books "https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/Quanlysach.java"
click node_addbook "https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/themsach.java"
click node_editbook "https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/SuaSach.java"
click node_authors "https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/Quanlytacgia.java"
click node_authormodel "https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/TacGia.java"
click node_authordao "https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/TacGiaDAO.java"
click node_loanui "https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/Quanlymuontra.java"
click node_loandao "https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/MuonTraDAO.java"
click node_reports "https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/Thongkemuontra.java"
click node_reportdao "https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/ThongKeMuonTraDAO.java"
click node_db "https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/DB.java"
click node_loginhelper "https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/Login.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_login,node_signup,node_main,node_users,node_loginhelper toneBlue
class node_books,node_addbook,node_editbook,node_authors,node_authormodel,node_mysql toneAmber
class node_loanui,node_reports toneMint
class node_userdao,node_authordao,node_loandao,node_reportdao,node_db toneRose
class node_operator toneIndigo
```

## Components

### Access and navigation

- [Login](https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/LoginForm.java): `src/My_Forms/LoginForm.java`
- [Sign up](https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/SignUpForm.java): `src/My_Forms/SignUpForm.java`
- [Dashboard](https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/MainForm.java): `src/My_Forms/MainForm.java`
- [User management](https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/Quanlynguoidung.java): `src/My_Forms/Quanlynguoidung.java`
- [Login helper](https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/Login.java): `src/My_classes/Login.java`

### Library catalog

- [Book management](https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/Quanlysach.java): `src/My_Forms/Quanlysach.java`
- [Add books](https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/themsach.java): `src/My_Forms/themsach.java`
- [Edit books](https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/SuaSach.java): `src/My_Forms/SuaSach.java`
- [Author management](https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/Quanlytacgia.java): `src/My_Forms/Quanlytacgia.java`
- [Author model](https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/TacGia.java): `src/My_classes/TacGia.java`

### Circulation and reports

- [Borrow and return](https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/Quanlymuontra.java): `src/My_Forms/Quanlymuontra.java`
- [Circulation reports](https://github.com/smagic205/appthuvien123/blob/master/src/My_Forms/Thongkemuontra.java): `src/My_Forms/Thongkemuontra.java`

### Data access

- [User DAO](https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/NguoiDungDAO.java): `src/My_classes/NguoiDungDAO.java`
- [Author DAO](https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/TacGiaDAO.java): `src/My_classes/TacGiaDAO.java`
- [Circulation DAO](https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/MuonTraDAO.java): `src/My_classes/MuonTraDAO.java`
- [Report DAO](https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/ThongKeMuonTraDAO.java): `src/My_classes/ThongKeMuonTraDAO.java`
- [DB connector](https://github.com/smagic205/appthuvien123/blob/master/src/My_classes/DB.java): `src/My_classes/DB.java`

### Other components

- **Library staff**
- **MySQL library database**

## Connections

- Library staff → Login: signs in (evidence: `src/My_Forms/LoginForm.java`)
- Library staff → Sign up: creates account (evidence: `src/My_Forms/SignUpForm.java`)
- Login → DB connector: checks credentials (evidence: `src/My_Forms/LoginForm.java`)
- Login → Login helper: uses helper (evidence: `src/My_Forms/LoginForm.java`)
- Login → Dashboard: opens dashboard (evidence: `src/My_Forms/LoginForm.java`)
- Login → Sign up: opens sign up (evidence: `src/My_Forms/LoginForm.java`)
- Sign up → DB connector: stores account (evidence: `src/My_Forms/SignUpForm.java`)
- Sign up → Login: returns to login (evidence: `src/My_Forms/SignUpForm.java`)
- Dashboard → Login: opens login (evidence: `src/My_Forms/MainForm.java`)
- Dashboard → Borrow and return: opens circulation (evidence: `src/My_Forms/MainForm.java`)
- Dashboard → Author management: opens authors (evidence: `src/My_Forms/MainForm.java`)
- Dashboard → Book management: opens books (evidence: `src/My_Forms/MainForm.java`)
- Dashboard → User management: opens users (evidence: `src/My_Forms/MainForm.java`)
- Dashboard → Circulation reports: opens reports (evidence: `src/My_Forms/MainForm.java`)
- User management → User DAO: manages users (evidence: `src/My_Forms/Quanlynguoidung.java`)
- Book management → DB connector: queries books (evidence: `src/My_Forms/Quanlysach.java`)
- Book management → Edit books: opens editor (evidence: `src/My_Forms/Quanlysach.java`)
- Add books → DB connector: stores books (evidence: `src/My_Forms/themsach.java`)
- Edit books → Book management: refreshes list (evidence: `src/My_Forms/SuaSach.java`)
- Edit books → DB connector: updates books (evidence: `src/My_Forms/SuaSach.java`)
- Author management → Author DAO: manages authors (evidence: `src/My_Forms/Quanlytacgia.java`)
- Author DAO → Author model: creates records (evidence: `src/My_classes/TacGiaDAO.java`)
- Borrow and return → Circulation DAO: handles circulation (evidence: `src/My_Forms/Quanlymuontra.java`)
- Circulation reports → Report DAO: loads report data (evidence: `src/My_Forms/Thongkemuontra.java`)
- User DAO → DB connector: queries users (evidence: `src/My_classes/NguoiDungDAO.java`)
- Author DAO → DB connector: queries authors (evidence: `src/My_classes/TacGiaDAO.java`)
- Circulation DAO → DB connector: records loans (evidence: `src/My_classes/MuonTraDAO.java`)
- Report DAO → DB connector: reads circulation (evidence: `src/My_classes/ThongKeMuonTraDAO.java`)
- DB connector → MySQL library database: connects to (evidence: `src/My_classes/DB.java`)
