OmegaBook
Java
Swing
SQL Server
JDBC
FlatLaf

OmegaBook

0 lượt xem

Thông tin chung

Đồ án môn họcDesktop10/2023 – 12/2023

Ứ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

Mã nguồn

Thành phầnChức năngCô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áoJava Swing, SQL ServerKhang, Cảnh, Kiên, TâmGitHub

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.

Giao diện (GUI)Java Swing · gói gui, gui.customchart, gui.menu
BUS — tầng nghiệp vụ

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.

DAO — tầng truy cập dữ liệu

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.

Microsoft SQL ServerDatabase OmegaBook · localhost:1433
Dùng chung giữa các tầng

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.

Bán hàng

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ý đơn hàng

Quản lý đổi trả

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

Quản lý đổi trả

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ý khuyến mãi

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ý sản phẩm

Quản lý nhân viên

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

Quản lý nhân viên

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.

Quản lý 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ê doanh thu

Thống kê sản phẩm

Thống kê sản phẩm

Thống kê khách hàng

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.

Kiểm tiền

Kết toán

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

Kết toán