Tải bản đầy đủ (.docx) (89 trang)

Khóa luận tốt nghiệp khuyến nghị cộng tác dựa trên tiếp cận học sâu

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 (1.01 MB, 89 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

HỒNG TRỌNG KHÁNH – 15520353

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

XÂY DỰNG ỨNG DỤNG THEO DÕI TÌNH HÌNH
DỊCH COVID-19 VÀ ĐỊA ĐIỂM BÁN KHẨU TRANG,
PHÁT KHẨU TRANG Y TẾ MIỄN PHÍ
Building an app for monitoring COVID-19 virus and showing
places which to sell medical mask and giving free medical mask

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

HỒ CHÍ MINH, 2020

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

HỒNG TRỌNG KHÁNH – 15520353

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

XÂY DỰNG ỨNG DỤNG THEO DÕI TÌNH HÌNH
DỊCH COVID-19 VÀ ĐỊA ĐIỂM BÁN KHẨU TRANG,


PHÁT KHẨU TRANG Y TẾ MIỄN PHÍ
Building an app for monitoring COVID-19 virus and showing
places which to sell medical mask and giving free medical mask
KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN
TS. HUỲNH NGỌC TÍN
ThS. NGUYỄN CƠNG HOAN

HỒ CHÍ MINH, 2020
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.


1. …………………………………………. – Chủ tịch.
2. …………………………………………. – Thư ký.
3. …………………………………………. – Ủy viên.
4. …………………………………………. – Ủy viên
ĐHQG TP. HỒ CHÍ MINH CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC Độc Lập – Tự Do – Hạnh Phúc CÔNG NGHỆ THƠNG TIN
TP. HCM, ngày tháng năm 2020
NHẬN XÉT KHỐ LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ HƯỚNG DẪN)
Tên khoá luận:
XÂY DỰNG ỨNG DỤNG THEO DÕI TÌNH HÌNH DỊCH COVID-19
VÀ ĐỊA ĐIỂM BÁN KHẨU TRANG, PHÁT KHẨU TRANG Y TẾ
MIỄN PHÍ
Nhóm SV thực hiện:


Đánh giá khố luận:

Hồng Trọng Khánh 15520353

1. Về cuốn báo cáo:
Cán bộ hướng dẫn: TS. Huỳnh Ngọc Tín ThS.
Nguyễn Công Hoan

Số trang: Số chương:
Số bảng số liệu:
Số tài liệu tham khảo:

Một số nhận xét về hình thức cuốn báo cáo:
Số hình vẽ: Sản phẩm:

............................................................................................................................... ...
............................................................................................................................ ......
......................................................................................................................... .........
...................................................................................................................... ............
................................................................................................................... 2. Về nội
dung nghiên cứu:
............................................................................................................................... ...
............................................................................................................................


............................................................................................................................... ...
............................................................................................................................

3.


Về chương trình ứng dụng:
............................................................................................................................... ...
............................................................................................................................ ......
......................................................................................................................... .........
...................................................................................................................... ............
................................................................................................................... 4. Về thái
độ làm việc của sinh viên:
............................................................................................................................... ...
............................................................................................................................ ......
......................................................................................................................... .........
......................................................................................................................
...............................................................................................................................
Đánh giá chung:
............................................................................................................................... ...
............................................................................................................................ ......
......................................................................................................................... .........
...................................................................................................................... ............
................................................................................................................... ...............
................................................................................................................ Điểm từng
sinh viên:
Hoàng Trọng Khánh: /10
Người nhận xét (Ký tên và ghi rõ họ tên)
ĐHQG TP. HỒ CHÍ MINH CỘNG HỒ XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC Độc Lập – Tự Do – Hạnh Phúc CÔNG NGHỆ THÔNG TIN
TP. HCM, ngày tháng năm 2020
NHẬN XÉT KHOÁ LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ PHẢN BIỆN)
Tên khoá luận:
XÂY DỰNG ỨNG DỤNG THEO DÕI TÌNH HÌNH DỊCH COVID-19



VÀ ĐỊA ĐIỂM BÁN KHẨU TRANG, PHÁT KHẨU TRANG Y TẾ
MIỄN PHÍ
Nhóm SV thực hiện:

Đánh giá khố luận:

Hồng Trọng Khánh 15520353

1. Về cuốn báo cáo:
Cán bộ hướng dẫn: TS. Huỳnh Ngọc Tín ThS.
Nguyễn Cơng Hoan

Số trang: Số chương:
Số bảng số liệu:
Số tài liệu tham khảo:

Một số nhận xét về hình thức cuốn báo cáo:
Số hình vẽ: Sản phẩm:

............................................................................................................................... ...
............................................................................................................................ ......
......................................................................................................................... .........
...................................................................................................................... ............
................................................................................................................... 2. Về nội
dung nghiên cứu:
............................................................................................................................... ...
............................................................................................................................
............................................................................................................................... ...

............................................................................................................................

3.

Về chương trình ứng dụng:
............................................................................................................................... ...
............................................................................................................................ ......
......................................................................................................................... .........
...................................................................................................................... ............
................................................................................................................... 4. Về thái
độ làm việc của sinh viên:
............................................................................................................................... ...
............................................................................................................................ ......
......................................................................................................................... .........
......................................................................................................................


...............................................................................................................................
Đánh giá chung:
............................................................................................................................... ...
............................................................................................................................ ......
......................................................................................................................... .........
...................................................................................................................... ............
................................................................................................................... ...............
................................................................................................................ Điểm từng
sinh viên:
Hoàng Trọng Khánh: /10
Người nhận xét
(Ký tên và ghi rõ họ tên)
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, được
sự chỉ bảo và giảng dạy nhiệt tình của quý thầy cô, đặc biệt quý thầy cô trong khoa Công
Nghệ Phần Mềm, chúng em đã nhận được vô vàng kiến thức bổ ích về lý thuyết và thực
hành trong thời gian qua. Trong khoảng thời gian thực hiện luận văn tốt nghiệp, chúng em
càng học hỏi thêm được nhiều kiến thức, kinh nghiệm để áp dụng và đã hoàn thành được
luận văn tốt nghiệp của chúng em.
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 Ngọc Tín và thầy Nguyễn Cơng Hoan đã tận tình hướng dẫn chúng em hồn thành
luận vă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.


Tp Hồ Chí Minh, tháng 07 năm 2020

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC

Hồng Trọng Khánh
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 ứng dụng theo dõi tình hình dịch COVID-19 và địa điểm bán
khẩu trang, phát khẩu trang y tế miễn phí.
TÊN ĐỀ TÀI BẰNG TIẾNG ANH: Building an app for monitoring COVID-19 virus and
showing places which to sell medical mask and giving free medical mask.
Cán bộ hướng dẫn: ThS. Nguyễn Công Hoan
Thời gian thực hiện: Từ ngày 16/03/2020 đến ngày 01/07/2020
Sinh viên thực hiện:
Hoàng Trọng Khánh - 15520353
Nội dung đề tài:
Xây dựng ứng dụng di động hỗ trợ mọi người theo dõi tình hình dịch bệnh COVID-19 tại
các tỉnh thành ở Việt Nam cũng như trên tồn thế giới một cách nhanh chóng, dữ liệu được
cập nhật liên tục. Ngoài ra ứng dụng cịn hiển thị thơng tin chi tiết các địa điểm bán, phát
khẩu trang y tế trên cả nước giúp mọi người có thể mua sắm khẩu trang trong đợt dịch
COVID-19 lần này.
Nền tảng công nghệ:
Font-end: React Native, Java, Objective-C
Back-end: Java
Database: MongoDB
Điểm nổi bật của hệ thống:
• Sử dụng bản đồ để theo dõi các số liệu về dịch COVID-19 như số ca mắc bệnh, số
ca hồi phục và tử vong trên tồn thế giới và ở Việt Nam.
• Người dùng có thể xem các địa điểm bán khẩu trang/phát khẩu trang y tế trên bản
đồ.
• Người dùng có thể tạo mới địa điểm bán khẩu trang/phát khẩu trang. • Người dùng
có thể xác nhận tình trạng hết hàng, cịn hàng cho các địa điểm bán khẩu trang/phát
khẩu trang.


• Người dùng có thể bình luận, đánh giá về các địa điểm bán khẩu trang/phát khẩu

trang.
• Ứng dụng hiển thị hàng trăm địa điểm trên bản đồ nhưng vẫn đảm bảo hiệu năng
sử dụng mượt mà khơng giật lag
• Dữ liệu được cập nhật từ các nguồn tin cậy WHO, Bộ Y Tế,…

Kế hoạch thực hiện:
STT

Công Việc

Thời
gian
thực
hiện

I. Nghiên cứu cơng nghệ và phân tích thiết kế hệ thống

2 tuần

1

Phân tích nghiệp vụ đề tài

Tuần 1

2

Nghiên cứu cơng nghệ áp dụng vào dự án

Tuần 2


II. Xây dựng cấu trúc

3 tuần

3

Thiết lập development environment, Thiết kế cơ sở dữ liệu

Tuần 3

4

Xây dựng boilerplate mobile project: Map, React-Navigation,
Redux-Saga, API Axios,…

Tuần 4

5

Xây dựng Core Service API để thao tác với database: thêm,
xoá, sửa, tìm kiếm.

Tuần 5

III. Xây dựng ứng dụng

7 tuần

6


Phác thảo và thiết kế giao diện

Tuần 6

7

Xây dựng màn hình đăng nhập và xử lý luồng đăng nhập. Xây
dựng API đăng nhập, đăng ký.

Tuần 7

8

Xây dựng màn hình hiển thị thơng tin COVID-19. Nghiên cứu
các nguồn dữ liệu COVID-19 tin cậy và lấy thông tin dữ liệu.

Tuần 8,9

9

Xây dựng các API tạo mới địa điểm bán khẩu trang/ phát khẩu
trang, API xác nhận còn hàng/hết hàng, API viết nhận xét,
đánh giá

Tuần 10


10


Xây dựng màn hình hiển thị thơng tin chi tiết địa điểm bán
khẩu trang/phát khẩu trang và tích hợp các API tạo địa điểm,
xác nhận địa điểm, nhận xét địa điểm

Tuần 11

11

Nghiên cứu, tìm hiểu các địa điểm bán khẩu trang trên các
phương tiện thông tin đại chúng và thêm vào cơ sở dữ liệu

Tuần 12

IV. Hoàn thiện ứng dụng

3 tuần

12

Thêm dữ liệu và tối ưu ứng dụng

Tuần 13

13

Kiểm thử và fix bug

Tuần 14

14


Triển khai ứng dụng

Tuần 15

Xác nhận của CBHD

TP. HCM, ngày 05 tháng 05 năm
2020 Sinh viên

Hoàng Trọng Khánh

MỤC LỤC

CHƯƠNG 1. TỔNG QUAN.......................................................................................................19
1.1. Đặt vấn đề......................................................................................................................19
1.2. Mục tiêu và phạm vi......................................................................................................20
1.2.1. Mục tiêu......................................................................................................................20
1.2.2. Phạm vi.......................................................................................................................21
1.3. Nội dung thực hiện ........................................................................................................21 1.4.
Kết quả dự kiến .............................................................................................................22 CHƯƠNG
2. CÔNG NGHỆ SỬ DỤNG....................................................................................23
2.1.

Spring

boot

....................................................................................................................23



2.1.1.

Khái

niệm...................................................................................................................23

2.1.2. Tại sao dùng Spring Boot...........................................................................................24
2.1.3. Áp dụng Spring Boot vào đề tài.................................................................................24
2.2.

MongoDB......................................................................................................................24

2.2.1. Giới thiệu về MongoDB.............................................................................................24
2.2.2. Tại sao nên sử dụng MongoDB..................................................................................25
2.2.3. Áp dụng MongoDB vào đề tài ...................................................................................26
2.3.

Spring

2.3.1.

Data....................................................................................................................27

Giới

thiệu....................................................................................................................27

2.3.2. Tại sao nên sử dụng Spring Data ...............................................................................27
2.3.3. Áp dụng Spring Data vào đề tài .................................................................................28

2.4. Spring Security ..............................................................................................................28
2.4.1.

Giới

thiệu....................................................................................................................28

2.4.2. Tại sao nên sử dụng Spring Security..........................................................................28
2.4.3. JWT (JSON Web Token)...........................................................................................29
2.4.4. Áp dụng vào đề tài .....................................................................................................29
2.5.

React

Native

..................................................................................................................30

2.5.1. Giới thiệu React Native..............................................................................................30
2.5.2. Tại sao sử dụng React Native.....................................................................................31
2.5.3. Áp dụng React Native vào đề tài................................................................................31
CHƯƠNG 3. PHÂN TÍCH XÁC ĐỊNH BÀI TỐN.................................................................32
3.1. Xác định bài toán...........................................................................................................32
3.2. Giải quyết bài toán.........................................................................................................32
3.2.1. Marker clustering .......................................................................................................32
3.2.1. Áp dụng Marker clustering ........................................................................................33
3.3. Các hệ thống liên quan ..................................................................................................34
3.3.1. NCOVI .......................................................................................................................34
3.4. Kết luận .........................................................................................................................35
CHƯƠNG 4. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG..........................................................37

4.1. Phân tích thiết kế hệ thống ............................................................................................37 4.1.1
Sơ đồ use case .............................................................................................................37 4.1.2


Danh sách actor...........................................................................................................38 4.1.3
Danh sách use case......................................................................................................38 4.1.4
Mô tả chi tiết các Use case ..........................................................................................39
4.2. Thiết kế cơ sở dữ liệu ....................................................................................................55
4.2.1 Mô tả các collection trong cơ sở dữ liệu .....................................................................55
4.3. Thiết kế giao diện ..........................................................................................................61
4.3.1 Sơ đồ thiết kế giao diện...............................................................................................61
4.3.2 Danh sách giao diện ....................................................................................................62
4.3.3 Mô tả chi tiết giao diện................................................................................................63
4.4. Thiết kế kiến trúc...........................................................................................................86 4.4.1
Kiến trúc hệ thống.......................................................................................................86 4.4.2
Kiến trúc của Client.....................................................................................................87 4.4.3
Kiến trúc của Server....................................................................................................89
CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN............................................................90
5.1. Kết quả đạt được............................................................................................................90
5.2. Thuận lợi và khó khăn...................................................................................................90 5.2.1
Thuận lợi .....................................................................................................................90 5.2.2
Khó khăn .....................................................................................................................91
5.3. Hướng phát triển............................................................................................................91 TÀI
LIỆU THAM KHẢO ..........................................................................................................92
DANH MỤC BẢNG
Bảng 4.1 Danh sách các actor ........................................................................................... 37
Bảng 4.2 Danh sách các use case......................................................................................... 38
Bảng 4.3 Dịng sự kiện chính use case “Đăng ký” .............................................................. 39
Bảng 4.4 Dòng sự kiện phụ use case “Đăng ký” ................................................................. 40
Bảng 4.5 Dòng sự kiện chính use case “Đăng nhập”........................................................... 40

Bảng 4.6 Dịng sự kiện phụ use case “Đăng nhập” ............................................................. 41
Bảng 4.7 Dòng sự kiện chính use case “Quên mật khẩu”.................................................... 42
Bảng 4.8 Dịng sự kiện chính use case "Thay đổi thơng tin"............................................... 43
Bảng 4.9 Dịng sự kiện chính use case “Thơng tin COVID-19” ......................................... 44
Bảng 4.10 Dịng sự kiện chính use case “Cập nhật thơng tin COVID-19” ......................... 45
Bảng 4.11 Dịng sự kiện chính use case “Thơng tin lây nhiễm” ......................................... 45


Bảng 4.12 Dịng sự kiện chính use case “Cập nhật thơng tin lây nhiễm” ........................... 46
Bảng 4.13 Dịng sự kiện chính use case “Thơng tin địa điểm” ........................................... 46
Bảng 4.14 Dịng sự kiện chính use case “Chia sẻ thơng tin”............................................... 47
Bảng 4.15 Dịng sự kiện chính use case “Xác nhận thơng tin” ........................................... 48
Bảng 4.16 Dịng sự kiện phụ use case “Xác nhận thơng tin” .............................................. 49
Bảng 4.17 Dịng sự kiện phụ use case “Xác nhận thông tin” .............................................. 50
Bảng 4.18 Dịng sự kiện chính use case “Bình luận” .......................................................... 51
Bảng 4.19 Dịng sự kiện phụ use case “Bình luận” ............................................................. 51
Bảng 4.20 Dịng sự kiện chính use case “Thơng báo nguy cơ lây nhiễm” .......................... 52
Bảng 4.21 Dòng sự kiện chính use case “Tư vấn thơng tin” ............................................... 53
Bảng 4.22 Bảng mô tả collection “Users” ........................................................................... 54
Bảng 4.23 Bảng mô tả Object “Provider”............................................................................ 55
Bảng 4.24 Bảng mô tả collection “Covid”........................................................................... 55
Bảng 4.25 Bảng mô tả collection “Patient” ......................................................................... 56
Bảng 4.26 Bảng mô tả collection “Utilities”........................................................................ 57
Bảng 4.27 Bảng mô tả object “Bound”................................................................................ 57
Bảng 4.28 Bảng mô tả object “Point” .................................................................................. 58
Bảng 4.29 Bảng mô tả collection “Confirm”....................................................................... 58
Bảng 4.30 Bảng mô tả collection “Comments” ................................................................... 59
Bảng 4.31 Danh sách các giao diện ..................................................................................... 62
Bảng 4.32 Thành phần giao diện Nhập số điện thoại .......................................................... 63
Bảng 4.33 Thành phần giao diện Nhập mã OTP ................................................................. 64

Bảng 4.34 Thành phần giao diện Đăng nhập....................................................................... 65
Bảng 4.35 Thành phần giao diện Quên mật khẩu................................................................ 66
Bảng 4.36 Thành phần giao diện Trang chủ ........................................................................ 67
Bảng 4.37 Thành phần giao diện Menu ............................................................................... 69
Bảng 4.38 Thành phần giao diện Đăng xuất........................................................................ 69
Bảng 4.39 Thành phần giao diện Tài khoản ........................................................................ 70
Bảng 4.40 Thành phần giao diện Quản lý tài khoản............................................................ 71
Bảng 4.41 Thành phần giao diện Thay đổi mật khẩu .......................................................... 72
Bảng 4.42 Thành phần giao diện Thông tin tư vấn.............................................................. 75
Bảng 4.43 Thành phần giao diện Thông tin COVID-19...................................................... 76
Bảng 4.44 Thành phần giao diện Thông tin lây nhiễm........................................................ 77
Bảng 4.45 Thành phần giao diện Thông tin chi tiết địa điểm.............................................. 79
Bảng 4.46 Thành phần giao diện Tạo mới thông tin chia sẻ................................................ 80


Bảng 4.47 Thành phần giao diện Tạo mới thông tin lây nhiễm........................................... 81
Bảng 4.48 Thành phần giao diện Tạo mới địa điểm bán khẩu trang ................................... 82
Bảng 4.49 Các thành phần kiến trúc của Client................................................................... 87
Bảng 4.50 Các thành phần kiến trúc của Server .................................................................. 88
DANH MỤC HÌNH ẢNH
Hình 1.1 Bản đồ lây nhiễm của dịch COVID-19................................................................. 19
Hình 2.1 Cấu trúc của Spring Boot trong Spring Framework ............................................. 22
Hình 2.2 Các tính năng của MongoDB................................................................................ 24
Hình 2.3 Hiệu năng của MongoDB ..................................................................................... 25
Hình 2.4 Cấu trúc chung của Spring Data ........................................................................... 26
Hình 2.5 Cấu trúc hoạt động của React Native.................................................................... 29
Hình 3.1 Marker clustering .................................................................................................. 32
Hình 3.2 NCOVI.................................................................................................................. 34
Hình 4.1 Mơ hình use case ứng dụng................................................................................... 36
Hình 4.2 Sơ đồ thiết kế giao diện......................................................................................... 60

Hình 4.3 Giao diện Đăng ký ................................................................................................ 62
Hình 4.4 Giao diện Nhập mã OTP....................................................................................... 63
Hình 4.5 Giao diện Đăng nhập ........................................................................................... 64
Hình 4.6 Giao diện Quên mật khẩu...................................................................................... 65
Hình 4.7 Giao diện Trang chủ ........................................................................................... 66
Hình 4.8 Giao diện Menu ........................................................................................... 68 Hình
4.9 Giao diện Đăng xuất ........................................................................................... 69 Hình
4.10 Giao diện Tài khoản ........................................................................................... 70 Hình
4.11 Giao diện Quản lý tài khoản ............................................................................... 71 Hình
4.12 Giao diện Thay đổi mật khẩu.............................................................................. 72 Hình
4.13 Giao diện Thơng báo mật khẩu khơng chính xác................................................ 73 Hình
4.14 Giao diện Thơng báo cập nhật thành cơng.......................................................... 74 Hình
4.15 Giao diện Thơng tin tư vấn ................................................................................. 75 Hình
4.16 Giao diện Thơng tin COVID-19 ......................................................................... 76 Hình
4.17 Giao diện Thơng tin lây nhiễm ........................................................................... 77 Hình
4.18 Giao diện Thơng tin chi tiết địa điểm ................................................................. 78
Hình 4.19 Giao diện Tạo mới thơng tin chia sẻ ................................................................... 80
Hình 4.20 Giao diện Tạo mới thơng tin lây nhiễm .............................................................. 81
Hình 4.21 Giao diện Tạo mới địa điểm bán khẩu trang....................................................... 82
Hình 4.22 Giao diện Chọn vị trí thơng tin địa điểm ............................................................ 83


Hình 4.23 Giao diện Tạo mới địa điểm phát khẩu trang...................................................... 84
Hình 4.24 Kiến trúc tổng thể hệ thống................................................................................. 85
Hình 4.25 Kiến trúc của Client ........................................................................................... 86
Hình 4.26 Kiến trúc của Server ........................................................................................... 88

CHƯƠNG 1. TỔNG QUAN
1.1. Đặt vấn đề
Dịch COVID-19 là một dịch bệnh truyền nhiễm với tác nhân là virus SARS-CoV 2,

đang diễn ra trên phạm vi toàn cầu. Khởi nguồn vào tháng 12 năm 2019 với tâm dịch đầu
tiên được ghi nhận tại thành phố Vũ Hán thuộc miền Trung Trung Quốc, bắt nguồn từ một
nhóm người mắc viêm phổi không rõ nguyên nhân. Giới chức y tế địa phương xác nhận
rằng trước đó họ đã từng tiếp xúc, chủ yếu là với những thương nhân buôn bán và làm việc
tại chợ bán buôn hải sản Hoa Nam, nơi được cho là địa điểm bùng phát dịch bệnh đầu tiên.
Các nhà khoa học Trung Quốc đã tiến hành nghiên cứu và phân lập được một chủng loại
coronavirus mới, được Tổ chức Y tế Thế giới lúc đó tạm thời gọi là 2019- nCoV, có trình tự
gen giống với SARS-CoV trước đây với mức tương đồng lên tới 79,5%.
Phương thức lây truyền chủ yếu của nó hiện nay là lây truyền từ người sang người,
thường được lây lan thông qua các giọt dịch hô hấp mà con người hắt hơi, ho hoặc thở ra.
Một người nhiễm bệnh có thể xuất hiện các triệu chứng sau thời gian ủ bệnh kéo dài từ 2
đến 14 ngày, trung bình là 5 ngày, trong thời gian đó vẫn có khả năng truyền nhiễm.
Virus COVID-19 chủ yếu ảnh hưởng đến đường hô hấp dưới (cũng có trường hợp có
các triệu chứng ở đường hơ hấp trên nhưng ít gặp hơn) và dẫn đến một loạt các triệu chứng
được mô tả giống như cúm bao gồm sốt, ho, khó thở, đau cơ và mệt mỏi, với sự phát triển
cao hơn nữa sẽ dẫn đến viêm phổi, hội chứng suy hơ hấp cấp tính, nhiễm trùng huyết, sốc
nhiễm trùng và có thể gây tử vong.
Tổ chức Y tế Thế giới WHO đã tuyên bố gọi COVID-19 là một tình huống khẩn cấp y
tế tồn cầu kể từ ngày 30 tháng 1 năm 2020 và là một đại dịch kể từ ngày 11 tháng 3 năm
2020. Tính tới ngày 16 tháng 6 năm 2020, đã có hơn 8 triệu trường hợp nhiễm COVID-19,
hơn 4 trăm nghìn trường hợp tử vong được ghi nhận tại hơn 231 quốc gia và vùng lãnh thổ
trên khắp thế giới.

19


Hình 1.1 Bản đồ lây nhiễm của dịch COVID-19
Trước tình hình diễn biến phức tạp của dịch COVID-19 cần có những biện pháp nhằm
bảo vệ sức khoẻ của mọi người bao gồm: hạn chế đi lại, phong toả kiểm dịch, ban bố tình
trạng khẩn cấp, sử dụng lệnh giới nghiêm, tiến hành cách ly xã hội, huỷ bỏ các sự kiện

đơng người, đóng cửa trường học và những cơ sở dịch vụ, kinh doanh ít quan trọng,
khuyến khích người dân tự nâng cao ý thức phòng bệnh, hạn chế ra ngồi, đồng thời
chuyển đổi mơ hình hoạt động kinh doanh, học tập, làm việc từ truyền thống sang trực
tuyến.
Vì lẽ đó nên em chọn đề tài này nhằm giúp đỡ mọi người theo dõi tình hình dịch
COVID-19 một cách nhanh nhất, chính xác nhất, cung cấp cho mọi người các địa điểm
bán khẩu trang, phát khẩu trang trên cả nước Việt Nam để mọi người có thể bảo vệ mình
tránh bị lây nhiễm dịch COVID-19.
1.2. Mục tiêu và phạm vi
1.2.1. Mục tiêu
- Nghiên cứu, tìm hiểu và thu thập các số liệu thống kê về tình hình dịch bệnh

COVID-19 từ các nguồn Bộ Y Tế, WHO.
- Thu thập thông tin về các địa điểm bán khẩu trang, phát khẩu trang trên tồn quốc

thơng qua mạng xã hội, các phương tiện thông tin đại chúng.

20
- Xây dựng ứng dụng di động đa nền tảng (Android và iOS).
- Hiển thị bản đồ trực quan.
- Xây dựng Back-end đảm bảo tính security, sử dụng JWT để Authentication. -

Tư vấn các thông tin mùa dịch.
- Thơng báo khi đi vào vùng có dịch lây nhiễm.


- Thiết kế UI/UX theo xu hướng Material Design.

1.2.2. Phạm vi
- Phạm vi địa lý: Việt Nam và thế giới.

- Phạm vi độ tuổi: mọi lứa tuổi.
- Phạm vi giới tính: mọi giới tính.
- Phạm vi chức năng:

• Chia sẻ thông tin: thông tin dịch bệnh COVID-19, thông tin địa điểm bán khẩu
trang, thông tin địa điểm bán nước rửa tay.
• Xác nhận thơng tin.
• Tìm địa điểm di duyển an tồn, tránh dịch bệnh.
• Tư vấn thơng tin mùa dịch.
• Chia sẻ thơng tin lây nhiễm.
• View bản đồ trực quan.
• Thơng báo khi sắp di chuyển vào vùng nguy hiểm có dịch.
• Quản lý thơng tin người dùng.
1.3. Nội dung thực hiện
- Nghiên cứu công nghệ và phân tích thiết kế hệ thống.
- Thiết kế giao diện ứng dụng.
- Xây dựng cấu trúc project.
- Xây dựng ứng dụng.
- Hoàn thiện ứng dụng.
- Xuất bản.

21
1.4. Kết quả dự kiến
- Nghiên cứu, thu thập đầy đủ thông tin số liệu về dịch COVID-19 bao gồm số ca

mắc bệnh, số ca tử vong, số ca hồi phục của các nước có ca nhiễm trên tồn thế
giới.
- Nghiên cứu, thu thập thơng tin của hơn 300 địa điểm bán khẩu trang, phát khẩu

trang trên toàn quốc.



- Hiển thị thơng tin tình hình dịch bệnh COVID-19, hiển thị thông tin các địa điểm

bán khẩu trang, phát khẩu trang.
- Hiển thị thông tin tư vấn mùa dịch bệnh liên quan đến COVID-19. - Chia

sẻ thông tin lây nhiễm của các ca nhiễm COVID-19 tại Việt Nam. - Thơng
báo khi di chuyển vào vùng nguy hiểm có dịch.
- Hoàn thành chức năng tạo mới địa điểm bán khẩu trang, phát khẩu trang.
- Hoàn thành chức năng xác nhận còn hàng, hết hàng với các địa điểm bán khẩu

trang, phát khẩu trang.
- Hoàn thành chức năng viết nhận xét, bình luận với các địa điểm bán khẩu trang,

phát khẩu trang.
- Hoàn thành chức năng quản lý người dùng.
- Hiển thị bản đồ trực quan.

22

CHƯƠNG 2. CÔNG NGHỆ SỬ DỤNG
2.1. Spring boot
2.1.1. Khái niệm
Spring Boot[1] là một module thuộc Spring Framework được viết bằng ngơn ngữ lập
trình Java. Spring Boot cung cấp tính năng RAD (Rapid Application Development – phát
triển ứng dụng nhanh).
Khi xây dựng ứng dụng với Spring Boot sẽ giúp lập trình viên xây dựng các ứng dụng
Spring nhanh chóng. Nó giúp cho các lập trình viên đơn giản hố q trình lập trình một
ứng dụng với Spring, chỉ tập trung vào việc phát triển xử lý nghiệp vụ cho ứng dụng.



Hình 2.1 Cấu trúc của Spring Boot trong Spring Framework
Spring Boot được dùng để tạo các ứng dụng độc lập dựa trên Spring, khơng u cầu
cấu hình XML. Nó là một chuẩn cho cấu hình thiết kế phần mềm, tăng năng suất cho nhà
phát triển.
Spring boot hỗ trợ nhiều ngôn ngữ lập trình như: Java, Groovy, Kotlin.

23
2.1.2. Tại sao dùng Spring Boot
- Spring Boot giúp xây dựng nên các ứng dụng Spring độc lập (stand-alone) dưới

dạng một tập tin JAR. Dễ dàng triển khai ứng dụng mà không cần cấu hình gì
thêm.
- Tối ưu cơng đoạn cấu hình cho ứng dụng Spring, khơng sinh code cấu hình và

khơng u cầu phải cấu hình XML.
- Hỗ trợ lập trình AOP (Aspect Oriented Programming – lập trình hướng khía cạnh)

nhằm phân tách chương trình thành các module riêng rẽ, phân biệt, khơng phụ
thuộc vào nhau.
- Chạy đa nền tảng, chỉ cần cài đặt JVM.
- Tốc độ xử lý nhanh, hiệu năng cao.
- Spring Boot dễ học, phổ biến và được cộng đồng hỗ trợ nhiều.
- Dễ dàng tích hợp với các framework khác trong hệ sinh thái Spring. -

Bản thân có 1 năm kinh nghiệm làm việc với Spring Boot.


2.1.3. Áp dụng Spring Boot vào đề tài

- Sử dụng Spring Boot để xây dựng server Back-end, tạo các API cho ứng dụng. -

Áp dụng kiến trúc REST API.
- Sử dụng cache để tăng hiệu năng.

2.2. MongoDB
2.2.1. Giới thiệu về MongoDB
MongoDB [2] là một hệ quản trị cơ sở dữ liệu mã nguồn mở NoSQL phổ biến.
MongoDB được tạo bởi Dwight Merriman và Eliot Horowitz.

24

Hình 2.2 Các tính năng của MongoDB
MongoDB là cơ sở dữ liệu hướng tài liệu (document), các dữ liệu được lưu trữ trong
document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh.
Ngồi ra document kiểu JSON này cịn hỗ trợ schema động linh hoạt, nên những nhà phát
triển ứng dụng có thể lưu bản ghi mà khơng cần phải lo lắng về cấu trúc dữ liệu như là số
trường, kiểu của trường lưu trữ.


MongoDB là một cơ sở dữ liệu NoSQL hỗ trợ đa nền tảng, nó có thể chạy trên
Windows, Linux và MacOS, hỗ trợ nhiều ngơn ngữ lập trình phổ biến như C#, Java, PHP,
Javascript,… trong các môi trường phát triển khác nhau.
2.2.2. Tại sao nên sử dụng MongoDB
- Schema linh hoạt: MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON

nên mỗi một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt
trong việc lưu trữ dữ liệu.
- Dữ liệu trong MongoDB khơng có sự ràng buộc lẫn nhau, khơng có join như trong


RDBMS (cơ sở dữ liệu quan hệ) nên khi thay đổi dữ liệu khơng phải mất thời gian
kiểm tra xem có thoả mãn các ràng buộc dữ liệu như trong RDBMS.

25
- Không cần định nghĩa kiểu dữ liệu ở dưới database.
- MongoDB rất dễ mở rộng.
- Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn

thông tin đạt hiệu suất cao nhất.
- Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ RAM, để phục vụ

lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng. - Hiệu năng
cao: tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn so
với các hệ quản trị cơ sở dữ liệu quan hệ RDBMS.


Hình 2.3 Hiệu năng của MongoDB
2.2.3. Áp dụng MongoDB vào đề tài
- Nhờ sự linh động của MongoDB, dễ dàng khai báo các collection bằng các java

class.
- Back-end sử dụng Spring Data để kết nối MongoDB truy vấn dữ liệu.

26
2.3. Spring Data
2.3.1. Giới thiệu
Spring Data [3] là một dự án lớn của cơng ty SpringSource, với mục đích tạo sự thống
nhất và dễ dàng kết nối đến nhiều kiểu lưu trữ, hỗ trợ hệ quản trị cơ sở dữ liệu SQL và
NoSQL. Spring Data bao gồm nhiều module tương ứng với các hệ quản trị cơ sở dữ liệu
khác nhau. Ví dụ như với hệ quản trị cơ sở dữ liệu MongoDB thì sẽ có Spring Data

MongoDB, với MySQL thì sẽ có Spring Data JDBC,…

Hình 2.4 Cấu trúc chung của Spring Data
Spring Data cung cấp các interface có sẵn, thơng dụng. Bất kì hệ quản trị cơ sở dữ liệu
nào thì khi truy vấn dữ liệu sử dụng các chức năng như: thêm, sửa, xố, tìm kiếm theo
khố chính, tìm theo thuộc tính.
Hỗ trợ nhiều hệ quản trị cơ sở dữ liệu như MySQL, SQL Server, MongoDB, Redis,
Cassandra, ArangoDB, Aerospike,…


2.3.2. Tại sao nên sử dụng Spring Data
- Dễ dàng tích hợp với Spring Boot.

27
- Cung cấp sẵn các interface phổ biến, giảm thiểu thời gian code.
- Hỗ trợ tốt cho MongoDB.
- Dễ dàng tuỳ chỉnh các interface phù hợp với mục đích của nhà phát triển. -

Dễ dàng ánh xạ với các đối tượng trên custom object.
- Hỗ trợ tính minh bạch, chính xác của data thơng qua thời gian tạo, thời gian chỉnh

sửa (created_date, last_updated_date).
- Có thể làm việc với các dữ liệu trên các kho dữ liệu khác nhau.

2.3.3. Áp dụng Spring Data vào đề tài
Hệ quản trị cơ sở dữ liệu của đề tài dùng MongoDB nên module là Spring Data
MongoDB.
Khi sử dụng Spring Data MongoDB chỉ cần khai báo các object trên code mà không
cần quan tâm đến định nghĩa thuộc tính ở dưới database. Khi thêm/sửa/xố các giá trị của
các thuộc tính thì nó sẽ tự động được cập nhật phía dưới database. Điều này giúp giảm

thiểu code, rút ngắn thời gian và dễ dàng phát triển ứng dụng.
2.4. Spring Security
2.4.1. Giới thiệu
Spring Security [4] là một framework tập trung vào việc cung cấp khả năng xác thực
và phân quyền khi thực thi tác vụ trên Spring.
Spring Security cung cấp 2 cơ chế cơ bản:
- Authentication: cơ chế xác thực để user có thể được quyền truy cập và sử dụng ứng

dụng. Đăng nhập hoặc đăng ký tài khoản để hoàn thành bước này. Đây là bước
đầu tiên để xác thực user.
- Authorization: cung cấp cơ chế phân quyền xác định một hành động, một thao tác

của user có được phép hay khơng.
2.4.2. Tại sao nên sử dụng Spring Security
- Dễ dàng tích hợp với Spring Boot.
- Cho phép kế thừa lại các lớp để thay đổi luồng.
- Hỗ trợ xác thực và phân quyền trong hệ thống.


28
- Chống XSS, CSRF.
- Có thể tích hợp với Servlet API.
- Mã hoá mật khẩu
- Hỗ trợ OAuth 2.0, JWT.

2.4.3. JWT (JSON Web Token)
JSON Web Token (JWT) là một tiêu chuẩn mở (RFC 7519) định nghĩa một cách nhỏ
gọn và khép kín để truyền tin an tồn thơng tin giữa các thành viên dưới dạng một đối
tượng JSON. Thông tin này có thể được xác thực và đánh dấu tin cậy nhở vào “chữ ký”
của nó. Phần chữ ký của JWT sẽ được mã hoá lại bằng HMAC hoặc RSA.

Một trong những tình huống ứng dụng JWT thường gặp đó là:
- Authentication: Khi user logged in, mỗi request tiếp theo đó đều kèm theo chuỗi

token JWT, cho phép người dùng có thể truy cập đường dẫn, dịch vụ và tài nguyên
được phép ứng với token đó. Single Sign On cũng là một chức năng có sử dụng
JWT một cách rộng rãi, bởi vì chuỗi JWT có kích thước đủ nhỏ để đính kèm trong
request và sử dụng ở nhiều hệ thống thuộc các domain khác nhau.
- Information Exchange: JSON Web Token cũng là một cách hữu hiệu và bảo mật để

trao đổi thơng tin giữa nhiều ứng dụng, bởi vì JWT phải được ký (bằng cặp
public/private key), bạn có thể chắc chắn rằng người gửi chính là người mà họ nói
rằng họ là ai (nói tóm tắt hơn là khó có thể mạo danh bằng JWT). Ngồi ra chữ ký
cũng được tính tốn dựa trên nội dung của header và nội dung của payload, nhờ đó
có thể xác thực được nội dung nguyên bản, chưa được chỉnh sửa hoặc can thiệp.
Tuy nhiên một lưu ý hết sức quan trọng là do cấu trúc của JWT đơn giản nên JWT
có thể dễ dàng bị decode, do vậy không nên dùng JWT để transfer các thông tin
nhạy cảm.
2.4.4. Áp dụng vào đề tài
Sử dụng SHA512 để mã hoá mật khẩu người dùng.
Sử dụng Spring Security kết hợp với JWT để bảo mật thông tin người dùng, khi user
gửi request đến tài nguyên hệ thống cần đính kèm token.

29
Token có thời hạn là 24 giờ, sau khi hết hạn token cần phải gọi API refesh token để
lấy token mới. Token hết hạn sẽ không thể sử dụng được.


Sau khi đăng nhập, Server sẽ trả response kèm theo token ứng với username và
password đã đăng nhập. Ứng dụng mobile sẽ lưu trữ token này vào Local Storage để tiện
cho việc sử dụng sau này.

2.5. React Native
2.5.1. Giới thiệu React Native
React Native [5] là một framework do công ty công nghệ nổi tiếng Facebook phát
triển, cho phép các lập trình viên sử dụng ngơn ngữ JavaScript để lập trình ứng dụng đa

nền tảng trên cả Android và iOS với giao diện native. React Native được phát triển nhằm
mục đích giải quyết bài tốn hiệu năng và chi phí khi mà phải viết lại nhiều ngôn ngữ
native cho từng nền tảng di động.

Hình 2.5 Cấu trúc hoạt động của React Native
React Native tạo ra ứng dụng native chứ không phải hybrid app như ionic, meteor,…


×