Nhờ những gì cô đã giảng dạy thì chúng em có đủ kiến thức để bắt tay vô hoàn thành một đồ án, màn hình bị cho mình những hành trang vô cùng đắt giá này và tin rằng môn học Lập trình trên
Trang 1ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG VIỆT-HÀN
Khoa Khoa Học Máy Tính
BÁO CÁO BÀI TẬP LỚN
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG ĐẶT ĐỒ ĂN
Sinh viên thực hiện : PHẠM VĂN TOẢN Mã sv: 21IT112
LÊ ĐĂNG THÀNH Mã sv: 21IT654
Giảng viên hướng dẫn: ThS TRỊNH THỊ NGỌC LINH
Đà nẵng, tháng 5 năm 2023
Trang 2ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG VIỆT-HÀN
Khoa Khoa Học Máy Tính
BÁO CÁO BÀI TẬP LỚN
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG ĐẶT ĐỒ ĂN
ONLINE (FOOD APP)
Sinh viên thực hiện : PHẠM VĂN TOẢN Mã sv: 21IT112
LÊ ĐĂNG THÀNH Mã sv: 21IT654
Giảng viên hướng dẫn: ThS TRỊNH THỊ NGỌC LINH
Trang 3Đà nẵng, tháng 5 năm 2023
Trang 4MỞ ĐẦU
Ngày nay, công nghệ thông tin càng ngày càng phát triển cùng với thị trường thương mại điện tử đang ngày càng nở rộ, cạnh tranh hơn, khốc liệt hơn Với mong muốn phát triển một ứng dụng thương mại điện tử với những công nghệ tân tiên nhất
so với mặt bằng thị trường bấy giờ Với mục tiêu trên thì trọng tâm của đồ án này sẽ đi sâu phát triển một ứng dụng android đặt
đồ ăn online Với xu hướng hiện tại thì người với sự tiện nghi và nhanh của nhiều dịch vụ giao hàng nhanh , người người, nhà nhà đều muốn một dịch vụ nhanh gọn và không phải đi ra ngoài để
có thể có một bữa ăn ngon Vì thế nên việc ra đời một ứng dụng
để đặt đồ ăn online như này càng là một việc hết sức cần thiết Vì
lí do đó nên nhóm chúng em đã bắt tay vào và cùng nhau xây dựng lên ứng dụng này với mong muốn có thể giúp ích được một phần nào đó cho thị trường kinh tế ngày nay…
Trang 5LỜI CẢM ƠN
Xin cảm ơn ThS Trịnh Thị Ngọc Linh hướng dẫn, truyền đạt những kiến thức bổ ích liên quan tới ngành học một cách hiệu quả và dể tiếp cận trong thời gian qua, giúp chúng em nhìn
ra cũng như hiểu ra được rất nhiều điều đã thắc mắc trong những lần đã được thầy hướng dẫn Nhờ những gì cô đã giảng dạy thì chúng em có đủ kiến thức để bắt tay vô hoàn thành một
đồ án, màn hình bị cho mình những hành trang vô cùng đắt giá này và tin rằng môn học Lập trình trên thiết bị di động này sẽ giúp rất nhiều cho việc phát triển các phần mềm di động sau này một cách hiện đại, tiên tiến, nhanh chóng, hiệu quả Cô là một người có nhiệt huyết với nghề, cô đã không tiếc chia sẽ những kinh nghiệm quý báu của mình, những kinh nghiệm được rút ra từ thành công lẫn thất bại cho những sinh viên mà thầy đã từng giảng dạy Chúng em xin chân thành cảm ơn cô rất nhiều!
Trang 6NHẬN XÉT
(Của giảng viên hướng dẫn)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Đà nẵng, ngày … tháng … năm 2023 Chữ kí giảng viên
ThS Trịnh Thị Ngọc Linh
Trang 7MỞ ĐẦU ii
LỜI CẢM ƠN iii
NHẬN XÉT iv
DANH MỤC HÌNH ẢNH vii
CHƯƠNG 1: GIỚI THIỆU VỀ DỰ ÁN 1
1.1 Tên dự án 1
1.2 Người thực hiện 1
1.3 Giới thiệu về dự án 1
1.4 Lý do chọn đề tài 1
1.5 Sự khác biệt 1
1.6 Tổng quan 2
CHƯƠNG 2: KIẾN THỨC TỔNG QUAN 3
2.1 Cơ sở lý luận thực tiễn 3
2.1.1 Ứng dụng di động là gì 3
2.1.2 Lợi ích của ứng dụng di động 3
2.1.3 Tổng quan về XAMPP 4
2.1.4 Tổng quan về Firebase 5
2.1.5 Room Database 6
2.2 Ngôn ngữ lập trình di động 7
2.2.1 Ngôn ngữ trong lập trình ứng dụng 7
2.2.2 Tổng quan về IDE Android Studio 9
CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 11
3.1 Use case diagram 11
3.2 Class diagram 12
3.3 Activity diagram 13
3.4 State diagram 14
3.5 Sequence diagram 14
3.6 Database 15
CHƯƠNG 4: CHI TIẾT DỰ ÁN 17
Trang 84.1 Giới thiệu về đề tài 17
4.1.1 Môi Trường Cài Đặt 17
CHƯƠNG 5: Mô TẢ VÀ HƯỚNG DẪN SỬ DỤNG ỨNG DỤNG 18
4.1.3 Màn hình danh mục và màn hình sản phẩm 19
4.1.4 Màn hình chi tiết sản phẩm 20
4.1.5 Màn hình giỏ hàng 21
4.1.7 Màn hình thanh toán 23
4.1.9 Màn hình thông báo 25
4.1.11 Màn hình giới thiệu chung 26
4.1.12 Màn hình liên hệ 27
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỄN 30
5.1 Kết quả đạt được 30
TÀI LIỆU THAM KHẢO 31
Trang 9DANH MỤC HÌNH ẢNH
Hình 3: Các ngôn ngữ tạo nên ứng dụng di động 3
Hình 4: Logo XAMPP 5
Hình 5: Cơ sở dữ liệu Firebase 5
Hình 6: Logo IDE Android Studio 10
Hình 7: Usecase diagram 11
Hình 8: Class diagram 12
Hình 9: Activity diagram 13
Hình 10: State Diagram 14
Hình 11: Sequence diagram 14
Hình 12: Cơ sở dữ liệu 15
Hình 13: Mối quan hệ các bảng 16
Hình 14: Giao diện màn hình chủ 18
Hình 15 19
Hình 16: Giao diện danh mục và màn hình sản phẩm 19
Hình 17: Giao diện màn hình chi tiết sản phẩm 20
Hình 18: Giao diện màn hình giỏ hàng và thao tác với giỏ hàng 21
Hình 19: Xóa trống giỏ hàng 22
Hình 20: Yêu cầu chọn món trước khi thanh toán 23
Hình 21: Giao diện màn hình thanh toán và báo lỗi nhập liệu 24 Hình 22:Màn hình thông báo thành công 25
Hình 23: Cơ sở dữ liệu khi thanh toán thành công 26
Hình 24: Màn hình giới thiệu chung 26
Hình 25: Màn hình liên hệ 27
Hình 26: Màn hình liên hệ 28
Hình 27: Nhắn gửi thành công và hiển thị 29
Trang 10CHƯƠNG 1: GIỚI THIỆU VỀ DỰ ÁN
1.1 Tên dự án
- Xây dựng ứng dụng đặt đồ ăn online (Food App)
1.2 Người thực hiện
- Tên nhóm trưởng: Huỳnh Phú Nhuận
- Mã sinh viên: 21IT365
- Lớp: 21SE5
1.3 Giới thiệu về dự án
Ngày nay, công nghệ thông tin trở thành một tri thức rất quan trọng đốivới mỗi con người chúng ta Vì vậy chúng ta phải cập nhật chúng một cáchliên tục Internet là một phần không thể thiếu để hỗ trợ cho việc tìm kiếm Đó
là một nơi để mỗi cá nhân, đoàn thể thông qua việc thiết kế trang web, ứngdụng để giới thiệu về lĩnh vực mình, ứng dụng đặt đồ ăn, thức uống do em tìmhiểu và phát triển với mục tiêu ban đầu là phục vụ cho học tập và mong muốnsau này có thể ứng dụng vào thực tế Ứng dụng có thể đáp ứng được các nhucầu cơ bản của người dùng, Mang tính chất tham khảo là chủ yếu, em sẽ cốgắng tiếp tục điều chỉnh trong thời gian sắp tới
1.4 Lý do chọn đề tài
Nhịp sống hiện đại bận rộn dẫn đến những thay đổi đáng kể trong thóiquen ăn uống của nhiều người, thay vì nấu nướng, hay là ra quan thì họ chọngiải pháp giao hàng tận nơi Những bữa ăn tiện lợi nhanh chóng đang là sự lựachọn của nhiều người Tại Việt Nam đã và đang sử dụng các dịch vụ giao đồ
ăn nhanh Thời gian chủ yếu tập trung vào các bữa trưa, ăn tối trong tuần.sd
1.5 Sự khác biệt
Em đưa ra sản phẩm ứng dụng mà được tìm hiểu, chọn lọc từ nhữngnhững cái hay cái mới của các ứng dụng đã có và những yếu tố mà khách hàngmong muốn để đưa ra một ứng dụng có thể nói là hoàn toàn khác biệt với vàđáp ứng các nhu cầu mà những nơi khác chưa thực hiện được Đặc biệt, đây làứng dụng được tạo ra với mục đích phi thương mại
Trang 111.6 Tổng quan
Với những nội dung trên em bước đầu đã tạo ra được ứng dụng có các phầnsau:
- Trang chủ: Nơi giới thiệu chung và tổng quan về ứng dụng.
- Trang tìm kiếm: Đưa ra thông tin các món ăn, thức uống, người dùng có
thể lựa chọn, tìm kiếm các món ăn theo mức giá, danh mục một cách nhanhchóng
- Trang thông tin món ăn, đồ uống: Là trang cung cấp đầy đủ thông tin về
sản phẩm mà khách hàng lựa chọn như giá, chất lượng, các món tương tự
- Trang lịch sử đặt hàng: Là trang sẽ đưa ra các chi tiết đơn chờ duyệt, đơn
đang giao, đơn hoàn thành và đơn hủy
- Trang giỏ hàng: Là trang quản lý giỏ hàng của khách hàng, thêm số lượng,
xóa, nhập mã giảm giá
- Trang đặt món: Là trang để điền thông tin, đưa ra các yêu cầu, thanh toán
và xác nhận đặt món với nhiều phương thức thanh toán khác nhau như làchuyển khoản ngân hàng, quét mã QR-Pay, sử dụng thẻ ATM, thẻ Visa,Master Card, trả sau
Trang 12CHƯƠNG 2: KIẾN THỨC TỔNG QUAN
2.1 Cơ sở lý luận thực tiễn
Ngôn ngữ lập trình cho Android bao gồm: Java, Kotlin
Đối với hệ điều hành IOS, sử dụng ngôn ngữ lập trình Swift, Objective-C
Hình 1: Các ngôn ngữ tạo nên ứng dụng di động
2.1.2 Lợi ích của ứng dụng di động
Ứng dụng di động là một phần không thể thiếu trong cuộc sống hiệnđại, chúng mang lại rất nhiều lợi ích như:
Trang 13 Tiện lợi: Bất cứ ai cũng có thể sử dụng ứng dụng di động bất cứ khi nàocần thiết, không cần phải sử dụng máy tính hoặc điện thoại cổ điển.
Tăng cường khả năng kết nối: Ứng dụng di động cho phép bạn kết nối vớinhiều người từ khắp nơi trên thế giới, đồng thời cung cấp cho bạn cáccông cụ để trao đổi thông tin và tương tác
Nâng cao hiệu suất làm việc: Nhiều ứng dụng di động được thiết kế đểgiúp người dùng quản lý thời gian và công việc của họ Chúng cũng cungcấp các công cụ để theo dõi tiến độ và đạt được các mục tiêu
Tăng cường giải trí: Ứng dụng di động mang đến rất nhiều lựa chọn giảitrí như chơi game, nghe nhạc, xem phim và đọc sách, tất cả chỉ trong mộtchiếc điện thoại
Tiết kiệm thời gian: Việc sử dụng ứng dụng di động giúp tiết kiệm thờigian và công sức của người dùng trong việc tìm kiếm thông tin và thựchiện các giao dịch trực tuyến
Tăng cường an ninh: Nhiều ứng dụng di động được thiết kế để đảm bảotính bảo mật và an toàn cho người dùng Chúng cung cấp các tính năng đểbảo vệ thông tin cá nhân của người dùng và ngăn chặn các hoạt động gianlận
Tóm lại, ứng dụng di động có rất nhiều lợi ích và đã trở thành một phần khôngthể thiếu trong cuộc sống của chúng ta
2.1.3 Tổng quan về XAMPP
Phần mềm Xampp là một trong những phần mềm được nhiều lập trìnhviên sử dụng để thiết lập website theo ngôn ngữ PHP XAMPP có công dụngthiết lập web server có cài đặt sẵn các công cụ như PHP, Apache, MySQL…Xampp sở hữu thiết kế giao diện thân thiện với người dùng, cho phép các lậptrình viên có thể đóng mở hoặc reboot các tính năng của server mọi lúc Ngoài
ra, Xampp cũng được xây dựng theo source code mở Đánh giá một cách tổngthể, Xampp được đánh giá là một trong những phần mềm trọng yếu trong việcxây dựng website dành cho các lập trình viên PHP Xampp cài đặt các thành tốtrọng yếu, hỗ trợ lẫn nhau bao gồm:
Trang 14 Apache.
PHP (thiết lập nền tảng để các tập tin script *.php hoạt động)
MySql (hệ quản trị dữ liệu)
Hình 3: Cơ sở dữ liệu Firebase
Hoạt động và chức năng hiện tại của Firebase:
Firebase Authentication
Trang 15Hoạt động nổi trội nhất của Firebase chính là xây dựng những bước xácdụng người dùng thông qua Email, Facebook, Twitter, GitHub hay Google.Ngoài ra, hoạt động Firebase Authentication cũng hỗ trợ xác thực nặc danhcho những ứng dụng Hoạt động xác thực của Firebase có thể giúp cho thôngtin cá nhân của những người sử dụng được an toàn hơn Điều này cũng đảmbảo tài khoản và các thông tin cá nhân của người dùng không bị đánh cắp
Firebase Hosting
Cách thức hoạt động tiếp theo được nhắc đến là Firebase Hosting Đây
là một hoạt động được phân phối thông qua tiêu chuẩn công nghệ bảo mật SSl
từ hệ thống mạng CDN
CDN chính là cụm từ viết tắt của Content Delivery Network chính làmột mạng lưới máy chủ giúp lưu giữ lại các bản sao của các nội dung tĩnh,Những nội dung tĩnh này nằm ở bên trong website và trực tiếp phân phối đếncác máy chủ PoP khác Mạng lưới của máy chủ CDN được thiết đặt ở khắp nơitrên thế giới Từ máy chủ Pop – Points of Presence, nguồn dữ liệu sẽ được gửi
đi đến những người dùng cuối cùng
Firebase Realtime Database
Firebase Realtime Database có dạng một JSON đã được đồng bộ thờigian đến với tất cả các kết nối client Để có được hoạt động này thì các lậptrình viên cần phải đăng ký tài khoản ở trên Firebase Dữ liệu ở trong database
sẽ tự động cập nhật một cách liên tục khi phát triển ứng dụng Sau khi đã đượccập nhật thì những dữ liệu này sẽ được truyền tải thông qua các kết nối SSl có
Trang 16chất Room database là abstract layer gồm cơ sở dữ liệu chuẩn SQLite đượcAndroidthông qua với 3 thành phần chính là: Database, DAO (Data Access Object) và entity.Mỗi thành phần đều có nhiệm vụ và chức năng riêng.
- Đặc điểm:
Framework chính (Sqlite Database) cung cấp các built-in support chocác trườnghợp làm việc với các nội dung SQL thô Mặc dù các API này khámạnh mẽ nhưng chúnglại tương đối low-level và yêu cầu khá nhiều thời gian
và nỗ lực để sử dụng: Không có xác thực các câu truy vấn SQL ở thời điểmcompile-time Khi data graphthay đổi thì dev sẽ phải cập nhật lại các câu truyvấn SQL thủ công Việc này khá mất thờigian và xác suất gặp lỗi trong quátrình khá lớn
- Dao (Data Access Objects)
Đây là component đại diện cho lớp hoặc interface như một đối tượngtruy cập dữ liệu (DAO) DAO là thành phần chính của Room là chịu tráchnhiệm trong việc địnhnghĩa các phương thức truy cập CSDL Các lớp đượcchú thích với @Database phải chứa một phương thức trừu tượng có số lượngđối số truyền vào là 0 và đối tượng trả về là đốitượng của lớp được chú thíchbởi @Dao Khi code được sinh ra ở thời điểm biên dịch thì Room sẽ tạo mộtimplementation của class này
Ngôn ngữ lập trình này được phát hành năm 2011 và năm 2017, Google đãtuyên bố sẽ ưu tiên hỗ trợ hàng đầu cho Kotlin
Trang 17 Lập trình Android bằng Java
Được ra mắt từ sớm, Java trở thành ngôn ngữ phổ biến nhất trong lậptrình Android Bạn hoàn toàn có thể sử dụng Android Studio trong giai đoạnlập trình
Android SDK sẽ được tự động cài đặt trong bước cuối cùng của quá trình càiđặt chương trình Google khuyến khích cộng đồng Android sử dụng AndroidStudio khi lập trình bằng Java
Lập trình Android bằng C++
C++ là một ngôn ngữ low- level, tương thích với phần cứng Việc lậptrình bằng C++ sẽ giúp bạn tốn ít tài nguyên phần cứng hơn Hiệu suất đượcnâng cao và chương trình của bạn sẽ chạy nhanh hơn
Lập trình Android bằng Python
Nếu bạn là người mới thì Python là sự lựa chọn dành cho bạn Ngônngữ này sẽ không yêu cầu bạn cài đặt thêm quá nhiều công cụ và đơn giản cácbước lập trình của bạn
Việc chạy thử cũng trở nên dễ dàng hơn khi bạn có thể chạy thử ngay trực tiếptrên thiết bị Android của mình Khi đã làm quen với ngôn ngữ lập trìnhPython, bạn hoàn toàn có thể tự thiết kế cho bản thân một phiên bản APK hoànchỉnh
Lập trình Android bằng C#
Được phát triển bởi Microsoft, C# là một ngôn ngữ lập trình hướng đốitượng đa năng Các ứng dụng trong Windows truyền thống, mã nguồn củachương trình được dịch trực tiếp thành mã thực thi của hệ điều hành Được ra đời từ những năm 2000, C# trở thành thứ ngôn ngữ lập trình đơn giảnvới khoảng 80 từ khóa và một hệ thống dữ liệu được dựng sẵn
Vì là một ngôn ngữ đơn giản, C# cũng tồn tại một số nhược điểm như: Chỉchạy trên nền Windows và có cài NET Framework, thao tác đối với phần cứngyếu, phần nhiều phụ thuộc vào Windows
Trang 18 Lập trình Android bằng Draft
Đây là ngôn ngữ lập trình đơn giản được kế thừa và phát triển trên các nềntảng ngôn ngữ C++, C# Ít được phổ biến hơn nhưng với những tính năng ưuviệt của Draft rất đáng để bạn tìm hiểu
Lập trình Android bằng Lua
Lua – Theo tiếng Bồ Đào Nha còn có nghĩa là mặt trăng Ngôn ngữ lập trìnhnày có đặc điểm nhỏ gọn, đa nền tảng và không phụ thuộc vào phần cứng Vậynên Lua có cấu trúc linh động, ít dư thừa dễ dàng sử dụng và test
2.2.2 Tổng quan về IDE Android Studio
Android Studio là IDE chính thức được sử dụng trong phát triển ứngdụng Android dựa trên IntelliJ IDEA Chức năng chính của Android Studio làcung cấp các giao diện giúp người dùng có thể tạo các ứng dụng và xử lý cáccông cụ file phức tạp sau hậu trường Ngôn ngữ lập trình được sử dụng trongAndroid Studio là Java và nó sẽ được cài đặt sẵn trên thiết bị của bạn Khi sử dụng Android Studio thì bạn chỉ cần viết, chỉnh sửa và lưutrữchúng trên các dự án của mình và các file nằm trong dự án đó Đồngthời,Android Studio còn cung cấp quyền truy cập vào Android SDK
Ngoài ra, bạn có thể xem Android Studio là đuôi cho code Java chophép nó chạy trơn tru trên các thiết bị Android rồi tận dụng được lợi thế củaphần cứng gốc Bạn chỉ cần sử dụng ngôn ngữ lập trình Java để có thể viếtchương trình, khi đó Android SDK sẽ có nhiệm vụ kết nối các phần này lại vớinhau
Khi đó, Android Studio sẽ kích hoạt để thực hiện chạy code vàthôngqua trình giả lập hoặc dựa vào bất kỳ phần cứng giúp kết nối với thiết bị Sau
đó, bạn có thể gỡ rối cho chương trình của mình ngay khi nó chạy và nhậnphản hồi giúp giải thích các sự cố,
Trang 19Cho đến hiện nay, Google đã và đang rất nỗ lực để giúp cho AndroidStudio sẽ trở nên mạnh mẽ và hữu ích hơn Khi bạn gõ code, nó sẽ giúp bạncung cấp danh sách gợi ý hoàn thành để giúp người dùng cóthể hoàn thiệnđược dòng code đó Đây là một trong những chức năng rất hữu ích đề phòngcho trường hợp người dùng không nhớ chính xác cú pháp giúp bạn tiết kiệmthời gian hiệu quả hơn.
Hình 4: Logo IDE Android Studio
Trang 20CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG3.1 Use case diagram
+ Actor người dùng: bao gồm các use case như đăng ký, tìm kiếm, xem sảnphẩm, xem lịch sử đặt hàng, đặt hàng, Khi người dùng muốn thao tác cácchức năng trên ứng dụng thì phải bắt buộc đăng nhập
Hình 5: Usecase diagram