1. Trang chủ
  2. » Cao đẳng - Đại học

đồ án 2 phát triển website học online

90 0 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 đề Đồ Án 2 Phát Triển Website Học Online
Tác giả Trương Nguyễn Công Chính
Người hướng dẫn TH.S Trần Anh Dũng
Trường học Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Công nghệ thông tin
Thể loại Đồ án
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 90
Dung lượng 4,92 MB

Nội dung

Đặc biệt, sau sự bùng nổ của cuộc cáchmạng công nghiệp 4.0, ứng dụng công nghệ trong giáo dục, đặc biệt là học online, đã trởthành một phần quan trọng của hệ thống giáo dục hiện đại.. 1.

Trang 1

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

Trang 2

LỜI CẢM ƠN

Bài báo cáo này được thực hiện tại Trường Đại học Công nghệ thông tin, Đại họcQuốc gia Thành phố Hồ Chí Minh dưới sự hướng dẫn khoa học của THS Trần AnhDũng Tôi xin bày tỏ lòng biết ơn sâu sắc tới thầy đã quan tâm, hướng dẫn từ các kỹ năng

cơ bản đến định hướng khoa học, tạo điều kiện thuận lợi trong suốt quá trình làm bài báocáo tại trường

Tôi cũng xin gửi lời cám ơn đến Ban Lãnh đạo Trường Đại học Công nghệ thôngtin, Đại học Quốc gia Thành phố Hồ Chí Minh đã tạo điều kiện tốt về cả cơ sở vật chấtlẫn tinh thần cho tôi trong suốt quá trình hoàn thành bài báo cáo này

Cuối cùng, tôi bày tỏ lòng biết ơn tới bố mẹ, ông bà, các anh chị em trong giađình Và lòng biết ơn vô tận đến ông nội, sự ra đi của ông có lẽ là sự mất mát lớn nhấttrong cuộc đời tôi kèm theo đó là sự tiếc nuối những điều mà tôi chưa có khả năng làmcho ông Nhưng qua thời gian, tôi đã có thể mở lòng và đón nhận sự mất mát này hơn.Đối với tôi đây là động lực lớn nhất để tôi có thể hoàn thành đồ án 2 này cũng như là tiếptúc phấn đấu cho những chặng đường tiếp theo trong cuộc đời

Thành phố Hồ Chí Minh, ngày 31 tháng 12 năm 2023

Trương Nguyễn Công Chính

Mục lục

CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI4

Trang 3

1.6 Đối tượng nghiên cứu6

1.7 Khảo sát và đánh giá các ứng dụng hiện có6

CHƯƠNG 2 TỔNG QUAN CÔNG NGHỆ10

2.1 Phương pháp làm việc10

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

2.3 Phương pháp công nghệ và nền tảng10

2.4 Giới thiệu về ReactJS và Node.js10

CHƯƠNG 3 KHẢO SÁT VÀ PHÂN TÍCH ĐẶC TẢ YÊU CẦU14

3.1 Khảo sát hiện trạng14

3.2 Danh sách yêu cầu có trong ứng dụng14

CHƯƠNG 4 PHÂN TÍCH HỆ THỐNG16

4.1 Phân tích các yêu cầu phần mềm16

4.2 Bẳng trách nhiệm cho từng loại yêu cầu18

CHƯƠNG 5 THIẾT KẾ HỆ THỐNG19

5.1 Sơ đồ Usecase tổng quát19

CHƯƠNG 6 THIẾT KẾ DỮ LIỆU69

6.1 Sơ đồ logic hoàn chỉnh69

6.2 Danh sách các bản dữ liệu trong sơ đồ logic69

6.3 Mô tả từng bảng dữ liệu69

CHƯƠNG 7 THIẾT KẾ GIAO DIỆN75

CHƯƠNG 8 CÀI ĐẶT DEMO SẢN PHẨM76

CHƯƠNG 9 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN78

CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI

Trang 4

1.1 Đặt vấn đề

Hệ thống giáo dục đang phải đối mặt với nhiều thách thức trong việc đảm bảo sự tiếpcận chất lượng và linh hoạt trong quá trình học Đặc biệt, sau sự bùng nổ của cuộc cáchmạng công nghiệp 4.0, ứng dụng công nghệ trong giáo dục, đặc biệt là học online, đã trởthành một phần quan trọng của hệ thống giáo dục hiện đại

Các thách thức của việc học online:

- Học online thường gặp khó khăn trong việc cung cấp tương tác giữa giáo viên vàhọc viên, dẫn đến việc thiếu sự hỗ trợ cá nhân

- Khả năng truyền đạt kiến thức và tạo nên môi trường học hiệu quả không phải lúcnào cũng được đảm bảo trong môi trường học online

- Quản lý tiến độ học và theo dõi hoạt động của học viên đôi khi trở nên khó khăn,ảnh hưởng đến khả năng đánh giá và cải thiện chất lượng giáo dục

- Xây dựng hệ thống quản lý tiến độ học viên thông minh, giúp giáo viên theo dõi

và đánh giá hiệu suất học tập một cách hiệu quả

1.3 Mục tiêu đề tài

Đồ án này nhằm mục tiêu phát triển và triển khai một ứng dụng học online tiên tiến

để giải quyết những thách thức quan trọng của môi trường học online hiện nay Chúng tôitập trung vào việc tối ưu hóa tương tác giữa giáo viên và học viên bằng cách tích hợp cáccông nghệ như video họp và diễn đàn trực tuyến Ngoài ra, chúng tôi đặt ra mục tiêu cảithiện hiệu quả giảng dạy bằng cách phát triển các tính năng giảng dạy tiên tiến, như bảng

Trang 5

trắng tương tác và bài giảng đa phương tiện.

Giao diện học của ứng dụng được thiết kế để thân thiện với người dùng, dễ sử dụng

và có khả năng tương tác để tối ưu hóa trải nghiệm học tập Chúng tôi cũng xây dựng một

hệ thống quản lý tiến độ học viên thông minh, cung cấp dữ liệu chi tiết về hoạt động họctập để giáo viên có thể theo dõi và đánh giá hiệu suất một cách hiệu quả

Đồ án này không chỉ hướng đến việc cải thiện trải nghiệm học tập của học viên màcòn đặt ra mục tiêu hỗ trợ giáo viên trong quá trình quản lý và giảng dạy Nó mang lạigiải pháp toàn diện cho các thách thức trong học online, từ đó đóng góp vào sự nâng caochất lượng giáo dục và tạo ra một môi trường học tập hiệu quả và an toàn Đồ án này hyvọng sẽ đóng góp vào sự phát triển bền vững của hệ thống học online, mang lại lợi íchlâu dài cho cả giáo viên và học viên

1.4 Phạm vi đề tài

Đề tài này tập trung vào phát triển và triển khai một ứng dụng học online tiên tiến vớimục đích giải quyết những thách thức chính của môi trường học online hiện nay

1.5 Công cụ sử dụng

⮚ Công cụ phát triển: Visual Studio Code

⮚ Công cụ dùng để phân tích, thiết kế: Adobe illustrator, Adobe photoshop, Figma.

⮚ Công cụ quản lý dự án: Github.

⮚ Công cụ soạn thảo báo cáo và vẽ sơ đồ: Microsoft Word, draw.io.

1.6 Đối tượng nghiên cứu

Trang 6

Ứng dụng này chủ yếu được phát triển để phục vụ cả giáo viên và học viên trongmôi trường học online Tuy nhiên, sự tập trung sẽ làm nổi bật những nhu cầu vàmong muốn chính của cả hai đối tượng này.

1.7 Kháo sát, đánh giá các ứng dụng cạnh tranh hiện có

1.7.1 Giao hàng nhanh

F8 – Học lập trình

F8 là một nền tảng học trực tuyến cung cấp các khóa học và chứng chỉ từ tổ chức cánhân F8 F8 cung cấp hàng loạt các chủ đề về lập trình và bao gồm cả lộ trình đầy đủ chongười mới bắt đầu lập trình

⮚ Ưu điểm của F8 bao gồm:

o Các khóa học F8 cung cấp thường được giảng dạy rất nhiệt tình và uy tính,đảm bảo chất lượng học tập

o Học viên có thể theo học mọi nơi và mọi lúc có kết nối internet Họ có thểtùy chọn thời gian học phù hợp với lịch trình cá nhân và làm việc của họ

o Sau khi hoàn thành một khóa học, học viên có thể nhận được chứng chỉhoặc bằng cấp có giá trị, giúp họ cải thiện sự nghiệp và thăng tiến

o Một số khóa học có thể được tham gia miễn phí, và người học chỉ phải trảphí nếu muốn nhận chứng chỉ hoặc tham gia các khóa học chuyên sâu

⮚ Tuy nhiên, F8 cũng có một số nhược điểm:

Trang 7

o Chưa cung cấp đa dạng các thể loại khóa học mà chỉ tập trung vào mỗi lậptrình.

o Bằng cấp được cấp trên đây chỉ có tác dụng ở một số doanh nghiệp cố định

và rất ít

o Việc kiểm soát thực hành là còn khá kém

o Hạn chế trong việc tương tác trực tuyến giữa giảng viên và học viên và cáchọc viên khác trong cùng một khóa học

CHƯƠNG 2 TỔNG QUAN CÔNG NGHỆ 2.1 Phương pháp làm việc

Làm việc khi tâm trạng đạt trạng thái tốt nhất Thường xuyên ghi chép lại các ý tưởng cũng như là những thay đổi lớn liên quan đến ứng dụng để thuận tiện cho việc chỉnh sửa sau này.

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

- Phân tích nhu cầu sử dụng của các đối tượng có liên quan đến ứng dụng

- Nghiên cứu, phân tích và đánh giá các ứng dụng có sẵn trên thị trường

2.3 Phương pháp công nghệ và nền tảng

- Tìm hiểu ngôn ngữ và framework để xây dựng website:

+ Ngôn ngữ lập trình backend: Javascript với Express, Postman

+ Ngôn ngữ lập trình frontend: Javascript với ReactJS

Trang 8

- Ứng dụng sẽ được xây dựng trên mô hình client server:

Hình 1 Mô hình Client – Server

Mô hình client-server là một kiến trúc phần mềm phổ biến trong lập trình và thiết

kế hệ thống, trong đó các thành phần chính được chia thành hai vai trò quan trọng: client(khách hàng) và server (máy chủ) Mô hình này tạo ra một môi trường làm việc phân tán,nơi mà các thiết bị hay phần mềm có thể giao tiếp và truyền thông tin với nhau thông quamạng

Trong mô hình này, client là thành phần yêu cầu và sử dụng các dịch vụ từ server.Client có thể là một ứng dụng hoặc thiết bị độc lập, thường là người dùng cuối, nhận diện

và sử dụng các tài nguyên được cung cấp bởi server Trong khi đó, server là nơi cung cấpcác dịch vụ, tài nguyên, hoặc thông tin được yêu cầu bởi client Server có trách nhiệm xử

lý các yêu cầu từ client và trả lại kết quả tương ứng

Mô hình client-server cho phép sự phân tách giữa nhiều client và một server duynhất hoặc nhiều server tương tác với nhau Điều này giúp tăng cường khả năng mở rộng

và quản lý hệ thống, vì server có thể tập trung vào xử lý và cung cấp dịch vụ mà khôngcần quan tâm đến giao diện người dùng hay các yêu cầu cụ thể của từng client

Mô hình client-server thường được áp dụng trong nhiều ứng dụng, từ các trang

Trang 9

web, ứng dụng di động cho đến hệ thống doanh nghiệp lớn Sự phân tách giữa client vàserver mang lại tính linh hoạt, bảo mật và quản lý hiệu quả, làm cho mô hình này trởthành một trong những kiến trúc phổ biến và quan trọng trong phát triển phần mềm và hệthống.

2.4 Giới thiệu ReactJS và NodeJS

2.4.1 Node.js

Node.js là một môi trường chạy mã JavaScript phía máy chủ (server-side) đượcxây dựng dựa trên nền tảng JavaScript V8 engine của Google Chrome Nó cho phép pháttriển ứng dụng web và các dịch vụ mạng có khả năng xử lý đa luồng, đáp ứng cao và cókhả năng mở rộng

Dưới đây là một số ưu điểm của Node.js:

⮚ Hiệu suất cao: Node.js sử dụng kiến trúc không đồng bộ và hướng sự kiện driven), cho phép xử lý đa luồng mà không bị chặn bởi I/O Điều này giúp tăngcường hiệu suất và đáp ứng nhanh hơn trong các ứng dụng có tính tải cao

(event-⮚ Xây dựng ứng dụng thời gian thực: Node.js hỗ trợ xử lý đồng thời và gửi dữ liệuqua WebSockets, cho phép xây dựng các ứng dụng thời gian thực như trò chuyệntrực tuyến, trò chơi đa người chơi, ứng dụng đồng bộ, v.v

⮚ Mã nguồn mở và cộng đồng phát triển đông đảo: Node.js là một dự án mã nguồn

mở, có nhiều thư viện, framework và công cụ phát triển phong phú Cộng đồngphát triển của Node.js rất lớn và năng động, mang lại nhiều tài nguyên và hỗ trợcho nhà phát triển

Trang 10

⮚ Đơn giản và dễ học: Node.js sử dụng ngôn ngữ JavaScript, ngôn ngữ phổ biến và

dễ học Điều này giúp cho việc học và phát triển ứng dụng trở nên dễ dàng vànhanh chóng

Tuy nhiên, Node.js cũng có một số nhược điểm cần lưu ý:

⮚ Xử lý CPU-intensive chậm: Do Node.js sử dụng mô hình đơn luồng, nếu ứng dụng

có nhiều tác vụ CPU-intensive (như tính toán phức tạp), hiệu suất có thể giảm.Node.js thích hợp hơn cho các ứng dụng I/O-intensive (như ứng dụng web) hơn làCPU-intensive

⮚ Tiềm ẩn về quản lý bộ nhớ: Node.js sử dụng bộ nhớ không đồng bộ blocking) và sự kiện để đạt hiệu suất cao Tuy nhiên, điều này có thể tạo ra một sốthách thức trong quản lý bộ nhớ, đặc biệt là khi xử lý các tác vụ dài hạn hoặc cókhối lượng dữ liệu lớn

(non-Chưa hoàn thiện trong việc hỗ trợ một số tính năng: Mặc dù Node.js đã phát triểnmạnh mẽ, nhưng vẫn còn một số tính năng và giao diện chưa được hoàn thiện hoặc thiếu

hỗ trợ tốt

2.4.2 ReactJs

ReactJS là một thư viện JavaScript mã nguồn mở được sử dụng để xây dựng giao diện người dùng (UI) động trong các ứng dụng web Với ReactJS, người phát triển có thểxây dựng các thành phần giao diện độc lập, tái sử dụng và quản lý trạng thái của ứng dụng một cách hiệu quả

Dưới đây là một số ưu điểm của ReactJS:

⮚ Hiệu suất cao: ReactJS sử dụng Virtual DOM (DOM ảo) để làm việc, giúp cải thiện hiệu suất bằng cách chỉ cập nhật lại các phần tử cần thiết trên trang web, thay

Trang 11

vì cập nhật toàn bộ DOM Điều này giúp giảm thời gian render và cải thiện trải nghiệm người dùng.

⮚ Quản lý trạng thái dễ dàng: ReactJS sử dụng mô hình quản lý trạng thái (state) và các thành phần có trạng thái (stateful components), cho phép người phát triển quản

lý và cập nhật trạng thái của ứng dụng một cách dễ dàng và nhất quán

⮚ Tính năng tái sử dụng cao: ReactJS khuyến khích việc phân chia giao diện thành các thành phần nhỏ và độc lập, cho phép tái sử dụng và kết hợp chúng để xây dựng giao diện phức tạp Điều này giúp giảm mã lặp và tăng tính chất lượng của

Tuy nhiên, ReactJS cũng có một số nhược điểm:

⮚ Khái niệm phức tạp ban đầu: ReactJS sử dụng cú pháp và khái niệm mới, đòi hỏi một thời gian để làm quen và hiểu rõ cách thức hoạt động Điều này có thể đòi hỏi người phát triển phải có một quá trình học tập ban đầu

⮚ Phụ thuộc vào hệ sinh thái: Để tận dụng hết tiềm năng của ReactJS, người phát triển thường phải sử dụng các thư viện và công cụ khác như Redux, React Router, hoặc CSS-in-JS Điều này có thể khiến ứng dụng trở nên phức tạp và phụ thuộc nhiều vào hệ sinh thái ReactJS

⮚ Kích thước tải xuống ban đầu: Mặc dù ReactJS đã được tối ưu để tải xuống nhanh hơn, tuy nhiên, ứng dụng ReactJS ban đầu có kích thước lớn hơn so với các trang web tĩnh Điều này có thể gây ảnh hưởng đến thời gian tải trang đầu và yêu cầu mạng

Trang 12

Tóm lại, ReactJS là một công nghệ mạnh mẽ để xây dựng giao diện người dùng linh hoạt và hiệu suất cao Tuy nhiên, việc sử dụng ReactJS cần xem xét kỹ lưỡng và đảm bảorằng nó phù hợp với yêu cầu và quy mô dự án của bạn.

2.4.3 Next.js

Để bỗ trợ cho việc sử dụng thư viện React Em quyết định sử dụng một framework đang hot hiện nay với lượng truy cập và sử dụng đông đảo, kèm theo đó là cộng đồng support đông đảo

Next.js là một framework phổ biến trong cộng đồng phát triển web, được xây dựng trên nền tảng JavaScript và React Được giới thiệu bởi Vercel, Next.js mang lại nhiều lợi ích và tiện ích cho việc xây dựng ứng dụng web hiện đại Dưới đây là một giới thiệu về Next.js, kèm theo ưu điểm và nhược điểm của nó

Next.js giới thiệu mô hình phát triển web có tự động hóa nhiều công đoạn quan trọng Nó cung cấp hệ thống routing tự động, giúp dễ dàng quản lý các trang và tài

nguyên Một trong những ưu điểm lớn nhất của Next.js là khả năng hỗ trợ rendering ở cả phía máy chủ (server-side rendering - SSR) và phía máy khách (client-side rendering - CSR), mang lại trải nghiệm người dùng mượt mà và tối ưu cho công cụ tìm kiếm

Ưu điểm của Next.js không chỉ dừng lại ở đó Next.js hỗ trợ pre-rendering tại thời điểm xây dựng (build time) và thời điểm yêu cầu (runtime), tối ưu hóa hiệu suất và giảm thời gian tải trang Bằng cách tích hợp tốt với React, Next.js giúp tái sử dụng các thành phần và mã nguồn, giảm thiểu độ phức tạp của ứng dụng

Tuy nhiên, như mọi công nghệ, Next.js cũng có nhược điểm của mình Một trong những điểm yếu có thể là khả năng đánh đổi giữa độ phức tạp và quyết định của nó Đôi khi, việc quản lý và hiểu rõ về cách Next.js hoạt động có thể đòi hỏi một thời gian học và làm quen, đặc biệt là đối với những người mới bắt đầu với framework này

Tóm lại, Next.js là một framework mạnh mẽ và linh hoạt cho việc xây dựng ứng dụng web hiện đại Với khả năng SSR, CSR, và hỗ trợ pre-rendering, nó mang lại hiệu suất và trải nghiệm người dùng tốt Tuy nhiên, việc hiểu rõ về cách Next.js hoạt động có thể là thách thức, và đôi khi có đánh đổi giữa tính linh hoạt và độ phức tạp

Trang 13

CHƯƠNG 3 KHẢO SÁT VÀ PHÂN TÍCH ĐẶC TẢ YÊU CẦU 3.1 Khảo sát hiện trạng

- Phương pháp: Dựa trên báo cáo, nghiên cứu chính thức Ngoài ra còn thực hiện một cuộc khảo sát quy mô nhỏ và nhận được khoảng 121 phản hồi

- Kết quả nhận được từ cuộc khảo sát:

● Tỷ lệ người đã từng sử dụng dịch vụ:

● Đánh giá tổng thể về trải nghiệm sử dụng ứng dụng trên thang điểm từ 1 đến 10:

● Các ưu điểm chính của ứng dụng theo ý kiến người dùng (người dùng được yêu cầu chọn nhiều lựa chọn):

o Giao diện người dùng thân thiện và dễ sử dụng: 83%

o Tốc độ xử lý ổn định: 72%

o Cung cấp các tính năng về học online: 68%

3.2 Danh sách yêu cầu có trong ứng dụng

Trang 14

9 Chức năng Đăng ký vào khóa học

CHƯƠNG 4: PHÂN TÍCH HỆ THỐNG 4.1 Phân loại các yêu cầu phần mềm

4.1.1 Yêu cầu hệ thống

- Ứng dụng có thể hoạt động như các website thông thường

Trang 15

- Ứng dụng đáp ứng được các nhu cầu cần thiết, cơ bản của khách hàng cũng như các chức năng khác liên quan như là quản lý các mục thông tin liên quan đến ứng dụng.

4.1.2 Yêu cầu nghiệp vụ

để có thể sử dụng website

các chức năng của ứng dụng

4 Thay đổi thông tin cá nhân Thay đổi các thông tin được cho phép thay

đổi

khoản

người dùng khả năng tìm lại mật khẩu

7 Xem danh sách khóa học Cho phép người dùng xem tất cả khóa học

được đăng công khai

8 Xem chi tiết khóa học Cho phép người dùng xem chi tiết nội dung

khóa học

10 Quyền truy cập vào khóa

học

Cho phép người dùng tham gia vào bài học

cho phép người dùng nộp bài kiểm tra và tính điểm

13 Kiểm tra tiến độ khóa học Cho phép người dùng kiểm tra tiến độ khóa

Trang 16

học của mình

16 Sửa thông tin khóa học Cho phép giảng viên sửa, thay đổi các thông

tin về khóa học của mình

đi

18 Quản lý học viên đăng ký Cho phép giảng viên quản lý tất cả các học

viên đã đăng ký khóa học của mình

20 Xem tiến độ học viên Cho phép giảng viên xem tiến độ của các học

viên đã đăng ký khóa học

4.2 Bảng trách nhiệm cho từng loại yêu cầu

Trang 19

5.1 Sơ đồ Usecase tổng quát

Sơ đồ 1 Use case học viên

Trang 20

Sơ đồ 2 Use case Giảng viên

Trang 21

Sơ đồ 3 Use case Admin

5.1.1 Yêu cầu tổng quát

Pre-condition Người dùng đang ở trang đăng nhập

Post- Ta - Nếu thông tin đăng nhập hợp lệ, người dùng sẽ được chuyển hướng đến bảng

Trang 22

Name Đăng nhập

condition điều khiển

- - Nếu thông tin xác thực không hợp lệ, thông báo lỗi sẽ hiển thị và người dùng

có thể thử lại Nếu đạt đến giới hạn thử lại, tài khoản người dùng sẽ bị khóa

Activities Flow

Trang 23

- Ký hiệu (@)

Trang 24

- Một hoặc nhiều ký tự chữ cái (không phân biệt chữ hoa chữ thường), số, dấu chấm hoặc dấu gạch ngang.

- Dấu chấm (phải được đặt trong dấu gạch chéo vì đây là ký tự đặc biệt trong biểu thức chính quy)

- Ít nhất hai ký tự chữ cái cho phần mở rộng tên miền (ví dụ: com, net)

- [passwordRegex] = Za-z\d@$!%*?&]{8,}$”

“^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A Ít nhất một chữ thường

- Tối thiểu một chữ hoa

- Ít nhất một ký tự đặc biệt (có thể thay đổi tùy theo yêu cầu của bạn)

- Ít nhất 8 ký tự từ các nhóm trên

Chức năng này hoạt động:

if [usernameRegex].test([username]) === true &&

If ![username] && ![password]

Hiển thị thông báo lỗi bên cạnh nhãn nhập Email/Mật khẩu có màu đỏ Nội dung làMSG06

Trang 25

Nội quy ghi nhớ mật khẩu:

Khi người dùng điều hướng đến trang đăng nhập:

Hệ thống sẽ kiểm tra “LocalStorage” để xem có trường thông tin userInfo hay không

Nếu nó tồn tại, gán giá trị trạng thái hiện tại:

[username] = userInfo[username]

Khi người dùng nhấn vào nút Ghi nhớ:

Đặt [isRemember] = true

Khi người dùng đăng nhập thành công:

Lưu userInfo[username] có giá trị bằng trạng thái hiện tại [username] vào

“LocalStorage”

Không bao giờ lưu [password] vì lý do bảo mật

(2) BR2 Quy tắc thông báo:

Khi người dùng click vào nút đăng nhập và handLogin() đang chạy Hệ thống sẽ thông báo cho người dùng và thông báo [EM] sẽ được quản lý dưới dạng mã lỗi [EC] Dựa trên mã lỗi được máy chủ trả về:

if [EC] === 0

Trang 26

[EM] = MSG01

if [EC] === 1[EM] = MSG02

if [EC] === 2[EM] = MSG03

if [EC] === -1[EM] = MSG04

if [EC] === -2[EM] = MSG05

- Form thông báo:

Nội dung [EM]

Thông báo sẽ xuất hiện ở góc dưới bên phải màn hình và biến mất sau 2 giây.Người dùng có thể tắt nó trước bằng cách vuốt ngang

Lưu ý: Không tạo bất kỳ nút nào để thực thi hành động tắt thông báo

(5) BR3 Khi người dùng đăng nhập thành công:

Việc nhận mã thông báo jwt từ máy chủ sẽ lưu nó vào cả cookie và localStorage với:

key = “jwt”

value= [accessToken]

Điều hướng đến trang dashboard

Trang 27

UC2: Đăng xuất

Description Thể hiện quá trình người dùng đăng xuất khỏi hệ thống

Actor Tất cả người dùng

Trigger Người dùng chọn “Đăng xuất”

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

Post-condition Người dùng được chuyển hướng đến trang chủ sau khi đăng xuất thành công

Activities Flow

Sequence diagram

Trang 28

Business Rules

Activity BR

Code Description

(1) BR4 Khi người dùng nhấp vào nút đăng xuất, hãy gọi hàm xử lý Logout():

Hệ thống sẽ xóa trường thông tin có key="jwt", được lưu trữ trong cookie và localStorage

Chuyển hướng đến trang chủ.

UC3: Đăng ký

Description Thể hiện quá trình người dùng nhập chi tiết đăng ký và tạo tài khoản

Actor Student, Intructor

Trigger Người dùng nhấn vào nút đăng ký

Pre-condition Người dùng đang ở trang đăng ký

Post-condition Tài khoản người dùng được tạo và người dùng được chuyển hướng đến trang đăng nhập

nếu thông tin chi tiết hợp lệ và duy nhất Thông báo lỗi được hiển thị cho các chi tiết không hợp lệ hoặc không duy nhất

Trang 29

Activities Flow

Trang 31

Ít nhất hai ký tự chữ cái cho phần mở rộng tên miền (ví dụ: com, net).

[passwordRegex] = “^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A- Za-z\d@$!%*?&]{8,}$”

Ít nhất một chữ thường

Tối thiểu một chữ hoa

Ít nhất một ký tự đặc biệt (có thể thay đổi tùy theo yêu cầu của bạn)

Ít nhất 8 ký tự từ các nhóm trên

Chức năng này hoạt động:

if [usernameRegex].test([username]) === true &&

[passwordRegex].test([password]) === true && [isCheck] === true

// [isCheck] Trạng thái của nó phụ thuộc vào hộp kiểm đồng ý với các điều khoản của chúng tôi và nó phải đúng

trả về ĐÚNG

nếu không thì trả về SAI

Khi người dùng nhấp vào nút Đăng ký xác thực chức năng() sẽ tiến hành kiểm tra thông tin đầu vào trước tiên:

Trang 32

if ![username] && ![password] && ![rePassword]

Hiển thị thông báo lỗi bên cạnh nhãn nhập Email/Mật khẩu có màu đỏ Nội dung làMSG06

Else if ([password] !== [rePassword])Hiển thị thông báo lỗi bên cạnh nhãn nhập Mật khẩu và có màu đỏ Nội dung là MSG08

Else if ( validation() )Next()

ElseHiển thị thông báo lỗi bên cạnh nhãn nhập Email/Mật khẩu có màu đỏ Nội dung làMSG07

Mẫu đăng ký:

Trang 33

Khi người dùng click vào nút đăng ký và handleRegister() đang chạy Hệ thống sẽ thông báo cho người dùng và thông báo [EM] sẽ được quản lý dưới dạng mã lỗi [EC] Dựa trên mã lỗi được máy chủ trả về:

if [EC] === 0[EM] = MSG09

if [EC] === 1[EM] = MSG10

if [EC] === -1[EM] = MSG04

if [EC] === -2[EM] = MSG05

Mẫu thông báo:

Nội dung [EM]

(6) BR7 Khi người dùng đăng ký thành công:

Điều hướng đến trang đăng nhập

UC4: Xem danh sách khóa học

Description Xem danh sách các khóa học hiện có

Actor Mọi tác nhân

Trang 34

Name Xem danh sách khóa học

Trigger Người dùng truy cập vào phần “Khóa học”

Pre-condition Người dùng đã đăng nhập

Post-condition Danh sách các khóa học có sẵn được hiển thị

Activities Flow

Trang 35

- Không thì gọi máy chủ để kiểm tra quyền

- Nếu res[EC] === 0 ⇒ Hiển thị các khóa học

- Nếu res[EC] khác ⇒ Điều hướng đến trang đăng nhập

(5) BR9 Quy tắc khi lấy khóa học:

Ngay khi bạn vào trang khóa học, dữ liệu sẽ được tìm nạp trước:

// Các khóa học sẽ được sắp xếp mặc định theo thời gian tạo (tăng dần)

getCourse([page],[limit])

Trang 36

[page]: Số thứ tự trang bạn muốn lấy.

[limit]: Số lượng khóa học tối đa mong muốn trên mỗi trang Và cài đặt mặc định

Giá // 2 mức giá này khi được tạo sẽ mặc định bằng nhau Nếu có sự thay đổi về giá

thì cả hai mức giá vẫn được giữ nguyên và bằng giá mới Nếu giá mới giảm thì chỉ [newPrice] được cập nhật.

if( item[oldPrice] !== item[newPrice] )

return item.[oldPrice] + “đ” + item[newPrice] + “đ”

Trang 37

bảng và [limit] là tham số được gửi ở trên.

UC5: Xem chi tiết khóa học

Description Xem chi tiết khóa học đã chọn

Actor Tất cả tác nhân

Trigger Người dùng chọn khóa học để xem chi tiết

Pre-condition Người dùng đã đăng nhập và khóa học được chọn

Post-condition Chi tiết khóa học được hiển thị cho người dùng

Activities Flow

Trang 38

Sau đó tìm nạp dữ liệu từ máy chủ bằng getCourse([id]):

Kiểm tra id khóa học xem nó còn tồn tại không:

Nếu khôngKhông tìm thấy trang hiển thị để thông báo cho người dùng nội dung chính:

Thumbnail [ notFoundImage ]

Trang 39

Nội dung [body] = “Không thể tìm thấy khóa

học này Nhấn vào đây để trở về

course[review] + “Đánh giá:” + course[rating].

//Đánh giá sẽ được hiển thị dưới

dạng ngôi sao.

Body //Quy tắc để hiển thị giá khóa học như đã khai báo ở

BR9

Giá course[price]

Button Mua ngay

Tổng quan Tóm tắt Mục tiêu khóa

học

- Mục này chưa

- Mục này chứa

- Mục này hiển thị

Trang 40

tổng quan thông tin về khóa học.

danh sách các chương , bài học,

danh sách các mục tiêu sẽ đạt được sau khi tham gia khóa học.

Comment Quy tắc bình luận:

course[comments].map(

comment (comment) ⇒ { ) ⇒ { ⇒ { { return ( Avatar Tên comment[owner][name]

Bình luận comment[content

) } )

// Cho phép tất cả người dùng đã mua khóa học bình luận đánh giá về khóa học.

-Tạo bình luận bằng hàm createComment([data]):

Với dữ liệu bao gồm: data[title] && data[userId].

Comment Form:

Ngày đăng: 15/05/2024, 09:24

HÌNH ẢNH LIÊN QUAN

Hình 1. Mô hình Client – Server - đồ án 2 phát triển website học online
Hình 1. Mô hình Client – Server (Trang 8)
Sơ đồ 1. Use case học viên - đồ án 2 phát triển website học online
Sơ đồ 1. Use case học viên (Trang 19)
Sơ đồ 2. Use case Giảng viên - đồ án 2 phát triển website học online
Sơ đồ 2. Use case Giảng viên (Trang 20)
Sơ đồ 3. Use case Admin - đồ án 2 phát triển website học online
Sơ đồ 3. Use case Admin (Trang 21)
Bảng và [limit] là tham số được gửi ở trên. - đồ án 2 phát triển website học online
Bảng v à [limit] là tham số được gửi ở trên (Trang 37)
Hình 7.1 Màn hình trang chủ - đồ án 2 phát triển website học online
Hình 7.1 Màn hình trang chủ (Trang 80)
Hình 7.3 Màn hình đăng ký - đồ án 2 phát triển website học online
Hình 7.3 Màn hình đăng ký (Trang 81)
Hình 7.4 Màn hình home - đồ án 2 phát triển website học online
Hình 7.4 Màn hình home (Trang 81)
Hình 7.6 Màn hình Blog - đồ án 2 phát triển website học online
Hình 7.6 Màn hình Blog (Trang 82)
Hình 7.5 Màn hình trang khóa học - đồ án 2 phát triển website học online
Hình 7.5 Màn hình trang khóa học (Trang 82)
Hình 7.7 Màn hình tạo blog - đồ án 2 phát triển website học online
Hình 7.7 Màn hình tạo blog (Trang 83)
Hình 7.9 màn hình thông kê khóa học - đồ án 2 phát triển website học online
Hình 7.9 màn hình thông kê khóa học (Trang 84)
Hình 7.11 Màn hình tạo khóa học - 2 - đồ án 2 phát triển website học online
Hình 7.11 Màn hình tạo khóa học - 2 (Trang 85)
Hình 7.13 Màn hình thông tin chi tiết khóa học - đồ án 2 phát triển website học online
Hình 7.13 Màn hình thông tin chi tiết khóa học (Trang 86)
Hình 7.14 Màn hình chi tiết khóa học - đồ án 2 phát triển website học online
Hình 7.14 Màn hình chi tiết khóa học (Trang 86)

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

TÀI LIỆU LIÊN QUAN

w