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

Lập trình ứng dụng trên Android (quản lý điểm danh bằng QR code)

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 (2.84 MB, 69 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC VĂN HIẾN

KHOA CƠNG NGHỆ THƠNG TIN

TIỂU LUẬN MƠN HỌC
LẬP TRÌNH DI ĐỘNG

XÂY DỰNG ỨNG DỤNG PHẦN MỀM QUẢN
LÝ ĐIỂM DANH BẰNG QR CODE

GVHD : Dương Quang Triết
SVTH : Lê Thành Công
MSSV : 161A010130
Lớp

: 161A0101


TP. Hồ Chí Minh – Tháng 1 Năm 2020



LỜI MỞ ĐẦU
Ngày nay, cơng nghệ thơng tin đang có sự phát triển mạnh mẽ của và được ứng
dụng sâu rộng trong nhiều lĩnh vực. Máy tính dần trở thành một công cụ hỗ trợ đắc lực
cho con người, khiến cho nó trở nên thiết yếu và thân thuộc hơn với mọi người.
Một điển hình tiêu biểu trong việc phổ biến công nghệ thông tin phải kể đến
việc ứng dụng sức mạnh tính của máy tính trong hoạt động quản lý giáo dục của
trường đại học. Để công tác giáo dục được diễn ra suôn sẻ, trường Đại học Văn Hiến
nói chung và khoa Kỹ thuật cơng nghệ nói riêng cần phải xử lý đồng thời rất nhiều


những thông tin như thông tin về sinh viên, giảng viên, lên kế hoạch tổ chức các lớp
học phần, đặc biệt là phần điểm danh sinh viên cịn khá lạc hậu vì chưa tích hợp cơng
nghệ để giải quyết nhanh hơn, chính xác hơn… Những khối thơng tin đó cần phải
được hệ thống, phân loại và tổ chức thành các khối dữ liệu đồng bộ, phải được xử lý
và trích xuất một cách dễ dàng. Với một khối lượng thông tin khổng lồ mà nhà trường
phải xử lý thì việc phải sử dụng tới sức mạnh của máy tính là một điều tất yếu.
Xuất phát từ những yêu cầu đó, em quyết định chọn đề tài “Xây dựng ứng dụng
phần mềm quản lý điểm danh bằng QR code” làm đề tài cho học phần Đồ án tốt
nghiệp chuyên ngành Hệ thống thông tin.


NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ tên sinh viên thực hiện: Lê Thành Công
MSSV: 161A010130

Lớp: 161A0101

Ngành: Công Nghệ Thông Tin

Niên khóa: 2016-2020

Tên đề tài: Xây dựng phần mềm quản lý điểm danh bằng QR code
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................

.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
Tp.Hồ Chí Minh, ngày tháng năm 2020
GIÁO VIÊN HƯỚNG DẪN
(Ký và ghi rõ họ tên)


LỜI CẢM ƠN
Để hồn thành khóa luận này, em xin tỏ long biết ơn sâu sắc đến Thầy Dương
Quang Triết, đã tận tình hướng dẫn, chỉ dạy trong suốt quá trình thực hiện đề tài khóa
luận tốt nghiệp.
Em xin chân thành cảm ơn quý thầy, cô trong khoa Kỹ Thuật – Cơng Nghệ đã
hết lịng chỉ dạy và truyền đạt những kiến thức trong những năm học vừa qua. Với vốn
kiến thức được tiếp thu trong q trình học khơng chỉ là nền tảng cho q trình nghiên
cứu khóa luận mà còn là hành trang quý bàu để em bước vào đời một cách vững chắc
cà tự tin.
Và cũng xin cám ơn những người thân, bạn bè đã động viên và hết mình giúp
đỡ để có thể hồn thành khóa luận tốt nghiệp đúng thời hạn.
Suốt khoảng thời gian qua, dù rất cố gắng, một phần cũng do kiến thức cịn hàn
chế nên bài khóa luận này khó tránh khỏi những sai sót. Em rất mong được nhận ý
kiến đóng góp của Thầy, Cơ để bài khóa luận này được hồn hảo hơn.
Trân trọng cám ơn!


Tp.Hồ Chí Minh, ngày tháng năm 2020
Sinh viên thực hiện
(Ký tên và ghi rõ họ tên)


LỜI CAM ĐOAN

Em xin cam đoan đây là cơng trình tự nghiên cứu và thực hiện của riêng em.
Các tài liệu được trích dẫn trong luận án là trung thực, có nguồn gốc và xuất xứ rõ
ràng. Các kết quả nghiên cứu của luận án chưa được công bố trong bất kỳ cơng trình
nghiên cứu nào khác.

Tp.Hồ Chí Minh, ngày tháng năm 2020
Sinh viên thực hiện
(Ký tên và ghi rõ họ tên)


MỤC LỤC

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN............................................................0
CHƯƠNG 1: MỞ ĐẦU.................................................................................................1
Lý do chọn đề tài:........................................................................................................1
Mục tiêu nghiên cứu:...................................................................................................1
Phạm vi nghiên cứu:....................................................................................................1
Phương pháp thực hiện:...............................................................................................2
Kế hoạch thực hiện :....................................................................................................2
CHƯƠNG 2: MÔ TẢ BÀI TỐN.................................................................................4
2.1 u cầu của bài tốn:..........................................................................................4
2.2 Phân tích chi tiết yêu cầu bài toán:......................................................................4

2.3 Khảo sát hệ thống:..............................................................................................5
2.4 Quy trình xử lý:...................................................................................................6
CHƯƠNG 3: CƠ SỞ LÝ THUYẾT:.............................................................................7
3

Ngơn ngữ Flutter:................................................................................................7

3.1 Giới thiệu về Flutter:..............................................................................................7
3.1.1 Lý do sử dụng Flutter:.....................................................................7
3.2 Nền tảng Server AWS.......................................................................................10
3.3 Hệ quản trị cơ sở dữ liệu PostgreSQL:..............................................................12
3.4 Android Studio:.................................................................................................12
3.5 Git và Github:...................................................................................................13
3.6 Các thư viện được sử dụng:...............................................................................14
3.6.1QR Scanner:......................................................................................14
3.6.2 Http request:..................................................................................14


3.6.3 JSON Web Token:..........................................................................14
3.7 ERP Odoo.........................................................................................................15
3.8 Python............................................................................................................... 16
3.9 Phương pháp triển khai:....................................................................................18
3.9.1 Lập trình hướng đối tượng:............................................................18
3.9.2 Mơ hình MVC:..............................................................................20
3.10 Các kỹ thuật sử dụng trong phát triển ứng dụng:..............................................21
3.10.1 Bloc Pattern:................................................................................21
3.10.2 Scoped Model..............................................................................22
3.10.3 Restful API:.................................................................................22
CHƯƠNG 4: PHÂN TÍCH THIẾT KẾ HỆ THỐNG:.................................................24
4.1 Sơ đồ luồng dữ liệu DFD:.................................................................................24

4.1.1 Sơ đồ DFD tổng quát:....................................................................24
4.1.2 Sơ đồ DFD chi tiết:........................................................................25
4.2 Sơ đồ ERD:.......................................................................................................30
4.3 Sơ đồ vật lý dữ liệu:..........................................................................................33
CHƯƠNG 5: XÂY DỰNG ỨNG DỤNG :..................................................................36
5.1 Sơ đồ chức năng:...............................................................................................36
5.2 Chức năng xác thực:..........................................................................................37
5.3 Chức năng quản lý user:....................................................................................40
5.4 Chức năng quản lý khoá học:............................................................................42
5.5 Chức năng quản lý buổi học:.............................................................................44
5.6 Chức năng quản lý các buổi điểm danh:...........................................................45
5.7 App mobile điểm danh bằng QR:......................................................................47
5.7.1 Trang đăng nhập app........................................................................47


5.7.2 Giao diện màn hình trang chủ..........................................................48
5.7.3 Giao diện màn hình điểm danh.........................................................49
5.7.4 Giao diện màn hình Scan.................................................................50
CHƯƠNG 6: KẾT LUẬN:..........................................................................................52
6.1 Kết quả đạt được:..............................................................................................52
6.2 Những hạn chế:....................................................................................................52
6.3 Hướng phát triển của đề tài:..............................................................................52
Tài liệu tham khảo.......................................................................................................53


DANH MỤC HÌNH ẢNH
Hình 3.1 Ưu điểm về UI của flutter...............................................................................
Hình 3.2 respository của flutter trên github.................................................................
Hình 1.3 Bản đồ nơi đặt các server của AWS................................................................
Hình 3.2 Một JSon Web Token......................................................................................

Hình 3.3 Các thành phần của một JSon Web Token.......................................................
Hình 3.4 Các đặc điểm của lập trình hướng đối tượng...................................................
Hình 3.5 Mơ hình MVC.................................................................................................
hình 3.6 mơ tả Bloc Pattern............................................................................................
Hình 3.7 Restful API......................................................................................................
Hình 4.1 Sơ đồ DFD tổng quát......................................................................................
Hình 4.2 Sơ đồ DFD quản lý phịng học........................................................................
Hình 4.3 sơ đồ DFD quản lý sinh viên...........................................................................
Hình 4.5 Sơ đồ DFD quản lý giảng viên........................................................................
Hình 4.6 Sơ đồ DFD quản lý mơn học...........................................................................
Hình 4.7 Sơ đồ DFD quản lý lớp học phần....................................................................
Hình 4.8 Sơ đồ ERD......................................................................................................
Hình 4.9 Sơ đồ vật lý dữ liệu.........................................................................................
Hình 5.1 Sơ đồ chức năng của website..........................................................................
Hình 5.2 Sơ đồ chức năng của website..........................................................................
Hình 5.3 Lưu đồ giải thuật chức năng xác thực tài khoản quản trị.................................
Hình 5.4 Giao diện trang đăng nhập..............................................................................
Hình 5.5 Thơng báo lỗi xác thực trong form đăng nhập................................................
Hình 5.6 Giao diện trang quản trị..................................................................................
Hình 5.7 Trang giao diện chức năng quản lý user..........................................................


Hình 5.8 Trang thêm mới một sinh viên........................................................................
Hình 5.9 Trang tạo xem các khố học hiện có...............................................................
Hình 5.10 Trang tạo mới khố học.................................................................................
Hình 5.11 Trang xem buổi học.......................................................................................
Hình 5.12 Trang thêm mới buổi học..............................................................................
Hình 5.13 Trang xem các buổi học đã đăng ký..............................................................
Hình 5.14 Giao diện xem danh sách các buổi điểm danh...............................................
Hình 5.15 Giao diện xem danh sách các buổi điểm danh...............................................

Hình 5.16 Trang đăng nhập app.....................................................................................
Hình 5.17 Lưu đồ trang đăng nhập app..........................................................................
Hình 5.18 Giao diện trang chủ app................................................................................
Hình 5.19 Giao diện trang điểm danh............................................................................
Hình 5.20 Giao diện trang scan......................................................................................
Hình 5.21 Lưu đồ sử lý dữ liệu scan và lưu hệ thống....................................................


DANH MỤC CÁC TỪ VIẾT TẮT
Ký hiệu
API
CLI
CSS
DFD
DI
ERD
HTML
HTTP
IDE
IIS
IoC
JWT
MVC
OOP
ORM
RDBMS
UI
UX
RN


Ý nghĩa
Application programming interface
Command-line interface
Cascading style sheets
Data flow diagram
Depency injection
Entity relationship diagram
Hypertext markup language
Hypertext transfer protocol
Integrated development environment
Internet information services
Inversion of control
JSon web token
Model - view - controller
Object oriented programming
Object-relational mapping
Relational database management system
User interface
user experience design
React Native


Trang 1

CHƯƠNG 1: MỞ ĐẦU
Lý do chọn đề tài:
Ngày nay, công nghệ ngày càng phát triển, nhu cầu ứng dụng công nghệ thông
tin vào tất các lĩnh lực trong xã hội là điều tất yếu. Trong đó, điển hình là công tác ứng
dụng công nghệ thông tin vào lĩnh vực quản lý giáo dục.
Các thao tác đề làm trên giấy nên việc sai sót, mất mát dữ liệu và khơng mang

tính tập trung. Do đó, áp dụng cơng nghệ thơng tin vào cho ngành quản lý giáo dục là
vô cùng cần thiết để nâng cao hiệu quả và chất lượng giảng dạy cho nhà trường.
Nếu dự án hồn thành, cơng tác quản lý sẽ được dễ dàng và chặc chẽ hơn, các
cơng việc sẽ hồn thanh nhanh chóng hơn. Các lợi ích mà nó mang lại có thể kể đến
như:
-

Khơng phải quản lý thủ công (giấy tờ, sổ sách...).
Một lượng lớn sinh viên thì quản lý thủ cơng rất khó khăn. Do vậy phần ứng

-

dụng web này với mục đích nâng cao hiệu quả trong quá trình quản lý giáo dục.
Bảo mật thông tin về điểm của sinh viên.
Tối ưu được thời gian và công sức trong quản lý giáo dục so với quản lý thủ
công.
Nắm bắt yêu cầu này, em đã lên kế hoạch xây dựng một ứng dụng web nhằm

quản lý sinh viên cho khoa Công nghệ thông tin trường đại học Văn Hiến.
Mục tiêu nghiên cứu:
Xây dựng hệ thống thông tin quản lý giáo dục cho khoa Công nghệ thông tin
trường đại học Văn Hiến, từng bước kết nối với hệ thống thông tin thống kê cho liên
khoa và trường, thay thế công việc điểm danh trên giấy bằng các công nghệ điện tử.
Ứng dụng công nghệ để hiện đại hóa, giảm chi phí, nâng cao chất lượng cho
công tác đào tạo nguồn nhân lực.
Phạm vi nghiên cứu:
Do phạm vi và khả năng nghiên cứu có hạn, em chỉ chỉ tập trung phân tích và
xây dựng hệ thống ở phía quản trị cho đồ án này.



Trang 2

Đồ án khơng xử lý tồn bộ các vấn đề xảy ra trong quá trình quản lý giáo dục
của khoa Công nghệ thông tin, mà chỉ tập trung vào khía cạnh quản lý sinh viên.
Đồ án được thực hiện dựa trên cơ sở lý thuyết cơ bản về Phân tích thiết kế hệ
thống thơng tin để thiết kế và tổ chức dữ liệu, cùng với kiến thức lập trình hướng đối
tượng để xây dựng ứng dụng web quản lý một cách hoàn chỉnh.
Phương pháp thực hiện:
Trong vấn đề lập trình cho ứng dụng web của đề tài này, đồ án này sẽ sử dụng
một mơ hình lập trình đang khá thịnh hành hiện nay đó là mơ hình MVC (ModelController-View) cùng với xây dựng một server/domain làm web quản lý cũng như nơi
lưu trữ data, với xây dựng một app mobile xử lý việc điểm danh sinh viên qua app sử
dụng Flutter làm UI-UX và PostgreSQL - Odoo làm database.
Các chức năng dự kiến:
Dựa vào những kiến thức học được từ các môn học trong chuyên ngành hệ
thống thông tin, đồ án sẽ phân tích thiết kế hệ thống quản lý giáo dục nhằm mục đích:









Điểm danh sinh viên qua app mobile
Quản lý sinh viên.
Quản lý giảng viên chuyên mơn.
Quản lý phịng học.
Quản lý các lớp học phần.
Quản lý chi phí

Xử lý điểm danh các sự kiện
Lập lịch thời khóa biểu cho sinh viên và giảng viên.

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

Cơng việc thực hiện

Mơ tả
Tìm hiểu ngun tắc làm việc và xây dựng

1

Khởi tạo dự án.

kế hoạch khởi tạo hệ thống.
Xây dựng các nguyên tắc quản lý và tài
liệu tham khảo cho hệ thống.


Trang 3

2

3

Xác định u cầu hệ
thống

Mơ hình hóa u cầu


Lập kế hoạch phỏng vấn người dùng, đưa
ra các yêu cầu nghiệp vụ, yêu cầu chức
năng hệ thống và yêu cầu phi chức năng.
Mơ hình hóa các u cầu dưới dạng sơ đồ,
mô tả tổng quan về hệ thống.
Thiết kế chi tiết về hệ thống bao gồm:

4

Thiết kế

Thiết kế logic dữ liệu.
Thiết kế giao diện.

5

6

7

Cài đặt
Kiểm tra và thử nghiệm
hệ thống
Hoàn tất

Viết code cho hệ thống.
Kiểm tra lại toàn bộ các chức năng đã làm
theo yêu cầu đề ra ban đầu, thử nghiệm
với dữ liệu mẫu.

Tổ chức nghiệm thu sản phẩm.


Trang 4

CHƯƠNG 2: MƠ TẢ BÀI TỐN
2.1

u cầu của bài tốn:
Khoa Cơng nghệ thơng tin trường đại học Văn Hiến hiện đang đào tạo nhiều

chuyên ngành, mỗi năm tiếp nhận khoảng 200 tân sinh viên. Với số lượng lớn sinh
viên đang theo học tại khoa, nhu cầu quản lý đào tạo đặt ra bao gồm:
Chương trình đào tạo cho bậc đại học được quy định riêng cho mỗi khóa và
chương trình đào tạo chun ngành của từng khóa là do sinh viên lựa chọn. Chương
trình đào tạo có thể thay đổi theo từng khóa học và bao gồm nhiều mơn chuyên ngành.
Chương trình đào tạo được phân chia theo từng học kỳ, mỗi học kỳ sẽ tổ chức giảng
dạy 2 – 4 môn, và mỗi môn được mở một hoặc nhiều lớp học phần tương ứng.
Môn học thuộc về khoa do các giảng viên cơ hữu thuộc đúng chuyên môn phụ
trách giảng dạy. Ngồi ra, nếu khơng có giảng viên có chun mơn phù hợp với mơn
học, khoa sẽ thỉnh giảng các giảng viên tại các trường đại học khác để dạy các học
phần đó.
Trong mỗi buổi học thời gian điểm danh sinh viên mất khá nhiều thời gian và
dữ liệu không tập trung mà chỉ quản lý trên thiết bị của giảng viên. Vì vậy cần áp dụng
cơng nghệ để giải quyết vấn đề này.
Mỗi khóa học ở bậc đại học được hoàn tất sau 4 năm. Sinh viên cần hồn tất tất
cả các mơn học bắt buộc và các chứng khác khác theo quy định để xét tốt nghiệp.
2.2

Phân tích chi tiết u cầu bài tốn:

Mỗi khoa có nhiều chương trình đào tạo, mỗi năm phải quản lý và cập nhật các

chương trình đào tạo này.
Lớp biên chế sinh viên bao gồm 100 sinh viên mỗi lớp. Nếu một sinh viên
khơng thuộc lớp biên chế thì có nghĩa là sinh viên đã thôi học.
Giảng viên được phân công giảng dạy các lớp học phần. Mỗi lớp biên chế sẽ do
một giảng viên làm cố vấn học tập.


Trang 5

Chương trình đào tạo phải được cập nhật mỗi năm, thêm mới các mơn học cho
khóa đào tạo mới. Các mơn học trong chương trình đã được phê duyệt thì khơng được
thay đổi.
Các lớp học phần được tổ chức dựa theo kế hoạch của chương trình đào tạo.
Phải có chức năng sắp xếp lịch học cho lớp học phần.
Sinh viên có thể đăng ký lớp học phần được mở dạy mỗi học kỳ.
Mỗi buổi học đều phải điểm danh và tất cả lớp trong tất cả các cơ sở làm điểm
danh nên yêu cầu thiết kế một database đủ lớn và phản hồi đủ nhanh để xử lý.
Các yêu cầu phi chức năng:
-

Giao diện hệ thống phải dễ sử dụng, trực quan, thân thiện với mọi người dùng.
Cho phép truy cập dữ liệu đa người dùng.
Tính bảo mật và độ an toàn cao.
Tốc độ xử lý của hệ thống phải nhanh chóng và chính xác.
Người sử dụng phần mềm có thể sẽ khơng biết nhiều về tin học nhưng vẫn sử

-


dụng một cách dễ dàng nhờ vào sự trợ giúp của hệ thống.
Phần hướng dẫn sử dụng phần mềm phải ngắn gọn, dễ hiểu và sinh động.
Cấp quyền chi tiết cho người sử dụng.

2.3 Khảo sát hệ thống:
Theo khảo sát tại khoa Công nghệ thông tin, hệ thống quản lý điểm sinh viên
trên hoạt động có mối liên quan chặt chẽ với nhau:
Bộ phận quản lý đào tạo: xây dựng chương trình đào tạo tồn khóa, cập nhật
mơn học, lập thời khóa biểu cho từng học kỳ trong năm và phân công giáo viên giảng
dạy cho từng lớp đảm bảo các môn học không bị chồng chéo.
Bộ phận quản lý sinh viên: quản lý hồ sơ sinh viên trong suốt quá trình sinh
viên học tập tại trường. Bộ phận phải đảm bảo các công việc quản lý sinh viên như khi
có khóa học mới nhập học, thay đổi hồ sơ sinh viên,… thì bộ phận này tiến hành cập
nhật danh sách sinh viên, danh sách ngành học, khóa học cho sinh viên. Các công việc
như thực hiện việc thay đổi lớp học, dừng học, thơi học, hỗn học,… được thực hiện
thủ cơng. Ngồi ra bộ phận này cũng làm nhiệm vụ lưu trữ hồ sơ của những sinh viên
đã ra trường và lưu lại vào file mềm.


Trang 6

2.4 Quy trình xử lý:
Khi sinh viên mới nhập trường thì bộ phận quản lý sinh viên tiến hành thống kê
thông tin sinh viên nhập học và cập nhật vào hồ sơ sinh viên, sau đó lưu các thơng tin
chi tiết về sinh viên tại hồ sơ sinh viên. Bộ phận quản lý sinh viên có nhiệm vụ thu
thập các thông tin cần thiết lưu vào dữ liệu sinh viên khóa mới.
Sau khi đã có các thơng tin của từng sinh viên, bộ phận quản lý sẽ tiến hành
phân lớp tách lớp theo các ngành sinh viên đã đăng kí, thống kê danh sách sinh viên
của từng lớp và nhật danh sách lớp học phần cho các sinh viên.
Bộ phận quản lý sẽ cập nhật danh sách các môn học, loại hình đào tạo, chi tiết

chương trình đào tạo. Sau khi đã phân lớp biên chế, tách lớp xong bộ phận đào tạo lập
kế hoạch đào tạo tồn khố và kế hoạch giảng dạy từng kỳ cho từng lớp.
Mỗi giảng viên cơ hữu sẽ phụ trách một số lớp. Sau khi hoàn tất giảng dạy lớp
học phần, khoa sẽ tổ chức thi hoặc làm tiểu luận, các giảng viên sẽ đánh giá cho điểm
từng sinh viên và ghi vào phiếu điểm của lớp học phần đó, kí xác nhận và gửi cho bộ
phận quản lý điểm. Bộ phận quản lý điểm sẽ kiểm tra lại một lần nữa, sau đó cập nhật
từng điểm từng học phần cho sinh viên. Và mỗi học phần sinh viên được thi lại một
lần. Nếu sinh viên thi lại lần 2 vẫn không đạt thì phải học lại mơn học đó.
Cuối mỗi kỳ học, bộ phận quản lý điểm lại tính điểm trung bình chung học kỳ
cho từng sinh viên, thống kê kết quả học tập của từng sinh viên.


Trang 7

CHƯƠNG 3: CƠ SỞ LÝ THUYẾT:
3 Ngôn ngữ Flutter:
3.1 Giới thiệu về Flutter:
Flutter là mobile UI framework của Google để tạo ra các giao diện chất lượng cao trên
iOS và Android trong khoảng thời gian ngắn. Flutter hoạt động với những code sẵn có
được sử dụng bởi các lập trình viên, các tổ chức.
Flutter hồn tồn miễn phí và cũng là mã nguồn mở.
3.1.1 Lý do sử dụng Flutter:
 Fast Development
Tíng năng Hot Reload hoạt động trong milliseconds để hiện thị giao diện tới
bạn. Sử dụng tập hợp các widget có thể customizable để xây dựng giao diện trong vài
phút. Ngồi ra Hot Reload cịn giúp bạn thêm các tính năng, fix bug tiết kiệm thời gian
hơn mà khơng cần phải thông qua máy ảo, máy android hoặc iOS.
 Expressive and Flexible UI
Có rất nhiều các thành phần để xây dựng giao diện của Flutter vô cùng đẹp mắt theo
phong cách Material Design và Cupertino, hỗ trợ nhiều các APIs chuyển động, smooth

scrolling...

Hình 3.1 Ưu điểm về UI của flutter


Trang 8

 Native Performance
Những đặc điểm chính của ngơn ngữ hướng đối tượng (Object-oriented
language) là tính đóng gói (encapsulation), kế thừa (inheritance), và đa hình
(polymorphism) và trừu tượng (abstraction) . C# hỗ trợ tất cả những đặc tính trên.
 Sử dụng Dart
Một ngơn ngữ lập trình hướng đối tượng do Google phát triển. DART là một
static type language nên nó là AOT (Ahead of Time), compile xong hết rồi mới chạy.
Trong khi đó nó cũng là JIT (Just in Time) giống như các dynamic type language. Khi
dev thì nó sử dụng JIT để hỗ trợ Hot Load và build release thì dùng AOT để tối ưu
hiệu năng như một native code bình thường
 Native module
Khác với JS Bridge, Flutter “nói chuyện” với các native module bằng chính các
native interface. Mặc dù vẫn được gọi là “bridge”, tuy nhiên nó nhanh hơn rất nhiều và
gân như không bị “thắc cổ chai” như React Native. Ngoài ra các module này được
kiến trúc theo “plugin”, các module viết cho Flutter phải tuân thủ các rule trong này.
Cá nhân mình thấy viết native module cho Flutter rất tự nhiên, không cần phải học các
syntax macro C/C++ như RN.
 Luồng xử lý của Flutter
Theo doc của Flutter Engine, có tới 4 threads (runners) được sử dụng trong app:
Platform Task Runner, UI Task Runner, GPU Task Runner và IO Task Runner. Các
threads này độc lập và không share memory với nhau, chúng giao tiếp với nhau thông
qua channels… tới đây ai fan golang sẽ hiểu và rất thích pattern này.
 Về Document

Về document: sở hữu bộ doc phải nói là khơng bỏ sót thứ gì. Đi từ cài đặt,
hướng dẫn viết app cơ bản cho tới CI/CD, debug, test và profiling. Bộ profiling của
Flutter cũng cực kì hay dùng để đo đạc các chỉ số về performance khá chi tiết.
 Các ví dụ và kiến trúc ứng dụng
Có hẳn 1 repository trên Github đủ hết các example cho Redux, mvc, mvu… tha hồ
chọn


Trang 9

hình 3.2 respository của flutter trên github


Trang 10

3.2 Nền tảng Server AWS
Amazon Web Services (AWS) là nền tảng đám mây toàn diện và được sử dụng
rộng rãi nhất, cung cấp trên 175 dịch vụ đầy đủ tính năng từ các trung tâm dữ liệu trên
tồn thế giới. Hàng triệu khách hàng—bao gồm các công ty khởi nghiệp tăng trưởng
nhanh nhất, các tập đoàn lớn nhất cũng như các cơ quan hàng đầu của chính phủ—đều
tin tưởng vào AWS để giảm chi phí, trở nên linh hoạt hơn và đổi mới nhanh hơn.
AWS có nhiều dịch vụ hơn và nhiều tính năng hơn trong các dịch vụ đó, hơn
bất kỳ nhà cung cấp đám mây nào khác–từ các cơng nghệ cơ sở hạ tầng như máy tính,
ổ lưu trữ và cơ sở dữ liệu–đến các công nghệ mới nổi, như machine learning và trí tuệ
nhân tạo, kho dữ liệu và phân tích, và Internet of Things. Điều này giúp bạn chuyển
các ứng dụng hiện có của bạn lên đám mây nhanh hơn, dễ dàng hơn và hiệu quả hơn
về chi phí cũng như xây dựng gần như mọi thứ bạn có thể hình dung.
Dịch vụ: AWS cũng có chức năng sâu nhất trong các dịch vụ đó. Ví dụ, AWS
cung cấp nhiều loại cơ sở dữ liệu nhất được xây dựng có mục đích cho các loại ứng
dụng khác nhau để bạn có thể chọn cơng cụ phù hợp cho cơng việc để có chi phí và

hiệu suất tốt nhất.
Cộng đồng: AWS có cộng đồng lớn và linh hoạt nhất với hàng triệu khách hàng
hoạt động và hàng chục ngàn đối tác trên toàn cầu. Khách hàng trên hầu hết các ngành
công nghiệp thuộc mọi quy mô, bao gồm công ty khởi nghiệp, doanh nghiệp và tổ
chức cơng, đang chạy mọi trường hợp sử dụng có thể diễn ra trên AWS. Mạng lưới đối
tác AWS (APN) bao gồm hàng nghìn đơn vị tích hợp hệ thống chun về dịch vụ AWS
và hàng chục nghìn nhà cung cấp phần mềm độc lập (ISV) điều chỉnh cơng nghệ của
mình để hoạt động trên AWS.
Bảo mật: AWS được thiết kế để trở thành mơi trường điện tốn đám mây bảo
mật và linh hoạt nhất hiện nay. Cơ sở hạ tầng cốt lõi của chúng tôi được xây dựng để
đáp ứng các yêu cầu bảo mật cho quân đội, ngân hàng toàn cầu và các tổ chức khác
với mức độ nhạy cảm cao. Điều này được hỗ trợ bởi một bộ công cụ bảo mật trên đám
mây chuyên sâu, với 230 tính năng cũng như dịch vụ bảo mật, tuân thủ và quản trị.
AWS hỗ trợ 90 tiêu chuẩn bảo mật và chứng nhận tuân thủ. Tất cả 117 dịch vụ AWS
lưu trữ dữ liệu khách hàng đều cung cấp khả năng mã hóa các dữ liệu đó.


Trang 11

Tốc độ: Với AWS, bạn có thể tận dụng các công nghệ mới nhất để thử nghiệm
và đổi mới nhanh hơn. Chúng tôi liên tục đẩy nhanh tốc độ đổi mới để phát minh ra
các cơng nghệ hồn tồn mới mà bạn có thể sử dụng để chuyển đổi doanh nghiệp của
mình. Ví dụ, vào năm 2014, AWS đã tiên phong trong khơng gian điện tốn khơng có
máy chủ với việc ra mắt AWS Lambda, cho phép các nhà phát triển chạy mã của họ
mà không cần cung cấp hoặc quản lý máy chủ. Và AWS đã xây dựng Amazon
SageMaker, một dịch vụ machine learning được quản lý hoàn toàn, trao quyền cho các
nhà phát triển và nhà khoa học mỗi ngày sử dụng machine learning–mà không cần bất
kỳ kinh nghiệm nào trước đó.
Mạng lưới các khu vực AWS trên tồn cầu : AWS có cơ sở hạ tầng đám mây
tồn cầu mở rộng nhất. Chưa có nhà cung cấp dịch vụ đám mây nào cung cấp nhiều

Khu vực có nhiều Vùng sẵn sàng được kết nối qua mạng có độ trễ thấp, thơng lượng
cao và khả năng dự phịng cao như chúng tơi. AWS có 77 Vùng sẵn sàng tại 24 khu
vực địa lý trên khắp thế giới và đã thông báo về kế hoạch tăng thêm 15 Vùng sẵn sàng
và 5 Khu vực AWS khác tại Ấn Độ, Indonesia, Nhật Bản, Tây Ban Nha và Thụy Sĩ.
Gartner đã cơng nhận mơ hình Khu vực AWS/Vùng sẵn sàng là phương pháp được
khuyến nghị để chạy các ứng dụng doanh nghiệp cần độ khả dụng cao.

Hình 1.3 Bản đồ nơi đặt các server của AWS


Trang 12

3.3 Hệ quản trị cơ sở dữ liệu PostgreSQL:
PostgreSQL sở hữu một hệ tính năng đa dạng giúp hỗ trợ các nhà phát triển xây
dựng app, các nhà quản trị bảo vệ toàn vẹn dữ liệu, và tạo ra một môi trường chịu lỗi
fault-tolerant giúp bạn quản lý dữ liệu bất kể tập dữ liệu lớn hay nhỏ. Bên cạnh hệ
thống nguồn mở và miễn phí, PostgreSQL cũng có khả năng mở rộng tuyệt vời. Ví dụ,
bạn có thể định nghĩa các kiểu dữ liệu riêng của bạn, xây dựng các hàm tùy chỉnh, hay
viết mã từ các ngôn ngữ lập trình khác nhau mà khơng cần biên dịch lại cơ sở dữ liệu!
PostgreSQL tuân theo tiêu chuẩn SQL nhưng khơng mâu thuẫn với các tính
năng truyền thống hay có thể dẫn đến các quyết định kiến trúc gây hại. Nhiều tính
năng theo tiêu chuẩn SQL được hỗ trợ, tuy nhiên đơi khi có thể có cú pháp hoặc hàm
hơi khác một chút.
PostgreSQL là hệ thống quản lý cơ sở dữ liệu đầu tiên triển khai tính năng kiểm
sốt đồng thời nhiều phiên bản (MVCC) trước cả Oracle. Tính năng MVCC cũng
tương tự với các snapshot riêng biệt trong Oracle.
Là hệ thống quản lý cơ sở dữ liệu quan hệ đối tượng, PostgreSQL cho phép
thêm vào các tính năng tùy chỉnh được phát triển bằng các ngôn ngữ chương trình
khác nhau như C/C , Java,...
Bên cạnh đó, khi bạn có bất kỳ vấn đề gì cần hỗ trợ, ln có một cộng đồng

nhiệt tình sẵn sàng để trợ giúp. Bạn ln có thể tìm thấy câu trả lời từ cộng đồng của
PostgreSQL về các vấn đề có thể gặp phải khi làm việc với PostgreSQL. Ngồi ra,
cũng có rất nhiều công ty cung cấp các dịch vụ hỗ trợ trong trường hợp bạn thực sự
cần đến.
3.4 Android Studio:
Android Studio là một phầm mềm bao gồm các bộ công cụ khác nhau dùng để
phát triển ứng dụng chạy trên thiết bị sử dụng hệ điều hành Android như các loại điện
thoại smartphone, các tablet... Android Studio được đóng gói với một bộ code editor,
debugger, các công cụ performance tool và một hệ thống build/deploy (trong đó có
trình giả lập simulator để giả lập môi trường của thiết bị điện thoại hoặc tablet trên
máy tính) cho phép các lập trình viên có thể nhanh chóng phát triển các ứng dụng từ
đơn giản tới phức tạp.


×