1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Xây dựng website dạy học số sử dụng công nghệ mern stack

91 12 0

Đ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 dạy học số sử dụng công nghệ MERN Stack
Tác giả Lê Thị Minh Nguyệt
Người hướng dẫn TS. Lê Văn Vinh
Trường học Đạ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 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 91
Dung lượng 6,51 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 1. LÝ DO CHỌN ĐỀ TÀI (13)
  • 2. TÍNH CẤP THIẾT CỦA ĐỀ TÀI (13)
  • 3. KHẢO SÁT HIỆN TRẠNG CỦA CÁC WEBSITE TƯƠNG TỰ (14)
    • 3.1. Đánh giá tổng quan cả 3 trang web (14)
    • 3.2. Các chức năng đặc biệt của từng trang web (15)
  • 4. KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC (17)
    • 4.1. Yêu cầu phi chức năng (17)
    • 4.2. Yêu cầu phi chức năng (17)
  • 5. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU (17)
    • 5.1. Đối tượng nghiên cứu (17)
    • 5.2. Phạm vi nghiên cứu (18)
  • 6. Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN (18)
  • CHƯƠNG 1: CÁC CÔNG NGHỆ SỬ DỤNG (19)
    • 1.1. KIẾN TRÚC CHUNG CỦA HỆ THỐNG (19)
    • 1.2. TÌM HIỂU CÔNG NGHỆ MERN STACK (19)
      • 1.2.1. Công nghệ MERN stack là gì? (19)
      • 1.2.2. Quy trình hoạt động của MERN Stack (20)
      • 1.2.3. Lý do lựa chọn công nghệ MERN Stack (21)
    • 1.3. REACTJS (21)
      • 1.3.1. Giới thiệu, khái niệm React (21)
      • 1.3.2. So sánh React và những Framework khác (22)
      • 1.3.3. Ưu nhược điểm của React (24)
    • 1.4. NODEJS (24)
      • 1.4.1. Giới thiệu khái niệm (24)
      • 1.4.2. Ưu và nhược điểm của NodeJS (26)
    • 1.5. EXPRESS JS (27)
      • 1.5.1. Giới thiệu (27)
      • 1.5.2. Các tính năng nổi bật (27)
    • 1.6. MONGODB (28)
      • 1.6.1. Giới thiệu (28)
      • 1.6.2. Cách hoạt động (28)
      • 1.6.3. Ưu và nhược điểm (29)
    • 1.7. RESTFUL API (30)
      • 1.7.1. Giới thiệu, khái niệm (30)
      • 1.7.2. Cách hoạt động (31)
      • 1.7.3. Ưu điểm (31)
  • CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ (32)
    • 2.1. LƯỢC ĐỒ USE CASE (32)
      • 2.1.1. Use case tổng quan (32)
      • 2.1.2. Use case chi tiết (32)
      • 2.1.3. Đặc tả use case (34)
    • 2.2. LƯỢC ĐỒ TUẦN TỰ - SEQUENCE DIAGRAM (51)
      • 2.2.1. Xem thông tin trang web (51)
      • 2.2.2. Đăng nhập (51)
      • 2.2.3. Đăng xuất (52)
      • 2.2.4. Đăng ký tài khoản (52)
      • 2.2.5. Thêm lớp học (53)
      • 2.2.6. Tham gia lớp học (54)
      • 2.2.7. Rời khỏi lớp học (54)
      • 2.2.8. Xoá lớp học (55)
      • 2.2.9. Quản lý bảng tin (55)
      • 2.2.10. Thêm bài đăng (56)
      • 2.2.11. Xoá bài đăng (56)
      • 2.2.12. Thêm bình luận (57)
      • 2.2.13. Xoá bình luận (57)
      • 2.2.14. Xoá thành viên (58)
      • 2.2.15. Quản lý bài tập (58)
      • 2.2.16. Thêm bài tập (59)
      • 2.2.17. Xoá bài tập (59)
    • 2.3. LƯỢC ĐỒ LỚP (60)
    • 2.4. THIẾT KẾ CƠ SỞ DỮ LIỆU (61)
      • 2.4.1. Lược đồ cơ sở dữ liệu (61)
      • 2.4.2. Mô tả các bảng (61)
    • 2.4. THIẾT KẾ GIAO DIỆN (67)
      • 2.4.1. Landing Page (67)
      • 2.4.2. Modal đăng nhập (68)
      • 2.4.3. Modal đăng ký tài khoản (69)
      • 2.4.4. Giao diện trang home sau khi đăng nhập (70)
      • 2.4.5. Tạo lớp học (73)
      • 2.4.6. Modal tham gia lớp (74)
      • 2.4.7. Thêm sự lựa chọn khi click vào mỗi lớp học (75)
      • 2.4.8. Lớp học chi tiết (76)
      • 2.4.9. Đăng bài trong Bảng tin (77)
      • 2.4.10. Bình luận bài viết (78)
      • 2.4.11. Các lựa chọn của mỗi bài đăng (78)
      • 2.4.12. Các lựa chọn của bình luận (79)
      • 2.4.13. Bài kiểm tra (80)
      • 2.4.14. Tạo bài kiểm tra (81)
      • 2.4.15. Tạo tiêu đề bài kiểm tra (82)
  • CHƯƠNG 3: CÀI ĐẶT VÀ KIỂM THỬ (84)
    • 3.1. KẾ HOẠCH KIỂM THỬ (84)
      • 3.1.1. Mục đích kiểm thử (84)
      • 3.1.2. Lịch trình kiểm thử (84)
    • 3.2. PHẠM VI KIỂM THỬ (84)
    • 3.3. THEO DÕI LỖI (85)
      • 3.3.1. Phân loại lỗi (85)
      • 3.3.2. Quy trình xử lý lỗi (86)
    • 3.4. Kiểm thử một số chức năng của hệ thống (86)
    • 1. VỀ LÝ THUYẾT (88)
    • 2. CHỨC NĂNG CỦA WEBSITE (88)
    • 3. ƯU ĐIỂM (88)
    • 4. NHƯỢC ĐIỂM (89)
    • 5. HƯỚNG PHÁT TRIỂN (89)
  • TÀI LIỆU THAM KHẢO (90)

Nội dung

Giao diện đẹp nhưng hơi khó sử dụng hơn Giao diện ở mức căn bản và khó cho người dùng mới khai thác lỗ hổng sẽ khó khăn hơn Đây là mã nguồn mở nên là việc có thể dựa vào mã nguồn và tìm

TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Giáo dục 4.0 là mô hình giáo dục thông minh, kết nối chặt chẽ giữa nhà trường, nhà quản lý và doanh nghiệp, tạo điều kiện cho sinh viên phát triển năng lực cá nhân một cách tự do Mô hình này không chỉ gắn kết công nghệ với sự phát triển kinh tế, xã hội trong thời đại 4.0 mà còn được áp dụng rộng rãi tại nhiều trường đại học ở Việt Nam và trên toàn thế giới.

Giáo dục 4.0 tại các trường cao đẳng, đại học đã trở nên linh hoạt hơn, ứng dụng công nghệ và thiết bị hiện đại để tạo điều kiện cho học sinh, sinh viên trải nghiệm và thực hành Học tập không chỉ giới hạn trong lớp học hay phòng thí nghiệm mà còn mở rộng ra các tổ chức doanh nghiệp, giúp sinh viên rèn luyện kiến thức thực tiễn Điều này giúp họ có tay nghề, kinh nghiệm và khả năng thích ứng cao khi ra trường Trong bối cảnh kinh tế biến động, việc nâng cao chất lượng nhân lực là cần thiết, đòi hỏi giáo dục phải đổi mới và sáng tạo.

Nhiều nước đang gặp khó khăn trong việc phát triển nguồn nhân lực do thiếu kinh nghiệm làm việc thực tế, kỹ năng phân tích và tổng hợp thông tin, cũng như khả năng làm việc độc lập Trong bối cảnh cách mạng công nghệ đang tạo ra những cơ hội mới, việc áp dụng giáo dục 4.0 trở thành giải pháp cần thiết để nâng cao chất lượng nguồn nhân lực.

Công nghệ giáo dục 4.0 sẽ mang đến một phương pháp học tập linh hoạt, không còn gò bó vào lý thuyết suông hay học thuộc lòng Học sinh và sinh viên sẽ được trang bị kiến thức sâu sắc, phù hợp với chuyên ngành mà họ theo đuổi.

Công nghệ 4.0 trong giáo dục giúp người học áp dụng kiến thức vào thực tiễn, từ đó nắm vững vấn đề thay vì chỉ học lý thuyết Mô hình giáo dục này tạo động lực cho học sinh, sinh viên phấn đấu trau dồi kiến thức, kinh nghiệm thực tiễn và chuyên môn.

KHẢO SÁT HIỆN TRẠNG CỦA CÁC WEBSITE TƯƠNG TỰ

Đánh giá tổng quan cả 3 trang web

Bảng 1: Phân tích chức năng của các website tương tự

CÁC TIÊU CHÍ SHUB UTEXLMS EDUZ

Giao diện Website Giao diện đẹp, dễ sử dụng Giao diện đẹp nhưng hơi khó sử dụng hơn

Giao diện ở mức căn bản và khó cho người dùng mới

Tốc độ phản hồi Nhanh Nhanh Nhanh

Bảo mật của mã nguồn đóng làm cho việc khai thác lỗ hổng trở nên khó khăn hơn Ngược lại, với mã nguồn mở, người dùng có thể truy cập vào mã nguồn và dễ dàng tìm ra cách tấn công.

Mã nguồn đóng nên việc khai thác lỗ hổng sẽ khó khăn hơn

Quản trị Hệ thống không quá lớn nên việc quản trị dễ dàng

Hệ thống lớn với lượng người dùng lớn nên việc quản trị sẽ khó khăn hơn

Về cơ bản đây là 1 trang web cho phép người dùng truy cập vào các khóa học nên cũng không quá khó để quản trị

Tính năng website Gồm những tính năng cơ bản cho 1 trang web ELearning

Nhiều tính năng tuy nhiên không dễ sử dụng cho những người mới

Chức năng khá nhiều tuy nhiên là quá khó cho người mới sử dụng

Tốc độ tải trang website

Tốc độ load nhanh Tốc độ load nhanh Tốc độ load nhanh

Dễ dàng thao tác và điều hướng Điều hướng thao tác dễ dàng, dễ thực hiện

Một số chỗ điều hướng còn đang hơi khó sử dụng Điều hướng chưa được tốt lắm

Thân thiện với các thiết bị di động

Không có responsive Có responsive đầy đủ Có responsive

Hạn chế tối thiểu các lỗi

Phần lớn lỗi đã được hạn chế ít thấy bug ở console và thao tác khá mượt mà

Còn một số bug nhỏ tuy nhiên cũng không đáng gì so với tính năng đồ sộ

Một số chỗ thì chưa thể biết là bị giới hạn quyền hay là bugs

Website dễ dàng nâng cấp

Có thể thêm được nhiều tính năng một cách dễ dàng mà không ảnh hưởng đến những tính năng cũ

Số lượng tính năng phần lớn đã có code sẵn chỉ cần áp dụng vào site custom lại là được

Giao diện hiện tại chưa đủ tốt nên việc phát triển thêm tính năng thì chỉ gây khó hiểu cho người dùng nhiều hơn

Website dễ dàng triển khai

Website sử dung giao diện và số tính năng cũng không nhiều thì việc triển khai web lên host sẽ không tốn quá nhiều tài nguyên và nguồn lực

Website có số lượng tính năng quá là nhiều nên việc triển khai cho những cơ sở nhỏ những nơi chưa có đủ nguồn lực thì là không thể

Website sử dụng giao diện và số tính năng cũng không nhiều nên việc triển khai web lên host sẽ không tốn quá nhiều tài nguyên và nguồn lực

Các chức năng đặc biệt của từng trang web

Bảng 2: Phân tích chức năng của các website tương tự

CÁC TIÊU CHÍ SHUB UTEXLMS EDUZ

Giao diện Website Giao diện đẹp, dễ sử dụng Giao diện đẹp nhưng hơi khó sử dụng hơn

Giao diện ở mức căn bản và khó cho người dùng mới

Tốc độ phản hồi Nhanh Nhanh Nhanh

Bảo mật của mã nguồn đóng làm cho việc khai thác lỗ hổng trở nên khó khăn hơn Ngược lại, với mã nguồn mở, người dùng có thể truy cập vào mã nguồn và dễ dàng tìm ra cách tấn công.

Mã nguồn đóng nên việc khai thác lỗ hổng sẽ khó khăn hơn

Quản trị Hệ thống không quá lớn nên việc quản trị dễ dàng

Hệ thống lớn với lượng người dùng lớn nên việc quản trị sẽ khó khăn hơn

Về cơ bản đây là 1 trang web cho phép người dùng truy cập vào các khóa học nên cũng không quá khó để quản trị

Tính năng website Gồm những tính năng cơ bản cho 1 trang web ELearning

Nhiều tính năng tuy nhiên không dễ sử dụng cho những người mới

Chức năng khá nhiều tuy nhiên là quá khó cho người mới sử dụng

Tốc độ tải trang website

Tốc độ load nhanh Tốc độ load nhanh Tốc độ load nhanh

Dễ dàng thao tác và điều hướng Điều hướng thao tác dễ dàng, dễ thực hiện

Một số chỗ điều hướng còn đang hơi khó sử dụng Điều hướng chưa được tốt lắm

Thân thiện với các thiết bị di động

Không có responsive Có responsive đầy đủ Có responsive

Hạn chế tối thiểu các lỗi

Phần lớn lỗi đã được hạn chế ít thấy bug ở console và thao tác khá mượt mà

Còn một số bug nhỏ tuy nhiên cũng không đáng gì so với tính năng đồ sộ

Một số chỗ thì chưa thể biết là bị giới hạn quyền hay là bugs

Website dễ dàng nâng cấp

Có thể thêm được nhiều tính năng một cách dễ dàng mà không ảnh hưởng đến những tính năng cũ

Số lượng tính năng phần lớn đã có code sẳn chỉ cần áp dụng vào site custom lại là được

Giao diện hiện tại chưa đủ tốt nên việc phát triển thêm tính năng thì chỉ gây khó hiểu cho người dùng nhiều hơn

Website dễ dàng triển khai

Website sử dung giao diện và số tính năng cũng không nhiều thì việc triển khai web lên host sẽ không tốn quá nhiều tài nguyên và nguồn lực

Website có số lượng tính năng quá là nhiều nên việc triển khai cho những cơ sở nhỏ những nơi chưa có đủ nguồn lực thì là không thể

Website sử dụng giao diện và số tính năng cũng không nhiều nên việc triển khai web lên host sẽ không tốn quá nhiều tài nguyên và nguồn lực

KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC

Yêu cầu phi chức năng

Tạo và tham gia các khoá học

Diễn đàn trao đổi, tương tác giữa các thành viên trong lớp, có thể đăng bài, bình luận

Làm bài kiểm tra trắc nghiệm trên ứng dụng

Yêu cầu phi chức năng

Giao diện đẹp, đơn giả, dễ sử dụng

Tốc độ phản hồi nhanh

Hạn chế xuất hiện lỗi trên giao diện người dùng

Thân thiện với các thiết bị di động (responsive).

Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN

Đề tài nhấn mạnh tầm quan trọng của việc nâng cao kỹ năng lập trình thông qua việc học công nghệ mới, nhằm phát triển ứng dụng web Bên cạnh đó, nó cũng tập trung vào việc quản lý học sinh và đánh giá năng lực thông qua hình thức trắc nghiệm khách quan.

Đề tài không chỉ có ý nghĩa khoa học mà còn hứa hẹn đóng góp tích cực cho phương pháp dạy học online trong quá trình Chuyển đổi số giáo dục tại Việt Nam.

CÁC CÔNG NGHỆ SỬ DỤNG

KIẾN TRÚC CHUNG CỦA HỆ THỐNG

Hình 1: Hình minh hoạ kiến trúc hệ thống

The overall architecture of the system consists of three traditional layers: the front-end layer using ReactJS, the back-end application layer built with ExpressJS and NodeJS, and the database layer utilizing MongoDB.

Kiến trúc ứng dụng bao gồm 6 phần cơ bản, trong đó người dùng (client) gửi yêu cầu thông qua tầng giao diện Frontend sẽ chuyển tiếp yêu cầu đó đến backend, nơi nhận và truy xuất cơ sở dữ liệu (CSDL) để trả lại thông tin mà người dùng mong muốn cho frontend hiển thị.

TÌM HIỂU CÔNG NGHỆ MERN STACK

1.2.1 Công nghệ MERN stack là gì?

Thuật ngữ MERN Stack được dùng để chỉ tập hợp các công nghệ dựa trên ngôn ngữ lập trình

JavaScript Chúng được sửa dụng để phát triển ứng dụng web full-stack Bốn chữ M-E-R-N đại diện cho bốn công nghệ chính cấu thành nên giải pháp này:

MongoDB là một cơ sở dữ liệu NoSQL, lưu trữ dữ liệu dưới định dạng JSON, giúp dễ dàng truyền tải dữ liệu giữa server và client.

 E - Express.js là một web framework được xây dựng trên Node.js Nó được sử dụng để tạo API và phát triển ứng dụng web

React.js là thư viện JavaScript hàng đầu để phát triển giao diện người dùng (UI), được Facebook phát triển Ra mắt vào năm 2013, React.js là một công cụ mã nguồn mở phổ biến trong cộng đồng lập trình.

 N - Node.js là Java Runtime Environment (JRE), được sử dụng để tạo ra web server

Hình 2: Tổng quan MERN Stack 1.2.2 Quy trình hoạt động của MERN Stack

 Người dùng tương tác với các component của React.js ở giao diện người dùng

 Bất kỳ tương tác nào tạo ra một yêu cầu thay đổi dữ liệu được gửi đến Node.js để phân tích cú pháp yêu cầu

 Node.js chuyển yêu cầu đã được phân tích qua máy chủ Express.js để thực hiện việc kêu gọi đến MongoDB để lấy hoặc thiết lập dữ liệu

 MongoDB sẽ lấy dữ liệu được yêu cầu và trả về cho Express.js

 Express.js lại truyền dữ liệu về cho Node.js và Node.js gửi kết quả dữ liệu cho React.js

 React.js sẵn sàng hiển thị thông tin mà người dùng muốn có trên giao diện người dùng

Hình 3: Quy trình hoạt động của MERN Stack

1.2.3 Lý do lựa chọn công nghệ MERN Stack

1.2.3.1 Đơn giản hóa việc chuyển đổi giữa máy khách và máy chủ

Phát triển ứng dụng với MERN Stack giúp lập trình viên tiết kiệm thời gian và công sức, vì chỉ cần sử dụng một ngôn ngữ duy nhất là JavaScript cho cả máy khách và máy chủ.

Chuyển code sang một framework khác được viết bởi một framework cụ thể sẽ dễ dàng hơn với sự hỗ trợ của MERN Stack

Với MERN, việc kiểm tra ứng dụng trên nền tảng đám mây trở nên dễ dàng sau khi hoàn tất quy trình phát triển Ngoài ra, MERN cũng hỗ trợ việc thêm thông tin bổ sung một cách thuận tiện thông qua việc thêm các trường vào biểu mẫu.

Sử dụng MERN Stack cho phát triển ứng dụng chỉ cần lập trình viên thành thạo JavaScript, trong khi LAMP Stack yêu cầu nhiều kỹ năng hơn Điều này giúp các công ty công nghệ tiết kiệm chi phí thuê và đào tạo nhân lực.

1.2.3.5 Có tốc độ cao và tái sử dụng được

Node.js nổi bật với tốc độ xử lý nhanh chóng và kiến trúc non-blocking, trong khi React.js là một thư viện mã nguồn mở của JavaScript, mang lại khả năng bảo trì, kiểm tra và tái sử dụng hiệu quả.

1.2.3.6 Mã nguồn mở và có khả năng tương thích với đám mây

Công nghệ MERN Stack hoàn toàn miễn phí và mã nguồn mở, mang lại cho lập trình viên nhiều lựa chọn về thư viện và kho lưu trữ công cộng Việc sử dụng MERN Stack giúp giảm chi phí phát triển phần mềm hiệu quả Đặc biệt, MongoDB hỗ trợ triển khai các chức năng đám mây trong ứng dụng, giúp tiết kiệm chi phí không gian đĩa.

REACTJS

1.3.1 Giới thiệu, khái niệm React

React là một thư viện UI phát triển tại Facebook để hỗ trợ việc xây dựng những

20 thành phần (components) UI có tính tương tác cao, có trạng thái (state) và có thể sử dụng lại được

React là một thư viện hấp dẫn vì nó không chỉ hoạt động trên phía client mà còn có khả năng render trên server, cho phép kết nối linh hoạt Thư viện này so sánh sự thay đổi giữa các giá trị của lần render hiện tại và lần render trước, từ đó cập nhật những thay đổi tối thiểu trên DOM.

Công nghệ Virtual DOM trong React JS giúp cải thiện hiệu năng ứng dụng bằng cách chỉ thay đổi node gốc khi có sự thay đổi trạng thái, từ đó tái cấu trúc một phần của cây DOM Điều này giúp giảm thiểu ảnh hưởng đến tốc độ xử lý và tối ưu hóa hiệu suất tổng thể của ứng dụng.

Hình 4: DOM ảo trong ExpressJS dung để tối ưu hoá việc re-render DOM thật

Virtual DOM là một đối tượng Javascript chứa thông tin cần thiết để tạo ra DOM Khi dữ liệu thay đổi, nó tính toán sự khác biệt giữa đối tượng và cây DOM thật, giúp tối ưu hóa việc re-render React áp dụng cơ chế one-way data binding, cho phép dữ liệu được truyền từ parent đến child qua props Luồng dữ liệu đơn giản này giúp dễ dàng kiểm soát và sửa lỗi.

React là một công cụ lý tưởng để phát triển các ứng dụng lớn, nơi dữ liệu liên tục thay đổi theo thời gian Sự thay đổi dữ liệu thường đi kèm với việc cập nhật giao diện người dùng, giúp cải thiện trải nghiệm người dùng.

Facebook's Newsfeed displays various statuses simultaneously, each with a constantly changing number of likes, shares, and comments In this context, React proves to be extremely useful for managing and updating these dynamic interactions efficiently.

1.3.2 So sánh React và những Framework khác

Bảng 3: Đánh giá ngôn ngữ lập trình tương tự

Tốc độ code Chậm Bình thường Nhanh Độ khó Phải học Typescript Bình thường Dễ

Chậm vì codebase lớn Nhanh Nhanh

Virtual DOM (Document Object Model)

Virtual DOM (Document Object Model)

Phạm vi Dự án lớn và phục vụ cho doanh nghiệp với nhiều tính năng

Hoàn hảo cho việc phát triển những website hiện đại và native render apps cho IOS và android

Dự án nhỏ và startup phù hợp với các dự án single page application

Tái sử dụng lại code Được Chỉ tái sử dụng được css Được tái sử dụng lại cả html và css

LoadTime Cao Trung bình Thấp

Cú pháp TypeScript Javascript, TypeScript Javascript,

Baseline Một framework với hiệu suất cao

Thư viện hỗ trợ xây dựng UI tuyệt vời

Một thư viện có cả những điểm tốt của angular và react

Nếu bạn code typescript, dễ bảo trì

Nếu bạn muốn tất cả mọi thứ đều được code bằng javascript

Khi mà bạn muốn code bằng javascript và cả html cho phần giao diện

1.3.3 Ưu nhược điểm của React

Khi sử dụng React, ta dễ dàng thấy được React có một số ưu điểm vượt trội như:

Reactjs rất hiệu quả nhờ vào việc tạo ra DOM ảo, nơi các component thực sự tồn tại, giúp cải thiện hiệu suất đáng kể Nó chuyển đổi các hàm khởi tạo đối tượng HTML thông qua bộ biến đổi JSX.

Render tầng server là một giải pháp quan trọng cho các ứng dụng đơn trang nhằm tối ưu hóa SEO và thời gian tải trang Khi toàn bộ quá trình xây dựng và hiển thị trang diễn ra trên client, người dùng sẽ phải chờ đợi để trang được khởi tạo, dẫn đến trải nghiệm chậm chạp Nếu người dùng vô hiệu hóa Javascript, điều này càng trở nên nghiêm trọng Reactjs, với khả năng render cả trên trình duyệt và từ các chuỗi HTML mà server cung cấp, giúp cải thiện hiệu suất Bạn có thể tìm hiểu thêm về cách render side servering tại đây.

Việc kiểm tra giao diện trở nên đơn giản nhờ vào việc virtual DOM được triển khai hoàn toàn bằng JavaScript Điều này mang lại hiệu suất cao cho các ứng dụng có dữ liệu thay đổi liên tục, đồng thời cũng giúp dễ dàng trong việc bảo trì và sửa lỗi.

Tuy có nhiều ưu điểm, nhưng React không tránh khỏi việc còn tồn tại một số nhược điểm Cụ thể như sau:

ReactJS chỉ đảm nhiệm vai trò của tầng View và không phải là một framework MVC như các framework khác Đây là thư viện do Facebook phát triển, chuyên dùng để render phần view Do đó, React không bao gồm phần Model và Controller, mà cần kết hợp với các thư viện khác để hoàn thiện Ngoài ra, React cũng không hỗ trợ 2-way binding hay Ajax.

− Tích hợp ReactJS vào các framework MVC truyền thống yêu cầu cần phải cấu hình lại

React có kích thước tương đương với Angular, khoảng 35kB so với 39kB của Angular, tuy nhiên React lại nhẹ hơn so với nhiều framework khác Điều này cho thấy React có thể là một lựa chọn tối ưu cho các dự án cần hiệu suất cao, mặc dù Angular là một framework hoàn chỉnh.

NODEJS

NodeJS là một nền tảng được xây dựng trên “V8 Javascript engine” và là một mã

23 nguồn mở được viết bằng C++ và Javascript Nền tảng này được phát triển bởi Ryan Lienhart Dahl vào năm 2009

Node.js được phát triển khi các lập trình viên JavaScript mở rộng ngôn ngữ này từ một công cụ chạy trên trình duyệt thành ứng dụng độc lập trên máy tính Cả JavaScript trong trình duyệt và Node.js đều sử dụng động cơ V8 runtime, giúp chuyển đổi mã JavaScript thành mã máy (bytecode 4) để thực thi nhanh hơn.

Hình 5: Quá trình chuyển đổi từ mã nguồn NodeJS sang JavaScript nhờ vào Chrome V8 engine

Node.js có một thư viện tích hợp cho phép ứng dụng hoạt động như một Webserver mà không cần sử dụng phần mềm bên ngoài như Nginx, Apache HTTP Server hoặc IIS Với kiến trúc hướng sự kiện và API non-blocking I/O, Node.js tối ưu hóa hiệu suất và khả năng mở rộng của ứng dụng.

Mọi hàm trong Node.js là không đồng bộ (asynchronous) Do đó, các tác vụ đều được xử lý và thực thi ở chế độ nền (background processing)

Những ứng dụng có thể và nên viết bằng Nodejs:

− Websocket server: Các máy chủ web socket như là Online Chat, Game Server

− Fast File Upload Client: là các chương trình upload file tốc độ cao

− Ad Server: Các máy chủ quảng cáo

− Cloud Services: Các dịch vụ đám mây

− RESTful API: đây là những ứng dụng mà được sử dụng cho các ứng dụng khác thông qua API

− Bất kỳ một ứng dụng nào có yêu cầu về tốc độ thời gian thực

1.4.2 Ưu và nhược điểm của NodeJS

Node JS có một số ưu điểm nổi bật như sau:

Có khả năng xử lý nhanh chóng nhờ vào cơ chế xử lý bất đồng bộ (non-blocking), giúp dễ dàng quản lý hàng ngàn kết nối trong thời gian ngắn nhất.

− Dễ dàng mở rộng khi có nhu cầu phát triển website

Node.js cho phép nhận và xử lý nhiều kết nối chỉ với một luồng đơn, giúp tiết kiệm RAM và tăng tốc độ xử lý.

Hình 6: Quá trình chuyển đổi từ mã nguồn NodeJS sang JavaScript nhờ vào Chrome V8 engine

− Có khả năng xử lý nhiều Request/s cùng một lúc trong thời gian ngắn nhất

− Có khả năng xử lý hàng ngàn Process cho hiệu suất đạt mức tối ưu nhất

− Phù hợp để xây dựng những ứng dụng thời gian thực như các ứng dụng chat, mạng xã hội

Hiện tại, Node JS vẫn còn tồn tại một số nhược điểm có thể kể đến như:

NodeJS không phù hợp cho các ứng dụng tốn tài nguyên CPU như encoding video, chuyển đổi file hay giải mã mã hóa, vì nó được viết bằng C++ và JavaScript, dẫn đến việc cần thêm một trình biên dịch của NodeJS, làm tăng thời gian xử lý.

NodeJS, mặc dù mới phát triển và bùng nổ gần đây, vẫn chưa thể hoàn toàn thay thế các ngôn ngữ lập trình khác như PHP, Ruby, Python và NET trong việc phát triển ứng dụng web.

Đối với các ứng dụng yêu cầu tính ổn định cao và logic phức tạp, ngôn ngữ PHP và Ruby vẫn là những lựa chọn tốt hơn so với 25 thống hiện có.

EXPRESS JS

ExpressJS, hay còn gọi là Express JS hoặc Express.js, là một framework mã nguồn mở miễn phí dành cho Node.js Framework này giúp thiết kế và xây dựng các ứng dụng web một cách đơn giản và nhanh chóng, với nhiều mã code đã được viết sẵn, hỗ trợ lập trình viên trong quá trình phát triển.

Express JS cho phép lập trình viên dễ dàng phát triển ứng dụng web nhờ vào dung lượng nhẹ và khả năng tổ chức ứng dụng theo kiến trúc MVC Để sử dụng mã nguồn này, người dùng cần có kiến thức về Javascript và HTML.

Express JS đã làm cho lập trình trong Node.js trở nên dễ dàng hơn, đồng thời cung cấp nhiều tính năng mới, giúp đơn giản hóa quá trình xây dựng các API.

1.5.2 Các tính năng nổi bật

Các tính năng nổi bật của Express JS có thể kể đến như:

Express JS giúp phát triển máy chủ nhanh chóng nhờ vào việc cung cấp nhiều tính năng dưới dạng hàm, dễ dàng sử dụng trong toàn bộ chương trình Điều này không chỉ loại bỏ nhu cầu viết mã phức tạp mà còn tiết kiệm thời gian cho lập trình viên.

− Định tuyến - Routing: Express JS cung cấp cơ chế định tuyến giúp duy trì trạng thái của website với sự trợ giúp của URL

Các công cụ tạo mẫu trong Express JS cho phép các nhà phát triển xây dựng nội dung động trên website thông qua việc tạo ra các mẫu linh hoạt.

Middleware là phần mềm trung gian có khả năng truy cập vào cơ sở dữ liệu (CSDL), xử lý yêu cầu từ khách hàng và tương tác với các phần mềm trung gian khác Nó đóng vai trò quan trọng trong việc tổ chức hệ thống các chức năng của Express JS.

Hình 7: Triển khai Middleware trong ExpressJS

Gỡ lỗi là một bước quan trọng trong phát triển ứng dụng web, và với Express JS, quá trình này trở nên dễ dàng hơn Express JS giúp xác định chính xác các phần của ứng dụng web có lỗi, từ đó hỗ trợ lập trình viên khắc phục sự cố hiệu quả hơn.

MONGODB

Hiện nay có khá nhiều hệ quản trị CSDL dạng NoSQL (như MongoDB, Cassandra, Redis,

HBase), trong đó phổ biến nhất có thể kể đến là MongoDB

MongoDB là một cơ sở dữ liệu hướng đối tượng với cấu trúc bảng linh hoạt, cho phép lưu trữ dữ liệu mà không cần tuân theo một định dạng cố định Điều này giúp MongoDB phù hợp cho việc lưu trữ các loại dữ liệu phức tạp, đa dạng và không cố định, thường được gọi là Big Data.

MongoDB sử dụng cơ chế NoSQL để thực hiện truy vấn, được phát triển bằng ngôn ngữ C++ Nhờ đó, nó có khả năng tính toán nhanh chóng, khác biệt so với các hệ quản trị cơ sở dữ liệu quan hệ hiện tại.

Mỗi bảng dữ liệu trong SQL tương ứng với một collection trong MongoDB Một bản ghi trong MongoDB được lưu trữ dưới dạng tài liệu, với cấu trúc field : value, tương tự như một đối tượng JSON.

MongoDB hoạt động dưới một tiến trình ngầm, service luôn mở một cổng (cổng mặc định là

27017) để lắng nghe các yêu cầu truy vấn, thao tác từ các ứng dụng gửi vào sau đó mới tiến hành xử lý

Mỗi bản ghi trong MongoDB đều có một trường dữ liệu tự động gán tên là “_id” với kiểu dữ liệu ObjectId, giúp xác định tính duy nhất của bản ghi Trường “_id” không chỉ hỗ trợ cho việc tìm kiếm và truy vấn thông tin mà còn được tự động đánh index, đảm bảo tốc độ truy vấn đạt hiệu suất cao nhất.

Khi có một truy vấn dữ liệu, bản ghi sẽ được lưu trữ trong bộ nhớ RAM để tăng tốc độ truy vấn sau mà không cần truy cập ổ cứng Đối với các yêu cầu thêm, sửa hoặc xóa bản ghi, hệ thống sẽ xử lý trực tiếp trên dữ liệu đã được cache.

Để đảm bảo hiệu suất của ứng dụng, MongoDB sẽ không cập nhật dữ liệu xuống ổ cứng ngay lập tức Thay vào đó, sau 60 giây, MongoDB sẽ thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng.

Một số ưu điểm của MongoDB có thể kể đến như:

Lưu trữ dữ liệu linh hoạt với nhiều kích cỡ khác nhau, cho phép chèn thông tin tùy ý dưới dạng tài liệu JSON.

Khác với hệ quản trị cơ sở dữ liệu quan hệ, dữ liệu trong hệ thống này không bị ràng buộc và không yêu cầu tuân theo khuôn khổ nhất định Điều này giúp tiết kiệm thời gian cho việc kiểm tra cấu trúc khi chèn, xóa, cập nhật hoặc thay đổi dữ liệu trong bảng.

Hình 8: So sánh tốc độ khi thêm 1 bản ghi giữa MongoDB và SQL

− MongoDB dễ dàng mở rộng hệ thống bằng cách thêm node vào cluster – cụm các node chứa dữ liệu giao tiếp với nhau

Tốc độ truy vấn của hệ thống này nhanh hơn nhiều so với các hệ quản trị cơ sở dữ liệu quan hệ, nhờ vào việc dữ liệu được lưu trữ trong bộ nhớ RAM, giúp tăng tốc độ truy vấn cho các lần tiếp theo mà không cần phải đọc từ ổ cứng.

− Trường dữ liệu “_id” luôn được tự động đánh chỉ mục để đạt hiệu suất cao nhất

Bên cạnh các ưu điểm được nêu ra ở trên, thì MongoDB còn tồn tại một số nhược điểm như sau:

− Không ràng buộc toàn vẹn nên không ứng dụng được cho các mô hình giao dịch yêu cầu độ chính xác cao

− Không có cơ chế transaction (giao dịch) để phục vụ các ứng dụng ngân hàng

− Dữ liệu được caching, lấy RAM làm trọng tâm hoạt động vì vậy khi hoạt động yêu cầu một bộ nhớ RAM lớn

Việc lưu trữ dữ liệu dưới dạng key-value tiêu tốn bộ nhớ, vì các document chỉ khác nhau ở giá trị, dẫn đến việc lặp lại key và gây ra sự thừa thãi trong dữ liệu.

Dữ liệu thường mất khoảng 60 giây để chuyển từ RAM xuống ổ cứng, điều này tạo ra nguy cơ mất dữ liệu nếu xảy ra mất điện trong khoảng thời gian này.

RESTFUL API

RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web

Dịch vụ thiết kế web giúp quản lý hiệu quả các tài nguyên hệ thống như tệp văn bản, hình ảnh, âm thanh, video và dữ liệu động Nó tập trung vào việc định dạng và truyền tải các trạng thái tài nguyên qua giao thức HTTP.

API (Giao diện lập trình ứng dụng) là tập hợp các quy tắc và cơ chế cho phép các ứng dụng hoặc thành phần tương tác với nhau Nó cung cấp dữ liệu cần thiết cho ứng dụng của bạn dưới các định dạng phổ biến như JSON hoặc XML.

REST (REpresentational State Transfer) là một kiến trúc API sử dụng phương thức HTTP để giao tiếp giữa các máy Thay vì xử lý thông tin người dùng qua một URL duy nhất, REST gửi yêu cầu HTTP (như GET, POST, DELETE) đến URL để quản lý dữ liệu.

RESTful API là tiêu chuẩn thiết kế API cho ứng dụng web nhằm quản lý tài nguyên Đây là một trong những kiểu thiết kế API phổ biến hiện nay, cho phép các ứng dụng web và di động giao tiếp hiệu quả với nhau.

Chức năng quan trọng nhất của REST là quy định cách sử dụng các phương thức HTTP như GET, POST, PUT, DELETE và cách định dạng URL cho ứng dụng web nhằm quản lý các tài nguyên RESTful không quy định logic code của ứng dụng và không bị giới hạn bởi ngôn ngữ lập trình, cho phép bất kỳ ngôn ngữ hoặc framework nào cũng có thể được sử dụng để thiết kế một RESTful API.

REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêu trên sẽ sử dụng những phương thức HTTP riêng

− GET (SELECT): Trả về một Resource hoặc một danh sách Resource

− POST (CREATE): Tạo mới một Resource

− PUT (UPDATE): Cập nhật thông tin cho Resource

− DELETE (DELETE): Xoá một Resource

Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa

Một số ưu điểm mà RESTful API mang lại:

− Giúp cho ứng dụng trở nên rõ ràng hơn bao giờ hết

− REST URL là đại diện cho resource chứ không mang tính chất hành động

− Code ngắn gọn và đơn giản

− Dữ liệu với nhiều định dạng khác nhau (như HTML, XML, JSON) được trả về

− Tài nguyên của hệ thống được REST chú trọng

− Cho phép các trang web có khả năng kết nối đến mọi dữ liệu của họ với các ứng dụng bên ngoài khác

PHÂN TÍCH THIẾT KẾ

LƯỢC ĐỒ USE CASE

Hình 10: Use case tổng quan

2.1.2.1 Quản lý xác thực người dung

Hình 11: Use case Quản lý xác thực người dung

Hình 12: Use case quản lý tài khoản

2.1.2.3 Tương tác của học sinh trên trang chủ

Hình 13: Use case Tương tác của học sinh trên trang chủ

2.1.2.4 Tương tác của học sinh trên trang lớp học

Hình 14: Use case Tương tác của học sinh trên trang lớp học

2.1.2.4 Tương tác của giáo viên trên trang chủ

Hình 15: Use case Tương tác của giáo viên trên trang chủ

2.1.2.5 Tương tác của giáo viên trên trang lớp học

Hình 16: Use case Tương tác của giáo viên trên trang lớp học

Bảng 4: Đặc tả use case Đăng ký tài khoản

Name Đăng ký tài khoản

Khách truy cập tạo mới tài khoản

Post- conditions Người dùng được tạo mới được tài khoản, thông tin cá nhân được lưu vào CSDL, hệ thống chuyển hướng sang Trang đăng nhập

Use case bắt đầu khi khách truy cập vào Modal đăng ký tài khoản

1 Hệ thống hiển thị biểu mẫu cho khách thông tin đăng ký

2 Khách nhập thông tin đăng ký gồm email, username và mật khẩu sau đó bấm nút Đăng ký

3 Khách kiểm tra thông tin, bấm vào nút Đăng ký để đăng ký tài khoản

4 Hệ thống xác thực, lưu thông tin đăng ký tài khoản của khách vào CSDL và chuyển hướng đến trang Đăng nhập (1)

(1) Email hoặc Username của Khách nhập đã tồn tại

- Hiển thị thông báo Username hoặc Email đã được đăng ký, yêu cầu khách nhập lại thông tin

Extension point Đã có tài khoản chuyển sang Đăng nhập

Bảng 5: Đặc tả use case Đăng nhập

Người dùng đăng nhập tài khoản

Pre-conditions Người dung đã có tài khoản

Post- conditions Access token của người dùng sẽ được lưu vào Cookies Hệ thống chuyển hướng đến Trang chủ

Use case bắt đầu khi khách truy cập vào Modal đăng nhập

1 Hệ thống hiển thị biểu mẫu cho khách điền thông tin đăng nhập

2 Khách nhập thông tin đăng nhập gồm username và mật khẩu rồi bấm nút Đăng nhập (a) (1)

3 Hệ thống kiểm tra các giá trị nhập vào (1) (2)

4 Hệ thống lưu Access token của người dùng vào Cookies, thông báo đăng nhập thành công và chuyển hướng đến trang chủ

2.(1) Thông tin khách điền không đầy đủ như biểu mẫu yêu cầu - Hiển thị thông báo còn thiếu username hoặc mật khẩu, yêu cầu khách nhập lại thông tin

3.(1) Tài khoản không tồn tại

- Hiển thị thông báo tài khoản không tồn tại, yêu cầu đăng nhập lại

- Hiển thị thông báo mật khẩu nhập vào không đúng, yêu cầu nhập lại mật khẩu

Extension point Chưa có tài khoản, đăng ký tài khoản mới

Bảng 6: Đặc tả use case Đăng xuất

Người dùng muốn đăng xuất ra khỏi tài khoản

Pre-conditions Người dùng đã có tài khoản và đăng nhập vào hệ thống

Access token của người dùng bị xóa khỏi Cookies, hệ thống chuyển hướng đến trang chủ

1 Người dùng bấm vào nút Đăng xuất trên thanh điều hướng

2 Hệ thống xóa Access token của người dùng khỏi Cookies, thông báo đăng xuất thành công và chuyển hướng đến Trang chủ

Bảng 7: Đặc tả Use case Thay đổi mật khẩu

Name Thay đổi mật khẩu

Người dùng muốn thay đổi mật khẩu

Pre-conditions Là Người dung đã có tài khoản và đã đăng nhập vào hệ thống

Post- conditions Mật khẩu của người dùng được cập nhật thành công, trở về trang cá nhân

Use case bắt đầu khi người dùng đã đăng nhập và truy cập vào Trang cá nhân

1 Người dùng bấm vào nút Đổi mật khẩu

2 Hệ thống hiện biểu mẫu Đổi mật khẩu

3 Người dùng nhập thông tin và bấm nút Xác nhận (1) (2)

4 Hệ thống lưu lại mật khẩu mới vào CSDL và hiển thị thông báo mật khẩu được cập nhật thành công

3.(1) Người dùng chưa điền đủ thông tin

- Hiển thị thông báo chưa nhập đủ thông tin, yêu cầu khách nhập lại thông tin

3.(2) Sai mật khẩu hiện tại

- Hiển thị thông báo mật khẩu sai, yêu cầu nhập lại

- Hiển thị thông báo mật khẩu nhập lại không khớp, yêu cầu nhập lại mật khẩu

Extension point - Người dùng bấm nút Đóng để thoát khỏi biểu mẫu

Bảng 8: Đặc tả use case Vào lớp học

Name Tham gia vào lớp học

Người dùng muốn truy cập trang của lớp học

Pre-conditions Là người dung có tài khoản và đã đăng nhập vào hệ thống Người dung tham gia ít nhất một lớp học

Post- conditions Người dùng được chuyển đến trang riêng của lớp học

Flow of events Basic flow

1 Người dùng đang ở trang chủ của ứng dụng

2 Người dùng chọn lớp học mà mình muốn vào

3 Người dùng chọn nhấn chọn trên lớp học mong muốn

4 Hệ thống chuyển người dùng sang trang riêng của lớp học

Hệ thống không thể chuyển trang do lớp học đang gặp vấn đề

Hệ thống không thể chuyển trang do người dung chưa tham gia vào lớp học, sẽ hiện biểu mẫu để thông báo

Bảng 9: Đặc tả use case Rời lớp học

Người dùng muốn rời lớp học

Pre-conditions Là người dùng đã đăng nhập vào hệ thống

Người dung tham gia ít nhất một lớp học

Post- conditions Người dùng rời lớp học thành công

Flow of events Basic flow

1 Người dùng ở trang chủ ứng dụng

2 Người dùng chọn lớp học mình muốn rời

3 Người dùng chọn rời lớp học

4 Hệ thống xác thực mã xác nhận hợp lệ và ghi nhận người dùng rời lớp học thành công

2.1.3.7 Cập nhật thông tin cá nhân

Bảng 10: Đặc tả use case Cập nhật thông tin cá nhân

Name Cập nhật thông tin cá nhân

Người dùng muốn cập nhật thông tin cá nhân

Tất cả người dùng có tài khoản của hệ thống

Pre-conditions Là người dùng có tài khoản vào đã đăng nhập vào hệ thống

Nếu thành công: Thông tin người dùng được cập nhật

Nếu thất bại: Hiển thị thông báo lỗi đã xảy ra khi cập nhật thông tin cá nhân

Flow of events Basic flow

Use case bắt đầu khi người dùng muốn cập nhật thông tin cá nhân

1 – Người dùng chọn cập nhập thông tin cá nhân

2 – Hệ thống hiển thị các thông tin của người dùng

3 – Người dùng nhập các thông tin cần chỉnh sửa

5 – Hệ thống kiểm tra các thông của người dùng đã nhập

6 – Hệ thống lưu lại các thông tin mới của người dùng

Nếu kiểm tra dữ liệu mà người dùng nhập

1 – Hệ thống thông báo lỗi đã xảy ra trong quá trình cập nhập thông tin cho người dùng

2 – Người dùng chỉnh sửa lại các thông tin mà hệ thống báo lỗi

 Quay lại bước 4 Basic flow

Bảng 11: Đặc tả use case Đăng bài viết

Người dùng muốn đăng bài viết mới lên trang riêng của lớp học

Pre-conditions Người dùng đang trong trang riêng của một lớp học

Người dùng đăng bài viết mới thành công

Flow of events Basic flow

1 Người dùng đang ở trang riêng của lớp học

2 Người dùng chọn vào khung tạo bài viết

3 Người dùng nhập nội dung bài viết, có thể đính kèm file (nếu có) và chọn lệnh đăng bài

4 Hệ thống xác nhận đăng bài viết thành công

5 Hệ thống hiển thị bài viết mới ghi lên trang của lớp học

Hệ thống thông báo đăng bài viết thất bại

Người dùng hủy đăng bài viết

Bảng 12: Đặc tả use case Làm bài kiểm tra

Name Làm bài kiểm tra

Người dùng làm bài kiểm tra trực tiếp trên ứng dụng

Pre-conditions Người dùng đang trong trang riêng của một lớp học

Lớp học có ít nhất 1 bài kiểm tra

Học sinh có thể làm bài kiểm tra và lưu lại bài làm và kết quả

1 Người dùng đang ở trang riêng của lớp học

2 Người dùng chọn bài kiểm tra mình muốn làm

3 Người dùng hoàn thành bài kiểm tra và chọn lệnh nộp bài trong thời gian quy định

4 Hệ thống ghi nhận bài làm của người dùng và có hoặc không hiển thị điểm tùy theo cài đặt của giáo viên

Hệ thống bị nghẽn do kết nối mạng và vẫn còn thời gian làm bài

Hệ thống tự động lưu lại bài làm của người dùng

Bảng 13: Đặc tả use case Bình luận bài viết

Name Bình luận bài viết

Người dùng bình luận bài viết đã có trên trang riêng của lớp học

Pre-conditions Người dùng đang trong trang riêng của một lớp học

Lớp học có ít nhất 1 bài viết

Người dùng bình luận bài viết thành công

Bình luận được hiển thị trên bài viết và số lượt bình luận của bài viết tăng

1 Người dùng đang ở trang riêng của lớp học

2 Người dùng chọn bài viết mình muốn bình luận

3 Người dùng soạn thảo bình luận và chọn lệnh đăng

4 Hệ thống xác nhận bình luận bài viết thành công

5 Hệ thống hiển thị bình luận lên bài viết đó và số lượng bình luận của bài viết tăng một

Bài viết bị xóa trước khi người dùng gửi bình luận

Người dùng hủy bình luận

Bảng 14: Đặc tả use case Tạo lớp học

Người dùng muốn tạo một lớp học mới

Pre-conditions Người dùng đã đăng nhập vào hệ thống

Người dùng tạo thành công một lớp học mới

1 Người dùng đang ở trang chủ của ứng dụng

2 Người dùng chọn chức năng thêm lớp học

3 Hệ thống mở biểu mẫu thêm lớp học

4 Người dùng bổ sung thông tin lớp học và chọn lệnh xác nhận

5 Hệ thống xác nhận người dùng tạo lớp học mới thành công

Hệ thống hiển thị thông báo tạo lớp học không thành công do người dùng chưa điền đủ các thông tin bắt buộc

Người dùng bổ sung các thông tin bắt buộc còn thiếu

Use case quay lại bước 4

Người dùng hủy tạo mới lớp học

2.1.3.12 Chỉnh sửa thông tin lớp học

Bảng 15: Đặc tả use case Chỉnh sửa thông tin lớp học

Name Chỉnh sửa thông tin lớp học

Người dùng muốn chỉnh sửa thông tin lớp học của mình

Pre-conditions Người dùng có ít nhất một lớp học của mình

Thông tin lớp học được chỉnh sửa thành công

1 Người dùng truy cập trang chủ có lớp học của mình cần chỉnh sửa

2 Người dùng chọn chức năng chỉnh sửa lớp học

3 Người dùng thay đổi thông tin lớp học và chọn lệnh xác nhận

4 Hệ thống xác thực thông tin lớp học hợp lệ

5 Hệ thống ghi nhận thông tin của lớp học được chỉnh sửa thành công

4a Hệ thống xác thực thông tin không hợp lệ

4a1 Người dùng chọn hủy chỉnh sửa lớp học

4a2 Người dùng chỉnh sửa lại thông tin lớp học

Use case quay lại bước 3

2.1.3.13 Xem kết quả các các bài kiểm tra

Bảng 16: Đặc tả use case Xem kết quả của các bài kiểm tra

Name Xem kết quả của các bài kiểm tra

Người dùng muốn danh sách các bài tập, điểm số các học sinh trong lớp và số học sinh đã làm bài

Pre-conditions Người dùng có ít nhất một lớp học của mình

Hệ thống hiển thị danh sách bài tập

Hệ thống hiển thị điểm số trung bình của học sinh

Hệ thống tổng kết kết quả và xếp hạng học sinh theo điểm số từ các bài tập trong lớp

1 Người dùng truy cập bài tập của lớp học

2 Hệ thống hiển thị danh sách các bài tập

3 Người dùng chọn bài tập mình muốn xem chi tiết

4 Hệ thống hiển thị điểm số trung bình của học sinh thông qua bài tập

2b Lớp học chưa có bài tập nào

2b1 Người dùng không thể xem kết quả bài tập

Bảng 17: Đặc tả use case Xoá lớp học

Người dung muốn xoá lớp học

Pre-conditions Người dùng có ít nhất một lớp học của mình

Xóa lớp học thành công

Cập nhật lại danh sách lớp học của học sinh trong lớp

1 Người dùng ở trang chủ có hiện danh sách lớp học

2 Người dùng chọn lớp học mình muốn xóa

3 Người dùng chọn xóa lớp học

4 Hệ thống tiến hành xoá lớp học và ghi nhận lớp học đã xóa thành công

4 Người dùng hủy xóa lớp

LƯỢC ĐỒ TUẦN TỰ - SEQUENCE DIAGRAM

2.2.1 Xem thông tin trang web

Hình 17: Sequence Diagram Xem thông tin trang web

Hình 18: Sequence Diagramn Đăng nhập

Hình 19: Sequence Diagram Đăng xuất

Hình 20: Sequence Diagram Đăng ký tài khoản

Hình 21: Sequence Diagram Thêm lớp học

Hình 22: Sequence Diagram Tham gia lớp học 2.2.7 Rời khỏi lớp học

Hình 23: Sequence Diagram Rời khỏi lớp học

Hình 24: Sequence Diagram Xoá lớp học 2.2.9 Quản lý bảng tin

Hình 25: Sequence Diagram Quản lý bảng tin

Hình 26: Sequence Diagram Thêm bài đăng 2.2.11 Xoá bài đăng

Hình 27: Sequence Diagram Xoá bài đăng

Hình 28: Sequence Diagram Thêm bình luận 2.2.13 Xoá bình luận

Hình 29: Sequence Diagram Xoá bình luận

Hình 30: Sequence Diagram Xoá thành viên 2.2.15 Quản lý bài tập

Hình 31: Sequence Diagram Quản lý bài tập

Hình 32: Sequence Diagram Thêm bài tập 2.2.17 Xoá bài tập

Hình 33: SequenceDiagram Xoá bài tập

LƯỢC ĐỒ LỚP

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

2.4.1 Lược đồ cơ sở dữ liệu

Hình 35: Lược đồ cơ sở dữ liệu

2.4.2.1 Tài khoản người dùng user

STT TÊN THUỘC TÍNH KIỂU DỮ LIỆU MÔ TẢ

1 ID String PK Mã người dùng

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

3 email String Tài khoản email

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

8 avatar String Ảnh đại diện

STT TÊN THUỘC TÍNH KIỂU DỮ LIỆU MÔ TẢ

1 ID String PK Mã lớp học

2 Students Array Danh sách học sinh

3 Name String Tên lớp học

4 ClassCode String Mã vào lớp học

5 Description String Mô tả cho lớp học

7 Newsfeed Array Danh sách các bảng tin

8 Tests Array Danh sách các bài Test

STT TÊN THUỘC TÍNH KIỂU DỮ LIỆU MÔ TẢ

1 ID String PK Mã bảng tin

2 Comment Array Danh sách các bình luận

3 Content String Nội dung bài đăng

4 Creator String ID người tạo

5 CreateAt String Ngày tạo bảng tin

6 UpdateAt String Ngày update bảng tin

STT TÊN THUỘC TÍNH KIỂU DỮ LIỆU MÔ TẢ

1 ID String PK Mã bình luận

2 Content String Nội dung bình luận

3 Creator String ID người tạo

4 CreateAt String Ngày tạo bình luận

5 UpdateAt String Ngày update bình luận

STT TÊN THUỘC TÍNH KIỂU DỮ LIỆU MÔ TẢ

1 ID String PK Mã bài test

2 Name String Tên bài test

3 Creator String ID người tạo

4 Description String Mô tả về bài test

5 StartTime String Thời gian bắt đầu

6 EndTime String Thời gian kết thúc

7 NumberOfQuestion Number Số câu hỏi

8 MaxPoint Number Điểm tối đa

9 Questions Array Mảng chứa các Id câu hỏi

STT TÊN THUỘC TÍNH KIỂU DỮ LIỆU MÔ TẢ

1 ID String PK Mã câu hỏi

2 Content String Nội dung câu hỏi

3 Answers Array Mảng chứa câu trả lời

STT TÊN THUỘC TÍNH KIỂU DỮ LIỆU MÔ TẢ

1 ID String PK Mã trả lời

2 Content String Nội dung câu trả lời

3 IsCorrect Boolean Đáp án đúng hay sai

4 CreateAt String Thời gian tạo

5 UpdateAt String Thời gian chỉnh sửa

STT TÊN THUỘC TÍNH KIỂU DỮ LIỆU MÔ TẢ

1 ID String PK Mã làm bài test

2 TestId String Mã bài test

3 UserId Boolean Mã người làm bài test

4 StartTime String Thời gian bắt đầu làm bài

5 SubmitTime String Thời gian nộp bài

6 Point Number Điểm của bài làm

7 Result Array Lưu kết quả bài làm

2.4.2.9 Nhật ký làm bài – Test Log

STT TÊN THUỘC TÍNH KIỂU DỮ LIỆU MÔ TẢ

1 ID String PK Mã nhật ký

2 takeTestId String Mã làm bài thi

3 logs Array Danh sách các hành động thực hiện

THIẾT KẾ GIAO DIỆN

Hình 37: Landing Page 2 Bảng 27: Chức năng của Landing page

STT Tên Loại Điều kiện Chức năng

Click Mở Modal Đăng nhập

Click Mở Modal Đăng ký tài khoản

Hình 38: Đăng nhập Bảng 28: Chức năng đăng nhập

STT Tên Loại Điều kiện Chức năng

1 Đăng nhập Thẻ Click button

“Đăng nhập” sau khi điền đầy đủ thông tin hợp lý

1 Nhận thông tin đăng nhập

2 Gọi API “Login” và truyền dữ liệu vào request theo JSON bằng phương thức POST

3 Dữ liệu hợp lệ - Đăng nhập thành công

2 Tên tài khoản Thẻ Input Người dùng nhập username

3 Mật khẩu Thẻ Input Người dùng nhập mật khẩu

2.4.3 Modal đăng ký tài khoản

Hình 39: Đăng ký tài khoản Bảng 29: Chức năng Đăng kí tài khoản

STT Tên Loại Điều kiện Chức năng

“Đăng kí” sau khi điền đầy đủ thông tin hợp lý

Submit đăng ký tài khoản

2.4.4 Giao diện trang home sau khi đăng nhập

Hình 40: Giao diện trang Home Bảng 30: Chức năng ở trang Home

STT Tên Loại Điều kiện Chức năng

Click Nếu đang ở trang khác - chuyển về trang chủ

Nếu đang ở trang chủ - giữ nguyên

2 Các lớp học Thẻ

  • Hiện tất cả các lớp học

    2.4.5 Các chức năng trên thanh header

    Hình 41: Giao khi click vào dấu + Bảng 31: Chức năng khi click vào dấu +

    STT Tên Loại Điều kiện Chức năng

    Click Mở modal Tham gia lớp học

    Click Mở modal Tạo lớp học

    Hình 42: Giao diện khi click vào tên và ảnh đại diện

    Bảng 32: Chức năng khi click vào tên

    STT Tên Loại Điều kiện Chức năng

    Click Chuyển đến trang thông tin cá nhân

    Click Đăng xuất tài khoản

    Hình 43: Giao diện khi click vào icon Hamberger trên header

    Bảng 33: Chức năng của thanh slide bar

    STT Tên Loại Điều kiện Chức năng

    Click Chuyển về trang home

    2 Giảng dạng Thẻ

  • Hiện các lớp user đã tạo

    3 Đã đăng kí Thẻ

  • Hiện các lớp user đã tham gia

    Hình 44: Giao diện tạo lớp học

    Bảng 34: Chức năng tạo lớp học

    STT Tên Loại Điều kiện Chức năng

    Click Lấy thông tin user nhập gửi lên api để tạo lớp

    2 Tên lớp học Thẻ Người dung nhập thông tin

    3 Mô tả Thẻ Người dung nhập thông tin

    4 Mã lớp học Thẻ Người dung nhập thông tin

    Click Đóng modal tạo lớp học

    Hình 45: Giao diện modal tham gia lớp học

    Bảng 35: Chức năng tham gia lớp học

    STT Tên Loại Điều kiện Chức năng

    Click Lấy thông tin user nhập gửi lên api để tham gia lớp

    2 Mã lớp Thẻ Người dùng nhập thông tin

    2.4.7 Thêm sự lựa chọn khi click vào mỗi lớp học

    Hình 46: Giao diện khi click vào lớp mà người dùng chưa tham gia Bảng 36: Chức năng khi click vào lớp mà người dùng chưa tham gia

    STT Tên Loại Điều kiện Chức năng

    Click Tham gia lớp học

    Hình 47: Giao diện khi click vào lớp của mình

    Bảng 37: Chức năng khi click vào lớp của mình tạo

    STT Tên Loại Điều kiện Chức năng

    Click Mở modal Chỉnh sửa lớp học

    Hình 48: Giao diện khi click vào lớp user đã tham gia Bảng 38: Chức năng khi click vào lớp user đã tham gia

    STT Tên Loại Điều kiện Chức năng

    Click Huỷ đăng ký khỏi lớp học

    Hình 49: Giao diện của lớp học chi tiết Bảng 39: Chức năng của lớp học chi tiết

    STT Tên Loại Điều kiện Chức năng

    Click Trang hiện cái bài đăng

    Click Trang hiện bài kiểm tra

    Click Hiện thông tin giáo và học sinh

    2.4.9 Đăng bài trong Bảng tin

    Hình 50: Giao diện đăng bài

    Bảng 40: Chức năng đăng bài trong bảng tin

    STT Tên Loại Điều kiện Chức năng

    Thẻ User nhập nội dung

    Hình 51: Giao diện bình luận bài viết Bảng 41: Chức năng bình luận bài viết

    STT Tên Loại Điều kiện Chức năng

    1 Thêm nhận xét … Thẻ User nhập nội dung

    2.4.11 Các lựa chọn của mỗi bài đăng

    Hình 52: Giao diện lựa chọn của mỗi bài đăng Bảng 42: Chức năng lựa chọn của mỗi bài đăng

    STT Tên Loại Điều kiện Chức năng

    1 Chỉnh sửa Thẻ Chỉnh sửa lại nội dung của bài đăng

    3 Sao chép đường liên kết

    Click Sao chép liên kết tới bài đăng

    Click Bài viết sẽ được ghim lên đầu trang

    2.4.12 Các lựa chọn của bình luận

    Hình 53: Giao diện các lựa chọn của bình luận Bảng 43: Chức năng của các lựa chọn của bình luận

    STT Tên Loại Điều kiện Chức năng

    1 Chỉnh sửa Thẻ Chỉnh sửa lại nội dung bình luận

    Hình 54: Giao diện của bài kiểm tra Bảng 44: Chức năng của bài kiểm tra

    STT Tên Loại Điều kiện Chức năng

    Thẻ Click Tới trang tạo bài kiểm tra

    Click Tới trang làm bài kiểm tra

    Click Edit bài kiểm tra

    Hình 55: Giao diện tạo bài kiểm tra Bảng 45: Chức năng tạo bài kiểm tra

    STT Tên Loại Điều kiện Chức năng

    1 Tên bài kiểm tra Thẻ

    Click Mở modal tạo bài kiểm tra

    2 Câu hỏi Thẻ Người dung nhập nội dung câu hỏi

    3 Đáp án 1 Thẻ Người dung nhập câu trả lời 1

    4 Icon hình tròn ở cuối mỗi đáp án

    Thẻ Click vào nếu đó là đáp án đúng

    Click Tạo bài kiểm tra

    Click Huỷ tạo bài kiểm tra

    2.4.15 Tạo tiêu đề bài kiểm tra

    Hình 56: Giao diện tạo tiêu đề bài kiểm tra Bảng 46: Chức năng tạo tiêu đề bài kiểm tra

    STT Tên Loại Điều kiện Chức năng

    Thẻ Người dùng nhập thông tin

    2 Mô tả Thẻ Người dùng nhập thông tin

    3 Điểm tối đa Thẻ Người dùng nhập thông tin

    Thẻ Người dùng nhập thông tin

    Thẻ Người dung nhập thông tin

    Tạo tiêu đề bài kiểm tra

    Huỷ tạo tiêu đề bài kiểm tra

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

    KẾ HOẠCH KIỂM THỬ

    Việc thực hiện kế hoạch kiểm thử này nhằm đạt được các mục đích sau:

    - Xác định thông tin cơ bản về dự án và các thành phần chức năng được kiểm thử và không được kiểm thử

    - Liệt kê những yêu cầu cho việc kiểm thử (Test Requirements)

    - Những chiến lược kiểm thử nên được sử dụng

    - Ước lượng những yêu cầu về tài nguyên và chi phí cho việc kiểm thử

    - Những tài liệu được lập sau khi hoàn thành việc kiểm thử

    Bảng 47: Lịch trình kiểm thử

    Milestone Deliverables Duration Start Date End Date

    Lập kế hoạch kiểm thử Tài liệu Test Plan 4 ngày 25/05/2023 29/05/2023

    Xem lại các tài liệu Tài liệu Test Plan 3 ngày 25/05/2023 28/05/2023

    Thiết kế các testcase Tài liệu Testcase 3 ngày 28/05/2023 31/05/2023

    Viết các testcase Tài liệu Testcase 4 ngày 31/05/2023 04/06/2023

    Xem lại các testcase Tài liệu Testcase 2 ngày 04/06/2023 06/06/2023

    Thực thi các testcase Tài liệu Testcase 3 ngày 06/06/2023 09/06/2023

    Ghi nhận và đánh giá kết quả kiểm thử

    PHẠM VI KIỂM THỬ

    Quản lý xác thực người dùng: Đăng nhập, đăng kí tài khoản, đăng xuất, quên mật khẩu

    Quản lý tài khoản: Thay đổi thông tin cá nhân, đổi mật khẩu

    Người dùng có thể tương tác trên hệ thống bằng cách xem thông tin khóa học, đăng ký ghi danh vào lớp học, thay đổi mật khẩu, cập nhật thông tin cá nhân, xem các bài đăng của lớp học, đăng bài viết và bình luận.

    THEO DÕI LỖI

    Mức độ nghiêm trọng Đặc tả lỗi

    High  Người dùng không đăng nhập / đăng kí / đăng xuất bình thường vào web được

     Không tìm thấy, truy cập vào lớp học được

     Trang web không phản hồi

     Trang web trả về lỗi hệ thống khi truy cập vào các tài nguyên, thực hiện các chức năng của hệ thống

     Hiển thị thông tin sai lệch, giả mạo

     Tiết lộ thông tin, danh tín của người dùng trái phép

    Medium  Không thêm, xóa, sửa thông tin lớp học được

     Không thêm, xóa, sửa bài viết trong lớp học được

     Không thể giao bài tập

     Không thể thêm, xem tài liệu trong lớp

     Không thể thực hiện chức năng quên mật khẩu

     Không thể chỉnh sửa thông tin cá nhân người dùng

     Không thể chỉnh sửa thông tin tài khoản

    Low  Hiển thị kết quả tìm kiếm không đúng lớp, tài khoản

     Hiển thị sai thông tin cá nhân, thông tin tài khoản

     Các chức năng chạy không ổn định

    3.3.2 Quy trình xử lý lỗi

    Ghi nhận lại các lỗi được tìm thấy trong quá trình kiểm thử Viết bug report, xác định vị trí dẫn đến lỗi, fix bug trong hệ thống.

    Kiểm thử một số chức năng của hệ thống

    3.4.1 Kiểm thử một số chức năng của Giáo viên

    Bảng 49: Bảng kiểm thử một số chức năng của Giáo viên

    STT Mô tả Các bước thực hiện Kết quả mong đợi

    Kết quả thực tế Kết quả

    1 Kiểm thử chức năng Đăng nhập với tài khoản

    -Nhấn nút đăng nhập Đăng nhập thành công và chuyển hướng sang trang chủ quản trị Đăng nhập thành công và chuyển hướng sang trang chủ quản trị Đạt

    2 Kiểm thử chức năng Đổi mật khẩu

    -Xác nhận lại mật khẩu mới

    -Nhấn nút đổi mật khẩu

    Thông báo đổi mật khẩu thành công

    Thông báo đổi mật khẩu thành công Đạt

    3 Kiểm thử chức năng Thêm học viên

    -Truy cập trang Quản lý học viên

    -Nhấn nút Thêm học viên

    -Nhập các thông tin của học viên

    Thông thêm học viên thành công, trở về trang danh sách học viên

    Thông thêm học viên thành công, trở về trang danh sách học viên Đạt

    4 Kiểm thử chức năng Tạo lớp học

    -Truy cập vào trang Tạo lớp học

    -Nhập các field cần thiết và tiến hành tạo

    Lớp học được tạo thành công và hiển thị ngoài trang chủ

    Lớp học được tạo thành công và hiển thị ngoài trang chủ Đạt

    3.4.2 Kiểm thử một số chức năng của học viên

    Bảng 50: Kiểm thử một số chức năng của học viên

    STT Mô tả Các bước thực hiện Kết quả mong đợi

    Kết quả thực tế Kết quả

    1 Kiểm thử chức năng Xem bài kiểm tra

    - Truy cập trang Bài kiểm tra

    Hiển thị các bài kiểm tra mà giáo viên đã tạo

    Hiển thị các bài kiểm tra mà giáo viên đã tạo Đạt

    2 Kiểm thử chức năng Đăng bài trên bảng tin

    - Truy cập trang bảng tin của một lớp học đã tham gia và đăng bài

    Bài đăng được hiển thị trên bảng tin

    Bài đăng được hiển thị trên bảng tin Đạt

    3 Kiểm thử chức năng bình luận

    -Truy cập vào trang Bảng tin của lớp học và tiến hành bình luận vào bài viết

    Bình luận sẽ được hiển thị đúng dưới bài viết

    Bình luận sẽ được hiển thị đúng dưới bài viết Đạt

    Sau một thời gian nghiên cứu và thực hiện đề tài nhóm thực hiện đã đạt được những kết quả như sau:

    VỀ LÝ THUYẾT

    Sau quá trình xây dựng và phát triển ứng dụng, em đã đạt được một số kết quả sau:

    Nắm vững và áp dụng kiến thức đã học, đồng thời khám phá và sử dụng MERN Stack để xây dựng và phát triển ứng dụng web.

    − Xây dựng thành công, đáp ứng tốt các yêu cầu đặt ra về một hệ thống dạy học số trực tuyến

    − Bảo mật và phân quyền cho các API của hệ thống

    − Biết cách triển khai một ứng dụng lên Vercel.

    CHỨC NĂNG CỦA WEBSITE

    Hệ thống hỗ trợ giáo viên trong việc quản lý lớp học và các thành viên, giúp học sinh dễ dàng theo dõi chương trình học, nhận thông báo từ giáo viên, thực hiện bài kiểm tra và nhận đánh giá một cách nhanh chóng và tiện lợi.

    ƯU ĐIỂM

    Khi xây dựng và phát triển hệ thống, một số ưu điểm đạt được có thể kể đến như:

    Website và ứng dụng di động hoạt động nhanh chóng và chính xác, đảm bảo không có xung đột giữa các module trong hệ thống.

    -Cơ chế bảo mật tốt bằng Json Web Token tạo cơ sở cho sự yên tâm của người dùng trong hệ thống

    -Giao diện đơn giản dễ sử dụng

    Phân chia hệ thống thành hai phần riêng biệt: front-end và back-end, giúp dễ dàng xử lý và hạn chế xung đột mã trong quá trình phát triển Đồng thời, việc chia các thành phần trong ứng dụng thành các components cũng giúp việc sử dụng, kết hợp, bảo trì và nâng cấp trở nên thuận tiện hơn trong tương lai.

    -Triển khai thành công ứng dụng (lên Vercel), giúp người dùng dễ dàng truy cập và sử dụng, cũng như trải nghiệm các tính năng của hệ thống

    NHƯỢC ĐIỂM

    Bên cạnh những ưu điểm đã được nêu ở trên, hệ thống còn tồn tại một số các nhược điểm, cần tiếp tục cải tiến và khắc phục:

    -Chưa tối ưu được tốc độ của hệ thống

    -Website còn thiếu một vài chức năng như làm bài kiểm tra với nhiều hình thức, hiển thị thông báo, …

    HƯỚNG PHÁT TRIỂN

    Dựa trên những nhược điểm đã được nêu, để kế thừa và phát huy những ưu điểm hiện có, ứng dụng sẽ tiếp tục phát triển theo một số hướng sau đây.

    -Bổ sung thêm các tính năng nâng cao như tạo bài kiểm tra với đa dạng hình thức như điền khuyết, ghép nối,…; thanh toán học phí online, …

    -Tiếp tục cải thiện giao diện để tối ưu trãi nghiệm người dùng

    -Nâng cao tốc độ xử lý của trang web

  • Ngày đăng: 05/12/2023, 10:04

    HÌNH ẢNH LIÊN QUAN

    Hình 6: Quá trình chuyển đổi từ mã nguồn NodeJS sang JavaScript nhờ vào Chrome V8 engine - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 6 Quá trình chuyển đổi từ mã nguồn NodeJS sang JavaScript nhờ vào Chrome V8 engine (Trang 26)
    Hình 7: Triển khai Middleware trong ExpressJS - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 7 Triển khai Middleware trong ExpressJS (Trang 28)
    Hình 8: So sánh tốc độ khi thêm 1 bản ghi giữa MongoDB và SQL - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 8 So sánh tốc độ khi thêm 1 bản ghi giữa MongoDB và SQL (Trang 29)
    Hình 9: Kiến trúc REST - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 9 Kiến trúc REST (Trang 31)
    Hình 10: Use case tổng quan - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 10 Use case tổng quan (Trang 32)
    Hình 12: Use case quản lý tài khoản - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 12 Use case quản lý tài khoản (Trang 33)
    Hình 14: Use case Tương tác của học sinh trên trang lớp học - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 14 Use case Tương tác của học sinh trên trang lớp học (Trang 33)
    Hình 15: Use case Tương tác của giáo viên trên trang chủ - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 15 Use case Tương tác của giáo viên trên trang chủ (Trang 34)
    Hình 16: Use case Tương tác của giáo viên trên trang lớp học - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 16 Use case Tương tác của giáo viên trên trang lớp học (Trang 34)
    Hình 20: Sequence Diagram Đăng ký tài khoản - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 20 Sequence Diagram Đăng ký tài khoản (Trang 53)
    Hình 24: Sequence Diagram Xoá lớp học  2.2.9. Quản lý bảng tin - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 24 Sequence Diagram Xoá lớp học 2.2.9. Quản lý bảng tin (Trang 55)
    Hình 26: Sequence Diagram Thêm bài đăng  2.2.11. Xoá bài đăng - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 26 Sequence Diagram Thêm bài đăng 2.2.11. Xoá bài đăng (Trang 56)
    Hình 28: Sequence Diagram Thêm bình luận  2.2.13. Xoá bình luận - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 28 Sequence Diagram Thêm bình luận 2.2.13. Xoá bình luận (Trang 57)
    Hình 30: Sequence Diagram Xoá thành viên  2.2.15. Quản lý bài tập - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 30 Sequence Diagram Xoá thành viên 2.2.15. Quản lý bài tập (Trang 58)
    Hình 49: Giao diện của lớp học chi tiết  Bảng 39: Chức năng của lớp học chi tiết - Xây dựng website dạy học số sử dụng công nghệ mern stack
    Hình 49 Giao diện của lớp học chi tiết Bảng 39: Chức năng của lớp học chi tiết (Trang 77)

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

    TÀI LIỆU LIÊN QUAN

    🧩 Sản phẩm bạn có thể quan tâm

    w