Thiết kế Tìm hiểu API về các món ăn trên Internet | Bài báo cáo học phần Lập trình thiết bị di động | Trường Đại học Phenikaa

Chức năng tra cứu địa điểm trong ứng dụng FOOD cho phép người dùng tìmkiếm thông tin về một thành phố cụ thể trong một quốc gia bất kỳ. Người dùng có thể nhập tên các món ăn vào công cụ tra cứu và ứng dụng sẽ hiển thị thông tin liên quan về quốc gia, thành phố đó. Thông tin này bao gồm thông tin như tên món ăn các nguyên liệu , chất lượng, thành phần … Chức năng này giúp người dùng dễ dàng tìm hiểu về một món ăn cụ thể trước khi lên kế hoạch cho gọi món. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đón xem.

Thông tin này bao gồm thông tin như tên món ăn các nguyên liệu , chất lượng, thành phần … Chức năng này giúp người dùng dễ dàng tìm hiểu về một món ăn cụ thể trước khi lên kế hoạch cho gọi món.

Mục lục
PHẦN MỞ ĐẦU.........................................................................................................................4
DANH MỤC HÌNH ẢNH........................................................................................................5
1. Tổng quan................................................................................................................................7
1.1 Khảo sát thực trạng..........................................................................................................7
1.2 Đánh giá.............................................................................................................................9
1.2.1 Nhược
điểm:.................................................................................................................9
1.2.2 Ưu
điểm:.......................................................................................................................9
1.2.3 Đối tượng:..................................................................................................................10
1.2.4 Phạm vi:.....................................................................................................................10
1.2.5 Ràng buộc tổng quan hệ thống:.................................................................................10
2. CƠ SỞ LÝ THUYẾT............................................................................................................11
2.1 TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG................................................11
2.1.1 Môi trường lập trình..................................................................................................12
2.1.2 Ngôn ngữ lập trình
Dart.............................................................................................12
3.1.1 Yêu cầu chức năng.....................................................................................................14
3.1.2 Yêu cầu hệ thống........................................................................................................14
3.4. CÁC THÀNH PHẦN CHỨC NĂNG CỦA HỆ THỐNG...............................................16
3.4.1. Chức năng đăng nhập, đăng ký hệ thống..................................................................16
3.4.2. Chức năng tìm kiếm món ăn......................................................................................16
3.4.3. Chức năng hiển thị thông tin.....................................................................................16
3.4.4. Chức năng hiển thị món ăn.......................................................................................17
3.5 SOURCE CODE CỦA CHƯƠNG TRÌNH......................................................................18
3.5.1. Source code SignUP..................................................................................................18
3.5.2 Source code SignIn.....................................................................................................19
3.5.3 Source code food yêu thích.........................................................................................19
3.5.4. Source code danh sách food......................................................................................20
3.5.5. Source code danh sách food......................................................................................22
3.5.6 Source code Main.......................................................................................................22
3.6 THIẾT KẾ GIAO DIỆN HỆ THỐNG..............................................................................23
3.6.1. Form đăng kí- tạo tài khoản......................................................................................23
3.6.2 Form đăng nhập của phần mềm.................................................................................25
3.6.3 Form trang chủ ứng dụng người dùng.......................................................................27
3.6.4 Form giao diện lưu trữ món ăn yêu thích..................................................................28
1
3.6.5 Form giao diện danh sách món ăn.............................................................................29
3.6.6 Form giao diện thông tin món ăn...............................................................................30
KẾT LUẬN...............................................................................................................................31
4.1 KẾT LUẬN ĐỀ TÀI.........................................................................................................31
4.2 LỜI KẾT...........................................................................................................................32
2
3
PHẦN MỞ ĐẦU
Lý do đề tài
Việc tìm hiểu và sử dụng API về các món ăn từ nhiều nguồn trên Internet để xây dựng
một ứng dụng liên quan đến lĩnh vực ẩm thực một ý tưởng hấp dẫn với nhiều do
sau:
Sự phổ biến của ẩm thực: Thực phẩm ẩm thực một phần không thể tách
rời của cuộc sống hàng ngày của mọi người. Mọi người thích thưởng thức
nghiên cứu về các món ăn từ khắp nơi trên thế giới. Do đó, việc phát triển một
ứng dụng về ẩm thực có thể thu hút một lượng lớn người dùng.
Dữ liệu dễ dàng truy cập: nhiều API công khai cung cấp thông tin về các
món ăn, công thức nấu ăn, đánh giá hình ảnh từ nhiều nguồn khác nhau như
các trang web chia sẻ công thức nấu ăn, các ứng dụng đặt đồ ăn, hoặc các trang
web đánh giá nhà hàng. Điều này giúp cho việc thu thập dữ liệu trở nên dễ dàng
và linh hoạt.
Tính tương tác và thú vị: Một ứng dụng về món ăn có thể cung cấp nhiều tính
năng tương tác như tìm kiếm theo nguyên liệu, thể loại, hoặc quốc gia, gợi ý các
món ăn dựa trên khẩu vị cá nhân của người dùng, hoặc thậm chí là khả năng tạo
danh sách món ăn yêu thích và lên kế hoạch thực đơn hàng ngày.
hội kinh doanh: Ngoài việc cung cấp giá trị cho người dùng cuối, một ứng
dụng về món ăn cũng có thể tạo ra cơ hội kinh doanh từ việc quảng cáo, liên kết
bán hàng đối với các công thức nấu ăn, hoặc thậm chí là cung cấp dịch vụ đặt đồ
ăn trực tuyến.
Sự sáng tạo và đa dạng: Lĩnh vực ẩm thực luôn mở ra không gian cho sự sáng
tạo và đa dạng. Việc phát triển một ứng dụng về ẩm thực cho phép bạn tự do thể
hiện sự sáng tạo của mình thông qua việc thiết kế giao diện, cách hiển thị thông
tin, và các tính năng độc đáo.
Do thời gian hạn chế và chưa có kinh nghiệm trong nghiên cứu và thực hành nên báo
cáo còn nhiều thiếu sót. Em mong nhận được đóng góp ý kiến của thầy cô để đề tại được
hoàn thiện hơn. Em xin chân thành cảm ơn!
DANH MỤC HÌNH ẢNH
Hình 3.1 Biểu đồ phân rã chức năng (BFD)
Hình 3.2 Source code SignUp
4
Hình 3.3 Source code SignIn
Hình 3.4 Source code món ăn yêu thích
Hình 3.5 Source code danh sách món ăn
Hình 3.6 Source code danh sách món ăn
Hình 3.7 Source code danh sách món ăn
Hình 3.8 Source code main
Hình 3.9 Form đăng kí- tạo tài khoản
Hình 3.10 Form giao diện Đăng nhập
Hình 3.11 Form trang chủ ứng dụng
Hình 3.12 Form giao diện lưu trữ món ăn yêu thích
Hình 3.13 Form giao diện danh sách món ăn
Hình 3.14 Form giao diện thông tin món ăn
DANH MỤC BẢNG
Bảng 3.1 Chức năng Form đăng kí
Bảng 3.2 Chức năng đăng nhập của phần mềm
Bảng 3.3 Chức năng lưu trữ món ăn yêu thích
1. Tổng quan
1.1 Khảo sát thực trạng
Ứng dụng này nhằm mục đích cung cấp một nền tảng tập trung vào việc khám
phá, chia sẻ, tương tác với các món ăn từ nhiều nguồn khác nhau trên Internet.
Thông qua việc sử dụng API từ các trang web chia sẻ công thức nấu ăn, đánh giá
5
nhà hàng, và các dịch vụ đặt đồ ăn, ứng dụng này mang lại một trải nghiệm đa dạng
và phong phú cho người dùng.
a) Dưới đây là một số thực trạng và xu hướng liên quan đến ứng dụng
chứathông tin về các món :
b) Thị Trường Ẩm Thực:
Tính Thị Trường: Đánh giá kích thước tốc độ tăng trưởng
của thị trường ẩm thực địa phương và toàn cầu.
Xu Hướng: Phân tích xu hướng tiêu dùng, bao gồm sự thay đổi
trong thói quen ăn uống yêu cầu về thực phẩm sạch, dinh
dưỡng và đa dạng.
Cạnh Tranh: Đánh giá các đối thủ cạnh tranh trực tiếp gián
tiếp trong lĩnh vực ẩm thực, bao gồm nhà hàng, dịch vụ đặt đồ ăn
và ứng dụng di động khác.
c) Ứng Dụng Công Nghệ Trong Ẩm Thực:
Tính Đổi Mới: Xem xét sự ảnh hưởng của công nghệ đối với
ngành ẩm thực, bao gồm các xu hướng như đặt hàng trực tuyến,
phản hồi khách hàng tức thì và tự động hóa quy trình nấu nướng.
Sự Thích Ứng: Phân ch mức độ sẵn lòng của ngành ẩm thực
với việc áp dụng công nghệ mới, bao gồm thách thức hội
trong việc thay đổi quy trình kinh doanh truyền thống.
d) Khảo Sát Người Dùng:
Yêu Cầu Mong Muốn: Thu thập thông tin về yêu cầu mong muốn
của người dùng đối với các ứng dụng ẩm thực, bao gồm tính năng, giao
diện và trải nghiệm người dùng.
Thói Quen Sử Dụng: Đánh giá thói quen sử dụng ứng dụng di động và
các nền tảng trực tuyến khác liên quan đến ẩm thực, bao gồm thời gian
sử dụng và mức độ tương tác.
e) Phân Tích Xã Hội và Văn Hóa:
Đa Dạng Văn Hóa: Hiểu về đa dạng văn hóa và ẩm thực trên thế
giới, bao gồm sự khác biệt trong khẩu vị và phong cách ẩm thực
của từng quốc gia và vùng miền.
Ảnh Hưởng Hội: Phân tích sự ảnh hưởng của mạng hội
các trang web đánh giá nhà hàng đối với quyết định ăn uống
và lựa chọn món ăn của người tiêu dùng.
f) Phân Tích Dữ Liệu:
6
Phản Hồi Khách Hàng: Phân tích dữ liệu phản hồi từ người dùng về các
ứng dụng và dịch vụ ẩm thực hiện có trên thị trường.
Xác định các mô hình tương tác và hành
vicủa người dùng trên các nền tảng ẩm thực trực tuyến.
1.2 Đánh giá
1.2.1 Nhược điểm:
Tính Tích Hợp:thể cần một sự tích hợp chặt chẽ hơn giữa các phần
thông tin và việc đưa ra các kết luận và hành động cụ thể từ dữ liệu thu
thập.
Ưu Tiên Hóa:thể cần xác định và ưu tiên hóa các vấn đề quan trọng
nhất để tập trung vào việc giải quyết những thách thức quan trọng nhất
và tận dụng những cơ hội có thể mang lại ảnh hưởng lớn nhất.
Cập Nhật Thông Tin: Do thị trường công nghệ thay đổi nhanh chóng,
việc cập nhật thông tin mới nhất cần thiết để đảm bảo tính hiệu quả
và đáng tin cậy của phần khảo sát.
1.2.2 Ưu điểm:
Phân Tích Toàn Diện: Phần khảo sát cung cấp một cái nhìn tổng quan
chi tiết về thị trường ẩm thực, xu hướng tiêu dùng sự tương tác
của công nghệ trong lĩnh vực này. Điều này giúp hiểu hơn về môi
trường kinh doanh và người dùng tiềm năng.
Khảo Sát Người Dùng: Việc tập trung vào yêu cầu và mong muốn của
người dùng là một điểm mạnh, giúp xây dựng một ứng dụng có thể đáp
ứng được nhu cầu thực tế của thị trường.
Phản Hồi Khách Hàng Dữ Liệu: Phân tích dữ liệu phản hồi từ
người dùng các nh tương tác người dùng cung cấp thông tin
quý giá về cách mà người dùng tương tác và phản hồi với các ứng dụng
hiện tại.
Tương Tác Người Dùng:
7
1.2.3 Đối tượng:
Trong dự án này, đối tượng chính là người dùng cuối, bao gồm các đối tượng :
Người Dùng Cuối: Đây là những người sử dụng hệ thống để tìm kiếm, khám
phá và thực hiện các món ăn. Đối tượng này có thể bao gồm những người yêu thích
nấu ăn, đang tìm kiếm công thức mới hoặc muốn khám phá ẩm thực từ nhiều quốc gia
khác nhau.
Quản Trị Viên: Người quản trị hệ thống, có trách nhiệm quản lý và duy trì các
dữ liệu, tính năng và tương tác trên hệ thống. Họ cũng có thể quản lý các đánh giá và
nhận xét từ người dùng.
1.2.4 Phạm vi:
Phạm Vi Chức Năng: Bao gồm tất cả các tính năng và chức năng của hệ
thống, từ tìm kiếm món ăn đến xem chi tiết mô tả, cũng như tính năng gợi ý món ăn
và thực đơn hàng ngày.
Phạm Vi Dữ Liệu: Bao gồm tất cả dữ liệu về các món ăn, bao gồm tên, hình
ảnh, mô tả, nguyên liệu và hướng dẫn nấu, được thu thập từ nhiều nguồn khác nhau và
được quản lý bởi hệ thống.
Phạm Vi Người Dùng: Được áp dụng cho tất cả các loại người dùng, bao gồm
cả người dùng cuối và quản trị viên, và xác định quyền hạn và trách nhiệm của mỗi
loại người dùng trong hệ thống.
Việc xác định rõ ràng đối tượng và phạm vi sẽ giúp định hình và quản lý dự án một cách hiệu
quả, đảm bảo rằng các mục êu và yêu cầu được đáp ứng một cách đầy đủ và chính xác.
1.2.5 Ràng buộc tổng quan hệ thống:
Dưới đây là những ràng buộc tổng quan về hệ thống của ứng dụng:
Ràng buộc về nền tảng: Ứng dụng thể được phát triển cho các nền tảng khác
nhau như di động (iOS, Android), máy tính để bàn (Windows, macOS), trang web, hoặc có
thể một ứng dụng đa nền tảng. Mỗi nền tảng yêu cầu riêng về ngôn ngữ lập trình,
framework và công nghệ, vậy ràng buộc này sẽ ảnh hưởng đến quyết định về kiến trúc
và phạm vi của ứng dụng.
Ràng buộc về dữ liệu: Ứng dụng cần một nguồn dữ liệu đáng tin cậy để cung
cấp thông tin về các món ăn. Điều này thể bao gồm việc thu thập dữ liệu từ các nguồn
bên ngoài, như cơ quan chính phủ, tổ chức du lịch hoặc các nguồn dữ liệu công khai khác.
8
Ràng buộc này đòi hỏi việc xác định quản quy trình thu thập, xử cập nhật dữ
liệu.
Ràng buộc về hiệu suất: Ứng dụng cần đảm bảo hiệu suất tốt để cung cấp trải
nghiệm người dùng mượt nhanh chóng. Điều này đòi hỏi tối ưu hóa việc truy xuất
và hiển thị dữ liệu, quản lý bộ nhớ và tài nguyên hệ thống, và xử lý các tác vụ nền.
Ràng buộc về bảo mật: Ứng dụng cần đảm bảo an toàn thông tin người dùng và dữ
liệu. Điều này bao gồm việc xác thực và ủy quyền người dùng, hóa dữ liệu, bảo vệ khỏi
các cuộc tấn công và lỗ hổng bảo mật, và tuân thủ các quy định tiêu chuẩn liên quan đến
bảo mật.
Ràng buộc về giao diện người dùng: Ứng dụng cần có giao diện người dùng thân
thiện, dễ sử dụng tương thích với các thiết bị màn hình khác nhau. Giao diện người
dùng cần được thiết kế một cách rõ ràng, dễ hiểu và hợp lý để cung cấp trải nghiệm tốt cho
người dùng.
Ràng buộc về quản bảo trì: Ứng dụng cần được quản bảo trì để đảm
bảo hoạt động liên tục duy trì tính năng của nó. Ràng buộc này đòi hỏi xác định và triển
khai quy trình kiểm tra, sửa lỗi cập nhật ứng dụng, cũng như quản phiên bản sao
lưu dữ liệu.
2. CƠ SỞ LÝ THUYẾT
2.1 TNG QUAN VỀ LẬP TRÌNH HƯNG ĐỐI TƯNG
Lập trình hướng đối tượng (OOP) một phương pháp lập trình trong đó
chương trình được tổ chức xung quanh các "đối tượng". Mỗi đối tượng một thể
hiện cụ thể của một "lớp", và chúng bao gồm dữ liệu (các thuộc tính) và các hành vi
(các phương thức). OOP tập trung vào việc mô hình hóa thế giới thực bằng cách tạo
ra các đối tượng, mỗi đối tượng đại diện cho một phần của thế giới thực, mối quan
hệ giữa chúng.
Trong Dart, một ngôn nglập trình đa nền tảng được phát triển bởi Google,
OOP được hỗ trợ mạnh mẽ.
Dưới đây là một số khái niệm cơ bản của OOP và cách chúng được thực hiện
trong Dart:
- Lớp (Class): một bản thiết kế cho các đối tượng, định nghĩa cấu trúc dữ
liệu và hành vi của chúng. Trong Dart, một lớp được định nghĩa bằng từ khóa class.
9
Đối tượng (Object): Là một thể hiện cụ thể của một lớp. Đối tượng bao gồm dữ liệu
và các phương thức được xác định trong lớp tương ứng.
- Encapsulation (Đóng i): nguyên tắc giữ dữ liệu xử liên quan
cùng nhau trong một lớp, và ẩn chúng khỏi các lớp khác. Trong Dart, bạn có thể sử
dụng các phạm vi truy cập (public, private) để điều chỉnh quyền truy cập vào các
thành phần của lớp.
- Kế thừa (Inheritance): Là quá trình một lớp kế thừa các thuộc tính vàphương
thức từ một lớp khác. Dart hỗ trợ kế thừa đơn kế thừa (single inheritance), một lớp
chỉ có thể kế thừa từ một lớp cha.
- Đa hình (Polymorphism): khả năng của một đối tượng để hiển thị các hành
vi khác nhau tùy thuộc vào ngcảnh. Trong Dart, đa hình thường được thực hiện
thông qua kỹ thuật ghi đè phương thức (method overriding).
Với Dart, bạn có thể sử dụng OOP để xây dựng các ứng dụng có cấu trúc, dễ
bảo trì mở rộng. Dart cung cấp pháp công cụ mạnh mẽ để triển khai các
khái niệm OOP một cách linh hoạt và hiệu quả.
2.1.1. Môi trường lập trình
Android Studio một môi trường phát triển tích hợp (IDE) được phát triển bởi Google,
được tối ưu hóa để phát triển ứng dụng Android. Đây một trong những công cụ phát triển
phổ biến nhất cho lập trình Android, cung cấp một loạt các tính năng và công cụ giúp
lập trình viên phát triển ứng dụng di động một cách hiệu quả.
Dưới đây là một số điểm nổi bật của Android Studio:
- Tích hợp với Android SDK: Android Studio đi kèm với Android SDK, bao gồm một
bộ công cụ phát triển đầy đủ để xây dựng, biên dịch và gỡ lỗi ứng dụng Android. Việc tích
hợp này giúp lập trình viên tiết kiệm thời gian công sức trong việc cài đặt cấu hình
môi trường phát triển.
- Hỗ trợ cho Kotlin và Java: Android Studio hỗ trợ lập trình ứng dụng Android bằng
cả ngôn ngữ lập trình Kotlin Java. Kotlin một ngôn ngữ lập trình hiện đại được Google
công nhận là chính thức cho việc phát triển ứng dụng Android.
- Layout Editor: Android Studio đi kèm với một trình biên tập giao diện đồ họa mạnh
mẽ cho phép lập trình viên thiết kế giao diện người dùng của ứng dụng một cách trực quan.
Trình biên tập này cho phép bạn kéo thả các thành phần UI, xem trước giao diện trên
nhiều thiết bị, và tùy chỉnh các thuộc tính.
10
- Hỗ trợ Git Quản Phiên bản: Android Studio tích hợp với Git các hệ
thốngquản lý phiên bản khác, giúp bạn theo dõi và quản lý mã nguồn của dự án một cách
dễ dàng. Nó cung cấp các công cụ cho việc commit, push, pull, và xem lịch sử thay đổi.
- Gỡ lỗi Kiểm thử: Android Studio cung cấp một loạt các công cụ để gỡ lỗi
kiểm thử ứng dụng. Bạn thể chạy ứng dụng trên các thiết bị thực, máy ảo, hoặc trình
giả lập Android cung cấp sẵn.
- Hỗ trợ cho Flutter Dart: Bạn thể sử dụng Android Studio để phát triển ứng
dụng di động sử dụng Flutter framework và ngôn ngữ lập trình Dart.
Android Studio là một công cụ mạnh mẽ cho việc phát triển ứng dụng Android, với
các tính năng và công cụ cần thiết để xây dựng ứng dụng chất lượng cao và hiệu quả.
2.1.2 Ngôn ngữ lập trình Dart
Ngôn ngữ lập trình Dart là một ngôn ngữ lập trình được phát triển bởi Google. Ban
đầu, Dart được thiết kế nhằm mục đích giải quyết các thách thức trong việc phát triển các
ứng dụng web lớn và phức tạp. Tuy nhiên, sau này, Dart đã mở rộng phạm vi của mình đ
hỗ trợ phát triển ứng dụng di động và máy chủ.
Dưới đây là một số điểm nổi bật về Dart:
- Dart ngôn ngữ hướng đối tượng: Dart hỗ trợ các tính năng bản của lập trình
hướng đối tượng như class, inheritance, encapsulation, polymorphism. Điều này giúp
cho việc tổ chức mã nguồn, tái sử dụng và bảo trì trở nên dễ dàng hơn.
- Dart là ngôn ngữ có cú pháp đơn giản: Dart có cú pháp gần gũi và dễ hiểu, giúp cho
người mới học lập trình cũng như lập trình viên kinh nghiệm thể nhanh chóng làm
quen và sử dụng.
- Dart hỗ trợ phát triển ứng dụng đa nền tảng: Dart không chỉ được sử dụng để phát
triển ứng dụng web còn thể được sử dụng để phát triển ứng dụng di động máy
chủ. Đặc biệt, sử dụng với Flutter framework, Dart một trong những công nghệ hàng
đầu cho phát triển ứng dụng di động đa nền tảng.
- Dart hệ thống quản bộ nhớ tự động (Garbage Collection): Dart sử dụnggarbage
collection để quản lý bộ nhớ tự động, giúp giảm thiểu việc phải lo lắng về việc giải phóng
bộ nhớ.
- Dart hỗ trợ tính năng async/await: Dart cung cấp hỗ trợ cho việc xử bất đồngbộ
thông qua việc sử dụng async/await, giúp cho việc lập trình với các tác vụ không đồng bộ
trở nên đơn giản hơn.
11
Dart đang ngày càng trở nên phổ biến được sử dụng rộng rãi trong cộng đồng phát triển
ứng dụng, đặc biệt là trong việc phát triển ứng dụng di động sử dụng Flutter framework.
2.2.Tổng quan về hệ quản trị cơ sở dữ liệu Mysql
Firebase một nền tảng phát triển ứng dụng di động web được cung cấp bởi
Google. Nó cung cấp một loạt các dịch vụ đám mây để xây dựng và quản lý ứng dụng, bao
gồm cả hệ quản trị cơ sở dữ liệu (Database) Firebase. Hệ quản trị cơ sở dữ liệu Firebase có
các đặc điểm và ưu điểm sau:
sở dữ liệu thời gian thực: Firebase Database là một sở dữ liệu thời gian thực
(real-time database), nghĩa dữ liệu được đồng bộ trực tiếp tự động giữa client
server. Khi dữ liệu thay đổi, các thiết bị kết nối sẽ tự động nhận được cập nhật ngay lập
tức, tạo ra trải nghiệm trực tiếp và tương tác cho người dùng.
Cấu trúc dữ liệu linh hoạt: Firebase Database sử dụng hình cấu trúc dữ liệu JSON,
cho phép bạn lưu trữ và truy xuất dữ liệu dễ dàng theo cấu trúc cây. Bạn có thể lưu trữ dữ
liệu dưới dạng các cặp khóa-giá trị, và dữ liệu thể chứa các đối tượng lồng nhau. Đám
mây mở rộng linh hoạt: Firebase Database hoạt động trên nền tảng đám mây của Google,
điều này cho phép dữ liệu được lưu trữ quản một cách an toàn, tin cậy mở rộng
linh hoạt. Bạn không cần phải quản sở hạ tầng sở dữ liệu của riêng mình,
thể tập trung vào phát triển ứng dụng của mình.
Tích hợp sâu với các dịch vụ khác của Firebase: Firebase Database tích hợp tốt với các
dịch vụ khác của Firebase như xác thực người dùng, thông báo đẩy, phân tích lưu trữ
tệp. Điều này giúp bạn xây dựng các ứng dụng phong phú và tương tác, kết hợp nhiều tính
năng của Firebase.
Hỗ trợ đa nền tảng: Firebase Database không chỉ hỗ trợ các ứng dụng di động trên nền
tảng iOS Android, còn hỗ trợ các ứng dụng web. Điều này giúp bạn xây dựng ứng
dụng đa nền tảng và chia s
3.PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
3.1.Xác định và thiết kế hệ thống
3.1.1 Yêu cầu chức năng
Ứng dụng phải cập nhập, hiển thị được tất cả các thông tin chi tiết về món ăn
Cung cấp, tra cứu thông tin các món ăn
Hiển thị mục yêu thích của món ăn
12
3.1.2 Yêu cầu hệ thống
Hệ thống sử dụng hệ quản trị cơ sở dữ liệu đủ lớn để đáp ứng số lượng người dùng,
truy cập.
Máy chủ có khả năng tính toán nhanh, chính xác, lâu dài, bảo mật.
Hệ thống mạng đáp ứng khả năng truy cập lớn.
Thông tin tính đồng bộ, phân quyền quản chặt chẽ. Bảo mật tốt cho người
quản trị hệ thống.
3.2.Mô hình hóa
3.3.Firebase sử dụng
Firebase Authentication
-Firebase Authentication nhằm giúp việc xây dựng hệ thống xác thực an toàn trở
nên dễ dàng, đồng thời cải thiện trải nghiệm đăng nhập quá trình tạo tài khoản
cho người dùng cuối. cung cấp một giải pháp xác thực toàn diện, hỗ trợ tài khoản
email mật khẩu, xác thực qua số điện thoại, đăng nhập bằng Google, Twitter,
Facebook, GitHub, và nhiều hơn nữa.
Trang web cung cấp API:
https://openfoodfacts.github.io/openfoodfacts-server/api/tutorial-off-api/
13
3.4. CÁC THÀNH PHẦN CHỨC NĂNG CỦA HỆ THỐNG
3.4.1. Chức năng đăng nhập, đăng ký hệ thống
Chức năng đăng nhập và đăng ký trong hệ thống là một phần không thể thiếu trong
mọi ứng dụng hoặc hệ thống, giúp người dùng xác thực quản tài khoản nhân của
họ. Điều này mang lại nhiều lợi ích cho người dùng, bao gồm tính bảo mật, quyền riêng
và trải nghiệm cá nhân hóa.
Khi sử dụng chức năng này, người dùng cần cung cấp thông tin đăng nhập hoặc
thông tin đăng ký mới như tên đăng nhập, mật khẩu, và thông tin nhân để xác thực danh
tính hoặc tạo tài khoản mới. Sau khi hoàn tất quá trình đăng nhập hoặc đăng ký, người
dùng có thể truy cập vào các tính năng và dịch vụ của ứng dụng.
Chức năng đăng nhập đăng đảm bảo rằng chỉ người dùng hợp lệ được
ủy quyền mới thể truy cập sử dụng hệ thống, đồng thời bảo vệ dữ liệu thông tin
quan trọng khỏi truy cập trái phép.
3.4.2. Chức năng tìm kiếm món ăn
Chức năng tra cứu địa điểm trong ứng dụng FOOD cho phép người dùng tìm kiếm
thông tin về một thành phố cụ thể trong một quốc gia bất kỳ. Người dùng có thể nhập tên
các món ăn vào công cụ tra cứu ứng dụng sẽ hiển thị thông tin liên quan về quốc gia,
thành phố đó.
Thông tin này bao gồm thông tin như tên món ăn các nguyên liệu , chất lượng, thành
phần … Chức năng này giúp người dùng dễ dàng tìm hiểu về một món ăn cụ thể trước khi
lên kế hoạch cho gọi món.
14
Chức năng tra cứu món ăn giúp người dùng nắm bắt thông tin về một món ăn một
cách dễ dàng và thuận tiện, giúp họ có những quyết định và dễ dàng lựa chọn.
3.4.3. Chức năng hiển thị thông tin
Chức năng hiển thị thông tin của các thành phố trong một quốc gia trong ứng dụng
CountryApp cho phép người dùng xem thông tin chi tiết về các thành phố cụ thể. Người
dùng có thể lựa chọn quốc gia từ danh sách có sẵn và sau đó xem danh sách các thành phố
trong quốc gia đó.
Thông tin được hiển thị bao gồm tên của thành phố, dân số, diện tích, GPD và các
thông tin địa lý khác. Chức năng này giúp người dùng hiểu rõ hơn về các thành phố trong
quốc gia mình quan tâm, từ đó có thể đưa ra quyết định hoặc lên kế hoạch cho chuyến đi
một cách thông minh.
Bằng cách này, người dùng thể dễ dàng so sánh các thành phố trong cùng một
quốc gia và đưa ra quyết định dựa trên thông tin được cung cấp. Chức năng hiển thị thông
tin của các thành phố trong một quốc gia giúp người dùng cái nhìn toàn diện chính
xác về địa lý và dân số của quốc gia mình quan tâm.
3.4.4. Chức năng hiển thị món ăn
Chức năng hiển thị món ăn một phần quan trọng trong hệ thống, giúp người
dùng trải nghiệm các món ăn một cách trực quan và hấp dẫn. Dưới đây là một số
điểm cần xem xét khi triển khai chức năng này:
Giao Diện Thân Thiện Người Dùng: Xây dựng giao diện dễ sử dụng thân
thiện, cho phép người dùng dễ dàng tìm kiếm duyệt qua danh sách các món
ăn.
Thông Tin Chi Tiết: Hiển thị thông tin chi tiết về mỗi món ăn bao gồm tên, hình
ảnh, mô tả, nguyên liệu cần chuẩn bị và hướng dẫn cách nấu.
Tính Năng Tìm Kiếm và Lọc: Cung cấp tính năng tìm kiếm và lọc giúp người
dùng dễ dàng m kiếm các món ăn theo tiêu chí như tên, loại hình, nguyên liệu
hoặc quốc gia.
Hình Ảnh Hấp Dẫn: Sử dụng hình ảnh chất lượng cao và hấp dẫn để minh họa
cho mỗi món ăn, giúp người dùng có cái nhìn trực quan và thú vị về món ăn.
Đánh Giá Nhận Xét: Cho phép người dùng đánh giá nhận xét về mỗi món
ăn sau khi thử nghiệm, tạo ra một cộng đồng tương tác và chia sẻ kinh nghiệm.
Gợi Ý Món Ăn: Dựa trên sở thích lịch sử tìm kiếm của người dùng, thể
gợi ý các món ăn phù hợp và thú vị để khám phá.
15
Thực Đơn Tuần Hoặc Hàng Ngày: Cho phép người dùng tạo thực đơn hàng
ngày hoặc tuần bằng cách thêm các món ăn yêu thích vào danh sách.
Tính Năng Chia Sẻ: Cho phép người dùng chia sẻ các món ăn yêu thích của họ
trên các mạng xã hội hoặc qua email với bạn bè và gia đình.
Triển khai chức năng hiển thị món ăn một cách chuyên nghiệp hấp dẫn sẽ giúp
tạo ra một trải nghiệm người dùng tích cực tăng hội thu hút giữ chân
người dùng trong hệ thống.
3.5 SOURCE CODE CỦA CHƯƠNG TRÌNH
3.5.1. Source code SignUP
Chức năng: Đăng kí người dùng mới
3.5.2 Source code SignIn
Chức năng: Đăng nhập tài khoản người dùng
16
17
Hình 3.3 Source code SignIn
3.5.3 Source code food yêu thích
Chức năng: Hiển thị food yêu thích
Hình 3.4 Source code food yêu thích
3.5.4. Source code danh sách food
Chức năng: Hiển thị danh sách tất cả các qquoocs gia trên thế giới, tra cứu food
18
Hình 3.5 Source code danh sách food
19
3.5.5. Source code danh sách food
Hình 3.6 Source code danh sách food
3.5.6 Source code Main.
Hình 3.8 Source code main
3.6 THIẾT KẾ GIAO DIỆN HTHNG
Tiếp theo phần thiết kế form cho chường trình sao cho hệ thống hoạt động hiệu
quả. Phần mềm phải hoạt động tốt, không trục trặc về thông tin, hạn chế sai t trong các
thao tác kỹ thuật
| 1/31

Preview text:

Mục lục
PHẦN MỞ ĐẦU.........................................................................................................................4
DANH MỤC HÌNH ẢNH........................................................................................................5
1. Tổng quan................................................................................................................................7
1.1 Khảo sát thực trạng..........................................................................................................7
1.2 Đánh giá.............................................................................................................................9 1.2.1 Nhược
điểm:.................................................................................................................9 1.2.2 Ưu
điểm:.......................................................................................................................9
1.2.3 Đối tượng:..................................................................................................................10
1.2.4 Phạm vi:.....................................................................................................................10
1.2.5 Ràng buộc tổng quan hệ thống:.................................................................................10
2. CƠ SỞ LÝ THUYẾT............................................................................................................11
2.1 TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG................................................11
2.1.1 Môi trường lập trình..................................................................................................12
2.1.2 Ngôn ngữ lập trình
Dart.............................................................................................12
3.1.1 Yêu cầu chức năng.....................................................................................................14
3.1.2 Yêu cầu hệ thống........................................................................................................14
3.4. CÁC THÀNH PHẦN CHỨC NĂNG CỦA HỆ THỐNG...............................................16
3.4.1. Chức năng đăng nhập, đăng ký hệ thống..................................................................16
3.4.2. Chức năng tìm kiếm món ăn......................................................................................16
3.4.3. Chức năng hiển thị thông tin.....................................................................................16
3.4.4. Chức năng hiển thị món ăn.......................................................................................17
3.5 SOURCE CODE CỦA CHƯƠNG TRÌNH......................................................................18
3.5.1. Source code SignUP..................................................................................................18
3.5.2 Source code SignIn.....................................................................................................19
3.5.3 Source code food yêu thích.........................................................................................19
3.5.4. Source code danh sách food......................................................................................20
3.5.5. Source code danh sách food......................................................................................22
3.5.6 Source code Main.......................................................................................................22
3.6 THIẾT KẾ GIAO DIỆN HỆ THỐNG..............................................................................23
3.6.1. Form đăng kí- tạo tài khoản......................................................................................23
3.6.2 Form đăng nhập của phần mềm.................................................................................25
3.6.3 Form trang chủ ứng dụng người dùng.......................................................................27
3.6.4 Form giao diện lưu trữ món ăn yêu thích..................................................................28 1
3.6.5 Form giao diện danh sách món ăn.............................................................................29
3.6.6 Form giao diện thông tin món ăn...............................................................................30
KẾT LUẬN...............................................................................................................................31
4.1 KẾT LUẬN ĐỀ TÀI.........................................................................................................31
4.2 LỜI KẾT...........................................................................................................................32 2 PHẦN MỞ ĐẦU Lý do đề tài
Việc tìm hiểu và sử dụng API về các món ăn từ nhiều nguồn trên Internet để xây dựng
một ứng dụng liên quan đến lĩnh vực ẩm thực là một ý tưởng hấp dẫn với nhiều lý do sau:
Sự phổ biến của ẩm thực: Thực phẩm và ẩm thực là một phần không thể tách
rời của cuộc sống hàng ngày của mọi người. Mọi người thích thưởng thức và
nghiên cứu về các món ăn từ khắp nơi trên thế giới. Do đó, việc phát triển một
ứng dụng về ẩm thực có thể thu hút một lượng lớn người dùng.
Dữ liệu dễ dàng truy cập: Có nhiều API công khai cung cấp thông tin về các
món ăn, công thức nấu ăn, đánh giá và hình ảnh từ nhiều nguồn khác nhau như
các trang web chia sẻ công thức nấu ăn, các ứng dụng đặt đồ ăn, hoặc các trang
web đánh giá nhà hàng. Điều này giúp cho việc thu thập dữ liệu trở nên dễ dàng và linh hoạt.
Tính tương tác và thú vị: Một ứng dụng về món ăn có thể cung cấp nhiều tính
năng tương tác như tìm kiếm theo nguyên liệu, thể loại, hoặc quốc gia, gợi ý các
món ăn dựa trên khẩu vị cá nhân của người dùng, hoặc thậm chí là khả năng tạo
danh sách món ăn yêu thích và lên kế hoạch thực đơn hàng ngày.
Cơ hội kinh doanh: Ngoài việc cung cấp giá trị cho người dùng cuối, một ứng
dụng về món ăn cũng có thể tạo ra cơ hội kinh doanh từ việc quảng cáo, liên kết
bán hàng đối với các công thức nấu ăn, hoặc thậm chí là cung cấp dịch vụ đặt đồ ăn trực tuyến.
Sự sáng tạo và đa dạng: Lĩnh vực ẩm thực luôn mở ra không gian cho sự sáng
tạo và đa dạng. Việc phát triển một ứng dụng về ẩm thực cho phép bạn tự do thể
hiện sự sáng tạo của mình thông qua việc thiết kế giao diện, cách hiển thị thông
tin, và các tính năng độc đáo.
Do thời gian hạn chế và chưa có kinh nghiệm trong nghiên cứu và thực hành nên báo
cáo còn nhiều thiếu sót. Em mong nhận được đóng góp ý kiến của thầy cô để đề tại được
hoàn thiện hơn. Em xin chân thành cảm ơn! DANH MỤC HÌNH ẢNH
Hình 3.1 Biểu đồ phân rã chức năng (BFD) Hình 3.2 Source code SignUp 3 Hình 3.3 Source code SignIn
Hình 3.4 Source code món ăn yêu thích
Hình 3.5 Source code danh sách món ăn
Hình 3.6 Source code danh sách món ăn
Hình 3.7 Source code danh sách món ăn Hình 3.8 Source code main
Hình 3.9 Form đăng kí- tạo tài khoản
Hình 3.10 Form giao diện Đăng nhập
Hình 3.11 Form trang chủ ứng dụng
Hình 3.12 Form giao diện lưu trữ món ăn yêu thích
Hình 3.13 Form giao diện danh sách món ăn
Hình 3.14 Form giao diện thông tin món ăn DANH MỤC BẢNG
Bảng 3.1 Chức năng Form đăng kí
Bảng 3.2 Chức năng đăng nhập của phần mềm
Bảng 3.3 Chức năng lưu trữ món ăn yêu thích 1. Tổng quan
1.1 Khảo sát thực trạng

Ứng dụng này nhằm mục đích cung cấp một nền tảng tập trung vào việc khám
phá, chia sẻ, và tương tác với các món ăn từ nhiều nguồn khác nhau trên Internet.
Thông qua việc sử dụng API từ các trang web chia sẻ công thức nấu ăn, đánh giá 4
nhà hàng, và các dịch vụ đặt đồ ăn, ứng dụng này mang lại một trải nghiệm đa dạng
và phong phú cho người dùng.
a) Dưới đây là một số thực trạng và xu hướng liên quan đến ứng dụng
chứathông tin về các món :
b) Thị Trường Ẩm Thực:
Tính Thị Trường: Đánh giá kích thước và tốc độ tăng trưởng
của thị trường ẩm thực địa phương và toàn cầu.
Xu Hướng: Phân tích xu hướng tiêu dùng, bao gồm sự thay đổi
trong thói quen ăn uống và yêu cầu về thực phẩm sạch, dinh dưỡng và đa dạng.
Cạnh Tranh: Đánh giá các đối thủ cạnh tranh trực tiếp và gián
tiếp trong lĩnh vực ẩm thực, bao gồm nhà hàng, dịch vụ đặt đồ ăn
và ứng dụng di động khác.
c) Ứng Dụng Công Nghệ Trong Ẩm Thực:
Tính Đổi Mới: Xem xét sự ảnh hưởng của công nghệ đối với
ngành ẩm thực, bao gồm các xu hướng như đặt hàng trực tuyến,
phản hồi khách hàng tức thì và tự động hóa quy trình nấu nướng.
Sự Thích Ứng: Phân tích mức độ sẵn lòng của ngành ẩm thực
với việc áp dụng công nghệ mới, bao gồm thách thức và cơ hội
trong việc thay đổi quy trình kinh doanh truyền thống.
d) Khảo Sát Người Dùng:
Yêu Cầu và Mong Muốn: Thu thập thông tin về yêu cầu và mong muốn
của người dùng đối với các ứng dụng ẩm thực, bao gồm tính năng, giao
diện và trải nghiệm người dùng.
Thói Quen Sử Dụng: Đánh giá thói quen sử dụng ứng dụng di động và
các nền tảng trực tuyến khác liên quan đến ẩm thực, bao gồm thời gian
sử dụng và mức độ tương tác.
e) Phân Tích Xã Hội và Văn Hóa:
Đa Dạng Văn Hóa: Hiểu về đa dạng văn hóa và ẩm thực trên thế
giới, bao gồm sự khác biệt trong khẩu vị và phong cách ẩm thực
của từng quốc gia và vùng miền.
Ảnh Hưởng Xã Hội: Phân tích sự ảnh hưởng của mạng xã hội
và các trang web đánh giá nhà hàng đối với quyết định ăn uống
và lựa chọn món ăn của người tiêu dùng.
f) Phân Tích Dữ Liệu: 5
Phản Hồi Khách Hàng: Phân tích dữ liệu phản hồi từ người dùng về các
ứng dụng và dịch vụ ẩm thực hiện có trên thị trường.
Tương Tác Người Dùng:
Xác định các mô hình tương tác và hành
vicủa người dùng trên các nền tảng ẩm thực trực tuyến. 1.2 Đánh giá
1.2.1 Nhược điểm:
Tính Tích Hợp: Có thể cần một sự tích hợp chặt chẽ hơn giữa các phần
thông tin và việc đưa ra các kết luận và hành động cụ thể từ dữ liệu thu thập.
Ưu Tiên Hóa: Có thể cần xác định và ưu tiên hóa các vấn đề quan trọng
nhất để tập trung vào việc giải quyết những thách thức quan trọng nhất
và tận dụng những cơ hội có thể mang lại ảnh hưởng lớn nhất.
Cập Nhật Thông Tin: Do thị trường và công nghệ thay đổi nhanh chóng,
việc cập nhật thông tin mới nhất là cần thiết để đảm bảo tính hiệu quả
và đáng tin cậy của phần khảo sát. 1.2.2 Ưu điểm:
Phân Tích Toàn Diện: Phần khảo sát cung cấp một cái nhìn tổng quan
và chi tiết về thị trường ẩm thực, xu hướng tiêu dùng và sự tương tác
của công nghệ trong lĩnh vực này. Điều này giúp hiểu rõ hơn về môi
trường kinh doanh và người dùng tiềm năng.
Khảo Sát Người Dùng: Việc tập trung vào yêu cầu và mong muốn của
người dùng là một điểm mạnh, giúp xây dựng một ứng dụng có thể đáp
ứng được nhu cầu thực tế của thị trường.
Phản Hồi Khách Hàng và Dữ Liệu: Phân tích dữ liệu phản hồi từ
người dùng và các mô hình tương tác người dùng cung cấp thông tin
quý giá về cách mà người dùng tương tác và phản hồi với các ứng dụng hiện tại. 6 1.2.3 Đối tượng:
Trong dự án này, đối tượng chính là người dùng cuối, bao gồm các đối tượng :
Người Dùng Cuối: Đây là những người sử dụng hệ thống để tìm kiếm, khám
phá và thực hiện các món ăn. Đối tượng này có thể bao gồm những người yêu thích
nấu ăn, đang tìm kiếm công thức mới hoặc muốn khám phá ẩm thực từ nhiều quốc gia khác nhau.
Quản Trị Viên: Người quản trị hệ thống, có trách nhiệm quản lý và duy trì các
dữ liệu, tính năng và tương tác trên hệ thống. Họ cũng có thể quản lý các đánh giá và
nhận xét từ người dùng. 1.2.4 Phạm vi:
Phạm Vi Chức Năng: Bao gồm tất cả các tính năng và chức năng của hệ
thống, từ tìm kiếm món ăn đến xem chi tiết mô tả, cũng như tính năng gợi ý món ăn và thực đơn hàng ngày.
Phạm Vi Dữ Liệu: Bao gồm tất cả dữ liệu về các món ăn, bao gồm tên, hình
ảnh, mô tả, nguyên liệu và hướng dẫn nấu, được thu thập từ nhiều nguồn khác nhau và
được quản lý bởi hệ thống.
Phạm Vi Người Dùng: Được áp dụng cho tất cả các loại người dùng, bao gồm
cả người dùng cuối và quản trị viên, và xác định quyền hạn và trách nhiệm của mỗi
loại người dùng trong hệ thống.
Việc xác định rõ ràng đối tượng và phạm vi sẽ giúp định hình và quản lý dự án một cách hiệu
quả, đảm bảo rằng các mục tiêu và yêu cầu được đáp ứng một cách đầy đủ và chính xác.
1.2.5 Ràng buộc tổng quan hệ thống:
Dưới đây là những ràng buộc tổng quan về hệ thống của ứng dụng:
Ràng buộc về nền tảng: Ứng dụng có thể được phát triển cho các nền tảng khác
nhau như di động (iOS, Android), máy tính để bàn (Windows, macOS), trang web, hoặc có
thể là một ứng dụng đa nền tảng. Mỗi nền tảng có yêu cầu riêng về ngôn ngữ lập trình,
framework và công nghệ, vì vậy ràng buộc này sẽ ảnh hưởng đến quyết định về kiến trúc
và phạm vi của ứng dụng.
Ràng buộc về dữ liệu: Ứng dụng cần có một nguồn dữ liệu đáng tin cậy để cung
cấp thông tin về các món ăn. Điều này có thể bao gồm việc thu thập dữ liệu từ các nguồn
bên ngoài, như cơ quan chính phủ, tổ chức du lịch hoặc các nguồn dữ liệu công khai khác. 7
Ràng buộc này đòi hỏi việc xác định và quản lý quy trình thu thập, xử lý và cập nhật dữ liệu.
Ràng buộc về hiệu suất: Ứng dụng cần đảm bảo hiệu suất tốt để cung cấp trải
nghiệm người dùng mượt mà và nhanh chóng. Điều này đòi hỏi tối ưu hóa việc truy xuất
và hiển thị dữ liệu, quản lý bộ nhớ và tài nguyên hệ thống, và xử lý các tác vụ nền.
Ràng buộc về bảo mật: Ứng dụng cần đảm bảo an toàn thông tin người dùng và dữ
liệu. Điều này bao gồm việc xác thực và ủy quyền người dùng, mã hóa dữ liệu, bảo vệ khỏi
các cuộc tấn công và lỗ hổng bảo mật, và tuân thủ các quy định và tiêu chuẩn liên quan đến bảo mật.
Ràng buộc về giao diện người dùng: Ứng dụng cần có giao diện người dùng thân
thiện, dễ sử dụng và tương thích với các thiết bị và màn hình khác nhau. Giao diện người
dùng cần được thiết kế một cách rõ ràng, dễ hiểu và hợp lý để cung cấp trải nghiệm tốt cho người dùng.
Ràng buộc về quản lý và bảo trì: Ứng dụng cần được quản lý và bảo trì để đảm
bảo hoạt động liên tục và duy trì tính năng của nó. Ràng buộc này đòi hỏi xác định và triển
khai quy trình kiểm tra, sửa lỗi và cập nhật ứng dụng, cũng như quản lý phiên bản và sao lưu dữ liệu.
2. CƠ SỞ LÝ THUYẾT
2.1 TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Lập trình hướng đối tượng (OOP) là một phương pháp lập trình mà trong đó
chương trình được tổ chức xung quanh các "đối tượng". Mỗi đối tượng là một thể
hiện cụ thể của một "lớp", và chúng bao gồm dữ liệu (các thuộc tính) và các hành vi
(các phương thức). OOP tập trung vào việc mô hình hóa thế giới thực bằng cách tạo
ra các đối tượng, mỗi đối tượng đại diện cho một phần của thế giới thực, và mối quan hệ giữa chúng.
Trong Dart, một ngôn ngữ lập trình đa nền tảng được phát triển bởi Google,
OOP được hỗ trợ mạnh mẽ.
Dưới đây là một số khái niệm cơ bản của OOP và cách chúng được thực hiện trong Dart: -
Lớp (Class): Là một bản thiết kế cho các đối tượng, định nghĩa cấu trúc dữ
liệu và hành vi của chúng. Trong Dart, một lớp được định nghĩa bằng từ khóa class. 8
Đối tượng (Object): Là một thể hiện cụ thể của một lớp. Đối tượng bao gồm dữ liệu
và các phương thức được xác định trong lớp tương ứng. -
Encapsulation (Đóng gói): Là nguyên tắc giữ dữ liệu và mã xử lý liên quan
cùng nhau trong một lớp, và ẩn chúng khỏi các lớp khác. Trong Dart, bạn có thể sử
dụng các phạm vi truy cập (public, private) để điều chỉnh quyền truy cập vào các thành phần của lớp. -
Kế thừa (Inheritance): Là quá trình một lớp kế thừa các thuộc tính vàphương
thức từ một lớp khác. Dart hỗ trợ kế thừa đơn kế thừa (single inheritance), một lớp
chỉ có thể kế thừa từ một lớp cha. -
Đa hình (Polymorphism): Là khả năng của một đối tượng để hiển thị các hành
vi khác nhau tùy thuộc vào ngữ cảnh. Trong Dart, đa hình thường được thực hiện
thông qua kỹ thuật ghi đè phương thức (method overriding).
Với Dart, bạn có thể sử dụng OOP để xây dựng các ứng dụng có cấu trúc, dễ
bảo trì và mở rộng. Dart cung cấp cú pháp và công cụ mạnh mẽ để triển khai các
khái niệm OOP một cách linh hoạt và hiệu quả.
2.1.1. Môi trường lập trình
Android Studio là một môi trường phát triển tích hợp (IDE) được phát triển bởi Google,
được tối ưu hóa để phát triển ứng dụng Android. Đây là một trong những công cụ phát triển
phổ biến nhất cho lập trình Android, và nó cung cấp một loạt các tính năng và công cụ giúp
lập trình viên phát triển ứng dụng di động một cách hiệu quả.
Dưới đây là một số điểm nổi bật của Android Studio: -
Tích hợp với Android SDK: Android Studio đi kèm với Android SDK, bao gồm một
bộ công cụ phát triển đầy đủ để xây dựng, biên dịch và gỡ lỗi ứng dụng Android. Việc tích
hợp này giúp lập trình viên tiết kiệm thời gian và công sức trong việc cài đặt và cấu hình môi trường phát triển. -
Hỗ trợ cho Kotlin và Java: Android Studio hỗ trợ lập trình ứng dụng Android bằng
cả ngôn ngữ lập trình Kotlin và Java. Kotlin là một ngôn ngữ lập trình hiện đại được Google
công nhận là chính thức cho việc phát triển ứng dụng Android. -
Layout Editor: Android Studio đi kèm với một trình biên tập giao diện đồ họa mạnh
mẽ cho phép lập trình viên thiết kế giao diện người dùng của ứng dụng một cách trực quan.
Trình biên tập này cho phép bạn kéo và thả các thành phần UI, xem trước giao diện trên
nhiều thiết bị, và tùy chỉnh các thuộc tính. 9 -
Hỗ trợ Git và Quản lý Phiên bản: Android Studio tích hợp với Git và các hệ
thốngquản lý phiên bản khác, giúp bạn theo dõi và quản lý mã nguồn của dự án một cách
dễ dàng. Nó cung cấp các công cụ cho việc commit, push, pull, và xem lịch sử thay đổi. -
Gỡ lỗi và Kiểm thử: Android Studio cung cấp một loạt các công cụ để gỡ lỗi và
kiểm thử ứng dụng. Bạn có thể chạy ứng dụng trên các thiết bị thực, máy ảo, hoặc trình
giả lập Android cung cấp sẵn. -
Hỗ trợ cho Flutter và Dart: Bạn có thể sử dụng Android Studio để phát triển ứng
dụng di động sử dụng Flutter framework và ngôn ngữ lập trình Dart.
Android Studio là một công cụ mạnh mẽ cho việc phát triển ứng dụng Android, với
các tính năng và công cụ cần thiết để xây dựng ứng dụng chất lượng cao và hiệu quả.
2.1.2 Ngôn ngữ lập trình Dart
Ngôn ngữ lập trình Dart là một ngôn ngữ lập trình được phát triển bởi Google. Ban
đầu, Dart được thiết kế nhằm mục đích giải quyết các thách thức trong việc phát triển các
ứng dụng web lớn và phức tạp. Tuy nhiên, sau này, Dart đã mở rộng phạm vi của mình để
hỗ trợ phát triển ứng dụng di động và máy chủ.
Dưới đây là một số điểm nổi bật về Dart: -
Dart là ngôn ngữ hướng đối tượng: Dart hỗ trợ các tính năng cơ bản của lập trình
hướng đối tượng như class, inheritance, encapsulation, và polymorphism. Điều này giúp
cho việc tổ chức mã nguồn, tái sử dụng và bảo trì trở nên dễ dàng hơn. -
Dart là ngôn ngữ có cú pháp đơn giản: Dart có cú pháp gần gũi và dễ hiểu, giúp cho
người mới học lập trình cũng như lập trình viên có kinh nghiệm có thể nhanh chóng làm quen và sử dụng. -
Dart hỗ trợ phát triển ứng dụng đa nền tảng: Dart không chỉ được sử dụng để phát
triển ứng dụng web mà còn có thể được sử dụng để phát triển ứng dụng di động và máy
chủ. Đặc biệt, sử dụng với Flutter framework, Dart là một trong những công nghệ hàng
đầu cho phát triển ứng dụng di động đa nền tảng. -
Dart có hệ thống quản lý bộ nhớ tự động (Garbage Collection): Dart sử dụnggarbage
collection để quản lý bộ nhớ tự động, giúp giảm thiểu việc phải lo lắng về việc giải phóng bộ nhớ. -
Dart hỗ trợ tính năng async/await: Dart cung cấp hỗ trợ cho việc xử lý bất đồngbộ
thông qua việc sử dụng async/await, giúp cho việc lập trình với các tác vụ không đồng bộ trở nên đơn giản hơn. 10
Dart đang ngày càng trở nên phổ biến và được sử dụng rộng rãi trong cộng đồng phát triển
ứng dụng, đặc biệt là trong việc phát triển ứng dụng di động sử dụng Flutter framework.
2.2.Tổng quan về hệ quản trị cơ sở dữ liệu Mysql
Firebase là một nền tảng phát triển ứng dụng di động và web được cung cấp bởi
Google. Nó cung cấp một loạt các dịch vụ đám mây để xây dựng và quản lý ứng dụng, bao
gồm cả hệ quản trị cơ sở dữ liệu (Database) Firebase. Hệ quản trị cơ sở dữ liệu Firebase có
các đặc điểm và ưu điểm sau:
Cơ sở dữ liệu thời gian thực: Firebase Database là một cơ sở dữ liệu thời gian thực
(real-time database), có nghĩa là dữ liệu được đồng bộ trực tiếp và tự động giữa client và
server. Khi dữ liệu thay đổi, các thiết bị kết nối sẽ tự động nhận được cập nhật ngay lập
tức, tạo ra trải nghiệm trực tiếp và tương tác cho người dùng.
Cấu trúc dữ liệu linh hoạt: Firebase Database sử dụng mô hình cấu trúc dữ liệu JSON,
cho phép bạn lưu trữ và truy xuất dữ liệu dễ dàng theo cấu trúc cây. Bạn có thể lưu trữ dữ
liệu dưới dạng các cặp khóa-giá trị, và dữ liệu có thể chứa các đối tượng lồng nhau. Đám
mây và mở rộng linh hoạt: Firebase Database hoạt động trên nền tảng đám mây của Google,
điều này cho phép dữ liệu được lưu trữ và quản lý một cách an toàn, tin cậy và mở rộng
linh hoạt. Bạn không cần phải quản lý cơ sở hạ tầng cơ sở dữ liệu của riêng mình, mà có
thể tập trung vào phát triển ứng dụng của mình.
Tích hợp sâu với các dịch vụ khác của Firebase: Firebase Database tích hợp tốt với các
dịch vụ khác của Firebase như xác thực người dùng, thông báo đẩy, phân tích và lưu trữ
tệp. Điều này giúp bạn xây dựng các ứng dụng phong phú và tương tác, kết hợp nhiều tính năng của Firebase.
Hỗ trợ đa nền tảng: Firebase Database không chỉ hỗ trợ các ứng dụng di động trên nền
tảng iOS và Android, mà còn hỗ trợ các ứng dụng web. Điều này giúp bạn xây dựng ứng
dụng đa nền tảng và chia sẻ
3.PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
3.1.Xác định và thiết kế hệ thống
3.1.1 Yêu cầu chức năng
Ứng dụng phải cập nhập, hiển thị được tất cả các thông tin chi tiết về món ăn
Cung cấp, tra cứu thông tin các món ăn
Hiển thị mục yêu thích của món ăn 11
3.1.2 Yêu cầu hệ thống
Hệ thống sử dụng hệ quản trị cơ sở dữ liệu đủ lớn để đáp ứng số lượng người dùng, truy cập.
Máy chủ có khả năng tính toán nhanh, chính xác, lâu dài, bảo mật.
Hệ thống mạng đáp ứng khả năng truy cập lớn.
Thông tin có tính đồng bộ, phân quyền quản lý chặt chẽ. Bảo mật tốt cho người quản trị hệ thống. 3.2.Mô hình hóa
3.3.Firebase sử dụng Firebase Authentication
-Firebase Authentication nhằm giúp việc xây dựng hệ thống xác thực an toàn trở
nên dễ dàng, đồng thời cải thiện trải nghiệm đăng nhập và quá trình tạo tài khoản
cho người dùng cuối. Nó cung cấp một giải pháp xác thực toàn diện, hỗ trợ tài khoản
email và mật khẩu, xác thực qua số điện thoại, đăng nhập bằng Google, Twitter,
Facebook, GitHub, và nhiều hơn nữa. Trang web cung cấp API:
https://openfoodfacts.github.io/openfoodfacts-server/api/tutorial-off-api/ 12
3.4. CÁC THÀNH PHẦN CHỨC NĂNG CỦA HỆ THỐNG
3.4.1. Chức năng đăng nhập, đăng ký hệ thống
Chức năng đăng nhập và đăng ký trong hệ thống là một phần không thể thiếu trong
mọi ứng dụng hoặc hệ thống, giúp người dùng xác thực và quản lý tài khoản cá nhân của
họ. Điều này mang lại nhiều lợi ích cho người dùng, bao gồm tính bảo mật, quyền riêng tư
và trải nghiệm cá nhân hóa.
Khi sử dụng chức năng này, người dùng cần cung cấp thông tin đăng nhập hoặc
thông tin đăng ký mới như tên đăng nhập, mật khẩu, và thông tin cá nhân để xác thực danh
tính hoặc tạo tài khoản mới. Sau khi hoàn tất quá trình đăng nhập hoặc đăng ký, người
dùng có thể truy cập vào các tính năng và dịch vụ của ứng dụng.
Chức năng đăng nhập và đăng ký đảm bảo rằng chỉ có người dùng hợp lệ và được
ủy quyền mới có thể truy cập và sử dụng hệ thống, đồng thời bảo vệ dữ liệu và thông tin
quan trọng khỏi truy cập trái phép.
3.4.2. Chức năng tìm kiếm món ăn
Chức năng tra cứu địa điểm trong ứng dụng FOOD cho phép người dùng tìm kiếm
thông tin về một thành phố cụ thể trong một quốc gia bất kỳ. Người dùng có thể nhập tên
các món ăn vào công cụ tra cứu và ứng dụng sẽ hiển thị thông tin liên quan về quốc gia, thành phố đó.
Thông tin này bao gồm thông tin như tên món ăn các nguyên liệu , chất lượng, thành
phần … Chức năng này giúp người dùng dễ dàng tìm hiểu về một món ăn cụ thể trước khi
lên kế hoạch cho gọi món. 13
Chức năng tra cứu món ăn giúp người dùng nắm bắt thông tin về một món ăn một
cách dễ dàng và thuận tiện, giúp họ có những quyết định và dễ dàng lựa chọn.
3.4.3. Chức năng hiển thị thông tin
Chức năng hiển thị thông tin của các thành phố trong một quốc gia trong ứng dụng
CountryApp cho phép người dùng xem thông tin chi tiết về các thành phố cụ thể. Người
dùng có thể lựa chọn quốc gia từ danh sách có sẵn và sau đó xem danh sách các thành phố trong quốc gia đó.
Thông tin được hiển thị bao gồm tên của thành phố, dân số, diện tích, GPD và các
thông tin địa lý khác. Chức năng này giúp người dùng hiểu rõ hơn về các thành phố trong
quốc gia mình quan tâm, từ đó có thể đưa ra quyết định hoặc lên kế hoạch cho chuyến đi một cách thông minh.
Bằng cách này, người dùng có thể dễ dàng so sánh các thành phố trong cùng một
quốc gia và đưa ra quyết định dựa trên thông tin được cung cấp. Chức năng hiển thị thông
tin của các thành phố trong một quốc gia giúp người dùng có cái nhìn toàn diện và chính
xác về địa lý và dân số của quốc gia mình quan tâm.
3.4.4. Chức năng hiển thị món ăn
• Chức năng hiển thị món ăn là một phần quan trọng trong hệ thống, giúp người
dùng trải nghiệm các món ăn một cách trực quan và hấp dẫn. Dưới đây là một số
điểm cần xem xét khi triển khai chức năng này:
Giao Diện Thân Thiện Người Dùng: Xây dựng giao diện dễ sử dụng và thân
thiện, cho phép người dùng dễ dàng tìm kiếm và duyệt qua danh sách các món ăn.
Thông Tin Chi Tiết: Hiển thị thông tin chi tiết về mỗi món ăn bao gồm tên, hình
ảnh, mô tả, nguyên liệu cần chuẩn bị và hướng dẫn cách nấu.
Tính Năng Tìm Kiếm và Lọc: Cung cấp tính năng tìm kiếm và lọc giúp người
dùng dễ dàng tìm kiếm các món ăn theo tiêu chí như tên, loại hình, nguyên liệu hoặc quốc gia.
Hình Ảnh Hấp Dẫn: Sử dụng hình ảnh chất lượng cao và hấp dẫn để minh họa
cho mỗi món ăn, giúp người dùng có cái nhìn trực quan và thú vị về món ăn.
Đánh Giá và Nhận Xét: Cho phép người dùng đánh giá và nhận xét về mỗi món
ăn sau khi thử nghiệm, tạo ra một cộng đồng tương tác và chia sẻ kinh nghiệm.
Gợi Ý Món Ăn: Dựa trên sở thích và lịch sử tìm kiếm của người dùng, có thể
gợi ý các món ăn phù hợp và thú vị để khám phá. 14
Thực Đơn Tuần Hoặc Hàng Ngày: Cho phép người dùng tạo thực đơn hàng
ngày hoặc tuần bằng cách thêm các món ăn yêu thích vào danh sách.
Tính Năng Chia Sẻ: Cho phép người dùng chia sẻ các món ăn yêu thích của họ
trên các mạng xã hội hoặc qua email với bạn bè và gia đình.
• Triển khai chức năng hiển thị món ăn một cách chuyên nghiệp và hấp dẫn sẽ giúp
tạo ra một trải nghiệm người dùng tích cực và tăng cơ hội thu hút và giữ chân
người dùng trong hệ thống.
3.5 SOURCE CODE CỦA CHƯƠNG TRÌNH
3.5.1. Source code SignUP
Chức năng: Đăng kí người dùng mới
3.5.2 Source code SignIn
Chức năng: Đăng nhập tài khoản người dùng 15 16
Hình 3.3 Source code SignIn
3.5.3 Source code food yêu thích
Chức năng: Hiển thị food yêu thích
Hình 3.4 Source code food yêu thích
3.5.4. Source code danh sách food
Chức năng: Hiển thị danh sách tất cả các qquoocs gia trên thế giới, tra cứu food 17
Hình 3.5 Source code danh sách food 18
3.5.5. Source code danh sách food
Hình 3.6 Source code danh sách food
3.5.6 Source code Main. Hình 3.8 Source code main
3.6 THIẾT KẾ GIAO DIỆN HỆ THỐNG
Tiếp theo là phần thiết kế form cho chường trình sao cho hệ thống hoạt động có hiệu
quả. Phần mềm phải hoạt động tốt, không trục trặc về thông tin, hạn chế sai sót trong các thao tác kỹ thuật 19