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

Trong chương trình đào tạo ngành Công nghệ Thông tin tại Trường Đại học Tài chính – Marketing, học phần Lập trình Web (4 tín chỉ) đóng vai trò trang bị kiến thức nền tảng và kỹ năng thực hành xây dựng các ứng dụng web tương tác cơ sở dữ liệu. Đồ án học phần với đề tài "Lập trình phát triển WebApp bán đồ ăn thú cưng trực tuyến" được thực hiện bởi sinh viên Nguyễn Võ Quốc Huy dưới sự hướng dẫn của ThS. Võ Xuân Thể, nhằm giải quyết yêu cầu chuyển giao lý thuyết lập trình web vào một bài toán thương mại điện tử thực tế: số hóa quy trình kinh doanh, quản lý chuỗi cửa hàng và phân phối sản phẩm thức ăn thú cưng qua môi trường mạng.

Mục tiêu và nhiệm vụ nghiên cứu của đồ án được xác định cụ thể:

  1. Nghiên cứu và vận dụng công nghệ lập trình web ASP.NET kết hợp hệ quản trị cơ sở dữ liệu Microsoft SQL Server để xây dựng một ứng dụng web hoàn chỉnh theo mô hình một lớp.
  2. Phân tích và thiết kế mô hình dữ liệu quan hệ phục vụ hoạt động bán lẻ đa cửa hàng theo khu vực địa lý, bảo đảm tính toàn vẹn dữ liệu thông qua hệ thống khóa chính, khóa ngoại, ràng buộc toàn vẹn (RBTV), Stored Procedures và Triggers.
  3. Hiện thực hóa phân hệ giao dịch dành cho khách hàng với các chức năng duyệt danh mục sản phẩm, quản lý giỏ hàng qua phiên làm việc (Session) và tạo lập đơn đặt hàng trực tuyến.
  4. Xây dựng phân hệ quản trị hệ thống với đầy đủ các thao tác Thêm, Xóa, Sửa (CRUD), kiểm soát ràng buộc toàn vẹn dữ liệu đa tầng bằng các bảng dữ liệu phụ (GridView), và chức năng chuyển nhóm danh mục sản phẩm.
  5. Triển khai và phát hành thực nghiệm ứng dụng trên môi trường mạng máy tính cục bộ (Localhost) và máy chủ Internet (Web Host miễn phí Somee).

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

  • Đối tượng nghiên cứu: Quy trình xử lý dữ liệu giao dịch thương mại điện tử và quy trình quản trị chuỗi bán lẻ đồ ăn thú cưng.
  • Phạm vi không gian và công nghệ: Hệ thống ứng dụng web viết bằng C#.NET trên nền ASP.NET (.NET Framework 4.2), quản trị cơ sở dữ liệu trên MS SQL Server (2014/2019), triển khai cục bộ và trên dịch vụ lưu trữ web somee.com.
  • Phạm vi thời gian: Đồ án được triển khai thực hiện từ ngày 30/08/2021 đến ngày 26/11/2021 và hoàn thành nghiệm thu vào ngày 03/12/2021.

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

Khung lý thuyết và nền tảng kỹ thuật được tác giả sử dụng trong công trình bao gồm:

  • Công nghệ nền tảng: Microsoft ASP.NET Web Forms (.NET Framework 4.2) sử dụng môi trường phát triển tích hợp Microsoft Visual Studio 2019 và ngôn ngữ lập trình C#.NET.
  • Truy xuất và quản trị dữ liệu: Công nghệ ADO.NET làm cầu nối trung gian thực hiện các thao tác vấn tin, cập nhật dữ liệu với Hệ quản trị cơ sở dữ liệu MS SQL Server 2014/2019 thông qua ngôn ngữ SQL có cấu trúc.
  • Kỹ thuật thiết kế giao diện: Ứng dụng mô hình Master Page nhằm chuẩn hóa giao diện chung cho toàn bộ website, kết hợp các thành phần điều khiển máy chủ (Server Controls) như DataList (trưng bày hàng hóa danh mục) và GridView (quản trị bảng dữ liệu, chỉnh sửa, kiểm soát RBTV).
  • Cơ chế lưu trữ trạng thái: Sử dụng đối tượng Session State để lưu trữ dữ liệu giỏ hàng tạm thời của khách hàng trong suốt phiên truy cập.
  • Lý thuyết ràng buộc toàn vẹn dữ liệu (RBTV): Thiết lập các quy tắc toàn vẹn tham chiếu giữa các thực thể phụ thuộc nhằm ngăn chặn hiện tượng mất đồng bộ dữ liệu khi thực hiện thao tác xóa/sửa trên cơ sở dữ liệu quan hệ.
  • Tổng quan lý thuyết mở rộng: Giới thiệu nguyên lý lập trình WebApp trên nền tảng ngôn ngữ PHP.

Phương pháp nghiên cứu và phát triển hệ thống được áp dụng:

  • Phương pháp phân tích - thiết kế hệ thống: Khảo sát các yêu cầu thực tiễn của quy trình phân phối sản phẩm thức ăn thú cưng, phân tích cấu trúc thực thể, xác định mối quan hệ 1-n và n-n để xây dựng sơ đồ quan hệ thực thể (Database Diagram).
  • Phương pháp phát triển phần mềm hướng sự kiện (Event-Driven Programming): Lập trình xử lý các sự kiện giao diện (Button click, GridView RowCommand, SelectedIndexChanged) kết hợp với các tham số SQL Parameter để tương tác cơ sở dữ liệu an toàn.
  • Phương pháp thực nghiệm và triển khai: Cấu hình nguồn dữ liệu kết nối chuỗi (Connection String) trên môi trường cục bộ (SQLEXPRESS), sau đó sao lưu - phục hồi cơ sở dữ liệu (Backup/Restore) và tải mã nguồn (Source Code) lên máy chủ Somee để kiểm thử chức năng vận hành trực tuyến.

Thiết kế và triển khai

Kiến trúc cơ sở dữ liệu

Hệ thống cơ sở dữ liệu 1G308NVQHDoAnThuCungOnline được thiết kế gồm 10 bảng dữ liệu chính, đáp ứng đầy đủ các mối quan hệ giữa nhà sản xuất, loại đồ ăn, sản phẩm, cửa hàng, khu vực, nhân viên, khách hàng và đơn hàng:

Tên bảng (Table) Khóa chính (PK) Khóa ngoại (FK) Mô tả chức năng
KhuVuc mskv Không Quản lý danh mục khu vực địa lý phân phối
LoaiDoAn msloai Không Phân loại các nhóm thức ăn dành cho thú cưng
NhaSanXuat msnsx Không Lưu trữ thông tin đối tác, nhà cung cấp sản phẩm
CuaHang msch mskv Quản lý thông tin chuỗi cửa hàng theo từng khu vực
NhanVien msnv mskv Quản lý nhân sự phụ trách tiếp nhận và xử lý đơn
KhachHang mskh Không Quản lý thông tin tài khoản và điểm tích lũy khách hàng
DanhMucDoAn msda msloai, msnsx Danh mục thông tin chi tiết từng sản phẩm đồ ăn
TonCuaHang msch, msda msch, msda Theo dõi số lượng tồn kho của từng sản phẩm tại từng cửa hàng
DonDatHang msddh msnv, mskv Quản lý thông tin đơn đặt hàng từ khách hàng
CTDDH msddh, msda msddh, msda Chi tiết số lượng từng mặt hàng trong một đơn hàng

Quy trình nhập dữ liệu thực nghiệm vào cơ sở dữ liệu được quy định nghiêm ngặt theo thứ tự ưu tiên nhằm tránh vi phạm ràng buộc toàn vẹn khóa ngoại: [1] KhuVuc, LoaiDoAn $\rightarrow$ [2] CuaHang, NhanVien $\rightarrow$ [3] DanhMucDoAn $\rightarrow$ [4] TonCuaHang. Hệ thống quy ước chỉ nhập trước dữ liệu bên phía "Bán" (danh mục, kho hàng), dữ liệu phía "Mua" (đơn hàng, chi tiết đơn) do người dùng phát sinh trực tiếp trong quá trình giao dịch. Đường dẫn hình ảnh sản phẩm được lưu dưới dạng chuỗi ký tự (nvarchar/nchar) thay vì kiểu nhị phân (image) để tối ưu hóa dung lượng cơ sở dữ liệu.

Triển khai hệ thống và môi trường vận hành

Hệ thống WebApp G308NVQHDoAnThuCungOnline được xây dựng và kiểm thử đồng thời trên hai môi trường:

  • Môi trường máy tính cục bộ (Local):
    • Máy chủ cơ sở dữ liệu: LAPTOP-M0SNOSSP\SQLEXPRESS
    • Cơ sở dữ liệu: 1G308NVQHDoAnThuCungOnline (MS SQL Server 2019)
    • Tài khoản kết nối cơ sở dữ liệu: sa / Mật khẩu: 123
  • Môi trường máy chủ trực tuyến (Host Somee):
    • Tên miền truy cập: http://doanpetg308nvqhuy.com
    • Địa chỉ máy chủ CSDL: 1G308NVQHDoAnThuCungOnline.com
    • Tài khoản kết nối CSDL: gthreenvqhuy_SQLLogin_1 / Mật khẩu: 932y3z3p4a
  • Phân quyền tài khoản quản trị hệ thống:
    • Tài khoản Admin: Tên đăng nhập Admin / Mật khẩu: admin@vn
    • Tài khoản Guest: Tên đăng nhập Guest / Mật khẩu: guest@vn

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

Chương 1: Giới thiệu đồ án của học phần

Chương này trình bày tổng quan về mục tiêu, nhiệm vụ và phạm vi của đồ án học phần Lập trình Web. Tác giả định nghĩa sản phẩm đầu ra bao gồm hai phiên bản chạy trên máy tính cục bộ và chạy trực tuyến trên dịch vụ lưu trữ Somee, xác lập danh mục công cụ phát triển (Visual Studio 2019, SQL Server, ASP.NET, C#) và giới thiệu cấu trúc tổng thể 7 chương của tài liệu báo cáo.

Chương 2: Cơ sở lý thuyết của học phần

Nội dung chương tập trung hệ thống hóa các kiến thức lý thuyết nền tảng phục vụ cho quá trình xây dựng ứng dụng web:

  • Nguyên lý hoạt động của WebApp trên nền tảng ASP.NET và mô hình tương tác dữ liệu thông qua ADO.NET.
  • Cấu trúc và phương pháp thiết kế MasterPage, kỹ thuật tổ chức đường dẫn điều hướng qua Menu Control và viết thủ tục kiểm soát ẩn/hiện form đăng nhập (LoginNV).
  • Kỹ thuật xây dựng các chức năng giao dịch thương mại: hiển thị hàng hóa bằng điều khiển DataList, quản lý giỏ hàng thông qua cơ chế Session, và các bước tạo đơn đặt hàng lưu vào cơ sở dữ liệu.
  • Kỹ thuật xây dựng chức năng quản trị: xác thực quyền truy cập, các thao tác CRUD trên điều khiển GridView, phương pháp xử lý ràng buộc toàn vẹn (RBTV) và quy trình chuyển nhóm dữ liệu giữa các danh mục.
  • Tổng quan lý thuyết về phát hành WebApp trên nền tảng mạng và giới thiệu mở rộng về lập trình web bằng PHP.

Chương 3: Thiết kế và cập nhật CSDL phục vụ WebApp

Chương 3 trình bày chi tiết bản vẽ sơ đồ quan hệ thực thể (Database Diagram) của hệ thống. Tác giả phân tích cụ thể thuộc tính, kiểu dữ liệu, độ dài và các ràng buộc toàn vẹn của 10 bảng dữ liệu (NhanVien, KhachHang, NhaSanXuat, LoaiDoAn, CuaHang, KhuVuc, DanhMucDoAn, TonCuaHang, DonDatHang, CTDDH). Ngoài ra, chương này cung cấp các kịch bản cập nhật dữ liệu thực nghiệm, quy định thứ tự chèn dữ liệu và giới thiệu các thủ tục lưu trữ (Stored Procedures), trigger kiểm soát biến động dữ liệu bán hàng.

Chương 4: Thiết kế và lập trình WebApp phần giao dịch

Chương này mô tả chi tiết giao diện và mã nguồn lập trình cho phân hệ phía khách hàng (Front-end):

  • Trang mẫu giao dịch (MasterPage): Thiết kế thanh điều hướng, liên kết danh mục và khu vực hiển thị nội dung động.
  • Trang chủ (HomePage.aspx): Trưng bày danh sách thức ăn thú cưng dưới dạng lưới trực quan bằng DataList, cho phép người dùng xem thông tin giá, hình ảnh, mô tả và chọn mua sản phẩm.
  • Trang giỏ hàng (GioHang.aspx): Sử dụng DataTable lưu trong Session để quản lý danh sách các mặt hàng đã chọn, cho phép cập nhật số lượng, xóa sản phẩm hoặc tiến hành thanh toán.
  • Trang đặt hàng (FrDatHang.aspx): Thu thập thông tin giao hàng của khách hàng, kiểm tra khách hàng cũ hoặc thêm khách hàng mới, tạo mới bản ghi trong DonDatHang và ghi nhận chi tiết các mặt hàng vào bảng CTDDH.

Chương 5: Thiết kế và lập trình WebApp phần quản lý

Chương 5 là phần nội dung trọng tâm về mặt kỹ thuật quản trị hệ thống (Back-end), mô tả giao diện và mã lệnh cho từng phân hệ quản lý:

  • Trang quản lý chung (Mannagement.aspx): Tích hợp phân quyền đăng nhập (LoginNV) và cây điều hướng đến tất cả các bảng dữ liệu quản trị.
  • Quản lý Danh mục đồ ăn (FrQL_DMDA): Thực hiện CRUD sản phẩm; xử lý RBTV khi xóa sản phẩm bằng cách tích hợp 2 GridView phụ hiển thị dữ liệu liên quan trong bảng TonCuaHang và CTDDH.
  • Quản lý Nhân viên (FrQL_NV): Thực hiện CRUD nhân sự; kiểm soát RBTV thông qua 2 GridView phụ theo dõi đơn đặt hàng và chi tiết đơn hàng do nhân viên đó phụ trách.
  • Quản lý Cửa hàng (FrQL_CH) và Tồn kho (FrQL_TCH): Quản lý chuỗi chi nhánh và số lượng tồn sản phẩm; kiểm soát RBTV bằng GridView phụ bảng TonCuaHang.
  • Quản lý Loại đồ ăn (FrQL_LDA) và Nhà sản xuất (FrQL_NSX): Quản lý nhóm hàng và đối tác; kiểm soát RBTV thông qua 3 GridView phụ liên kết (DanhMucDoAn, DonDatHang, CTDDH).
  • Quản lý Khu vực (FrQL_KV): Quản lý địa bàn hoạt động; kiểm soát RBTV đa tầng bằng 5 GridView phụ (NhanVien, DonDatHang, CTDDH, CuaHang, TonCuaHang).
  • Quản lý Khách hàng (FrQL_KH) và Đơn hàng (FrQL_DDH, FrQL_CTDDH): Cung cấp giao diện chỉnh sửa, cập nhật trạng thái đơn hàng và chi tiết sản phẩm đã đặt.
  • Trang chuyển loại đồ ăn (FrChuyenLDA): Lập trình thủ tục chuyển đổi toàn bộ danh mục sản phẩm từ loại đồ ăn này sang loại đồ ăn khác một cách an toàn.

Chương 6: Triển khai phát hành WebApp

Trình bày các bước đưa ứng dụng vào môi trường thực tế:

  • Đăng ký tài khoản và khởi tạo máy chủ trên dịch vụ lưu trữ miễn phí somee.com.
  • Thực hiện sao lưu cơ sở dữ liệu từ SQL Server cục bộ và phục hồi (Restore) trực tiếp lên hệ quản trị CSDL của Somee.
  • Cấu hình lại chuỗi kết nối (ConnectionString) trong tập tin Web.config và tải toàn bộ mã nguồn website lên máy chủ để phát hành dưới tên miền http://doanpetg308nvqhuy.com.

Chương 7: Kết luận và hướng phát triển của đồ án

Tổng kết những kết quả kỹ thuật đã hoàn thành theo mục tiêu đề ra, thẳng thắn đánh giá các mặt hạn chế còn tồn tại và vạch ra các giải pháp mở rộng hệ thống trong tương lai.

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

Hệ thống đã đạt được các kết quả kỹ thuật cụ thể theo đúng đề cương giao nhiệm vụ:

  • Xây dựng thành công ứng dụng web thương mại điện tử G308NVQHDoAnThuCungOnline hoàn chỉnh trên nền tảng ASP.NET 4.2 và C#.NET, vận hành ổn định trên cả máy chủ cục bộ và Internet.
  • Hiện thực hóa cơ sở dữ liệu quan hệ gồm 10 bảng chuẩn hóa, thiết lập đầy đủ khóa chính, khóa phụ và tối ưu hóa việc lưu trữ tài nguyên đa phương tiện (lưu chuỗi đường dẫn ảnh thay vì lưu dữ liệu nhị phân).
  • Thiết lập giải pháp trực quan hóa việc xử lý Ràng buộc toàn vẹn (RBTV) khi xóa dữ liệu cha: thay vì để hệ thống phát sinh ngoại lệ cơ sở dữ liệu, giao diện quản trị hiển thị trực tiếp từ 1 đến 5 GridView phụ liên kết, cho phép người quản trị kiểm tra và giải phóng dữ liệu con trước khi xóa bản ghi chính.
  • Xây dựng quy trình giao dịch trực tuyến khép kín: Trưng bày (DataList) $\rightarrow$ Chọn mua giỏ hàng (Session) $\rightarrow$ Khởi tạo đơn hàng $\rightarrow$ Lưu trữ phân rã vào bảng DonDatHang và CTDDH.

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

Các hạn chế được ghi nhận từ đồ án:

  • Ứng dụng được xây dựng theo mô hình kiến trúc một lớp (1-tier), mã nguồn xử lý nghiệp vụ còn gắn liền trực tiếp với giao diện Web Forms, gây khó khăn cho việc bảo trì khi quy mô dự án mở rộng.
  • Chưa tích hợp các cơ chế bảo mật nâng cao như mã hóa chữ ký số (Digital ID), chứng từ điện tử (e-Doc), kiểm tra người dùng tự động (CAPTCHA) hoặc giao thức bảo mật SSL.
  • Quá trình phát hành phụ thuộc vào gói dịch vụ lưu trữ miễn phí (somee.com), dẫn đến hạn chế về băng thông, tốc độ phản hồi và dung lượng lưu trữ CSDL trực tuyến.

Hướng phát triển và mở rộng:

  • Tái cấu trúc mã nguồn sang mô hình đa tầng (3-tier Architecture) hoặc mô hình MVC (Model-View-Controller) trên nền ASP.NET Core để tăng tính mô-đun hóa.
  • Tích hợp thêm các cổng thanh toán điện tử trực tuyến, dịch vụ gửi email xác nhận tự động và cơ chế bảo mật xác thực hai yếu tố.
  • Nâng cấp hệ thống quản lý kho hàng tự động khấu trừ tồn kho (TonCuaHang) ngay khi đơn hàng được duyệt thành công.

Giá trị tham khảo

Đồ án là tài liệu tham khảo hữu ích cho sinh viên chuyên ngành Công nghệ thông tin, Hệ thống thông tin và Kỹ thuật phần mềm đang theo học học phần Lập trình Web hoặc chuẩn bị thực hiện đồ án tốt nghiệp ứng dụng:

  • Cấu trúc thiết kế CSDL bán lẻ đa chi nhánh: Cung cấp mô hình tham khảo chi tiết cho bài toán quản lý tồn kho theo từng cửa hàng và phân vùng giao hàng theo khu vực.
  • Kỹ thuật xử lý RBTV trên giao diện ASP.NET: Phần hướng dẫn thiết kế các GridView phụ kiểm soát ràng buộc toàn vẹn trước khi xóa dữ liệu (tại Chương 5) mang tính thực tiễn cao cho việc xử lý ngoại lệ dữ liệu.
  • Hướng dẫn triển khai Web Hosting: Quy trình cấu hình và phục hồi CSDL lên nền tảng máy chủ Somee cung cấp các bước thực hành cụ thể cho sinh viên khi phát hành thử nghiệm sản phẩm học phần.

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

1. Cơ sở dữ liệu của hệ thống gồm những bảng nào và thứ tự nhập dữ liệu chuẩn là gì? Cơ sở dữ liệu gồm 10 bảng: KhuVuc, LoaiDoAn, NhaSanXuat, CuaHang, NhanVien, KhachHang, DanhMucDoAn, TonCuaHang, DonDatHang, CTDDH. Thứ tự nhập dữ liệu chuẩn để tránh vi phạm khóa ngoại là: KhuVuc, LoaiDoAn (bước 1) $\rightarrow$ CuaHang, NhanVien (bước 2) $\rightarrow$ DanhMucDoAn (bước 3) $\rightarrow$ TonCuaHang (bước 4).

2. Phân hệ giỏ hàng và đặt hàng trực tuyến được xử lý bằng cơ chế nào? Hệ thống sử dụng đối tượng Session để lưu trữ tạm thời danh sách sản phẩm trong giỏ hàng (DataTable). Khi khách hàng tiến hành đặt hàng (FrDatHang.aspx), hệ thống kiểm tra thông tin khách hàng trong bảng KhachHang, sau đó ghi nhận đơn mới vào bảng DonDatHang và phân rã từng mặt hàng vào bảng chi tiết CTDDH.

3. Kỹ thuật xử lý ràng buộc toàn vẹn (RBTV) khi xóa danh mục trong hệ thống được thực hiện ra sao? Hệ thống tích hợp các bảng GridView phụ trực tiếp trên giao diện quản trị để truy vấn các dữ liệu phụ thuộc. Ví dụ: khi xóa đồ ăn thú cưng (FrQL_DMDA), 2 GridView phụ sẽ hiển thị dữ liệu tồn tại trong TonCuaHang và CTDDH; khi xóa khu vực (FrQL_KV), 5 GridView phụ sẽ hiển thị dữ liệu liên quan từ NhanVien, DonDatHang, CTDDH, CuaHang, TonCuaHang. Người quản trị phải xử lý hết dữ liệu phụ thuộc trước khi xóa bản ghi chính.

4. Hệ thống được triển khai trên những môi trường nào và thông tin đăng nhập quản trị mặc định là gì? Hệ thống chạy trên máy chủ cục bộ SQL Server (LAPTOP-M0SNOSSP\SQLEXPRESS) và máy chủ trực tuyến Somee (http://doanpetg308nvqhuy.com). Tài khoản quản trị mặc định của ứng dụng gồm tài khoản Admin (Username: Admin, Password: admin@vn) và tài khoản Guest (Username: Guest, Password: guest@vn).

5. Chức năng chuyển loại đồ ăn (FrChuyenLDA) có vai trò gì? Chức năng này cho phép người quản trị thay đổi hàng loạt phân loại nhóm (msloai) của các mặt hàng thức ăn thú cưng từ một danh mục cũ sang một danh mục mới mà không làm mất tính toàn vẹn dữ liệu hay phải chỉnh sửa thủ công từng sản phẩm.

Kết luận

Đồ án học phần "Lập trình phát triển WebApp bán đồ ăn thú cưng trực tuyến" của sinh viên Nguyễn Võ Quốc Huy đã hoàn thành đầy đủ các yêu cầu chuyên môn của học phần Lập trình Web (4 tín chỉ) tại Trường Đại học Tài chính – Marketing. Tác giả đã thiết kế thành công hệ thống cơ sở dữ liệu quan hệ chuẩn hóa gồm 10 bảng, xây dựng giao diện bán hàng trực tuyến và hệ thống quản trị dữ liệu chặt chẽ với cơ chế kiểm soát ràng buộc toàn vẹn đa tầng. Ứng dụng đã được kiểm thử và phát hành thực nghiệm thành công trên môi trường Internet thông qua máy chủ Somee, tạo nền tảng vững chắc để tiếp tục nâng cấp lên các kiến trúc đa tầng hiện đại hơn trong tương lai.