1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất

113 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng website thương mại điện tử về nội thất
Tác giả Lương Minh Chiến, Bùi Bá Lộc
Người hướng dẫn Ts. Lê Vĩnh Thịnh
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công nghệ thông tin
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2024
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 113
Dung lượng 9,7 MB

Cấu trúc

  • CHƯƠNG 1: MỞ ĐẦU (22)
    • 1.1. LÝ DO CHỌN ĐỀ TÀI (7)
    • 1.2. MỤC TIÊU (7)
    • 1.3. CÔNG NGHỆ SỬ DỤNG (24)
    • 1.4. PHƯƠNG PHÁP NGHIÊN CỨU (7)
  • CHƯƠNG 2: KIẾN THỨC CƠ BẢN (7)
    • 2.1. TỔNG QUAN VỀ MERN STACK (25)
      • 2.1.1. Khái niệm về MERN Stack (25)
      • 2.1.2. Các thành phần trong MERN stack (25)
      • 2.1.3. Cách thức MERN stack hoạt động (26)
      • 2.1.4. Ưu điểm của MERN Stack (26)
    • 2.2. NODEJS (27)
      • 2.2.1. Tổng quan (27)
      • 2.2.2. Nguyên tắc hoạt động (28)
      • 2.2.3. Ưu điểm (30)
      • 2.2.4. Nhược điểm (30)
    • 2.3. EXPRESSJS (30)
      • 2.3.1. Giới thiệu (30)
      • 2.3.2. Ưu điểm (31)
      • 2.3.3. Nhược điểm (31)
      • 2.3.4. Lý do sử dụng (31)
    • 2.4. REACTJS (31)
      • 2.4.1. Giới thiệu (31)
      • 2.4.2. Ưu điểm (32)
      • 2.4.3. Nhược điểm (32)
    • 2.5. MONGODB (32)
      • 2.5.1. Giới thiệu (32)
      • 2.5.2. Ưu điểm (32)
      • 2.5.3. Nhược điểm (33)
      • 2.5.4. Lý do sử dụng (33)
    • 2.6. CHATBOT (33)
      • 2.6.1. Giới thiệu (33)
      • 2.6.2. Cách hoạt động (33)
      • 2.6.3. Ưu điểm (33)
      • 2.6.4. Nhược điểm (34)
    • 2.7. MATTERPORT (34)
      • 2.7.1. Giới thiệu (34)
      • 2.7.2. Cách hoạt động (34)
      • 2.7.3. Ứng dụng của Matterport (34)
  • CHƯƠNG 3: PHÂN TÍCH VÀ MÔ HÌNH HÓA YÊU CẦU (7)
    • 3.1. KHẢO SÁT CÁC WEBSITE TƯƠNG TỰ (35)
      • 3.1.1 Website “2 Modern” (35)
      • 3.1.2 Website “Zara Home” (36)
    • 3.2. PHÂN TÍCH CHỨC NĂNG HỆ THỐNG (36)
    • 3.3. PHÂN TÍCH YÊU CẦU (37)
    • 3.4. MÔ HÌNH HÓA YÊU CẦU CHỨC NĂNG (38)
      • 3.4.1. Lược đồ Usecase (38)
      • 3.4.2. Đặc tả Usecase (38)
        • 3.4.2.1. Các chức năng dành cho Admin (38)
        • 3.4.2.2. Các chức năng dành cho Staff (48)
        • 3.4.2.3. Các chức năng dành cho Customer (51)
    • 3.5. SEQUENCE DIAGRAM (61)
      • 3.5.1. Chức năng đăng nhập (61)
      • 3.5.2. Chức năng đăng ký (62)
      • 3.5.3. Chức năng tìm kiếm (62)
      • 3.5.4. Chức năng quản lý sản phẩm (63)
      • 3.5.5. Chức năng quản lý category (63)
      • 3.5.6. Chức năng quản lý room (64)
      • 3.5.7. Chức năng quản lý đơn hàng (64)
      • 3.5.8. Chức năng quản lý khách hàng (65)
      • 3.5.9. Chức năng giỏ hàng (65)
      • 3.5.10. Chức năng danh sách yêu thích (66)
    • 3.6. CLASS DIAGRAM (67)
    • 3.7. ACTIVITY DIAGRAN (68)
      • 3.7.1. Chức năng đăng nhập (68)
      • 3.7.2. Chức năng đăng kí (69)
      • 3.7.3. Chức năng quên mật khẩu (70)
      • 3.7.4. Chức năng đổi mật khẩu (71)
      • 3.7.5. Chức năng xem thông tin cá nhân (72)
      • 3.7.6. Chức năng cập nhật thông tin cá nhân (73)
      • 3.7.7. Chức năng thêm sản phẩm (74)
      • 3.7.8. Chức năng cập nhật sản phẩm (75)
      • 3.7.9. Chức năng xem chi tiết sản phẩm (76)
      • 3.7.10. Chức năng tìm kiếm sản phẩm (76)
      • 3.7.11. Chức năng thêm sản phẩm vào giỏ hàng (77)
      • 3.7.12. Chức năng cập nhật giỏ hàng (78)
      • 3.7.13. Chức năng đặt đơn hàng (79)
      • 3.7.14. Chức năng cập nhật trạng thái đơn hàng (80)
      • 3.7.15. Chức năng sản phẩm yêu thích (81)
      • 3.7.16. Chức năng đánh giá sản phẩm (82)
  • CHƯƠNG 4: THIẾT KẾ HỆ THỐNG (7)
    • 4.1. THIẾT KẾ CƠ SỞ DỮ LIỆU (83)
      • 4.1.1. Sơ đồ thiết kế cơ sở dữ liệu (83)
      • 4.1.2. Mô tả thiết kế (83)
        • 4.1.2.1 Bảng user (83)
        • 4.1.2.2 Bảng order (84)
        • 4.1.2.3 Bảng category (85)
        • 4.1.2.4 Bảng room (85)
        • 4.1.2.5 Bảng product (85)
        • 4.1.2.6 Bảng cart (86)
        • 4.1.2.7 Bảng address (86)
    • 4.2. THIẾT KẾ GIAO DIỆN (87)
      • 4.2.1. Giao diện Đăng nhập (87)
      • 4.2.2. Giao diện Đăng ký (87)
      • 4.2.3. Giao diện Trang chủ (88)
      • 4.2.4. Giao diện Chi tiết sản phẩm (88)
      • 4.2.5. Giao diện Giỏ hàng (89)
      • 4.2.6. Giao diện Tìm kiếm sản phẩm (89)
      • 4.2.7. Giao diện quản lý thông tin của người dùng (90)
      • 4.2.8. Giao diện Chi tiết đơn hàng (90)
      • 4.2.9. Giao diện Cập nhật địa chỉ Người dùng (91)
      • 4.2.10. Giao diện Danh sách lịch sử đơn hàng (91)
      • 4.2.11. Giao diện quản lý danh sách yêu thích (92)
      • 4.2.12. Màn hình Thêm mới địa chỉ (92)
      • 4.2.13. Giao diện thanh toán đơn hàng (93)
      • 4.2.14. Giao diện Dashboard Admin (93)
      • 4.2.15. Giao diện Quản lý sản phẩm (94)
      • 4.2.16. Giao diện Thêm sản phẩm (94)
      • 4.2.17. Giao diện Quản lý đơn hàng (95)
      • 4.2.18. Giao diện Cập nhật đơn hàng (95)
      • 4.2.19. Giao diện Quản lý Người dùng (96)
      • 4.2.20. Giao diện Cập nhật quyền người dùng (96)
      • 4.2.21. Giao diện quản lý Danh mục sản phẩm (97)
      • 4.2.22. Giao diện quản lý mã giảm giá (97)
      • 4.2.23. Giao diện quản lý đánh giá (98)
      • 4.2.24. Giao diện cửa hàng 360 độ (98)
  • CHƯƠNG 5: CÀI ĐẶT VÀ KIỂM THỬ (7)
    • 5.1. CÀI ĐẶT (99)
    • 5.2. KẾT QUẢ THỰC HIỆN KIỂM THỬ (99)
      • 5.2.1. Kiểm thử đăng ký (99)
      • 5.2.2. Kiểm thử đăng nhập (100)
      • 5.2.3. Kiểm thử thêm sản phẩm (101)
      • 5.2.4. Kiểm thử vô hiệu hóa sản phẩm (101)
      • 5.2.5. Kiểm thử thêm danh mục sản phẩm (102)
      • 5.2.6. Kiểm thử cập nhật loại sản phẩm (102)
      • 5.2.7. Kiểm thử xóa danh mục sản phẩm (103)
      • 5.2.8. Kiểm thử tìm kiếm sản phẩm (103)
      • 5.2.9. Kiểm thử cập nhật thông tin đơn hàng (104)
      • 5.2.10. Kiểm thử thêm địa chỉ người dùng (104)
      • 5.2.11. Kiểm thử thêm chức năng cập nhật giỏ hàng (105)
      • 5.2.12. Kiểm thử thêm chức năng cập nhật thông tin cá nhân (106)
      • 5.2.13. Kiểm thử chức năng đặt hàng (106)
      • 5.2.14. Kiểm thử chức năng đổi mật khẩu (108)
  • CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (8)
    • 6.1. KẾT QUẢ ĐẠT ĐƯỢC (8)
    • 6.2. ƯU ĐIỂM (8)
    • 6.3. HẠN CHẾ (8)
    • 6.4. HƯỚNG PHÁT TRIỂN (8)
  • TÀI LIỆU THAM KHẢO (8)

Nội dung

Về nội dung đề tài & khối lượng thực hiện: Nội dung đề tài rõ ràng, bám sát mục tiêu xây dựng một website thương mại điện tử về nội thất với các chức năng cần thiết.. Ưu điểm: Các chức n

KIẾN THỨC CƠ BẢN

TỔNG QUAN VỀ MERN STACK

2.1.1 Khái niệm về MERN Stack

MERN viết đầy đủ là MERN stack, là một bộ công nghệ mã nguồn mở liên quan đến JavaScript Gồm các công nghệ: MongoDB, Express, React/React Native và Nodejs

MERN stack đã được công nhận là một lựa chọn đáng tin cậy và hiệu quả cho việc phát triển các ứng dụng web Hơn nữa, tính chất open source của các thành phần trong MERN stack đảm bảo sự hỗ trợ rộng rãi từ cộng đồng, các bản cập nhật liên tục và truy cập vào một loạt các tài nguyên

2.1.2 Các thành phần trong MERN stack

MERN stack là một tập hợp các công nghệ dựa trên JavaScript được sử dụng cùng nhau để phát triển các ứng dụng web Stack này bao gồm MongoDB, Express, React và Node.js

React là một thư viện JavaScript mã nguồn mở cho front-end, dùng để xây dựng giao diện người dùng dựa trên các thành phần

MongoDB là một cơ sở dữ liệu có dạng NoSQL Đặc điểm của nó là không có ràng buộc quan hệ, phân tán, mã nguồn mở, có khả năng lưu trữ, xử lý một lượng rất nhỏ cho tới lượng dữ liệu cực lớn Trong mô hình MEAN stack, MongoDB đóng vai trò là cơ sở dữ liệu cho website và có khả năng kết nối dễ dàng với NodeJS và ExpressJS

NodeJS là một môi trường cho phép chạy JavaScript ở phía server mà không cần trình duyệt Nó có nhiệm vụ tiếp nhận những Request và gửi trả những Response nếu có, cụ thể trong mô hình MEAN stack thì những Request này sẽ đến từ Angular ở phía client hay browser của người dùng NodeJS cũng có nhiệm vụ xử lý những tính toán logic ở phía server, xử lý vấn đề bảo mật như xác thực, phân quyền… hay khả năng thao tác với các tập tin và giao tiếp với cơ sở dữ liệu MongoDB

ExpressJS là một framework của NodeJS, nó cũng cấp thêm những chức năng giúp cho quá trình làm việc bằng NodeJS được dễ dàng hơn, cụ thể có thể là giúp dễ

17 dàng hơn khi xử lý những Request tới những địa chỉ khác nhau từ phía người dùng Nói chung, ExpressJS giúp cho công việc xử lý ở phía backend trở nên dễ dàng và nhanh chóng hơn

2.1.3 Cách thức MERN stack hoạt động

Hình 2 Cách thức Mern stack hoạt động

2.1.4 Ưu điểm của MERN Stack

Vì MERN stack là một môi trường JavaScript toàn diện, nó cung cấp một trải nghiệm mã nguồn mở, nhất quán và có khả năng mở rộng bao trùm toàn bộ quy trình phát triển ứng dụng và phù hợp với lập trình viên ở các mức độ kỹ năng khác nhau Nó cho phép các developer sử dụng một ngôn ngữ duy nhất và một bộ công cụ nhất quán để xây dựng cả front-end và back-end của ứng dụng của họ, giảm thiểu thời gian và độ phức tạp của phát triển

Và vì MERN stack là một framework mã nguồn mở phổ biến, các developer sẽ có được một cộng đồng nhiệt tình và hỗ trợ để chia sẻ kiến thức, giải quyết vấn đề và học hỏi liên tục Ngoài ra, việc không có phí bản quyền có thể mang lại những khoản tiết kiệm chi phí đáng kể

MERN stack xuất sắc trong việc xây dựng các giao diện người dùng tương tác và có khả năng mở rộng Điều này làm cho nó trở thành một lựa chọn tốt cho việc xây dựng các ứng dụng phải xử lý lượng truy cập lớn và đáp ứng sự tăng trưởng nhanh chóng Phần lớn khả năng mở rộng này là nhờ vào việc sử dụng MongoDB, một cơ sở dữ liệu định hướng tài liệu nổi tiếng với tốc độ và hiệu quả trong các hoạt động lưu trữ và truy xuất dữ liệu

MERN stack hỗ trợ nhiều tùy chọn triển khai và nền tảng, bao gồm nhiều môi trường dựa trên đám mây Sự linh hoạt này cho phép các developer chọn nền tảng đám mây phù hợp nhất với yêu cầu của họ

Ngoài ra, MERN stack cung cấp một trải nghiệm phát triển nhất quán trên các nền tảng đa dạng Điều này hữu ích cho việc di chuyển ứng dụng giữa các nền tảng khác nhau, chẳng hạn từ Amazon Web Services (AWS) sang Oracle Cloud Infrastructure (OCI), mà không cần phải thay đổi mã nhiều Khả năng di chuyển này giúp tiết kiệm thời gian và công sức quý báu và đảm bảo sự đồng nhất về giao diện và chức năng, bất kể nền tảng cơ bản.

NODEJS

NodeJS là một framework môi trường hỗ trợ dịch và thực thi chương trình được viết bằng JavaScript mà không cần dùng tới trình duyệt

NodeJS ra đời nhờ những lập trình viên đầu tiên của JavaScript mở rộng nó từ một ngôn ngữ chỉ có thể thực thi trên trình duyệt thành ngôn ngữ có thể thực thi độc lập trên máy tính

NodeJS cũng giống với trình duyệt hiện nay, được chạy dựa trên V8 JavaScript engine - công cụ giúp trình duyệt dịch và thực thi JavaScript Ngoài ra, NodeJS cung cấp một số thư viện không có sẵn trong V8 engine

● Một số khái niệm tiêu biểu trong NodeJS

- Event: mỗi một thao tác, yêu cầu (request) đến server đều được

NodeJS xem là một sự kiện (event)

- Event Queue: hàng đợi sự kiện là nơi tất cả các sự kiện (event) đã đi vào sẽ lần lượt được xử lý theo cơ chế FIFO, tức là các sự kiện đến server trước sẽ được NodeJS xử lý trước, các sự kiện đến server sau sẽ được xử lý sau

- Callbacks: là các thao tác, các xử lý, các hàm sẽ được thực hiện sau khi đã thực thi hoàn thành một hàm định nghĩa callback Việc sử dụng callback giúp cho lập trình viên quản lý các vấn đề về

- Message: nội dung thông báo tương ứng với từng callback

- Blocking I/O: là cơ chế được ứng dụng trong phần lớn các ngôn ngữ server-side, cơ chế này quản lý các request đến server và lần lượt cho thực hiện yêu cầu của request tiếp theo khi request đang xử lý đã hoàn thành Từ đây dễ thấy được rằng nếu các yêu cầu xử lý của request đến sớm tiêu tốn nhiều thời gian thì các request đến sau bắt buộc phải đợi toàn bộ thời gian xử lý này Với NodeJS việc quản lý các request yêu cầu được thay thế bằng cơ chế xử lý Non-Blocking I/O để giải quyết vấn đề thời gian chờ nêu trên

- Thread Pool: là một chương trình viết bằng ngôn ngữ C++ được tích hợp bên trong NodeJS, chương trình này cho phép xử lý đa luồng Đây chính là môi trường xử lý chính cho tất cả tác vụ được server NodeJS xử lý và các tác vụ này cũng được xử lý trên các luồng khác nhau

- Event Loop: là một vòng lặp vô tận, nó chuyển các yêu cầu đã nhận sang Thread Pool, đồng thời mỗi một yêu cầu cũng được tự động đăng ký một Callback, khi yêu cầu được xử lý xong hàm Callback tương ứng sẽ được thực thi

Nguyên tắc hoạt động quan trọng nhất tạo nên khả năng xử lý với tốc độ cao của NodeJS đến từ việc xử lý Non-Blocking Quá trình xử lý này cho phép NodeJS nhận và xử lý đồng thời nhiều tác vụ thông qua duy nhất một luồng xử lý (Single thread) thay vì tạo nhiều luồng xử lý tương ứng với các request ở các ngôn ngữ Server truyền thống

20 đã có Các tác vụ được nhận vào luồng xử lý nếu không được quy định tuần tự thực hiện (phải hoàn thành công việc A trước rồi sau đó bắt đầu thực hiện công việc công việc B) sẽ được cho phép truy cập tài nguyên song song lẫn nhau mà không bị khóa lại (Blocking) đợi tác vụ trước đó Từ đó mà những tác vụ diễn ra không liên quan đến nhau có thể xử lý song song độc lập với nhau, rút ngắn lượng lớn thời gian xử lý cho server NodeJS

Kết hợp với xử lý quá trình xử lý Non-Blocking là Callbacks và Event Loop giúp cho NodeJS quản lý tất cả các tác vụ được được thực thi Cụ thể khi một tác vụ được xử lý Non-Blocking hoàn thành sẽ gửi về 1 Callback với ý nghĩa thông báo với hệ thống rằng tác vụ đã thực hiện xong hoàn toàn Trước đó khi các tác vụ này được định nghĩa thì callback của từng tác vụ cũng đã được đưa vào Event Table để chờ các sự kiện (Event) cho phép thực thi Khi Event mong chờ của tác vụ được diễn ra cũng là lúc các message của tác vụ đang chờ trong Event Table được di chuyển sang Event Queue chờ thực hiện theo nguyên tắc “đến trước thực hiện trước” (First In First Out - FIFO) Song song với quá trình này là quá trình Event Loop thực hiện một vòng lặp vô tận kiểm tra có message nào đang đợi trong Event Queue hay không và Thread Pool có đang thực hiện tác vụ nào hay không, nếu đồng thời có message đang chờ và Thread Pool có thể tiếp nhận tác vụ Event Loop sẽ đưa phần tử đầu tiên của Queue vào Thread Pool xử lý và gửi về callback khi tất cả các message quy định callback tương ứng đã hoàn thành Nếu không còn message nào trong Event Queue vòng lặp Event Loop vẫn luôn luôn được chạy để kiểm tra và xử lý ngay khi có tác vụ chờ

Tổng thể với sự kết hợp giữa các đặc trưng tiêu biểu: Non-Blocking I/O, Callbacks, Event Loop một server NodeJS xử lý bất đồng bộ (asynchronous) các đồng bộ các tác vụ được yêu cầu và trả về kết quả ngay khi các tác vụ được hoàn thành thông qua callback Còn quá trình xử lý và phản hồi callback này được xử lý với sự điều phối, quản lý của vòng lặp vô tận xử lý sự kiện Event Loop lấy từng message của quy định callback thực hiện với tài nguyên hệ thống và phản hồi callback khi tất cả message quy định callback tương ứng đã hoàn thành

NodeJS cung cấp khả năng mở rộng cao NodeJS được nhận xét là dễ mở rộng chương trình cả về chiều rộng lẫn chiều sâu

Vì JavaScript là một trong những ngôn ngữ lập trình phổ biến nhất Những lập trình viên đã biết JavaScript có thể chuyển sang NodeJS mà không gặp nhiều khó khăn

Sử dụng NodeJS, lập trình viên sẽ chỉ cần sử dụng một ngôn ngữ lập trình duy nhất là JavaScript cho cả phần front-end và back-end

Nhờ có tốc độ thông dịch và thực thi nhanh, NodeJS có thêm lợi thế để được chọn làm ngôn ngữ phát triển server-side hiệu quả

Cộng đồng sử dụng NodeJS lớn mạnh cũng giúp các lập trình viên mới tiếp xúc với NodeJS dễ hòa nhập, học hỏi và tháo gỡ khó khăn

Có được sự hỗ trợ từ các công cụ thông dụng tích hợp sẵn trong NodeJS Lập trình viên có thể dễ dàng kiểm tra mã nguồn đã chạy đúng hay chưa với Jasmin trong việc tạo các unit test Tương tự khi cài đặt những thư viện mới phục vụ cho dự án, Node package manager (npm) sẽ là công cụ hỗ trợ đắc lực

Dễ để cho lập trình viên có kinh nghiệm tìm hiểu nhưng lại khá khó cho người mới bắt đầu Đặc biệt là những lập trình viên quen với kiểu lập trình tuần tự (Synchronous)

Vì nó là công nghệ mới, vậy nên thường chỉ thích hợp với những start up Những dự án lớn, quan trọng của các công ty lớn sẽ ít chọn NodeJS để làm.

EXPRESSJS

Express là một framework nhỏ nhưng linh động được xây dựng trên nền tảng NodeJS, framework này cung cấp các chức năng mạnh mẽ để phát triển các ứng dụng web và mobile

Express được sinh ra để làm đơn giản hóa quá trình cấu hình định tuyến, giao tiếp giữa client với server cho lập trình viên Hiện tại framework này đã có thêm nhiều

22 gói trung gian (middleware packages) hỗ trợ đơn giản hóa công việc của lập trình viên như: body-parser, cors, timeout,

Express đang là một trong những framework phổ biến nhất trong lập trình các ứng dụng server-side và được áp dụng trong nhiều framework sử dụng Javascript khác

- Express.js cung cấp một bộ công cụ và API giúp xử lý các phương thức HTTP và quản lý tài nguyên một cách dễ dàng và hiệu quả

- Cộng động đông, phát triển

- Dễ dàng sử dụng, tiếp cận cho người mới

- Tích hợp dễ dàng với các thư viện và công nghệ khác

- Sự linh hoạt trong việc phát triển do đó dẫn đến mỗi nhà phát triển có cách tiếp cận khác nhau gây khó khăn trong việc tìm hiểu mã nguồn của người khác

- Sự linh hoạt cho phép tiếp cận nhiều cách khác nhau

- Thư viện phổ biến trong cộng đồng NodeJs

REACTJS

ReactJS là một thư viện JavaScript được sử dụng để xây dựng các thành phần UI có thể tái sử dụng Theo tài liệu chính thức của React, định nghĩa sau đây được cung cấp:

React là một thư viện để xây dựng các giao diện người dùng có thể kết hợp được

Nó khuyến khích việc tạo ra các thành phần UI có thể tái sử dụng, hiển thị dữ liệu thay đổi theo thời gian Nhiều người sử dụng React như là V trong MVC React trừu tượng hóa DOM khỏi bạn, cung cấp một mô hình lập trình đơn giản hơn và hiệu suất tốt hơn React cũng có thể render trên server sử dụng Node và có thể cung cấp sức mạnh cho các ứng dụng native sử dụng React Native React triển khai luồng dữ liệu phản ứng một chiều, giảm thiểu mã boilerplate và dễ dàng hơn để hiểu so với ràng buộc dữ liệu truyền thống

Sử dụng virtual DOM là một đối tượng JavaScript Điều này sẽ cải thiện hiệu suất của ứng dụng, vì virtual DOM của JavaScript nhanh hơn so với DOM thông thường

Có thể được sử dụng cả trên phía client và server, cũng như với các framework khác

Các pattern về component và dữ liệu cải thiện khả năng đọc mã, giúp duy trì các ứng dụng lớn hơn dễ dàng hơn

Chỉ bao gồm lớp view của ứng dụng, do đó bạn vẫn cần chọn các công nghệ khác để có một bộ công cụ hoàn chỉnh cho phát triển

Sử dụng inline templating và JSX, điều này có thể gây khó khăn cho một số developer.

MONGODB

MongoDB là một cơ sở dữ liệu không sử dụng cấu trúc (NoSQL) được thiết kế để lưu trữ và truy xuất dữ liệu một cách linh hoạt Trái ngược với các cơ sở dữ liệu quan hệ, MongoDB không sử dụng các bảng, hàng, và cột để lưu trữ dữ liệu Thay vào đó, MongoDB sử dụng lưu trữ dữ liệu dưới dạng tài liệu BSON (Binary JSON), mỗi tài liệu tương ứng với một bản ghi độc lập Do đó, trong một collection, các tài liệu có thể có kích thước và cấu trúc khác nhau Sự linh hoạt này giúp MongoDB xử lý dữ liệu động và đa dạng một cách hiệu quả

- Dễ dàng cài đặt: Quá trình cài đặt MongoDB là tương đối đơn giản và nhanh chóng, không mất quá 30 phút để hoàn thành Có thể bắt đầu sử dụng MongoDB một cách dễ dàng và nhanh chóng sau quá trình cài đặt

- Tính linh hoạt: Dữ liệu trong MongoDB linh hoạt vì nó được lưu trữ dưới dạng các tài liệu JSON Các tài liệu JSON có thể có bất kỳ số lượng trường nào, với bất kỳ kiểu dữ liệu nào Điều này cho phép lưu trữ dữ liệu một cách linh hoạt,

- Tích hợp nhiều ngôn ngữ: MongoDB có thể được tích hợp với nhiều ngôn ngữ lập trình phổ biến, bao gồm JavaScript, Python, Java, Ruby, Node.js, và nhiều ngôn ngữ

24 khác MongoDB cung cấp các driver chính thức cho các ngôn ngữ này, giúp việc truy cập và quản lý cơ sở dữ liệu MongoDB trở nên dễ dàng

- Không có ràng buộc: MongoDB không có các ràng buộc dữ liệu như RDBMS, vì vậy khi thao tác với MongoDB, cần hết sức cẩn thận để tránh các lỗi dữ liệu

- Không hỗ trợ JOIN: MongoDB không hỗ trợ JOIN giống như Cơ sở dữ liệu quan hệ, có thể mã hóa thủ công nhưng có thể gây chậm và ảnh hưởng hiệu suất

- Tính linh hoạt và độ mở rộng

- Tương thích tốt với NodeJs thông qua Mongoose

CHATBOT

- Chatbot là các chương trình máy tính được thiết kế để mô phỏng cuộc trò chuyện của con người Chatbot sử dụng GPT-4, một mô hình ngôn ngữ tự nhiên tiên tiến, có khả năng tạo ra các phản hồi văn bản dựa trên đầu vào của người dùng

- GPT-4 (Generative Pre-trained Transformer 4) là phiên bản thứ tư của loạt mô hình GPT do OpenAI phát triển GPT-4 được huấn luyện trên một lượng lớn dữ liệu văn bản và có khả năng hiểu và tạo ra ngôn ngữ tự nhiên với độ chính xác cao

- Huấn Luyện Trước (Pre-training): GPT-4 được huấn luyện trên một tập dữ liệu rất lớn bao gồm sách, bài báo, trang web, và nhiều nguồn khác để học cách sử dụng ngôn ngữ

- Điều Chỉnh (Fine-tuning): Sau khi huấn luyện trước, mô hình được điều chỉnh trên các tập dữ liệu cụ thể để cải thiện hiệu suất trong các nhiệm vụ nhất định

- Khả năng hiểu biết tốt, tạo ra ngôn ngữ gần giống với ngôn ngữ con người

- Có thể thực hiện nhiều nhiệm vụ khác nhau trong cùng một khung hình

- Độ chính xác của thông tin đôi lúc chưa cao

- Yêu cầu tài nguyên để tính toán và triển khai

PHÂN TÍCH VÀ MÔ HÌNH HÓA YÊU CẦU

KHẢO SÁT CÁC WEBSITE TƯƠNG TỰ

- Giao diện và thiết kế: Website có một giao diện đẹp và hấp dẫn Thiết kế website sử dụng màu sắc tươi sáng và hình ảnh chất lượng cao, tạo cảm giác trực quan và hứng thú Các thành phần giao diện được bố trí một cách hợp lý và dễ hiểu, giúp người dùng dễ dàng tìm kiếm thông tin và sản phẩm

- Trải nghiệm người dùng: Website cung cấp một trải nghiệm người dùng tốt Quá trình mua hàng được thực hiện một cách thuận tiện và dễ dàng, với các tùy chọn thanh toán và giao hàng linh hoạt

- Nhược điểm : Giao diện quá nhiều chữ gây rối mắt , thanh menu dọc chưa có nhiều thông tin như event, một số loại sách tiêu biểu, chưa tạo nhiều event cho khách hàng

- Giao diện và thiết kế: Website nội thất “Zara Home” có giao diện sạch đẹp và chuyên nghiệp Thiết kế website tập trung vào hiển thị sản phẩm và nội dung chính, giúp người dùng dễ dàng tìm kiếm thông tin và mua sắm

- Nội dung: Website cung cấp nội dung đầy đủ về các sản phẩm, bao gồm thông tin chi tiết, giá cả và đánh giá từ khách hàng Điều này giúp người dùng có đủ thông tin để đưa ra quyết định mua hàng

- Tìm kiếm sản phẩm: Giao diện tìm kiếm trên trang web có thể cần được cải thiện để người dùng dễ dàng tìm kiếm và lọc sản phẩm theo các tiêu chí cụ thể

PHÂN TÍCH CHỨC NĂNG HỆ THỐNG

Bảng 1 Phân tích chức năng hệ thống

- Quản lý loại sản phẩm

- Quản lý thông tin sản phẩm

- Quản lý danh mục sản phẩm

- Quản lý địa chỉ giao hàng

- Quản lý thông tin cá nhân

- Đặt hàng và thanh toán

- Theo dõi trạng thái đơn hàng

- Xem lịch sử đơn hàng

- Xem thông tin sản phẩm

- Quản lý danh sách yêu thích

- Có các chức năng cơ bản của người dùng

- Quản lý danh sách người dùng

- Cập nhật trạng thái đơn hàng

PHÂN TÍCH YÊU CẦU

- Đáp ứng nhu cầu thị trường, thông tin sản phẩm luôn được cập nhật đáp ứng nhu cầu của người mua

- Hỗ trợ tư vấn người mua sản phẩm, tiết kiệm được chi phí và thời gian

- Màu sắc bắt mắt phù hợp với lĩnh vực quảng cáo giới thiệu marketing

- Dễ sử dụng cho khách hàng

- Hỗ trợ quản trị viên quản lý tốt website

MÔ HÌNH HÓA YÊU CẦU CHỨC NĂNG

3.4.2.1 Các chức năng dành cho Admin

Hình 6 Usecase Admin đăng nhập

Bảng 2 Usecase Admin đăng nhập

Tên Usecase Đăng nhập admin

Mô tả Usecase Usecase này cho phép admin đăng nhập vào hệ thống, khôi phục lại mật khẩu

Tiền điều kiện Không có

Hậu điều kiện Đăng nhập thành công

1 Người dùng truy cập vào trang đăng nhập

2 Hệ thống giao diện đăng nhập

3 Người dùng nhập thông tin tên người dùng và mật khẩu

4 Hệ thống kiểm tra thông tin hợp lệ

5 Hệ thống đăng nhập cho người dùng thành công

3a Người dùng chọn nút quên mật khẩu, hệ thống điều hướng đến trang quên mật khẩu

3b Người dùng nhập email khôi, xác nhận mật khẩu, nhập mã xác nhận

3c Hệ thống xác nhận khôi phục mật khẩu thành công, chuyển hướng đến trang đăng nhập, Tiếp tục các bước 3, 4, 5

Luồng ngoại lệ 4a Hệ thống kiểm tra thông tin không hợp lệ, Usecase kết thúc

Hình 7 Usecase Admin xem báo cáo Bảng 3 Usecase Admin xem báo cáo

Tên Usecase Xem báo cáo

Use case này cho phép Admin thực hiện xem thống kê báo cáo doanh thu của toàn hệ thống, theo tháng, theo năm hoặc của từng khách hàng

Tiền điều kiện Đăng nhập thành công vào hệ thống quản lý hệ thống với vai trò

1 Admin vào phần “Manager” và chọn phẩn xem thống kê

2 Hệ thống hiển thị các kết quả thống kê

Luồng ngoại lệ Không có

Hình 8 Usecase Admin quản lý người dùng Bảng 4 Usecase Admin quản lý người dùng

Tên Usecase Quản lý người dùng

Mô tả Usecase Use case này cho phép Admin thực hiện thao tác xem thông tin nguyền dùng và cập nhật quyền người dùng

Tiền điều kiện Đăng nhập thành công vào hệ thống quản lý hệ thống với vai trò

+ Thông báo thao tác thực hiện thành công

+ Các thay đổi được lưu vào hệ thống

1 Admin chọn chức năng “Quản lý người dùng”

2 Hệ thống hiển thị danh sách tất cả các người dùng của hệ thống quản lý

3 Admin chọn người dùng cần cập nhật quyền, chọn quyền mới và chọn “Cập nhật”

4 Hệ thống vô hiệu hóa người dùng Admin đã chọn và thông báo

“Cập nhật thành công thành công”

Luồng thay thế Không có

Luồng ngoại lệ Không có

Hình 9 Usecase Admin quản lý đơn hàng Bảng 5 Usecase Admin Quản lý đơn hàng

Tên Usecase Quản lý đơn hàng

Mô tả Usecase Use case này cho phép Admin thực hiện thao tác xem thông tin chi tiết đơn hàng, cập nhật trạng thái đơn hàng và hủy đơn hàng

Tiền điều kiện Đăng nhập thành công vào hệ thống quản lý hệ thống với vai trò

+ Thông báo thao tác thực hiện thành công

+ Các thay đổi được lưu vào hệ thống

1 Admin chọn chức năng “Order” trong danh mục “Manager”

2 Hệ thống hiển thị danh sách đơn hàng trên hệ thống

3 Admin chọn đơn hàng cần cập nhật từ processing sang dispathced để xác nhận đơn hàng

4 Hệ thống kiểm tra thông tin hợp lệ

5 Hệ thống thông báo thành công và cập nhật trạng thái đơn hàng từ PROCESSING sang DISPATHED

Luồng thay thế 3a Admin chọn “Cancel Order” để hủy đơn hàng

4b Hệ thống kiểm tra, có các thông tin thay đổi không hợp lệ

5b Thông báo lỗi, Use case dừng lại

Hình 10 Usecase Admin quản lý sản phẩm Bảng 6 Usecase Admin Quản lý sản phẩm

Tên Usecase Quản lý sản phẩm

Mô tả Usecase Use case này cho phép Admin thực hiện thao tác xem, sửa sản phẩm, vô hiệu xóa và hủy vô hiệu hóa sản phẩm

Tiền điều kiện Đăng nhập thành công vào hệ thống quản lý hệ thống với vai trò

+ Thông báo thao tác thực hiện thành công

+ Các thay đổi được lưu vào hệ thống

1 Admin chọn chức năng “Quản lý sản phẩm”

2 Hệ thống hiển thị danh sách tất cả các sản phẩm

4 Hệ thống hiện giao diện để Admin điền thông tin tạo mới sản phẩm

5 Admin nhập thông tin sau đó chọn “Tạo”

6 Hệ thống kiểm tra thông tin hợp lệ

7 Hệ thống lưu thông tin sản phẩm vào thông báo “Thao tác thành công”

3a Admin chọn sản phẩm cần cập nhật thông tin và chọn “Sửa” 4a Hệ thống hiện form để Admin điền thông tin cập nhật sản phẩm 5a Admin sửa thông tin sản phẩm sau đó chọn “Sửa”

Tiếp tục thực hiện bước 6 và bước 7

3b Admin chọn sản phẩm cần vô hiệu hóa và chọn “Vô hiệu hóa” Tiếp tục thực hiện bước 7

3c Admin chọn sản phẩm cần hủy vô hiệu hóa và chọn “Hủy vô hiệu hóa”

Tiếp tục thực hiện bước 7

6a Hệ thống kiểm tra các thông tin nhập vào không hợp lệ 7a Thông báo lỗi “Thông tin sản phẩm không hợp lệ”, Usecase dừng lại

Hình 11 Usecase Admin quản lý danh mục Bảng 7 Usecase Admin Quản lý danh mục

Tên Usecase Quản lý danh mục

Use case này cho phép Admin thực hiện thao tác thêm, sửa đổi danh mục và vô hiệu hóa, hủy vô hiệu hóa danh mục trong hệ thống

Tiền điều kiện Đăng nhập thành công vào hệ thống quản lý hệ thống với vai trò

+ Thông báo thao tác thực hiện thành công

+ Các thay đổi được lưu vào hệ thống

1 Admin chọn chức năng “Quản lý danh mục”

2 Hệ thống hiển thị danh sách tất cả các danh mục

4 Hệ thống hiện form để Admin điền thông tin tạo mới danh mục

5 Admin nhập thông tin sau đó chọn “Tạo”

6 Hệ thống kiểm tra thông tin hợp lệ

7 Hệ thống lưu thông tin danh mục vào thông báo “Thao tác thành công”

3a Admin chọn danh mục cần cập nhật thông tin và chọn “Sửa” 4a Hệ thống hiện form để Admin điền thông tin cập nhật danh mục

5a Admin sửa thông tin danh mục sau đó chọn “Sửa”

Tiếp tục thực hiện bước 6 và bước 7

3b Admin chọn danh mục cần vô hiệu hóa và chọn “Vô hiệu hóa” Tiếp tục thực hiện bước 7

3c Admin chọn danh mục cần hủy vô hiệu hóa và chọn “Hủy vô hiệu hóa”

Tiếp tục thực hiện bước 7

6a Hệ thống kiểm tra các thông tin nhập vào không hợp lệ

7a Thông báo lỗi “Thông tin danh mục không hợp lệ”, Usecase dừng lại

Hình 12 Usecase Admin quản lý đánh giá

Bảng 8 Usecase Admin Quản lý danh mục

Tên Usecase Quản lý đánh giá

Mô tả Usecase Use case này cho phép Admin thực hiện xem và duyệt đánh giá của customer trong mục quản lý đánh giá của hệ thống

Tiền điều kiện Đăng nhập thành công vào hệ thống quản lý hệ thống với vai trò

+ Thông báo thao tác thực hiện thành công

+ Các thay đổi được lưu vào hệ thống

1 Admin chọn chức năng “Quản lý đánh giá”

2 Hệ thống hiển thị danh sách tất cả các đánh giá

3 Admin chọn đánh giá cần thao tác

4 Hệ thống hiển thị button ẩn hoặc hiện theo trạng thái của đánh giá để admin tiến hành thao tác

5 Admin nhấn button ẩn hoặc hiện

6 Hệ thống hiển thị thông báo “Cập nhật đánh giá thành công”

Luồng thay thế Không có

Luồng ngoại lệ Không có

3.4.2.2 Các chức năng dành cho Staff

Hình 13 Usecase Staff đăng nhập Bảng 9 Usecase Staff Đăng nhập

Tên Usecase Đăng nhập Staff

Mô tả Usecase Usecase này cho phép Staff đăng nhập vào hệ thống

Tiền điều kiện Không có

Hậu điều kiện Đăng nhập thành công

1 Người dùng truy cập vào trang đăng nhập

2 Hệ thống giao diện đăng nhập

3 Người dùng nhập thông tin tên người dùng và mật khẩu

4 Hệ thống kiểm tra thông tin hợp lệ

5 Hệ thống đăng nhập cho người dùng thành công

3a Người dùng chọn nút quên mật khẩu, hệ thống điều hướng đến trang quên mật khẩu

3b Người dùng nhập email khôi, xác nhận mật khẩu, nhập mã xác nhận

3c Hệ thống xác nhận khôi phục mật khẩu thành công, chuyển hướng đến trang đăng nhập,

Luồng ngoại lệ 4a Hệ thống kiểm tra thông tin không hợp lệ, Usecase kết thúc

Hình 14 Usecase Staff quản lý người dùng Bảng 10 Usecase Staff Quản lý người dùng

Tên Usecase Quản lý người dùng

Mô tả Usecase Use case này cho phép Staff thực hiện thao tác xem thông tin nguyền dùng

Tiền điều kiện Đăng nhập thành công vào hệ thống quản lý hệ thống với vai trò

Hậu điều kiện Hệ thống hiển thị thông tin người dùng

1 Staff chọn chức năng “Quản lý người dùng”

2 Hệ thống hiển thị danh sách tất cả các người dùng của hệ thống quản lý

3 Staff chọn người dùng cần xem thông tin

4 Hệ thống hiển thị thông cơ bản của người dùng

Luồng thay thế Không có

Luồng ngoại lệ Không có

Hình 15 Usecase Staff quản lý đơn hàng Bảng 11 Usecase Staff Quản lý đơn hàng

Tên Usecase Quản lý đơn hàng

Mô tả Usecase Use case này cho phép Staff thực hiện thao tác xem thông tin chi tiết đơn hàng, cập nhật trạng thái đơn hàng và hủy đơn hàng

Tiền điều kiện Đăng nhập thành công vào hệ thống quản lý hệ thống với vai trò

+ Thông báo thao tác thực hiện thành công

+ Các thay đổi được lưu vào hệ thống

1 Staff chọn chức năng “Order” trong danh mục “Manager”

2 Hệ thống hiển thị danh sách đơn hàng trên hệ thống

3 Staff chọn đơn hàng cần cập nhật từ processing sang dispathced để xác nhận đơn hàng

4 Hệ thống kiểm tra thông tin hợp lệ

5 Hệ thống thông báo thành công và cập nhật trạng thái đơn hàng từ PROCESSING sang DISPATHED

Luồng thay thế 3a Staff chọn “Cancel Order” để hủy đơn hàng

4b Hệ thống kiểm tra, có các thông tin thay đổi không hợp lệ 5b Thông báo lỗi, Use case dừng lại

3.4.2.3 Các chức năng dành cho Customer

Hình 16 Usecase Customer đăng ký Bảng 12 Usecase Customer đăng ký

Mô tả Usecase Usecase này cho phép Customer đăng ký tài khoản mới

Tiền điều kiện Không có

Hậu điều kiện Đăng ký thành công

1 Người dùng truy cập vào trang đăng kí

2 Hệ thống giao diện đăng kí

3 Người dùng nhập thông tin tên người dùng và mật khẩu, và các thông tin cá nhân cần thiết

4 Hệ thống kiểm tra thông tin hợp lệ

5 Hệ thống đăng nhập cho người dùng thành công

Luồng ngoại lệ 4a Hệ thống kiểm tra thông tin không hợp lệ, Usecase kết thúc

Hình 17 Usecase Customer đăng nhập Bảng 13 Usecase Customer Đăng nhập

Tên Usecase Đăng nhập Customer

Mô tả Usecase Usecase này cho phép Customer đăng nhập vào hệ thống, khôi phục lại mật khẩu

Tiền điều kiện Không có

Hậu điều kiện Đăng nhập thành công

1 Người dùng truy cập vào trang đăng nhập

2 Hệ thống giao diện đăng nhập

3 Người dùng nhập thông tin tên người dùng và mật khẩu

4 Hệ thống kiểm tra thông tin hợp lệ

5 Hệ thống đăng nhập cho người dùng thành công

3a Người dùng chọn nút quên mật khẩu, hệ thống điều hướng đến trang quên mật khẩu

3b Người dùng nhập email khôi, xác nhận mật khẩu,

44 nhập mã xác nhận 3c Hệ thống xác nhận khôi phục mật khẩu thành công, chuyển hướng đến trang đăng nhập,

Luồng ngoại lệ 4a Hệ thống kiểm tra thông tin không hợp lệ, Usecase kết thúc

3.4.2.3.3 Quản lý thông tin cá nhân

Hình 18 Usecase Customer quản lý thông tin Bảng 14 Usecase Customer Quản lý tài khoản và thông tin cá nhân

Tên Usecase Quản lý tài khoản và thông tin cá nhân

Mô tả Usecase Use case này cho phép Customer thay đổi thông tin cá nhân, đổi mật khẩu

Tiền điều kiện Đăng nhập thành công vào hệ thống mua hàng với vai trò Customer

+ Các thay đổi được lưu thành công vào hệ thống + Thông báo thay đổi thành công

1 Khách hàng truy cập vào trang quản lý tài khoản

2 Hệ thống hiển thị form thông tin tài khoản

3 Người dùng chỉnh sửa thông tin tài khoản và chọn “Lưu”

4 Hệ thống kiểm tra thông tin hợp lệ

5 Hệ thống lưu thay đổi và thông báo thành công

1a Người dùng chọn truy cập vào trang đổi mật khẩu 1b Hệ thống hiển thị trang đổi mật khẩu

1c Người dùng cập nhật mật khẩu mới, ấn vào nút Xác nhận 1d Hệ thống kiểm tra thông tin hợp lệ, Thông báo cập nhật mật khẩu mới thành công

Luồng ngoại lệ 4b Hệ thống kiểm tra thông tin không hợp lệ, Usecase dừng lại

3.4.2.3.4 Quản lý địa chỉ giao hàng

Hình 19 Usecase Customer quản lý địa chỉ giao hàng Bảng 15 Usecase Customer Quản lý địa chỉ giao hàng

Tên Usecase Quản lý địa chỉ giao hàng

Mô tả Usecase Use case này cho phép Customer thêm, cập nhật lại địa chỉ giao hàng, xóa địa chỉ giao hàng

Tiền điều kiện Đăng nhập thành công vào hệ thống mua hàng với vai trò

Customer và vào trang quản lý địa chỉ

+ Thông báo thao tác thực hiện thành công

+ Các thay đổi được lưu vào hệ thống

1 Khách hàng truy cập vào trang quản lý tài khoản

2 Chọn vào mục thêm mới địa chỉ

3 Người dùng chỉnh sửa thông tin địa chỉ và chọn “Lưu”

4 Hệ thống kiểm tra thông tin hợp lệ

5 Hệ thống lưu thay đổi và thông báo thành công

2a Chọn vào cập nhập một địa chỉ có sẵn 3a Người dùng chỉnh sửa thông tin địa chỉ và chọn “Lưu”

4a Hệ thống kiểm tra thông tin hợp lệ 5a Hệ thống lưu thay đổi và thông báo thành công

4b Hệ thống kiểm tra thông tin không hợp lệ, Usecase dừng lại

4a4a Hệ thống kiểm tra thông tin không hợp lệ, Usecase dừng lại

Hình 20 Usecase Customer quản lý giỏ hàng

Bảng 16 Usecase Quản lý giỏ hàng

Tên use case Quản lý giỏ hàng

Mô tả use case Use case này cho phép Customer thêm, xóa, thay đổi số lượng sản phẩm trong giỏ hàng của mình, và tạo đơn hàng

Tiền điều kiện Đăng nhập thành công vào hệ thống mua hàng với vai trò Customer

Hậu điều kiện Thông báo khi sản phẩm được thêm vào giỏ hàng

Các thay đổi được lưu vào hệ thống

1 Khách hàng truy cập vào trang Giỏ hàng

2 Khách hàng chọn sản phẩm cần thay đổi số lượng

3 Hệ thống hiển thị số lượng hiện tại của sản phẩm trong giỏ hàng

4 Khách hàng chỉnh sửa số lượng sản phẩm

5 Hệ thống kiểm tra số lượng hợp lệ

6 Hệ thống lưu thay đổi và thông báo thao tác thành công

1a Khách hàng truy cập trang chi tiết sản phẩm 2a Khách hàng nhập số lượng và chọn ‘Thêm vào giỏ hàng’

Tiếp tục bước 5 2b Khách hàng chọn sản phẩm cần xóa khỏi giỏ hàng và chọn “Xóa” Tiếp tục bước 6

5a Người dùng chọn nút”Place Order” để tiến hành đặt hàng

5a Số lượng sản phẩm âm hoặc vượt quá số lượng tồn kho, thông báo lỗi, Usecase dừng lại

4b1 Khách hàng không xác nhận xóa, Usecase dừng lại

Hình 21 Usecase Customer tìm kiếm sản phẩm Bảng 17 Usecase Tìm kiếm sản phẩm

Tên Usecase Tìm kiếm sản phẩm

Mô tả Usecase Use case này cho phép Customer thực hiện thao tác tìm kiếm sản phẩm theo tên, theo danh mục

Tiền điều kiện Đăng nhập thành công vào hệ thống quản lý hệ thống với vai trò

Hậu điều kiện Hệ thống hiển thị kết quả tìm kiếm cho người dùng

1 Nhập từ khóa cần tìm vào ô tìm kiếm

2 Nhấn vào biểu tượng tìm kiếm

3 Hệ thống tiến hành ghi nhận từ khóa và trả về kết quả cho người dùng chọn các biểu tượng thuộc tính sách trong bộ lọc mà người dùng mong muốn để tìm kiếm chính xác sách

Luồng thay thế Không có

3a Hệ thống không tìm thấy dữ liệu và trả kết quả rỗng Use case dừng lại

Hình 22 Usecase Customer quản lý đơn hàng Bảng 18 Usecase Quản lý đơn hàng Customer

Tên Usecase Quản lý đơn hàng

Mô tả Usecase Use case này cho phép Customer thực hiện thao tác xem thông tin chi tiết đơn hàng và hủy đơn hàng

Tiền điều kiện Đăng nhập thành công vào hệ thống quản lý hệ thống với vai trò

+ Thông báo thao tác thực hiện thành công

+ Các thay đổi được lưu vào hệ thống

1 Customer chọn chức năng “My Order”

2 Hệ thống hiển thị danh sách đơn hàng trên hệ thống

3 Customer chọn đơn hàng cần xem thông tin chi tiết

4 Hệ thống hiển thị thông tin chi tiết đơn hàng

Luồng thay thế 4a Staff chọn “Cancel Order” để hủy đơn hàng

Luồng ngoại lệ Không có

Hình 23 Usecase Customer quản lý đánh giá Bảng 19 Usecase Quản lý đơn hàng Customer

Tên Usecase Quản lý đánh giá

Mô tả Usecase Use case này cho phép Customer xem đánh giá của sản phẩm, cũng như đánh giá một sản phẩm

Tiền điều kiện Đăng nhập thành công vào hệ thống quản lý hệ thống với vai trò

+ Thông báo thao tác thực hiện thành công

+ Các thay đổi được lưu vào hệ thống

1 User chọn sản phẩm muốn đánh giá

2 Hệ thống hiển thị danh sách tất cả các đánh giá của sản phẩm đó

3 User điền thông tin muốn đánh giá

4 User chọn nút đánh giá

5 Hệ thống hiển thị thông báo “Đánh giá thành công”

Luồng thay thế Không có

4a Hệ thống kiểm tra customer chưa từng mua sản phẩm này Usecase dừng lại

3.4.2.3.9 Quản lý danh mục yêu thích

Hình 24 Usecase Customer quản lý danh mục yêu thích Bảng 20 Usecase Quản lý sản phẩm yêu thích

Tên Usecase Quản lý sản phẩm yêu thích

Mô tả Usecase Use case này cho phép Customer xem xóa sửa sản phẩm yêu thích

Tiền điều kiện Đăng nhập thành công vào hệ thống quản lý hệ thống với vai trò

+ Thông báo thao tác thực hiện thành công

+ Các thay đổi được lưu vào hệ thống

1 Khách hàng truy cập vào trang Xem sản phẩm hoặc Chi tiết sản phẩm

2 Khách hàng chọn biểu tượng trái tim (chưa được filled) để thêm sản phẩm vào danh sách yêu thích

3 Cập nhật danh sách sản phẩm yêu thích

2a Khách hàng chọn biểu tượng trái tim (được filled) để gỡ sản phẩm khỏi danh sách yêu thích

Luồng ngoại lệ Không có

SEQUENCE DIAGRAM

Hình 25 Sequence diagram đăng nhập

Hình STYLEREF 1 \s 3 SEQ Hình \* ARABIC \s 1 13 Sequence diagram đăng nhập

Hình 26 Sequence diagram đăng ký 3.5.3 Chức năng tìm kiếm

Hình 27 Sequence diagram tìm kiếm

3.5.4 Chức năng quản lý sản phẩm

Hình 28 Sequence diagram quản lí sản phẩm

3.5.5 Chức năng quản lý category

Hình 29 Sequence diagram quản lí cateogry

3.5.6 Chức năng quản lý room

Hình 30 Sequence diagram quản lý room 3.5.7 Chức năng quản lý đơn hàng

Hình 31 Sequence diagram quản lý đơn hàng

3.5.8 Chức năng quản lý khách hàng

Hình 32 Sequence diagram quản lí khách hàng

Hình 33 Sequence diagram chức năng giỏ hàng

3.5.10 Chức năng danh sách yêu thích

Hình 34 Sequence diagram chức năng danh sách yêu thích

CLASS DIAGRAM

Hình 35 Class diagram tổng quát

THIẾT KẾ HỆ THỐNG

THIẾT KẾ CƠ SỞ DỮ LIỆU

4.1.1 Sơ đồ thiết kế cơ sở dữ liệu

Hình 52 Sơ đồ thiết kế cơ sở dữ liệu 4.1.2 Mô tả thiết kế

Bảng 21 Bảng mô tả thuộc tính của User

STT Thuộc tính Kiểu dữ liệu Mô tả

2 firstname String Tên người dùng

4 username String Tên đăng nhập

5 password String Mật khẩu đăng nhập

6 email String Địa chỉ email

7 phoneNumber String Số điện thoại

8 role String Vai trò người dùng

9 wishlist ObjectId Danh sách yêu thích

Bảng 22 Bảng mô tả thuộc tính của order STT Thuộc tính Kiểu dữ liệu Mô tả

1 _id ObjectId Id mặc định mongodb

2 orderId String Mã đơn hàng

2 PaymentMethod String Phương thức thanh toán

3 PaymentStatus String Trạng thái thanh toán

4 name String Tên người nhận hàng

5 email String Địa chỉ email

6 phoneNumber String Số điện thoại

7 products Array[Object] Các sản phẩm trong đơn hàng

8 total Number Tổng đơn hàng

9 addressShipping Array[Object] Địa chỉ giao hàng

10 status String Trạng thái đơn hàng

11 orderTime Date Ngày tạo đơn hàng

12 orderby ObjectId Người dùng tạo đơn hàng

13 coupon ObjectId Mã giảm giá

Bảng 23 Bảng mô tả thuộc tính của category

STT Thuộc tính Kiểu dữ liệu Mô tả

3 slug String Đường dẫn category

Bảng 24 Bảng mô tả thuộc tính của room STT Thuộc tính Kiểu dữ liệu Mô tả

3 categories Array[Object] Danh sách các category thuộc phòng

Bảng 25 Bảng mô tả thuộc tính của product STT Thuộc tính Kiểu dữ liệu Mô tả

2 code String Mã sản phẩm

3 name String Tên sản phẩm

4 description String Mô tả sản phẩm

5 shortDescription String Mô tả ngắn gọn sản phẩm

6 images Array[Object] Ảnh sản phẩm

7 category ObjectId Danh mục sản phẩm

9 specs Array[Object] Mô tả các thuộc tính sản phẩm

10 price Number Giá sản phẩm

11 sale Number Giảm giá theo %

12 priceSale Number Giá sản phẩm sau khi giảm giá

13 quantity Number Số lượng sản phẩm

14 sold Number Số lượng đã bán

15 totalrating String Tổng sao đánh giá

16 enable Boolean Cho phép ẩn hiện sản phẩm

Bảng 26 Bảng mô tả thuộc tính của cart STT Thuộc tính Kiểu dữ liệu Mô tả

2 products Array[Object] Các sản phẩm trong giỏ hàng

3 cartTotal Number Tổng giá giỏ hàng

4 userId ObjectId Mã Id người dùng

Bảng 27 Bảng mô tả thuộc tính của address

STT Thuộc tính Kiểu dữ liệu Mô tả

2 nameAddress String Tên địa chỉ

6 note String Ghi chú về địa chỉ

8 userId ObjectId Mã Id người dùng

CÀI ĐẶT VÀ KIỂM THỬ

CÀI ĐẶT

● Clone project từ github: Lojc19/api-ecom (github.com)

● Sử dụng phần mềm Visual Studio Code mở project

● Chạy lệnh npm start để chạy project

● Clone project Client từ github: Lojc19/ecom-web (github.com)

● Clone project Dashboard từ github: luongminhchien1233/Admin_Final (github.com)

● Sử dụng phần mềm Visual Studio Code mở project

● Chạy lệnh npm i sau đó npm run dev

Ngày đăng: 18/11/2024, 16:28

HÌNH ẢNH LIÊN QUAN

Hình 1. Công nghệ sử dụng - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 1. Công nghệ sử dụng (Trang 24)
Hình 2. Cách thức Mern stack hoạt động - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 2. Cách thức Mern stack hoạt động (Trang 26)
Hình 4. Website 2Modern - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 4. Website 2Modern (Trang 36)
Hình 7. Usecase Admin xem báo cáo  Bảng 3. Usecase Admin xem báo cáo - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 7. Usecase Admin xem báo cáo Bảng 3. Usecase Admin xem báo cáo (Trang 40)
Hình 13. Usecase Staff đăng nhập  Bảng 9. Usecase Staff Đăng nhập - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 13. Usecase Staff đăng nhập Bảng 9. Usecase Staff Đăng nhập (Trang 48)
Hình 16. Usecase Customer đăng ký  Bảng 12. Usecase Customer đăng ký - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 16. Usecase Customer đăng ký Bảng 12. Usecase Customer đăng ký (Trang 51)
Hình 20. Usecase Customer quản lý giỏ hàng - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 20. Usecase Customer quản lý giỏ hàng (Trang 55)
Hình 23. Usecase Customer quản lý đánh giá  Bảng 19. Usecase Quản lý đơn hàng Customer - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 23. Usecase Customer quản lý đánh giá Bảng 19. Usecase Quản lý đơn hàng Customer (Trang 59)
Hình 27. Sequence diagram tìm kiếm - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 27. Sequence diagram tìm kiếm (Trang 62)
Hình 32. Sequence diagram quản lí khách hàng - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 32. Sequence diagram quản lí khách hàng (Trang 65)
Hình 34. Sequence diagram chức năng danh sách yêu thích - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 34. Sequence diagram chức năng danh sách yêu thích (Trang 66)
Hình 35.  Class diagram tổng quát - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 35. Class diagram tổng quát (Trang 67)
Hình 36. Activity diagram chức năng đăng nhập - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 36. Activity diagram chức năng đăng nhập (Trang 68)
Hình 37. Activity diagram chức năng đăng kí - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 37. Activity diagram chức năng đăng kí (Trang 69)
Hình 38. Activity diagram chức năng quên mật khẩu - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 38. Activity diagram chức năng quên mật khẩu (Trang 70)
Hình 39. Activity diagram chức năng đổi mật khẩu - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 39. Activity diagram chức năng đổi mật khẩu (Trang 71)
Hình 41. Activity diagram chức năng cập nhật thông tin cá nhân - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 41. Activity diagram chức năng cập nhật thông tin cá nhân (Trang 73)
Hình 42. Activity diagram chức năng thêm sản phẩm - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 42. Activity diagram chức năng thêm sản phẩm (Trang 74)
Hình 43. Activity diagram chức năng cập nhật sản phẩm - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 43. Activity diagram chức năng cập nhật sản phẩm (Trang 75)
Hình 45. Activity diagram chức năng tìm kiếm sản phẩm - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 45. Activity diagram chức năng tìm kiếm sản phẩm (Trang 76)
Hình 44. Activity diagram chức năng xem chi tiết sản phẩm - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 44. Activity diagram chức năng xem chi tiết sản phẩm (Trang 76)
Hình 46. Activity diagram chức năng thêm sản phẩm vào giỏ hàng - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 46. Activity diagram chức năng thêm sản phẩm vào giỏ hàng (Trang 77)
Hình 47. Activity diagram chức năng cập nhật giỏ hàng - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 47. Activity diagram chức năng cập nhật giỏ hàng (Trang 78)
Hình 48. Activity diagram chức năng đặt đơn hàng - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 48. Activity diagram chức năng đặt đơn hàng (Trang 79)
Hình 49. Activity diagram chức năng cập nhật trạng thái đơn hàng - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 49. Activity diagram chức năng cập nhật trạng thái đơn hàng (Trang 80)
Hình 50. Activity diagram chức năng sản phẩm yêu thích - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 50. Activity diagram chức năng sản phẩm yêu thích (Trang 81)
Hình 51. Activity diagram chức năng đánh giá sản phẩm - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 51. Activity diagram chức năng đánh giá sản phẩm (Trang 82)
4.1.1. Sơ đồ thiết kế cơ sở dữ liệu - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
4.1.1. Sơ đồ thiết kế cơ sở dữ liệu (Trang 83)
Hình 55. Giao diện trang chủ - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 55. Giao diện trang chủ (Trang 88)
Hình 65.  Giao diện Thanh toán đơn hàng  4.2.14. Giao diện Dashboard Admin - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website thương mại điện tử về nội thất
Hình 65. Giao diện Thanh toán đơn hàng 4.2.14. Giao diện Dashboard Admin (Trang 93)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w