Đồ án Môn học Phát Triển Ứng Dụng
Ứng dụng Desktop quản lý bán lẻ thuốc tây, thực phẩm chức năng theo tiêu chuẩn GPP, tối ưu hóa quy trình xuất kho FEFO và tích hợp bán hàng bằng máy quét mã vạch.
Pharmacy Management System (PMS) được thiết kế để giải quyết các "nỗi đau" của các nhà thuốc truyền thống: thất thoát hàng hóa, khó kiểm soát hạn sử dụng và sai sót trong tính toán doanh thu.
Hệ thống được xây dựng trên nền tảng Java Swing hiện đại (FlatLaf), kết nối cơ sở dữ liệu SQL Server, đảm bảo hoạt động ổn định, bảo mật và không phụ thuộc vào internet (Offline-first).
Nếu bạn không muốn cài đặt môi trường lập trình (IDE), bạn có thể tải bản đóng gói sẵn để chạy ngay:
- Truy cập mục Releases bên phải giao diện GitHub.
- Tải file
PharmacyManagementApp.jar(và filerun.bat). - Đảm bảo máy tính đã cài Java JDK 21.
- Cấu hình Database (chạy script SQL trong SSMS) và file
db.properties(xem hướng dẫn bên dưới). - Click đúp vào file
.jar(hoặcrun.bat) để khởi động phần mềm. - (Lưu ý) Tất cả các file tải về phải nằm cùng một thư mục.
- (Tùy chọn) Có thể di chuyển
PharmacyManagementApp.jarra ngoài màn hình Desktop và set icon làlogo.icođể trông như một chương trình thực sự (vd: Eclipse, Chrome,...)
- 📦 Quản lý Kho chuẩn GPP: Tự động xuất kho theo nguyên tắc FEFO (Hết hạn trước xuất trước).
⚠️ Cảnh báo thông minh: Hiển thị màu sắc cảnh báo đối với thuốc cận date (< 3, 30 ngày, 3 tháng) hoặc hết hạn.- 🛒 Bán hàng (POS): Tối ưu thao tác bán hàng < 3s bằng phím tắt và máy quét mã vạch.
- 🔄 Xử lý Đổi trả: Quy trình trả hàng chặt chẽ, tự động cập nhật lại tồn kho và doanh thu.
- 📊 Báo cáo trực quan: Thống kê doanh thu, lợi nhuận thực tế theo thời gian thực.
- 🔒 Bảo mật: Mã hóa mật khẩu, xác thực OTP qua Email khi quên mật khẩu.
| Thành phần | Công nghệ / Thư viện | Vai trò |
|---|---|---|
| Core Language | Java JDK 21 | Main Programming Language |
| GUI Framework | Java Swing | Desktop User Interface |
| UI Theme | FlatLaf | Modern Look & Feel |
| Layout Manager | MigLayout | Responsive Layout Management |
| Database | Microsoft SQL Server | Data Storage |
| Data Access | JDBC (mssql-jdbc) | Native SQL Queries |
| Connection Pool | HikariCP | High Performance DB Pool |
| Security | BCrypt (at.favre.lib) | Password Hashing |
| Java Mail | Send OTP & file report | |
| Barcode | Google ZXing | Barcode Generate & Scan |
| Reporting | Apache POI, JFreeChart | Excel Export & Charts |
| Logging | SLF4J + Logback | Application Logging |
| Configuration | Owner | External Config Management |
| Boilerplate Reduction | Lombok | Auto Getter/Setter |
| Build Tool | Maven | Dependency & Packaging Management |
Dự án áp dụng mô hình kiến trúc đa tầng (3-Layer Architecture) giúp code trong sáng, dễ bảo trì và mở rộng:
graph TD;
GUI["Presentation Layer (View)"] --> BUS["Business Logic Layer (Service)"];
BUS --> DAO["Data Access Layer (Repository)"];
DAO --> DB[(SQL Server Database)];
DTO["Data Transfer Object (Model)"] --- GUI;
DTO --- BUS;
DTO --- DAO;
-
GUI (View): Các Form, Dialog giao tiếp người dùng (sử dụng Swing & MigLayout).
-
BUS (Business): Xử lý nghiệp vụ (Tính toán tiền, logic FEFO, Validation,...).
-
DAO (Data): Thực thi câu lệnh SQL, kết nối Database qua JDBC.
Dự án được tổ chức theo kiến trúc đa tầng (N-Tier Architecture), phân chia rõ ràng giữa các lớp xử lý dữ liệu, nghiệp vụ và giao diện:
Pharmacy-Management-System/
├── 📂 database/ # Script SQL tạo CSDL (script.sql)
├── 📂 docs/ # Tài liệu hướng dẫn & Báo cáo
├── 📂 screenshots/ # Hình ảnh demo
├── 📂 src/
│ ├── 📂 main/
│ │ ├── 📂 java/com/pharmacy/
│ │ │ ├── 📂 app/ # Main Class (Điểm khởi chạy ứng dụng)
│ │ │ ├── 📂 bus/ # Business Logic (Xử lý nghiệp vụ chính)
│ │ │ ├── 📂 config/ # Các lớp cấu hình hệ thống (Properties, Session)
│ │ │ ├── 📂 connectDB/ # Quản lý kết nối JDBC tới SQL Server
│ │ │ ├── 📂 dao/ # Data Access Object (Truy vấn CSDL)
│ │ │ ├── 📂 dto/ # Data Transfer Object (Chuyển dữ liệu giữa các tầng)
│ │ │ ├── 📂 entity/ # Các lớp thực thể (Ánh xạ bảng CSDL)
│ │ │ ├── 📂 exception/ # Xử lý các ngoại lệ tùy chỉnh (Custom Exceptions)
│ │ │ ├── 📂 gui/ # Giao diện người dùng (Swing Forms, Dialogs)
│ │ │ └── 📂 utils/ # Các tiện ích chung (Format tiền, Date, Validate)
│ │ └── 📂 resources/ # Tài nguyên (Images, Icons, db.properties, i18n)
├── 📄 pom.xml # Quản lý thư viện Maven
└── 📄 README.md # Tài liệu dự án
Để cài đặt và chạy thử nghiệm phần mềm, bạn vui lòng thực hiện theo các bước sau:
- Java: JDK 21+.
- Database: SQL Server (2019+).
Bước 1: Clone dự án về máy
git clone https://github.com/BuiTrungKien333/pharmacy-management-java-public.gitBước 2: Cấu hình Cơ sở dữ liệu
- Mở SQL Server Management Studio (SSMS).
- Chạy file script tại thư mục: script.sql để tạo Database và dữ liệu mẫu.
- Cấu hình lại thông tin đăng nhập trong file
db.properties
Bước 3: Chạy ứng dụng
-
Cách 1 (Dùng IDE): Mở dự án bằng IntelliJ IDEA / Eclipse / NetBeans -> Run file
App.java. -
Cách 2 (Dùng file Jar): Tải file
PharmacyManagementApp.jartại mục Releases và chạy lệnh:
java -jar PharmacyManagementApp.jarBước 4: Xem tài liệu hướng dẫn chi tiết
- Để xem hướng dẫn từng bước bằng hình ảnh, vui lòng đọc file PDF tại:
Hướng Dẫn Cài Đặt
Bước 5: Các thiết bị hỗ trợ
- Máy quét mã vạch barcode và QR code (Lưu ý: Có thể sử dụng
điện thoạinếu không có máy quét chuyên dụng) - Máy in hóa đơn nhiệt
Dưới đây là một số hình ảnh thực tế của phần mềm:
Giao diện đăng nhập hiện đại và Dashboard thống kê trực quan tình hình kinh doanh.
| Đăng nhập hệ thống | Dashboard Tổng quan |
|---|---|
![]() |
![]() |
| Giao diện đăng nhập bảo mật | Thống kê doanh thu & Cảnh báo |
Quy trình bán hàng tối ưu thao tác, hỗ trợ in hóa đơn nhiệt ngay lập tức.
| Giao diện Bán hàng (POS) | Hóa đơn thanh toán |
|---|---|
![]() |
![]() |
| Bán hàng bằng mã vạch & Phím tắt | Mẫu hóa đơn in ra (Khổ 80mm) |
Quản lý chi tiết từng lô thuốc (Batch), hạn sử dụng (Expiry Date) và giá vốn.
| Quản lý Danh sách Sản phẩm | Chi tiết Sản phẩm |
|---|---|
![]() |
![]() |
| Danh sách thuốc & Tồn kho | Thêm mới/Xem chi tiết thuốc |
| Quản lý Lô & Hạn dùng (FEFO) |
|---|
![]() |
| Quản lý từng lô nhập, cảnh báo thuốc cận date |
Tra cứu lịch sử giao dịch và xử lý quy trình khách trả lại hàng.
| Quản lý Hóa đơn | Xử lý Trả hàng |
|---|---|
![]() |
![]() |
| Tra cứu & Xem lại hóa đơn cũ | Nhập phiếu trả hàng & Hoàn tiền |
Tính năng hỗ trợ người dùng khi quên mật khẩu thông qua Email.
| Quên mật khẩu (OTP) |
|---|
![]() |
| Xác thực OTP gửi về Email để cấp lại mật khẩu |
Mọi đóng góp đều được hoan nghênh! Nếu bạn tìm thấy lỗi hoặc muốn cải thiện tính năng, hãy thực hiện theo quy trình chuyên nghiệp sau:
- Fork dự án.
- Tạo nhánh mới (
git checkout -b feature/AmazingFeature). - Commit thay đổi (
git commit -m 'Add some AmazingFeature'). - Push lên nhánh (
git push origin feature/AmazingFeature). - Mở Pull Request.
v1.0.0 (Latest - 01/2026):
🎉 Phát hành phiên bản chính thức.
- Tác giả: Bùi Trung Kiên
- Email: buitrungkien2005qng@gmail.com
- Zalo / Phone: 0363 392 352
- Facebook: Trung Kiên
- Trường: Đại học Công nghiệp TP.HCM (IUH)









