Bối cảnh và vấn đề nghiên cứu
Sự phát triển của Internet và các nền tảng thương mại điện tử đã làm thay đổi phương thức mua sắm truyền thống, đưa mua sắm trực tuyến trở thành xu thế phổ biến phục vụ nhu cầu của cả người bán và người mua. Xu hướng này càng thể hiện rõ nét hơn dưới tác động của đại dịch Covid-19. Xuất phát từ nhu cầu thực tiễn giúp độc giả tìm kiếm và mua sách tại nhà thuận tiện, tiết kiệm thời gian, đồng thời vận dụng kiến thức chuyên ngành Kỹ thuật phần mềm vào thực tế, tác giả Ngô Chung Á Âu đã thực hiện đề tài "Xây dựng website bán sách cho cửa hàng Tâm An sử dụng công nghệ ReactJS" dưới sự hướng dẫn của Th.S Ngô Thị Bích Thúy tại Trường Đại học Công nghiệp Hà Nội (2022).
Khảo sát thực tế tại Cửa hàng sách Tâm An ghi nhận các đặc điểm hoạt động như sau:
- Địa chỉ: Số 34 đường Hồ Tùng Mậu, phường Mai Dịch, quận Cầu Giấy, Hà Nội.
- Thời gian hoạt động: Bắt đầu hoạt động từ tháng 2/2020.
- Quy mô và mặt bằng: Diện tích 200 m², trong đó 2/3 diện tích dùng để trưng bày sách và 1/3 diện tích bố trí bàn ghế phục vụ độc giả đọc sách và mua sắm tại chỗ.
- Nguồn và thể loại sách: Nguồn sách nhập từ các nhà xuất bản như Nhà xuất bản Trẻ, Nhà xuất bản Kim Đồng, Nhà xuất bản Giáo Dục... Các thể loại chính gồm: chính trị, kinh tế, kỹ năng, lịch sử, văn học, nghệ thuật, truyện tranh.
- Khách hàng mục tiêu: Học sinh, sinh viên, thanh thiếu niên, nhi đồng.
- Cơ cấu nhân sự: Gồm nhân viên bán hàng kiêm thu ngân (1 vị trí), nhân viên tiếp thị, nhân viên vệ sinh, nhân viên bảo vệ kiêm giữ xe.
- Hiện trạng công nghệ: Mức độ tự động hóa dừng lại ở việc nhập và in hóa đơn từ một máy tính. Việc quản lý sản phẩm vẫn thực hiện bằng sổ sách giấy tờ, thiếu tính linh hoạt, khách hàng phải chờ đợi thanh toán và cửa hàng chưa tiếp cận được khách hàng ở khu vực xa.
Mục tiêu của đề tài:
- Xây dựng một website giúp khách hàng xem, tìm kiếm các sản phẩm sách mà cửa hàng đang bày bán và thực hiện đặt hàng trực tuyến; hệ thống bao gồm các module dành cho khách hàng và module dành cho quản trị viên.
- Vận dụng kiến thức đã học, rèn luyện và phát triển kỹ năng lập trình với thư viện ReactJS.
Nhiệm vụ nghiên cứu và thực hiện:
- Khảo sát thực tiễn hoạt động và khảo sát hệ thống tại cửa hàng.
- Phân tích và thiết kế hệ thống phần mềm.
- Xây dựng và thiết kế cơ sở dữ liệu quan hệ.
- Lập trình và cài đặt các module chức năng của hệ thống.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Quy trình nghiệp vụ bán hàng, tiếp thị, quản lý tại cửa hàng sách Tâm An và hệ thống website thương mại điện tử.
- Phạm vi nghiên cứu: Xây dựng website bán hàng ở mức độ cơ bản, tập trung vào các chức năng xem sản phẩm, tìm kiếm, đặt hàng cho khách hàng và chức năng quản lý danh mục, sách, tài khoản, đơn hàng cho quản trị viên.
Cơ sở lý thuyết và phương pháp
Đồ án tiếp cận bài toán xây dựng phần mềm thương mại điện tử dựa trên các phương pháp thu thập dữ liệu thực tế và quy trình phân tích thiết kế hệ thống hướng đối tượng:
Phương pháp thu thập dữ liệu và khảo sát:
- Quan sát trực tiếp: Ghi nhận quy trình vận hành, bố trí không gian và luồng phục vụ khách hàng tại cửa hàng sách Tâm An.
- Phỏng vấn: Trao đổi trực tiếp với người quản lý, nhân viên bán hàng kiêm thu ngân và khách hàng nhằm xác định yêu cầu nghiệp vụ.
- Nghiên cứu biểu mẫu: Thu thập, phân tích sổ sách, mẫu hóa đơn và chứng từ đang được sử dụng trong hoạt động bán hàng thủ công.
Phương pháp phân tích và thiết kế hệ thống:
- Mô hình hóa chức năng thông qua biểu đồ ca sử dụng (Use Case Diagram) và bảng đặc tả chi tiết từng ca sử dụng.
- Thiết kế động học hệ thống bằng Biểu đồ trình tự (Sequence Diagram).
- Mô hình hóa cấu trúc tĩnh bằng Biểu đồ lớp phân tích (VOPC - View of Participating Classes).
- Mô hình hóa dữ liệu quan hệ và thiết kế cấu trúc các bảng dữ liệu.
Nền tảng công nghệ và lý thuyết sử dụng:
- Ngôn ngữ TypeScript: Ngôn ngữ mã nguồn mở phát triển bởi Microsoft, là tập siêu cú pháp của JavaScript, hỗ trợ lập trình hướng đối tượng (kế thừa, đóng gói, constructor, abstract, interface), cấu trúc module hóa và tương thích chuẩn ECMAScript 2015 (ES6).
- Thư viện ReactJS: Thư viện JavaScript mã nguồn mở chuyên biệt để xây dựng giao diện người dùng theo hướng ứng dụng đơn trang (Single Page Application - SPA). Các cơ chế chính gồm: Component, Virtual DOM (tối ưu hóa re-render), cú pháp JSX (kết hợp JavaScript và XML), Props & State, One-way data binding, thư viện quản lý trạng thái tập trung Redux và React Hooks (từ phiên bản 16.8).
- Hệ quản trị cơ sở dữ liệu: Hỗ trợ triển khai trên SQL Server 2014 hoặc MySQL.
Thiết kế và triển khai
Hệ thống được thiết kế thành hai phân hệ độc lập: Website bán sách dành cho khách hàng và Website quản lý dành cho quản trị viên.
Yêu cầu cấu hình hệ thống
Hệ thống xác định các yêu cầu kỹ thuật tối thiểu để triển khai và vận hành:
| Thành phần |
Yêu cầu kỹ thuật theo văn bản |
| Phần cứng (Hardware) |
- Bộ xử lý: 32-bit (x86) hoặc 64-bit (x64), tốc độ từ 1 GHz trở lên. - Bộ nhớ RAM: Tối thiểu 4 GB. - Dung lượng đĩa cứng: Còn trống từ 128 GB trở lên. - Trang bị thêm các thiết bị ngoại vi phục vụ vận hành hệ thống. |
| Phần mềm (Software) |
- Hệ điều hành: Microsoft Windows 7 trở lên. - Hệ quản trị cơ sở dữ liệu: SQL Server 2014 hoặc MySQL. |
| Yêu cầu phi chức năng |
- Hệ thống hoạt động ổn định, tốc độ xử lý nhanh, đảm bảo độ tin cậy. - Giao diện thân thiện, dễ sử dụng. - Đảm bảo tính pháp lý, quyền sở hữu của cửa hàng Tâm An và không vi phạm bản quyền. |
Cấu trúc cơ sở dữ liệu
Cơ sở dữ liệu của hệ thống gồm 7 bảng dữ liệu quan hệ:
| Tên bảng |
Mục đích lưu trữ |
Các trường dữ liệu chính |
USER |
Lưu trữ thông tin tài khoản người dùng và quản trị viên |
ID tài khoản, họ, tên, email, số điện thoại, địa chỉ, tên tài khoản, mật khẩu, vai trò, ngày tạo, ngày cập nhật. |
CATEGORY |
Lưu danh mục các chủ đề sách |
ID danh mục, tên danh mục, mô tả, ngày tạo, ngày cập nhật. |
PRODUCT |
Lưu thông tin chi tiết các đầu sách |
ID sách, tên sách, mô tả, giá bán, tác giả, số trang, số lượng hiện có, số lượng đã bán, ngày tạo, ngày cập nhật, ID danh mục. |
PRODUCT_IMAGE |
Lưu thông tin hình ảnh của sách |
ID ảnh, link ảnh, ngày tạo, ngày cập nhật, ID sách. |
SALE_ORDER |
Lưu thông tin đơn đặt hàng |
ID đơn hàng, họ tên người nhận, số điện thoại người nhận, địa chỉ người nhận, tổng tiền, ngày tạo, ngày cập nhật, ID tài khoản. |
ORDER_ITEM |
Lưu chi tiết từng mặt hàng trong đơn hàng |
ID đơn hàng, ID sản phẩm, số lượng đặt mua. |
DELIVERY |
Lưu trạng thái xử lý và giao hàng của đơn |
ID trạng thái đơn hàng, trạng thái đơn hàng, ID đơn hàng, ngày tạo, ngày cập nhật. |
Quan hệ ràng buộc giữa các thực thể dữ liệu:
- Một danh mục (
CATEGORY) chứa từ 0 đến nhiều sách (PRODUCT).
- Mỗi đầu sách (
PRODUCT) có 1 hoặc nhiều hình ảnh (PRODUCT_IMAGE).
- Một tài khoản (
USER) có thể tạo từ 0 đến nhiều đơn hàng (SALE_ORDER).
- Mỗi đơn hàng (
SALE_ORDER) có ít nhất một chi tiết đơn hàng (ORDER_ITEM).
- Mỗi đơn hàng (
SALE_ORDER) chỉ gắn với duy nhất một trạng thái giao hàng (DELIVERY).
Nội dung chính theo từng chương
Chương 1: Khảo sát yêu cầu của hệ thống
Chương này trình bày chi tiết kết quả khảo sát sơ bộ và khảo sát nghiệp vụ tại Cửa hàng sách Tâm An (địa chỉ 34 Hồ Tùng Mậu, thành lập 2/2020, quy mô 200 m²). Tác giả làm rõ các hạn chế trong khâu quản lý sổ sách và thanh toán thủ công, từ đó xác định danh mục yêu cầu:
- Yêu cầu chức năng phía khách hàng (8 chức năng): Đăng ký tài khoản, Đăng nhập, Sửa thông tin cá nhân, Tìm kiếm sách theo tên, Xem danh sách sách theo chủ đề, Xem chi tiết sách, Thêm sách vào giỏ hàng, Đặt hàng.
- Yêu cầu chức năng phía quản trị viên (5 nhóm chức năng): Đăng nhập hệ thống, Quản lý danh mục sách, Quản lý sách, Quản lý tài khoản người dùng, Quản lý đơn hàng.
- Yêu cầu phi chức năng và hạ tầng: Tính ổn định, tính thân thiện, yêu cầu phần cứng (CPU 1 GHz, RAM 4GB, HDD trống 128GB), phần mềm (Windows 7+, SQL Server 2014/MySQL) và tính pháp lý.
Chương 2: Phân tích yêu cầu chức năng hệ thống
Chương 2 mô hình hóa chức năng hệ thống thông qua biểu đồ ca sử dụng (Use Case) và xây dựng tài liệu đặc tả chi tiết cho toàn bộ các ca sử dụng. Mỗi ca sử dụng được đặc tả đầy đủ theo cấu trúc: mô tả tóm tắt, luồng sự kiện cơ bản, luồng sự kiện rẽ nhánh (xử lý khi nhập sai dữ liệu, tài khoản không hợp lệ hoặc lỗi mất kết nối cơ sở dữ liệu), tiền điều kiện và hậu điều kiện:
- Phân hệ khách hàng: Đặc tả chi tiết các use case Đăng ký, Đăng nhập, Sửa thông tin cá nhân, Tìm kiếm, Xem sách theo chủ đề, Xem chi tiết sách, Thêm vào giỏ hàng, Đặt hàng.
- Phân hệ quản trị: Đặc tả chi tiết các use case Quản lý danh mục (thêm, xem chi tiết, sửa, xóa), Quản lý sách (thêm, xem chi tiết, sửa, xóa), Quản lý tài khoản (xem chi tiết, cập nhật quyền người dùng/quản trị viên, xóa tài khoản), Quản lý đơn hàng (xem thông tin đơn hàng, cập nhật trạng thái đơn hàng).
Chương 3: Thiết kế cơ sở dữ liệu
Nội dung chương tập trung vào mô hình hóa dữ liệu và thiết kế chi tiết 7 bảng dữ liệu quan hệ (USER, CATEGORY, PRODUCT, PRODUCT_IMAGE, SALE_ORDER, ORDER_ITEM, DELIVERY). Tác giả xác định rõ các trường khóa chính, khóa ngoại, kiểu dữ liệu, các ràng buộc toàn vẹn và sơ đồ quan hệ liên kết giữa các bảng.
Chương 4: Thiết kế các chức năng của hệ thống
Tác giả hiện thực hóa phân tích động và tĩnh cho toàn bộ 11 ca sử dụng chính trong hệ thống. Với mỗi ca sử dụng, chương cung cấp:
- Biểu đồ trình tự (Sequence Diagram): Thể hiện trình tự tương tác giữa các đối tượng từ giao diện người dùng, bộ điều khiển đến các thực thể dữ liệu theo thời gian thực.
- Biểu đồ lớp phân tích (VOPC - View of Participating Classes): Xác định các lớp tham gia thực hiện ca sử dụng gồm lớp biên (Boundary), lớp điều khiển (Control) và lớp thực thể (Entity).
Chương 5: Thiết kế giao diện và cài đặt
Chương 5 trình bày sơ đồ điều hướng màn hình cho 2 phân hệ (Website bán sách và Website quản lý) cùng thiết kế chi tiết các màn hình giao diện thực tế:
- Giao diện phía khách hàng: Trang chủ, Đăng ký, Đăng nhập, Sửa thông tin cá nhân, Tìm kiếm, Xem sách theo chủ đề, Xem chi tiết sách, Giỏ hàng, Đặt hàng, Lịch sử đặt hàng.
- Giao diện phía quản trị viên: Đăng nhập quản trị, Quản lý danh mục (danh sách, thêm mới, xem, sửa, xóa), Quản lý sách (danh sách, thêm mới, xem, sửa, xóa), Quản lý tài khoản (danh sách, xem, cập nhật quyền, xóa), Quản lý đơn hàng (danh sách, xem chi tiết, cập nhật trạng thái).
- Cơ sở lý thuyết cài đặt: Trình bày chi tiết cú pháp, ưu điểm của ngôn ngữ TypeScript và kiến trúc thư viện ReactJS (Component, Virtual DOM, JSX, Props, State, Redux, One-way data binding, Hooks).
Chương 6: Tổng kết và đánh giá
Chương cuối tổng kết toàn bộ quá trình thực hiện đồ án, đối chiếu kết quả sản phẩm website đạt được so với mục tiêu đặt ra, đánh giá các mặt hạn chế còn tồn tại và đề xuất định hướng nâng cấp trong tương lai.
Kết quả và đóng góp
Kết quả chính đạt được
- Hoàn thành quyển báo cáo đồ án tốt nghiệp với đầy đủ tài liệu khảo sát, hồ sơ phân tích thiết kế hệ thống theo chuẩn UML và thiết kế cơ sở dữ liệu quan hệ.
- Xây dựng hoàn chỉnh 2 website hoạt động:
- Website bán hàng trực tuyến dành cho khách hàng: Cho phép đăng ký/đăng nhập, tìm kiếm sách theo tên, xem sách theo danh mục chủ đề, xem thông tin chi tiết (tác giả, giá, số trang, số lượng), thêm sách vào giỏ hàng, đặt hàng và tra cứu lịch sử mua hàng.
- Website quản lý dành cho quản trị viên: Thực hiện đầy đủ các chức năng quản lý danh mục sách (CRUD), quản lý đầu sách và hình ảnh kèm theo (CRUD), quản lý tài khoản và phân quyền người dùng (User/Admin), theo dõi thông tin đơn hàng và cập nhật trạng thái giao hàng.
Đóng góp tự nêu của tác giả
- Ứng dụng thành công thư viện ReactJS kết hợp ngôn ngữ TypeScript và Redux vào xây dựng hệ thống thương mại điện tử đơn trang (SPA), giúp tối ưu hiệu năng hiển thị thông qua Virtual DOM và cấu trúc module hóa dễ bảo trì.
- Giải quyết bài toán chuyển đổi phương thức kinh doanh từ thủ công tại chỗ sang mô hình kết hợp trực tuyến cho Cửa hàng sách Tâm An, đáp ứng nhu cầu mở rộng phạm vi tiếp cận khách hàng.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế được ghi nhận trong văn bản
- Hệ thống chưa tích hợp chức năng thanh toán trực tuyến qua cổng thanh toán (chỉ xử lý nghiệp vụ đặt hàng và thanh toán trực tiếp khi nhận sách).
- Chưa cung cấp tính năng cho phép khách hàng chủ động hủy đơn hàng sau khi đã đặt.
- Trải nghiệm người dùng (UI/UX) trên website vẫn còn ở mức cơ bản, cần tối ưu thêm.
- Phía phân hệ quản trị chưa xây dựng chức năng thống kê doanh số, báo cáo bán hàng và in ấn biểu mẫu thống kê.
Hướng nghiên cứu và phát triển tiếp theo
- Nâng cấp, bổ sung tính năng thanh toán trực tuyến qua các cổng thanh toán điện tử.
- Phát triển chức năng hủy đơn hàng dành cho khách hàng.
- Nghiên cứu và tối ưu hóa trải nghiệm người dùng, cải thiện giao diện giao dịch.
- Xây dựng module thống kê kinh doanh, vẽ biểu đồ báo cáo và hỗ trợ xuất/in tài liệu thống kê cho người quản trị cửa hàng.
Giá trị tham khảo
Báo cáo đồ án mang lại giá trị tham khảo cụ thể cho các đối tượng sau:
- Sinh viên ngành Kỹ thuật phần mềm và Công nghệ thông tin: Tài liệu tham khảo trực tiếp về quy trình thực hiện một đồ án tốt nghiệp xây dựng ứng dụng web thương mại điện tử, từ bước khảo sát thực tế đến phân tích thiết kế hệ thống.
- Người học phân tích thiết kế hướng đối tượng: Cung cấp mẫu đặc tả use case chuẩn mực, đi kèm hệ thống biểu đồ trình tự (Sequence Diagram) và biểu đồ lớp phân tích (VOPC) cho 11 ca sử dụng nghiệp vụ bán hàng và quản trị dữ liệu.
- Lập trình viên phát triển Web Frontend: Tham khảo cấu trúc cơ sở dữ liệu quan hệ (7 bảng) cho hệ thống bán sách và tài liệu tổng hợp kiến trúc công nghệ ReactJS kết hợp TypeScript, Redux, React Hooks.
Câu hỏi thường gặp
1. Địa chỉ và quy mô thực tế của Cửa hàng sách Tâm An được khảo sát trong đồ án là gì?
Cửa hàng sách Tâm An có địa chỉ tại số 34 đường Hồ Tùng Mậu, phường Mai Dịch, quận Cầu Giấy, Hà Nội; bắt đầu hoạt động từ tháng 2/2020. Cửa hàng có diện tích 200 m², trong đó 2/3 diện tích dùng trưng bày sách và 1/3 diện tích phục vụ độc giả ngồi đọc tại chỗ.
2. Cơ sở dữ liệu của hệ thống gồm bao nhiêu bảng và mối quan hệ giữa các bảng được thiết lập như thế nào?
Cơ sở dữ liệu gồm 7 bảng: USER, CATEGORY, PRODUCT, PRODUCT_IMAGE, SALE_ORDER, ORDER_ITEM và DELIVERY. Ràng buộc dữ liệu gồm: 1 danh mục có 0 hoặc nhiều sách; 1 sách có 1 hoặc nhiều ảnh; 1 tài khoản có 0 hoặc nhiều đơn hàng; 1 đơn hàng có ít nhất 1 chi tiết đơn hàng và chỉ gắn với duy nhất 1 trạng thái giao hàng.
3. Phân hệ quản trị hỗ trợ những chức năng xử lý đơn hàng và tài khoản nào?
Quản trị viên có thể xem danh sách và thông tin chi tiết đơn hàng (họ tên, số điện thoại, địa chỉ người nhận, danh sách sách mua, số lượng), cập nhật trạng thái đơn hàng trong bảng DELIVERY. Với tài khoản, quản trị viên có thể xem chi tiết thông tin, cập nhật phân quyền (Người dùng / Quản trị viên) và xóa tài khoản trong bảng USER.
4. Những đặc trưng kỹ thuật nào của ReactJS được tác giả sử dụng trong đồ án?
Đồ án sử dụng kiến trúc Component, Virtual DOM (tối ưu hóa re-render), cú pháp JSX, cơ chế Props & State, One-way data binding, thư viện quản lý trạng thái Redux (quản lý state tập trung qua actions) và React Hooks (từ phiên bản 16.8 giúp quản lý state mà không cần dùng ES6 Class).
5. Những chức năng quan trọng nào mà hệ thống website chưa thực hiện được?
Theo tác giả tự đánh giá ở Chương 6, hệ thống còn thiếu: chức năng thanh toán trực tuyến, chức năng hủy đơn đặt hàng cho khách hàng, trải nghiệm người dùng chưa hoàn thiện và phía quản trị chưa có module thống kê cũng như in báo cáo thống kê.
Kết luận
Đồ án tốt nghiệp của sinh viên Ngô Chung Á Âu đã hoàn thành quy trình xây dựng website bán sách cho Cửa hàng sách Tâm An từ khâu khảo sát thực địa, mô hình hóa nghiệp vụ hướng đối tượng bằng UML đến thiết kế cơ sở dữ liệu quan hệ và xây dựng giao diện ứng dụng đơn trang với ReactJS và TypeScript. Hệ thống đã hiện thực hóa thành công hai phân hệ website phục vụ việc xem sách, tìm kiếm, đặt hàng của khách hàng và hỗ trợ quản trị danh mục, sản phẩm, tài khoản, đơn hàng cho cửa hàng. Mặc dù vẫn còn những mặt hạn chế về thanh toán trực tuyến và thống kê báo cáo, đồ án đã giải quyết được các yêu cầu nghiệp vụ cơ bản đặt ra trong thực tiễn kinh doanh của cửa hàng.