Bối cảnh và vấn đề nghiên cứu

Đề tài "Chương trình quản lý sách tại nhà sách FAHASA" là đồ án môn học Lập trình Java thuộc Khoa Công nghệ Thông tin, Trường Đại học Tài chính - Marketing (UFM), do sinh viên Đinh Huỳnh Y Pha (MSSV: 1921006797) và Nguyễn Hoàng Thy thực hiện dưới sự hướng dẫn của giảng viên Hà Thanh Liêm (hoàn thành vào tháng 4 năm 2022).

Lý do chọn đề tài và bối cảnh thực tiễn

Công ty Cổ phần Phát hành sách FAHASA là đơn vị hoạt động trong lĩnh vực liên kết xuất bản, in ấn và phát hành sách tại Việt Nam với mạng lưới gần 60 nhà sách trên toàn quốc. Tại các chi nhánh, số lượng sản phẩm lưu hành lên đến hàng chục nghìn đầu sách, báo, tạp chí nhằm phục vụ lượng khách hàng đông đảo. Trước đây, quy trình quản lý sách, theo dõi kho và ghi nhận bán hàng tại đơn vị phần lớn được thực hiện thủ công hoặc sử dụng hệ thống cũ bộc lộ nhiều điểm hạn chế, tốc độ xử lý chưa đáp ứng được nhu cầu thực tế và dễ phát sinh sai sót trong quá trình kiểm kê. Do đó, việc xây dựng một phần mềm quản lý tự động hóa các khâu lưu trữ dữ liệu, luân chuyển kho và hỗ trợ tra cứu thông tin sách là yêu cầu cấp thiết được đặt ra từ thực tiễn vận hành.

Mục tiêu và nhiệm vụ nghiên cứu

Mục tiêu tổng quát của đồ án là thiết kế và xây dựng một phần mềm máy tính (desktop application) phục vụ công tác quản lý quy trình nghiệp vụ tại nhà sách FAHASA, giúp việc kiểm soát dữ liệu sách, hoạt động nhập xuất kho diễn ra rõ ràng, chính xác và hiệu quả.

Về nhiệm vụ cụ thể, tác giả xác định 5 nội dung nghiên cứu theo văn bản:

  1. Tìm hiểu các thông tin về quy trình nghiệp vụ quản lý bán hàng của cửa hàng.
  2. Giới thiệu và làm chủ các công cụ hỗ trợ xây dựng chương trình.
  3. Phân tích hệ thống và tiến hành thiết kế hệ thống thông tin.
  4. Phân tích và thiết kế cấu trúc các lớp đối tượng (OOP).
  5. Lập trình hiện thực hóa ứng dụng: Xây dựng các biểu mẫu giao diện (Form) cho phép người dùng thao tác đăng nhập, đổi mật khẩu, thực hiện các thao tác quản trị dữ liệu (thêm, sửa, xóa, tìm kiếm, đặt lại dữ liệu).

Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Quy trình quản lý danh mục sách, quản lý xuất kho, nhập kho và thông tin nhân sự tại nhà sách FAHASA.
  • Phạm vi không gian: Nghiên cứu và triển khai thử nghiệm ở quy mô nhỏ tại chi nhánh Nhà sách FAHASA Quận 9 (địa chỉ: 138 Lê Văn Việt, TP. Hồ Chí Minh).
  • Phạm vi học thuật và công nghệ: Đề tài được giới hạn trong khuôn khổ yêu cầu của học phần Lập trình Java, tập trung phát triển ứng dụng độc lập trên nền tảng desktop sử dụng Java Swing và hệ quản trị cơ sở dữ liệu quan hệ MySQL.

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và công nghệ sử dụng

Đồ án xây dựng dựa trên các nền tảng lý thuyết và công nghệ lập trình hướng đối tượng trong hệ sinh thái Java:

  • Ngôn ngữ lập trình Java: Đồ án áp dụng nền tảng Java Standard Edition (J2SE) và triết lý lập trình hướng đối tượng (OOP) thông qua 4 đặc tính cơ bản: tính trừu tượng (abstraction), tính đóng gói và che giấu thông tin (encapsulation & information hiding), tính kế thừa (inheritance), cùng cơ chế thực thi đa nền tảng nhờ máy ảo Java (Java Virtual Machine - JVM) và trình thu gom rác tự động (Garbage Collection).
  • Thư viện giao diện Java Swing: Là thành phần thuộc Java Foundation Classes (JFC), chạy trên nền Abstract Windowing Toolkit (AWT). Tác giả phân tích các ưu thế của Swing so với AWT theo mô hình kiến trúc Model - View - Controller (MVC), khả năng tùy biến giao diện đa nền tảng (pluggable Look & Feel) và hệ thống các thành phần giao diện đồ họa phong phú.
Tiêu chí Java AWT Java Swing
Tính phụ thuộc nền tảng Phụ thuộc nền tảng hệ điều hành Độc lập với nền tảng
Trọng lượng thành phần Nặng (heavyweight) Gọn nhẹ (lightweight)
Cơ chế Look & Feel Không hỗ trợ pluggable Look & Feel Hỗ trợ pluggable Look & Feel
Thành phần giao diện Cung cấp số lượng thành phần hạn chế Bổ sung các thành phần nâng cao: JTable, JList, JScrollPane, JTabbedPane, JColorChooser
Kiến trúc thiết kế Không tuân theo mô hình MVC Tuân thủ mô hình kiến trúc MVC
  • Java Database Connectivity (JDBC): Sử dụng bộ thư viện chuẩn JDBC API cùng trình điều khiển MySQL Connector/J (trình điều khiển loại thuần Java) để thực hiện kết nối ứng dụng với cơ sở dữ liệu quan hệ qua các đối tượng nòng cốt: Connection, Statement, PreparedStatement và ResultSet.
  • Hệ quản trị cơ sở dữ liệu MySQL: Đóng vai trò là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) hoạt động theo mô hình máy khách - máy chủ (client-server), lưu trữ dữ liệu tập trung qua cổng mặc định 3306.
  • Môi trường phát triển tích hợp (IDE): Đồ án sử dụng NetBeans IDE (phiên bản 12) làm công cụ soạn thảo mã nguồn, thiết kế biểu mẫu trực quan và gỡ lỗi chương trình.

Phương pháp nghiên cứu

  • Phương pháp thu thập và phân tích tài liệu: Tìm kiếm, tổng hợp các tài liệu nghiệp vụ, khảo sát quy trình quản lý thực tế tại Nhà sách FAHASA Quận 9 và đối chiếu với mô hình quản lý của các nhà sách tương đương trong bối cảnh điều kiện dịch bệnh phức tạp.
  • Phương pháp phân tích và thiết kế hướng đối tượng (OOAD): Mô hình hóa các thực thể ngoài đời thực (sách, tác giả, nhà xuất bản, phiếu nhập, phiếu xuất, nhân viên) thành cấu trúc các lớp đối tượng phần mềm, xác định các trường dữ liệu và phương thức thao tác.
  • Phương pháp mô hình hóa cơ sở dữ liệu quan hệ: Chuẩn hóa dữ liệu thành 9 bảng logic, xác định khóa chính (Primary Key) và khóa ngoại (Foreign Key) nhằm đảm bảo tính toàn vẹn dữ liệu.

Nguồn dữ liệu

Dữ liệu thử nghiệm trong hệ thống được thu thập từ quy trình hoạt động thực tế của nhà sách FAHASA Quận 9, bao gồm thông tin chi tiết về các nhà xuất bản, tác giả, chủng loại sách, danh mục sách lưu hành và dữ liệu giả lập về nhân viên, hóa đơn xuất nhập kho.


Thiết kế và triển khai

Hệ thống được thiết kế dưới dạng ứng dụng máy khách kết nối trực tiếp đến cơ sở dữ liệu quan hệ thông qua chuỗi kết nối nội bộ: jdbc:mysql://localhost:3306/QUANLYSACH.

Thiết kế cơ sở dữ liệu quan hệ

Cơ sở dữ liệu của phần mềm mang tên QUANLYSACH, bao gồm 9 bảng chức năng được chuẩn hóa:

Tên bảng Khóa chính (PK) Các trường thuộc tính Diễn giải chức năng
NhanVien MaNV (nchar(5)) HoTen, SDT, CCCD, GioiTinh, DiaChi, Email, NgayVaoLam Lưu trữ hồ sơ định danh, thông tin liên lạc và ngày bắt đầu làm việc của nhân viên
NhaXuatBan MaNXB (nchar(6)) TenNXB, DiaChi, SDT, Email, Website Quản lý danh mục các đơn vị liên kết xuất bản sách
TacGia MaTG (nchar(5)) HoTenTG, SDT, GioiTinh, NgaySinh, DiaChi, Email Lưu trữ lý lịch, thông tin cá nhân và tác giả sáng tác sách
LoaiSach MaLoaiSach (nchar(5)) TenLoaiSach Phân loại thể loại sách lưu hành trong cửa hàng
Sach MaSach (nvarchar(5)) TenSach, SoLuong, DonGia, NamXuatBan, MaNXB, MaLoaiSach, MaTG Danh mục sách kinh doanh; liên kết khóa ngoại với các bảng NhaXuatBan, LoaiSach, TacGia
PhieuNhapSach MaPhieuNhap (nchar(5)) MaNV, NgayNhap, SLNhap Quản lý thông tin tổng quan các đợt nhập hàng từ nhà cung cấp
PhieuXuatSach MaPhieuXuat (nchar(5)) MaNV, NgayXuat, SLXuat Quản lý thông tin tổng quan các đợt xuất hàng khỏi kho để bán
CTPNS (MaSach, MaPhieuNhap) MaSach, MaPhieuNhap, SLnhap, DonGia Bảng chi tiết hóa đơn nhập sách, định lượng số lượng và giá vốn
CTPXS (MaSach, MaPhieuXuat) MaSach, MaPhieuXuat, SLxuat, DonGia Bảng chi tiết hóa đơn xuất sách, định lượng số lượng xuất và giá bán

Thiết kế các lớp đối tượng (Class Design)

Phần mềm định nghĩa 11 lớp xử lý nghiệp vụ độc lập:

  1. Lớp KetNoi: Chịu trách nhiệm nạp JDBC Driver và cung cấp phương thức getConnection() để trả về phiên làm việc kết nối với MySQL qua tài khoản quản trị root.
  2. Lớp ThongTinDangNhap: Lưu trữ tài khoản người dùng (TenTaiKhoan, MatKhau), triển khai các phương thức TaiKhoan() lấy danh sách tài khoản hợp lệ và doiMatKhau(ThongTinDangNhap dn).
  3. Lớp ThongTinTacGia: Đóng gói thông tin tác giả; triển khai các phương thức nghiệp vụ: ThemDuLieu(), suaDuLieu(), XoaDuLieu(), cùng 3 phương thức tra cứu: TimKiemMTG(), TimKiemHTTG(), TimKiemDiaChi().
  4. Lớp ThongTinLoaiSach: Quản lý thể loại sách; cung cấp các phương thức CRUD và tìm kiếm theo mã (TimKiemMLS()), theo tên (TimKiemTLS()).
  5. Lớp ThongTinNXB: Quản lý nhà xuất bản; triển khai phương thức nạp dữ liệu NXB(), các thao tác cập nhật và tìm kiếm theo mã, tên, địa chỉ.
  6. Lớp ThongTinSach: Lớp trung tâm quản lý danh mục ấn phẩm; cung cấp phương thức Sach() nạp dữ liệu lên JTable, các hàm thêm, sửa, xóa và phương thức tìm kiếm đa điều kiện TimKiemMaSach(MaSach, TenSach, MaTG, MaNXB, MaLoaiSach).
  7. Lớp ThongTinPhieuNhap & ThongTinCTPN: Đóng gói nghiệp vụ nhập sách; kiểm soát việc ghi nhận mã nhân viên, ngày nhập, tổng số lượng và chi tiết từng mã sách nhập vào kho.
  8. Lớp ThongTinPhieuXuat & ThongTinCTPX: Đóng gói nghiệp vụ xuất sách; ghi nhận quá trình đưa sách ra khỏi kho phục vụ khách hàng.
  9. Lớp ThongTinNhanVien: Quản lý danh sách nhân sự; hỗ trợ các chức năng lọc theo mã, họ tên hoặc giới tính nhân viên.

Triển khai giao diện người dùng

Giao diện được xây dựng bằng Java Swing với các thành phần điều khiển: JFrame, JPanel, JTabbedPane, JTable, JTextField, JButton, JCheckBox, JComboBox và JOptionPane. Các màn hình triển khai bao gồm:

  • Form Đăng nhập và Đổi mật khẩu: Cung cấp tính năng ẩn/hiện mật khẩu qua JCheckBox, xác thực tính hợp lệ của tài khoản trước khi điều hướng vào màn hình điều khiển chính.
  • Form Giao diện chính: Bố trí thanh điều hướng trung tâm với 4 nút lệnh truy cập nhanh: "QUẢN LÝ SÁCH", "QUẢN LÝ NHẬP SÁCH", "QUẢN LÝ XUẤT SÁCH", "QUẢN LÝ NHÂN VIÊN" và nút Đăng xuất.
  • Form Quản lý thông tin sách: Tổ chức theo dạng thẻ tab lồng nhau gồm 4 phân hệ con: Tab Quản lý tác giả, Tab Quản lý nhà xuất bản, Tab Quản lý loại sách và Tab Quản lý thông tin sách.
  • Form Quản lý xuất và nhập sách: Mỗi phân hệ được tách biệt thành 2 tab gồm quản lý thông tin phiếu tổng quan và quản lý chi tiết phiếu xuất/nhập.
  • Form Quản lý nhân viên: Hỗ trợ nhập liệu thông tin nhân viên mới, điều chỉnh dữ liệu, tra cứu và hiển thị danh sách trên bảng hai chiều JTable.

Nội dung chính theo từng chương

Chương 1: Giới thiệu tổng quan

Chương 1 giới thiệu khái quát về Công ty Cổ phần Phát hành sách FAHASA với quy mô mạng lưới gần 60 nhà sách trên toàn quốc và phạm vi triển khai cụ thể tại chi nhánh 138 Lê Văn Việt, TP. Hồ Chí Minh. Tác giả trình bày tính cấp thiết xuất phát từ khối lượng sách lưu thông lớn, tình trạng quản lý thủ công lạc hậu, từ đó xác lập mục tiêu thiết kế phần mềm quản lý kho và danh mục sách. Chương này cũng phân định rõ 5 nhiệm vụ chính cần hoàn thành, phương pháp khảo sát thông tin trong điều kiện phòng dịch và giới hạn quy mô nghiên cứu trong phạm vi học phần Lập trình Java.

Chương 2: Cơ sở lý thuyết

Chương 2 trình bày toàn diện các kiến thức kỹ thuật nền tảng làm cơ sở triển khai hệ thống:

  • Lịch sử hình thành ngôn ngữ Java từ dự án Green Team năm 1991 do James Gosling đứng đầu, các nền tảng J2SE, J2EE, J2ME và phân tích các đặc tính kỹ thuật (hướng đối tượng, độc lập nền tảng nhờ JVM, bộ thu gom rác tự động).
  • Phân tích lý thuyết hướng đối tượng tập trung vào tính trừu tượng, tính đóng gói và tính kế thừa.
  • Khảo sát thư viện giao diện Java Swing, lập bảng so sánh chi tiết tính ưu việt của Swing so với AWT, phân cấp các lớp trong JComponent và cấu trúc 3 loại container chính: Panel, Frame, Dialog.
  • Cấu trúc kiến trúc JDBC gồm Trình điều khiển (JDBC driver), Kết nối (Connection), Câu lệnh (Statement) và Tập kết quả (ResultSet).
  • Đánh giá ưu nhược điểm của công cụ phát triển NetBeans IDE 12 và hệ quản trị cơ sở dữ liệu quan hệ MySQL.

Chương 3: Phân tích và thiết kế chương trình

Chương 3 đi sâu vào đặc tả quy trình vận hành và cấu trúc hệ thống:

  • Mô tả dòng dữ liệu thực tế tại nhà sách: thông tin hồ sơ nhân viên, quy tắc ràng buộc của sách (mỗi cuốn sách có một mã duy nhất, thuộc một loại sách, do một tác giả sáng tác và một nhà xuất bản phát hành), quy trình lập phiếu xuất khi bán hàng và lập phiếu nhập kho vào cuối ngày khi lượng tồn kho không đủ đáp ứng.
  • Thiết kế chi tiết cơ sở dữ liệu quan hệ QUANLYSACH gồm 9 bảng dữ liệu, định rõ kiểu dữ liệu, độ dài và vai trò khóa chính/khóa ngoại.
  • Xây dựng cấu trúc hướng đối tượng cho 11 lớp Java (KetNoi, ThongTinDangNhap, ThongTinTacGia, ThongTinLoaiSach, ThongTinNXB, ThongTinSach, ThongTinPhieuNhap, ThongTinPhieuXuat, ThongTinCTPN, ThongTinCTPX, ThongTinNhanVien), liệt kê danh sách thuộc tính và đặc tả chữ ký của các hàm thao tác dữ liệu.

Chương 4: Hiện thực ứng dụng

Chương 4 mô tả toàn bộ quá trình lập trình giao diện và gắn kết logic xử lý:

  • Hiện thực form Đăng nhập và Đổi mật khẩu kèm các đoạn mã xử lý sự kiện kiểm tra tài khoản, ẩn/hiện mật khẩu và hộp thoại thông báo JOptionPane.
  • Hiện thực Form giao diện chính điều phối toàn bộ luồng hoạt động của hệ thống.
  • Chi tiết hóa 4 phân hệ chức năng:
    1. Quản lý thông tin sách: Triển khai 4 tab (Tác giả, Nhà xuất bản, Loại sách, Sách) hỗ trợ nhập liệu, đồng bộ JTable, bắt lỗi trùng lặp mã và các nút chức năng Thêm, Xóa, Sửa, Tìm kiếm, Reset.
    2. Quản lý xuất sách: Triển khai Form phiếu xuất và Form chi tiết phiếu xuất, hỗ trợ tìm kiếm nâng cao theo mã phiếu, mã nhân viên, số lượng, ngày và tháng xuất.
    3. Quản lý nhập sách: Triển khai Form phiếu nhập và chi tiết phiếu nhập với các hàm kiểm tra ràng buộc số lượng và đơn giá.
    4. Quản lý nhân viên: Triển khai giao diện quản lý hồ sơ nhân viên, cho phép lọc dữ liệu theo mã nhân viên, họ tên hoặc giới tính.

Chương 5: Kết luận và kiến nghị

Chương 5 tổng kết lại toàn bộ kết quả đạt được sau quá trình nghiên cứu và thực nghiệm phần mềm, đánh giá mức độ hoàn thành so với các mục tiêu đề ra ban đầu tại Chương 1. Tác giả thẳng thắn chỉ ra các mặt tồn tại, hạn chế về mặt kỹ thuật của ứng dụng và đề xuất các phương hướng nghiên cứu, hoàn thiện hệ thống trong tương lai.


Kết quả và đóng góp

Kết quả chính đạt được

  • Về cấu trúc dữ liệu: Xây dựng hoàn chỉnh cơ sở dữ liệu quan hệ QUANLYSACH trên MySQL với 9 bảng dữ liệu có liên kết chặt chẽ bằng khóa ngoại, đảm bảo lưu trữ nhất quán thông tin nhân viên, nhà xuất bản, tác giả, loại sách, sách và các chi tiết xuất - nhập kho.
  • Về kiến trúc phần mềm: Hiện thực hóa thành công 11 lớp hướng đối tượng bằng ngôn ngữ Java, tách biệt chức năng kết nối (KetNoi), xác thực tài khoản (ThongTinDangNhap) và các lớp thực thể quản lý dữ liệu.
  • Về giao diện và chức năng: Hoàn thành toàn diện các biểu mẫu giao diện người dùng bằng Java Swing:
    • Hệ thống bảo mật cơ bản: Đăng nhập hệ thống, thông báo lỗi xác thực, đổi mật khẩu và đăng xuất an toàn.
    • Phân hệ quản lý thông tin sách đa tầng: Thực hiện trọn vẹn các thao tác Thêm, Sửa, Xóa, Đặt lại dữ liệu (Reset) và Tìm kiếm dữ liệu cho 4 nhóm đối tượng (Tác giả, Nhà xuất bản, Thể loại, Sách).
    • Phân hệ quản lý kho: Thiết lập đầy đủ chức năng lập và tra cứu phiếu xuất kho, phiếu nhập kho cùng chi tiết tương ứng theo nhiều tiêu chí (theo mã, số lượng, thời gian ngày/tháng).
    • Phân hệ nhân sự: Ghi nhận và quản lý hồ sơ nhân viên phục vụ việc truy xuất trách nhiệm lập phiếu.

Đóng góp của đề tài

  • Hệ thống hóa và chuyển đổi quy trình quản lý sách thủ công, phân tán tại chi nhánh FAHASA Quận 9 thành một quy trình tin học hóa tập trung, giảm thiểu nguy cơ sai lệch số liệu kho.
  • Cung cấp giải pháp phần mềm desktop đáp ứng đúng các yêu cầu nghiệp vụ bán lẻ và kiểm soát kho sách ở quy mô cơ sở.
  • Vận dụng thành công mô hình lập trình hướng đối tượng trong Java kết hợp cơ chế JDBC để tương tác trực tiếp với cơ sở dữ liệu quan hệ MySQL.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế

Căn cứ theo nội dung văn bản và phạm vi nghiên cứu được công bố:

  • Ứng dụng mới chỉ dừng lại ở quy mô thử nghiệm nhỏ tại một chi nhánh duy nhất (Nhà sách FAHASA Quận 9), chưa mở rộng kết nối liên chi nhánh trong toàn hệ thống gần 60 nhà sách của FAHASA.
  • Phần mềm hoạt động theo dạng ứng dụng máy trạm độc lập (desktop local), các tham số cấu hình kết nối CSDL (đường dẫn localhost, tài khoản root, mật khẩu cố định) đang được thiết lập tĩnh trong lớp KetNoi, chưa hỗ trợ cơ chế cấu hình động.
  • Chưa tích hợp hệ thống phân quyền chi tiết theo cấp bậc quản trị viên (Admin) và nhân viên bán hàng thông thường; form đăng nhập chỉ dừng ở mức kiểm tra tài khoản hợp lệ để mở quyền truy cập chung.
  • Khả năng xử lý bộ nhớ phụ thuộc vào nền tảng Java Swing và công cụ NetBeans IDE vốn tiêu tốn nhiều tài nguyên hệ thống, có thể gây chậm trễ khi số lượng bản ghi dữ liệu tăng cao.

Hướng nghiên cứu tiếp

  • Mở rộng kiến trúc phần mềm từ ứng dụng desktop đơn máy sang mô hình ứng dụng web hoặc ứng dụng mạng phân tán nhằm cho phép đồng bộ dữ liệu theo thời gian thực giữa các chi nhánh của nhà sách FAHASA.
  • Tích hợp thêm các module thống kê chuyên sâu: Báo cáo doanh thu định kỳ, biểu đồ phân tích biến động hàng tồn kho và hệ thống cảnh báo tự động khi lượng sách trong kho xuống dưới ngưỡng an toàn.
  • Nâng cấp cơ chế bảo mật: Mã hóa mật khẩu lưu trữ trong cơ sở dữ liệu, phân quyền chi tiết theo chức năng của từng nhóm người dùng và tách biệt tệp tin cấu hình kết nối CSDL ra khỏi mã nguồn.

Giá trị tham khảo

Đồ án là tài liệu tham khảo thực tế cho các nhóm đối tượng học thuật và kỹ thuật:

  • Đối tượng học tập: Sinh viên chuyên ngành Công nghệ thông tin, Hệ thống thông tin, Kỹ thuật phần mềm đang theo học các học phần Lập trình Java, Lập trình hướng đối tượng (OOP), Cơ sở dữ liệu hoặc Phân tích thiết kế hệ thống thông tin.
  • Giá trị chuyên môn:
    • Cung cấp mô hình tham chiếu chi tiết về việc xây dựng ứng dụng CRUD (Create - Read - Update - Delete) hoàn chỉnh bằng Java Swing kết hợp cơ sở dữ liệu MySQL qua JDBC.
    • Cung cấp cấu trúc thiết kế cơ sở dữ liệu quan hệ chuẩn mực cho bài toán quản lý cửa hàng bán lẻ có liên kết đa thực thể (quan hệ giữa Sách với Tác giả, Nhà xuất bản, Thể loại và quan hệ giữa Hóa đơn tổng quát với Hóa đơn chi tiết).
    • Minh họa cách viết các phương thức truy vấn và xử lý lọc dữ liệu theo nhiều tham số đầu vào trong ngôn ngữ Java.

Câu hỏi thường gặp

1. Ứng dụng kết nối với cơ sở dữ liệu MySQL qua các thông số kỹ thuật nào?

Theo mã nguồn định nghĩa trong lớp KetNoi tại Chương 3, ứng dụng kết nối tới hệ quản trị cơ sở dữ liệu MySQL trên máy cục bộ với các thông số:

  • Đường dẫn cơ sở dữ liệu (DB_URL): "jdbc:mysql://localhost:3306/QUANLYSACH"
  • Tên đăng nhập (USER_NAME): "root"
  • Mật khẩu (PASSWORD): "dinhhuynhypha190201"
  • Phương thức khởi tạo kết nối: getConnection() sử dụng DriverManager.getConnection(DB_URL, USER_NAME, PASSWORD).

2. Bảng dữ liệu Sach được thiết kế gồm những trường thông tin nào và liên kết với các bảng nào?

Bảng Sach trong cơ sở dữ liệu QUANLYSACH gồm 8 thuộc tính:

  • MaSach (nvarchar(5), Khóa chính)
  • TenSach (nvarchar(150))
  • SoLuong (integer)
  • DonGia (float)
  • NamXuatBan (nchar(4))
  • MaNXB (nvarchar(6), Khóa ngoại tham chiếu đến bảng NhaXuatBan)
  • MaLoaiSach (nvarchar(5), Khóa ngoại tham chiếu đến bảng LoaiSach)
  • MaTG (nvarchar(5), Khóa ngoại tham chiếu đến bảng TacGia)

3. Phân hệ Quản lý thông tin sách trên giao diện người dùng được tổ chức như thế nào?

Trên giao diện Java Swing, phân hệ Quản lý thông tin sách được tổ chức dưới dạng một container gồm 4 thẻ tab chuyên biệt:

  • Tab quản lý tác giả: Quản lý mã, họ tên, điện thoại, giới tính, ngày sinh, địa chỉ, email và tìm kiếm theo mã, họ tên, địa chỉ.
  • Tab quản lý nhà xuất bản: Quản lý mã, tên, địa chỉ, điện thoại, email, website và tìm kiếm theo mã, tên, địa chỉ.
  • Tab quản lý loại sách: Quản lý mã loại, tên loại và tìm kiếm theo mã loại, tên loại sách.
  • Tab quản lý thông tin sách: Quản lý toàn bộ thông tin ấn phẩm và tìm kiếm liên kết theo mã sách, tên sách, mã NXB, mã tác giả hoặc mã loại sách.

4. Bảng PhieuNhapSach và bảng CTPNS khác nhau như thế nào trong quy trình quản lý?

  • Bảng PhieuNhapSach: Quản lý thông tin tổng thể của một đợt nhập sách, gồm các thuộc tính: mã phiếu nhập (MaPhieuNhap - Khóa chính), mã nhân viên phụ trách nhập (MaNV), ngày thực hiện nhập (NgayNhap) và tổng số lượng sách nhập (SLNhap).
  • Bảng CTPNS (Chi tiết phiếu nhập sách): Phản ánh cụ thể từng đầu sách có mặt trong đợt nhập đó, gồm các trường: mã sách (MaSach), mã phiếu nhập (MaPhieuNhap), số lượng của từng loại sách (SLnhap) và đơn giá nhập (DonGia).

5. Những phương thức tìm kiếm nào được cài đặt trong lớp ThongTinTacGia?

Lớp ThongTinTacGia cài đặt 3 phương thức tìm kiếm phục vụ người dùng tra cứu:

  • TimKiemMTG(String MaTG): Tra cứu tác giả dựa trên mã tác giả.
  • TimKiemHTTG(String HoTenTG): Tra cứu tác giả dựa trên họ và tên.
  • TimKiemDiaChi(String DiaChi): Tra cứu tác giả dựa trên địa chỉ cư trú.

Kết luận

Đồ án môn học "Chương trình quản lý sách tại nhà sách FAHASA" của nhóm sinh viên Đinh Huỳnh Y Pha và Nguyễn Hoàng Thy đã giải quyết bài toán tự động hóa nghiệp vụ quản lý kho và danh mục sách tại Nhà sách FAHASA chi nhánh Quận 9. Đề tài vận dụng bài bản lý thuyết lập trình hướng đối tượng trên nền Java J2SE, xây dựng giao diện tương tác trực quan bằng Java Swing và thiết kế cơ sở dữ liệu quan hệ gồm 9 bảng trên MySQL thông qua kết nối JDBC. Hệ thống đáp ứng các chức năng cốt lõi về kiểm soát ấn phẩm, quản lý thông tin tác giả, nhà xuất bản, hồ sơ nhân viên cùng việc theo dõi phiếu nhập, phiếu xuất kho. Đây là công trình thực hành kỹ thuật có giá trị tham khảo tốt cho sinh viên ngành Công nghệ thông tin trong việc nghiên cứu và triển khai ứng dụng phần mềm quản lý trên máy tính.