Tải bản đầy đủ (.pdf) (99 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.6 MB, 99 trang )

ĐẠ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


ĐẠ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


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.


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ể
hồn thành Khóa luận tốt nghiệp của mình.
Xin chân thành cảm ơn q 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.
Ngồ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ừ q 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


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 tốn ghép đơi: ..................................................................................................... 9

2.10.1.

Thuật tố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


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


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


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


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


DANH MỤC HÌNH
Hình 2.1 Thuật tố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



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



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


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


TĨM TẮT KHĨA LUẬN

Khóa luận “XÂY DỰNG MẠNG XÃ HỘI HẸN HÒ TRỰC TUYẾN” gồm 05
chương:
Chương 1: Tổng quan đề tài: đặt vấn đề, lý do chọn đề tài, mục tiêu và phạm vi tiếp
cận đề tài. Tìm hiểu thực tế các ứng dụng hẹn hị có sẵn, từ đó đưa ra những yêu cầu
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 tốn ghép đơi
cho ứng dụng hẹn hị.
Chương 3: Xác định và phân tích 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.

1


Chương 1. TỔNG QUAN ĐỀ TÀI
1.1. Đặt vấn đề:
Trong vài năm trở lại đây, các ứng dụng hẹn hò đã tạo ra một cuộc cách mạng
trực tuyến cùng với việc sử dụng các thiết bị động ngày càng tăng, đã thay đổi cách
mọi người làm quen và hẹn hò với nhau. Hẹn hò trực tuyến nhanh hơn và thuận tiện
hơn so với hẹn hò truyền thống, đồng thời mang đến nhiều sự lựa chọn hơn cho
người dùng. Khi số lượng các ứng dụng hẹn hò ngày càng tăng, nhiều doanh nhân
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.

2


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.

3


Chương 2. CƠ SỞ LÝ THUYẾT
2.1. Node.js:
Node.js một nền tảng phía máy chủ được xây dựng trên JavaScript Engine
(V8 Engine) của Google Chrome. Node.js phát triển bởi Ryan Dahl vào năm
2009 và phiên bản mới nhất của nó là v0.10.36. Định nghĩa của Node.js cung
cấp bởi tài liệu chính thức của nó như sau:
Node.js một nền tảng được xây dựng trên thời gian chạy JavaScript của
Chrome để dễ dàng xây dựng các ứng dụng mạng nhanh chóng và có thể mở
rộng. Node.js sử dụng mơ hình I/O định hướng sự kiện, khơng chặn giúp mơ
hình này nhẹ và hiệu quả, hoàn hảo cho các ứng dụng thời gian thực tốn nhiều
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ệ.

4


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ó

5


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 tồ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 tồ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.

6


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


7


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. Hồ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à hồn tồ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ị.

8



2.10. Thuật tốn ghép đơi:
2.10.1.Thuật tốn phân nhóm (clustering):
2.10.1.1. Tổng quan:
Phân cụm là nhiệm vụ chia người dùng hoặc điểm dữ liệu thành một số
nhóm sao cho các điểm dữ liệu trong cùng một nhóm tương tự như các điểm
dữ liệu khác trong cùng một nhóm so với các nhóm khác. Nói một cách đơn
giản, mục đích là để tách biệt các nhóm có đặc điểm tương tự và gán chúng
thành các cụm.
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 tố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.

9



Ý 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 tố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 đó.

10


Chương 3. XÁC ĐỊNH VÀ PHÂN TÍCH YÊU CẦU
3.1. Khảo sát hiện trạng:
3.1.1. Hiện trạng tin học (phần cứng, phần mềm):
-

Phần cứng: Về thị trường di động, tại Việt Nam, tỷ lệ sử dụng điện di động
chiếm đến 70% dân số, trong đó, tỷ lệ người sử dụng smartphone chiếm 45%
xếp hạng 15 trên thế giới (năm 2020).

-

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

11


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

12


×