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

KHÓA LUẬN TỐT NGHIỆP XÂY DỰNG MẠNG XÃ HỘI HẸN HÒ TRỰC TUYẾN

99 118 1

Đ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

Định dạng
Số trang 99
Dung lượng 3,6 MB

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

Nội dung

Kết quả dự kiến: Áp dụng tất cả kiến thức tìm hiểu được xây dựng ứng dụng mạng hẹn hò với các tính năng chính:  Đăng nhập bằng email và mạng xã hội  Trượt qua để thích hoặc không thích

Trang 1

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

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

KHOA CÔNG NGHỆ PHẦN MỀM

LÊ HỒNG HIỂN

HỒ THÁI THĂNG

KHÓA LUẬN TỐT NGHIỆP

XÂY DỰNG MẠNG XÃ HỘI HẸN HÒ TRỰC TUYẾN

Online dating social network

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

TP HỒ CHÍ MINH, 2021

Trang 2

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

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

KHOA CÔNG NGHỆ PHẦN MỀM

LÊ HỒNG HIỂN – 16521095

HỒ THÁI THĂNG - 16521095

KHÓA LUẬN TỐT NGHIỆP

XÂY MẠNG XÃ HỘI HẸN HÒ TRỰC TUYẾN

Online dating social network

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN ThS HUỲNH TUẤN ANH

TP HỒ CHÍ MINH, 2021

Trang 3

THÔNG TIN HỘI ĐỒNG CHẤM KHÓA LUẬN TỐT NGHIỆP

Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……… ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin

Trang 4

LỜI CẢM ƠN

Sau hơn 4 năm học tập và rèn luyện tại Trường Đại Học Công Nghệ Thông Tin, em đã được trang bị các kiến thức cơ bản, các kỹ năng thực tế để có thể hoàn thành Khóa luận tốt nghiệp của mình

Xin chân thành cảm ơn quý thầy cô Khoa Công Nghệ Phần Mềm, đặc biệt là thầy Huỳnh Tuấn Anh đã nhiệt tình, quan tâm, hướng dẫn và truyền đạt những kiến thức và kinh nghiệm cho em trong suốt thời gian thực hiện Khóa luận tốt nghiệp này

Bên cạnh đó, một lần nữa xin cảm ơn nhóm các bạn cùng lớp làm khóa luận đã động viên, thảo luận và góp ý cho nhóm đồng thời đã khơi thêm nguồn động lực cho nhóm để tiếp thêm động lực cho nhóm trong giai đoạn đầy khó khăn

Ngoài ra, chúng em cũng cảm ơn các anh, chị, bạn bè và gia đình đã giúp đỡ và tạo điều kiện cho chúng em hoàn tất luận văn này Mặc dù đã rất cố gắng, tuy nhiên

vì khả năng giới hạn nên vẫn không tránh khỏi những sai sót, chúng em rất mong nhận được sự thông cảm và góp ý chân tình từ quý thầy cô và các bạn Một lần nữa xin được chân thành cảm ơn mọi người

Thành Phố Hồ Chí Minh, 15 tháng 01 năm 2021

Sinh viên

Lê Hồng Hiển

Hồ Thái Thăng

Trang 5

MỤC LỤC

Chương 1 TỔNG QUAN ĐỀ TÀI 2

1.1 Đặt vấn đề: 2

1.2 Mục tiêu và phạm vi: 2

1.2.1 Mục tiêu: 2

1.2.2 Phạm vi: 2

1.2.3 Nội dung thực hiện: 3

1.2.4 Kết quả dự kiến: 3

Chương 2 CƠ SỞ LÝ THUYẾT 4

2.1 Node.js: 4

2.2 Typescript: 4

2.3 GraphQL: 5

2.4 Flutter: 5

2.5 PostgreSQL: 6

2.6 Redis: 7

2.7 MongoDB: 7

2.8 FastAPI: 7

2.9 Ant Design Pro: 8

2.10 Thuật toán ghép đôi: 9

2.10.1 Thuật toán phân nhóm (clustering): 9

2.10.1.1 Tổng quan: 9

2.10.1.2 Hướng áp dụng: 9

2.10.1.3 Thuật toán K-means clustering: 9

Chương 3 XÁC ĐỊNH VÀ PHÂN TÍCH YÊU CẦU 11

Trang 6

3.1 Khảo sát hiện trạng: 11

3.1.1 Hiện trạng tin học (phần cứng, phần mềm): 11

3.1.2 Các ứng dụng liên quan: 12

3.1.2.1 Tinder: 12

3.1.2.2 Facebook hẹn hò: 13

3.2 Các yêu cầu: 14

3.2.1 Các yêu cầu chức năng: 14

3.2.1.1 Yêu cầu lưu trữ: 14

3.2.1.2 Yêu cầu tính toán: 14

3.2.1.3 Yêu cầu tra cứu: 15

3.2.1.4 Yêu cầu thống kê, tổng hợp: 15

Chương 4 THIẾT KẾ HỆ THỐNG 16

4.1 Phân tích thiết kế hệ thống: 16

4.1.1 Lược đồ use case: 16

4.1.2 Danh sách actor: 16

4.1.3 Danh sách các use case: 16

4.1.4 Đặc tả use case: 19

4.1.4.1 Đặc tả use case “Đăng nhập bằng tài khoản Cupizz”: 19

4.1.4.2 Đặc tả use case “Đăng nhập bằng mạng xã hội”: 20

4.1.4.3 Đặc tả use case “Đăng ký”: 22

4.1.4.4 Đặc tả use case: “Quên mật khẩu”: 23

4.1.4.5 Đặc tả use case “Đổi mật khẩu”: 24

4.1.4.6 Đặc tả use case “Chỉnh sửa thông tin cá nhân”: 25

4.1.4.7 Đặc tả use case “Thay đổi ảnh bìa”: 26

Trang 7

4.1.4.8 Đặc tả use-case “Thay đổi ảnh đại diện”: 27

4.1.4.9 Đặc tả use case “Thêm ảnh vào thư viện ảnh”: 28

4.1.4.10 Đặc tả use “Xóa ảnh khỏi thư viện ảnh”: 29

4.1.4.11 Đặc tả use case “Chỉnh sửa vị trí thứ tự ảnh trong thư viện ảnh”: 30 4.1.4.12 Đặc tả use case “Trả lời câu hỏi”: 32

4.1.4.13 Đặc tả use case “Gửi siêu thích”: 33

4.1.4.14 Đặc tả use case “Xem lại hồ sơ đã ghép đôi”: 34

4.1.4.15 Đặc tả use case “Xem người dùng đã thích bạn”: 35

4.1.4.16 Đặc tả use case “Xem hồ sơ hẹn hò của người dùng được gợi ý”: 36 4.1.4.17 Đặc tả use case “Vuốt thích hoặc không thích hồ sơ hẹn hò đề xuất”: 37 4.1.4.18 Đặc tả use case “Trò chuyện với người ghép đôi”: 38

4.1.4.19 Đặc tả use case “Gọi video”: 39

4.1.4.20 Đặc tả use case “Trò chuyện ẩn danh”: 40

4.1.4.21 Đặc tả use case “Đăng nhập quản trị viên”: 42

4.1.4.22 Đặc tả use case “Xem phân tích”: 43

4.1.4.23 Đặc tả use case “Xem thống kê”: 44

4.1.4.24 Đặc tả use case “Quản lý người dùng”: 45

4.1.4.25 Đặc tả use case “Xem cấu hình ứng dụng”: 46

4.1.4.26 Đặc tả use case “Quản lý sở thích”: 47

4.1.4.27 Đặc tả use case “Quản lý câu hỏi”: 48

4.1.4.28 Đặc tả use case “Quản lý hỏi và đáp”: 50

Trang 8

4.2 Thiết kế cơ sở dữ liệu: 52

4.2.1 Mô hình quan hệ: 52

4.2.2 Mô tả kiểu dữ liệu: 52

4.3 Thiết kế giao diện: 66

4.3.1 Sơ đồ thiết kế giao diện: 66

4.3.2 Danh sách giao diện: 66

4.3.3 Giao diện ứng dụng: 68

4.3.3.1 Giao diện “Đăng ký tài khoản”: 68

4.3.3.2 Giao diện “Nhập mã xác thực”: 69

4.3.3.3 Giao diện “Đăng nhập”: 70

4.3.3.4 Giao diện “Gợi ý hẹn hò”: 71

4.3.3.5 Giao diện “Thông tin cá nhân người người khác”: 72

4.3.3.6 Giao diện “Menu cài đặt thông tin gợi ý”: 73

4.3.3.7 Giao diện “Danh sách người đã ghép đôi”: 74

4.3.3.8 Giao diện “Danh sách những người đã thích bạn”: 75

4.3.3.9 Giao diện “Danh sách cuộc trò chuyện công khai”: 76

4.3.3.10 Giao diện “Cuộc trò chuyện công khai”: 76

4.3.3.11 Giao diện “Thông tin cá nhân”: 78

4.3.3.12 Giao diện “Cập nhật thông tin cá nhân”: 79

4.3.3.13 Giao diện “Quản lý thư viện ảnh”: 80

4.3.3.14 Giao diện “Xem ảnh”: 81

4.3.3.15 Giao diện “Cài đặt ứng dụng”: 82

4.4 Thiết kế kiến trúc: 83

4.4.1 Thiết kế hệ thống: 83

Trang 9

Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 83

5.1 Kết quả đạt được: 83

5.2 Thuận lợi và khó khăn: 84

5.2.1 Thuận lợi: 84

5.2.2 Khó khăn: 84

5.3 Hướng phát triển: 85

Trang 10

DANH MỤC HÌNH

Hình 2.1 Thuật toán K-means clustering 10

Hình 3.1 Khảo sát thị phần hệ điều hành di động 11

Hình 3.2 Logo Tinder 12

Hình 3.3 Logo Facebook hẹn hò 13

Hình 4.1 Sơ đồ Usecase 16

Hình 4.2 Mô hình quan hệ cơ sở dữ liệu 52

Hình 4.3 Sơ đồ thiết kế giao diện 66

Hình 4.4 Màn hình đăng ký 68

Hình 4.5 Màn hình nhập mã xác thực 69

Hình 4.6 Màn hình đăng nhập 70

Hình 4.7 Màn hình trang chủ 71

Hình 4.8 Màn hình trang cá nhân của người khác 72

Hình 4.9 Menu cài đặt thông tin gợi ý 73

Hình 4.10 Màn hình danh sách người đã ghép đôi 74

Hình 4.11 Màn hình danh sách người đã thích bạn 75

Hình 4.12 Màn hình danh sách cuộc trò chuyện công khai 76

Hình 4.13 Màn hình nhắn tin 77

Hình 4.14 Màn hình thông tin cá nhân 78

Hình 4.15 Màn hình chỉnh sửa thông tin cá nhân 79

Hình 4.16 Màn hình quản lý hình ảnh 80

Hình 4.17 Màn hình xem ảnh 81

Hình 4.18 Màn hình cài đặt 82

Hình 4.19 Sơ đồ thiết kế hệ thống 83

Trang 11

DANH MỤC BẢNG

Bảng 4.1 Danh sách actor 16

Bảng 4.2 Danh sách use case 19

Bảng 4.3 Đặc tả use case “Đăng nhập bằng tài khoản Cupizz” 20

Bảng 4.4 Đặc tả use case “Đăng nhập bằng mạng xã hội” 22

Bảng 4.5 Đặc tả use case “Đăng ký” 23

Bảng 4.6 Đặc tả use case: “Quên mật khẩu” 24

Bảng 4.7 Đặc tả use case “Đổi mật khẩu” 25

Bảng 4.8 Đặc tả use case “Chỉnh sửa thông tin cá nhân” 26

Bảng 4.9 Đặc tả use case “Thay đổi ảnh bìa” 27

Bảng 4.10 Đặc tả use case “Thay đổi ảnh đại diện” 28

Bảng 4.11 Đặc tả use case “Thêm ảnh vào thư viện ảnh” 29

Bảng 4.12 Đặc tả use case “Xóa ảnh khỏi thư viện ảnh” 30

Bảng 4.13 Đặc tả use case “Chỉnh sửa vị trí thứ tự ảnh trong thư viện ảnh” 31

Bảng 4.14 Đặc tả use case “Trả lời câu hỏi” 32

Bảng 4.15 Đặc tả use case “Gửi siêu thích” 34

Bảng 4.16 Đặc tả use case “Xem lại hồ sơ đã ghép đôi” 35

Bảng 4.17 Đặc tả use case “Xem người dùng đã thích bạn” 36

Bảng 4.18 Đặc tả use case “Xem hồ sơ hẹn hò của người dùng được gợi ý” 37

Bảng 4.19 Đặc tả use case “Vuốt thích hoặc không thích hồ sơ hẹn hò đề xuất” 38

Bảng 4.20 Đặc tả use case “Trò chuyện với người ghép đôi” 39

Bảng 4.21 Đặc tả use case “Gọi video" 40

Bảng 4.22 Đặc tả use case “Trò chuyện ẩn danh” 41

Bảng 4.23 Đặc tả use case “Đăng nhập quản trị viên” 43

Bảng 4.24 Đặc tả use case “Xem phân tích” 44

Bảng 4.25 Đặc tả use case “Xem thống kê” 44

Bảng 4.26 Đặc tả use case “Quản lý người dùng” 46

Bảng 4.27 Đặc tả use case “Xem cấu hình ứng dụng” 47

Trang 12

Bảng 4.28 Đặc tả use case “Quản lý sở thích” 48

Bảng 4.29 Đặc tả use case “Quản lý câu hỏi” 50

Bảng 4.30 Đặc tả use case “Quản lý hỏi và đáp” 51

Bảng 4.31 Mô tả kiểu dữ liệu bảng User 56

Bảng 4.32 Mô tả kiểu dữ liệu bảng “UserDeviceToken” 56

Bảng 4.33 Mô tả kiểu dữ liệu bảng “Question” 56

Bảng 4.34 Mô tả kiểu dữ liệu bảng “UserAnswer” 57

Bảng 4.35 Mô tả kiểu dữ liệu bảng “UserImage” 57

Bảng 4.36 Mô tả kiểu dữ liệu bảng “SocialProvider” 58

Bảng 4.37 Mô tả kiểu dữ liệu bảng “Friend” 59

Bảng 4.38 Mô tả kiểu dữ liệu bảng “File” 59

Bảng 4.39 Mô tả kiểu dữ liệu bảng “Role” 60

Bảng 4.40 Mô tả kiểu dữ liệu bảng “Conversation” 60

Bảng 4.41 Mô tả kiểu dữ liệu bảng “ConversationMember” 61

Bảng 4.42 Mô tả kiểu dữ liệu bảng “Message” 61

Bảng 4.43 Mô tả kiểu dữ liệu bảng “MessageAttachment” 62

Bảng 4.44 Mô tả kiểu dữ liệu bảng “QnA” 62

Bảng 4.45 Mô tả kiểu dữ liệu bảng “AppConfig” 63

Bảng 4.46 Mô tả kiểu dữ liệu bảng “DislikedUser” 63

Bảng 4.47 Mô tả kiểu dữ liệu bảng “RecommendableUser” 63

Bảng 4.48 Mô tả kiểu dữ liệu bảng “HobbyValue” 64

Bảng 4.49 Mô tả kiểu dữ liệu bảng “Notification” 64

Bảng 4.50 Mô tả kiểu dữ liệu bảng “NotificationReceiver” 64

Bảng 4.51 Mô tả kiểu dữ liệu bảng “HobbyValueToUser” 65

Bảng 4.52 Danh sách giao diện 68

Trang 13

DANH MỤC TỪ VIẾT TẮT

STT Từ viết tắt Nghĩa đầy đủ

1 STT Số thứ tự

2 UI User Interface (giao diện người dùng)

3 UX User Experience (User Experience)

4 API Application Programming Interface

Trang 14

và chức năng cần thiết cho hệ thống

Chương 2: Trình bày các kiến thức nền tảng, các công nghệ và thuật toán ghép đôi cho ứng dụng hẹn hò

Chương 3: Xác định và phân tích yêu cầu của bài toán

Chương 4: Tập trung việc thiết kế và xây dựng hệ thống như: Phân tích thiết kế use case, Thiết kế cơ sở dữ liệu, Thiết kế giao diện và thiết kế kiến trúc

Chương 5: Kết luận, rút ra được các ưu nhược điểm của ứng dụng và hướng phát triển trong tương lai

Trang 15

và nhà phát triển đang bắt đầu các dự án mới trong không gian hẹn hò trên thiết bị

di động Từ hiện trạng trên, nhóm quyết định thực hiện nghiên cứu, tìm hiểu và phát triển một mạng xã hội hẹn hò miễn phí cho tất cả mọi người trên thiết bị di động

1.2 Mục tiêu và phạm vi:

1.2.1 Mục tiêu:

Ứng dụng hẹn hò trực tuyến cho phép người dùng ghép cặp với những người dùng khác trong khu vực, dựa trên nhu cầu và mong muốn của người dùng Người dùng có thể xây dựng một trang cá nhân cung cấp những thông tin cần thiết cho đối phương bao gồm hình ảnh, sở thích, tuổi, chiều cao, … Người dùng có thể chọn ghép đôi bằng cách “vuốt phải” hoặc bình luận vào một hình ảnh của đối phương Sau khi ghép đôi, người dùng sẽ có thể tương tác trực tiếp với bạn đã ghép cặp thông qua tính năng chat của ứng dụng

1.2.2 Phạm vi:

- Phạm vi địa lý: không giới hạn phạm vi

- Phạm vi chức năng:

 Xây dựng thuật toán đề xuất người dùng

 Xây dựng ứng dụng chat realtime, với khả năng bắn thông báo

 Xây dựng web admin quản lý và điều hành dữ liệu ứng dụng

Trang 16

3

1.2.3 Nội dung thực hiện:

- Tìm hiểu, phân tích nghiệp vụ

- Tìm hiểu các công nghệ áp dụng và xây dựng hệ thống

- Thiết kế giao diện, cơ sở dữ liệu, mô hình dự án

- Xây dựng các Backend và Mobile App

- Triển khai hệ thống và xuất bản ứng dụng

- Xây dựng các biểu đồ đánh giá dữ liệu

1.2.4 Kết quả dự kiến:

Áp dụng tất cả kiến thức tìm hiểu được xây dựng ứng dụng mạng hẹn hò với các tính năng chính:

 Đăng nhập bằng email và mạng xã hội

 Trượt qua để thích hoặc không thích đối tượng

 Gửi siêu thích

 Ghép đôi

 Đặt câu hỏi

 Trò chuyện

 Xem lại lần nữa (Second lock)

 Trò chuyện đính kèm hình ảnh hồ sơ của người khác

 Gửi thông báo cho người dùng

 Hồ sơ (tuổi, khoảng cách, sở thích, giới tính, dòng giới thiệu)

Đưa ứng dụng lên chợ ứng dụng Nhằm tạo ra một cơ hội tốt cho tất cả mọi người để sử dụng ứng dụng nhằm cho phép tất cả mọi người thuận tiện gặp gỡ

và kết nối với những người cùng chí hướng, cải thiện đáng kể cuộc sống hẹn hò của họ và làm giảm bớt cảm giác cô đơn, đặc biệt là trong đại dịch phức tạp như hiện nay

Trang 17

dữ liệu chạy trên các thiết bị phân tán

Node.js một mã nguồn mở, đa nền tảng thời gian chạy môi trường để phát triển các ứng dụng phía máy chủ và mạng Node.js ứng dụng được viết bằng JavaScript, và có thể được chạy trong thời gian chạy Node.js trên OS X, Microsoft Windows và Linux

Node.js cung cấp một thư viện phong phú các mô-đun JavaScript khác nhau giúp đơn giản hóa sự phát triển của các ứng dụng web bằng cách sử dụng Node.js ở một mức độ lớn

2.2 Typescript:

TypeScript là một ngôn ngữ lập trình được phát triển và duy trì bởi Microsoft Nó là một tập hợp siêu cú pháp nghiêm ngặt của JavaScript và thêm tính năng kiểu tĩnh tùy chọn vào ngôn ngữ TypeScript được thiết kế để phát triển các ứng dụng lớn và chuyển đổi sang JavaScript Vì TypeScript là một siêu tập hợp JavaScript, các chương trình JavaScript hiện có cũng là các chương trình TypeScript hợp lệ

Trang 18

5

TypeScript có thể được sử dụng để phát triển các ứng dụng JavaScript cho

cả thực thi phía máy khách và phía máy chủ (như với Node.js hoặc Deno) Có nhiều tùy chọn có sẵn để biên dịch Có thể sử dụng Trình kiểm tra TypeScript mặc định, hoặc có thể sử dụng trình biên dịch Babel để chuyển đổi TypeScript sang JavaScript

TypeScript hỗ trợ các tệp định nghĩa có thể chứa thông tin kiểu của các thư viện JavaScript hiện có, giống như tệp tiêu đề C ++ có thể mô tả cấu trúc của tệp đối tượng hiện có Điều này cho phép các chương trình khác sử dụng các giá trị được xác định trong tệp như thể chúng là các thực thể TypeScript được nhập tĩnh Có các tệp tiêu đề của bên thứ ba cho các thư viện phổ biến như jQuery, MongoDB và D3.js Tiêu đề TypeScript cho các mô-đun cơ bản của Node.js cũng

có sẵn, cho phép phát triển các chương trình Node.js trong TypeScript

2.3 GraphQL:

GraphQL là ngôn ngữ thao tác và truy vấn dữ liệu nguồn mở cho API, cung cấp cho client 1 cách thức dễ dàng để request chính xác những gì họ cần, giúp việc phát triển API dễ dàng hơn theo thời gian GraphQL được Facebook phát triển nội bộ vào năm 2012 trước khi phát hành công khai vào năm 2015

GraphQL bao gồm 3 điểm đặc trưng bao gồm:

 Cho phép client xác định chính xác những dữ liệu gì họ cần

 GraphQL làm cho việc tổng hợp dữ liệu từ nhiều nguồn dễ dàng hơn

 Sử dụng một type system để khai báo dữ liệu

2.4 Flutter:

Flutter là một khung giao diện người dùng di động miễn phí và mã nguồn

mở do Google tạo ra và phát hành vào tháng 5 năm 2017 Trong một vài từ, nó cho phép bạn tạo một ứng dụng di động gốc chỉ với một codebase Điều này có

Trang 19

6

nghĩa là bạn có thể sử dụng một ngôn ngữ lập trình và một cơ sở mã để tạo hai ứng dụng khác nhau (cho iOS và Android)

Flutter bao gồm hai phần quan trọng:

 SDK (Bộ công cụ phát triển phần mềm): Một bộ sưu tập các công cụ sẽ giúp bạn phát triển các ứng dụng của mình Điều này bao gồm các công

cụ để biên dịch mã của bạn thành mã máy gốc (mã cho iOS và Android)

 Framework (Ui Library based on widgets): Một tập hợp các yếu tố giao diện người dùng có thể tái sử dụng (nút, đầu vào văn bản, thanh trượt, v.v.) mà bạn có thể cá nhân hóa cho nhu cầu của riêng mình

Để phát triển với Flutter, sẽ sử dụng một ngôn ngữ lập trình gọi là Dart Ngôn ngữ này được tạo ra bởi Google vào tháng 10 năm 2011, nhưng nó đã được cải thiện rất nhiều trong những năm qua

Dart tập trung vào phát triển front-end, và có thể sử dụng nó để tạo ra các ứng dụng di động và web

2.5 PostgreSQL:

PostgreSQL là một hệ thống cơ sở dữ liệu quan hệ đối tượng mã nguồn mở mạnh mẽ sử dụng và mở rộng ngôn ngữ SQL kết hợp với nhiều tính năng lưu trữ an toàn và mở rộng khối lượng công việc dữ liệu phức tạp nhất

PostgreSQL đã giành được danh tiếng mạnh mẽ về kiến trúc đã được chứng minh, độ tin cậy, tính toàn vẹn dữ liệu, bộ tính năng mạnh mẽ, khả năng mở rộng và sự cống hiến của cộng đồng mã nguồn mở đằng sau phần mềm để liên tục cung cấp các giải pháp hiệu quả và sáng tạo PostgreSQL chạy trên tất cả các

hệ điều hành chính, đã tuân thủ ACID từ năm 2001 và có các tiện ích mạnh mẽ như trình mở rộng cơ sở dữ liệu không gian địa lý PostGIS phổ biến Không có

gì ngạc nhiên khi PostgreSQL đã trở thành cơ sở dữ liệu quan hệ mã nguồn mở được nhiều người và tổ chức lựa chọn

Trang 20

7

2.6 Redis:

Redis là một mã nguồn mở (BSD cấp phép), lưu trữ cấu trúc dữ liệu trong bộ nhớ, được sử dụng như một cơ sở dữ liệu, bộ nhớ cache, và môi giới tin nhắn Redis cung cấp các cấu trúc dữ liệu như chuỗi, băm, danh sách, tập hợp, tập hợp được sắp xếp với các truy vấn phạm vi, bitmap, hyperloglog, chỉ mục không gian địa lý và luồng

Redis đã được xây dựng trong nhân rộng, Lua kịch bản, LRU đuổi, giao dịch,

và các cấp độ khác nhau của sự kiên trì trên đĩa, và cung cấp tính sẵn sàng cao thông qua Redis Sentinel và phân vùng tự động với Redis Cluster

2.7 MongoDB:

MongoDB là một chương trình quản lý cơ sở dữ liệu NoSQL mã nguồn mở NoSQL được sử dụng như là một thay thế cho cơ sở dữ liệu quan hệ truyền thống Cơ sở dữ liệu NoSQL khá hữu ích để làm việc với các bộ dữ liệu phân tán lớn MongoDB là một công cụ có thể quản lý thông tin theo định hướng tài liệu, lưu trữ hoặc truy xuất thông tin

MongoDB hỗ trợ các hình thức dữ liệu khác nhau Đây là một trong nhiều công nghệ cơ sở dữ liệu không liên quan phát sinh vào giữa những năm 2000 dưới biểu ngữ NoSQL - thông thường, để sử dụng trong các ứng dụng dữ liệu lớn và các công việc xử lý khác liên quan đến dữ liệu không phù hợp tốt trong một mô hình quan hệ cứng nhắc Thay vì sử dụng các bảng và hàng như trong

cơ sở dữ liệu quan hệ,kiến trúc MongoDB được tạo thành từ các bộ sưu tập và tài liệu

2.8 FastAPI:

FastAPI là một khung web hiện đại, nhanh chóng (hiệu suất cao), để xây dựng API với Python 3.6+ dựa trên các gợi ý loại Python tiêu chuẩn Các tính

Trang 21

8

năng chính là: Nhanh: Hiệu suất rất cao, ngang bằng với NodeJS và Go (nhờ Starlette và Pydantic) Một trong những framework Python nhanh nhất hiện có Các tính năng chính là:

 Nhanh hiệu suất rất cao, ngang bằng với NodeJS và Go (nhờ Starlette và Pydantic) Một trong những framework Python nhanh nhất hiện có

 Fast to code: Tăng tốc độ phát triển các tính năng khoảng 200% đến 300% *

 Ít lỗi hơn: Giảm khoảng 40% lỗi do con người (nhà phát triển) gây ra *

 Trực quan: Hỗ trợ biên tập viên tuyệt vời Hoàn thành ở khắp mọi nơi Ít thời gian gỡ lỗi hơn

 Dễ dàng: Được thiết kế để dễ sử dụng và học hỏi Ít thời gian đọc tài liệu hơn

 Ngắn: Giảm thiểu trùng lặp mã Nhiều tính năng từ mỗi khai báo tham số

Ít lỗi hơn

 Mạnh mẽ: Lấy mã sẵn sàng sản xuất Với tài liệu tương tác tự động

 Dựa trên tiêu chuẩn: Dựa trên (và hoàn toàn tương thích với) các tiêu chuẩn mở cho các API: OpenAPI (trước đây gọi là Swagger) và JSON Schema

2.9 Ant Design Pro:

Ant Design Pro là một giải pháp sẵn sàng sản xuất cho các giao diện quản trị Được xây dựng trên các nguyên tắc thiết kế được phát triển bởi Ant Design, dự

án này giới thiệu các thành phần cấp cao hơn; chúng tôi đã phát triển các mẫu, thành phần và bộ thiết kế tương ứng để cải thiện trải nghiệm người dùng và phát triển cho các giao diện quản trị

Trang 22

9

2.10 Thuật toán ghép đôi:

2.10.1 Thuật toán phân nhóm (clustering):

2.10.1.2 Hướng áp dụng:

Trong ứng dụng hẹn hò việc sử dụng bài toán phân cụm để phân loại từng

hồ so người dùng như một lớp cụ thể và sẽ khớp với những hồ sơ khác chung cùng một lớp Chúng ta sẽ phân nhóm hồ sơ người dùng dựa trên hồ sơ hẹn hò của họ và hiển thị những hồ sơ hẹn khác gần giống với hồ sơ hẹn của họ

Bằng cách sử dụng thuật toán phân cụm như là một phương pháp mai mối,

về mặt lý thuyết chúng ta có thể loại bỏ được các hồ sơ gạ gẫm bởi vì những hồ

sơ này sẽ phù hợp với nhau Chúng ta sẽ phân nhóm dựa trên nội dung hồ sơ hẹn hò hơn là theo hình ảnh Triết lý tổng thể đằng sau khái niệm này là mọi người có nhiều khả năng yêu một người tương đồng với mình hơn là đối lập với họ Khi người dùng đã được nhóm với các hồ sơ khác tương tự như họ, thì

họ sẽ được hiển thị các hồ sơ hẹn hò khác trong cùng một nhóm với hình ảnh

và tất cả thông tin cá nhân khác

2.10.1.3 Thuật toán K-means clustering:

Phân cụm k-means là 1 phương pháp lượng tử hóa vector dùng để phân các điểm dữ liệu cho trước vào các cụm khác nhau Phân cụm k-means có nhiều ứng dụng, nhưng được sử dụng nhiều nhất trong Trí tuệ nhân tạo và Học máy

Một trong những thuật toán cơ bản nhất trong Unsupervised Learning

Trang 23

10

Ý tưởng đơn giản nhất về cluster (cụm) là tập hợp các điểm ở gần nhau trong

một không gian nào đó (không gian này có thể có rất nhiều chiều trong trường hợp

thông tin về một điểm dữ liệu là rất lớn) Hình bên dưới là một ví dụ về 3 cụm dữ

liệu

Hình 2.1 Thuật toán K-means clustering Giả sử mỗi cluster có một điểm đại diện (center) màu vàng Và những điểm

xung quanh mỗi center thuộc vào cùng nhóm với center đó Một cách đơn giản

nhất, xét một điểm bất kỳ, ta xét xem điểm đó gần với center nào nhất thì nó thuộc

về cùng nhóm với center đó

Trang 24

- Phần mềm: Tại thị trường di động Việt Nam, báo cáo của Appota chỉ ra rằng, Android đang chiếm ưu thế hơn với hơn 60% thị phần (năm 2020)

Hình 3.1 Khảo sát thị phần hệ điều hành di động

Trang 25

12

3.1.2 Các ứng dụng liên quan:

3.1.2.1 Tinder:

Hình 3.2 Logo Tinder Tinder là ứng dụng di động tìm kiếm xã hội dựa trên vị trí và ứng dụng Web thường được sử dụng làm dịch vụ hẹn hò trực tuyến, cho phép người dùng sử dụng chuyển động vuốt để thích hoặc không thích và cho phép người dùng trò chuyện nếu cả hai bên đều thích nhau

Ưu điểm:

- Các tính năng miễn phí:

 Vuốt để thích hoặc không thích

 Nhắn tin với người đang hẹn hò

 Swipe Surge: Thông báo cho người dùng khi mức sử dụng Tinder tăng đột biến ở khu vực của họ

 Chế độ lễ hội: mang đến cho người dùng cơ hội kết hợp với những người dùng khác quan tâm đến việc tham dự các sự kiện sắp tới

 Ảnh thông minh: Khi bật tính năng này, Tinder sẽ ghi lại số lần vuốt phải, trái mà mỗi người dùng nhận được khi nó ở vị trí chính Từ đó Tinder sẽ hiển thị bức ảnh tốt nhất của bạn vị trí chính

- Số lượng người dùng đông đảo tại Việt Nam

- Tính năng Super Like: Nếu bạn đang thầm yêu một ai đó, bạn có thể “Gửi siêu thích” cho họ Khi người đó xem hồ sơ của bạn trong nguồn cấp dữ liệu

Trang 26

13

đối sánh của họ, họ sẽ thấy thông báo Siêu thích Nếu họ ghép đôi với bạn, bạn sẽ thấy một ngôi sao màu xanh lam bên cạnh tên của họ trong chế độ xem tin nhắn của bạn Người dùng miễn phí nhận được một Super Like mỗi ngày, trong khi người dùng cao cấp nhận được 5

- Giới hạn số lượng thích trong 12h, phải trả phí để tăng số lượng vuốt

- Phải mua thêm các gói để trải nghiệm tốt hơn

- Có quảng cáo trong ứng dụng

3.1.2.2 Facebook hẹn hò:

Hình 3.3 Logo Facebook hẹn hò Facebook Dating là một sản phẩm hẹn hò kỹ thuật số do Facebook phát triển Một không gian trong Facebook giúp bạn dễ dàng gặp gỡ và bắt đầu các cuộc trò chuyện mới với những người có cùng sở thích với người dùng

Ưu điểm:

- Tất cả các tính năng đều miễn phí

- Thừa hưởng được lượng người dùng khổng lồ từ ứng dụng Facebook

Trang 27

14

- Không cần cài đặt thêm ứng dụng khác có vì tích hợp sẵn trong ứng dụng Facebook

- Hồ sơ Facebook và Facebook Dating là riêng biệt

- Có 20 câu hỏi cá nhân mà bạn có thể trả lời

- Có thể tải lên ảnh về hồ sơ Hẹn hò đã có trên chính tài khoản Facebook

- Tập trung vào vị của người dùng, trong phạm vi 100 km

- Có tính năng "Secret Crush" cho phép bạn duy trì danh sách lên đến 9 người bạn trên Facebook hoặc người theo dõi Instagram mà bạn muốn hẹn hò nếu bạn biết họ cũng cảm thấy như vậy

- Tính năng Spark: Gần đây Facebook ra mắt tính Spark, tính năng khá tương

tự như “Super Like” của Tinder nhưng giới hạn mỗi 3 lượt và không thể mua thêm lượt

Nhược điểm:

- Chỉ được trò chuyện bằng tin nhắn văn bản

- Không có thao tác vuốt không giống như các ứng dụng hẹn hò khác

- Không thể truy cập bằng máy tính

- Độ phổ biến không bằng so với Tinder

3.2 Các yêu cầu:

3.2.1 Các yêu cầu chức năng:

3.2.1.1 Yêu cầu lưu trữ:

Hệ thống cần lưu trữ thông tin các khách hàng, thông tin đăng nhập, thông tin hoạt hoạt động người dùng, các cuộc trò chuyện

3.2.1.2 Yêu cầu tính toán:

- Tính khoảng cách: hệ thống tính khoảng cách giữa những người dùng với nhau giữa trên thông tin vị trí người dùng cung cấp

- Tính toán tuổi: hệ thống tính tuổi người dùng dựa trên ngày sinh của người dùng cung cấp

Trang 28

15

3.2.1.3 Yêu cầu tra cứu:

- Tra cứu thông tin khách hàng: Được thực hiện khi quản trị viên muốn biết thông tin của nhân viên Tra cứu dựa trên các tiêu chí:

 Mã người dùng

 Tên người dùng

3.2.1.4 Yêu cầu thống kê, tổng hợp:

- Thống kê lượng người dùng truy cập:

 Thời gian sử dụng ứng dụng trung bình mỗi người

 Những hoạt động mà người dùng thường xuyên sử dụng như nhắn tin, thao tác vuốt để thích hoặc không thích, xem hồ sơ người dùng khác

- Thống kê lượt thích:

 Người dùng có lượt thích nhiều nhất

 Người dùng có lượt siêu thích nhiều nhất

 Người dùng có lượt không thích nhiều nhất

 Lượt thả thích hoặc không thích trung bình mỗi ngày

Trang 29

STT Tên Actor Ý nghĩa/Ghi chú

1 Quản trị viên Quản trị viên hệ thống

2 Người dùng Người sử dụng ứng dụng hẹn hò

Bảng 4.1 Danh sách actor 4.1.3 Danh sách các use case:

STT Tên Use-case Ý nghĩa/Ghi chú

1 Đặng nhập bằng tài khoản Người dùng đăng nhập vào app bằng tài khoản

Trang 30

3 Quên mật khẩu Thay đổi mật khẩu mới tài khoản của người

dùng khi người dùng không nhớ mật khẩu cũ

4 Đăng ký tài khoản Người dùng đăng ký tài khoản Cupizz

5 Vuốt để thích hoặc không

thích hồ sơ hẹn hò đề xuất

Người dùng lựa chọn người bạn phù hợp để hẹn hò

6 Gửi siêu thích Người dùng lượt siêu thích mình để gửi siêu

thích đến hồ sơ hẹn hò được gợi ý

7 Xem hồ sơ hẹn hò Người dùng xem thông tin hồ sơ hẹn hò khi lựa

12 Trò chuyện ẩn danh Người dùng có thể trò chuyện ẩn danh với

người dùng ngẫu nhiên trên ứng dụng

13 Thay đổi ảnh bìa Người dùng có thể thay đổi ảnh bìa của mình

Trang 31

18

14 Cập nhật kho ảnh Người dùng có thể cập nhật kho ảnh như thêm,

xóa, thay đổi vị trí của ảnh

15 Thay đổi ảnh đại diện Người dùng thay đổi ảnh đại diện cho trang hồ

18 Đổi mật khẩu Người dùng cập nhật mật khẩu mới

19 Đăng nhập quản trị viên Quản trị viên đăng nhập vào trang Quản trị

20 Xem phân tích dữ liệu Quản trị viên xem phân tích dữ liệu từ hệ thống

23 Xem hồ sơ người dùng Quản trị viên xem hồ sơ người dùng

24 Thay đổi trạng thái hoạt

động của người dùng

Quản trị viên thay đổi trạng thái hoạt động của tài khoản dùng là kích hoạt hoặc hủy kích hoạt

25 Gửi thông báo Quản trị viên có thể gửi thông báo đến tất cả

người dùng đang trạng thái kích hoạt

26 Quản lý hệ thống Quản trị viên có thể quản lý thông tin của hệ

Trang 32

19

28 Quản lý sở thích Quản trị viên có thể xem, sửa, xóa thông tin

danh sách sở thích của hệ thống

29 Quản lý câu hỏi Quản trị viên có thể xem, sửa, xóa danh sách

câu hỏi của hệ thống

30 Quản lý hỏi đáp Quản trị viên có thể xem, sửa, xóa danh sách

các hỏi đáp về ứng dụng Bảng 4.2 Danh sách use case 4.1.4 Đặc tả use case:

4.1.4.1 Đặc tả use case “Đăng nhập bằng tài khoản Cupizz”: Use case Nội dung

Tên use case Đăng nhập bằng tài khoản Cupizz

Mô tả Use case cho phép người dùng đăng

nhập vào ứng dụng để thực hiện chức năng của mình

Tiền điều kiện Người dùng phải có tài khoản trên hệ

thống Hậu điều kiện Người dùng đăng nhập thành công Luồng sự kiện chính 1 Ứng dụng hiển thị màn hình đăng

Trang 33

1 Hệ thống hiển thị ra thông báo nhỏ ở phía dưới ô nhập mật khẩu

là mật khẩu không đúng định dạng

2 Quay lại bước 2 trong luồng sự kiện chính

A2 – Đăng nhập thất bại: khi người dùng nhập sai tên đăng nhập hoặc mật khẩu

1 Hệ thống hiển thị lại màn hình đăng nhập để người dùng nhập lại thông tin kèm theo thông báo tên đăng nhập và mật khẩu không chính xác

2 Quay lại bước 2 luồng sự kiện chính

Bảng 4.3 Đặc tả use case “Đăng nhập bằng tài khoản Cupizz”

4.1.4.2 Đặc tả use case “Đăng nhập bằng mạng xã hội”:

Use case Nội dung

Tên use case Đăng nhập bằng mạng xã hội

Trang 34

21

Mô tả Use case cho phép người dùng đăng

nhập vào ứng dụng bằng tài khoản mạng

xã hội như Google, Facebook để thực hiện chức năng của mình

Tiền điều kiện Người dùng phải có tài khoản mạng xã

hội Hậu điều kiện Người dùng đăng nhập thành công Luồng sự kiện chính 1 Ứng dụng hiển thị màn hình đăng

nhập

2 Người dùng nhập chọn mạng xã hội cần đăng nhập

3 Ứng chuyển qua thức xác thực tương ứng của mạng xã hội

4 Ứng dụng gửi thông tin đăng nhập mạng xã hội lên hệ thống

5 Hệ thống kiểm tra thông tin đăng nhập có tồn tại trong hệ thống hay không, nếu không sẽ tạo tài khoản mới theo thông tin ứng dụng gửi lên

6 Ứng chuyển sang màn hình chủ

7 Use case kết thúc

Luồng sự kiện phụ A1- Đăng nhập phương thức chứng thực

của mạng xã hội thất bại:

1 Hệ thống hiển thị lại màn hình đăng nhập để người dùng chọn lại phương thức xác thực mạng xã

Trang 35

22

hội

2 Quay lại bước 2 luồng sự kiện chính

Bảng 4.4 Đặc tả use case “Đăng nhập bằng mạng xã hội”

4.1.4.3 Đặc tả use case “Đăng ký”:

Use case Nội dung

Tên use case Đăng ký

Mô tả Use case cho phép người dùng đăng ký

tài khoản

Tiền điều kiện Người dùng bắt đầu sử dụng ứng dụng,

chưa đăng ký tài khoản ứng dụng

Hậu điều kiện Người dùng đăng ký tài khoản thành

công Luồng sự kiện chính 1 Mở ứng dụng

2 Người bấm chọn màn hình đăng ký

3 Ứng chuyển qua màn hình đăng ký

4 Người dùng nhập tên,email và mật khẩu

5 Hệ thống kiểm tra thông tin đăng nhập có tồn tại trong hệ thống hay không, nếu không sẽ tạo tài khoản mới theo thông tin ứng dụng gửi lên

6 Ứng chuyển sang màn hình chủ

7 Use case kết thúc

Luồng sự kiện phụ A1- Đăng nhập phương thức chứng thực

Trang 36

23

của mạng xã hội thất bại:

3 Hệ thống hiển thị lại màn hình đăng nhập để người dùng chọn lại phương thức xác thực mạng xã hội

4 Quay lại bước 2 luồng sự kiện chính

Bảng 4.5 Đặc tả use case “Đăng ký”

4.1.4.4 Đặc tả use case: “Quên mật khẩu”:

Use case Nội dung

Tên use case Quên mật khẩu

Mô tả Use case cho phép người dùng đổi lại

mật khẩu mới khi không nhớ mật khẩu

mật khẩu và nhập email đã đăng ký

2 Hệ thống gửi OTP code về email đã đăng ký đồng thời hiển thị màn hình nhập code OTP

3 Nhập mã code

4 Di chuyển đến màn hình thay đổi mật khẩu

Trang 37

Luồng sự kiện phụ Không có

Bảng 4.6 Đặc tả use case: “Quên mật khẩu”

4.1.4.5 Đặc tả use case “Đổi mật khẩu”:

Use case Nội dung

Tên use case Đổi mật khẩu

Mô tả Use case cho phép người dùng đổi lại

mật khẩu mới khi không nhớ mật khẩu

Điều kiện kích hoạt Người dùng đã đăng nhập, đang ở màn

hình Tài khoản và có ý định thay đổi mật khẩu

Tiền điều kiện Người dùng đã đăng nhập, đang ở màn

hình Tài khoản

Hậu điều kiện Người dùng đổi mật khẩu mới thành

công

Luồng sự kiện chính 1 Ở màn hình thông tin cá nhân, chọn

Cài đặt/Đổi mật khẩu

2 Hiển thị màn hình đổi mật khẩu

Trang 38

25

3 Người dùng nhập mật khẩu cũ, mật khẩu mới và nhập lại mật khẩu mới rồi bấm Thay đổi mật khẩu

4 Hệ thống lưu lại mật khẩu mới người dùng

5 Thông báo thay đổi mật khẩu thành công, quay về màn hình Đăng nhập Luồng sự kiện phụ Không có

Bảng 4.7 Đặc tả use case “Đổi mật khẩu”

4.1.4.6 Đặc tả use case “Chỉnh sửa thông tin cá nhân”:

Use case Nội dung

Tên use case Chỉnh sửa thông tin cá nhân

Mô tả Use case cho phép người dùng thay đổi

thông tin cá nhân

Điều kiện kích hoạt Người dùng đã đăng nhập, đang ở màn

hình Tài khoản và có ý định thay đổi thông tin cá nhân

Tiền điều kiện Người dùng đã đăng nhập, đang ở màn

hình Tài khoản

Hậu điều kiện Người dùng cập nhật thông tin cá nhân

mới thành công

Luồng sự kiện chính 1 Ở màn hình thông tin cá nhân, chọn

chỉnh sửa thông tin

2 Hiển thị màn hình chỉnh sửa thông tin

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

Trang 39

6 Use case kết thúc

Luồng sự kiện phụ Không có

Bảng 4.8 Đặc tả use case “Chỉnh sửa thông tin cá nhân”

4.1.4.7 Đặc tả use case “Thay đổi ảnh bìa”:

Use case Nội dung

Tên use case Thay đổi ảnh bìa

Mô tả Use case cho phép người dùng thay đổi

ảnh bìa

Điều kiện kích hoạt Người dùng đã đăng nhập, đang ở màn

hình Tài khoản và có ý định thay đổi ảnh bìa

Tiền điều kiện Người dùng đã đăng nhập, đang ở màn

Trang 40

27

3 Người dùng đổi ảnh bìa:

- 3.1 Người dùng chọn ảnh cần cập nhật rồi bấm chọn ảnh

- 3.2 Người dùng chụp một bức ảnh mới rồi bấm đồng ý

4 Người dùng chỉnh sửa lại hình ảnh và bấm nút Cập nhật

5 Hệ thống lưu lại ảnh bìa mới người dùng

6 Quay về màn hình Thông tin cá nhân

và hiển thị ảnh bìa mới của người dùng vừa cập nhật

7 Use case kết thúc

Luồng sự kiện phụ Không có

Bảng 4.9 Đặc tả use case “Thay đổi ảnh bìa”

4.1.4.8 Đặc tả use-case “Thay đổi ảnh đại diện”:

Use case Nội dung

Tên use case Thay đổi ảnh đại diện

Mô tả Use case cho phép người dùng thay đổi

Ngày đăng: 05/09/2021, 20:51

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

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

w