
OmegaBook
Thông tin chung
Ứng dụng quản lý cửa hàng sách trên Java Swing
Môn học: Phát triển ứng dụng
Thành viên
- Lê Hoàng Khang · developer@iamhoangkhang.id.vn
- Nguyễn Thanh Cảnh · thanhcanh.dev@gmail.com
- Trần Đình Kiên
- Hồ Thị Như Tâm
Mã nguồn
| Thành phần | Chức năng | Công nghệ | Thực hiện | |
|---|---|---|---|---|
| omega-book | Ứng dụng desktop quản lý cửa hàng sách: bán hàng, nhập hàng, đổi trả, khuyến mãi, thống kê, báo cáo | Java Swing, SQL Server | Khang, Cảnh, Kiên, Tâm | GitHub |
Giới thiệu
OmegaBook là ứng dụng desktop quản lý cửa hàng sách, phát triển cho môn học Phát triển ứng dụng. Ứng dụng bao phủ toàn bộ nghiệp vụ tại quầy của một nhà sách: lập hóa đơn bán hàng, tạo đơn nhập hàng từ nhà cung cấp, xử lý đổi trả, áp dụng chương trình khuyến mãi, quản lý đầu sách và văn phòng phẩm, quản lý nhân viên và khách hàng.
Bên cạnh nghiệp vụ bán hàng, OmegaBook còn hỗ trợ chủ cửa hàng xem các loại thống kê (doanh thu, sản phẩm, khách hàng) và giúp nhân viên đứng quầy lập báo cáo kiểm tiền, kết toán khi kết ca và bàn giao ca làm việc.
Kiến trúc hệ thống
OmegaBook tổ chức theo kiến trúc phân lớp cổ điển của ứng dụng desktop Java: GUI (Swing) chỉ hiển thị và thu thập tương tác, gọi xuống BUS để xử lý nghiệp vụ, BUS gọi xuống DAO để đọc/ghi dữ liệu qua JDBC. Vì là ứng dụng một tiến trình duy nhất (không có API hay mạng), các lớp gọi thẳng phương thức Java của nhau thay vì qua giao thức truyền tải.
20 lớp *_BUS theo từng chức năng (Sales, OrderManagement, PromotionManagement, StatisticCustomer, StatementCashCount...): kiểm tra ràng buộc, tính toán và điều phối dữ liệu giữa GUI và DAO.
19 lớp *_DAO cùng triển khai interface chung DAOBase<T> (getOne, getAll, generateID, create, update, delete), tự viết câu lệnh SQL thuần qua JDBC.
entity
POJO ánh xạ 1-1 với bảng CSDL: Book, Stationery, Order, Employee, Customer, Promotion, PurchaseOrder, ReturnOrder, CashCountSheet...
enums
Hằng số nghiệp vụ dùng chung: BookCategory, PromotionType, DiscountType, PurchaseOrderStatus, ReturnOrderStatus...
utilities
BarcodeGenerator, OrderPrinter, AcountingVoucherPrinter, ExcelExporter, PasswordHash, FormatNumber...
Interface DAOBase<T>
Toàn bộ 19 lớp DAO cùng triển khai một interface chung trong gói interfaces, giữ bộ khung thao tác dữ liệu nhất quán cho mọi entity:
public interface DAOBase<Type> {
Type getOne(String id);
ArrayList<Type> getAll();
String generateID();
Boolean create(Type object);
Boolean update(String id, Type newObject);
Boolean delete(String id);
}Tính năng
Bán hàng
- Lập hóa đơn bán hàng tại quầy
- Tra cứu sản phẩm theo mã, tính VAT và tiền thừa tự động
- Áp dụng khuyến mãi theo hóa đơn hoặc theo sản phẩm
Đơn hàng
- Tạo đơn nhập hàng từ nhà cung cấp
- Quản lý danh sách hóa đơn bán ra
- Quản lý danh sách đơn nhập hàng
Đổi trả
- Lập phiếu đổi hàng hoặc trả hàng
- Theo dõi trạng thái xử lý đổi trả
Khuyến mãi
- Khuyến mãi theo phần trăm tổng hóa đơn
- Khuyến mãi riêng cho từng sản phẩm
Sản phẩm
- Quản lý đầu sách theo thể loại, thương hiệu
- Quản lý văn phòng phẩm
- Theo dõi tồn kho
Nhân viên & khách hàng
- Quản lý thông tin, phân quyền nhân viên
- Quản lý khách hàng và hạng thành viên
Thống kê
- Thống kê doanh thu theo ngày, tháng
- Thống kê theo sản phẩm bán chạy
- Thống kê theo khách hàng
Báo cáo ca làm
- Kiểm tiền cuối ca
- Kết toán, bàn giao ca cho nhân viên quầy
Công nghệ sử dụng
Java
Ngôn ngữ chính, biên dịch với JDK 17+, chạy trên JRE 1.8 để tương thích máy khách.
Swing
Thư viện giao diện desktop, kết hợp FlatLaf để có giao diện phẳng, hiện đại và hỗ trợ Light/Dark.
Microsoft SQL Server
Cơ sở dữ liệu quan hệ, truy cập qua JDBC driver sqljdbc42.
XChart
Vẽ biểu đồ cột và biểu đồ tròn ở màn hình thống kê doanh thu, sản phẩm, khách hàng.
iTextPDF
Xuất PDF cho hóa đơn bán hàng, phiếu đổi trả và các báo cáo kiểm tiền, kết toán.
Apache POI
Xuất báo cáo và danh sách dữ liệu ra file Excel.
Barbecue
Sinh mã vạch cho sản phẩm, in kèm trên phiếu và nhãn.
JCalendar
Bộ chọn ngày tháng dùng trong các form lọc và thống kê.
Giao diện ứng dụng
Bán hàng
Lập hóa đơn bán hàng: tra cứu sản phẩm, tính VAT, chọn khách hàng và phương thức thanh toán.

Quản lý đơn hàng
Quản lý hóa đơn bán hàng và đơn nhập hàng.

Quản lý đổi trả
Lập và quản lý đơn đổi hàng, trả hàng.

Quản lý khuyến mãi
Khuyến mãi theo phần trăm tổng hóa đơn và khuyến mãi theo từng sản phẩm.

Quản lý sản phẩm
Quản lý các đầu sách và văn phòng phẩm tại cửa hàng.

Quản lý nhân viên
Quản lý thông tin nhân viên cửa hàng.

Quản lý khách hàng
Quản lý thông tin và hạng thành viên của khách hàng.

Thống kê doanh thu
Biểu đồ tỷ lệ sản phẩm và doanh thu theo từng ngày trong tháng.

Thống kê sản phẩm

Thống kê khách hàng

Kiểm tiền
Hỗ trợ nhân viên đứng quầy kiểm tiền khi kết ca.

Kết toán
Lập báo cáo kết toán, bàn giao ca làm việc.
