Chương 1. Giới thiệu đề tài: giới thiệu tổng quan về đề tài. Cơ sở lý thuyết: tóm tắt lý thuyết về các công nghệ được sử dụng trong sản phẩm đề tài. Phân tích và thiết kế hệ thống: mô tả mô hình hệ thống, các sơ đồ use-case ứng với mỗi tính năng, phân tích và thiết kế dữ liệu chi tiết.
Xây dựng website: trình bày bản thiết kế giao diện chi tiết và triển khai chatbot trong ứng dụng. - Kết luận: nhận xét về ưu điểm, khuyết điểm, và hướng phát triển trong tương lai. GIỚI THIỆU ĐỀ TÀI 1.1 Tên đề tài - Xây dựng website thương mại điện tử với chatbot. - Building an e-commerce website with a chatbot.2 Lí do chọn đề tài Với sự phát triển nhanh chóng của ngành thương mại điện tử, mua sắm online dần trở nên quen thuộc với tất cả mọi người, ở mọi lứa tuổi.
Các sàn thương mại điện tử lớn hiện nay như Shopee, Lazada, Tiki đều có phát triển ứng dụng trên mobile để dễ dàng truy cập trên điện thoại. Tuy nhiên, ứng dụng di động không thể thay thế hoàn toàn được website, bởi tính thuận tiện của nó. Trang web có thể truy cập ở bất cứ đâu một cách dễ dàng mà không cần cài đặt gì cả, chỉ cần một trình duyệt và có kết nối Internet. Mong muốn của chúng em là tự tạo nên một website thương mại điện tử dành riêng cho mình, có tích hợp chatbot tương tác tự động với khách hàng và giúp khách hàng dễ dàng tra cứu thông tin.
Đó là lí do nhóm em chọn đề tài này.3 Mô tả sản phẩm - Ứng dụng hỗ trợ người dùng mua hàng, bán hàng trực tuyến. - Triển khai trên môi trường web.4 Chức năng chính - Quản lý tài khoản: Đăng nhập, đăng ký, đổi mật khẩu. - Quản lý sản phẩm theo danh mục. - Rao bán sản phẩm.
- Quản lý thông tin sản phẩm. - Mua sản phẩm. - Đánh dấu yêu thích để mua sau. - Quản lý đơn hàng đã mua, đã bán.
- Hệ thống đánh giá sản phẩm. 2 - Quản lý thông tin cá nhân. - Quản lý mã giảm giá. - Chat với người bán.
- Quản lý kho hàng. - Hỗ trợ thanh toán online. - Chatbot hỗ trợ.5 Công nghệ sử dụng - Figma: lên bản thiết kế giao diện. - HTML, CSS, JavaScript với thư viện React.JS: cài đặt front-end.js với framework Express.JS: cài đặt back-end.io: cung cấp khả năng chat real-time.
- MongoDB: cơ sở dữ liệu. - Github: quản lý mã nguồn.6 Thông tin nhóm Bảng 1.1 Thông tin thành viên nhóm STT Tên thành viên Mã sinh viên Email 1 Trần Đoàn Phương 19520230 19520230@gm.vn 2 Đỗ Đức Tâm 19520253 19520253@gm.vn 3 Chương 2.1 HTML - HTML là viết tắt của cụm tử Hyper Text Markup Language 5 – ngôn ngữ đánh dấu siêu văn bản. - HTML dùng để xây dựng nội dung của trang web, bao gồm các thành phần hình ảnh, văn bản, âm thanh, … - HTML được tạo ra bởi một nhà vật lý học thuộc trung tâm nghiên cứu CERN của Thuỵ Sỹ, Tim Berners Lee. Hiện nay HTML đã trở thành một chuẩn Internet để phát triển website.
- Phiên bản đầu tiên của HTML được công bố lần đầu tiên vào năm 1991, bao gồm 18 thẻ cơ bản. - Các phiên bản tiếp theo của HTML lần lượt được phát hành: HTML2, HTML3, HTML4, và mới nhất là HTML5. Qua mỗi phiên bản, các tính năng được bổ sung và hoàn thiện hơn. Hiện nay HTML5 bao gồm khoảng 140 thẻ.1 Cấu trúc file HTML căn bản 4 2.2 CSS - CSS là viết tắt của cụm từ Cascading Style Sheets.
- CSS được sử dụng để định dạng cho các phần tử HTML, giúp các thành phần trên trang web được hiển thị rõ ràng, hợp lý và đẹp mắt hơn. - CSS được tạo ra bởi Håkon Wium Lie và Bert Bos, ra mắt lần đầu tiên vào ngày 10 tháng 10 năm 1994. Vào thời điểm đó, Lie đang làm việc với Tim Berners-Lee (cha đẻ của HTML) tại CERN. Một số ngôn ngữ định dạng cho trang web cũng được đề xuất cùng với CSS, nên đến năm 1996, phiên bản CSS1 mới chính thức được phát hành.
- Qua các năm, CSS được phát triển lần lượt các phiên bản CSS2, CSS2.1, CSS3 và mới nhất là CSS4. Qua các phiên bản, CSS có nhiều nâng cấp về sự đa dạng thuộc tính, phân chia module. - Ví dụ một đoạn mã CSS đơn giản để thiết lập màu chữ và kích thước chữ cho thẻ <body> Hình 2.2 Cấu trúc CSS cơ bản 2.3 JavaScript - JavaScript là một ngôn ngữ lập trình thông dịch được sử dụng ở cả phía máy chủ và máy khách, được xây dựng dựa trên cú pháp của Java. Cú pháp của JavaScript có nhiều điểm tương đồng với Java.
- JavaScript chủ yếu được sử dụng cho các website nhằm cung cấp cho người dùng trải nghiệm tốt hơn, bao gồm các chức năng: tự động cập nhật trang web, thay đổi nội dung trên trang web, thông báo, xử lý sự kiện, … 5 - Phiên bản đầu tiên của JavaScrip tên là Mocha, ra mắt vào tháng 5 năm 1995, đổi tên thành LiveScript vào tháng 9 năm 1995, và được đổi tên thành JavaScript vào tháng 12 năm 1995. - Ngày nay, JavaScript trở nên vô cùng phổ biến. Hàng loạt các framework và thư viện được xây dựng dựa trên ngôn ngữ JavaScript ra đời, được sử dụng rộng rãi để phát triển các ứng dụng web trên máy khách, điển hình gồm ReactJS, AngularJS, VueJS. - Cách hoạt động của JavaScript: Hình 2.3 Phương thức hoạt động của JavaScript - Khi trình duyệt tải một trang web, HTML parser bắt đầu phân tích cú pháp và tạo DOM.
Khi trình phân tích cú pháp gặp một lệnh, JavaScript engine sẽ đảm nhận việc thực thi lệnh đó. - JavaScript engine tải các tệp JavaScript và các lệnh được nhúng trong mã HTML, nhưng không chạy ngay lập tức, mà đợi HTML và CSS được phân tích hoàn tất, sau đó JavaScript mới được thực thi theo trình tự chúng được 6 tìm thấy trên trang web. Sau khi thực thi, DOM sẽ được cập nhật bởi JavaScript và hiển thị lên trình duyệt. - Trong đồ án, nhóm em đã sử dụng thư viện của JavaScript là ReactJS để xây dựng giao diện ứng dụng.4 Thư viện React.JS - ReactJS là thư viện JavaScript phổ biến nhất hiện nay để xây dựng giao diện người dùng (UI).
Các ứng dụng được xây dựng bằng ReactJS cho tốc độ phản hồi và trải nghiệm tuyệt vời, nhờ cơ chế render linh hoạt. - Thư viện ReactJS được phát triển bởi Facebook, ra mắt năm 2013, có mã nguồn mở và hoàn toàn miễn phí. Hiện nay có nhiều framework để xây dựng UI như Angular, VueJS, tuy nhiên ReactJS vẫn được tin dùng trong các ứng dụng lớn và phức tạp. - Ví dụ sử dụng ReactJS khai báo một component sử dụng cú pháp JSX: Hình 2.4 Một đoạn code trong trong ứng dụng sử dụng React - Ưu điểm của ReactJS: o Dễ sử dụng: ReactJS có nguồn tài liệu phong phú, nên rất dễ tiếp cận đối với những người có kiến thức cơ bản về JavaScript.
ReactJS sử dụng cú pháp JSX, cho phép người dùng viết mã HTML ngay bên trong cấu trúc. o Tái sử dụng code: 7 Các thành phần trong dự án được đóng gói theo từng phần riêng, dễ dàng trong việc quản lý cũng như tái sử dụng code.5 Một vài file components trong ứng dụng o Hiệu suất tốt hơn với Virtual DOM: React sử dụng Virtual DOM (DOM ảo) để thực hiện việc render các components. Khi một component thay đổi hoặc thêm vào trang web, Virtual DOM sẽ nạp component vào như một node trên cây hiển thị, sau đó tự động thực hiện việc thêm vào DOM thực sao cho tối ưu nhất. Virtual DOM giúp giảm các thao tác trên DOM thực, điều này giúp hiệu suất của ứng dụng được tăng lên.
Hạn chế việc tải lại trang, nâng cao trải nghiệm người dùng.JS - NodeJS là một nền tảng cung cấp môi trường runtime để thực thi JavaScript, được sử dụng để chạy các ứng dụng web bên ngoài trình duyệt. - NodeJS được phát triển bởi Ryan Dahl, ra mắt vào năm 2009. Nền tảng được xem là một giải pháp tuyệt vời cho các ứng dụng sử dụng nhiều dữ liệu nhờ vào mô hình hướng sự kiện bất đồng bộ. - Để sử dụng NodeJS, người dùng cần có những kiến thức nhất định về một số giao thức, JavaScript, … - Ưu điểm: o Hướng sự kiện bất đồng bộ, cho phép xử lý nhiều yêu cầu đồng thời.
8 o Sử dụng JavaScript – một ngôn ngữ lập trình phổ biến và dễ làm quen. o Chia sẻ mã nguồn ở cả phía client và server. o NPM (Node Package Manager) phát triển, giúp quản lý package, module dễ dàng. o Cộng đồng sử dụng đông đảo, dễ dàng tìm kiếm thông tin và tài liệu.
o Cho phép stream các file có kích thước lớn. - Nhược điểm: o Không có khả năng mở rộng, vì vậy không thể tận dụng lợi thế mô hình multi core trong các phần cứng của server hiện nay. o Khó thao tác với cơ sử dữ liệu quan hệ. o Yêu cầu nắm vững kiến thức về JavaScript.
o Không phù hợp với các ứng dụng đòi hỏi nhiều tài nguyên CPU.JS hay còn được viết là ExpressJS, là một framework mã nguồn mở miễn phí cho NodeJS. ExpressJS giúp việc thiết kế và xây dựng các ứng dụng web trở nên dễ dàng, tiện lợi. - ExpressJS sử dụng ngôn ngữ JavaScript để xây dựng nên các API (Application Programming Interface), được coi là cầu nối kết nối giữa client và server. - Trong ứng dụng của nhóm em xây dựng, ExpressJS được sử dụng để tạo các routers.
Việc định tuyến bằng Router giúp việc phân chia API theo đối tượng rất dễ dàng.6 Một đoạn code gọi router từ các tệp định tuyến được định nghĩa 9 Hình 2.7 Một đoạn code sử dụng phương thức định tuyến 2.7 MongoDB - MongoDB là một hệ quản trị cơ sở dữ liệu theo dạng NoSQL, có mã nguồn mở, được phát triển bởi công ty MongoDB. MongoDB cho phép lưu trữ và truy xuất dữ liệu dưới dạng JSON Document một cách linh hoạt. - Vởi khả năng mở rộng cao và các tính năng mạnh mẽ như replica set, sharding, index phân tán, map-reduce, MongoDB cho phép xử lý các tác vụ lưu trữ và truy vấn dữ liệu lớn. - Trong ứng dụng, nhóm em sử dụng MongoDB để lưu trữ dữ liệu chính.8 Một đoạn code đối tượng tài khoản trong cơ sở dữ liệu 10 - Các hàm truy vấn dữ liệu được định nghĩa sẵn trong thư viện mongoose, việc truy cập cũng như xử lý được thực hiện rất dễ dàng.9 Một đoạn code gọi hàm xử lý cơ sở dữ liệu 11 Chương 3.
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 3.1 Mô hình hệ thống Hình 3.