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

Trong hoạt động vận hành của các cơ sở kinh doanh phát hành sách, khối lượng dữ liệu phát sinh hàng ngày rất lớn và mang tính liên kết phức tạp. Hoạt động này bao gồm việc theo dõi danh mục hàng nghìn đầu sách với nhiều thể loại, tác giả, nhà xuất bản; quản lý thông tin khách hàng, nhà cung cấp, đối tác; kiểm soát công nợ; xử lý các giao dịch nhập - xuất hàng ngày; và tổng hợp báo cáo tài chính, tồn kho định kỳ. Phương thức quản lý truyền thống dựa trên ghi chép thủ công và lưu trữ sổ sách trên giấy tờ bộc lộ nhiều hạn chế nghiêm trọng: tốn kém thời gian, dễ nhầm lẫn dữ liệu, khó khăn trong tra cứu và không đáp ứng được yêu cầu cập nhật, điều chỉnh quy định kịp thời.

Xuất phát từ thực tiễn trên, đề tài "Quản lý nhà sách" được nhóm tác giả thực hiện trong khuôn khổ đồ án môn học Nhập môn Công nghệ Phần mềm tại Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP. Hồ Chí Minh (năm 2020) dưới sự hướng dẫn của giảng viên Đỗ Thị Thanh Tuyền.

Mục tiêu và các nhiệm vụ nghiên cứu cụ thể của đề tài bao gồm:

  1. Xác định và mô hình hóa yêu cầu phần mềm: Phân loại toàn diện các yêu cầu nghiệp vụ, yêu cầu hệ thống (an toàn, bảo mật), yêu cầu chất lượng (tiến hóa, hiệu quả, tiện dụng, tương thích) và yêu cầu công nghệ; xây dựng bảng trách nhiệm và sơ đồ luồng dữ liệu (DFD) kèm thuật toán chi tiết.
  2. Thiết kế hệ thống: Xây dựng mô hình kiến trúc Client-Server, phân định rõ ràng vai trò xử lý của từng thành phần.
  3. Thiết kế dữ liệu: Áp dụng phương pháp luận thiết kế cơ sở dữ liệu quan hệ tuần tự theo từng yêu cầu nghiệp vụ, bảo đảm cả hai tiêu chí: tính đúng đắn và tính tiến hóa.
  4. Thiết kế giao diện: Xây dựng sơ đồ liên kết màn hình, đặc tả chi tiết các đối tượng giao diện và danh mục biến cố - xử lý tương ứng cho từng chức năng.
  5. Cài đặt và thử nghiệm: Lập trình hiện thực hóa hệ thống trên môi trường phát triển và kiểm thử mức độ đáp ứng của các chức năng phần mềm.

Phạm vi nghiên cứu tập trung vào các quy trình nghiệp vụ cốt lõi tại một nhà sách bán lẻ: nhập sách từ nhà cung cấp, bán sách và xuất hóa đơn cho khách hàng, tra cứu thông tin sách, thu tiền nợ khách hàng, lập báo cáo tồn kho và báo cáo công nợ hàng tháng, cùng chức năng quản trị thay đổi các tham số quy định hoạt động.


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

Đề tài áp dụng các nguyên lý nền tảng của kỹ nghệ phần mềm và phân tích thiết kế hệ thống thông tin quản lý:

  • Khung lý thuyết và mô hình phân tích:
    • Mô hình phân loại yêu cầu phần mềm đa chiều (Yêu cầu chức năng/nghiệp vụ, Yêu cầu phi chức năng bao gồm an toàn, bảo mật, hiệu quả, tiện dụng, tương thích, tiến hóa và công nghệ).
    • Mô hình luồng dữ liệu (Data Flow Diagram - DFD) kết hợp đặc tả luồng thông tin vào - ra ($D_1$ đến $D_6$) và thuật toán xử lý từng bước cho mỗi ca sử dụng.
    • Mô hình hóa dữ liệu quan hệ tiếp cận theo hướng tiến hóa (Evolutionary Database Design): Bắt đầu từ việc xác định các thuộc tính đáp ứng đúng đắn biểu mẫu nghiệp vụ, sau đó chuẩn hóa và mở rộng cấu trúc bảng để đáp ứng khả năng thay đổi quy định (tham số hóa hệ thống qua bảng THAMSO).
    • Kiến trúc phần mềm 2 tầng (2-Tier Client-Server Architecture).
  • Phương pháp thực hiện:
    • Phương pháp phân tích - tổng hợp: Khảo sát các biểu mẫu nghiệp vụ thực tế ($BM_1$ đến $BM_5$) và hệ thống quy định ràng buộc ($QĐ_1, QĐ_2, QĐ_4, QĐ_6$).
    • Phương pháp mô hình hóa hình thức: Sử dụng các công cụ sơ đồ hóa (Microsoft Visio/Word) để trực quan hóa luồng dữ liệu, liên kết màn hình và sơ đồ thực thể liên kết (ERD/Sơ đồ logic CSDL).
    • Phương pháp thực nghiệm phần mềm: Xây dựng ứng dụng hoàn chỉnh trên môi trường Microsoft Visual Studio và hệ quản trị cơ sở dữ liệu Microsoft SQL Server, sau đó tiến hành kiểm thử hộp đen (Black-box testing) để nghiệm thu từng chức năng.

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

Chương 1. Tổng quan đề tài

Chương 1 trình bày tính cấp thiết của việc tự động hóa công tác quản lý nhà sách, xác lập mục tiêu phát triển phần mềm đơn giản, hiệu quả và tiện lợi. Quy trình thực hiện đồ án được chia thành 5 phần tuần tự:

  • Phần 1: Họp nhóm, khảo sát và phân tích yêu cầu nghiệp vụ.
  • Phần 2: Xác định, phân loại và mô hình hóa các yêu cầu phần mềm bằng biểu mẫu và sơ đồ.
  • Phần 3: Thiết kế kiến trúc hệ thống, sơ đồ logic cơ sở dữ liệu và giao diện người dùng.
  • Phần 4: Lập trình ứng dụng trên Microsoft Visual Studio và thiết lập cơ sở dữ liệu trên Microsoft SQL Server.
  • Phần 5: Kiểm thử chức năng, đánh giá mức độ hoàn thành và chạy thử nghiệm.

Chương 2. Xác định và mô hình hóa yêu cầu phần mềm

Chương này phân loại chi tiết các yêu cầu phần mềm và xây dựng ma trận bảng trách nhiệm giữa Người dùng và Phần mềm:

  • Yêu cầu nghiệp vụ và quy định ràng buộc:
    • Lập phiếu nhập sách ($BM_1$ - $QĐ_1$): Chỉ cho phép nhập các sách có lượng tồn trước nhập ít hơn 300 cuốn; số lượng nhập mỗi đầu sách ít nhất là 150 cuốn.
    • Lập hóa đơn bán sách ($BM_2$ - $QĐ_2$): Chỉ bán sách cho khách hàng có tiền nợ không quá 20.000 VNĐ; đầu sách sau khi bán phải giữ lượng tồn tối thiểu là 20 cuốn; đơn giá bán được tính tự động bằng $105%$ đơn giá nhập.
    • Tra cứu sách ($BM_3$): Cho phép tìm kiếm linh hoạt theo mã, tên sách, thể loại, tác giả, nhà xuất bản, năm xuất bản và số lượng tồn.
    • Lập phiếu thu tiền ($BM_4$ - $QĐ_4$): Thu tiền nợ từ khách hàng, số tiền thu không được vượt quá số tiền khách hàng đang nợ.
    • Lập báo cáo tháng ($BM_5$): Bao gồm Báo cáo tồn ($BM_{5.1}$ thống kê tồn đầu, phát sinh, tồn cuối theo từng đầu sách) và Báo cáo công nợ ($BM_{5.2}$ thống kê nợ đầu, phát sinh, nợ cuối theo từng khách hàng).
    • Thay đổi quy định ($QĐ_6$): Cho phép người quản trị cập nhật lại các tham số của $QĐ_1$ (lượng nhập tối thiểu, tồn tối đa trước nhập), $QĐ_2$ (tiền nợ tối đa, tồn tối thiểu sau bán, tỉ lệ đơn giá bán) và thiết lập trạng thái áp dụng hay không áp dụng quy định $QĐ_4$.
  • Yêu cầu phi chức năng:
    • Hệ thống: An toàn dữ liệu (phục hồi giao dịch, không cho phép xóa đầu sách có lượng tồn $>0$ hoặc khách hàng có tổng nợ $>0$); Bảo mật và phân quyền rõ ràng giữa nhóm Quản trị hệ thống và Nhân viên.
    • Chất lượng: Thời gian đáp ứng tra cứu tức khắc; thông lượng xử lý đạt tối thiểu 50 phiếu nhập/hóa đơn/phiếu thu mỗi giờ; cấu hình phần cứng tối thiểu tương thích từ CPU Pentium III 533 MHz, RAM 128 MB, HDD 10 GB.
    • Tương thích và công nghệ: Nhập dữ liệu từ tập tin Excel độc lập phiên bản; hỗ trợ xuất chứng từ ra phần mềm WinFax; mã nguồn dễ bảo trì, dễ sửa lỗi trung bình dưới 15 phút và hỗ trợ chuyển đổi hệ quản trị CSDL trong vòng 2 ngày.
Nhóm yêu cầu Tên yêu cầu cụ thể Biểu mẫu liên quan Quy định áp dụng
Nghiệp vụ cốt lõi Lập phiếu nhập sách $BM_1$ $QĐ_1$
Lập hóa đơn bán sách $BM_2$ $QĐ_2$
Tra cứu sách $BM_3$ Không
Lập phiếu thu tiền $BM_4$ $QĐ_4$
Lập báo cáo tồn tháng $BM_{5.1}$ Không
Lập báo cáo công nợ tháng $BM_{5.2}$ Không
Thay đổi các tham số quy định Không $QĐ_6$
An toàn hệ thống Chặn xóa dữ liệu có ràng buộc tồn/nợ Không Tồn kho $>0$, Nợ $>0$
Phân quyền Quản trị viên và Nhân viên Không Theo vai trò sử dụng

Chương 3. Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc 2 tầng (Client-Server):

  • Lớp Client (Giao diện người dùng): Tiếp nhận thao tác nhập/xuất từ người dùng, gửi yêu cầu truy vấn hoặc cập nhật xuống máy chủ cơ sở dữ liệu và hiển thị các thông báo/lỗi phản hồi.
  • Lớp Server (Microsoft SQL Server): Lưu trữ tập trung toàn bộ dữ liệu quản lý nhà sách, tiếp nhận các yêu cầu từ Client, thực hiện kiểm tra tính toàn vẹn và các ràng buộc dữ liệu, bảo đảm tính an toàn và bảo mật cho toàn bộ hệ thống.

Chương 4. Thiết kế dữ liệu

Chương 4 trình bày tiến trình thiết kế cơ sở dữ liệu quan hệ thông qua thuật toán lập sơ đồ logic. Với mỗi yêu cầu nghiệp vụ, nhóm tác giả tiến hành thiết kế theo 2 bước:

  1. Thiết kế với tính đúng đắn: Xác định các thực thể và thuộc tính tối thiểu để lưu trữ đầy đủ thông tin trên biểu mẫu giao dịch.
  2. Thiết kế với tính tiến hóa: Tách thực thể, bổ sung các bảng danh mục (THELOAI, TACGIA, DAUSACH, CT_TACGIA) và bảng tham số hệ thống (THAMSO) nhằm đáp ứng việc thay đổi các giá trị quy định mà không làm thay đổi cấu trúc bảng.

Sơ đồ logic hoàn chỉnh gồm 14 bảng dữ liệu quan hệ được chuẩn hóa:

STT Tên bảng dữ liệu Khóa chính (PK) Khóa ngoại (FK) Diễn giải chức năng
1 SACH MaSach MaDauSach Lưu trữ thông tin chi tiết từng cuốn sách, số lượng tồn, đơn giá bán
2 DAUSACH MaDauSach MaTheLoai Quản lý tên đầu sách và thể loại tương ứng
3 THELOAI MaTheLoai Không Danh mục các thể loại sách
4 TACGIA MaTacGia Không Danh mục thông tin tác giả
5 CT_TACGIA MaDauSach, MaTacGia MaDauSach, MaTacGia Bảng trung gian thể hiện quan hệ nhiều - nhiều giữa Đầu sách và Tác giả
6 PHIEUNHAPSACH MaPhieuNhapSach Không Lưu trữ thông tin tổng quát mỗi lần nhập sách (ngày lập, tổng tiền)
7 CT_PHIEUNHAPSACH MaPhieuNhapSach, MaSach MaPhieuNhapSach, MaSach Chi tiết số lượng nhập và đơn giá nhập cho từng cuốn sách
8 KHACHHANG MaKhachHang Không Lưu thông tin khách hàng, số điện thoại, địa chỉ, email và số tiền nợ hiện tại
9 HOADON MaHoaDon MaKhachHang Thông tin hóa đơn bán sách (ngày bán, tổng tiền, thanh toán, còn lại)
10 CT_HOADON MaHoaDon, MaSach MaHoaDon, MaSach Chi tiết các cuốn sách, số lượng bán và đơn giá trong hóa đơn
11 PHIEUTHUTIEN MaPhieuThuTien MaKhachHang Ghi nhận các lần thu tiền nợ từ khách hàng
12 BAOCAOTON Thang, Nam, MaSach MaSach Thống kê tồn đầu, phát sinh và tồn cuối của từng cuốn sách theo tháng
13 BAOCAOCONGNO Thang, Nam, MaKhachHang MaKhachHang Thống kê nợ đầu, phát sinh và nợ cuối của từng khách hàng theo tháng
14 THAMSO Không Không Lưu các tham số cấu hình: SoLuongTonToiDa, SoTienNoToiDa, TonToiThieuSauBan, SoLuongNhapToiThieu, TiLeTinhDonGiaBan, SuDungQuiDinh

Chương 5. Thiết kế giao diện

Chương 5 thiết lập sơ đồ phân cấp liên kết và đặc tả chi tiết 16 màn hình chức năng. Mỗi màn hình được mô tả cụ thể về bố cục giao diện, danh sách các điều khiển (Label, TextBox, ComboBox, Button, DataGridView, DateTimePicker), cùng bảng quy định các sự kiện (biến cố click, text changed, selection changed) và thuật toán xử lý tương ứng:

  • Màn hình Trang chủ: Cung cấp thanh điều hướng trung tâm và công cụ tìm kiếm nhanh sách.
  • Màn hình Phiếu nhập sách: Nhập thông tin các đầu sách mới, tự động tính thành tiền và cập nhật số lượng tồn kho.
  • Màn hình Hóa đơn bán sách: Tìm kiếm thông tin sách, kiểm tra ràng buộc tiền nợ khách hàng và lượng tồn tối thiểu trước khi xuất hóa đơn.
  • Màn hình Phiếu thu tiền: Tự động hiển thị công nợ hiện tại của khách hàng theo số điện thoại và chặn thu tiền vượt quá số nợ.
  • Màn hình Tra cứu sách: Tìm kiếm đa tiêu chí kết hợp (theo Thể loại, Tác giả, Nhà xuất bản, Năm xuất bản).
  • Màn hình Báo cáo: Lập và hiển thị báo cáo tổng hợp xuất - nhập - tồn và báo cáo biến động công nợ theo tháng/năm.
  • Màn hình Thay đổi quy định: Cung cấp giao diện trực quan cho phép Quản trị viên cập nhật các ngưỡng tham số hoạt động hoặc khôi phục về mặc định.

Chương 6. Cài đặt và thử nghiệm

Chương 6 trình bày kết quả cài đặt và đánh giá mức độ hoàn thành khi kiểm thử nghiệm thu 11 chức năng phần mềm.


Thiết kế và triển khai

Hệ thống được hiện thực hóa dựa trên nền tảng công nghệ Microsoft .NET (ngôn ngữ lập trình C#) và hệ quản trị cơ sở dữ liệu Microsoft SQL Server:

  • Kiến trúc xử lý dữ liệu và nghiệp vụ: Giao diện người dùng trên Client đảm nhiệm việc thu thập dữ liệu đầu vào và kiểm tra sơ bộ định dạng. Các quy tắc nghiệp vụ phức tạp (ràng buộc tồn kho, kiểm tra công nợ, tính toán đơn giá bán tự động $105%$) được phối hợp kiểm soát giữa mã xử lý logic giao diện và các ràng buộc dữ liệu tại Server.
  • Bảo đảm tính toàn vẹn và tiến hóa: Hệ thống sử dụng bảng THAMSO như một cấu hình tập trung. Khi người quản trị thay đổi lượng nhập tối thiểu hay tiền nợ tối đa qua màn hình "Thay đổi quy định", các module lập phiếu nhập và lập hóa đơn sẽ tự động truy vấn giá trị mới từ bảng này để thực hiện phép so sánh kiểm tra, loại bỏ việc gắn cứng (hard-code) hằng số trong mã nguồn.

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

Kết quả thử nghiệm chức năng

Kết quả thử nghiệm thực tế trên hệ thống được nhóm tác giả tổng hợp chi tiết theo mức độ hoàn thành chức năng:

STT Chức năng kiểm thử Mức độ hoàn thành Ghi chú đánh giá
1 Lập phiếu nhập sách $100%$ Kiểm tra đúng quy định $QĐ_1$
2 Lập hóa đơn bán sách $100%$ Kiểm tra đúng quy định $QĐ_2$
3 Tra cứu sách $100%$ Tìm kiếm chính xác theo nhiều tiêu chí
4 Lập phiếu thu tiền $100%$ Kiểm tra đúng quy định số tiền thu $\le$ số tiền nợ ($QĐ_4$)
5 Lập báo cáo tháng $90%$ Cuối tháng người dùng phải bấm nút lập thủ công, chưa tự động kích hoạt theo lịch
6 Thay đổi quy định $100%$ Cập nhật và lưu trữ tức thời vào bảng tham số
7 Thêm, cập nhật sách $100%$ Hoàn thành
8 Tra cứu, cập nhật khách hàng $100%$ Hoàn thành
9 Thêm, cập nhật thể loại $100%$ Hoàn thành
10 Đăng nhập hệ thống $100%$ Xác thực tài khoản thành công
11 Thêm, xóa, cập nhật tài khoản $100%$ Hoàn thành phân quyền quản trị

Đóng góp chính của đồ án

  1. Về mặt kỹ thuật phần mềm: Đồ án xây dựng hoàn chỉnh quy trình kỹ nghệ phần mềm từ khâu tiếp nhận yêu cầu, phân loại chi tiết yêu cầu hệ thống/chất lượng, lập bảng trách nhiệm, vẽ sơ đồ DFD đến thiết kế dữ liệu hướng tiến hóa và thiết kế chi tiết biến cố giao diện.
  2. Về mặt ứng dụng thực tiễn: Tạo ra một phần mềm quản lý nhà sách có khả năng ứng dụng thực tế, giao diện trực quan, thao tác nhanh gọn, kiểm soát chặt chẽ thất thoát hàng hóa và rủi ro công nợ thông qua hệ thống quy chuẩn tham số linh hoạt.

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

  • Hạn chế được ghi nhận trong văn bản:
    • Chức năng lập báo cáo thống kê định kỳ hàng tháng mới đạt mức độ hoàn thành $90%$ do hệ thống chưa có tiến trình tự động tổng hợp ngầm vào cuối tháng mà vẫn phụ thuộc vào thao tác kích hoạt thủ công của người dùng.
    • Một số chức năng mở rộng nâng cao chưa được khảo sát và hiện thực hóa do giới hạn về thời gian và kinh nghiệm của nhóm sinh viên thực hiện.
  • Hướng phát triển tiếp theo:
    • Tiếp tục tối ưu hóa mã nguồn C# và hoàn thiện giao diện ứng dụng để nâng cao trải nghiệm người dùng.
    • Chuyển đổi kiến trúc ứng dụng từ dạng ứng dụng Desktop (Client-Server nội bộ) sang nền tảng ứng dụng Web (Web-based Application) nhằm tăng tính tiện lợi và khả năng truy cập từ xa.
    • Xây dựng thêm module tự động sao lưu và phục hồi dữ liệu (Backup & Restore), đồng thời tích hợp giải pháp đồng bộ và lưu trữ dữ liệu an toàn trên nền tảng điện toán đám mây (Cloud Storage).

Giá trị tham khảo

Đồ án là tài liệu tham khảo trực quan, hữu ích cho:

  • Sinh viên các ngành Công nghệ thông tin, Kỹ thuật phần mềm, Hệ thống thông tin: Đặc biệt là sinh viên đang thực hiện đồ án môn học Phân tích thiết kế hệ thống thông tin hoặc Nhập môn Công nghệ phần mềm. Tài liệu cung cấp mẫu chuẩn về phương pháp thiết kế dữ liệu theo tính đúng đắn - tiến hóa và cách thức đặc tả biến cố giao diện chi tiết.
  • Lập trình viên phát triển ứng dụng quản lý bán hàng: Tham khảo cấu trúc cơ sở dữ liệu quan hệ chuẩn mực cho bài toán quản lý danh mục sách nhiều tác giả, kiểm soát công nợ khách hàng và cơ chế tham số hóa các quy định kinh doanh linh hoạt.

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

1. Quy định nhập sách ($QĐ_1$) được hệ thống kiểm soát bằng những điều kiện nào?
Khi lập phiếu nhập sách, phần mềm kiểm tra 2 điều kiện bắt buộc: số lượng nhập của mỗi đầu sách phải lớn hơn hoặc bằng lượng nhập tối thiểu (mặc định là 150 cuốn) và số lượng tồn hiện tại của đầu sách đó trong kho phải nhỏ hơn lượng tồn tối đa cho phép nhập (mặc định là dưới 300 cuốn).

2. Công thức tính đơn giá bán sách và điều kiện ràng buộc khi bán sách ($QĐ_2$) là gì?
Hệ thống chỉ cho phép bán sách khi khách hàng có tổng nợ không vượt quá mức nợ tối đa (mặc định không quá 20.000 VNĐ) và lượng tồn của cuốn sách sau khi trừ số lượng bán phải còn ít nhất bằng ngưỡng tồn tối thiểu (mặc định là 20 cuốn). Đơn giá bán được tự động tính bằng $105%$ đơn giá nhập của cuốn sách đó.

3. Làm thế nào hệ thống đáp ứng được yêu cầu "tiến hóa" khi nhà sách muốn thay đổi quy định kinh doanh?
Hệ thống thiết kế riêng bảng THAMSO để lưu trữ các giá trị cấu hình (SoLuongNhapToiThieu, SoLuongTonToiDa, SoTienNoToiDa, TonToiThieuSauBan, TiLeTinhDonGiaBan, SuDungQuiDinh). Khi người quản trị thay đổi các tham số này thông qua màn hình "Thay đổi quy định", phần mềm sẽ tự động áp dụng các ngưỡng mới vào các thuật toán kiểm tra mà không cần chỉnh sửa mã nguồn hay cấu trúc bảng dữ liệu.

4. Vì sao chức năng "Lập báo cáo tháng" chỉ đạt mức độ hoàn thành $90%$ trong đợt thử nghiệm?
Chức năng này đạt $90%$ do hệ thống chưa hỗ trợ cơ chế lập lịch tự động tổng hợp số liệu tồn kho và công nợ vào ngày cuối tháng, người dùng vẫn phải thao tác thủ công bằng cách nhập tháng/năm và nhấn nút lệnh trên giao diện để kết xuất báo cáo.


Kết luận

Báo cáo đồ án "Quản lý nhà sách" của nhóm tác giả tại Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM đã hoàn thành xuất sắc các mục tiêu thiết kế và xây dựng một hệ thống phần mềm quản lý bán lẻ hoàn chỉnh. Thông qua phương pháp luận kỹ nghệ phần mềm chặt chẽ, đồ án đã giải quyết thấu đáo bài toán quản lý kho sách, bán hàng, kiểm soát công nợ và báo cáo thống kê với độ tin cậy cao. Cấu trúc dữ liệu có tính tiến hóa linh hoạt cùng kết quả kiểm thử đạt $100%$ ở hầu hết các chức năng trọng yếu khẳng định giá trị ứng dụng thực tiễn và tính chuẩn mực học thuật của đề tài.