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

Xây dựng hệ thống tìm kiếm gia sư trực tuyến

174 19 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

Định dạng
Số trang 174
Dung lượng 5,45 MB

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

Nội dung

Để hoàn thành khóa luận này, chúng em xin gửi lời cảm ơn chân thành đến: Ban Giám hiệu trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM vì đã tạo điều kiện về cơ sở vật chất với hệ thống

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

NGUYỄN TRỌNG KHANH - 17520627

PHAN ANH TÚ - 17521204

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

XÂY DỰNG HỆ THỐNG GIA SƯ TRỰC TUYẾN

Building Online Tutor Application

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

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

NGUYỄN TRỌNG KHANH - 17520627

PHAN ANH TÚ - 17521204

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

XÂY DỰNG HỆ THỐNG GIA SƯ TRỰC TUYẾN

Building Online Tutor Application

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

GIẢNG VIÊN HƯỚNG DẪN Tiến sĩ Trần Sơn Hải Thạc sĩ Huỳnh Nguyễn Khắc Huy

TP HỒ CHÍ MINH, 2021

Trang 3

DANH SÁCH HỘI ĐỒNG BẢO VỆ KHÓA LUẬN

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

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

TRƯỜNG ĐẠI HỌC

CÔNG NGHỆ THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc Lập - Tự Do - Hạnh Phúc

TP HCM, ngày… tháng… năm 2021

NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP(CỦA CÁN BỘ HƯỚNG DẪN)

Tên khóa luận:

XÂY DỰNG HỆ THỐNG GIA SƯ TRỰC TUYẾN (Tên tiếng Anh: BUILDING ONLINE TUTOR APPLICATION) Nhóm SV thực hiện: Cán bộ hướng dẫn:

Đánh giá Khóa luận

1 Về cuốn báo cáo:

Số trang 154 Số chương 4

Số bảng số liệu 53 _ Số hình vẽ 29 _

Số tài liệu tham khảo 11 _ Sản phẩm 1

Một số nhận xét về hình thức cuốn báo cáo:

Trang 6

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

TRƯỜNG ĐẠI HỌC

CÔNG NGHỆ THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc Lập - Tự Do - Hạnh Phúc

TP HCM, ngày… tháng… năm 2021

NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP(CỦA CÁN BỘ PHẢN BIỆN)

Tên khóa luận:

XÂY DỰNG HỆ THỐNG GIA SƯ TRỰC TUYẾN (Tên tiếng Anh: BUILDING ONLINE TUTOR APPLICATION) Nhóm SV thực hiện: Cán bộ phản biện:

Đánh giá Khóa luận

5 Về cuốn báo cáo:

Số trang 154 Số chương 4

Số bảng số liệu 53 _ Số hình vẽ 29 _

Số tài liệu tham khảo 11 _ Sản phẩm 1

Một số nhận xét về hình thức cuốn báo cáo:

Trang 8

LỜI CẢM ƠN

Sau quá trình học tập và rèn luyện tại khoa Công nghệ phần mềm trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM chúng 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

Để hoàn thành khóa luận này, chúng em xin gửi lời cảm ơn chân thành đến:

Ban Giám hiệu trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM vì đã tạo điều kiện về cơ sở vật chất với hệ thống thư viện hiện đại, đa dạng các loại sách, tài liệu thuận lợi cho việc tìm kiếm, nghiên cứu thông tin

Chúng em xin gửi lời cảm ơn chân thành đến thầy Trần Sơn Hải và thầy Huỳnh Nguyễn Khắc Huy đã tận tình giúp đỡ, định hướng cách tư duy và cách làm việc

khoa học Đó là những góp ý hết sức quý báu không chỉ trong quá trình thực hiện luận văn này mà còn là hành trang tiếp bước cho chúng em trong quá trình học tập và lập nghiệp sau này

Và cuối cùng, chúng em xin gửi lời cảm ơn đến gia đình, tất cả thầy cô trong khoa, bạn bè là những người luôn sẵn sàng sẻ chia và giúp đỡ trong học tập và cuộc sống Mong rằng, chúng ta sẽ mãi mãi gắn bó với nhau

Trong quá trình làm khóa luận này chúng em không tránh khỏi được những sai sót, chúng em kính mong nhận được sự chỉ dẫn và góp ý của quý thầy cô để khóa luận được hoàn thiện hơn

Chúng em xin chân thành cảm ơn Xin chúc những điều tốt đẹp nhất sẽ luôn đồng hành cùng mọi người

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

Sinh viên

Trang 9

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

TRƯỜNG ĐẠI HỌC

CÔNG NGHỆ THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc Lập - Tự Do - Hạnh Phúc

ĐỀ CƯƠNG CHI TIẾT

TÊN ĐỀ TÀI: Xây dựng hệ thống tìm kiếm gia sư trực tuyến

Cán bộ hướng dẫn: TS Trần Sơn Hải, ThS Huỳnh Nguyễn Khắc Huy

Thời gian thực hiện:Từ ngày…01/03/2021………… đến ngày…26/06/2021…………

Sinh viên thực hiện:

Nguyễn Trọng Khanh - 175206271

Phan Anh Tú – 17521204

Nội dung đề tài:(Mô tả chi tiết mục tiêu, phạm vi, đối tượng, phương pháp thực hiện,

kết quả mong đợi của đề tài)

1 Lý do chọn đề tài

Trong thời đại cách mạng 4.0 hiện nay, internet phát triển một cách mạnh mẽ và

ảnh hưởng lớn đến mọi hoạt động của con người Ngoài ra trong xã hội phát triển,

các bậc phụ huynh không có nhiều thời gian và những kiến thức đổi mới liên tục

để giúp đỡ con họ trong học tập, nên dịch vụ gia sư ngày càng được đông đảo các

phụ huynh, học sinh lựa chọn nhằm giúp con em mình đạt được những mục tiêu

nhất định trong học tập Hệ thống tìm kiếm gia sư trực tuyến ra đời giúp các phụ

huynh, học sinh tìm kiếm gia sư trực tuyến dễ dàng, giúp tiết kiệm thời gian đến

trực tiếp các trung tâm để tìm kiếm gia sư Đồng thời, các bạn sinh viên, người có

bằng cấp, chuyên môn trong giảng dạy có nhu cầu trở thành một gia sư có thể đăng

ký trở thành ga sư

2 Phạm vi

Phạm vi của đề tài gồm:

- Xây dựng website quản lý hệ thống dành cho admin

- Xây dựng website dành cho người dùng có nhu cầu tìm kiếm gia sư và người

muốn trở thành gia sư

2.1 Các tính năng chính

Trang 10

• Quản lý danh sách gia sư

• Duyệt yêu cầu đăng ký làm gia sư

• Thống kế tìm kiếm, tin đăng, lĩnh vực, môn học

• Quản lý tin đăng

- Dành cho người dùng

Người tìm gia sư:

• Tìm kiếm gia sư

• Đăng tin tìm gia sư

• Xem thông tin gia sư

• Chat trao đổi trực tuyến với gia sư

Gia sư:

• Đăng tin ứng tuyển

• Tìm kiếm tin đăng tìm gia sư

• Chat trao đổi trực tuyến với người tìm

- Phụ huynh, học sinh, có nhu cầu thuê gia sư dạy kèm trong học tập

- Sinh viên, người có bằng cấp, chuyên môn trong giảng dạy có nhu cầu trở thành một gia sư

4 Mục tiêu

- Hiểu rõ quy trình làm việc để tạo ra một ứng dụng công nghệ thông tin

- Hiểu và áp dụng được Máy học vào ứng dụng

- Tạo ra 1 ứng dụng sau cùng có thể sử dụng được và đáp ứng cho nhu cầu đề ra

- Thực hiện được những tính năng đã đề ra ban đầu

5 Phương pháp thực hiện

- Các thành viên nhóm lập kế hoạch thực hiện

- Trao đổi thường xuyên với giảng viên hướng dẫn

- Khảo sát nhu cầu tìm kiếm gia sư trên các mạng xã hội, các website tìm kiếm việc làm, tìm kiếm gia sư

- Phân tích thiết kế hệ thống, thiết kế giao diện, database

- Máy học, thuật toán áp dụng vào việc tìm kiếm, gợi ý, sàng lọc xếp loại gia sư

7 Kết quả mong muốn

- Xây dựng được ứng dụng với những tính năng đã đề ra ban đầu

Trang 11

- Website có giao diện đẹp, thân thiện, dễ sử dụng

- Hiểu được kiến thức về máy học

- Áp dụng máy học thành công vào ứng dụng, giúp việc tìm kiếm, phân loại gia

sư hiệu quả

Kế hoạch thực hiện:(Mô tả kế hoạch làm việc và phân công công việc cho từng sinh

viên tham gia)

- Phân tích, xác định, đặc tả chức năng chính của hệ thống

- Xây dựng ứng dụng ở nền tảng web, backend , web admin

- Liên tục nghiệm thu, kiểm thử

- Nghiên cứu về các hướng tiếp cận đã có cho bài toán tính năng nổi bật

- Lựa chọn và thử thực hiện hoá các giải pháp

- Tích hợp giải pháp cuối cùng vào ứng dụng

Tú, Khanh

Trang 12

- Thực hiện kiểm thử các luồng chức năng

- Tiến hành sửa các lỗi được tìm ra

- Thực hiện kiểm thử trên môi trường production

- Hoàn thiện báo cáo, chuẩn bị slide, nội dung demo

- Chuẩn bị danh sách các câu hỏi cho phản biện và bảo vệ

- Tiếp thu và sửa chửa báo cáo cũng như sản phẩm

Nguyễn Trọng Khanh

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

Phan Anh Tú

Trang 13

MỤC LỤC

CHƯƠNG 1 GIỚI THIỆU CHUNG 1

1.1 Lý do chọn đề tài 1

1.2 Tính năng nổi bật về chức năng của đề tài 1

1.3 Đối tượng nghiên cứu: 1

1.4 Phạm vi thực hiện 2

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

CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 3

2.1 Kiến trúc hệ thống 3

2.2 Tổng quan về mô hình MVC 4

2.2.1 Khái niệm 4

2.2.2 Các thành phần trong mô hình MVC 4

2.2.3 Ưu điểm MVC 5

2.2.4 Nhược điểm 5

2.3 Tổng quan về Flask 5

2.3.1 Khái niệm 5

2.3.2 Tạo sao chọn Flask để phát triển server 5

2.4 Hệ quản trị cơ sở dữ liệu PostgreSQL 7

2.5 Tổng quan về ReactJs 8

2.5.1 Giới thiệu nền tảng ReactJs 8

2.5.2 Tại sao chọn ReactJs 8

2.6 Google maps Api 9

Trang 14

2.6.1 Khái niệm 9

2.6.2 Cách lấy Google Maps Api key 9

2.7 ElasticSearch 11

2.7.1 Khái niệm 11

2.7.2 Cách thức hoạt động 12

2.7.3 Ưu điểm 12

2.7.4 Nhược điểm 12

2.7.5 Các khái niệm cơ bản trong Elasticsearch 13

2.7.6 Cài đặt trên hệ điều hành Ubuntu 14

2.7.7 Sử dụng Elasticsearch trên Flask 16

CHƯƠNG 3 XÂY DỰNG HỆ THỐNG 18

3.1 Xây dựng kiến trúc hệ thống 18

3.1.1 Xác định yêu cầu hệ thống 18

3.1.2 Phân tích yêu cầu hệ thống 19

3.2 Phân tích thiết kế hệ thống 22

3.2.1 Sơ đồ Use Case 22

3.2.2 Sơ đồ hoạt động 62

3.2.3 Sơ đồ tuần tự 100

3.2.4 Sơ đồ lớp 124

3.2.5 Phân tích và thiết kế CSDL 125

3.3 Thiết kế giao diện 134

CHƯƠNG 4 KẾT LUẬN, HƯỚNG PHÁT TRIỂN 152

4.1 Ưu điểm 152

4.2 Nhược điểm 152

Trang 15

4.3 Về mặt kiến thức tổng quát 152 4.4 Về mặt công nghệ 152

4.5 Hướng phát triển 153

Trang 16

DANH MỤC HÌNH

Hình 2-1.Kiến trúc hệ thống 3

Hình 2-2 Mô hình MVC 4

Hình 3-1 Quy trình của TutorOnline 18

Hình 3-2 UseCase Tổng Quát 23

Hình 3-3 Biểu đồ lớp 124

Hình 3-4 Giao diện trang chủ 135

Hình 3-5 Giao diện trang chủ (gia sư nổi bật trong tuần) 135

Hình 3-6 Giao diện danh sách bài đăng tìm học viên 136

Hình 3-7 Giao diện tìm kiếm bài đăng qua trên bản đồ 136

Hình 3-8 Giao diện danh sách bài đăng tìm gia sư 137

Hình 3-9 Giao diện tìm kiếm bài đăng bàng bản đồ 138

Hình 3-10 Giao diện danh sách gia sư 138

Hình 3-11 Giao diện tìm gia sư bằng bản đồ 139

Hình 3-12 Giao diện Thông tin bài viết 139

Hình 3-13 Giao diện Đăng ký tài khoản 140

Hình 3-14 Giao diện đăng bài viết 141

Hình 3-15 Giao diện thông tin người dùng 142

Hình 3-16 Giao diện danh sách bài viết của bạn 143

Hình 3-17 Giao diện danh sách bài viết bạn đã theo dõi 143

Hình 3-18 Giao diện danh sách bài viết đã đăng kí 144

Hình 3-19 Giao diện danh sách các lớp bạn đã tham gia 145

Hình 3-20Giao diện quản lí lớp người dùng đăng kí bạn 145

Hình 3-21 Giao diện theo dõi đanh giá người dùng 146

Hình 3-22 Giao diện mời gia sư dạy 146

Hình 3-23 Giao diện chỉnh sửa thông tin cá nhân 147

Hình 3-24 Giao diện đăng kí làm gia sư 148

Hình 3-25 Giao diện chỉnh sửa thông tin gia sư 149

Hình 3-26 Giao diện đăng bài tìm kiếm học viên của gia sư 150

Trang 17

Hình 3-27 Giao diện thông tin gia sư 151

DANH MỤC BẢNG Bảng 3-1 Danh sách các Actor 22

Bảng 3-2 Danh sách các use case 25

Bảng 3-3 Phân rã use case đăng nhập 27

Bảng 3-4 Phân rã use case quên mật khẩu 27

Bảng 3-5 Phân rã use case thay đổi mật khẩu 28

Bảng 3-6 Phân rã use case thay đổi thông tin người dùng 29

Bảng 3-7 Phân rã use case xem chi tiết profile 30

Bảng 3-8 Phân rã use case đăng ký gia sư 30

Bảng 3-9 Phân rã use case đăng bài viết tìm kiếm gia sư 32

Bảng 3-10 Phân rã use case đăng bài viết tìm học viên 33

Bảng 3-11 Phân rã use case sửa thông tin bài viết 34

Bảng 3-12 Phân rã use case hiển thị danh sách bài viết đã đăng 34

Bảng 3-13 Phân rã use case tìm kiếm bài viết tìm gia sư 36

Bảng 3-14 Phân rã use case tìm kiếm bài viết tìm học viên 37

Bảng 3-15 Phân rã use case tìm kiếm gia sư 38

Bảng 3-16 Phân rã use case hiển thị vị trí bài viết tìm kiếm gia sư trên bản đồ 39

Bảng 3-17 Phân rã use case xem chi tiết thông tin bài viết 41

Bảng 3-18 Phân rã use case xem chi tiết thông tin gia sư 42

Bảng 3-19 Phân rã use case xem chi tiết thông tin học viên 43

Bảng 3-20 Phân rã use case đăng ký dạy trong bài viết tìm gia sư 44

Bảng 3-21 Phân rã use case hiển thị danh sách chờ duyệt 45

Bảng 3-22 Phân rã use case hiển thị danh sách đã yêu cầu 45

Bảng 3-23 Phân rã use case hủy đăng ký bài viết 46

Bảng 3-24 Phân rã use case chấp nhận yêu cầu 47

Bảng 3-25 Phân rã use case từ chối yêu cầu 48

Trang 18

Bảng 3-26 Phân rã use case danh sách lớp đã dạy 49

Bảng 3-27 Phân rã use case đăng ký lớp học trong bài viết tìm học viên 50

Bảng 3-28 Phân rã use case hiển thị danh sách chờ duyệt 51

Bảng 3-29 Phân rã use case hiển thị danh sách đã yêu cầu 52

Bảng 3-30 Phân rã use case hủy đăng ký yêu cầu 52

Bảng 3-31 Phân rã use case chấp nhận yêu cầu 53

Bảng 3-32 Phân rã use case từ chối yêu cầu 54

Bảng 3-33 Phân rã use case hiện thị danh sách lớp đã học 55

Bảng 3-34 Phân rã use case mời gia sư 55

Bảng 3-35 Phân rã use case đánh giá 57

Bảng 3-36 Phân rã use case xóa đánh giá 58

Bảng 3-37 Phân rã use case sửa đánh giá 59

Bảng 3-38 Phân rã use case xem đánh giá của học viên 59

Bảng 3-39 Phân rã use case theo dõi bài viết 61

Bảng 3-40 Phân rã use case xem danh sách bài viết đang theo dõi 61

Bảng 3-41 Danh sách các sơ đồ hoạt động 63

Bảng 3-42 Danh sách các sơ đồ tuần tự 101

Bảng 3-43 Các lớp của sơ đổ lớp 125

Bảng 3-44 Các đối tượng và thuộc tính của đối tượng 126

Bảng 3-45 Bảng User 127

Bảng 3-46 Bảng Tutor 129

Bảng 3-47 Bảng Post 130

Bảng 3-48 Bảng Schedule 131

Bảng 3-49 Bảng Follow 131

Bảng 3-50 Bảng Registration 132

Bảng 3-51 Bảng Class 133

Bảng 3-52 Bảng Rate 133

Bảng 3-53 Bảng Image 134

Trang 19

nối các ứng dụng và thư viện

khác nhau

SMTP Simple Mail Transfer Protocol Giao thức truyền tải thư tín

đơn giản hóa

HTML Hypertext Markup Language HTML được sử dụng để tạo

và cấu trúc các thành phần trong trang web hoặc ứng dụng, phân chia các đoạn văn, heading, titles, blockquotes…

Trang 20

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

Khóa luận “XÂY DỰNG HỆ THỐNG GIA SƯ TRỰC TUYẾN” gồm 04 chương:

Chương 1: Giới thiệu về đề tài, đưa ra các điểm nổi bật so với các hệ thống trước

Tiếp đến là đề xuất các giải pháp để giải quyết các vấn đề đã đặt ra Ngoài ra, chương

1 cũng đề cập đến đối tượng nghiên cứu, phạm vi đề tài, phương pháp nghiên cứu

Chương 2: Trình bày các kiến thức nền tảng, các công nghệ được sử dụng để xây

dựng ứng dụng gia sư

Chương 3: Trình bày chi tiết quy trình xây dựng hệ thống, từ xác định và phân tích

yêu cầu bài toán cho đến xây dựng CSDL, cuối cùng là xây dựng giao diện cho website

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

Trang 21

Chương 1 GIỚI THIỆU CHUNG

1.1 Lý do chọn đề tài

Trong thời đại cách mạng 4.0 hiện nay, internet phát triển một cách mạnh mẽ và ảnh hưởng lớn đến mọi hoạt động của con người Ngoài ra trong xã hội phát triển, các bậc phụ huynh không có nhiều thời gian và những kiến thức đổi mới liên tục

để giúp đỡ con họ trong học tập, nên dịch vụ gia sư ngày càng được đông đảo các phụ huynh, học sinh lựa chọn nhằm giúp con em mình đạt được những mục tiêu nhất định trong học tập Hệ thống tìm kiếm gia sư trực tuyến ra đời giúp các phụ huynh, học sinh tìm kiếm gia sư trực tuyến dễ dàng, giúp tiết kiệm thời gian đến trực tiếp các trung tâm để tìm kiếm gia sư Đồng thời, các bạn sinh viên, người có bằng cấp, chuyên môn trong giảng dạy có nhu cầu trở thành một gia sư có thể đăng ký trở thành ga sư

1.2 Tính năng nổi bật về chức năng của đề tài

- Tìm kiếm bài viết bằng google map

• Có thể tìm kiếm bài viết của người dung khác một cách trực quan hơn bằng các điểm đã được định vị trên bản đồ, có thể phân loại dễ dàng hơn ngay trên bản đồ

- Tài khoản

• Gia sư và học viên có thể đăng bài viết tìm kiếm

• Quản lý bài viết mình đã đăng kí, theo dõi, và dễ dàng quản lí người dùng đăng kí của bạn

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

Khoá luận này hướng đến nghiên cứu các đối tượng sau:

- Các công nghệ:

• Flask

Trang 22

• ReactJs

• PostgreSql

• ElasticSearch

• Google maps Api

• Visual studio code

• Pycharm

- Công cụ tìm kiếm: ElasticSearch

- Đối tượng trong phạm vị đề tài hướng đến:

• Người tìm kiếm gia sư

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

Nhóm đã sử dụng các phương pháp nghiên cứu:

- Phương pháp đọc tài liệu

- Phương pháp phân tích các website tìm kiếm gia sư hiện có

- Phương pháp thực nghiệm

Trang 23

Chương 2 KIẾN THỨC NỀN TẢNG

2.1 Kiến trúc hệ thống

Hình 2-1.Kiến trúc hệ thống

Trang 24

2.2 Tổng quan về mô hình MVC

2.2.1 Khái niệm

Hình 2-2 Mô hình MVC MVC là từ viết tắt của 'Model View Controller' Nó đại diện cho các nhà phát triển kiến trúc áp dụng khi xây dựng các ứng dụng Với kiến trúc MVC, chúng ta xem xét cấu trúc ứng dụng liên quan đến cách luồng dữ liệu của ứng dụng của chúng ta hoạt động như thế nào

2.2.2 Các thành phần trong mô hình MVC

Mô hình MVC được chia làm 3 lớp xử lý gồm Model – View – Controller :

- Model : là nơi chứa những nghiệp vụ tương tác với dữ liệu hoặc hệ quản trị

cơ sở dữ liệu (mysql, mssql… ); nó sẽ bao gồm các class/function xử lý nhiều nghiệp vụ như kết nối database, truy vấn dữ liệu, thêm – xóa – sửa dữ liệu…

- View : là nới chứa những giao diện như một nút bấm, khung nhập, menu, hình

ảnh… nó đảm nhiệm nhiệm vụ hiển thị dữ liệu và giúp người dùng tương tác với hệ thống

Trang 25

- Controller : là nới tiếp nhận những yêu cầu xử lý được gửi từ người dùng, nó

sẽ gồm những class/ function xử lý nhiều nghiệp vụ logic giúp lấy đúng dữ liệu thông tin cần thiết nhờ các nghiệp vụ lớp Model cung cấp và hiển thị dữ liệu đó ra cho người dùng nhờ lớp View

- Sự tương tác giữa các thành phần:

- Controller tương tác với qua lại với View

- Controller tương tác qua lại với Model

- Model và View không có sự tương tác với nhau mà nó tương tác với nhau thông qua Controller

2.2.3 Ưu điểm MVC

- Trình tự xử lý rất rõ ràng

- Mô hình MVC quy hoạch các class/function vào các thành phần riêng biêt Controller - Model - View, việc đó làm cho quá trình phát triển - quản lý - vận hành - bảo trì web diễn ra thuận lợi hơn, tạo ra được các chức năng chuyên biệt hoá đồng thời kiểm soát được luồng xử lý

- Tạo mô hình chuẩn cho dự án, khi người có chuyên môn ngoài dự án tiếp cận với dự án dễ dàng hơn

- Mô hình đơn giản, dễ hiểu, xử lý những nghiệp vụ đơn giản, và dễ dàng triển khai với các dự án nhỏ

cụ, các thư viện và các công nghệ hỗ trợ bạn làm những công việc trên

2.3.2 Tạo sao chọn Flask để phát triển server

- Là một micro web framework:

• Flask là môt micro web framework được viết bằng Python, không yêu cầu tool hay thư viện cụ thể nào Flask cung cấp chức năng “súc

Trang 26

tích” nhất cho ứng dụng web nhưng người dùng có thể mở rộng bất

cứ lúc nào

- Dễ cài đặt và triển khai:

• Sau khi cài đặt Python, để cài đặt Flask chỉ cần bạn gõ lệnh “pip install Flask” là đã có thể dễ dàng tạo một ứng dụng một cách nhanh chóng

- Giúp bạn tập trung xây dựng ý tưởng và mục tiêu riêng cho mình:

• Flask có kiến trúc nhỏ, gọn nên bạn hoàn toàn không bị bó buộc bởi

bộ khung cồng kềnh, không gặp bất cứ khó khăn nào khi cấu hình hay tổ chức ứng dụng Không những thế, Flask còn có các ưu điểm nổi bật như: cực kỳ linh hoạt, tối giản, dễ tìm hiểu và sử dụng, định tuyến dễ dàng, rất dễ mở rộng Vì vậy, công việc chính của bạn là chỉ cần xác định ý tưởng, mục tiêu, tập trung vào việc xây dựng ứng dụng web mà thôi

- Nguồn tài liệu tham khảo rất phong phú đa dạng:

• Flask cung cấp rất nhiều tài liệu từ cài đặt đến thực hiện và triển khai, từ hướng dẫn nhanh đến hướng dẫn chi tiết Bạn có thể dễ dàng tìm kiếm, tham khảo, học tập về lập trình web application với Flask framework miễn phí trên Internet

- Cộng đồng lớn:

• Cộng đồng những người sử dụng Flask Python trải rộng trên khắp thế giới, bạn có thể liên hệ, trao đổi hoặc tìm kiếm sự giúp đỡ từ cộng đồng qua mạng xã hội hoặc các diễn đàn online một cách dễ dàng

- Một số ứng dụng được phát triển bằng PHP:

• Reddit

• Red Hat

Trang 27

• Netflix

• Mozilla

2.4 Hệ quản trị cơ sở dữ liệu PostgreSQL

- PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ – đối tượng, được phát triển bởi Khoa Điện toán, Đại học California – Hoa Kỳ dựa trên Postgres bản 4.2 Chương trình này đã mở đường cho nhiều khái niệm về hệ quản trị dữ liệu thương mại sau này

- Ban đầu, hệ quản trị được thiết kế để chạy trên các nền tảng tương tự như Unix Sau này, PostgreSQL được điều chỉnh trở nên linh động và chạy trên nhiều nền tảng khác nhau như Windows, Mac OS X, Solaris với nhiều tính năng và đặc điểm nổi bật

- PostgreSQL là mã nguồn mở miễn phí, được xây dựng theo chuẩn SQL99 Người dùng có thể tự do sử dụng, chỉnh sửa và phân bổ PostgreSQL theo nhiều hình thức khác nhau

- So với nhiều hệ quản trị cơ sở dữ liệu khác, PostgreSQL không quá yêu cầu

về công tác bảo trì bởi tính ổn định cao, có thể phát triển nhiều ứng dụng khác nhau với chi phí tương đối thấp

Các tính năng chính:

- Tương thích với các nền tảng khác nhau sử dụng tất cả các ngôn ngữ chính và phần mềm trung gian

- Nó cung cấp một cơ chế khóa tinh vi nhất

- Hỗ trợ kiểm soát đồng thời nhiều phiên bản

- Mature Server-Side Lập trình chức năng

- Tuân thủ tiêu chuẩn SQL ANSI

- Hỗ trợ đầy đủ cho kiến trúc mạng client – server

- SSL sao chép dựa trên đăng nhập và kích hoạt

- Máy chủ dự phòng và tính sẵn sàng cao (high availability)

- Tương thích hướng đối tượng và tương thích ANSI-SQL2008

- Hỗ trợ cho JSON cho phép liên kết với các kho lưu trữ dữ liệu khác như NoQuery, hoạt động như một trung tâm liên kết cho cơ sở dữ liệu polyglot

Ưu điểm:

- PostgreSQL có thể chạy các trang web và ứng dụng web động với LAMP

- Ghi nhật ký viết trước của PostgreSQL làm cho nó trở thành một cơ sở dữ liệu

có khả năng chịu lỗi cao

- Mã nguồn PostgreSQL có sẵn miễn phí theo giấy phép nguồn mở Điều này cho phép bạn tự do sử dụng, sửa đổi và triển khai nó theo nhu cầu kinh doanh của bạn

- PostgreSQL hỗ trợ các đối tượng địa lý để bạn có thể sử dụng nó cho các dịch

vụ dựa trên vị trí và hệ thống thông tin địa lý

Trang 28

- PostgreSQL hỗ trợ các đối tượng địa lý để nó có thể được sử dụng làm kho lưu trữ dữ liệu không gian địa lý cho các dịch vụ dựa trên vị trí và hệ thống thông tin địa lý

- Những thay đổi được thực hiện để cải thiện tốc độ đòi hỏi nhiều công việc hơn MySQL vì PostgreSQL tập trung vào khả năng tương thích

- Nhiều ứng dụng nguồn mở hỗ trợ MySQL, nhưng có thể không hỗ trợ PostgreSQL

- Về số liệu hiệu suất, nó chậm hơn MySQL

2.5 Tổng quan về ReactJs

2.5.1 Giới thiệu nền tảng ReactJs

Reactjs là một thư viện Javascript mã nguồn mở hỗ trợ xây dựng các thành phần giao diện nhanh gọn và tiện lợi Bình thường các lập trình viên sẽ nhúng

javascript vào code HTML thông qua các attribute như AngularJS nhưng với

Reactjs làm việc như một thư viện cho phép nhúng HTML vào javascript thông qua JSX Qua đó bạn có thể dễ dàng lồng các đoạn HTML vào trong JSX làm cho các component dễ hiểu và dễ sử dụng hơn

2.5.2 Tại sao chọn ReactJs

• ReactJS giúp cho việc viết các đoạn code Javascript sẽ trở nên dễ dàng hơn vì

nó sử dụng một cú pháp đặc biệt đó chính là cú pháp JSX Thông qua JSX cho phép nhúng code HTML và Javascrip

• ReactJS cho phép Developer phá vỡ những cấu tạo UI phức tạp thành những component độc lập Dev sẽ không phải lo lắng về tổng thể ứng dụng web, giờ đây Developer dễ dàng chia nhỏ các cấu trúc UI/UX phức tạp thành từng component đơn giản hơn

• Đi kèm với ReactJS là rất nhiều các công cụ phát triển giúp cho việc debug code một cách dễ dàng hơn

• Một trong những ưu điểm nữa của ReactJS đó là sự thân thiện với SEO Hầu như các JS Frameworks không thân thiện với các tìm kiếm mặc dù đã được cải thiện nhiều nhưng dưới sự hỗ trợ của các render dữ liệu trả về dưới dạng web page giúp cho SEO chuẩn hơn

Trang 29

2.6 Google maps Api

2.6.1 Khái niệm

Google maps Api Là một phương thức cho phép 1 website B sử dụng dịch vụ bản

đồ của website A (gọi là Map API) và nhúng vào website của mình (site B) Site A

ở đây là google map, site B là các website cá nhân hoặc tổ chức muốn sử dụng dịch

vụ của google (di chuột, room, đánh dấu trên bản đồ…)

Các ứng dụng xây dựng trên maps được nhúng vào trang web cá nhân thông qua các thẻ javascripts do vậy việc sử dụng API google rất dễ dàng

2.6.2 Cách lấy Google Maps Api key

Để có thể lấy được key api của bất kì dịch vụ nào điều đầu tiên bạn cần có là: có thể tạo được một project trên https://console.cloud.google.com/?hl=vi&pli=1

Sau khi tạo được project, thì bạn chọn project mình vừa tạo, màn hình sẽ chuyển sang trang report tình hình sử dụng api của ứng dụng

Trang 30

Chọn “Go to APIs overview” và click chọn thư viện api bên tay trái, chọn thư viện api mình cần sử dụng, click “enable”, như trong hình dưới là dịch vụ Google Maps Javascript Api

Màn hình hiển thị như hình dưới là thành công

Trang 31

2.7 ElasticSearch

2.7.1 Khái niệm

- Elasticsearch là một công cụ tìm kiếm search engine dựa trên nền tảng Apache Lucene Nó cung cấp một bộ máy tìm kiếm dạng phân tán, có đầy đủ công cụ với một giao diện web HTTP có hỗ trợ dữ liệu JSON

- Elasticsearch là một mã nguồn mở được phát triển bằng ngôn ngữ Java, thực chất hoạt như một Web Server, có khả năng tìm kiếm nhanh chóng (near realtime) thông qua giao thức RESTful

- Elasticsearch chạy trên Server riêng và đồng thời giao tiếp thông qua RESTful do vậy nên nó không phụ thuộc vào Client hay hệ thống Nên việc tích hợp nó vào hệ thống

là dễ dàng, chỉ cần gửi request HTTP sẽ nhận được kết quả trả về

- Với các dữ liệu nhỏ và vừa, người dùng có thể tìm kiếm trên file, trên các nền tảng

dữ liệu như Oracle, MySQL, MongoDB… nhưng đối với những trường hợp dữ liệu lớn thì Elasticsearch giúp cho việc tìm kiếm trở nên tối ưu và hiệu quả rất lớn

Trang 32

Hình hoạt động của Elasticsearch

2.7.2 Cách thức hoạt động

- Toàn bộ dữ liệu tổng hợp, dữ liệu được người dùng tải lên sẽ lưu vào database,

tiếp theo chúng được đồng bộ hóa sang Elasticsearch Từ đó, khi người dùng

tìm kiếm thì sẽ tìm kiếm trên Elasticsearch, tốc độ vừa nhanh, vừa giảm tải

cho database

2.7.3 Ưu điểm

- Khả năng tìm kiếm mạnh mẽ dựa trên Apache Lucene và phân tích dữ liệu

- Khả năng mở rộng theo chiều ngang Dù tìm kiếm từ khóa sai chính tả hay

không đúng cú pháp thì vẫn được hỗ trợ trả về kết quả rất tốt

- Hỗ trợ tìm kiếm khi từ khóa tìm kiếm có thể bị lỗi

- Hỗ trợ đặc tả những câu truy vấn phức tạp một cách cụ thể và rõ ràng bằng

JSON, các Structured Query DSL (Domain– Specific Language),

Elasticsearch client như Python,Java, Php, JS, Ruby,

2.7.4 Nhược điểm

- Elasticsearch được tạo ra với mục đích tìm kiếm, nhưng với những nhiệm vụ

khác ngoài search Curd thì Elastic yếu hơn so với những database khác như

MongoDB, MySQL… Do vậy người ta ít khi dùng Elasticsearch làm database

chính như MongoDB hay MySQL

- Trong Elasticsearch không có khái niệm database transaction, vì thế

Elasticsearch không đảm bảo được dữ liệu của các hoạt động như Insert,

Update hay Delete, khi chúng ta thực hiện thay đổi nhiều bản ghi nếu xảy ra

lỗi làm logic sai hay dẫn tới mất dữ liệu Đây cũng là một phần khiến

Elasticsearch không nên là database primary

- Đối với những hệ thống thường xuyên cập nhật dữ liệu thì việc sử dụng

Elasticsearch sẽ rất tốn kém cho việc đánh index dữ liệu

- Việc tìm kiếm của Elasticsearch được phân trang, thông qua hai giá

trị “from” và “size” Việc phân trang này diễn ra rất phổ biến, trên hầu hết các

Trang 33

ứng dụng và thậm chí, trên giao diện, người dùng có thể dễ dàng nhảy từ trang này sang trang khác Nhưng Elasticsearch có những vấn đề của riêng nó liên quan đến phân trang, khi mà người dùng nhảy đến những trang quá lớn, nhất

là trang cuối cùng Với Elasticsearch, nó sẽ phải thực hiện tính toán, đánh giá

độ tương quan cho từng trang Ví dụ, bạn cần truy cập trang thứ 20, thì Elasticsearch sẽ phải tính toán và thực hiện tìm kiếm trên tất cả các trang từ 1– 20 Trong trường hợp thì sẽ là thực hiện tính toán trên 20 * 20 * 5 =

2000 bản ghi (nếu phân trang là 20 bản ghi mỗi trang) Số trang càng lớn, mức

độ tính toán càng nhiều Do đó, trên thực tế, người dùng sẽ phải tìm cách giải quyết vấn đề này, dù tỉ lệ người dùng tìm đến các trang sâu như vậy là không nhiều

2.7.5 Các khái niệm cơ bản trong Elasticsearch

Có 2 kiểu đánh Index và Forward Index và Inverted Index:

• Inverted Index đánh theo keyword: words – > pages

• Forward Index đánh theo nội dung: pages – > words

Trang 34

Chúng ta có thể thấy việc đánh theo keyword thì việc tìm kiếm sẽ nhanh hơn việc chúng ta phải tìm kiếm theo từng page Elasticsearch sử dụng Apache lucence để quản lý và tạo Inverted Index

- Shard

Shard là một đối tượng của Lucence, là tập hợp con của một Index Một Index

có thể được lưu trên nhiều Shard

Một Node bao gồm nhiều Shard, Shard chính là đối tượng nhỏ nhất hoạt động

ở mức thấp nhất, đóng vai trò lưu trữ dữ liệu

Chúng ta sẽ không bao giờ làm việc với các Shard vì Elasticsearch sẽ hỗ trợ chúng ta toàn bộ việc giao tiếp cũng như tự động thay đổi các Shard khi cần thiết

Elasticsearch cung cấp 2 cơ chế của Shard đó là primary Shard và Replica Shard

Primary Shard sẽ lưu trữ dữ liệu và đánh Index, sau khi đánh dữ liệu xong sẽ được vận chuyển đến các Replica Shard, mặc định của Elasticsearch mỗi index

sẽ có 5 Primary Shard thì sẽ đi kèm với một Replica Shard

Replica Shard là nơi lưu trữ dữ liệu nhân bản của Elasticsearch, đóng vai trò đảm bảo tính toàn vẹn dữ liệu khi Primary Shard xảy ra vấn đề, ngoài ra nó còn giúp tăng tốc độ tìm kiếm vì chúng ta có thể cấu hình lượng Replica Shard nhiều hơn cấu hình mặc định của Elasticsearch

- Node

Là trung tâm hoạt động của Elasticsearch, là nơi lưu trữ dữ liệu, tham gia thực hiện đánh index của Cluster cũng như thực hiện các thao tác tìm kiếm Mỗi Node được xác định bằng một tên riêng và không được phép trùng lặp

Chức năng chính của Cluster là quyết định xem Shard nào được phân bổ cho Node nào và khi nào thì di chuyển các Cluster để cần bằng lại Cluster

2.7.6 Cài đặt trên hệ điều hành Ubuntu

- Cập nhật package index

Trang 35

- Cài đặt JDK

- Để cho phép truy cập vào repositories của bạn thông qua HTTPS, bạn cần cài

đặt gói truyền tải APT

- Pull Elasticsearch repository về

- Add repository vào hệ thống

- Cài đặt Elasticsearch

- Start Elasticsearch

- Configure Elasticsearch

• Chúng ta sử dụng vim để sửa file elasticsearch.yml

• Sửa file giống hình

Trang 36

• Restart lại Elasticsearch

2.7.7 Sử dụng Elasticsearch trên Flask

- Cài đặt module elasticsearch

- Thêm, sửa dữ liệu

Trang 37

- Tìm kiếm bằng keyword trên tất cả trường đơn giản

Trang 38

Hình 3-1 Quy trình của TutorOnline

Trang 39

3.1.2 Phân tích yêu cầu hệ thống

3.1.2.1 Phần gia sư

- Đăng nhập: Đăng nhập vào trang web để sử dụng thêm các chức năng

- Đăng ký tài khoản: Tạo tài khoản cho người dùng mới

- Quên mật khâu: Giúp người dùng lấy lại mật khẩu cũ

- Thay đổi mật khẩu: Giúp người dùng thay đổi mật khẩu

- Thay đổi thông tin người dùng: Người dùng thay đổi lại thông tin của mình

- Xem chi tiết Profile: Giúp người dùng có thể xem thông tin chi tiết cá nhân

- Đăng ký làm gia sư: Người dùng có thể đăng ký làm gia sư để dạy

- Đăng tin: Đăng bài viết tìm kiếm học viên

- Sửa thông tin bài viết: Cập nhật thông tin bài viết trước đó

- Hiển thị danh sách bài viết đã đăng: Hiển thị danh sách các bài viết mà gia

sư đã đăng lên trang web

- Tìm kiếm bài viết tìm học viên: Tìm kiếm bài viết tìm học viên theo chọn

lọc mong muốn

- Hiển thị vị trí bài viết tìm học viên trên bản đồ: hiển thị danh sách các bài

viết xung quanh người dùng trên bản đồ

- Xem chi tiết thông tin bài viết: Xem chi tiết từng trường thông tin của bài

viết đã đăng

- Xem chi tiết thông tin gia sư: Xem profile của gia sư, đánh giá của học viên

- Đăng ký dạy lớp trong bài viết tìm gia sư: Gửi yêu cầu xin được dạy đến người đăng bài viết tìm gia sư

- Hiển thị danh sách yêu cầu: Hiển thị những yêu cầu mà mình đã đăng ký trong các bài viết

Trang 40

- Hiển thị danh sách yêu cầu chờ duyệt: Hiển thị danh sách những yêu cầu của người khác đăng ký bài viết mình đăng, và cả lời mời làm gia sư

- Hủy đăng ký lớp: Hủy những yêu cầu mà mình đã đăng ký ở bài viết

- Từ chối đăng ký lớp: Từ chối những yêu cầu của người khác gửi cho mình

- Chấp nhận đăng ký lớp: Chấp nhận yêu cầu của người khác gửi cho mình

- Danh sách lớp đã dạy: Hiển thị danh sách các lớp mà mình đã tham gia dạy học

- Đánh giá học viên: gia sư đánh giá học viên của mình

- Sửa đánh giá: sửa lại đánh giá cũ

- Xóa đánh giá: xóa đánh giá cũ

- Xem đánh giá của học viên: xem danh sách các đánh giá của học viên

- Theo dõi bài viết: theo dõi bài viết để có thể xem lại sau

- Xem danh sách bài viết đang theo dõi: xem danh sách các bài viết mà mình

đã theo dõi trước đó

3.1.2.2 Phần học viên

- Đăng nhập: Đăng nhập vào trang web để sử dụng thêm các chức năng

- Đăng ký tài khoản: Tạo tài khoản cho người dùng mới

- Quên mật khâu: Giúp người dùng lấy lại mật khẩu cũ

- Thay đổi mật khẩu: Giúp người dùng thay đổi mật khẩu

- Thay đổi thông tin người dùng: Người dùng thay đổi lại thông tin của mình

- Xem chi tiết Profile: Giúp người dùng có thể xem thông tin chi tiết cá nhân

- Đăng ký làm gia sư: Người dùng có thể đăng ký làm gia sư để dạy

- Đăng tin: đăng bài viết tìm kiếm gia sư

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

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