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

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

Sự bùng nổ của thương mại điện tử tại Việt Nam, đặc biệt là hoạt động bán hàng nhỏ lẻ trên các mạng xã hội, đã tạo ra nhu cầu lớn về dịch vụ giao nhận hàng. Tác giả nhận định rằng các cửa hàng và cá nhân kinh doanh online đang thiếu một nền tảng số đóng vai trò bên trung gian thứ ba — giúp quản lý hóa đơn, điều phối vận chuyển và thu tiền hộ. Khi chưa có hệ thống hỗ trợ, các shop phải tự xử lý toàn bộ quy trình từ nhận đơn, giao hàng đến thu tiền, vốn không phải chuyên môn của họ, dẫn đến tốn thời gian, chi phí và công sức. Bối cảnh đó thúc đẩy tác giả lựa chọn đề tài "Xây dựng Website quản lý giao nhận hàng" sử dụng ngôn ngữ Java kết hợp mô hình MVC với Servlet và JSP.

Mục tiêu nghiên cứu

  1. Phân tích, thiết kế và xây dựng cơ sở dữ liệu cho hệ thống quản lý giao nhận hàng hợp lý, phù hợp với thực tế.
  2. Xây dựng một hệ thống quản lý giao nhận hàng đơn giản, thân thiện và dễ sử dụng.
  3. Triển khai website phục vụ nhu cầu giao hàng của các cửa hàng và shop bán hàng online.

Đối tượng và phạm vi

  • Đối tượng sử dụng: Các shop và cá nhân bán hàng online (Customer/Shop), nhân viên hệ thống giao nhận (Employer), quản trị viên (Admin) và khách thăm quan (Visitor).
  • Phạm vi chức năng: Quản lý tài khoản, quản lý shop, quản lý đơn hàng, điều phối nhận hàng, điều phối giao hàng và quản lý giao dịch.
  • Thời gian thực hiện: Niên khóa 2016–2020, hoàn thành tháng 12/2019.

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

Khung công nghệ và lý thuyết

Đồ án vận dụng các nền tảng công nghệ và kiến trúc sau, được trình bày tường minh trong Chương 1:

Thành phần Vai trò trong hệ thống
Java (phiên bản JSE 8) Ngôn ngữ lập trình chính, hướng đối tượng, đa nền tảng qua JVM
Mô hình MVC (Model–View–Controller) Kiến trúc tách biệt giao diện, dữ liệu và logic nghiệp vụ
Servlet Controller trong Java Web, xử lý yêu cầu HTTP từ trình duyệt
JSP (Java Server Pages) View động, nhúng Java vào HTML để hiển thị dữ liệu
Apache Tomcat Máy chủ ứng dụng Java Servlet/JSP
Eclipse IDE Môi trường phát triển tích hợp cho Java
Bootstrap Framework HTML/CSS/JavaScript hỗ trợ responsive design
SQL Server Management 2017 Hệ quản trị cơ sở dữ liệu quan hệ

Trong mô hình MVC được áp dụng: Model tương tác và truy xuất dữ liệu từ SQL Server; View (JSP) hiển thị giao diện người dùng; Controller (Servlet) điều phối luồng dữ liệu giữa Model và View, đồng thời xử lý logic nghiệp vụ.

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

  • Nghiên cứu tài liệu: Tổng hợp sách, tài liệu trực tuyến và các khóa luận trước về xây dựng website nhằm xác định ưu, nhược điểm và định hướng thiết kế.
  • Quan sát thực tế: Quan sát quy trình bán hàng của các cửa hàng và quy trình giao nhận hàng của các đơn vị vận chuyển để nắm bắt nghiệp vụ thực tiễn.
  • Lấy ý kiến: Tiếp thu ý kiến từ cửa hàng, nhân viên, khách hàng và giảng viên hướng dẫn về các vấn đề liên quan.
  • Phát triển hệ thống thông tin: Từ thông tin thu thập, tiến hành phân tích và thiết kế website thông qua mô hình hóa và chuẩn hóa dữ liệu.

Nguồn dữ liệu

Dữ liệu mẫu được tác giả tự xây dựng phục vụ mô tả và kiểm thử các chức năng trong quá trình phát triển, bao gồm dữ liệu tài khoản nhân viên, tài khoản shop, danh sách shop, đơn hàng, nhận hàng và giao hàng.


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

Chương 1: Cơ Sở Lý Thuyết

Chương này trình bày tổng quan các công nghệ và công cụ được sử dụng trong đồ án. Phần trình bày về Java tập trung vào bốn tính chất hướng đối tượng (trừu tượng, đa hình, kế thừa, đóng gói) và các đặc tính quan trọng như độc lập nền tảng thông qua JVM, bảo mật, đa luồng và hiệu suất cao nhờ garbage collection.

Eclipse được mô tả là IDE chính hỗ trợ viết mã Java, tích hợp với hệ thống kiểm soát phiên bản (Subversion, CVS), công cụ xây dựng (Apache Ant, Apache Maven) và framework kiểm thử (JUnit). Apache Tomcat đóng vai trò máy chủ HTTP triển khai ứng dụng Servlet/JSP. Bootstrap cung cấp giao diện responsive, tương thích với thiết bị di động.

Đối với mô hình MVC, chương giải thích rõ cơ chế hoạt động: Controller (Servlet) lấy dữ liệu từ Model rồi chuyển cho View (JSP) để hiển thị. Phần SQL Server trình bày kiến trúc của Microsoft SQL Server 2017 bao gồm Client, Relational Engine (Query Parser, Query Optimizer, Execution Plan, Query Executor), Storage Engine và SQL OS, cùng bốn giao thức kết nối: Shared Memory, Named Pipes, TCP/IP và VIA.

Chương 2: Phân Tích Và Thiết Kế Hệ Thống

Chương này là phần cốt lõi của đồ án, bao gồm mô tả hoạt động nghiệp vụ, phân tích yêu cầu và thiết kế cơ sở dữ liệu.

Mô tả hoạt động đối chiếu hai quy trình: quy trình thủ công (shop tự xử lý từ xác nhận đơn đến giao hàng) và quy trình có hỗ trợ của website (shop đăng ký tài khoản, tạo đơn hàng; nhân viên điều phối đến lấy hàng tập kết về kho; nhân viên giao hàng phân phối theo địa chỉ nhận và thu tiền hộ).

Phân tích chức năng xác định bốn tác nhân (Visitor, Customer/Shop, Employer, Admin) với quyền hạn phân cấp rõ ràng. Hệ thống gồm sáu nhóm chức năng chính:

  • Quản lý tài khoản: Ba loại tài khoản (Admin, Shop, Nhân viên); Shop tự đăng ký; Admin tạo và quản lý tài khoản nhân viên; khóa/mở khóa tài khoản.
  • Quản lý Shop: Customer thêm/sửa shop; Admin xem toàn bộ danh sách và khóa shop vi phạm.
  • Quản lý đơn hàng: Đơn hàng có năm trạng thái (Đang xử lý → Đang nhận → Đang giao → Thành công / Hủy); Customer có đầy đủ quyền tạo, sửa, hủy, hoàn tác và tìm kiếm đơn hàng; Admin và Employer chỉ xem.
  • Quản lý điều phối: Bao gồm quản lý nhận hàng (điều nhân viên lấy hàng tập kết về kho) và quản lý giao hàng (phân phối đơn cho nhân viên giao).
  • Quản lý giao dịch: Employer và Admin xem, thêm và sửa thông tin giao dịch.

Biểu đồ Usecase được xây dựng cho toàn hệ thống và từng tác nhân riêng (Admin, Employer, Customer), kèm các Usecase chi tiết cho từng chức năng: Đăng ký, Đăng nhập, Quản lý Shop, Quản lý tài khoản, Quản lý đơn hàng, Quản lý điều phối, Quản lý giao dịch.

Biểu đồ tuần tự được thiết kế cho các quy trình chính: Đăng ký (phương thức registeruser()), Đăng nhập (checklogin(), checkvaitro()), hiển thị/thêm/sửa/khóa Shop, hiển thị/thêm/sửa/hủy/hoàn tác/tìm kiếm đơn hàng. Mỗi biểu đồ mô tả luồng tương tác giữa người dùng, Controller (Servlet tương ứng) và Model thông qua các phương thức cụ thể như getlistshop(), addshop(), editshop(), blockshop(), unblockshop(), getlistDH_tinhtrang(), adddonhang(), editdonhang(), cancelDonHang(), undoDonHang(), searchDonHang().

Thiết kế CSDL xác định tám thực thể chính:

Thực thể Các thuộc tính chính
User ID_User, Ten_User, Mat_Khau, SDT, Email, Dia_Chi, ID_Role, ID_Kho, Trang_Thai
Vai Trò ID_Role, Vai_Tro
Shop ID_Shop, Ten_Shop, Dia_Chi, SDT, ID_User, Trang_Thai
Đơn Hàng ID_DH, ID_Shop, Ten_Nguoi_Nhan, SDT_Nhan, DC_Nhan, Khoi_Luong, Cao, Rong, Ngay_Lap, Tien_Thu_Ho, Cuoc_Phi, Tinh_Trang
Lấy Hàng ID_LH, ID_User, Ngay_Lay, ID_DH, ID_Kho
Giao Hàng ID_GH, ID_User, ID_DH, Ngay_Giao
Kho ID_Kho, Ten_Kho, Dia_Chi
Giao Dịch ID_GD, ID_User, ID_Shop, Ngay_Tra, So_Lenh_Giao_Dich, So_Tien, Noi_Dung

Chương 3: Xây Dựng Và Triển Khai Chương Trình

Chương này giới thiệu môi trường phát triển và trình bày giao diện của ứng dụng qua hơn 30 màn hình được mô tả trong danh mục hình ảnh, bao gồm: Trang chủ, Đăng nhập, Đăng ký, Quản lý Shop (Admin và Khách hàng), Quản lý tài khoản nhân viên và shop, Thông tin cá nhân, Thay đổi thông tin và mật khẩu, Quản lý đơn hàng (Admin và Khách hàng), Tạo/Sửa đơn hàng, Quản lý nhận hàng và thêm nhận hàng, Quản lý giao hàng và thêm giao hàng.


Thiết kế và triển khai

Kiến trúc hệ thống

Hệ thống được xây dựng theo kiến trúc MVC ba lớp trên nền tảng Java Web:

  • Controller (Servlet): Mỗi chức năng tương ứng với một Servlet riêng biệt (ListShop, AddShop, EditShop, ListDonHang, AddDonHang, EditDonHang, SearchDonHang, v.v.), tiếp nhận request HTTP, gọi phương thức tương ứng ở Model và chuyển tiếp kết quả cho View.
  • View (JSP + Bootstrap): Các trang JSP hiển thị dữ liệu động, tích hợp Bootstrap để đảm bảo giao diện responsive trên nhiều thiết bị.
  • Model: Các lớp Java tương tác trực tiếp với SQL Server thông qua JDBC, thực thi các phương thức truy vấn và cập nhật dữ liệu.

Công nghệ sử dụng

  • Ngôn ngữ: Java (JSE 8), JSP, HTML, CSS, JavaScript
  • Kiến trúc: MVC với Servlet/JSP
  • Máy chủ ứng dụng: Apache Tomcat
  • Cơ sở dữ liệu: SQL Server Management 2017
  • IDE: Eclipse
  • Framework giao diện: Bootstrap

Luồng xử lý nghiệp vụ

Quy trình giao nhận hàng trên hệ thống diễn ra theo tuần tự: Shop đăng nhập → Tạo đơn hàng (trạng thái "Đang xử lý") → Nhân viên điều phối tạo lệnh lấy hàng (trạng thái "Đang nhận") → Hàng tập kết về kho → Nhân viên giao hàng nhận phân công (trạng thái "Đang giao") → Giao thành công (trạng thái "Thành công") hoặc thất bại (trạng thái "Hủy", có thể hoàn tác về "Đang xử lý").


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

Kết quả chính

Đồ án hoàn thành một website quản lý giao nhận hàng với đầy đủ các chức năng được phân tích trong Chương 2. Cụ thể, hệ thống hỗ trợ ba nhóm người dùng chính với quyền hạn phân cấp: Admin quản trị toàn bộ hệ thống bao gồm khóa/mở khóa tài khoản và shop; Nhân viên (Employer) thực hiện điều phối nhận hàng, giao hàng và quản lý giao dịch; Khách hàng (Shop/Customer) tự quản lý shop, tạo và theo dõi đơn hàng.

Dữ liệu mẫu trong văn bản thể hiện hệ thống đã triển khai đầy đủ luồng dữ liệu từ khâu tạo đơn hàng (ví dụ: đơn hàng ID 1 của Shop Mina, ngày 2019-10-15, tiền thu hộ 80.000 đồng, cước phí 30.000 đồng) đến khâu nhận hàng (Nhân viên Đạt nhận hàng tại Mina - 1 Hồ Đắc Di, ngày 2019-10-25) và giao hàng (Nhân viên Cường giao đơn ID 3, thu 45.000 đồng, ngày 2019-10-27).

Cơ sở dữ liệu được thiết kế với tám bảng chính có quan hệ ràng buộc rõ ràng: VAI_TRO, DON_HANG, LAY_HANG, GIAO_HANG, GIAO_DICH, cùng các bảng User, Shop và Kho.

Giải pháp và đóng góp

  • Cung cấp nền tảng web thay thế quy trình giao nhận thủ công, giúp shop không cần bố trí nhân viên vận chuyển riêng, tiết kiệm thời gian và chi phí.
  • Hệ thống phân quyền ba cấp (Admin, Employer, Customer) với cơ chế khóa tài khoản và shop vi phạm, đảm bảo tính kiểm soát của nền tảng.
  • Vòng đời đơn hàng năm trạng thái với chức năng hoàn tác giúp xử lý linh hoạt các tình huống giao nhận thực tế.

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

Hạn chế được tác giả nêu

Tác giả thừa nhận đây là lần đầu tiếp xúc với công việc thực tế nên kiến thức và kinh nghiệm thực tiễn còn hạn chế, dẫn đến một số thiếu sót trong quá trình triển khai. Do giới hạn số trang, nhiều biểu đồ tuần tự của các chức năng Shop, Tài khoản, Nhận hàng, Giao hàng và Giao dịch không được trình bày đầy đủ trong báo cáo, chỉ tập trung vào các quy trình chính.

Hướng phát triển

Tác giả đề xuất một số hướng mở rộng trong phần Kết luận, bao gồm hoàn thiện và bổ sung thêm các chức năng còn thiếu, nâng cao giao diện người dùng và mở rộng khả năng tích hợp với các dịch vụ bên ngoài. Xét theo phạm vi đồ án, hệ thống cũng có thể được phát triển thêm theo hướng bổ sung tính năng thống kê và báo cáo doanh thu, tích hợp cổng thanh toán điện tử, hoặc xây dựng ứng dụng di động tương ứng.


Giá trị tham khảo

Đồ án này có giá trị tham khảo cho các đối tượng sau:

  • Sinh viên ngành Hệ thống Thông tin Kinh tế, Công nghệ Thông tin đang tìm hiểu cách áp dụng mô hình MVC với Servlet/JSP vào một bài toán quản lý thực tế. Phần Chương 1 trình bày tương đối đầy đủ lý thuyết về Java, Servlet, JSP, Bootstrap và SQL Server dưới dạng tổng quan dễ tiếp cận.
  • Sinh viên làm đồ án xây dựng website quản lý nghiệp vụ có thể tham khảo cách tổ chức phân tích Usecase, biểu đồ tuần tự, thiết kế thực thể cơ sở dữ liệu và phân chia quyền hạn người dùng theo vai trò.
  • Người học Java Web có thể tham khảo phần mô tả chi tiết về luồng hoạt động Servlet (chuỗi các phương thức từ Controller đến Model) trong Chương 2.
  • Sinh viên nghiên cứu về ứng dụng trong lĩnh vực logistics, thương mại điện tử có thể tham khảo mô tả nghiệp vụ giao nhận hàng và vòng đời đơn hàng được trình bày trong phần mô tả hệ thống.

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

1. Hệ thống phân biệt quyền hạn giữa ba loại tài khoản như thế nào? Hệ thống có ba loại tài khoản: Admin có quyền cao nhất, sử dụng được toàn bộ chức năng bao gồm xem, thêm, sửa, khóa tài khoản nhân viên và shop; Employer (nhân viên) đảm nhận điều phối và quản lý giao dịch nhưng bị hạn chế một số chức năng; Customer (Shop) chỉ quản lý shop, đơn hàng và tài khoản cá nhân của mình. Sau khi đăng nhập, hệ thống thực thi phương thức checkvaitro() để chuyển hướng người dùng đến trang phù hợp với vai trò.

2. Đơn hàng có thể trải qua những trạng thái nào và điều kiện chuyển đổi ra sao? Đơn hàng có năm trạng thái: (1) Đang xử lý — khi shop mới tạo; (2) Đang nhận — khi nhân viên điều phối đến lấy hàng; (3) Đang giao — khi hàng được phân phối cho nhân viên giao; (4) Thành công — khi giao thành công; (5) Hủy — khi giao thất bại hoặc shop chủ động hủy trong trạng thái Đang xử lý. Riêng trạng thái Hủy cho phép hoàn tác trở lại Đang xử lý thông qua phương thức undoDonHang(). Shop chỉ có thể sửa hoặc hủy đơn khi đơn đang ở trạng thái Đang xử lý.

3. Vai trò của bảng LAY_HANG và GIAO_HANG trong cơ sở dữ liệu là gì và chúng khác nhau thế nào? Bảng LAY_HANG lưu thông tin về lượt nhân viên đến cửa hàng lấy hàng tập kết về kho, gồm các trường ID_LH, ID_User (nhân viên nhận), Ngay_Lay, ID_DH (mã đơn hàng), ID_Kho. Bảng GIAO_HANG lưu thông tin nhân viên giao hàng đến địa chỉ người nhận, gồm ID_GH, ID_User (nhân viên giao), ID_DH, Ngay_Giao. Hai bảng tương ứng với hai giai đoạn khác nhau trong vòng đời đơn hàng: lấy hàng về kho và giao hàng đến người nhận.

4. Khách hàng (Shop) đăng ký tài khoản như thế nào, còn tài khoản nhân viên được tạo ra theo quy trình nào? Khách hàng (Shop) tự đăng ký tài khoản thông qua chức năng Đăng ký trên website (phương thức registeruser()), tài khoản mới có vai trò là Chủ Shop. Tài khoản nhân viên không được tự đăng ký mà do Admin tạo khi nhân viên vào làm, Admin cung cấp thông tin tên tài khoản, Email đăng nhập, mật khẩu và vai trò (NV_Shipper hoặc NV_Kho), dữ liệu sau đó được lưu vào cơ sở dữ liệu.

5. Khi một shop bị Admin khóa, hệ thống xử lý như thế nào với các đơn hàng đang tồn tại? Theo mô tả trong văn bản, khi shop bị khóa thì shop đó sẽ không thể tạo thêm đơn hàng mới. Cơ chế khóa/mở khóa shop được thực thi thông qua hai phương thức blockshop() và unblockshop(), trong đó hệ thống kiểm tra trạng thái hiện tại của shop trước khi gọi phương thức tương ứng. Văn bản không mô tả cơ chế xử lý các đơn hàng đang trong vòng đời (đang xử lý, đang nhận, đang giao) của shop bị khóa.


Kết luận

Đồ án tốt nghiệp của sinh viên Trần Văn Đức, Khoa Hệ thống Thông tin Kinh tế, Trường Đại học Kinh tế Huế, trình bày toàn bộ quy trình phân tích, thiết kế và xây dựng một website quản lý giao nhận hàng sử dụng Java, Servlet/JSP theo mô hình MVC, Apache Tomcat và SQL Server 2017. Hệ thống giải quyết bài toán thực tiễn về nhu cầu của bên trung gian giao nhận trong bối cảnh thương mại điện tử bùng nổ tại Việt Nam, với vòng đời đơn hàng năm trạng thái và phân quyền ba cấp (Admin, Employer, Customer). Về mặt học thuật, đồ án cung cấp tài liệu tham khảo có giá trị cho sinh viên ngành CNTT và Hệ thống Thông tin về cách tổ chức phân tích Usecase, biểu đồ tuần tự, thiết kế CSDL quan hệ và triển khai ứng dụng web Java theo kiến trúc MVC.