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

Báo cáo đồ án môn học "Nhập môn Công nghệ phần mềm" với đề tài "Quản lý nhà sách" được thực hiện bởi nhóm sinh viên Khoa Công nghệ Phần mềm thuộc Trường Đại học Công nghệ Thông tin – Đại học Quốc gia Thành phố Hồ Chí Minh, dưới sự hướng dẫn của giảng viên Huỳnh Ngọc Tín (tháng 07/2021).

Đề tài xuất phát từ việc khảo sát thực tế hoạt động kinh doanh tại Nhà sách Thắng Lợi – một cơ sở chuyên phân phối các ấn phẩm dành cho học sinh, sinh viên, truyện đọc và sách tham khảo. Hiện trạng quản lý tại cơ sở này bộc lộ nhiều điểm nghẽn trong vận hành:

  • Nhà sách đang sử dụng phần mềm bảng tính Microsoft Excel để quản trị danh mục sách, tạo mới, cập nhật và quản lý đơn hàng thông qua mạng Internet.
  • Sau khi tiếp nhận đơn hàng, nhân viên phải trực tiếp kiểm tra kho thủ công, lấy sách từ nguồn bên ngoài và bàn giao cho khách.
  • Toàn bộ quy trình phụ thuộc vào thao tác nhập tay, dẫn đến tình trạng không thể bao quát toàn bộ danh mục hàng hóa, khó theo dõi biến động giá cả, không nắm bắt kịp thời thông tin chi tiết của từng đầu sách để tư vấn khách hàng, đồng thời việc truy xuất dữ liệu báo cáo diễn ra chậm chạp và dễ sai sót.

Về hạ tầng công nghệ thông tin tại thời điểm khảo sát, nhà sách sở hữu 03 máy tính cá nhân, có kết nối mạng Internet qua đường truyền ADSL, và đội ngũ nhân viên có trình độ tin học tương đương chứng chỉ A, nắm được các thao tác sử dụng Internet cơ bản.

Mục tiêu nghiên cứu và xây dựng hệ thống gồm 4 nhiệm vụ trọng tâm:

  1. Xây dựng một chương trình quản lý tự động hóa nhằm giảm thiểu các thao tác thủ công.
  2. Cung cấp khả năng hiển thị và tra cứu toàn bộ thông tin về đầu sách một cách nhanh chóng và chính xác.
  3. Hỗ trợ theo dõi chính xác đơn giá và số lượng tồn kho thực tế của từng đầu sách.
  4. Quản lý chặt chẽ các giao dịch mua bán, xuất nhập kho, thu tiền và công nợ khách hàng.

Phạm vi nghiên cứu tập trung vào quy trình vận hành nội bộ của Nhà sách Thắng Lợi tại Thành phố Hồ Chí Minh, thực hiện trong học kỳ từ tháng 03/2021 đến tháng 05/2021 và hoàn thiện báo cáo vào tháng 07/2021.


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

Đồ án tiếp cận quy trình xây dựng phần mềm thông qua các cơ sở lý thuyết và phương pháp chuẩn trong kỹ nghệ phần mềm:

  • Khung lý thuyết về quy trình phát triển phần mềm: Nhóm tác giả tổng hợp và tìm hiểu các mô hình quy trình chuẩn trong công nghiệp phần mềm bao gồm CMM (Capability Maturity Model), Prototyping (Mô hình tạo mẫu), RAD (Rapid Application Development) và RUP (Rational Unified Process).
  • Phương pháp thu thập và phân tích yêu cầu: Thực hiện khảo sát hiện trạng tại điểm bán, phỏng vấn nhân viên quản lý và bán hàng, phân tích tài liệu biểu mẫu thực tế (phiếu nhập, hóa đơn, phiếu thu, báo cáo).
  • Phương pháp mô hình hóa và thiết kế: Sử dụng kỹ thuật phân tích luồng dữ liệu (Data Flow Diagram – DFD) để mô hình hóa các luồng thông tin nghiệp vụ; áp dụng nguyên lý thiết kế cơ sở dữ liệu quan hệ bảo đảm hai tiêu chí kỹ thuật: tính đúng đắn (correctness) và tính tiến hóa (evolvability/flexibility) thông qua việc tham số hóa các quy định nghiệp vụ.
  • Môi trường và công cụ hỗ trợ phát triển:
    • Giai đoạn lập kế hoạch và theo dõi: Microsoft Teams, Microsoft Word.
    • Giai đoạn xây dựng phương án: Microsoft Word.
    • Giai đoạn cài đặt và biên dịch: Visual Studio, Visual Studio Code.
    • Giai đoạn kiểm chứng và phát hiện lỗi: WinRunner.
    • Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server.

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

Phần I. Khảo sát hiện trạng và thu thập yêu cầu

Nội dung phần này tập trung phân tích thực trạng tổ chức và vận hành tại Nhà sách Thắng Lợi. Tác giả chỉ rõ mô hình kinh doanh các dòng sách giáo khoa, sách tham khảo và truyện đọc. Quy trình vận hành thủ công bằng Microsoft Excel gây ra sự thiếu đồng bộ giữa bộ phận kho và bán hàng. Khách hàng và nhà quản lý đặt ra yêu cầu phải có phần mềm chuyên biệt, tận dụng hạ tầng sẵn có (03 máy tính, mạng ADSL) để số hóa nghiệp vụ quản lý kho, theo dõi công nợ, lập hóa đơn và xuất báo cáo định kỳ.

Phần II. Quy trình phát triển đồ án nhóm

Phần này mô tả cơ chế phân công nhiệm vụ và tiến độ triển khai của nhóm 4 thành viên (Nguyễn Hữu Thắng, Nguyễn Quang Thái, Trần Dương Thùy Ngân, Trần Việt Hoàng) từ ngày 01/03/2021 đến ngày 25/05/2021:

STT Nội dung công việc Thời hạn hoàn thành Phân công
1 Thành lập nhóm, thống nhất đề tài, thiết lập quy tắc hoạt động 01/03/2021 Cả nhóm
2 Tìm hiểu các quy trình chuẩn (cơ sở lý thuyết, phân loại) 10/03/2021 Cả nhóm
3 Bài tập nhóm 1: Thu thập tài liệu quy trình phát triển phần mềm 15/03/2021 – 25/03/2021 Cả nhóm
4 Bài tập nhóm 2: Khảo sát các công cụ hỗ trợ triển khai 12/05/2021 – 20/05/2021 Cả nhóm
5 Bài tập nhóm 3: Thiết kế mô hình dữ liệu 13/05/2021 – 23/05/2021 Cả nhóm
6 Tổng kết bài học kinh nghiệm, kết luận và hoàn thiện báo cáo 25/05/2021 Cả nhóm

Phần III. Sơ đồ luồng dữ liệu và quy định nghiệp vụ

Nhóm tác giả đặc tả 6 luồng dữ liệu nghiệp vụ chính cùng biểu mẫu và thuật toán tương ứng:

  1. Lập phiếu nhập sách (Biểu mẫu BM1):

    • Quy định QĐ1: Số lượng sách nhập mỗi lần ít nhất là 150 cuốn; chỉ tiếp nhận nhập các đầu sách có lượng tồn kho trước khi nhập dưới 300 cuốn.
    • Thuật toán xử lý: Nhận dữ liệu đầu vào D1 (ngày nhập, danh sách sách, thể loại, tác giả, số lượng, đơn giá) -> Đọc dữ liệu D3 (số lượng nhập tối thiểu, số lượng tồn hiện tại, số lượng tồn quy định) -> Kiểm tra điều kiện ràng buộc QĐ1 -> Nếu thỏa mãn, cập nhật tồn kho mới = tồn kho cũ + số lượng nhập (D4) -> Lưu trữ vào bộ nhớ phụ và xuất phiếu in (D5).
  2. Lập hóa đơn bán sách (Biểu mẫu BM2):

    • Quy định QĐ2: Chỉ bán hàng cho khách hàng có tiền nợ không vượt 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 = 105% x Đơn giá nhập.
    • Thuật toán xử lý: Nhận D1 (khách hàng, ngày lập, chi tiết sách bán) -> Đọc D3 (tiền nợ cũ, nợ quy định, tồn hiện tại, tồn sau bán quy định) -> Kiểm tra nợ cũ của khách và kiểm tra tồn kho sau khi trừ lượng bán -> Tính tổng tiền = số lượng x đơn giá -> Cập nhật nợ khách hàng = nợ cũ + tổng tiền hóa đơn -> Lưu dữ liệu D4 và xuất hóa đơn D5.
  3. Lập danh sách sách (Biểu mẫu BM3):

    • Xử lý: Nhận danh sách đầu sách D1 -> Lưu trữ xuống bộ nhớ phụ -> Xuất thông tin hiển thị ra màn hình hoặc gửi tới máy in.
  4. Lập phiếu thu tiền (Biểu mẫu BM4):

    • Quy định QĐ4: Số tiền thu không được vượt quá số tiền khách hàng đang nợ.
    • Thuật toán xử lý: Nhận thông tin D1 (khách hàng, địa chỉ, điện thoại, email, ngày thu, số tiền thu) -> Đọc nợ hiện tại D3 -> Kiểm tra số tiền thu <= nợ hiện tại -> Tính nợ mới = nợ cũ - số tiền thu -> Lưu dữ liệu D4 và in phiếu thu.
  5. Lập báo cáo tháng (Biểu mẫu BM5.1 và BM5.2):

    • Báo cáo tồn (BM5.1): Nhận tháng D1 -> Đọc dữ liệu sách D3 (tồn đầu, phát sinh, tồn cuối) -> Lưu và xuất báo cáo D5/D6.
    • Báo cáo công nợ (BM5.2): Nhận tháng D1 -> Đọc dữ liệu khách hàng D3 (nợ đầu, phát sinh, nợ cuối) -> Lưu và xuất báo cáo D5/D6.
  6. Thay đổi quy định (Quy định QĐ6):

    • Cho phép người dùng linh hoạt điều chỉnh các giá trị tham số hệ thống: số lượng nhập tối thiểu, lượng tồn tối đa trước khi nhập (QĐ1), tiền nợ tối đa, lượng tồn tối thiểu sau khi bán (QĐ2), và tùy chọn kích hoạt hoặc không kích hoạt quy định thu tiền (QĐ4).

Thiết kế và triển khai hệ thống

Kiến trúc hệ thống

Hệ thống được thiết kế theo mô hình Client – Server (dạng Thin-Client) với sự phân tách hai tầng:

  • Lớp Client (Giao diện người dùng): Thực hiện kết nối tới cơ sở dữ liệu, hiển thị giao diện tương tác, tiếp nhận dữ liệu đầu vào và hiển thị dữ liệu xuất ra tùy theo phân quyền truy cập của người dùng; đồng thời gửi cảnh báo khi phát sinh lỗi thao tác hoặc vi phạm ràng buộc.
  • Lớp Server (Hệ quản trị CSDL): Sử dụng Microsoft SQL Server làm nền tảng quản trị và lưu trữ toàn bộ dữ liệu hệ thống, chịu trách nhiệm thực thi các truy vấn, kiểm tra tính toàn vẹn của các ràng buộc nghiệp vụ khi nhận yêu cầu từ tầng Client.

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

Hệ thống được chuẩn hóa dữ liệu thành 10 bảng (Table) đảm bảo tính toàn vẹn và khả năng mở rộng:

Tên bảng Tên thuộc tính Kiểu dữ liệu Diễn giải chức năng
PHIEUNHAP MaPhieuNhap char(8) Mã số phiếu nhập sách (Khóa chính)
NgayNhap datetime Thời điểm lập phiếu nhập
CHITIETPHIEUNHAP MaChiTietPhieuNhap char(8) Mã số chi tiết phiếu nhập
MaPhieuNhap char(8) Mã phiếu nhập liên kết
MaSach char(10) Mã số đầu sách nhập
SoLuongNhap int Số lượng sách nhập
DonGiaNhap int Đơn giá nhập của sách
SACH MaSach char(8) Mã định danh đầu sách
TenSach char(80) Tên đầu sách
TheLoai char(30) Thể loại sách
TacGia char(80) Tên tác giả
SoLuongTon int Số lượng sách hiện còn tồn kho
DonGia float Đơn giá sách
THAMSO SoLuongNhapItNhat int Số lượng nhập tối thiểu (mặc định 150)
SoLuongTonToiDaTruocNhap int Số lượng tồn tối đa trước khi cho phép nhập (mặc định 300)
SoTienNoToiDa int Mức nợ tối đa cho phép mua tiếp (mặc định 20.000)
SoLuongTonSauToiThieu float Lượng tồn tối thiểu sau khi bán (mặc định 20)
QuyDinh bool Cờ xác định có áp dụng quy định QĐ4 hay không
DonGiaBanYeuCau int Tỷ lệ đơn giá bán so với đơn giá nhập (105%)
PHIEUHOADON MaPhieuHoaDon char(8) Mã số phiếu hóa đơn bán hàng
NgayLapHoaDon datetime Thời điểm lập hóa đơn
MaKhachHang char(8) Mã khách hàng mua sách
CHITIETPHIEUHOADON MaChiTietPhieuHoaDon char(8) Mã chi tiết hóa đơn
MaPhieuHoaDon char(8) Mã phiếu hóa đơn liên kết
MaSach char(8) Mã đầu sách bán
SoLuongBan int Số lượng sách bán
KHACHHANG MaKhachHang char(8) Mã số khách hàng
HoTenKhachHang char(80) Họ và tên khách hàng
DiaChi char(100) Địa chỉ khách hàng
DienThoai char(20) Số điện thoại liên hệ
Email char(30) Thư điện tử
SoTienNo float Tổng số tiền khách hàng đang nợ nhà sách
PHIEUTHUTIEN MaPhieuThu char(8) Mã số phiếu thu tiền
MaKhachHang char(8) Mã khách hàng nộp tiền
NgayThuTien datetime Ngày thực hiện thu tiền
SoTienThu float Số tiền thực thu
BAOCAOTON MaChiTietTon char(8) Mã chi tiết báo cáo tồn
Thang int Tháng thực hiện báo cáo
MaSach char(8) Mã đầu sách thống kê
TonDau int Lượng sách tồn kho đầu kỳ
TonPhatSinh int Lượng sách phát sinh trong kỳ (âm hoặc dương)
TonCuoi int Lượng sách tồn kho cuối kỳ
BAOCAOCONGNO MaChiTietCongNo char(8) Mã chi tiết báo cáo công nợ
Thang int Tháng thực hiện báo cáo
MaKhachHang char(8) Mã khách hàng thống kê nợ
NoDau float Số tiền nợ đầu kỳ
NoPhatSinh float Số tiền nợ phát sinh trong kỳ
NoCuoi float Số tiền nợ cuối kỳ

Thiết kế giao diện và xử lý

Hệ thống bố trí 6 nhóm màn hình chính với cấu trúc điều hướng rõ ràng:

  1. Màn hình Đăng nhập: Tiếp nhận thông tin tài khoản và mật khẩu của người dùng.
  2. Màn hình Điều khiển: Trung tâm điều hướng, liên kết đến chức năng lập phiếu nhập, hóa đơn, phiếu thu.
  3. Màn hình Sách: Gồm các phân hệ con: Thêm sách mới, Cập nhật thông tin sách, Xóa đầu sách, Tra cứu sách.
  4. Màn hình Khách hàng: Gồm các phân hệ con: Thêm khách hàng, Cập nhật thông tin, Xóa khách hàng, Tìm kiếm khách hàng.
  5. Màn hình Báo cáo: Hiển thị trực quan hai mẫu báo cáo định kỳ là Báo cáo tồn và Báo cáo công nợ.
  6. Màn hình Thay đổi quy định: Cho phép cập nhật lại các tham số trong bảng THAMSO.

Chi tiết xử lý nghiệp vụ trên màn hình Phiếu nhập sách được phân rã thành các module xử lý tuần tự:

  • XL 1: Tự động lấy ngày giờ của hệ thống khi mở form.
  • XL 2: Đọc giá trị số lượng nhập ít nhất từ bảng THAMSO.
  • XL 3: Đọc giá trị số lượng tồn tối đa trước khi nhập từ bảng THAMSO.
  • XL 4: Thực hiện tìm kiếm và nạp thông tin đầu sách theo mã sách.
  • XL 5: Nhập mã sách và số lượng nhập vào danh sách chi tiết.
  • XL 6: Kiểm tra toàn bộ ràng buộc, lưu thông tin phiếu nhập và cập nhật số lượng tồn vào cơ sở dữ liệu.
  • XL 7: Xóa dữ liệu vừa nhập trên form để tạo lượt nhập mới.
  • XL 8: Đóng form và trở về màn hình điều khiển.

Quy chuẩn viết mã nguồn đồ án

Tài liệu xác lập rõ các nguyên tắc chuẩn hóa mã nguồn cho nhóm phát triển:

  • Quy định tên file và thư mục: Phân chia rõ ràng cấu trúc project, tách biệt các tầng xử lý.
  • Quy định đặt tên (Naming Convention): Thống nhất cách đặt tên biến, tên hàm, tên lớp theo quy chuẩn lập trình rõ ràng.
  • Quy ước viết câu lệnh và định dạng: Thụt đầu dòng, khoảng cách dòng đồng nhất, bắt buộc viết chú thích (comment) diễn giải ý nghĩa cho các khối hàm và xử lý phức tạp.

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

Kết quả chính

  • Hoàn thành đầy đủ hồ sơ phân tích và thiết kế hệ thống thông tin quản lý nhà sách với đầy đủ 6 phân hệ nghiệp vụ cốt lõi: Quản lý nhập sách, Bán hàng - xuất hóa đơn, Quản lý thông tin đầu sách, Thu tiền và theo dõi công nợ, Báo cáo thống kê hàng tháng, Quản trị tham số hệ thống.
  • Xây dựng sơ đồ luồng dữ liệu (DFD) chi tiết kèm thuật toán xử lý từng bước cho từng nghiệp vụ, mô tả rõ các tập dữ liệu truyền nhận (D1, D3, D4, D5, D6).
  • Chuẩn hóa mô hình dữ liệu quan hệ gồm 10 thực thể với đầy đủ ràng buộc khóa chính, khóa ngoại và kiểu dữ liệu phù hợp với hệ quản trị Microsoft SQL Server.

Đóng góp thực tiễn và giải pháp đề xuất

  • Đề xuất giải pháp tách biệt các quy định nghiệp vụ (số lượng nhập tối thiểu, tồn kho tối đa/tối thiểu, mức nợ tối đa) ra khỏi mã nguồn cứng bằng cách đưa vào bảng THAMSO. Giải pháp này giúp phần mềm có khả năng thích ứng linh hoạt khi nhà sách thay đổi chính sách kinh doanh mà không cần phải can thiệp sửa đổi cấu trúc chương trình.
  • Thiết kế hệ thống kiểm soát công nợ tự động ngay tại khâu lập hóa đơn và thu tiền, ngăn ngừa rủi ro phát sinh nợ xấu vượt mức cho phép (20.000 VNĐ theo tham số hiện tại).

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

  • Hạn chế:
    • Nghiên cứu chỉ dừng lại ở phạm vi thiết kế và đặc tả kỹ thuật cho một cơ sở đơn lẻ (Nhà sách Thắng Lợi) với quy mô nhỏ (03 máy tính cá nhân, mạng ADSL).
    • Báo cáo đồ án môn học mới hoàn thiện ở mức độ phân tích thiết kế logic, thiết kế dữ liệu và thiết kế xử lý màn hình; chưa ghi nhận số liệu triển khai thực tế hay các chỉ số đo lường hiệu năng chịu tải dài hạn của hệ thống.
  • Hướng phát triển tiếp theo:
    • Tiến hành cài đặt và biên dịch mã nguồn hoàn chỉnh trên nền tảng Visual Studio / Visual Studio Code.
    • Áp dụng công cụ WinRunner để thực hiện kiểm thử tự động, kiểm chứng quy trình và phát hiện lỗi phần mềm.
    • Mở rộng khảo sát thực tế tại các công ty và chuỗi nhà sách lớn trên địa bàn Thành phố Hồ Chí Minh để đánh giá khả năng mở rộng của mô hình sang kiến trúc đa điểm bán.

Giá trị tham khảo

Báo cáo đồ án là tài liệu tham khảo phù hợp cho:

  • Sinh viên ngành Công nghệ thông tin, Công nghệ phần mềm, Hệ thống thông tin: Làm mẫu tham khảo chuẩn mực về cấu trúc và phương pháp làm bài tập lớn, đồ án kết thúc môn "Nhập môn Công nghệ phần mềm".
  • Người học cần tìm hiểu phương pháp phân tích thiết kế hướng cấu trúc: Tham khảo cách xây dựng sơ đồ luồng dữ liệu (DFD), cách phân rã thuật toán xử lý nghiệp vụ, cách chuyển đổi từ biểu mẫu thực tế sang mô hình dữ liệu quan hệ.
  • Lập trình viên xây dựng phần mềm quản lý bán hàng: Tham khảo mô hình thiết kế bảng tham số THAMSO để xử lý bài toán "tính tiến hóa" trong công nghệ phần mềm.

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

1. Những quy định nghiệp vụ nào được ràng buộc khi lập phiếu nhập sách?
Theo quy định QĐ1, mỗi lần lập phiếu nhập, số lượng sách nhập ít nhất phải đạt từ 150 cuốn trở lên. Đồng thời, hệ thống chỉ cho phép nhập thêm đối với những đầu sách đang có lượng tồn kho dưới 300 cuốn.

2. Điều kiện để hệ thống cho phép xuất hóa đơn bán sách cho khách hàng là gì?
Theo quy định QĐ2, hệ thống chỉ cho phép xuất hóa đơn nếu khách hàng có số tiền nợ cũ không vượt quá 20.000 VNĐ và số lượng tồn kho của đầu sách sau khi bán phải còn lại tối thiểu là 20 cuốn. Đơn giá bán được tính bằng 105% đơn giá nhập.

3. Bảng THAMSO trong cơ sở dữ liệu đóng vai trò gì?
Bảng THAMSO lưu trữ các tham số nghiệp vụ cấu hình linh hoạt gồm: SoLuongNhapItNhat, SoLuongTonToiDaTruocNhap, SoTienNoToiDa, SoLuongTonSauToiThieu, QuyDinh (cờ bật/tắt ràng buộc thu tiền), và DonGiaBanYeuCau. Thiết kế này đảm bảo "tính tiến hóa", cho phép thay đổi quy định kinh doanh mà không cần cấu trúc lại cơ sở dữ liệu.

4. Nhóm tác giả sử dụng các công cụ nào trong từng giai đoạn phát triển đồ án?
Nhóm sử dụng Microsoft Teams và Microsoft Word cho giai đoạn lập kế hoạch, phân công và xây dựng phương án; sử dụng Visual Studio và Visual Studio Code cho giai đoạn cài đặt và biên dịch mã nguồn; sử dụng WinRunner cho giai đoạn kiểm chứng và phát hiện lỗi; và sử dụng Microsoft SQL Server làm hệ quản trị cơ sở dữ liệu ở tầng Server.


Kết luận

Báo cáo đồ án "Quản lý nhà sách" của nhóm sinh viên Trường Đại học Công nghệ Thông tin – ĐHQG-HCM đã phản ánh toàn diện quy trình phân tích và thiết kế một hệ thống phần mềm quản lý bán hàng theo đúng chuẩn kỹ nghệ phần mềm. Bằng việc bám sát bài toán thực tế tại Nhà sách Thắng Lợi, đồ án đã hoàn thành thiết kế kiến trúc Thin-Client Client-Server, đặc tả chi tiết 6 luồng xử lý dữ liệu và xây dựng cơ sở dữ liệu quan hệ 10 bảng bảo đảm tính toàn vẹn và tính tiến hóa. Đây là tài liệu học thuật có giá trị thực hành cao cho sinh viên ngành phần mềm trong việc nắm vững phương pháp phân tích yêu cầu và thiết kế hệ thống thông tin.