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

Xây dựng ứng dụng mạng xã hội

129 8 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 Ứng Dụng Mạng Xã Hội
Tác giả Võ Minh Trí, Lê Minh Sang
Người hướng dẫn ThS. Nguyễn Trần Thi Văn
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ố Tp. Hồ Chí Minh
Định dạng
Số trang 129
Dung lượng 6,72 MB

Cấu trúc

  • 1. GIỚI THIỆU VỀ ĐỀ TÀI (18)
  • 2. ĐỐI TƯỢNG NGHIÊN CỨU (18)
  • 3. PHẠM VI NGHIÊN CỨU (19)
  • 4. MỤC TIÊU CỦA ĐỀ TÀI (19)
  • 5. Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN (20)
  • CHƯƠNG 1. CƠ SỞ LÝ THUYẾT (21)
    • 1.1. ReactJs (8)
      • 1.1.1. Giới thiệu về ReactJs (21)
      • 1.1.2. Lý do chọn ReactJs (22)
    • 1.2. Ngôn ngữ JavaScript (8)
      • 1.2.1. Sơ lược (22)
      • 1.2.2. Đặc trưng của JavaScript (23)
      • 1.2.3. Ưu điểm (23)
      • 1.2.4. Nhược điểm (23)
    • 1.3. NodeJS (8)
      • 1.3.1. Giới thiệu về NodeJs (23)
      • 1.3.2. Ưu điểm (24)
      • 1.3.3. Nhược điểm (24)
      • 1.3.4. Lý do chọn NodeJs (24)
    • 1.4. Flutter và Dart (8)
      • 1.4.1. Giới thiệu về Flutter và Dart (25)
      • 1.4.2. Ưu điểm (25)
      • 1.4.3. Nhược điểm (26)
      • 1.4.4. Lý do chọn Flutter (26)
    • 1.5. MongoDB (8)
      • 1.5.1. Giới thiệu về MongoDB (27)
      • 1.5.2. Ưu điểm (27)
      • 1.5.3. Nhược điểm (28)
      • 1.5.4. Lý do sử dụng MongoDB (28)
    • 1.6. Redis (8)
      • 1.6.1. Giới thiệu về Redis (28)
      • 1.6.2. Ưu điểm (29)
      • 1.6.3. Nhược điểm (29)
      • 1.6.4. Lý do chọn Redis (29)
  • CHƯƠNG 2. KHẢO SÁT HIỆN TRẠNG (29)
    • 2.1. Khảo sát hiện trạng (8)
      • 2.1.1. Facebook (29)
      • 2.1.2. Twitter (30)
      • 2.1.3. Zalo (31)
      • 2.1.4. Linkedin (32)
      • 2.1.5. Tổng kết (32)
    • 2.2. Xác định yêu cầu (8)
      • 2.2.1. Nghiệp vụ (33)
      • 2.2.2. Đối tượng sử dụng (33)
      • 2.2.3. Chức năng (33)
      • 2.2.4. Phạm vi (33)
    • 2.3. Mô hình hóa hệ thống (34)
      • 2.3.1. Danh sách các Actor (34)
      • 2.3.2. Sơ đồ Usecase (35)
      • 2.3.3. Mô tả sơ đồ Usecase (36)
    • 2.4. Đặc tả một số usecase chính (42)
      • 2.4.1. Quyền Admin (42)
      • 2.4.2. Quyền User (53)
  • CHƯƠNG 3. THIẾT KẾ PHẦN MỀM (72)
    • 3.1. Thiết kế hệ thống (8)
      • 3.1.1. Mô hình hệ thống (72)
      • 3.1.2. Lược đồ lớp (73)
      • 3.1.3. Lược đồ tuần tự (74)
      • 3.1.4. Thiết kế dữ liệu (77)
    • 3.2. Thiết kế giao diện (8)
      • 3.3.1. Danh sách giao diện (81)
      • 3.3.2. Mô tả giao diện (83)
  • CHƯƠNG 4. CÀI ĐẶT VÀ KIỂM THỬ (116)
    • 4.3. Cài đặt (116)
    • 4.4. Các bước chạy hệ thống (116)
    • 4.5. Kiểm thử (117)
      • 4.5.2. Kiểm thử đơn vị (117)
      • 4.5.3. Kiểm thử thủ công (121)
    • 1. KẾT QUẢ THU ĐƯỢC (125)
      • 1.1. Về mặt lý thuyết (125)
        • 1.1.1. Về mặt hiện thực (125)
    • 2. ƯU ĐIỂM (3)

Nội dung

GIỚI THIỆU VỀ ĐỀ TÀI

Trong thời đại công nghệ thông tin hiện nay, nhu cầu kết nối và chia sẻ khoảnh khắc cũng như ý kiến cá nhân với mọi người ngày càng trở nên quan trọng.

Nhóm đã quyết định xây dựng một trang web mạng xã hội trực tuyến, cho phép người dùng dễ dàng kết nối và chia sẻ kiến thức cũng như khoảnh khắc cá nhân thông qua giao diện thân thiện Ứng dụng này giúp người dùng xây dựng mối quan hệ với những người có chung sở thích và tính cách, đồng thời kết nối với bạn bè và người thân Đây là giải pháp hiệu quả cho hai nhu cầu chính của người dùng: kết nối và chia sẻ.

MỤC TIÊU CỦA ĐỀ TÀI

Người dùng có thể xây dựng một mạng xã hội để kết nối với nhau, nhắn tin, tạo phòng nhắn tin, đăng bài viết và tương tác với nội dung qua website và thiết bị di động.

Quản trị xây dựng là quá trình quản lý và theo dõi các tài nguyên, dữ liệu của hệ thống, bao gồm thống kê, quản lý tài khoản người dùng, quản lý nội dung bài viết, quản lý phòng nhắn tin và quản lý bình luận.

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

Mục tiêu của đề tài là phát triển một mạng xã hội giúp người dùng kết nối, nhắn tin và chia sẻ thông tin qua một trang web thân thiện và dễ sử dụng Nền tảng này tạo điều kiện cho mọi người xây dựng mối quan hệ với những người có chung sở thích, nghề nghiệp hoặc đơn giản là để bạn bè và gia đình kết nối với nhau.

CƠ SỞ LÝ THUYẾT

Redis

2 Chương 2: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HÓA YÊU CẦU

2.3.Mô hình hóa yêu cầu

3 Chương 3: THIẾT KẾ PHẦN MỀM

4 Chương 4: CÀI ĐẶT VÀ KIỂM THỬ

4.1.Công cụ dùng trong dự án

Thời gian Công việc Ghi chú

- Thiết kế usecase và mô hình hóa yêu cầu

- Thiết kế cơ sở dữ liệu

- Tìm hiểu về JSON Web Token, Redis

- Tìm hiểu về MongoDB để áp dụng vào lưu trữ dữ liệu

- Tiến hành phát triển API dựa trên các kiến thức đã tìm hiểu được và các tài liệu

- Tiến hành xây dựng giao diện người dùng cho hệ thống

- Tìm hiểu Flutter và và xây dựng phiên bản di dộng

Kết hợp các phần đã xây dựng lại với nhau (giao diện, API, cơ sở dữ liệu)

Kiểm thử chương trình và tiến hành sửa lỗi

07/07/2022 Viết và hoàn thiện báo cáo Ý kiến của giảng viên hướng dẫn

(Ký và ghi rõ họ tên)

Người viết đề cương (Ký và ghi rõ họ tên)

Nhóm thực hiện đồ án xin chân thành cảm ơn thầy Nguyễn Trần Thi Văn, giảng viên hướng dẫn, vì đã tận tâm chỉ dẫn, hỗ trợ và giải đáp mọi thắc mắc của nhóm trong suốt quá trình thực hiện đồ án.

Em cũng xin chân thành cảm ơn các thầy cô giáo trong trường Đại học sư Phạm

Kỹ Thuật TP.HCM và các giảng viên khoa CNTT đã trang bị cho chúng em kiến thức vững chắc về các môn đại cương và chuyên ngành, tạo nền tảng lý thuyết vững vàng và hỗ trợ chúng em trong suốt quá trình học tập.

Với thời gian và kinh nghiệm hạn chế, đồ án này không thể tránh khỏi những thiếu sót Nhóm em rất mong nhận được sự góp ý chân thành từ thầy cô và các bạn Những ý kiến đóng góp về đề tài sẽ giúp nhóm em tích lũy thêm kinh nghiệm cho các nghiên cứu sau này Xin chân thành cảm ơn thầy Nguyễn Trần Thi Văn và các bạn đã hỗ trợ.

Cuối cùng, em xin gửi lời cảm ơn chân thành đến gia đình và bạn bè, những người đã luôn hỗ trợ, quan tâm và động viên chúng em trong suốt quá trình học tập và hoàn thành khóa luận.

1 GIỚI THIỆU VỀ ĐỀ TÀI 9

4 MỤC TIÊU CỦA ĐỀ TÀI 10

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

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 12

1.4.1 Giới thiệu về Flutter và Dart 16

1.5.4 Lý do sử dụng MongoDB 19

CHƯƠNG 2 KHẢO SÁT HIỆN TRẠNG 20

2.3 Mô hình hóa hệ thống 25

2.3.3 Mô tả sơ đồ Usecase 27

2.4 Đặc tả một số usecase chính 33

CHƯƠNG 3 THIẾT KẾ PHẦN MỀM 63

CHƯƠNG 4 CÀI ĐẶT VÀ KIỂM THỬ 107

4.4 Các bước chạy hệ thống 107

4 HƯỚNG PHÁT TRIỂN 118DANH MỤC THAM KHẢO 119

Hình 2 Khảo sát hiện trạng Facebook (1) 21

Hình 3 Khảo sát hiện trạng Facebook (2) 21

Hình 4 Khảo sát hiện trạng Twitter (1) 21

Hình 5 Khảo sát hiện trạng Twitter (2) 22

Hình 6 Khảo sát hiện trạng Zalo (1) 22

Hình 7 Khảo sát hiện trạng Linkedin (1) 23

Hình 8 Usecase tổng quát cho người dùng 26

Hình 9 Use case tổng quát cho Quản trị viên 27

Hình 10 Mô tả hệ thống 63

Hình 12 Lược đồ tuần tự chức năng Đăng ký 65

Hình 13 Lược đồ tuần tự chức năng Đăng nhập 65

Hình 14 Lược đồ tuần tự chức năng user xem danh sách bài viết 66

Hình 15 Lược đồ tuần tự chức năng User xem tin nhắn 66

Hình 16 Lược đồ tuần tự chức năng thêm bài viết 67

Hình 17 Lược đồ tuần tự chức năng tạo phòng nhắn tin 67

Hình 18 Lược đồ thực thể ERD 68

Hình 19 Màn hình đăng nhập 74

Hình 20 Màn hình đăng ký 75

Hình 23 Màn hình trang chủ 78

Hình 26 Trang nhắn tin chào mừng 80

Hình 27 Trang nhắn tin phòng chat 81

Hình 28 Trang nhắn tin thông tin 82

Hình 31 Trang chi tiết bài viết 86

Hình 32 Hộp thoại thêm bài viết 87

Hình 33 Trang chỉnh sửa thông tin cá nhân 88

Hình 35 Trang đăng ký các bước 1, 2, 3- Di dộng 90

Hình 36 Trang đăng nhập - Di dộng 91

Hình 37 Trang chủ - Di động 92

Hình 38 Trang tìm kiếm Bước 1 và Bước 2(Kết quả) - Di động 93

Hình 39 Trang chi tiết người dùng 94

Hình 40 Trang chi tiết bài viết - Di động 95

Hình 41 Trang tạo bài viết - Di động 96

Hình 42 Trang liên hệ - Di dộng 97

Hình 43 Trang nhắn tin - Di động 98

Hình 44 Trang phòng nhắn tin - Di động 99

Hình 45 Trang cá nhân - Di động 100

Hình 46 Trang chỉnh sửa hồ sơ - Di dộng 101

Hình 49 Trang quản lý người dùng 104

Hình 50 Trang quản lý bài viết 105

Hình 51 Trang quản lý phòng nhắn tin 105

Hình 52 Trang quản lý bình luận 106

Hình 53 Unit test cho các API chỉnh của xác thực 108

Hình 54 Unit test cho các API chính của người dùng 108

Hình 55 Unit test cho các API chính của bài viết 109

Hình 56 Unit test cho các API chính của bình luận 109

Hình 57 Kết quả Unit test cho các API chính của thông báo 109

Hình 58 Unit test cho các API chính của phòng nhắn tin 110

Hình 59 Unit test cho các API chính của admin cho xác thực 110

Hình 60 Unit test cho các API chính của admin cho thống kê 111

Hình 61 Unit test cho các API chính của admin về người dùng 111

Hình 62 Unit test cho các API chính của admin về bài viết 111

Hình 63 Unit test cho các API chính của admin về phòng nhắn tin 112

Bảng 1 Mô tả sơ đồ Use case 32

Bảng 2 Mô tả Use case Đăng nhập 33

Bảng 3 Mô tả Use case Đăng xuất 34

Bảng 4 Mô tả Use case Xem danh sách người dùng 35

Bảng 5 Mô tả Use case Xóa người dùng – Không hoàn toàn 37

Bảng 6 Mô tả Use case Xem danh sách bài đăng 38

Bảng 7 Mô tả Use case Xóa bài đăng – Không hoàn toàn 40

Bảng 8 Mô tả Use case Quản lý phòng chat 41

Bảng 9 Mô tả Use case Xóa phòng chat – Không hoàn toàn 42

Bảng 10 Mô tả Use case Quản lý bình luận 43

Bảng 11 Mô tả Use case Xóa bình luận – Không hoàn toàn 44

Bảng 12 Mô tả Use case User Đăng nhập 45

Bảng 13 Mô tả Use case User Đăng xuất 47

Bảng 14 Mô tả Use case User Đăng ký 48

Bảng 15 Mô tả Use case User quên mật khẩu 49

Bảng 16 Mô tả Use case Người dùng tạo phòng chat 50

Bảng 17 Mô tả Use case Người dùng tạo phòng chat 52

Bảng 18 Mô tả Use case Gửi tin nhắn 53

Bảng 19 Mô tả Use case User Theo dõi người dùng 54

Bảng 20 Mô tả Use case User Tạo một bài viết 55

Bảng 21 Mô tả Use case User Xem bảng tin 56

Bảng 22 Mô tả Use case User Tìm kiếm 57

Bảng 23 Mô tả Use case User Thích bài viết 58

Bảng 24 Mô tả Use case User Bình luận bài viết 59

Bảng 25 Mô tả Use case User Xem thông tin bài viết cá nhân 61

Bảng 26 Mô tả Use case User Xóa bài viết cá nhân 62

Bảng 27 Mô tả chi tiết bảng User 69

Bảng 28 Mô tả chi tiết bảng Post 70

Bảng 29 Mô tả chi tiết bảng Comment 71

Bảng 30 Mô tả chi tiết bảng Room 71

Bảng 31 Mô tả chi tiết bảng Message 72

Bảng 32 Mô tả Use case User Danh sách giao diện 74

Bảng 33 Mô tả giao diện trang đăng nhập bước 1 74

Bảng 34 Mô tả giao diện trang đăng ký 75

Bảng 35 Mô tả giao diện thanh menu 76

Bảng 36 Mô tả giao diện trang card bài viết 78

Bảng 37 Mô tả giao diện trang chủ 78

Bảng 38 Mô tả giao diện trang thông báo 80

Bảng 39 Mô tả giao diện trang nhắn tin chào mừng 81

Bảng 40 Mô tả giao diện trang nhắn tin phòng chat 82

Bảng 41 Mô tả giao diện trang nhắn tin thông tin 83

Bảng 42 Mô tả giao diện trang danh bạ 84

Bảng 43 Mô tả giao diện trang cá nhân 86

Bảng 44 Mô tả giao diện trang chi tiết bài viết 87

Bảng 45 Mô tả giao diện hộp thoại đăng bài viết 88

Bảng 46 Mô tả giao diện trang chỉnh sửa thông tin cá nhân 89

Bảng 47 Mô tả giao diện trang tìm kiếm 89

Bảng 48 Mô tả giao diện trang đăng ký các bước- Di động 91

Bảng 49 Mô tả giao diện trang đăng nhập - Di động 91

Bảng 50 Mô tả giao diện trang chủ - Di động 93

Bảng 51 Mô tả giao diện trang tìm kiếm bước 2 - Di động 93

Bảng 52 Mô tả giao diện trang tìm kiếm bước 2 - Di động 94

Bảng 53 Mô tả giao diện chi tiết người dùng - Di động 95

Bảng 54 Mô tả giao diện chi tiết bài viết - Di động 96

Bảng 55 Mô tả giao diện chi tiết bài viết - Di động 96

Bảng 56 Mô tả giao diện trang liên hệ - Di động 97

Bảng 57 Mô tả giao diện trang nhắn tin - Di động 98

Bảng 58 Mô tả giao diện trang nhắn tin - Di động 99

Bảng 59 Mô tả giao diện trang cá nhân - Di động 100

Bảng 60 Mô tả giao diện trang cá nhân chi tiết- Di động 101

Bảng 61 Mô tả giao diện trang đăng nhập 102

Bảng 62 Mô tả giao diện trang thống kê 103

Bảng 63 Mô tả giao diện trang quản lý người dùng 104

Bảng 64 Mô tả giao diện trang quản lý bài viết 105

Bảng 65 Mô tả giao diện quản lý phòng nhắn tin 105

Bảng 66 Mô tả giao diện trang quản lý bình luận 106

Bảng 67 Testcase User - Chức năng đăng nhập tài khoản 112

Bảng 68 Testcase User - Chức năng đăng ký tài khoản 113

Bảng 69 Testcase User - Chức năng xem bài viết 113

Bảng 70 Testcase User - Chức năng thích bài viết 114

Bảng 71 Testcase User - Chức năng bình luận bài viết 114

Bảng 72 Testcase User - Chức năng thêm bài viết 114

Bảng 73 Testcase User - Chức năng tạo phòng nhắn tin 115

Bảng 74 Testcase User - Chức năng gửi tin nhắn 115

Bảng 75 Testcase User - Chức năng theo dõi 115

Bảng 76 Testcase User - Chức năng bỏ theo dõi 115

1 GIỚI THIỆU VỀ ĐỀ TÀI

Trong thời đại công nghệ thông tin hiện nay, nhu cầu kết nối và chia sẻ khoảnh khắc cũng như ý kiến giữa mọi người ngày càng trở nên quan trọng.

Nhóm đã quyết định phát triển một trang web mạng xã hội trực tuyến, cho phép người dùng dễ dàng kết nối và chia sẻ kiến thức, khoảnh khắc của mình thông qua giao diện thân thiện Ứng dụng này giúp xây dựng mối quan hệ với những người có sở thích và tính cách tương đồng, đồng thời là phương tiện kết nối với bạn bè và người thân Nó giải quyết hai vấn đề chính của người dùng: kết nối bạn bè và chia sẻ những khoảnh khắc, ý kiến cá nhân.

2 ĐỐI TƯỢNG NGHIÊN CỨU Đối với đề tài “Xây dựng mạng xã hội nhắn tin”, đối tượng nghiên cứu dựa trên những nhu cầu kết nối, tương tác với người khác với nhau, mọi người có thể nhắn tin với một người dùng hay tạo một nhóm để chia sẻ niềm vui

Đề tài này giúp người dùng chia sẻ thông tin và khoảnh khắc với bạn bè, cho phép họ thích và bình luận trên bài viết Đồng thời, nó cũng áp dụng các công nghệ tiên tiến để tạo ra sản phẩm.

- Áp dụng cơ sở dữ liệu MongoDB để lưu trữ dữ liệu từ người dùng

- Nghiên cứu APIs xây dựng nên hệ thống các APIs hỗ trợ lấy dữ liệu một cách chính xác và nhanh chóng bằng NodeJS và ExpressJS

Nghiên cứu và ứng dụng ReactJs, Flutter cùng với các thư viện hỗ trợ là yếu tố quan trọng trong việc xây dựng và tối ưu hóa giao diện người dùng cũng như hệ thống quản trị hiệu quả.

Để đảm bảo bảo mật hệ thống, chúng tôi sử dụng Json Web Token (JWT) để xác thực tài khoản đăng nhập cho cả khách hàng Ngoài ra, mã OTP được áp dụng để người dùng có thể khôi phục tài khoản thông qua email đã đăng ký.

3 PHẠM VI NGHIÊN CỨU Đề tài “Xây dựng mạng xã hội nhắn tin” chủ yếu tập trung khai thác vào vấn đề nhắn tin và chia sẻ các bài viết Website được chia thành 2 phần là phần Quản trị và phần Người dùng Trong phần Quản trị bao gồm các nghiệp vụ chính như:

- Quản lý người dùng (xem, xóa, phục hồi và xóa vĩnh viễn)

- Quản lý bài đăng (xem, xóa, phục hồi và xóa vĩnh viễn)

- Quản lý phòng chat (xem, xóa, phục hồi và xóa vĩnh viễn)

- Quản lý bình luận (xem, xóa, phục hồi và xóa vĩnh viễn)

Trong phần Người dùng bao gồm các nghiệp vụ chính như:

- Đăng nhập/ Đăng ký/ Quên mật khẩu

- Quản lý thông tin cá nhân / Thay đổi thông tin cá nhân

- Nhắn tin/ Thu hồi tin nhắn

- Tạo phòng chat/ Quản lý phòng chat

- Theo dõi người dùng/ Hủy theo dõi người dùng

- Đăng bài / Quản lý bài viết / Xem các bài viết

- Thích bài viết/ Hủy thích bài viết /Bình luận các bài viết

- Tìm kiếm người dùng và bài viết

Về phần cốt lõi xử lý, xây dựng đầy đủ các APIs phục vụ cho phần hiển thị cuối cùng

4 MỤC TIÊU CỦA ĐỀ TÀI

Người dùng có thể xây dựng một mạng xã hội để kết nối và nhắn tin với nhau, tạo các phòng nhắn tin, đăng bài viết và tương tác với nội dung thông qua website và thiết bị di động.

Quản trị xây dựng hệ thống bao gồm việc quản lý và theo dõi các tài nguyên và dữ liệu, như thống kê, quản lý tài khoản người dùng, quản lý bài viết, quản lý phòng nhắn tin và quản lý bình luận.

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

Mục đích của đề tài là phát triển một mạng xã hội giúp người dùng kết nối, nhắn tin và chia sẻ thông tin qua một giao diện thân thiện và dễ sử dụng Nền tảng trực tuyến này cho phép mọi người xây dựng mối quan hệ với những người có chung sở thích, nghề nghiệp, hoặc đơn giản là để bạn bè và gia đình dễ dàng kết nối với nhau.

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 1.1.ReactJs

ReactJs là thư viện JavaScript mã nguồn mở do Facebook phát triển, ra mắt năm 2013, cho phép tạo giao diện người dùng (UI) từ các đoạn mã nhỏ gọi là “components” Thư viện này hiện đang rất phổ biến, giúp lập trình viên xây dựng UI một cách hiệu quả và linh hoạt.

KHẢO SÁT HIỆN TRẠNG

Xác định yêu cầu

2.3.Mô hình hóa yêu cầu

3 Chương 3: THIẾT KẾ PHẦN MỀM

4 Chương 4: CÀI ĐẶT VÀ KIỂM THỬ

4.1.Công cụ dùng trong dự án

Thời gian Công việc Ghi chú

- Thiết kế usecase và mô hình hóa yêu cầu

- Thiết kế cơ sở dữ liệu

- Tìm hiểu về JSON Web Token, Redis

- Tìm hiểu về MongoDB để áp dụng vào lưu trữ dữ liệu

- Tiến hành phát triển API dựa trên các kiến thức đã tìm hiểu được và các tài liệu

- Tiến hành xây dựng giao diện người dùng cho hệ thống

- Tìm hiểu Flutter và và xây dựng phiên bản di dộng

Kết hợp các phần đã xây dựng lại với nhau (giao diện, API, cơ sở dữ liệu)

Kiểm thử chương trình và tiến hành sửa lỗi

07/07/2022 Viết và hoàn thiện báo cáo Ý kiến của giảng viên hướng dẫn

(Ký và ghi rõ họ tên)

Người viết đề cương (Ký và ghi rõ họ tên)

Chúng tôi xin chân thành cảm ơn thầy Nguyễn Trần Thi Văn, giảng viên hướng dẫn, vì đã tận tâm chỉ bảo, hỗ trợ và giải đáp mọi thắc mắc của nhóm trong suốt quá trình thực hiện đồ án.

Em cũng xin chân thành cảm ơn các thầy cô giáo trong trường Đại học sư Phạm

Khoa CNTT tại Kỹ Thuật TP.HCM đã cung cấp cho chúng em kiến thức vững chắc về các môn đại cương và chuyên ngành, tạo nền tảng lý thuyết vững vàng và hỗ trợ chúng em trong suốt quá trình học tập.

Với thời gian và kinh nghiệm hạn chế, nhóm em nhận thấy đồ án này không thể tránh khỏi những thiếu sót Chúng em rất mong nhận được sự góp ý chân thành từ thầy cô và các bạn Những ý kiến đóng góp về đề tài sẽ giúp nhóm em tích lũy thêm kinh nghiệm cho các nghiên cứu sau này Xin chân thành cảm ơn thầy Nguyễn Trần Thi Văn và các bạn đã hỗ trợ nhóm.

Cuối cùng, tôi xin gửi lời cảm ơn chân thành đến gia đình và bạn bè, những người đã luôn ủng hộ, quan tâm và giúp đỡ chúng tôi trong suốt quá trình học tập và hoàn thành khóa luận.

1 GIỚI THIỆU VỀ ĐỀ TÀI 9

4 MỤC TIÊU CỦA ĐỀ TÀI 10

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

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 12

1.4.1 Giới thiệu về Flutter và Dart 16

1.5.4 Lý do sử dụng MongoDB 19

CHƯƠNG 2 KHẢO SÁT HIỆN TRẠNG 20

2.3 Mô hình hóa hệ thống 25

2.3.3 Mô tả sơ đồ Usecase 27

2.4 Đặc tả một số usecase chính 33

CHƯƠNG 3 THIẾT KẾ PHẦN MỀM 63

CHƯƠNG 4 CÀI ĐẶT VÀ KIỂM THỬ 107

4.4 Các bước chạy hệ thống 107

4 HƯỚNG PHÁT TRIỂN 118DANH MỤC THAM KHẢO 119

Hình 2 Khảo sát hiện trạng Facebook (1) 21

Hình 3 Khảo sát hiện trạng Facebook (2) 21

Hình 4 Khảo sát hiện trạng Twitter (1) 21

Hình 5 Khảo sát hiện trạng Twitter (2) 22

Hình 6 Khảo sát hiện trạng Zalo (1) 22

Hình 7 Khảo sát hiện trạng Linkedin (1) 23

Hình 8 Usecase tổng quát cho người dùng 26

Hình 9 Use case tổng quát cho Quản trị viên 27

Hình 10 Mô tả hệ thống 63

Hình 12 Lược đồ tuần tự chức năng Đăng ký 65

Hình 13 Lược đồ tuần tự chức năng Đăng nhập 65

Hình 14 Lược đồ tuần tự chức năng user xem danh sách bài viết 66

Hình 15 Lược đồ tuần tự chức năng User xem tin nhắn 66

Hình 16 Lược đồ tuần tự chức năng thêm bài viết 67

Hình 17 Lược đồ tuần tự chức năng tạo phòng nhắn tin 67

Hình 18 Lược đồ thực thể ERD 68

Hình 19 Màn hình đăng nhập 74

Hình 20 Màn hình đăng ký 75

Hình 23 Màn hình trang chủ 78

Hình 26 Trang nhắn tin chào mừng 80

Hình 27 Trang nhắn tin phòng chat 81

Hình 28 Trang nhắn tin thông tin 82

Hình 31 Trang chi tiết bài viết 86

Hình 32 Hộp thoại thêm bài viết 87

Hình 33 Trang chỉnh sửa thông tin cá nhân 88

Hình 35 Trang đăng ký các bước 1, 2, 3- Di dộng 90

Hình 36 Trang đăng nhập - Di dộng 91

Hình 37 Trang chủ - Di động 92

Hình 38 Trang tìm kiếm Bước 1 và Bước 2(Kết quả) - Di động 93

Hình 39 Trang chi tiết người dùng 94

Hình 40 Trang chi tiết bài viết - Di động 95

Hình 41 Trang tạo bài viết - Di động 96

Hình 42 Trang liên hệ - Di dộng 97

Hình 43 Trang nhắn tin - Di động 98

Hình 44 Trang phòng nhắn tin - Di động 99

Hình 45 Trang cá nhân - Di động 100

Hình 46 Trang chỉnh sửa hồ sơ - Di dộng 101

Hình 49 Trang quản lý người dùng 104

Hình 50 Trang quản lý bài viết 105

Hình 51 Trang quản lý phòng nhắn tin 105

Hình 52 Trang quản lý bình luận 106

Hình 53 Unit test cho các API chỉnh của xác thực 108

Hình 54 Unit test cho các API chính của người dùng 108

Hình 55 Unit test cho các API chính của bài viết 109

Hình 56 Unit test cho các API chính của bình luận 109

Hình 57 Kết quả Unit test cho các API chính của thông báo 109

Hình 58 Unit test cho các API chính của phòng nhắn tin 110

Hình 59 Unit test cho các API chính của admin cho xác thực 110

Hình 60 Unit test cho các API chính của admin cho thống kê 111

Hình 61 Unit test cho các API chính của admin về người dùng 111

Hình 62 Unit test cho các API chính của admin về bài viết 111

Hình 63 Unit test cho các API chính của admin về phòng nhắn tin 112

Bảng 1 Mô tả sơ đồ Use case 32

Bảng 2 Mô tả Use case Đăng nhập 33

Bảng 3 Mô tả Use case Đăng xuất 34

Bảng 4 Mô tả Use case Xem danh sách người dùng 35

Bảng 5 Mô tả Use case Xóa người dùng – Không hoàn toàn 37

Bảng 6 Mô tả Use case Xem danh sách bài đăng 38

Bảng 7 Mô tả Use case Xóa bài đăng – Không hoàn toàn 40

Bảng 8 Mô tả Use case Quản lý phòng chat 41

Bảng 9 Mô tả Use case Xóa phòng chat – Không hoàn toàn 42

Bảng 10 Mô tả Use case Quản lý bình luận 43

Bảng 11 Mô tả Use case Xóa bình luận – Không hoàn toàn 44

Bảng 12 Mô tả Use case User Đăng nhập 45

Bảng 13 Mô tả Use case User Đăng xuất 47

Bảng 14 Mô tả Use case User Đăng ký 48

Bảng 15 Mô tả Use case User quên mật khẩu 49

Bảng 16 Mô tả Use case Người dùng tạo phòng chat 50

Bảng 17 Mô tả Use case Người dùng tạo phòng chat 52

Bảng 18 Mô tả Use case Gửi tin nhắn 53

Bảng 19 Mô tả Use case User Theo dõi người dùng 54

Bảng 20 Mô tả Use case User Tạo một bài viết 55

Bảng 21 Mô tả Use case User Xem bảng tin 56

Bảng 22 Mô tả Use case User Tìm kiếm 57

Bảng 23 Mô tả Use case User Thích bài viết 58

Bảng 24 Mô tả Use case User Bình luận bài viết 59

Bảng 25 Mô tả Use case User Xem thông tin bài viết cá nhân 61

Bảng 26 Mô tả Use case User Xóa bài viết cá nhân 62

Bảng 27 Mô tả chi tiết bảng User 69

Bảng 28 Mô tả chi tiết bảng Post 70

Bảng 29 Mô tả chi tiết bảng Comment 71

Bảng 30 Mô tả chi tiết bảng Room 71

Bảng 31 Mô tả chi tiết bảng Message 72

Bảng 32 Mô tả Use case User Danh sách giao diện 74

Bảng 33 Mô tả giao diện trang đăng nhập bước 1 74

Bảng 34 Mô tả giao diện trang đăng ký 75

Bảng 35 Mô tả giao diện thanh menu 76

Bảng 36 Mô tả giao diện trang card bài viết 78

Bảng 37 Mô tả giao diện trang chủ 78

Bảng 38 Mô tả giao diện trang thông báo 80

Bảng 39 Mô tả giao diện trang nhắn tin chào mừng 81

Bảng 40 Mô tả giao diện trang nhắn tin phòng chat 82

Bảng 41 Mô tả giao diện trang nhắn tin thông tin 83

Bảng 42 Mô tả giao diện trang danh bạ 84

Bảng 43 Mô tả giao diện trang cá nhân 86

Bảng 44 Mô tả giao diện trang chi tiết bài viết 87

Bảng 45 Mô tả giao diện hộp thoại đăng bài viết 88

Bảng 46 Mô tả giao diện trang chỉnh sửa thông tin cá nhân 89

Bảng 47 Mô tả giao diện trang tìm kiếm 89

Bảng 48 Mô tả giao diện trang đăng ký các bước- Di động 91

Bảng 49 Mô tả giao diện trang đăng nhập - Di động 91

Bảng 50 Mô tả giao diện trang chủ - Di động 93

Bảng 51 Mô tả giao diện trang tìm kiếm bước 2 - Di động 93

Bảng 52 Mô tả giao diện trang tìm kiếm bước 2 - Di động 94

Bảng 53 Mô tả giao diện chi tiết người dùng - Di động 95

Bảng 54 Mô tả giao diện chi tiết bài viết - Di động 96

Bảng 55 Mô tả giao diện chi tiết bài viết - Di động 96

Bảng 56 Mô tả giao diện trang liên hệ - Di động 97

Bảng 57 Mô tả giao diện trang nhắn tin - Di động 98

Bảng 58 Mô tả giao diện trang nhắn tin - Di động 99

Bảng 59 Mô tả giao diện trang cá nhân - Di động 100

Bảng 60 Mô tả giao diện trang cá nhân chi tiết- Di động 101

Bảng 61 Mô tả giao diện trang đăng nhập 102

Bảng 62 Mô tả giao diện trang thống kê 103

Bảng 63 Mô tả giao diện trang quản lý người dùng 104

Bảng 64 Mô tả giao diện trang quản lý bài viết 105

Bảng 65 Mô tả giao diện quản lý phòng nhắn tin 105

Bảng 66 Mô tả giao diện trang quản lý bình luận 106

Bảng 67 Testcase User - Chức năng đăng nhập tài khoản 112

Bảng 68 Testcase User - Chức năng đăng ký tài khoản 113

Bảng 69 Testcase User - Chức năng xem bài viết 113

Bảng 70 Testcase User - Chức năng thích bài viết 114

Bảng 71 Testcase User - Chức năng bình luận bài viết 114

Bảng 72 Testcase User - Chức năng thêm bài viết 114

Bảng 73 Testcase User - Chức năng tạo phòng nhắn tin 115

Bảng 74 Testcase User - Chức năng gửi tin nhắn 115

Bảng 75 Testcase User - Chức năng theo dõi 115

Bảng 76 Testcase User - Chức năng bỏ theo dõi 115

1 GIỚI THIỆU VỀ ĐỀ TÀI

Trong thời đại công nghệ thông tin hiện nay, nhu cầu kết nối và chia sẻ khoảnh khắc, ý kiến giữa mọi người ngày càng trở nên quan trọng.

Nhóm đã quyết định phát triển một trang web mạng xã hội trực tuyến, cho phép người dùng dễ dàng kết nối và chia sẻ kiến thức, khoảnh khắc của mình thông qua giao diện thân thiện Ứng dụng này giúp người dùng xây dựng mối quan hệ với những người có sở thích và tính cách tương đồng, đồng thời kết nối với bạn bè và người thân Đây là giải pháp hiệu quả cho nhu cầu kết nối và chia sẻ của người dùng.

2 ĐỐI TƯỢNG NGHIÊN CỨU Đối với đề tài “Xây dựng mạng xã hội nhắn tin”, đối tượng nghiên cứu dựa trên những nhu cầu kết nối, tương tác với người khác với nhau, mọi người có thể nhắn tin với một người dùng hay tạo một nhóm để chia sẻ niềm vui

Đề tài này giúp người dùng chia sẻ thông tin và khoảnh khắc với bạn bè, cho phép họ thích và bình luận trên bài viết Bên cạnh đó, nó cũng áp dụng các công nghệ hiện đại để tạo ra sản phẩm chất lượng.

- Áp dụng cơ sở dữ liệu MongoDB để lưu trữ dữ liệu từ người dùng

- Nghiên cứu APIs xây dựng nên hệ thống các APIs hỗ trợ lấy dữ liệu một cách chính xác và nhanh chóng bằng NodeJS và ExpressJS

Nghiên cứu và áp dụng ReactJs, Flutter cùng với các thư viện bổ trợ là cách hiệu quả để xây dựng và xử lý giao diện người dùng cũng như hệ thống quản trị.

Để đảm bảo bảo mật hệ thống, chúng tôi sử dụng Json Web Token (JWT) cho việc xác thực tài khoản đăng nhập của khách hàng, đồng thời áp dụng mã OTP để người dùng có thể khôi phục tài khoản thông qua email đã đăng ký.

3 PHẠM VI NGHIÊN CỨU Đề tài “Xây dựng mạng xã hội nhắn tin” chủ yếu tập trung khai thác vào vấn đề nhắn tin và chia sẻ các bài viết Website được chia thành 2 phần là phần Quản trị và phần Người dùng Trong phần Quản trị bao gồm các nghiệp vụ chính như:

- Quản lý người dùng (xem, xóa, phục hồi và xóa vĩnh viễn)

- Quản lý bài đăng (xem, xóa, phục hồi và xóa vĩnh viễn)

- Quản lý phòng chat (xem, xóa, phục hồi và xóa vĩnh viễn)

- Quản lý bình luận (xem, xóa, phục hồi và xóa vĩnh viễn)

Trong phần Người dùng bao gồm các nghiệp vụ chính như:

- Đăng nhập/ Đăng ký/ Quên mật khẩu

- Quản lý thông tin cá nhân / Thay đổi thông tin cá nhân

- Nhắn tin/ Thu hồi tin nhắn

- Tạo phòng chat/ Quản lý phòng chat

- Theo dõi người dùng/ Hủy theo dõi người dùng

- Đăng bài / Quản lý bài viết / Xem các bài viết

- Thích bài viết/ Hủy thích bài viết /Bình luận các bài viết

- Tìm kiếm người dùng và bài viết

Về phần cốt lõi xử lý, xây dựng đầy đủ các APIs phục vụ cho phần hiển thị cuối cùng

4 MỤC TIÊU CỦA ĐỀ TÀI

Người dùng có thể xây dựng một mạng xã hội kết nối mọi người, cho phép nhắn tin, tạo phòng nhắn tin, đăng bài viết và tương tác với các bài viết thông qua website và thiết bị di động.

Quản trị xây dựng là quá trình quản lý và theo dõi các tài nguyên và dữ liệu của hệ thống, bao gồm thống kê, quản lý tài khoản, bài viết, phòng nhắn tin và bình luận.

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

Mục đích của đề tài là phát triển một mạng xã hội giúp người dùng kết nối, nhắn tin và chia sẻ thông tin qua một trang web dễ sử dụng Nền tảng này tạo cơ hội cho mọi người xây dựng mối quan hệ với những người có cùng sở thích, nghề nghiệp, hoặc đơn giản là để bạn bè và gia đình gắn kết với nhau.

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 1.1.ReactJs

ReactJs là thư viện JavaScript mã nguồn mở do Facebook phát triển, ra mắt năm 2013, cho phép xây dựng giao diện người dùng (UI) từ các đoạn mã nhỏ gọi là “components” Thư viện này hiện đang rất phổ biến, giúp lập trình viên xây dựng UI một cách hiệu quả và linh hoạt.

Mô hình hóa hệ thống

- User: người đã đăng nhập vào hệ thống, có các quyền của Guest

- Admin: người quản trị, có quyền quản trị hệ thống

Hình 8 Usecase tổng quát cho người dùng

Hình 9 Use case tổng quát cho Quản trị viên

2.3.3 Mô tả sơ đồ Usecase

Use Case Id Tên chức năng Mô tả

Chức năng đăng nhập cho vai trò Admin (UC-A-1.1) cho phép người quản trị truy cập vào hệ thống quản trị, trong khi chức năng đăng xuất (UC-A-1.2) cho phép Admin kết thúc phiên làm việc của mình trong hệ thống.

UC-A-1.3.1 Quản lý người dùng-

Xem danh sách người dùng

Chức năng Người quản trị xem danh sách của người dùng

UC-A-1.3.2 Quản lý người dùng-

Xem thông tin chi tiết người dùng

Chức năng Người quản trị Xem thông tin chi tiết của người dùng

UC-A-1.3.3 Quản lý người dùng- Xóa người dùng chưa hoàn toàn

Chức năng của người quản trị cho phép xóa người dùng, nhưng không xóa hoàn toàn ngay lập tức Sau một tháng, người dùng sẽ bị xóa hoàn toàn cùng với tất cả các tài nguyên liên quan.

UC-A-1.3.4 Quản lý người dùng- Xóa người dùng hoàn toàn

Chức năng Người quản trị xóa người dùng hoàn toàn khỏi hệ thống Khi này các tài nguyên tương ứng của người dùng sẽ trực tiếp bị xóa theo

UC-A-1.3.5 Quản lý người dùng-

Chức năng Người quản trị khôi phục người dùng đã xóa không hoàn toàn

UC-A-1.4.1 Quản lý các bài đăng-

Xem danh sách các bài đăng

Chức năng Người quản trị Xem danh sách các bài đăng đang có trên hệ thống

UC-A-1.4.2 Quản lý các bài đăng-

Xem thông tin chi tiết bài đăng

Chức năng Người quản trị Xem thông tin chi tiết của bài đăng đang có trên hệ thống

UC-A-1.4.3 Quản lý các bài đăng-

Chức năng Người quản trị Xóa bài viết trên hệ thống nhưng chưa xóa hoàn toàn

UC-A-1.4.4 Quản lý các bài đăng-

Xóa bài đăng một cách hoàn toàn

Chức năng Người quản trị Xóa bài viết hoàn toàn trên hệ thống

UC-A-1.4.5 Quản lý các bài đăng-

Khôi phục bài đăng đã xóa chưa hoàn toàn

Chức năng Người quản trị khôi phục bài đăng đã xóa không hoàn toàn

UC-A-1.5.1 Quản lý phòng chat -

Xem danh sách các phòng chat

Chức năng Người quản trị Xem danh sách các phòng chat đang có trên hệ thống

UC-A-1.5.2 Quản lý phòng chat -

Xem thông tin chi tiết phòng chat

Chức năng Người quản trị Xem thông tin chi tiết phòng chat đang có trên hệ thống

UC-A-1.5.3 Quản lý phòng chat –

Xóa phòng chat nhưng chưa hoàn toàn

Chức năng Người quản trị Xóa phòng chat nhưng chưa hoàn toàn

UC-A-1.5.4 Quản lý phòng chat –

Xóa phòng chat hoàn toàn

Chức năng Người quản trị Xóa phòng chat hoàn toàn

UC-A-1.5.5 Quản lý phòng chat –

Khôi phục phòng chat đã xóa chưa hoàn toàn

Chức năng Người quản trị khôi phục phòng chat đã xóa không hoàn toàn

UC-A-1.6.1 Quản lý bình luận - Xem danh sách các bình luận

Chức năng Người quản trị xem danh sách các bình luận

UC-A-1.6.2 Quản lý bình luận – Xóa bình luận chưa hoàn toàn

Chức năng Người quản trị xóa bình luận chưa hoàn toàn

UC-A-1.6.3 Quản lý bình luận – Xóa bình luận hoàn toàn

Chức năng Người quản trị xóa bình luận hoàn toàn

UC-A-1.6.4 Quản lý bình luận – Khôi phục bình luận

Chức năng Người quản trị khôi phục bình luận chưa xóa hoàn toàn

UC-A-1.7.1 Xem các thông tin thống kê

Chức năng Người quản trị xem các thông tin thống kê ở hệ thống

UC-U-1.1 Đăng nhập role user Chức năng người dùng đăng nhập để sử dụng ứng dụng

UC-U-1.2 Đăng xuất role user Chức năng người dùng đăng xuất sau khi đã đăng nhập vào ứng dụng

UC-U-2 Đăng ký role user Chức năng người dùng đăng ký tài khoản để sử dụng ứng dụng

UC-U-3 Quên mật khẩu Chức năng người dùng thay đổi mật khẩu khi quên

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

Chức năng người xem thông tin cá nhân của mình

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

– Sửa thông tin cá nhân – Đổi ảnh bìa

Chức năng người dùng thay đổi ảnh bìa

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

– Sửa thông tin cá nhân – Đổi ảnh ảnh đại diện

Chức năng người dùng thay đổi ảnh đại diện

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

– Sửa thông tin cá nhân – Đổi username

Chức năng người dùng thay đổi ảnh username

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

– Sửa thông tin cá nhân – Đổi các thông tin khác

Chức năng người dùng thay đổi các thông tin khác như tên, ngày sinh, địa chỉ, mô tả bản thân

UC-U-5 Theo dõi người dùng Chức năng người dùng theo dõi người dùng khác

UC-U-6 Hủy theo dõi người dùng Chức năng người dùng hủy theo dõi người dùng khác UC-U-7 Tạo bài viết Chức năng người dùng tạo bài viết

UC-U-8 Chia sẻ bài viết Chức năng người dùng có thể chia sẻ bài viết của người khác

UC-U-9.1 Xem bảng tin Chức năng người dùng xem các tin tức thông qua các người dùng đã theo dõi

UC-U-9.2 Xem xem tin nổi bật Chức năng người xem các bài đăng có lượt thích nhiều nhất

UC-U-10 Xem chi tiết bài viết Chức năng người xem chi tiết bài viết

UC-U-11 Tìm kiếm Chức năng người dùng tìm kiếm bài viết hoặc người dùng khác

UC-U-12.1 Tương tác bài viết -

Chức năng người dùng thêm thích bài viết

UC-U-12.2 Tương tác bài viết - Hủy thích bài viết

Chức năng người dùng hủy thích bài viết

UC-U-12.3 Tương tác bài viết - Bình luận bài viết

Chức năng người dùng bình luận bài viết

UC-U-12.4 Tương tác bài viết - Trả lời bình luận bài viết

Chức năng người dùng trả lời bình luận

UC-U-12.5 Tương tác bài viết -

Thích bình luận bài viết

Chức năng người dùng thích một bài viết

UC-U-12.6 Tương tác bài viết - Hủy thích bình luận bài viết

Chức năng người dùng hủy thích một bài viết

UC-U-13.1 Quản lý bài viết các nhân

– Xem các bài viết đã đăng

Chức năng người dùng xem các bài viết đã đăng của mình

UC-U-13.2 Quản lý bài viết các nhân

– Xem các bài viết đã thích

Chức năng người dùng xem các bài viết đã thích của mình

UC-U-13.3 Quản lý bài viết các nhân

– Xóa bài viết của mình

Chức năng người dùng xóa bài viết của mình

UC-U-13.4 Quản lý bài viết các nhân

Chức năng người dùng sửa bài viết của mình

UC-U-14 Gửi tin nhắn Chức năng người dùng gửi tin nhắn trong phòng chat

UC-U-15 Trả lời tin nhắn Chức năng người dùng gửi tin nhắn trong phòng chat

UC-U-16 Thu hồi tin nhắn Chức năng người dùng thu hồi tin nhắn đã gửi

UC-U-17 Tạo phòng chat Chức năng người dùng tạo một phòng chat mới

UC-U-18 Thêm thành viên vào phòng chat

Chức năng người dùng thêm thành viên mới vào phòng chat

UC-U-19 Xóa bớt thành viên khỏi phòng chat

Chức năng người dùng xóa bớt thành viên ra khỏi phòng chat

UC-U-20 Xem các phòng chat của bản thân

Chức năng người dùng xem các phòng chat mình mình tham gia

UC-U-21 Xóa phòng chat Chức năng người dùng xóa các phòng chat mà mình có quyền quản trị

Bảng 1 Mô tả sơ đồ Use case

Đặc tả một số usecase chính

Use Case Name Đăng nhập

Description Là người quản trị thì phải đăng nhập vào ứng dụng để sử dụng các tính năng của ứng dụng

Trigger Quản trị viên có nhu cầu đăng nhập và sử dụng ứng dụng

Pre-Condition(s) Tài khoản người dùng đã được tạo sẵn

Thiết bị sử dụng ứng dụng phải được kết nối với Internet Post-Condition(s) Quản trị viên đăng nhập thành công

Basic Flow 1 Quản trị viên truy cập vào trang web

2 Quản trị viên chọn đăng nhập

3 Quản trị viên nhập username và password

4 Hệ thống xác thực thông tin đăng nhập thành công và cho phép Quản trị viên truy cập vào ứng dụng

Hệ thống xác thực thông tin đăng nhập sẽ xử lý trường hợp không thành công bằng cách hiển thị thông báo lỗi Người dùng cần nhập lại tên người dùng và mật khẩu để thực hiện thao tác đăng nhập lần nữa.

Mật khẩu phải được hash bằng MD5

Bảng 2 Mô tả Use case Đăng nhập

Use Case name Đăng xuất

Description Quản trị viên đã đăng nhập vào hệ thống, muốn đăng xuất ra khỏi hệ thống và không dùng các dịch vụ của hệ thống

Trigger Là người dùng đã đăng nhập vào hệ thống muốn đăng xuất ra khỏi hệ thống

Pre-Condition(s): Đã đăng nhập vào hệ thống với quyền là một admin

Thiết bị có kết nối Internet để thực hiện chức năng đăng xuất

Post-Condition(s): Người dùng đăng xuất khỏi hệ thống thành công

Hệ thống xóa phiên đăng nhập (các token) của người dùng

Basic Flow 1 Người dùng nhấn vào button Sign Out bên Side bar

2 Hệ thống thực hiện đăng xuất người dùng khỏi hệ thống, màn hình chuyển về màn hình Đăng nhập Hệ thống xóa phiên đăng nhập của người dùng

Bảng 3 Mô tả Use case Đăng xuất

2.4.1.3.1 Xem danh sách người dùng

Use Case name Xem danh sách người dùng

Description Là người quản trị, tôi muốn xem danh sách các user đang có trên hệ thống

Trigger Quản trị viên muốn xem danh sách bài đăng

Để thực hiện việc lấy và hiển thị danh sách danh mục bài đăng, quản trị viên cần đăng nhập vào hệ thống với quyền Admin trên trang dành cho admin Ngoài ra, thiết bị phải có kết nối Internet để đảm bảo quá trình này diễn ra suôn sẻ.

Post-Condition(s): Hệ thống lấy thành công danh sách người dùng và hiển thị ra màn hình dưới dạng list và có phân trang

Basic Flow 1 Tại màn hình Home, Người quản lý chọn vào button chức năng

Quản lý người dùng tại Side bar

2 Hệ thống chuyển sang màn hình Quản lý người dùng

3 Hệ thống hiển thị ra màn hình danh sách người dùng dạng danh sách

Bảng 4 Mô tả Use case Xem danh sách người dùng

2.4.1.3.2 Xóa người dùng – Không hoàn toàn

Use Case name Xóa người dùng – Không hoàn toàn

Description Là quản trị viên, tôi muốn xem thông tin chi tiết của người dùng

Trigger Là quản trị viên, tôi muốn xóa người dùng khỏi hệ thống nhưng có thể khôi phục lại

Pre-Condition(s): Quản trị viên phải đăng nhập vào hệ thống với quyền user là Admin-

Thiết bị có kết nối Internet để thực hiện việc thêm danh mục người dùng

Post-Condition(s): Hệ thống hiển thị thông tin chi tiết của người dùng

Basic Flow 1 Tại màn hình Home, Quản trị viên chọn vào button chức năng Quản lý người dùng

2 Hệ thống chuyển sang màn hình Quản lý người dùng

3 Tại màn hình Quản lý người dùng, chọn nút delete tại người dùng muốn xóa

4 Hệ thống thông báo xóa thành công

Alternative Flow 1 Tại màn hình Home, Quản trị viên chọn vào nút chức năng Quản lý người dùng

2 Hệ thống chuyển sang màn hình Quản lý người dùng

3 Tại màn hình Quản lý người dùng, chọn nút view tại người dùng muốn xem thông tin chi tiết

4 Hệ thống hiển thị thông tin chi tiết của người dùng

6 Hệ thống thông báo đã xóa người dùng thành công

Bảng 5 Mô tả Use case Xóa người dùng – Không hoàn toàn

2.4.1.4.1 Xem danh sách bài đăng

Use Case name Xem danh sách bài đăng

Description Là người quản trị, tôi muốn xem danh sách các bài đăng đang có trên hệ thống

Trigger Quản trị viên muốn xem danh sách bài đăng

Để thực hiện việc lấy và hiển thị danh sách bài đăng, quản trị viên cần đăng nhập vào hệ thống với quyền Admin tại trang dành cho admin Ngoài ra, thiết bị phải có kết nối Internet.

Post-Condition(s): Hệ thống lấy thành công danh sách người dùng và hiển thị ra màn hình dưới dạng list và có phân trang

Basic Flow 1 Tại màn hình Home, Quản trị viên chọn vào button chức năng

Quản lý người dùng tại Side bar

2 Hệ thống chuyển sang màn hình Quản lý người dùng

3 Hệ thống hiển thị ra màn hình danh sách bài đăng dạng danh sách

Bảng 6 Mô tả Use case Xem danh sách bài đăng

2.4.1.4.2 Xóa bài đăng – Không hoàn toàn

Use Case name Xóa bài đăng – Không hoàn toàn

Description Quản trị viên muốn xóa một bài đăng nhưng không hoàn toàn

Trigger Là quản trị viên, tôi muốn xóa bài đăng nhưng có thể khôi phục lại

Pre-Condition(s): Quản trị viên phải đăng nhập vào hệ thống với quyền user là

Thiết bị có kết nối Internet để thực hiện việc xóa bài đăng

Post-Condition(s): Hệ thống hiển thị thông tin chi tiết của bài đăng

Basic Flow 1 Tại màn hình Home, Quản trị viên chọn vào button chức năng

2 Hệ thống chuyển sang màn hình Quản lý bài đăng

3 Tại màn hình Quản lý bài đăng, chọn nút delete tại bài đăng muốn xóa

4 Hệ thống thông báo xóa thành công

Alternative Flow 1 Tại màn hình Home, Quản trị viên chọn vào button chức năng

2 Hệ thống chuyển sang màn hình Quản lý danh bài đăng

3 Tại màn hình Quản lý danh bài đăng, chọn nút view tại bài đăng muốn xem thông tin chi tiết

4 Hệ thống hiển thị thông tin chi tiết của bài đăng

6 Hệ thống thông báo đã xóa người dùng thành công

Bảng 7 Mô tả Use case Xóa bài đăng – Không hoàn toàn

2.4.1.5.1 Xem danh sách phòng chat

Use Case name Xem danh sách phòng chat

Description Là người quản trị, tôi muốn xem danh sách các phòng chat đang có trên hệ thống

Trigger Quản trị viên muốn xem danh sách phòng chat

Pre-Condition(s): Quản trị viên phải đăng nhập vào hệ thống với quyền Admin tại trang dành cho admin

Post-Condition(s): Hệ thống lấy thành công danh sách người dùng và hiển thị ra màn hình dưới dạng list và có phân trang

Basic Flow 1 Tại màn hình Home, Quản trị viên chọn vào button chức năng

Quản lý người dùng tại Side bar

2 Hệ thống chuyển sang màn hình Quản lý phòng chat

3 Hệ thống hiển thị ra màn hình danh sách phòng chat dạng danh sách

Bảng 8 Mô tả Use case Quản lý phòng chat

2.4.1.5.2 Xóa phòng chat – Không hoàn toàn

Use Case name Xóa phòng chat– Không hoàn toàn

Description Quản trị viên muốn xóa một phòng chat nhưng không hoàn toàn

Trigger Là quản trị viên, tôi muốn xóa phòng chat nhưng có thể khôi phục lại

Pre-Condition(s): Quản trị viên phải đăng nhập vào hệ thống với quyền user là Admin-

Thiết bị có kết nối Internet

Post-Condition(s): Hệ thống hiển thị thông tin chi tiết của bài đăng

Basic Flow 1 Tại màn hình Home, Quản trị viên chọn vào button chức năng Quản lý phòng chat

2 Hệ thống chuyển sang màn hình Quản lý phòng chat

3 Tại màn hình Quản lý phòng chat, chọn nút delete tại phòng chat muốn xóa

4 Hệ thống thông báo xóa thành công

Alternative Flow 1 Tại màn hình Home, Quản trị viên chọn vào button chức năng Quản lý phòng chat

2 Hệ thống chuyển sang màn hình Quản lý phòng chat

3 Tại màn hình Quản lý phòng chat, chọn nút view tại phòng chat muốn xem thông tin chi tiết

4 Hệ thống hiển thị thông tin chi tiết của phòng chat

6 Hệ thống thông báo đã xóa phòng chat thành công Exception Flow

Bảng 9 Mô tả Use case Xóa phòng chat – Không hoàn toàn

2.4.1.6.1 Xem danh sách bình luận

Use Case name Xem danh sách bình luận

Description Là người quản trị, tôi muốn xem danh sách các bình luận đang có trên hệ thống

Trigger Quản trị viên muốn xem danh sách bình luận

Pre-Condition(s): Quản trị viên phải đăng nhập vào hệ thống với quyền Admin tại trang dành cho admin

Post-Condition(s): Hệ thống lấy thành công danh sách người dùng và hiển thị ra màn hình dưới dạng list và có phân trang

Basic Flow 1 Tại màn hình Home, Quản trị viên chọn vào button chức năng Quản lý người dùng tại Side bar

2 Hệ thống chuyển sang màn hình Quản lý bình luận

3 Hệ thống hiển thị ra màn hình danh sách bình luận dạng danh sách Alternative Flow

Bảng 10 Mô tả Use case Quản lý bình luận

2.4.1.6.2 Xóa bình luận – Không hoàn toàn

Use Case name Xóa bình luận– Không hoàn toàn

Description Quản trị viên muốn xóa một bình luận nhưng không hoàn toàn

Trigger Là quản trị viên, tôi muốn xóa bình luận nhưng có thể khôi phục lại

Pre-Condition(s): Quản trị viên phải đăng nhập vào hệ thống với quyền user là Admin-

Thiết bị có kết nối Internet

Post-Condition(s): Hệ thống hiển thị thông tin chi tiết của bài đăng

Basic Flow 1 Tại màn hình Home, Quản trị viên chọn vào button chức năng Quản lý bình luận

2 Hệ thống chuyển sang màn hình Quản lý bình luận

3 Tại màn hình Quản lý bình luận, chọn nút delete tại bình luận muốn xóa

4 Hệ thống thông báo xóa thành công

Alternative Flow 1 Tại màn hình Home, Quản trị viên chọn vào button chức năng Quản lý bình luận

2 Hệ thống chuyển sang màn hình Quản lý bình luận

3 Tại màn hình Quản lý bình luận, chọn nút view tại bình luận muốn xem thông tin chi tiết

4 Hệ thống hiển thị thông tin chi tiết của bình luận

6 Hệ thống thông báo đã xóa bình luận thành công Exception Flow

Bảng 11 Mô tả Use case Xóa bình luận – Không hoàn toàn

Use Case Name Đăng nhập

Description Là người dùng thì phải đăng nhập vào ứng dụng để sử dụng các tính năng của ứng dụng

Trigger Người dùng có nhu cầu đăng nhập và sử dụng ứng dụng

Pre-Condition(s) Tài khoản người dùng đã được tạo sẵn

Thiết bị sử dụng ứng dụng phải được kết nối với Internet

Post-Condition(s) Người dùng đăng nhập ứng dụng thành công

Basic Flow 1 Người dùng truy cập vào ứng dụng

2 Người dùng chọn đăng nhập

3 Người dùng nhập username(email hoặc phone) và password

4 Hệ thống xác thực thông tin đăng nhập thành công và cho phép người dùng truy cập vào ứng dụng

5 Hệ thống ghi nhận lại hoạt động đăng nhập thành công

Exception Flow Hệ thống xác thực thông tin đăng nhập không thành công và hiển thị thông báo Người dùng nhập lại username và password và đăng nhập lại

Mật khẩu phải được hash bằng MD5

Bảng 12 Mô tả Use case User Đăng nhập

Use Case Name Đăng xuất

Description Người dùng đăng xuất khỏi tài khoản khỏi trình duyệt

Trigger Người dùng có nhu cầu đăng xuất sau khi không còn nhu cầu sử dụng nữa

Pre-Condition(s) Người dùng đã đăng nhập

Thiết bị sử dụng ứng dụng phải được kết nối với Internet

Post-Condition(s) Người dùng đăng nhập ứng dụng thành công

Basic Flow 1 Người dùng truy cập vào trang web sau khi đã đăng nhập

2 Người dùng bấm vào tab Cài đặt

3 Hệ thống hiển thị thông tin cài đặt

4 Người dùng lăn xuống dưới cùng thanh tab, bấm dấu 3 chấm và bấm đăng xuất

5 Hệ thống xóa token của người dùng và chuyển người dùng về trang chào mừng

Mật khẩu phải được hash bằng MD5

Bảng 13 Mô tả Use case User Đăng xuất

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

Description Là người dùng, để đăng nhập vào hệ thống thì phải đăng ký tài khoản sử dụng

Trigger Người dùng có nhu cầu đăng ký tài khoản và sử dụng ứng dụng

Pre-Condition Tài khoản người dùng chưa được tạo sẵn

Thiết bị sử dụng ứng dụng phải được kết nối với Internet

Post-Condition Người dùng đăng ký tài khoản ứng dụng thành công

Hệ thống ghi nhận lại hoạt động đăng nhập thành công

Basic Flow 1 Người dùng truy cập vào ứng dụng

2 Người dùng chọn đăng ký tài khoản

3 Người dùng nhập đầy đủ các thông sau

- Email hoặc số điện thoại

4 Hệ thống xác thực thông tin đăng ký thành công và tạo tài khoản mới cho người dùng

Exception Flow Hệ thống xác thực thông tin đăng ký không thành công

Người dùng nhập lại password và xác nhận password không chính xác

Mật khẩu phải được hash bằng MD5

Bảng 14 Mô tả Use case User Đăng ký

Use Case Name Quên mật khẩu

Description Người dùng quên mật khẩu, muốn đặt lại mật khẩu

Trigger Người dùng quên mật khẩu, muốn đặt lại mật khẩu

Pre-Condition Người dùng chọn chức năng quên mật khẩu, nhập vào email hoặc số điện thoại của mình

Post-Condition Hệ thống gửi mã OTP đến email hoặc số điện thoại người dùng đã đăng ký

Basic Flow 1 Chọn quên mật khẩu và nhập email hoặc số điện thoại

2 Hệ thống gửi mã OTP

3 Người dùng nhập mã OTP

4 Hệ thống xác minh mã OTP

5 Mã OTP hợp lệ và người dùng nhập mật khẩu mới

6 Hệ thống thông báo đổi mật khẩu thành công và chuyển hướng về trang đăng nhập

Exception Flow Email hoặc số điện thoại không có trong hệ thống: Hệ thống thông báo tài khoản không tồn tại

Mã OTP không hợp lệ: Hệ thống thông báo mã OTP không hợp lệ

Mã OTP gồm 6 số và hết hạn sau 15 phút

Bảng 15 Mô tả Use case User quên mật khẩu

2.4.2.5 Xem danh sách các phòng chat mình tham gia

Use Case Name Xem danh sách các phòng chat mình tham gia

Description Người dùng muốn xem danh sách các phòng chat mình tham gia

Trigger Người dùng có nhu cầu muốn xem danh sách các phòng chat mình tham gia tạo phòng chat

Pre-Condition Người dùng đăng nhập ứng dụng thành công

Thiết bị sử dụng ứng dụng phải được kết nối với Internet

Post-Condition Hệ thống hiển thị các phong chat mà người dùng tham gia

Basic Flow 1 Truy cập vào tab Chat

2 Hệ thống hiển thị danh sách các phòng chat người dùng tham gia

Business Rules Phòng chat khi tạo cần có ít nhất 3 người, gồm người dùng hiện tại và 2 người dùng khác

Bảng 16 Mô tả Use case Người dùng tạo phòng chat

Use Case Name Tạo phòng chat

Description Người dùng muốn tạo phòng chat

Trigger Người dùng có nhu cầu tạo phòng chat

Pre-Condition Người dùng đăng nhập ứng dụng thành công

Thiết bị sử dụng ứng dụng phải được kết nối với Internet Người dùng có một số bạn bè

Post-Condition Người dùng tạo được phòng chat theo những người dùng đã chọn

Basic Flow 1 Truy cập vào tab Chat

2 Hệ thống hiển thị danh sách các phòng chat người dùng tham gia

3 Người dùng chọn tạo phòng chat

4 Hệ thống hiển thị danh sách bạn bè

5 Người dùng chọn các bạn bè cần thêm vào phòng chat

6 Hệ thống hiển thị thông báo tạo phòng chat thành công và chuyển hướng tới phòng chat mới

Business Rules Phòng chat khi tạo cần có ít nhất 3 người, gồm người dùng hiện tại và 2 người dùng khác

Bảng 17 Mô tả Use case Người dùng tạo phòng chat

Use Case Name Gửi tin nhắn

Description Người dùng muốn gửi tin nhắn

Trigger Người dùng có nhu cầu gửi tin nhắn

Pre-Condition Người dùng đăng nhập ứng dụng thành công

Thiết bị sử dụng ứng dụng phải được kết nối với Internet

Post-Condition Người dùng xem được danh mục muốn xem

Basic Flow 1 Truy cập vào tab Chat

2 Hệ thống hiển thị danh sách phòng chat

3 Người dùng chọn một phòng chat

4 Người dùng nhập tin nhắn và có thể gửi kèm File

6 Hệ thống thông báo đã gửi Alternative Flow

Một tin nhắn có độ dài tối đa là 1000 ký tự Một tin nhắn có thể gửi kèm tối đa 5 file

Bảng 18 Mô tả Use case Gửi tin nhắn

Use Case Name Theo dõi người dùng

Description Người dùng muốn theo dõi một người dùng khác

Trigger Người dùng có nhu cầu theo dõi người dùng khác

Pre-Condition Người dùng đăng nhập ứng dụng thành công

Thiết bị sử dụng ứng dụng phải được kết nối với Internet

Post-Condition Người dùng theo dõi người dùng khác thành công

Basic Flow 1 Ở trang chủ phía bên tay phải có một số người dùng đề xuất để theo dõi

2 Người dùng chọn theo dõi vào user muốn theo dõi

3 Hệ thống hiển thị theo dõi thành công

Bảng 19 Mô tả Use case User Theo dõi người dùng

Use Case Name Tạo một bài viết

Description Người dùng muốn tạo một bài viết

Trigger Người dùng có tạo bài viết

Pre-Condition Người dùng đăng nhập ứng dụng thành công

Thiết bị sử dụng ứng dụng phải được kết nối với Internet

Post-Condition Người dùng tạo được bài viết mới

Basic Flow 1 Truy cập vào tab Trang chủ

2 Tại đây có một chỗ để tạo bài viết

3 Người dùng nhập nội dung và nhấn Gửi

4 Hệ thống thông báo bài viết đã được tạo

Bảng 20 Mô tả Use case User Tạo một bài viết

Use Case Name Xem bảng tin

Description Người dùng muốn xem bảng tin gồm các bài viết của các tài khoản mà mình đã theo dõi

Trigger Người dùng xem bảng tin

Pre-Condition Người dùng đăng nhập ứng dụng thành công

Thiết bị sử dụng ứng dụng phải được kết nối với Internet

Post-Condition Người dùng xem được chi tiết bảng tin

Basic Flow 1 Truy cập vào tab Trang chủ

2 Hệ thống hiển thị danh sách các tin từ các tài khoản mà mình đã theo dõi

Bảng 21 Mô tả Use case User Xem bảng tin

Use Case Name Tìm kiếm

Description Người dùng muốn tìm kiếm bài viết, hoặc người dùng

Trigger Người dùng có nhu cầu tìm kiếm các bài viết và người dùng khác

Pre-Condition Người dùng đăng nhập ứng dụng thành công

Thiết bị sử dụng ứng dụng phải được kết nối với Internet

Post-Condition Người dùng xem được các bài viết và người dùng cần tìm

Basic Flow 1 Người dùng nhấn vào thanh tìm kiếm và nhập thông tin, sau đó nhấn đi

2 Hệ thống trả ra danh sách người dùng bài viết ở các tab khác nhau

Bảng 22 Mô tả Use case User Tìm kiếm

2.4.2.12 Tương tác với bài viết

2.4.3.22.1 Tương tác với bài viết - Thích bài viết

Use Case Name Tương tác với bài viết - Thích bài viết

Description Người dùng muốn thích muốn bài viết

Trigger Người dùng có nhu cầu thích bài viết

Pre-Condition Người dùng đăng nhập ứng dụng thành công

Thiết bị sử dụng ứng dụng phải được kết nối với Internet

Post-Condition Người dùng xem được thông tin trong giỏ hàng

Basic Flow 1 Truy cập vào tab Trang chủ

2 Hệ thống hiển thị các bài viết

3 Người dùng bấm vào biểu tượng trái tim trên bài viết với những bài viết chưa thích

4 Hệ thống ghi nhận người dùng đã thích bài viết

Bảng 23 Mô tả Use case User Thích bài viết

2.4.3.22.2 Tương tác với bài viết - Bình luận bài viết

Use Case Name Hủy thích bài viết

Description Người dùng muốn bình luận bài viết

Trigger Người dùng có nhu cầu bình luận bài viết

Pre-Condition Người dùng đăng nhập ứng dụng thành công

Thiết bị sử dụng ứng dụng phải được kết nối với Internet

Post-Condition Người dùng truy cập ứng dụng web hay di động

Basic Flow 1 Truy cập vào tab Trang chủ

2 Hệ thống hiển thị các bài viết

3 Người dùng bấm một bài viết

4 Hệ thống hiển thị chi tiết bài viết

5 Người dùng nhập bình luận và nhấn gửi

6 Hệ thống ghi nhận bình luận

Bảng 24 Mô tả Use case User Bình luận bài viết

2.4.3.24.1 Xem thông tin các bài viết cá nhân

Use Case Name Xem các bài viết cá nhân

Description Người dùng muốn xem các bài viết cá nhân

Trigger Người dùng có nhu cầu xem các bài viết cá nhân của mình

Pre-Condition Người dùng đăng nhập ứng dụng thành công

Thiết bị sử dụng ứng dụng phải được kết nối với Internet

Post-Condition Người dùng xem được thông tin cá nhân

Basic Flow 1 Truy cập vào tab Cá nhân

2 Hệ thống hiển thị thông tin của người dùng, và các bài viết đã đăng

Bảng 25 Mô tả Use case User Xem thông tin bài viết cá nhân

Use Case Name Xóa các bài viết cá nhân

Description Người dùng muốn xóa các bài viết cá nhân

Trigger Người dùng có nhu cầu xóa các bài viết cá nhân của mình

Pre-Condition Người dùng đăng nhập ứng dụng thành công

Thiết bị sử dụng ứng dụng phải được kết nối với Internet

Post-Condition Người dùng xem được thông tin cá nhân

Basic Flow 1 Truy cập vào tab Cá nhân

2 Hệ thống hiển thị thông tin của người dùng, và các bài viết đã đăng

3 Bấm vào dấu ba chấm của mỗi bài viết và nhấn xóa bài viết

4 Hệ thống ghi nhận bài viết đã bị xóa

Bảng 26 Mô tả Use case User Xóa bài viết cá nhân

THIẾT KẾ PHẦN MỀM

Thiết kế giao diện

4 Chương 4: CÀI ĐẶT VÀ KIỂM THỬ

4.1.Công cụ dùng trong dự án

Thời gian Công việc Ghi chú

- Thiết kế usecase và mô hình hóa yêu cầu

- Thiết kế cơ sở dữ liệu

- Tìm hiểu về JSON Web Token, Redis

- Tìm hiểu về MongoDB để áp dụng vào lưu trữ dữ liệu

- Tiến hành phát triển API dựa trên các kiến thức đã tìm hiểu được và các tài liệu

- Tiến hành xây dựng giao diện người dùng cho hệ thống

- Tìm hiểu Flutter và và xây dựng phiên bản di dộng

Kết hợp các phần đã xây dựng lại với nhau (giao diện, API, cơ sở dữ liệu)

Kiểm thử chương trình và tiến hành sửa lỗi

07/07/2022 Viết và hoàn thiện báo cáo Ý kiến của giảng viên hướng dẫn

(Ký và ghi rõ họ tên)

Người viết đề cương (Ký và ghi rõ họ tên)

Chúng tôi xin chân thành cảm ơn thầy Nguyễn Trần Thi Văn, giảng viên hướng dẫn, đã tận tâm chỉ bảo, hỗ trợ và giải đáp mọi thắc mắc của nhóm trong suốt quá trình thực hiện đồ án.

Em cũng xin chân thành cảm ơn các thầy cô giáo trong trường Đại học sư Phạm

Khoa CNTT tại Kỹ Thuật TP.HCM đã trang bị cho chúng em kiến thức vững chắc về các môn đại cương và chuyên ngành, tạo nền tảng lý thuyết vững vàng và hỗ trợ chúng em trong suốt quá trình học tập.

Với thời gian và kinh nghiệm hạn chế, đồ án của nhóm em không tránh khỏi những thiếu sót Chúng em rất mong nhận được sự góp ý chân thành từ thầy cô và các bạn Những ý kiến đóng góp về đề tài sẽ giúp nhóm em tích lũy thêm kinh nghiệm cho các nghiên cứu sau này Xin chân thành cảm ơn thầy Nguyễn Trần Thi Văn và các bạn đã hỗ trợ nhóm.

Cuối cùng, em xin gửi lời cảm ơn chân thành đến gia đình và bạn bè, những người đã luôn hỗ trợ, quan tâm và động viên chúng em trong suốt quá trình học tập và hoàn thành khóa luận.

1 GIỚI THIỆU VỀ ĐỀ TÀI 9

4 MỤC TIÊU CỦA ĐỀ TÀI 10

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

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 12

1.4.1 Giới thiệu về Flutter và Dart 16

1.5.4 Lý do sử dụng MongoDB 19

CHƯƠNG 2 KHẢO SÁT HIỆN TRẠNG 20

2.3 Mô hình hóa hệ thống 25

2.3.3 Mô tả sơ đồ Usecase 27

2.4 Đặc tả một số usecase chính 33

CHƯƠNG 3 THIẾT KẾ PHẦN MỀM 63

CHƯƠNG 4 CÀI ĐẶT VÀ KIỂM THỬ 107

4.4 Các bước chạy hệ thống 107

4 HƯỚNG PHÁT TRIỂN 118DANH MỤC THAM KHẢO 119

Hình 2 Khảo sát hiện trạng Facebook (1) 21

Hình 3 Khảo sát hiện trạng Facebook (2) 21

Hình 4 Khảo sát hiện trạng Twitter (1) 21

Hình 5 Khảo sát hiện trạng Twitter (2) 22

Hình 6 Khảo sát hiện trạng Zalo (1) 22

Hình 7 Khảo sát hiện trạng Linkedin (1) 23

Hình 8 Usecase tổng quát cho người dùng 26

Hình 9 Use case tổng quát cho Quản trị viên 27

Hình 10 Mô tả hệ thống 63

Hình 12 Lược đồ tuần tự chức năng Đăng ký 65

Hình 13 Lược đồ tuần tự chức năng Đăng nhập 65

Hình 14 Lược đồ tuần tự chức năng user xem danh sách bài viết 66

Hình 15 Lược đồ tuần tự chức năng User xem tin nhắn 66

Hình 16 Lược đồ tuần tự chức năng thêm bài viết 67

Hình 17 Lược đồ tuần tự chức năng tạo phòng nhắn tin 67

Hình 18 Lược đồ thực thể ERD 68

Hình 19 Màn hình đăng nhập 74

Hình 20 Màn hình đăng ký 75

Hình 23 Màn hình trang chủ 78

Hình 26 Trang nhắn tin chào mừng 80

Hình 27 Trang nhắn tin phòng chat 81

Hình 28 Trang nhắn tin thông tin 82

Hình 31 Trang chi tiết bài viết 86

Hình 32 Hộp thoại thêm bài viết 87

Hình 33 Trang chỉnh sửa thông tin cá nhân 88

Hình 35 Trang đăng ký các bước 1, 2, 3- Di dộng 90

Hình 36 Trang đăng nhập - Di dộng 91

Hình 37 Trang chủ - Di động 92

Hình 38 Trang tìm kiếm Bước 1 và Bước 2(Kết quả) - Di động 93

Hình 39 Trang chi tiết người dùng 94

Hình 40 Trang chi tiết bài viết - Di động 95

Hình 41 Trang tạo bài viết - Di động 96

Hình 42 Trang liên hệ - Di dộng 97

Hình 43 Trang nhắn tin - Di động 98

Hình 44 Trang phòng nhắn tin - Di động 99

Hình 45 Trang cá nhân - Di động 100

Hình 46 Trang chỉnh sửa hồ sơ - Di dộng 101

Hình 49 Trang quản lý người dùng 104

Hình 50 Trang quản lý bài viết 105

Hình 51 Trang quản lý phòng nhắn tin 105

Hình 52 Trang quản lý bình luận 106

Hình 53 Unit test cho các API chỉnh của xác thực 108

Hình 54 Unit test cho các API chính của người dùng 108

Hình 55 Unit test cho các API chính của bài viết 109

Hình 56 Unit test cho các API chính của bình luận 109

Hình 57 Kết quả Unit test cho các API chính của thông báo 109

Hình 58 Unit test cho các API chính của phòng nhắn tin 110

Hình 59 Unit test cho các API chính của admin cho xác thực 110

Hình 60 Unit test cho các API chính của admin cho thống kê 111

Hình 61 Unit test cho các API chính của admin về người dùng 111

Hình 62 Unit test cho các API chính của admin về bài viết 111

Hình 63 Unit test cho các API chính của admin về phòng nhắn tin 112

Bảng 1 Mô tả sơ đồ Use case 32

Bảng 2 Mô tả Use case Đăng nhập 33

Bảng 3 Mô tả Use case Đăng xuất 34

Bảng 4 Mô tả Use case Xem danh sách người dùng 35

Bảng 5 Mô tả Use case Xóa người dùng – Không hoàn toàn 37

Bảng 6 Mô tả Use case Xem danh sách bài đăng 38

Bảng 7 Mô tả Use case Xóa bài đăng – Không hoàn toàn 40

Bảng 8 Mô tả Use case Quản lý phòng chat 41

Bảng 9 Mô tả Use case Xóa phòng chat – Không hoàn toàn 42

Bảng 10 Mô tả Use case Quản lý bình luận 43

Bảng 11 Mô tả Use case Xóa bình luận – Không hoàn toàn 44

Bảng 12 Mô tả Use case User Đăng nhập 45

Bảng 13 Mô tả Use case User Đăng xuất 47

Bảng 14 Mô tả Use case User Đăng ký 48

Bảng 15 Mô tả Use case User quên mật khẩu 49

Bảng 16 Mô tả Use case Người dùng tạo phòng chat 50

Bảng 17 Mô tả Use case Người dùng tạo phòng chat 52

Bảng 18 Mô tả Use case Gửi tin nhắn 53

Bảng 19 Mô tả Use case User Theo dõi người dùng 54

Bảng 20 Mô tả Use case User Tạo một bài viết 55

Bảng 21 Mô tả Use case User Xem bảng tin 56

Bảng 22 Mô tả Use case User Tìm kiếm 57

Bảng 23 Mô tả Use case User Thích bài viết 58

Bảng 24 Mô tả Use case User Bình luận bài viết 59

Bảng 25 Mô tả Use case User Xem thông tin bài viết cá nhân 61

Bảng 26 Mô tả Use case User Xóa bài viết cá nhân 62

Bảng 27 Mô tả chi tiết bảng User 69

Bảng 28 Mô tả chi tiết bảng Post 70

Bảng 29 Mô tả chi tiết bảng Comment 71

Bảng 30 Mô tả chi tiết bảng Room 71

Bảng 31 Mô tả chi tiết bảng Message 72

Bảng 32 Mô tả Use case User Danh sách giao diện 74

Bảng 33 Mô tả giao diện trang đăng nhập bước 1 74

Bảng 34 Mô tả giao diện trang đăng ký 75

Bảng 35 Mô tả giao diện thanh menu 76

Bảng 36 Mô tả giao diện trang card bài viết 78

Bảng 37 Mô tả giao diện trang chủ 78

Bảng 38 Mô tả giao diện trang thông báo 80

Bảng 39 Mô tả giao diện trang nhắn tin chào mừng 81

Bảng 40 Mô tả giao diện trang nhắn tin phòng chat 82

Bảng 41 Mô tả giao diện trang nhắn tin thông tin 83

Bảng 42 Mô tả giao diện trang danh bạ 84

Bảng 43 Mô tả giao diện trang cá nhân 86

Bảng 44 Mô tả giao diện trang chi tiết bài viết 87

Bảng 45 Mô tả giao diện hộp thoại đăng bài viết 88

Bảng 46 Mô tả giao diện trang chỉnh sửa thông tin cá nhân 89

Bảng 47 Mô tả giao diện trang tìm kiếm 89

Bảng 48 Mô tả giao diện trang đăng ký các bước- Di động 91

Bảng 49 Mô tả giao diện trang đăng nhập - Di động 91

Bảng 50 Mô tả giao diện trang chủ - Di động 93

Bảng 51 Mô tả giao diện trang tìm kiếm bước 2 - Di động 93

Bảng 52 Mô tả giao diện trang tìm kiếm bước 2 - Di động 94

Bảng 53 Mô tả giao diện chi tiết người dùng - Di động 95

Bảng 54 Mô tả giao diện chi tiết bài viết - Di động 96

Bảng 55 Mô tả giao diện chi tiết bài viết - Di động 96

Bảng 56 Mô tả giao diện trang liên hệ - Di động 97

Bảng 57 Mô tả giao diện trang nhắn tin - Di động 98

Bảng 58 Mô tả giao diện trang nhắn tin - Di động 99

Bảng 59 Mô tả giao diện trang cá nhân - Di động 100

Bảng 60 Mô tả giao diện trang cá nhân chi tiết- Di động 101

Bảng 61 Mô tả giao diện trang đăng nhập 102

Bảng 62 Mô tả giao diện trang thống kê 103

Bảng 63 Mô tả giao diện trang quản lý người dùng 104

Bảng 64 Mô tả giao diện trang quản lý bài viết 105

Bảng 65 Mô tả giao diện quản lý phòng nhắn tin 105

Bảng 66 Mô tả giao diện trang quản lý bình luận 106

Bảng 67 Testcase User - Chức năng đăng nhập tài khoản 112

Bảng 68 Testcase User - Chức năng đăng ký tài khoản 113

Bảng 69 Testcase User - Chức năng xem bài viết 113

Bảng 70 Testcase User - Chức năng thích bài viết 114

Bảng 71 Testcase User - Chức năng bình luận bài viết 114

Bảng 72 Testcase User - Chức năng thêm bài viết 114

Bảng 73 Testcase User - Chức năng tạo phòng nhắn tin 115

Bảng 74 Testcase User - Chức năng gửi tin nhắn 115

Bảng 75 Testcase User - Chức năng theo dõi 115

Bảng 76 Testcase User - Chức năng bỏ theo dõi 115

1 GIỚI THIỆU VỀ ĐỀ TÀI

Trong thời đại công nghệ thông tin hiện nay, nhu cầu kết nối và chia sẻ khoảnh khắc cũng như ý kiến cá nhân trở nên ngày càng quan trọng đối với mọi người.

Nhóm đã quyết định phát triển một trang web mạng xã hội trực tuyến, cho phép người dùng dễ dàng kết nối và chia sẻ kiến thức cũng như khoảnh khắc cá nhân thông qua giao diện thân thiện Ứng dụng này giúp xây dựng mối quan hệ với những người có chung sở thích và kết nối với bạn bè, đồng thời giải quyết hai vấn đề chính của người dùng: kết nối và chia sẻ.

2 ĐỐI TƯỢNG NGHIÊN CỨU Đối với đề tài “Xây dựng mạng xã hội nhắn tin”, đối tượng nghiên cứu dựa trên những nhu cầu kết nối, tương tác với người khác với nhau, mọi người có thể nhắn tin với một người dùng hay tạo một nhóm để chia sẻ niềm vui

Đề tài này giúp người dùng chia sẻ thông tin và khoảnh khắc cá nhân với bạn bè, cho phép mọi người thích và bình luận trên bài viết Bên cạnh đó, nó còn ứng dụng các công nghệ tiên tiến để tạo ra sản phẩm chất lượng.

- Áp dụng cơ sở dữ liệu MongoDB để lưu trữ dữ liệu từ người dùng

- Nghiên cứu APIs xây dựng nên hệ thống các APIs hỗ trợ lấy dữ liệu một cách chính xác và nhanh chóng bằng NodeJS và ExpressJS

Nghiên cứu và ứng dụng ReactJs, Flutter cùng với các thư viện hỗ trợ là rất quan trọng trong việc xây dựng và xử lý giao diện người dùng hiệu quả cho hệ thống quản trị.

Để đảm bảo bảo mật hệ thống, chúng tôi áp dụng Json Web Token (JWT) cho việc xác thực tài khoản đăng nhập của khách hàng Ngoài ra, mã OTP được sử dụng để người dùng có thể khôi phục tài khoản thông qua email đã đăng ký.

3 PHẠM VI NGHIÊN CỨU Đề tài “Xây dựng mạng xã hội nhắn tin” chủ yếu tập trung khai thác vào vấn đề nhắn tin và chia sẻ các bài viết Website được chia thành 2 phần là phần Quản trị và phần Người dùng Trong phần Quản trị bao gồm các nghiệp vụ chính như:

- Quản lý người dùng (xem, xóa, phục hồi và xóa vĩnh viễn)

- Quản lý bài đăng (xem, xóa, phục hồi và xóa vĩnh viễn)

- Quản lý phòng chat (xem, xóa, phục hồi và xóa vĩnh viễn)

- Quản lý bình luận (xem, xóa, phục hồi và xóa vĩnh viễn)

Trong phần Người dùng bao gồm các nghiệp vụ chính như:

- Đăng nhập/ Đăng ký/ Quên mật khẩu

- Quản lý thông tin cá nhân / Thay đổi thông tin cá nhân

- Nhắn tin/ Thu hồi tin nhắn

- Tạo phòng chat/ Quản lý phòng chat

- Theo dõi người dùng/ Hủy theo dõi người dùng

- Đăng bài / Quản lý bài viết / Xem các bài viết

- Thích bài viết/ Hủy thích bài viết /Bình luận các bài viết

- Tìm kiếm người dùng và bài viết

Về phần cốt lõi xử lý, xây dựng đầy đủ các APIs phục vụ cho phần hiển thị cuối cùng

4 MỤC TIÊU CỦA ĐỀ TÀI

Người dùng có thể xây dựng một mạng xã hội giúp kết nối mọi người, cho phép nhắn tin, tạo phòng nhắn tin, đăng bài viết và tương tác với các bài viết trên cả website và thiết bị di động.

Quản trị xây dựng đóng vai trò quan trọng trong việc quản lý và theo dõi tài nguyên, dữ liệu của hệ thống, bao gồm thống kê, quản lý tài khoản, quản lý bài viết, quản lý phòng nhắn tin và quản lý bình luận.

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

Mục tiêu của đề tài là phát triển một mạng xã hội giúp người dùng kết nối, nhắn tin và chia sẻ thông tin qua một trang web thân thiện và dễ sử dụng Nền tảng này cho phép mọi người xây dựng mối quan hệ với những người có cùng sở thích, nghề nghiệp, hoặc đơn giản chỉ để kết nối với bạn bè và gia đình.

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 1.1.ReactJs

ReactJs là thư viện JavaScript mã nguồn mở do Facebook phát triển, ra mắt năm 2013, cho phép tạo giao diện người dùng (UI) từ các đoạn mã nhỏ và độc lập gọi là “components” Thư viện này hiện đang rất phổ biến, giúp lập trình viên xây dựng UI một cách hiệu quả và linh hoạt.

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

Cài đặt

 Cài đặt NodeJS phiên bản mới (LTS hoặc bản hiện tại là 18.12.1 https://nodejs.org/en/download/)

 Cài đặt Flutter bản mới nhất cùng với Android Toolkit

 Phiên bản di động hỗ trợ cho Android 10 trở lên

 Cài đặt Visual Studio Code Link cài đặt: https://code.visualstudio.com/download

 Tải project tại: https://gitlab.com/sg83/zola

Các bước chạy hệ thống

 git clone https://gitlab.com/sg83/zola

 npm run start hoặc yarn start

 np run test hoặc yarn test để chạy unit test

 Mở trình duyệt truy cập http://localhost:5173 (đối với client) và http://localhost:5175 (đối với admin)

 flutter run (chạy trên android)

Hoặc có thể truy cập trực tiếp trang web tại địa chỉ: https://zola- social.netlify.app/

Kiểm thử

Kiểm thử đơn vị(Unit test) các API với Jest và Suppertest:

- Dùng yarn test để chạy hết toàn bộ các unit test

- Các API liên quan đến xác thực, đăng ký, đăng nhập

Hình 53 Unit test cho các API chỉnh của xác thực

- Các API liên quan đến người dùng

Hình 54 Unit test cho các API chính của người dùng

- Các API liên quan đến bài viết

Hình 55 Unit test cho các API chính của bài viết

- Các API liên quan đến bình luận

Hình 56 Unit test cho các API chính của bình luận

- Các API liên quan đến thông báo

Hình 57 Kết quả Unit test cho các API chính của thông báo

- Các API liên quan đến phòng nhắn tin

Hình 58 Unit test cho các API chính của phòng nhắn tin

- Các API liên quan đến xác thực, đăng nhập

Hình 59 Unit test cho các API chính của admin cho xác thực

Hình 60 Unit test cho các API chính của admin cho thống kê

- Các API liên quan đến người dùng

Hình 61 Unit test cho các API chính của admin về người dùng

- Các API liên quan đến bài viết

Hình 62 Unit test cho các API chính của admin về bài viết

- Các API liên quan đến phòng nhắn tin

Hình 63 Unit test cho các API chính của admin về phòng nhắn tin

 Chức năng đăng nhập tài khoản

Title Test Steps Test Data Expected Result Actual

Result Status Đăng nhập Đăng nhập thành công

Chạy ứng dụng Bấm đăng nhập Nhập username và password Bấm đăng nhập username:

” Đăng nhập thành công và chuyển hướng đến màn hình trang chủ

Pass Đăng nhập Đăng nhập thất bại

Chạy ứng dụng Bấm bắt đầu Nhập username và password Bấm đăng nhập username:

“12345” Đăng nhập không thành công, thông báo “Mật khẩu sai”

Bảng 67 Testcase User - Chức năng đăng nhập tài khoản

 Chức năng đăng ký tài khoản

Title Test Steps Test Data Expected

Actual Result Status Đăng ký tài khoản Đăng ký thành công

Chạy ứng dụng Bấm đăng ký Nhập các trường thông tin sau: Họ và tên, email,

Họ và tên: “Le Sang”

“Sang2403@” Đăng ký thành công và chuyển hướng đến trang đăng nhập

113 ngày tháng năm sinh, mật khẩu, xác nhận mật khẩu Bấm đăng ký

“Sang2403@” Đăng ký tài khoản Đăng ký thất bại do xác nhận mật khẩu không khớp

Chạy ứng dụng Bấm đăng ký Nhập các trường thông tin sau: Họ và tên, email, ngày tháng năm sinh, mật khẩu, xác nhận mật khẩu Bấm đăng ký

Họ và tên: “Le Sang”

“123456” Đăng ký không thành công, thông báo

Bảng 68 Testcase User - Chức năng đăng ký tài khoản

 Chức năng xem bài viết

Chạy ứng dụng Bấm đăng nhập Nhập username và password Bấm đăng nhập Bấm vào một bài viết usernam e:

Đăng nhập thành công sẽ đưa bạn đến màn hình trang chủ, nơi hiển thị danh sách bài viết trên dòng thời gian của người dùng Khi nhấn vào bài viết, bạn sẽ được chuyển đến trang chi tiết, nơi thông tin của bài viết sẽ được hiển thị.

Bảng 69 Testcase User - Chức năng xem bài viết

 Chức năng thích bài viết

Nhấn vào biểu tượng trái tim trên bài viết

Biểu tượng trái tim sẽ chuyển thành màu đỏ và

114 số lượng lượt thích tăng lên

Bảng 70 Testcase User - Chức năng thích bài viết

 Chức năng bình luận bài viết

Title Test Steps Test Data Expected Result Actual

Bấm vào biểu tượng bình luận trên bài viết Nhập nội dung bình luân Bấm nút gửi

Thông báo bình luận thành công và hiển thị nội dung đã bình luận

Bảng 71 Testcase User - Chức năng bình luận bài viết

 Chức năng thêm bài viết

Title Test Steps Test Data Expected Result Actual

Bấm vào biểu tượng thêm bài viết trên thanh sidebar Nhập nội dung bài viết Bấm nút gửi

“Đây là nội dung bài viết”

Thông báo thêm bài viết thành công và thoát khỏi trang thêm bài viết

Bảng 72 Testcase User - Chức năng thêm bài viết

 Chức năng tạo phòng nhắn tin

Test case Test Title Test Steps Test

Bấm vào biểu tượng nhắn tin Bấm biểu tượng thêm bài viết Thêm user

Thoát khỏi trang thêm phòng, hiển thị phòng đã tạo

Bảng 73 Testcase User - Chức năng tạo phòng nhắn tin

 Chức năng gửi tin nhắn

Bấm vào phòng nhắn tin Nhập nội dung thanh input Bấm nút gửi

“Đây là nội dung chat”

Hiển thị tin nhắn đã nhập trong phòng chat, và nguời trong phòng chat sẽ thấy tin nhắn

Bảng 74 Testcase User - Chức năng gửi tin nhắn

Nút theo dõi chuyển thành nút đã theo dõi, và hiển thị user đó vào danh sách người đang theo dõi

Bảng 75 Testcase User - Chức năng theo dõi

 Chức năng bỏ theo dõi

Bấm nút bỏ theo dõi

Khi người dùng nhấn nút bỏ theo dõi, một popup xác nhận sẽ hiển thị Sau khi xác nhận, popup sẽ tự động tắt, nút bỏ theo dõi sẽ chuyển thành nút theo dõi, và người dùng đó sẽ không còn xuất hiện trong danh sách người đang theo dõi.

Bảng 76 Testcase User - Chức năng bỏ theo dõi

ƯU ĐIỂM

4 Đề nghị cho bảo vệ hay không?

(Ký & ghi rõ họ tên)

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

Họ và tên Sinh viên 1: Võ Minh Trí MSSV 1: 19110483

Họ và tên Sinh viên 2: Lê Minh Sang MSSV 2: 19110446 Ngành: Công nghệ thông tin Tên đề tài: Xây dựng ứng dụng mạng xã hội ………

Họ và tên Giáo viên phản biện: TS Huỳnh Xuân Phụng

1 Về nội dung đề tài & khối lượng thực hiện: :

4 Đề nghị cho bảo vệ hay không?

(Ký & ghi rõ họ tên) ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP

Họ và Tên SV thực hiện 1: Võ Minh Trí Mã Số SV: 19110483

Họ và Tên SV thực hiện 2: Lê Minh Sang Mã Số SV: 19110446

Thời gian làm luận văn: Từ 14/03/2022 đến 05/07/2022

Chuyên ngành: Công nghệ phần mềm

Tên luận văn: Xây dựng mạng xã hội nhắn tin

Giảng viên hướng dẫn: ThS Nguyễn Trần Thi Văn

Nhiệm vụ của luận văn:

Tìm hiểu về các công nghệ: ReactJS, Flutter, Node Js, MongoDB, Socket IO, JSON WebToken

- Sử dụng NodeJs và ExpressJS để xây dựng Backend, viết API cho các module trong hệ thống

- Sử dụng MongoDB để lưu trữ dữ liệu người dùng của hệ thống

- Sử dụng JSON Web Token để xác thực và ủy quyền cho hệ thống API với Redis quản lý các token

- Sử dụng thư viện React để thiết kế và xử lý giao diện web cho người dùng thao tác cho phần web và Flutter cho phần mobile

- Sử dụng Socket IO cho tác vụ cần realtime là gửi tin nhắn Đề cương viết luận văn:

1.1.Tính cấp thiết của đề tài

1.4.Mục tiêu của đề tài

1 Chương 1: CƠ SỞ LÝ THUYẾT

2 Chương 2: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HÓA YÊU CẦU

2.3.Mô hình hóa yêu cầu

3 Chương 3: THIẾT KẾ PHẦN MỀM

4 Chương 4: CÀI ĐẶT VÀ KIỂM THỬ

4.1.Công cụ dùng trong dự án

Thời gian Công việc Ghi chú

- Thiết kế usecase và mô hình hóa yêu cầu

- Thiết kế cơ sở dữ liệu

- Tìm hiểu về JSON Web Token, Redis

- Tìm hiểu về MongoDB để áp dụng vào lưu trữ dữ liệu

- Tiến hành phát triển API dựa trên các kiến thức đã tìm hiểu được và các tài liệu

- Tiến hành xây dựng giao diện người dùng cho hệ thống

- Tìm hiểu Flutter và và xây dựng phiên bản di dộng

Kết hợp các phần đã xây dựng lại với nhau (giao diện, API, cơ sở dữ liệu)

Kiểm thử chương trình và tiến hành sửa lỗi

07/07/2022 Viết và hoàn thiện báo cáo Ý kiến của giảng viên hướng dẫn

(Ký và ghi rõ họ tên)

Người viết đề cương (Ký và ghi rõ họ tên)

Chúng tôi xin gửi lời cảm ơn chân thành đến giảng viên hướng dẫn, thầy Nguyễn Trần Thi Văn, vì đã tận tình chỉ dẫn, hỗ trợ và giải đáp mọi thắc mắc của nhóm trong suốt quá trình thực hiện đồ án.

Em cũng xin chân thành cảm ơn các thầy cô giáo trong trường Đại học sư Phạm

Khoa CNTT tại Kỹ Thuật TP.HCM đã cung cấp cho chúng em kiến thức vững chắc về các môn đại cương và chuyên ngành, tạo nền tảng lý thuyết vững vàng và hỗ trợ chúng em trong suốt quá trình học tập.

Dưới điều kiện thời gian và kinh nghiệm còn hạn chế, đồ án của nhóm em không tránh khỏi những thiếu sót Vì vậy, nhóm em rất mong nhận được sự góp ý chân thành từ thầy cô và các bạn Những ý kiến đóng góp về đề tài sẽ giúp nhóm em tích lũy thêm kinh nghiệm cho các nghiên cứu sau này Nhóm em xin chân thành cảm ơn thầy Nguyễn Trần Thi Văn và các bạn đã hỗ trợ.

Cuối cùng, em xin gửi lời cảm ơn chân thành đến gia đình và bạn bè, những người đã luôn hỗ trợ, quan tâm và động viên chúng em trong suốt quá trình học tập và hoàn thành khóa luận.

1 GIỚI THIỆU VỀ ĐỀ TÀI 9

4 MỤC TIÊU CỦA ĐỀ TÀI 10

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

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 12

1.4.1 Giới thiệu về Flutter và Dart 16

1.5.4 Lý do sử dụng MongoDB 19

CHƯƠNG 2 KHẢO SÁT HIỆN TRẠNG 20

2.3 Mô hình hóa hệ thống 25

2.3.3 Mô tả sơ đồ Usecase 27

2.4 Đặc tả một số usecase chính 33

CHƯƠNG 3 THIẾT KẾ PHẦN MỀM 63

CHƯƠNG 4 CÀI ĐẶT VÀ KIỂM THỬ 107

4.4 Các bước chạy hệ thống 107

4 HƯỚNG PHÁT TRIỂN 118DANH MỤC THAM KHẢO 119

Hình 2 Khảo sát hiện trạng Facebook (1) 21

Hình 3 Khảo sát hiện trạng Facebook (2) 21

Hình 4 Khảo sát hiện trạng Twitter (1) 21

Hình 5 Khảo sát hiện trạng Twitter (2) 22

Hình 6 Khảo sát hiện trạng Zalo (1) 22

Hình 7 Khảo sát hiện trạng Linkedin (1) 23

Hình 8 Usecase tổng quát cho người dùng 26

Hình 9 Use case tổng quát cho Quản trị viên 27

Hình 10 Mô tả hệ thống 63

Hình 12 Lược đồ tuần tự chức năng Đăng ký 65

Hình 13 Lược đồ tuần tự chức năng Đăng nhập 65

Hình 14 Lược đồ tuần tự chức năng user xem danh sách bài viết 66

Hình 15 Lược đồ tuần tự chức năng User xem tin nhắn 66

Hình 16 Lược đồ tuần tự chức năng thêm bài viết 67

Hình 17 Lược đồ tuần tự chức năng tạo phòng nhắn tin 67

Hình 18 Lược đồ thực thể ERD 68

Hình 19 Màn hình đăng nhập 74

Hình 20 Màn hình đăng ký 75

Hình 23 Màn hình trang chủ 78

Hình 26 Trang nhắn tin chào mừng 80

Hình 27 Trang nhắn tin phòng chat 81

Hình 28 Trang nhắn tin thông tin 82

Hình 31 Trang chi tiết bài viết 86

Hình 32 Hộp thoại thêm bài viết 87

Hình 33 Trang chỉnh sửa thông tin cá nhân 88

Hình 35 Trang đăng ký các bước 1, 2, 3- Di dộng 90

Hình 36 Trang đăng nhập - Di dộng 91

Hình 37 Trang chủ - Di động 92

Hình 38 Trang tìm kiếm Bước 1 và Bước 2(Kết quả) - Di động 93

Hình 39 Trang chi tiết người dùng 94

Hình 40 Trang chi tiết bài viết - Di động 95

Hình 41 Trang tạo bài viết - Di động 96

Hình 42 Trang liên hệ - Di dộng 97

Hình 43 Trang nhắn tin - Di động 98

Hình 44 Trang phòng nhắn tin - Di động 99

Hình 45 Trang cá nhân - Di động 100

Hình 46 Trang chỉnh sửa hồ sơ - Di dộng 101

Hình 49 Trang quản lý người dùng 104

Hình 50 Trang quản lý bài viết 105

Hình 51 Trang quản lý phòng nhắn tin 105

Hình 52 Trang quản lý bình luận 106

Hình 53 Unit test cho các API chỉnh của xác thực 108

Hình 54 Unit test cho các API chính của người dùng 108

Hình 55 Unit test cho các API chính của bài viết 109

Hình 56 Unit test cho các API chính của bình luận 109

Hình 57 Kết quả Unit test cho các API chính của thông báo 109

Hình 58 Unit test cho các API chính của phòng nhắn tin 110

Hình 59 Unit test cho các API chính của admin cho xác thực 110

Hình 60 Unit test cho các API chính của admin cho thống kê 111

Hình 61 Unit test cho các API chính của admin về người dùng 111

Hình 62 Unit test cho các API chính của admin về bài viết 111

Hình 63 Unit test cho các API chính của admin về phòng nhắn tin 112

Bảng 1 Mô tả sơ đồ Use case 32

Bảng 2 Mô tả Use case Đăng nhập 33

Bảng 3 Mô tả Use case Đăng xuất 34

Bảng 4 Mô tả Use case Xem danh sách người dùng 35

Bảng 5 Mô tả Use case Xóa người dùng – Không hoàn toàn 37

Bảng 6 Mô tả Use case Xem danh sách bài đăng 38

Bảng 7 Mô tả Use case Xóa bài đăng – Không hoàn toàn 40

Bảng 8 Mô tả Use case Quản lý phòng chat 41

Bảng 9 Mô tả Use case Xóa phòng chat – Không hoàn toàn 42

Bảng 10 Mô tả Use case Quản lý bình luận 43

Bảng 11 Mô tả Use case Xóa bình luận – Không hoàn toàn 44

Bảng 12 Mô tả Use case User Đăng nhập 45

Bảng 13 Mô tả Use case User Đăng xuất 47

Bảng 14 Mô tả Use case User Đăng ký 48

Bảng 15 Mô tả Use case User quên mật khẩu 49

Bảng 16 Mô tả Use case Người dùng tạo phòng chat 50

Bảng 17 Mô tả Use case Người dùng tạo phòng chat 52

Bảng 18 Mô tả Use case Gửi tin nhắn 53

Bảng 19 Mô tả Use case User Theo dõi người dùng 54

Bảng 20 Mô tả Use case User Tạo một bài viết 55

Bảng 21 Mô tả Use case User Xem bảng tin 56

Bảng 22 Mô tả Use case User Tìm kiếm 57

Bảng 23 Mô tả Use case User Thích bài viết 58

Bảng 24 Mô tả Use case User Bình luận bài viết 59

Bảng 25 Mô tả Use case User Xem thông tin bài viết cá nhân 61

Bảng 26 Mô tả Use case User Xóa bài viết cá nhân 62

Bảng 27 Mô tả chi tiết bảng User 69

Bảng 28 Mô tả chi tiết bảng Post 70

Bảng 29 Mô tả chi tiết bảng Comment 71

Bảng 30 Mô tả chi tiết bảng Room 71

Bảng 31 Mô tả chi tiết bảng Message 72

Bảng 32 Mô tả Use case User Danh sách giao diện 74

Bảng 33 Mô tả giao diện trang đăng nhập bước 1 74

Bảng 34 Mô tả giao diện trang đăng ký 75

Bảng 35 Mô tả giao diện thanh menu 76

Bảng 36 Mô tả giao diện trang card bài viết 78

Bảng 37 Mô tả giao diện trang chủ 78

Bảng 38 Mô tả giao diện trang thông báo 80

Bảng 39 Mô tả giao diện trang nhắn tin chào mừng 81

Bảng 40 Mô tả giao diện trang nhắn tin phòng chat 82

Bảng 41 Mô tả giao diện trang nhắn tin thông tin 83

Bảng 42 Mô tả giao diện trang danh bạ 84

Bảng 43 Mô tả giao diện trang cá nhân 86

Bảng 44 Mô tả giao diện trang chi tiết bài viết 87

Bảng 45 Mô tả giao diện hộp thoại đăng bài viết 88

Bảng 46 Mô tả giao diện trang chỉnh sửa thông tin cá nhân 89

Bảng 47 Mô tả giao diện trang tìm kiếm 89

Bảng 48 Mô tả giao diện trang đăng ký các bước- Di động 91

Bảng 49 Mô tả giao diện trang đăng nhập - Di động 91

Bảng 50 Mô tả giao diện trang chủ - Di động 93

Bảng 51 Mô tả giao diện trang tìm kiếm bước 2 - Di động 93

Bảng 52 Mô tả giao diện trang tìm kiếm bước 2 - Di động 94

Bảng 53 Mô tả giao diện chi tiết người dùng - Di động 95

Bảng 54 Mô tả giao diện chi tiết bài viết - Di động 96

Bảng 55 Mô tả giao diện chi tiết bài viết - Di động 96

Bảng 56 Mô tả giao diện trang liên hệ - Di động 97

Bảng 57 Mô tả giao diện trang nhắn tin - Di động 98

Bảng 58 Mô tả giao diện trang nhắn tin - Di động 99

Bảng 59 Mô tả giao diện trang cá nhân - Di động 100

Bảng 60 Mô tả giao diện trang cá nhân chi tiết- Di động 101

Bảng 61 Mô tả giao diện trang đăng nhập 102

Bảng 62 Mô tả giao diện trang thống kê 103

Bảng 63 Mô tả giao diện trang quản lý người dùng 104

Bảng 64 Mô tả giao diện trang quản lý bài viết 105

Bảng 65 Mô tả giao diện quản lý phòng nhắn tin 105

Bảng 66 Mô tả giao diện trang quản lý bình luận 106

Bảng 67 Testcase User - Chức năng đăng nhập tài khoản 112

Bảng 68 Testcase User - Chức năng đăng ký tài khoản 113

Bảng 69 Testcase User - Chức năng xem bài viết 113

Bảng 70 Testcase User - Chức năng thích bài viết 114

Bảng 71 Testcase User - Chức năng bình luận bài viết 114

Bảng 72 Testcase User - Chức năng thêm bài viết 114

Bảng 73 Testcase User - Chức năng tạo phòng nhắn tin 115

Bảng 74 Testcase User - Chức năng gửi tin nhắn 115

Bảng 75 Testcase User - Chức năng theo dõi 115

Bảng 76 Testcase User - Chức năng bỏ theo dõi 115

1 GIỚI THIỆU VỀ ĐỀ TÀI

Trong thời đại công nghệ thông tin hiện nay, nhu cầu kết nối và chia sẻ khoảnh khắc cùng ý kiến cá nhân giữa mọi người ngày càng gia tăng.

Nhóm đã quyết định xây dựng một trang web mạng xã hội trực tuyến, nơi mọi người có thể dễ dàng kết nối và chia sẻ kiến thức, khoảnh khắc của mình thông qua giao diện thân thiện Ứng dụng này giúp người dùng xây dựng mối quan hệ với những người có chung sở thích và kết nối với bạn bè, gia đình, đồng thời giải quyết nhu cầu chia sẻ ý kiến và khoảnh khắc cá nhân.

2 ĐỐI TƯỢNG NGHIÊN CỨU Đối với đề tài “Xây dựng mạng xã hội nhắn tin”, đối tượng nghiên cứu dựa trên những nhu cầu kết nối, tương tác với người khác với nhau, mọi người có thể nhắn tin với một người dùng hay tạo một nhóm để chia sẻ niềm vui

Đề tài này giúp người dùng chia sẻ thông tin và khoảnh khắc với bạn bè, cho phép mọi người thích và bình luận về bài viết Ngoài ra, nó còn ứng dụng các công nghệ tiên tiến để tạo ra sản phẩm.

- Áp dụng cơ sở dữ liệu MongoDB để lưu trữ dữ liệu từ người dùng

- Nghiên cứu APIs xây dựng nên hệ thống các APIs hỗ trợ lấy dữ liệu một cách chính xác và nhanh chóng bằng NodeJS và ExpressJS

Nghiên cứu và sử dụng ReactJs, Flutter cùng với các thư viện bổ trợ là rất quan trọng trong việc xây dựng và xử lý giao diện người dùng cũng như hệ thống quản trị.

Để đảm bảo bảo mật hệ thống, chúng tôi sử dụng Json Web Token (JWT) để xác thực tài khoản đăng nhập cho cả khách hàng Đồng thời, mã OTP được áp dụng để người dùng có thể khôi phục tài khoản thông qua email đã đăng ký.

3 PHẠM VI NGHIÊN CỨU Đề tài “Xây dựng mạng xã hội nhắn tin” chủ yếu tập trung khai thác vào vấn đề nhắn tin và chia sẻ các bài viết Website được chia thành 2 phần là phần Quản trị và phần Người dùng Trong phần Quản trị bao gồm các nghiệp vụ chính như:

- Quản lý người dùng (xem, xóa, phục hồi và xóa vĩnh viễn)

- Quản lý bài đăng (xem, xóa, phục hồi và xóa vĩnh viễn)

- Quản lý phòng chat (xem, xóa, phục hồi và xóa vĩnh viễn)

- Quản lý bình luận (xem, xóa, phục hồi và xóa vĩnh viễn)

Trong phần Người dùng bao gồm các nghiệp vụ chính như:

- Đăng nhập/ Đăng ký/ Quên mật khẩu

- Quản lý thông tin cá nhân / Thay đổi thông tin cá nhân

- Nhắn tin/ Thu hồi tin nhắn

- Tạo phòng chat/ Quản lý phòng chat

- Theo dõi người dùng/ Hủy theo dõi người dùng

- Đăng bài / Quản lý bài viết / Xem các bài viết

- Thích bài viết/ Hủy thích bài viết /Bình luận các bài viết

- Tìm kiếm người dùng và bài viết

Về phần cốt lõi xử lý, xây dựng đầy đủ các APIs phục vụ cho phần hiển thị cuối cùng

4 MỤC TIÊU CỦA ĐỀ TÀI

Người dùng có thể xây dựng mạng xã hội để kết nối và nhắn tin với nhau, tạo phòng nhắn tin, đăng bài viết và tương tác với các nội dung thông qua website và thiết bị di động.

Quản trị xây dựng là quá trình quản lý và theo dõi tài nguyên, dữ liệu của hệ thống, bao gồm thống kê, quản lý tài khoản, bài viết, phòng nhắn tin và bình luận.

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

Mục đích của đề tài là xây dựng một mạng xã hội giúp mọi người kết nối, nhắn tin và chia sẻ thông tin qua một trang web thân thiện và dễ sử dụng Đây sẽ là nền tảng trực tuyến cho phép người dùng tạo dựng các mối quan hệ với những người có chung sở thích, nghề nghiệp, hoặc đơn giản là để bạn bè và gia đình có thể kết nối với nhau.

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 1.1.ReactJs

ReactJs là thư viện JavaScript mã nguồn mở do Facebook phát triển, ra mắt năm 2013, cho phép tạo giao diện người dùng (UI) từ các thành phần nhỏ gọi là “components” Thư viện này hiện rất phổ biến, giúp lập trình viên xây dựng UI một cách hiệu quả và linh hoạt.

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

w