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

Trong hoạt động vận hành của các đơn vị kinh doanh thương mại nói chung và các doanh nghiệp phân phối thiết bị máy tính nói riêng, khối lượng mặt hàng linh kiện, phụ kiện và chủng loại sản phẩm thường rất lớn và biến động liên tục. Theo báo cáo nghiên cứu của nhóm tác giả thuộc Khoa Công nghệ Thông tin – Viện Đại học Mở Hà Nội, phương thức quản lý thủ công truyền thống bằng sổ sách hoặc văn bản giấy tờ bộc lộ nhiều điểm nghẽn nghiêm trọng. Việc tra cứu thông tin sản phẩm, cập nhật số lượng tồn kho, sửa đổi giá bán hoặc tổng hợp phiếu nhập - xuất hàng hóa trên giấy tờ đòi hỏi nhiều thời gian và rất dễ phát sinh sai sót trong quá trình tính toán, lưu trữ.

Nhằm khắc phục các hạn chế trên, đề tài "Xây dựng Hệ thống quản lý công ty kinh doanh thiết bị máy tính" (hay "Quản lý bán hàng của một công ty kinh doanh thiết bị máy tính") được thực hiện trong khuôn khổ môn học Lập trình hướng sự kiện dưới sự hướng dẫn của ThS. Lê Hữu Đông. Mục tiêu trọng tâm của nghiên cứu là xây dựng một ứng dụng phần mềm giao diện đồ họa trực quan, hỗ trợ người quản lý cập nhật dữ liệu nhanh chóng, tra cứu chính xác thông tin về sản phẩm, giá cả, doanh thu và đối tác.

Nhiệm vụ và mục tiêu nghiên cứu cụ thể được nhóm tác giả xác định trong văn bản bao gồm:

  1. Tìm hiểu quy trình và nghiệp vụ quản lý bán hàng máy tính, quản lý thông tin thiết bị, kho hàng, hóa đơn nhập, hóa đơn bán, khách hàng và nhà cung cấp.
  2. Tìm hiểu các công cụ, ngôn ngữ và hệ quản trị cơ sở dữ liệu hỗ trợ xây dựng chương trình ứng dụng.
  3. Phân tích, thiết kế mô hình Use Case, xây dựng sơ đồ cơ sở dữ liệu quan hệ và lập trình giao diện đồ họa tương tác.
  4. Quản lý hoạt động kinh doanh của cửa hàng trên cả phương diện tổng thể lẫn chi tiết, hướng tới hỗ trợ báo cáo, thống kê dữ liệu.

Đối tượng và khách thể nghiên cứu được xác định là hệ thống quản lý tại các cửa hàng kinh doanh thiết bị máy tính cùng các công cụ phát triển phần mềm trên nền tảng .NET. Về phạm vi nghiên cứu, đề tài giới hạn triển khai ứng dụng vào phân hệ quản lý bán hàng phù hợp với mô hình các công ty hoặc cửa hàng kinh doanh thiết bị máy tính có quy mô vừa và nhỏ.


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

Đề tài áp dụng phương pháp nghiên cứu kết hợp giữa khảo sát thực tế và triển khai kỹ thuật phần mềm:

  • Khảo sát thực tế và thu thập tài liệu: Nhóm tác giả tiến hành thu thập, tổng hợp các mẫu biểu, tài liệu liên quan đến nghiệp vụ mua bán linh kiện máy tính, quy trình nhập hàng từ nhà phân phối và quy trình xuất bán cho khách hàng.
  • Phương pháp phân tích và thiết kế hệ thống: Sử dụng mô hình hóa nghiệp vụ qua biểu đồ ca sử dụng (Use Case Diagram), mô tả chi tiết dòng sự kiện (kịch bản chính, kịch bản phụ, điều kiện tiên quyết, điều kiện bổ sung) cho từng chức năng phần mềm.
  • Khung công nghệ và nền tảng lý thuyết:
    • Nền tảng giao diện: Windows Forms (WinForms) trên ngôn ngữ lập trình C# theo mô hình lập trình hướng sự kiện (Event-Driven Programming).
    • Truy xuất dữ liệu: Công nghệ ADO.NET (thư viện System.Data.SqlClient) với các đối tượng trung gian như SqlConnection, SqlCommand, DataTable để thực thi truy vấn và gọi thủ tục lưu trữ (Stored Procedure).
    • Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server (tên cơ sở dữ liệu triển khai trong mã nguồn là QLCT_MayTinh_01), quản lý toàn bộ dữ liệu quan hệ và toàn vẹn dữ liệu.

Phân tích và thiết kế hệ thống

1. Phân tích chức năng và biểu đồ ca sử dụng (Use Case)

Hệ thống được thiết kế phục vụ một tác nhân chính (Actor) là Người quản lý (hoặc nhân viên được cấp quyền truy cập). Toàn bộ các thao tác nghiệp vụ đều yêu cầu điều kiện tiên quyết là phải đăng nhập thành công vào hệ thống.

STT Tên Use Case Tóm tắt chức năng Điều kiện tiên quyết & Bổ sung
1 Đăng nhập Xác thực tài khoản và mật khẩu người dùng trước khi vào màn hình chính. Nhập đầy đủ Tên đăng nhập và Mật khẩu; kiểm tra khớp dữ liệu trong CSDL.
2 Quản lý hàng hóa Thêm, sửa, xóa, tìm kiếm và hiển thị danh mục thiết bị, linh kiện máy tính. Đăng nhập thành công; các trường Số lượng và Giá bán bắt buộc nhập dạng số.
3 Quản lý nhóm hàng Quản lý việc phân loại các nhóm thiết bị (như CPU, RAM, ổ cứng, màn hình...). Đăng nhập thành công; nhập đầy đủ thông tin tên nhóm hàng.
4 Quản lý phiếu nhập Quản lý thông tin hóa đơn nhập và chi tiết các mặt hàng nhập từ nhà cung cấp. Nhập thông tin nhà cung cấp, ngày nhập; cho phép mở form chi tiết để thêm hàng nhập.
5 Quản lý phiếu bán Quản lý thông tin hóa đơn bán hàng cho khách và chi tiết hàng hóa xuất bán. Nhập thông tin khách hàng, số điện thoại, ngày bán, kiểm soát trạng thái đã thu tiền.

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

Cơ sở dữ liệu của phần mềm bao gồm các bảng thực thể và bảng liên kết để lưu trữ toàn bộ thông tin vận hành:

  • tblTaikhoan: Lưu trữ thông tin tài khoản người dùng (Username, Password) phục vụ xác thực bảo mật.
  • tblnhomhang: Danh mục phân loại thiết bị, bao gồm các trường chính NhomHangID, TenNhom.
  • tblHanghoa: Thông tin chi tiết về từng mặt hàng máy tính với các thuộc tính: HangHoaID, TenHang, NhomHangID, MauSac, DacTinhKyThuat, SoLuongTonKho, GiaSanPham.
  • tblNhacungcap: Quản lý đối tác phân phối thiết bị: NhaCungCapID, TenNhaCungCap, DiaChi, SoDienThoai.
  • tblKhachhang: Lưu trữ hồ sơ người mua hàng: KhachHangID, TenKhachHang, DiaChi, SoDienThoai, Email.
  • tblHoadonnhaphang & Chi tiết hàng nhập: Lưu thông tin giao dịch nhập kho (HoaDonNhapID, NhaCungCapID, NgayNhap, NguoiNhap) và danh sách mặt hàng nhập (HangHoaID, SoLuong, GiaNhap).
  • tblHoadonbanhang & Chi tiết hàng bán: Lưu thông tin giao dịch xuất kho bán lẻ (HoaDonBanID, KhachHangID, NgayBan, TongTien, DaThuTien) và chi tiết mặt hàng bán (HangHoaID, SoLuong, GiaBan, BaoHanh).

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

Phần I: Mở đầu

Trình bày tính cấp thiết của việc ứng dụng công nghệ thông tin vào quản trị bán hàng máy tính; xác định rõ tên đề tài, khách thể, đối tượng, phạm vi, nhiệm vụ nghiên cứu, phương pháp tiếp cận và ý nghĩa thực tiễn của đề tài đối với việc tối ưu hóa quản lý bán hàng.

Phần II - Chương I: Cơ sở lý thuyết của đề tài

Tập trung làm rõ phương pháp nghiên cứu thực tiễn, quy trình thu thập tài liệu nghiệp vụ và các nền tảng kỹ thuật lập trình hướng sự kiện, kiến trúc kết nối dữ liệu ADO.NET và hệ quản trị cơ sở dữ liệu SQL Server.

Chương II: Khảo sát phân tích thiết kế hệ thống

Xây dựng mô hình nghiệp vụ tổng thể thông qua sơ đồ Use Case và bảng phân rã chức năng. Phân tích chi tiết từng kịch bản tương tác người dùng - hệ thống cho các phân hệ: Đăng nhập, Quản lý hàng hóa, Quản lý nhóm hàng, Quản lý phiếu bán hàng và Quản lý phiếu nhập hàng.

Chương III: Thiết kế cơ sở dữ liệu

Đặc tả chi tiết cấu trúc các bảng dữ liệu: Bảng Hàng Bán (Hàng Hóa), Bảng Hàng Nhập, Bảng Hóa Đơn Bán Hàng, Bảng Hóa Đơn Nhập Hàng, Bảng Khách Hàng, Bảng Nhà Cung Cấp, Bảng Nhóm Hàng và sơ đồ liên kết thực thể (Database Diagrams).

Chương VI: Thiết kế giao diện và code

Mô tả chi tiết giao diện đồ họa (Windows Forms) và các đoạn mã nguồn xử lý sự kiện tương ứng cho từng form chức năng trong ứng dụng:

  • Cấu hình lớp xử lý dữ liệu tập trung DataProvider.
  • Form Đăng nhập hệ thống (FormLogin).
  • Form Quản lý Hàng hóa và tải danh mục lên DataGridView, ComboBox.
  • Form Quản lý Nhóm hàng.
  • Form Quản lý Phiếu nhập và Form Chi tiết phiếu nhập.
  • Form Quản lý Phiếu bán và Form Chi tiết phiếu bán.

Chương V: Kết luận

Đánh giá tổng quan mức độ hoàn thành mục tiêu nghiên cứu, những kết quả đạt được của sản phẩm phần mềm và định hướng hoàn thiện chương trình trong các giai đoạn tiếp theo.


Thiết kế giao diện và triển khai mã nguồn

Trong đồ án, nhóm tác giả triển khai ứng dụng Windows Forms kết nối cơ sở dữ liệu SQL Server thông qua lớp trung gian DataProvider và xử lý giao diện hai chiều với DataGridView.

1. Module quản lý kết nối dữ liệu (DataProvider)

Lớp DataProvider đóng vai trò tầng truy cập dữ liệu (Data Access Layer), quản lý chuỗi kết nối và thực thi các câu lệnh SQL trả về bảng dữ liệu DataTable:

namespace Quanlicongtymaytinh_02
{
    class DataProvider
    {
        private string connectString = @"Data Source=DESKTOP-A7J0RIH;Initial Catalog=QLCT_MayTinh_01;Integrated Security=True";

        public DataTable execQuery(string query)
        {
            DataTable data = new DataTable();
            using (SqlConnection con = new SqlConnection(connectString))
            {
                con.Open();
                SqlCommand cmd = new SqlCommand(query, con);
                // Thực thi truy vấn và đổ dữ liệu vào DataTable
            }
            return data;
        }
    }
}

2. Xác thực người dùng (FormLogin)

Form đăng nhập thực hiện kiểm tra tính hợp lệ của tài khoản quản trị bằng cách truy vấn bảng tblTaikhoan:

private void bt1Login_Click(object sender, EventArgs e)
{
    string username = tb0TenDangNhap.Text;
    string password = tb0MatKhau.Text;
    string query = $"SELECT COUNT(1) FROM tblTaikhoan WHERE Username = N'{username}' AND Password = N'{password}'";
    object result = dataProvider.execScaler(query);
    // Nếu kết quả trả về hợp lệ thì hiển thị Form Main, ngược lại thông báo lỗi
}

3. Phân hệ Quản lý Hàng hóa và Nhóm hàng

  • Form Hàng Hóa: Dữ liệu hàng hóa được nạp lên DataGridView thông qua phương thức loadtbHangHoa(). Khi người dùng nhấp chọn một dòng trên bảng (CellClick), toàn bộ thông tin mã hàng, tên hàng, nhóm hàng, giá bán, màu sắc, số lượng, đặc điểm kỹ thuật được ánh xạ ngược lại các điều khiển TextBox và ComboBox.
  • Thực thi Stored Procedure: Thay vì viết truy vấn trực tiếp, các thao tác nghiệp vụ cập nhật và xóa được gọi thông qua các thủ tục lưu trữ:
    • Cập nhật linh kiện: Gọi EXEC sp_UpdateHanghoa kèm danh sách tham số @HangHoaID, @TenHang, @TenNhom, @MauSac, @DacTinhKyThuat, @SoLuongTonKho, @GiaSanPham.
    • Xóa linh kiện: Gọi EXEC sp_XoaSanPham @HangHoaID = ....
    • Cập nhật và xóa nhóm hàng: Gọi EXEC sp_SuaNhomHang và EXEC sp_XoaNhomHang.

4. Phân hệ Quản lý Phiếu nhập và Phiếu bán hàng

  • Quản lý Phiếu Nhập & Chi Tiết: Giao diện cho phép tạo mới phiếu nhập từ nhà cung cấp qua thủ tục EXEC AddPhieuNhap và EXEC UpdatePhieuNhap. Khi người dùng bấm nút "Chi Tiết", hệ thống khởi tạo form con FormChiTietPhieuNhap(maPhieuNhap) để quản lý chi tiết từng mặt hàng nhập, số lượng và giá nhập tương ứng với HoaDonNhapID.
  • Quản lý Phiếu Bán & Chi Tiết: Quản lý thông tin hóa đơn bán lẻ bao gồm mã hóa đơn, tên khách hàng, địa chỉ, số điện thoại, email, ngày lập, tổng tiền và trạng thái thanh toán (DaThuTien kiểm soát qua CheckBox). Khi cập nhật hóa đơn bán, hệ thống thực thi thủ tục EXEC UpdateHoaDonBan với các giá trị từ giao diện.

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

1. Kết quả đạt được

  • Xây dựng hoàn chỉnh ứng dụng Desktop chạy trên môi trường Windows Forms, đáp ứng đầy đủ các chức năng nghiệp vụ quản lý bán hàng cho cửa hàng máy tính vừa và nhỏ.
  • Chuẩn hóa cấu trúc cơ sở dữ liệu quan hệ trên Microsoft SQL Server với 8 bảng thực thể và liên kết, bảo đảm tính nhất quán dữ liệu qua khóa chính và khóa ngoại.
  • Tích hợp thành công kỹ thuật lập trình hướng sự kiện với ADO.NET, tối ưu hóa các thao tác xử lý dữ liệu thông qua Stored Procedure trong CSDL (sp_UpdateHanghoa, sp_XoaSanPham, AddPhieuNhap, UpdateChiTietPhieuNhap, UpdateHoaDonBan).

2. Đóng góp thực tiễn

  • Giúp người quản lý cửa hàng chuyển đổi mô hình quản lý từ ghi chép sổ sách thủ công sang quản trị tự động trên máy tính, giảm thiểu sai sót và rút ngắn thời gian tra cứu sản phẩm.
  • Tự động hóa quá trình tính toán tiền hàng, lưu trữ chi tiết lịch sử nhập hàng và bán hàng, hỗ trợ theo dõi công nợ/trạng thái thanh toán của khách hàng một cách minh bạch.

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

  • Hạn chế được tác giả tự nhìn nhận: Do giới hạn về thời gian và năng lực của nhóm sinh viên thực hiện, phần mềm vẫn còn một số thiếu sót trong khâu xử lý ngoại lệ dữ liệu và chưa bao quát hết các kịch bản phát sinh phức tạp tại các doanh nghiệp lớn.
  • Hạn chế về mặt dữ liệu: Một số phần biên soạn tài liệu còn tồn tại sự pha trộn thuật ngữ (như xuất hiện cụm từ nghiệp vụ "mượn trả tài liệu", "quản lý thư viện" trong phần nhiệm vụ nghiên cứu do ảnh hưởng từ mẫu cấu trúc bài báo cáo).
  • Hướng mở rộng: Tiếp tục hoàn thiện giao diện người dùng, bổ sung module báo cáo - thống kê doanh thu đa chiều, tích hợp thuật toán cảnh báo tồn kho tối thiểu và nâng cấp khả năng phân quyền đa cấp cho nhân viên.

Giá trị tham khảo

Báo cáo bài tập lớn này là tài liệu tham khảo thiết thực cho:

  • Sinh viên ngành Công nghệ thông tin / Kỹ thuật phần mềm: Cung cấp tài liệu mẫu về cách triển khai một bài tập lớn môn Lập trình hướng sự kiện hoặc môn Lập trình C#/.NET.
  • Người học cần tài liệu thực hành WinForms và ADO.NET: Tham khảo cách thiết kế tầng truy cập dữ liệu DataProvider, kỹ thuật liên kết dữ liệu giữa DataGridView với các điều khiển nhập liệu, và phương pháp gọi Stored Procedure từ C#.
  • Người phát triển ứng dụng quản lý bán hàng cơ bản: Cung cấp mô hình quan hệ CSDL và luồng xử lý chi tiết cho mô hình quản lý mua hàng - bán hàng - hàng tồn kho.

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

1. Hệ thống sử dụng những công nghệ và công cụ nào để xây dựng?
Hệ thống được phát triển bằng ngôn ngữ C# trên nền tảng Windows Forms (.NET Framework), sử dụng thư viện ADO.NET (System.Data.SqlClient) để kết nối và truy xuất cơ sở dữ liệu Microsoft SQL Server (QLCT_MayTinh_01).

2. Cơ sở dữ liệu của phần mềm gồm những bảng thông tin chính nào?
Cơ sở dữ liệu gồm các bảng: tblTaikhoan, tblHanghoa, tblnhomhang, tblKhachhang, tblNhacungcap, tblHoadonnhaphang (và chi tiết nhập hàng), tblHoadonbanhang (và chi tiết bán hàng).

3. Lớp DataProvider trong mã nguồn C# đóng vai trò gì?
DataProvider là lớp tiện ích dùng để đóng gói chuỗi kết nối (connectString) đến SQL Server và cung cấp các hàm thực thi truy vấn chung (execQuery, execScaler), giúp nạp dữ liệu vào DataTable để đổ lên các điều khiển giao diện.

4. Chức năng quản lý chi tiết hóa đơn nhập/bán được thiết kế như thế nào?
Khi người dùng chọn một hóa đơn trên DataGridView của Form Quản lý phiếu và nhấn nút "Chi Tiết", hệ thống sẽ khởi tạo một form mới (ví dụ: FormChiTietPhieuNhap), truyền mã hóa đơn tương ứng để hiển thị danh sách các mặt hàng, số lượng và đơn giá của riêng hóa đơn đó.

5. Các thao tác thêm, sửa, xóa dữ liệu trên form giao diện được xử lý bằng cách nào?
Nhóm tác giả sử dụng đối tượng StringBuilder trong C# để ghép câu lệnh thực thi các thủ tục lưu trữ (Stored Procedure) trong SQL Server (như sp_UpdateHanghoa, sp_XoaSanPham, sp_SuaNhomHang, UpdateChiTietPhieuNhap, UpdateHoaDonBan) với các tham số lấy từ TextBox, ComboBox, DateTimePicker và CheckBox.


Kết luận

Báo cáo bài tập lớn môn Lập trình hướng sự kiện của nhóm sinh viên Viện Đại học Mở Hà Nội đã hoàn thành việc khảo sát, thiết kế và xây dựng thành công phần mềm Quản lý công ty kinh doanh thiết bị máy tính trên nền tảng Windows Forms và SQL Server. Ứng dụng đã hiện thực hóa đầy đủ các luồng nghiệp vụ cơ bản từ quản lý danh mục sản phẩm, nhóm hàng cho đến quản lý phiếu nhập, phiếu bán và chi tiết hóa đơn. Mặc dù vẫn còn những điểm cần tiếp tục hoàn thiện về mặt xử lý nghiệp vụ nâng cao, đề tài là một tài liệu tham khảo trực quan và hữu ích cho sinh viên công nghệ thông tin trong việc rèn luyện kỹ năng phân tích thiết kế hệ thống và lập trình ứng dụng cơ sở dữ liệu trên nền tảng .NET.