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

Khóa luận tốt nghiệp tìm hiểu FLUTTER và xây dựng ứng dụng đặt hàng ONLINE

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.2 MB, 121 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Ồ NGUYỄN NHẬT TIẾN
HUỲNH NGUYỄN QUANG TÍN

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

TÌM HIỂU FLUTTER VÀ XÂY DỰNG ỨNG DỤNG
ĐẶT HÀNG ONLINE
Flutter Research and build an online odering app

KỸ SƯ CƠNG NGHỆ PHẦN MỀM

TP. HỒ CHÍ MINH, 2021


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

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

HỒ NGUYỄN NHẬT TIẾN - 16521218
HUỲNH NGUYỄN QUANG TÍN – 16521242

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

TÌM HIỂU FLUTTER VÀ XÂY DỰNG ỨNG DỤNG
ĐẶT HÀNG ONLINE


Flutter Research and build an online odering app
KỸ SƯ CÔNG NGHỆ PHẦN MỀM
GIẢNG VIÊN HƯỚNG DẪN

TS. NGUYỄN TẤT BẢO THIỆN
ThS: TRẦN ANH DŨNG


TP. HỒ CHÍ MINH, 2021

THƠNG TIN HỘI ĐỒNG CHẤM KHĨA LUẬN TỐT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……………………
ngày ………………….. của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
1. .............................................................. - Chủ tịch.
2. .............................................................. - Thư ký.
3. ............................................................... - Ủy viên.
4. ............................................................... - Ủy viên.


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

CỘNG HỊA 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……..
NHẬN XÉT KHĨA LUẬN TỐT NGHIỆP


(CỦA CÁN BỘ HƯỚNG DẪN/PHẢN BIỆN)
Tên khóa luận:
TÌM HIỂU FLUTTER VÀ XÂY DỰNG ỨNG DỤNG ĐẶT HÀNG ONLINE
Nhóm SV thực hiện:

Cán bộ hướng dẫn:

Hồ Nguyễn Nhật Tiến – 16521218

Ths. Trần Anh Dũng

Huỳnh Nguyễn Quang Tín - 16521242
Đánh giá Khóa luận
1. Về cuốn báo cáo:
Số trang

_______

Số chương

_______

Số bảng số liệu

_______

Số hình vẽ

_______


Số tài liệu tham khảo

_______

Sản phẩm

_______

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


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:Khóa luận đạt/khơng đạt u cầu của một khóa luận tốt nghiệp kỹ sư/ cử
nhân, xếp loại Giỏi/ Khá/ Trung bình
Điểm từng sinh viên:

Hồ Nguyễn Nhật Tiến:………../10
Huỳnh Nguyễn Quang Tín:………../10
Người nhận xét
(Ký tên và ghi rõ họ tên)


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

CỘNG HỊA 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……..
NHẬN XÉT KHĨA LUẬN TỐT NGHIỆP

(CỦA CÁN BỘ HƯỚNG DẪN/PHẢN BIỆN)
Tên khóa luận:
TÌM HIỂU FLUTTER VÀ XÂY DỰNG ỨNG DỤNG ĐẶT HÀNG ONLINE
Nhóm SV thực hiện:

Cán bộ phản biện:

Hồ Nguyễn Nhật Tiến – 16521218
Huỳnh Nguyễn Quang Tín - 16521242
Đánh giá Khóa luận
5. Về cuốn báo cáo:
Số trang


_______

Số chương

_______

Số bảng số liệu

_______

Số hình vẽ

_______

Số tài liệu tham khảo

_______

Sản phẩm

_______

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


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

………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
7. Về chương trình ứng dụng:
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
8. Về thái độ làm việc của sinh viên:
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
Đánh giá chung:Khóa luận đạt/khơng đạt u cầu của một khóa luận tốt nghiệp kỹ sư/ cử
nhân, xếp loại Giỏi/ Khá/ Trung bình
Điểm từng sinh viên:
Hồ Nguyễn Nhật Tiến:………../10
Huỳnh Nguyễn Quang Tín:………../10
Người nhận xét
(Ký tên và ghi rõ họ tên)


ĐỀ CƯƠNG CHI TIẾT

TÊN ĐỀ TÀI: TÌM HIỂU FLUTTER VÀ XÂY DỰNG ỨNG DỤNG ĐẶT
HÀNG ONLINE
TÊN ĐỀ TÀI (tiếng Anh): FLUTTER RESEARCH AND BUILD AN ONLINE
ORDERING APP
Cán bộ hướng dẫn: TS. Đỗ Thị Thanh Tuyền,ThS. Trần Anh Dũng
Thời gian thực hiện: Từ ngày 21/9/2020 đến ngày 02/01/2021
Sinh viên thực hiện:
Huỳnh Nguyễn Quang Tín - 16521242

Hồ Nguyễn Nhật Tiến - 16521218
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. Mục tiêu của đề tài
1. Bối cảnh chọn đề tài
Ngày nay, nhiều cửa hàng đồ ăn thức uống được mở ra nhằm phục vụ nhu cầu
ăn uống của con người. Người dùng thường sử dụng các dịch vụ đặt hàng và giao
hàng như GrabFood, GoFood, Beamin,… Điều này làm đem lại sự tiện lợi cho cả
khách hàng và cửa hàng. Nhưng đối với những cửa hàng lớn, việc này có thể đem
lại bất lợi cho những cửa hàng đó. Bởi vì thơng qua các ứng dụng đặt hàng, vơ tình
một cửa hàng và các cửa hàng đối thủ đang sử dụng chung một tệp khách hàng tuy
nhu cầu, sở thích ăn uống khác nhau. Có người thích cửa hàng A, có người thích
cửa hàng B, nếu vơ tình 2 bên có sự chênh lệch về khuyến mãi thì việc mất đi một


lượng khách hàng của 1 trong 2 cửa hàng nêu trên có thể sẽ xảy ra. Vì vậy, nhóm
em quyết định chọn đề tài “Tìm hiểu Flutter và xây dựng ứng dụng đặt hàng
online” nhằm mục đích tạo ra một ứng dụng đặt hàng cho một chuỗi cửa hàng bán
đồ ăn thức uống cụ thể. Mục tiêu: - Xây dựng ứng dụng bán đồ ăn thức uống cho
mộ
Tính mới/ khác biệt về chức năng của đề tài so với một số ứng dụng đặt

2.

thức ăn/ đồ uống online hiện nay



Tính mới của đề tài:
Áp dụng Flutter, framework mới, đa nền tảng, hiệu năng cao, giải quyết được

bài toán thường gặp là Fast Development và Native Performance.



Áp dụng Microservices để dễ dàng quản lý và triển khai từng phần so với kiến
trúc Monolithic thông thường.



Áp dụng Docker để triển khai ứng dụng, giải quyết vấn đề cài đặt môi trường
trên một hoặc nhiều server.



3.

Áp dụng Golang, một ngơn ngữ lập trình mới có hiệu năng cao.
Mục đích của đề tài
Ứng dụng đặt hàng chạy trên nền Android/iOS được thực hiện dựa trên hai

mục đích chính sau:
Thứ nhất là nghiên cứu các cơng nghệ lập trình như: lập trình ứng dụng với
Flutter,lập trình web api với ngơn ngữ golang, áp dụng kiến trúc microservices để
xây dựng ứng dụng.
Thứ hai là phát triển ứng dụng có tính thực tiễn cao, có khả năng triển khai ứng
dụng vào thực tế


Nhóm hy vọng dựa trên nền tảng lý thuyết đã được thầy cơ truyền thụ lại, kết
hợp với sự tìm hiểu cơng nghệ của nhóm, luận văn tốt nghiệp của nhóm sẽ đạt được

mục đích mong đợi.
4.

Ý nghĩa của đề tài
Trước hết, đề tài ““Tìm hiểu Flutter và xây dựng ứng dụng đặt hàng
online”” là một ứng dụng được xây dựng như một đề tài thể hiện việc áp dụng
những kiến thức quý báu đã được các thầy cô của trường Đại học Công nghệ Thông
tin – Đại học Quốc gia thành phố Hồ Chí Minh đã nhiệt tình truyền thụ lại cho
chúng em. Và đặc biệt là sự theo dõi và quan tâm giúp đỡ của thầy Trần Anh Dũng
trong suốt thời gian nhóm chúng em thực hiện đề tài này.
Thứ hai là những kinh nghiệm quý báu mà nhóm có được trong q trình thực
hiện đề tài sẽ là hành trang tuyệt vời giúp ích rất nhiều cho cơng việc sau này của
mỗi thành viên trong nhóm.

5.

Nhiệm vụ của đề tài
Đề tài “Tìm hiểu Flutter và xây dựng ứng dụng đặt hàng online” là một
ứng dụng chạy trên điện thoại sử dụng hệ điều hành Android.
Ứng dụng gồm có 2 phần: Ứng dụng viết cho nền tảng mobile và Webservice
quản trị viết bằng ngôn ngữ Golang.


Mobile app dành cho người tiêu dùng


Đăng ký và đăng nhập




Tìm kiếm sản phẩm có sử dụng bộ lọc



Sắp xếp sản phẩm theo các hạng mục tương ứng



Tin tức về cửa hàng như: Cập nhật món ăn, thức uống, ưu đãi,…




Xem thơng tin sản phẩm



Bình luận và đánh giá



Đặt mua đồ ăn hoặc thức uống tại cửa hàng. Người dùng có thể
chọn đến lấy hoặc được giao tận nơi.



Tích điểm khi thanh tốn, chỉnh sửa thơng tin cá nhân




Sử dụng voucher cá nhân được lưu trữ trong tài khoản người
dùng.



Tích hợp bản đồ để xem địa chỉ, thông tin các chi nhánh của cửa
hàng, xem cửa hàng gần nhất.





Ứng dụng web cho người quản trị


Quản lý các danh mục sản phẩm



Quản lý sản phẩm



Quản lý đơn hàng



Quản lý khuyến mãi




Quản lý tin tức



Quản lý thông tin các chi nhanh



Thống kê

Ứng dụng web cho nhân viên chi nhánh:


Nhận thơng báo có đơn đặt hàng



Quản lý đơn hàng.



Thống kê của chi nhánh

Mục tiêu của đề tài này là:


- Tìm hiểu các hoạt động kinh doanh trong thực tế.
- Tìm hiểu cách thức xây dựng một ứng dụng di động bằng flutter
- Xây dựng thành công ứng dụng đặt hàng với đầy đủ các tính năng đề ra.

- Hệ thống tối ưu hóa lợi nhuận đối với những khách hàng mới.
- Hệ thống có khả năng ứng dụng và triển khai vào thực tiễn nhanh chóng.
2. Phạm vi nghiên cứu
Ứng dụng được nhóm xây dựng bằng framework Flutter trên môi trường
Android/iOS và Webservice được xây dựng bằng ngôn ngữ Golang.
Tìm hiểu microservices và ứng dụng vào đề tài
3. Đối tượng nghiên cứu




Các công nghệ:


Front-end: Flutter, Reactjs



Back-end: Golang



Sử dụng Docker, Microservice,..



Database: MySQL, Firebase…

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



Những chuỗi cửa hàng có hệ thống chi nhánh lớn.



Tệp khách hàng của cửa hàng/ chuỗi cửa hàng

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


Cách tiếp cận: ứng dụng được xây dựng dựa theo kiến trúc microservices.



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 những ứng dụng hiện có hiện có



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

Kết quả dự kiến


5.

Sau khi xác định đề tài và nghiên cứu, tìm hiểu thực tế, nhóm đã xây dựng ý
tưởng thiết kế ứng dụng đặt đồ ăn/ thức uống online cần đạt được những mục tiêu
sau:


Hoàn thành ứng dụng đặt hàng online, đáp ứng các yêu cầu nghiệp vụ đã đề
ra.



Ứng dụng tạo được sự thân thiện với người dùng, dễ sử dụng.



Hiểu rõ, nắm vững kiến thức của công nghệ được sử dụng trong đề tài.

Kế hoạch thực hiện: (Mô tả kế hoạch làm việc và phân chia công việc các thành viên
tham gia)
Với thời gian thực hiện từ 01/09/2020 tới 02/01/2021, nhóm chia thành 6 sprint
với 2 giai đoạn cụ thể:


Giai đoạn 1: Khảo sát hiện trạng, tìm hiểu các ứng dụng hiện có trên thị
trường, tìm hiểu cơng nghệ sử dụng, phân tích thiết kế hệ thống,


Sprint 1: Chọn đề tài, khảo sát các ứng dụng hiện có.




Sprint 2: Tìm hiểu nghiệp vụ và thiết kế giao diện cho ứng
dụng.



Sprint 3: Xác định và đặc tả chức năng.



Sprint 4: Tìm hiểu cơng nghệ được xác định sử dụng trong đề
tài.


Hồ Nguyễn Nhật Tiến

Sprint
1
(01/09/2020 –
07/09/2020)

Huỳnh Nguyễn Quang Tín

Lên ý tưởng đề tài.

Lựa chọn công nghệ sử

Khảo sát ứng dụng hiện có:


dụng đề tài

Soya Garden

Khảo sát ứng dụng hiện có:
The Coffee House,

2
(08/09/2020 –

Tìm hiểu quy trình nghiệp vụ

Thiết kế wireframes.

của các ứng dụng hiện có.

Vẽ lưu đồ.

Đặc tả chức năng.

Xác định chức năng.

Xây dựng cơ sở dữ liệu.

Vẽ Use Case.

Tìm hiểu ReactJs

Tìm hiểu Flutter.


Tìm hiểu microservices.

Tìm hiểu ReactJs.

14/09/2020)
3
(15/09/2020 –
22/09/2020)
4
(23/09/2020 –
07/10/2020)



Giai đoạn 2: Hoàn thành ứng dụng và kiểm thử. Viết báo cáo đề tài.


Sprint 5: Xây dựng API, xây dựng UI, xây dựng trang quản trị.



Sprint 6: Hoàn thành sản phẩm.


Sprint

Hồ Nguyễn Nhật

Huỳnh Nguyễn Quang Tín


Tiến
5
(08/10/2020 –
26/12/2020)

Xây dựng services.

Xây dựng giao diện ứng dụng phía

Kiểm thử các chức client.
năng.

Kiểm thử các chức năng.

Xây dựng trang quản Xây dựng trang quản trị
trị
6
(26/12/2020 –

Deploy ứng dụng.

Gọi API.

Hoàn thành báo cáo.

Hoàn thành báo cáo.

02/01/2021)
Xác nhận của CBHD


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

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

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

Hồ Nguyễn Nhật Tiến
Sinh viên 2
(Ký tên và ghi rõ họ tên)

Huỳnh Nguyễn Quang Tín


LỜI CẢM ƠN
Lời đầu tiên, em xin chân thành cảm ơn ban giám hiệu nhà trường, các thầy cô
của Trường Đại học Cơng Nghệ Thơng Tin nói chung và các thầy cơ trực thuộc khoa
Cơng Nghệ Phần Mềm nói riêng, những người ln tận tình dạy hỗ, truyền đạt cho em
nhiều kiến thức mới mẻ và bổ ích trong suốt thời gian mà em theo học tại trường.
Đặc biệt, em xin gửi đến thầy Trần Anh Dũng và thầy Nguyễn Tất Bảo Thiện lời
cảm ơn chân thành và sâu sắc nhất. Cảm ơn thầy cơ vì đã tận tình chỉ bảo, hướng dẫn và
chia sẻ nhiều kinh nghiệm quý báu trong suốt những ngày em làm luận văn. Nếu không
được thầy cơ quan tâm, khơng có những lời góp ý dẫn của thầy cơ thì nhóm em đã khơng
thể hồn thành khoá luận tốt nghiệp một cách trọn vẹn được.
Đồng thời, chúng em cũng muốn được thể hiện lòng biết ơn của mình đến các bạn
cùng lớp làm khố luận, các anh chị đồng nghiệp đã luôn động viên, giúp đỡ và đưa ra
những ý kiến đóng góp vơ cùng bổ ích. Nhờ có những góp ý từ mọi người mà em có thể
nhận ra những mặt hạn chế cịn tồn tại trong bài luận của mình để từ đó cố gắng hồn
thiện nó một cách tốt nhất có thể.
Trong suốt q trình làm khố luận em ln cố gắng làm mọi thứ thật tốt. Tuy

nhiên có thể vẫn sẽ khơng tránh khỏi những sai sót. Vì vậy em rất mong nhận được thật
nhiều những lời góp ý quý giá từ phía thầy cơ, bạn bè và tất cả mọi người quan tâm đến
bài luận của em.
Sau cùng, em xin kính chúc tồn thể q thầy cơ thật nhiều sức khoẻ, nhiệt huyết
và luôn thành công trong sự nghiệp giảng dạy của mình.
TP. Hồ Chí Minh, tháng 01 năm 2021
Sinh viên thực hiện
Huỳnh Nguyễn Quang Tín
Hồ Nguyễn Nhật Tiến


MỤC LỤC
NGƯỜI NHẬN XÉT ...................................................................................................... 4
NGƯỜI NHẬN XÉT ...................................................................................................... 6
CHƯƠNG 1. TỔNG QUAN ĐỀ TÀI ........................................................................... 2
1.1
GIỚI THIỆU ĐỀ TÀI............................................................................................. 2
1.2 LÝ DO CHỌN ĐỀ TÀI ................................................................................................ 2
1.3 MỤC TIÊU ................................................................................................................ 3
1.4 PHƯƠNG PHÁP THỰC HIỆN....................................................................................... 3
1.5 Ý NGHĨA THỰC TIỄN ................................................................................................ 4
1.6 KẾT QUẢ DỰ KIẾN ................................................................................................... 4
CHƯƠNG 2. TÌM HIỂU FLUTTER ........................................................................... 5
2.1 FLUTTER ................................................................................................................. 5
2.3 KIẾN TRÚC FLUTTER ............................................................................................. 10
2.4 WIDGET................................................................................................................. 11
2.5 ANIMATION ........................................................................................................... 17
2.6 SỬ DỤNG PLATFORM-SPECIFIC CODE .................................................................... 21
2.7 PACKAGE .............................................................................................................. 25
CHƯƠNG 3. TÌM HIỂU CÔNG NGHỆ ỨNG DỤNG TRONG ĐỀ TÀI .............. 27

3.1 ECHO FRAMEWORK .............................................................................................. 27
3.2 MICROSERVICES ................................................................................................... 28
3.3 REDIS .................................................................................................................... 30
3.4 GOOGLE MAPS API............................................................................................... 32
3.5 FIREBASE CLOUD MESSAGING ............................................................................. 33
3.6 DOCKER ................................................................................................................ 33
3.7 NATS.IO .............................................................................................................. 36
3.8 KRAKEND ............................................................................................................. 37
3.9 TWILIO .................................................................................................................. 39
3.10 GOOGLE CLOUD STORAGE ................................................................................. 40
3.11 MYSQL............................................................................................................... 40
CHƯƠNG 4. XÂY DỰNG ỨNG DỤNG ĐẶT HÀNG ONLINE DÀNH CHO
CHUỖI CỬA HÀNG ................................................................................................... 41
4.1 ĐẶT VẤN ĐỀ .......................................................................................................... 41
4.2 TÌM HIỂU CÁC ỨNG DỤNG TƯƠNG TỰ .................................................................... 42
4.3 XÂY ĐỊNH VÀ PHÂN TÍCH YÊU CẦU ....................................................................... 42


4.5 KIẾN TRÚC HỆ THỐNG ........................................................................................... 48
4.6 THIẾT KẾ CƠ SỞ DỮ LIỆU ....................................................................................... 50
4.7 THIẾT KẾ GIAO DIỆN.............................................................................................. 74
CHƯƠNG 5. KẾT LUẬN ............................................................................................ 95
5.1 KẾT QUẢ ĐẠT ĐƯỢC .............................................................................................. 95
5.2 THUẬN LỢI VÀ KHÓ KHĂN..................................................................................... 95
5.3 HƯỚNG PHÁT TRIỂN: ............................................................................................. 96


DANH MỤC HÌNH
Hình 2.1: Các cơng ty sử dụng Flutter ............................................................................. 6
Hình 2.2: Kiến trúc Flutter ............................................................................................. 10

Hình 2.3: Minh họa cây widget của một chương trình Flutter đơn giản ....................... 12
Hình 2.4: Widget tree, Element tree, Render tree .......................................................... 14
Hình 2.5: Vịng đời của stateful widget ......................................................................... 15
Hình 2.6: Kênh giao tiếp giữa ứng dụng Flutter và Platform host ................................. 22
Hình 3.1: Kiến trúc Microservices ................................................................................. 28
Hình 3.2: Logo redis ...................................................................................................... 30
Hình 3.3 Mơ tả cách hoạt động của NATS .................................................................... 37
Hình 3.4 So sánh KrankenD với các sản phẩm hiện có trên thị trường. Dựa trên số
requests/giây trong kiều kiện như nhau. ........................................................................ 39
Hình 4.1: Sơ đồ Usecase khách hàng sử dụng ứng dụng ............................................... 43
Hình 4.2: Sơ đồ Usecase Admin phần 1 ........................................................................ 44
Hình 4.3: Sơ đồ Usecase Admin phần 2 ........................................................................ 45
Hình 4.4: Sơ đồ Usecase nhân viên cửa hàng ................................................................ 46
Hình 4.5: Kiến trúc hệ thống .......................................................................................... 50
Hình 4.6: Màn hình đăng nhập ....................................................................................... 74
Hình 4.7: Màn hình nhập mã OTP ................................................................................. 75
Hình 4.8: Màn hình tạo thơng tin tài khoản ................................................................... 76
Hình 4.9: Màn hình trang chủ ........................................................................................ 77
Hình 4.10: Màn hình danh sách sản phẩm theo danh mục ............................................ 78
Hình 4.11: Màn hìn chi tiết sản phẩm ............................................................................ 79
Hình 4.12: Màn hình thêm sản phẩm ............................................................................. 80
Hình 4.13: Màn hình danh sách cửa hàng ...................................................................... 81
Hình 4.14: Màn hình chi tiết cửa hàng ........................................................................... 82
Hình 4.15: Màn hình thơng tin cá nhân ......................................................................... 83


Hình 4.16: Màn hình chỉnh sửa thơng tin cá nhân ......................................................... 84
Hình 4.17: Màn hình danh sách ưu đãi .......................................................................... 85
Hình 4.18: Màn hình chi tiết ưu đãi ............................................................................... 86
Hình 4.19: Màn hình xác nhận đổi ưu đãi ...................................................................... 87

Hình 4.20: Màn hình danh sách coupon ........................................................................ 88
Hình 4.21: Màn hình chi tiết Coupon ............................................................................ 89
Hình 4.22: Màn hình giỏ hàng ....................................................................................... 90
Hình 4.23: Màn hình tìm kiếm địa chỉ ........................................................................... 91
Hình 4.24: Màn hình thơng tin thành viên ..................................................................... 92
Hình 4.25: Màn hình của hàng ưu đãi ............................................................................ 93
Hình 4.26: Màn hình tài khoản ...................................................................................... 94


DANH MỤC BẢNG
Bảng 1.1 Bảng so sánh Flutter và React Native ............................................................... 9
Bảng 4.1: Danh sách và ý nghĩa các Actor .................................................................... 42
Bảng 4:2: Danh sách các Usecase của hệ thống ............................................................ 48
Bảng 4.3: Danh sách các thuộc tính của bảng Accounts ............................................... 51
Bảng 4.4: Danh sách các thuộc tính của bảng Customers ............................................. 51
Bảng 4.5 Danh sách các thuộc tính của bảng Branchs................................................... 52
Bảng 4.6: Danh sách các thuộc tính của bảng Account_Branch ................................... 53
Bảng 4.7 Danh sách các thuộc tính của bảng Discount_code ........................................ 54
Bảng 4.8: Danh sách các thuộc tính của bảng Lables .................................................... 55
Bảng 4.9: Danh sách các thuộc tính của bảng Rewards................................................. 56
Bảng 4.10: Danh sách các thuộc tính của bảng Reward_categories .............................. 56
Bảng 4.11: Danh sách các thuộc tính của bảng Customer_coupon ............................... 57
Bảng 4.12: Danh sách các thuộc tính của bảng Discount_code_details ........................ 57
Bảng 4.13 Danh sách các thuộc tính của bảng History_add_point................................ 58
Bảng 4.14: Danh sách các thuộc tính của bảng Points................................................... 58
Bảng 4.15: Danh sách các thuộc tính của bảng Config_exhange_points ...................... 59
Bảng 4.16: Danh sách các thuộc tính của bảng Orders .................................................. 60
Bảng 4.17: Danh sách các thuộc tính của bảng Payments ............................................. 61
Bảng 4.18: Danh sách các thuộc tính của bảng Transactions ........................................ 62
Bảng 4.19: Danh sách các thuộc tính của bảng Transaction_Orders ............................. 62

Bảng 4.20: Danh sách các thuộc tính của bảng Order_Details ...................................... 63
Bảng 4.21: Danh sách các thuộc tính của bảng Order_Detail_Toppings ...................... 63
Bảng 4.22: Danh sách các thuộc tính của bảng Categories ........................................... 64
Bảng 4.23: Danh sách các thuộc tính của bảng Products............................................... 65
Bảng 4.24: Danh sách các thuộc tính của bảng Attributes............................................. 66
Bảng 4.25: Danh sách các thuộc tính của bảng Toppings ............................................. 66


Bảng 4.26: Danh sách các thuộc tính của bảng Attribute_values .................................. 67
Bảng 4.27: Danh sách các bảng thuộc tính của bảng Attribute_value_products ........... 68
Bảng 4.28: Danh sách các thuộc tính của bảng Discount_products .............................. 68
Bảng 4.29: Danh sách các thuộc tính của bảng Comments ........................................... 69
Bảng 4.30: Danh sách các thuộc tính của bảng Ratings ................................................ 70
Bảng 4.31: Danh sách các thuộc tính của bảng Topping_Products ............................... 70
Bảng 4.32: Danh sách các thuộc tính của bảng NewsCategory ..................................... 71
Bảng 4.33: Danh sách các thuộc tính của bảng Posts .................................................... 72
Bảng 4.34: Danh sách các thuộc tính của bảng Message_notifications ........................ 72
Bảng 4.35: Danh sách các thuộc tính của bảng Notification_token_accounts .............. 73


DANH MỤC VIẾT TẮT
STT

Cụm từ đầy đủ

Chữ cái viết tắt/kí hiệu

1

STT


Số thứ tự

2

CSDL

Cơ sở dữ liệu

3

API

Application Programming Interface

4

F&B

Food and Baverage

5

FCM

Firebase cloud messaging

6

OTP


One Time Password

7

DB

Database

8

REST

Representational State Stransfer

9

UI

User Interface

10

SMS

Short Message Service

11

CLI


Command Line Interface

12

Pub

Publish

13

Sub

Subcribe

14

RDBMS

Relational Database Management System


TÓM TẮT KHÓA LUẬN
– Tổng quan đề tài: đặt vấn đề, lý do chọn đề tài và mục tiêu dự kiến.
– Nghiên cứu về các công nghệ sẽ sử dụng để thực hiện đề tài: kiến trúc Microservices,
Flutter Framework, Echo Framework, …
– Tìm hiểu về nhu cầu
– Nghiên cứu các ứng dụng đặt hàng dành cho chuỗi cửa hàng trên thị trường
– Đưa ra các giải pháp để giải quyết những khó khăn đó.
– Xây dựng ứng dụng đặt hàng online, phân tích các use case, tính năng cần có cho ứng

dụng.
– Thiết kế kiến trúc hệ thống, thiết kế cơ sở dữ liệu và giao diện cho ứng dụng di động
– Triển khai ứng dụng lên server.
– Tổng hợp kết quả đã đạt được, phân tích thuận lời và khó khăn cũng như đề ra hướng
phát triển trong tương lai cho ứng dụng.

1


Chương 1. TỔNG QUAN ĐỀ TÀI
1.1 Giới thiệu đề tài
Ngày nay, nhiều cửa hàng đồ ăn thức uống được mở ra nhằm phục vụ nhu cầu ăn
uống của con người. Người dùng thường sử dụng các dịch vụ đặt hàng và giao hàng như
GrabFood, GoFood, Beamin,… Điều này làm đem lại sự tiện lợi cho cả khách hàng và
cửa hàng. Nhưng đối với những cửa hàng lớn, việc này có thể đem lại bất lợi cho những
cửa hàng đó. Bởi vì thơng qua các ứng dụng đặt hàng, vơ tình một cửa hàng và các cửa
hàng đối thủ đang sử dụng chung một tệp khách hàng tuy nhu cầu, sở thích ăn uống khác
nhau. Có người thích cửa hàng A, có người thích cửa hàng B, nếu vơ tình 2 bên có sự
chênh lệch về khuyến mãi thì việc mất đi một lượng khách hàng của 1 trong 2 cửa hàng
nêu trên có thể sẽ xảy ra. Vì vậy, nhóm em quyết định chọn đề tài “Tìm hiểu Flutter và
xây dựng ứng dụng đặt hàng online” nhằm mục đích tạo ra một ứng dụng đặt hàng
cho một chuỗi cửa hàng bán đồ ăn thức uống cố định.
1.2 Lý do chọn đề tài
Ngày nay, công nghệ thông tin ngày một phát triển, kéo theo đó là sự bùng nổ của
các thiết bị điện tử, đặc biệt là điện thoại thông minh và máy tính. Nếu như trước đây
việc sở hữu một chiếc điện thoại thơng minh hay máy tính khá khó khăn thì ngày nay
do sự cạnh tranh gay gắt giữa các thương hiệu khiến giá thành những thiết bị này rẻ hơn
và việc sở hữu chúng trở nên dễ dàng hơn. Vì thế nhu cầu phát triển ứng dụng cho các
thiết bị này càng ngày càng tăng cao.
Để tiếp cận đến nhiều người dùng, các nhà phát triển ứng dụng mong muốn ứng

dụng của họ chạy được trên nhiều nền tảng đặc biệt là Android, iOS, Windows, MacOS
và web. Thay vì phải tìm hiểu nhiều ngơn ngữ, cơng nghệ khác nhau ứng với từng nền
tảng thì hiện nay trên thị trường có nhiều cơng cụ hỗ trợ lập trình đa nền tảng như Flutter,
React Native, Ionic, … giúp các nhà phát triển ứng dụng tiết kiệm thời gian, chi phí
dành cho quá trình phát triển ứng dụng.

2


×