Flutter thường bao gồm 2 thành phần chính quan trọng như sau: - Một SDK Software Development Kit: Đây là một bộ sưu tập bao gồm các công cụ có thể hỗ trợ cho người dùng có thể phát triển
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO ĐỒ ÁN 1
ĐỀ TÀI: ỨNG DỤNG BÁN ĐỒ ĂN NHANH
GVHD: Thái Thuỵ Hàn Uyển
Sinh viên thực hiện:
Đoàn Thanh Hiền 17520057
🙡🙢 Tp Hồ Chí Minh, 12/2022 🙠🙣
Trang 2NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
, ngày tháng ……… năm 2022
Người nhận xét
(Ký tên và ghi rõ họ tên)
Trang 3Ngoài ra, em cũng xin gửi lời cảm ơn đến những thầy cô giáo trong trường ĐH CNTT- ĐHQG Tp HCM nói chung, các thầy cô trong Khoa Công nghệ phần mềm nói riêng đã dạy dỗ cho em kiến thức về lập trình, qua đó em có được cơ sở lý thuyết vững vàng và từ đó hoàn thành tốt đồ án
Cuối cùng, em xin chân thành cảm ơn gia đình và bạn bè, đã luôn tạo điều kiện, quan tâm, giúp đỡ, động viên em trong suốt quá trình hoàn thành đồ án
Thành phố Hồ Chí Minh, ngày 27 tháng 12 năm 2022
Trang 4MỤC LỤC
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN 2
LỜI CẢM ƠN 3
MỤC LỤC 4
MỞ ĐẦU 6
1 Lý do chọn đề tài: 6
2 Mục đích của đề tài: 6
3 Đối tượng: 6
4 Phạm vi nghiên cứu: 6
TỔNG QUAN 7
NGHIÊN CỨU THỰC NGHIỆM - LÝ THUYẾT 9
1 Nội dung nghiên cứu 9
a) Cơ sở lý thuyết 9
*Firebase 11
b) Thực trạng 11
c) Giải pháp: 12
2 Phương pháp nghiên cứu 14
PHÂN TÍCH THIẾT KẾ 15
HIỆN THỰC 17
1 Kết quả cài đặt các chức năng 17
1.1 Màn hình Login 17
1.2 Màn hình đăng ký thành viên 18
1.3 Menu 19
1.4 Tài khoản 23
Trang 51.5 Thông tin sản phẩm 26
2 Các yêu cầu khác khi cài đặt/sử dụng phần mềm 27
TỔNG KẾT 28
1 Tổng kết 28
2 Hướng phát triển 28
TÀI LIỆU THAM KHẢO 29
Trang 6MỞ ĐẦU
1 Lý do chọn đề tài:
Với thời đại 4.0 với mọi các mặc hàng hiện tại đều có thể mua bán trực tuyến Qua đại dịch Covid lại càng có thể thấy rõ hơn nhu cầu của người dùng hướng đến việc hướng đến thị trường trực tuyến càng nhiều vì có thể giảm thiểu thời gian đi lại, có nhiều thời gian tham khảo các mặc hàng mà không cần phải e ngại bất cứ điều gì Đây cũng là một cách kinh doanh rất phổ biến và thành công hiện tại mà các nhà kinh doanh to nhỏ hiện tại đang áp dụng
Nhận thức được điều này, em quyết định tìm hiểu và chọn đề tài: “Xây dựng ứng dụng bán đồ ăn nhanh”
Trang 7TỔNG QUAN
*Về Flutter
Flutter được Google giới thiệu là một người mới trong thế giới ứng dụng
di động Là một SDK mới của Google dành cho các thiết bị di động giúp developers và designers xây dựng nhanh chóng ứng dụng dành cho các thiết bị di động (Android, iOS) Flutter là dự án mã nguồn mở đang
trong giai đoạn thử nghiệm Flutter bao gồm Reactive framework và công nghệ hiển thị 2D (2D rendering engine)và các công cụ phát
trển(development tool) Các thành phần này làm việc cùng nhau giúp ta thiết kế, xây dựng, test, debug ứng dụng Không có gì ngạc nhiên khi Flutter giúp các nhà phát triển tạo ra các ứng dụng native đẹp mắt và giúp họ phát triển các ứng dụng đa nền tảng một cách dễ dàng
Trang 8các cơ sở dữ liệu.
*Về ứng dụng bán đồ ăn nhanh
Sau khi thực hiện nghiên cứu về các ứng dụng bán đồ ăn nhanh, có khá
nhiều các tính năng cần thiết để có thể hoàn thiện một ứng dụng bán đồ
ăn nhanh hoàn chỉnh và có thể đưa vào kinh doanh một cách thực sự Vì
thời gian có hạn và không đủ nhân lực, em quyết định xây dựng ứng
dụng bán đồ ăn nhanh với các tính năng sau:
- Đăng ký tài khoản người dùng
- Đăng nhập tài khoản người dùng
- Màn hình chính hiển thị những món ăn đang hot
- Màn hình hiển thị tất các các món ăn và phân chia theo từng loại
món ăn
- Màn hình các món ăn yêu thích theo từng tài khoản
- Chức năng yêu thích món theo từng tài khoản
- Chức năng giỏ hàng
- Bảng thông tin người dùng bao gồm chức năng edit thông tin, tuỳ
chỉnh layout, đăng xuất
- Màn hình tính tiền cho món ăn và tiền vận chuyển
Trang 9NGHIÊN CỨU THỰC NGHIỆM - LÝ THUYẾT
1 Nội dung nghiên cứu
a) Cơ sở lý thuyết
* Flutter
Flutter là một nền tảng hỗ trợ phát triển cho các ứng dụng đa nền cho hệ iOS và Android do tập đoàn Google phát triển Nó được sử dụng vô cùng phổ biến cho nhiệm vụ tạo ra các ứng dụng gốc dành cho Google Flutter thường bao gồm 2 thành phần chính quan trọng như sau:
- Một SDK (Software Development Kit): Đây là một bộ sưu tập bao gồm các công cụ có thể hỗ trợ cho người dùng có thể phát triển được các ứng dụng nền của mình Những điều này thường bao gồm các công cụ có trình để biên dịch mã thành các mã gốc dành riêng cho hệ điều hành iOS và Android
- Một Framework (UI Library based on widgets): Mỗi một tập hợp những thành phần giao diện của người dùng đều có thể thực hiện tái sử dụng vô cùng dễ dàng nên người sử dụng có thể cá nhân hóa tùy theo nhu cầu riêng của bản thân mình
Tính năng phát triển nhanh chóng các ứng dụng: Hầu hết, mọi tính năng hot reload của Flutter giúp cho người dùng có thể sử dụng thử nghiệm nhanh chóng và dễ dàng hơn rất nhiều Với khả năng xây dựng giao diện cho người dùng cộng thêm các tính năng về sửa lỗi nhanh chóng nên Flutter đang thu hút không ít người sử dụng lựa chọn Ngoài ra, các trải nghiệm về thực hiện tải lại lần thứ hai đều rất dễ dàng mà không làm mất đi trạng thái ở trên emulator, simulator và device cho cả iOS và Android.UI đẹp mắt và có tính biểu cảm: Flutter thỏa mãn người sử
dụng nhờ các widget built-in vô cùng đẹp mắt dựa theo Material Design
và Cupertino (iOS-flavor), thì các API sẽ thực hiện chuyển động theo
Trang 10nhiều hướng phong phú, scroll tự nhiên và mượt mà nên có thể tự động nhận thức được các nền tảng cần thiết
Quá trình truy cập với nhiều tính năng và SDK native: Nhờ vậy, các ứng dụng của bạn sẽ trở nên sống động hơn rất nhiều nhờ vào API của
platform, SDK của các bên thứ ba và native code Từ đó, nó sẽ cho phép lập trình viên sử dụng lại được mã Java, Swift và ObjC hiện tại của
mình Nhờ vậy, các truy cập sẽ thực hiện được mọi tính năng mà SDK native dựa trên iOS và Android.Có khả năng phát triển các ứng dụng thống nhất: Nhờ sở hữu các công cụ cũng như thư viện nên người sử dụng có thể dễ dàng đưa ra được ý tưởng của mình vào chính trong cuộc sống trên hệ điều hành iOS và Android Chính vì thế, nếu bạn là người chưa có nhiều kinh nghiệm cho mục đích phát triển các thiết bị di động thì việc lựa chọn Flutter được xem là một phương pháp dễ dàng và rất nhanh chóng trong việc xây dựng ra một ứng dụng di động tuyệt đẹp Ngoài ra, nếu như bạn là một nhà phát triển cho iOS hoặc Android có kinh nghiệm lâu đời thì bạn hoàn toàn có thể sử dụng Flutter dành cho các View của bạn Từ đó tận dụng việc viết ra nhiều code từ Java /
Kotlin / ObjC / Swift đang hiện có mà bạn sở hữu
Thành phần chính của Flutter:
- Framework (UI Library based on widgets): Framework sẽ cho
phép người dùng tập hợp những thành phần của giao diện, vì vậy việc tái sử dụng nhũng mã code trên framework đã trở nên dễ dàng hơn rất nhiều
- SDK (Software Development Kit): SDK được biết đến là một công
cụ giúp cho người dùng phát triển được ứng dụng nền của mình Người dùng sử dụng công cụ này để hỗ trợ đa số các thao tác phát triển ứng dụng Trong đó có các trình biên dịch mã thành các mã gốc dành riêng cho 2 hệ điều hành IOS và Android
Trang 11*Firebase
Firebase là một nền tảng sở hữu bởi google giúp chúng ta phát triển các ứng dụng di động và web Họ cung cấp rất nhiều công cụ và dịch vụ tiện ích để phát triển ứng dụng nên một ứng dụng chất lượng Điều đó rút ngắn thời gian phát triển và giúp ứng dụng sớm ra mắt với người dùng Firebase cung cấp cho người dùng các dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây với hệ thống máy chủ cực kỳ mạnh mẽ của
Google Chức năng chính của firebase là giúp người dùng lập trình ứng dụng, phần mềm trên các nền tảng web, di động bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu
Với firebase, bạn có thể tạo ra những ứng dụng real-time như app chat, cùng nhiều tính năng như xác thực người dùng, Cloud Messaging, Bạn
có thể dùng firebase giống như phần backend của app
Các dịch vụ của firebase hoàn toàn miễn phí, tuy nhiên bạn cần phải trả thêm tiền nếu muốn nâng cấp lên Điều này bạn nên cân nhắc nếu muốn xây dựng một ứng dụng lớn sử dụng phần backend là firebase, vì cái giá khi muốn nâng cấp còn khá đắt đỏ so với việc xây dựng backend truyền thống
b) Thực trạng
*Flutter
Phiên bản đầu tiên của Flutter được gọi là"Sky"và chạy trên hệ điều
hành Android Nó được công bố tại hội nghị nhà phát triển Dart 2015, với dự định ban đầu để có thể kết xuất ổn định ở mức 120 khung hình trên giây Trong bài phát biểu chính ở hội nghị Google Developer Days tại Thượng Hải, Google công bố phiên bản Flutter Release Preview 2, đây là phiên bản lớn cuối cùng trước Flutter 1.0 Vào ngày 4 tháng 12 năm 2018, Flutter 1.0 đã được phát hành tại sự kiện Flutter Live, là
phiên bản"ổn định"đầu tiên của khung ứng dụng này
Engine của Flutter được viết chủ yếu bằng C++, cung cấp sự hỗ trợ kết xuất ở mức độ thấp bằng thư viện đồ họa Skia của Google Thêm vào
đó, nó giao tiếp với các SDK của riêng nền tảng như các SDK do
Android và iOS cung cấp
*Firebase
Trang 12Lịch sử phát triển:
Firebase phát triển từ Envolve, một công ty khởi nghiệp trước đó do James Tamplin và Andrew Lee thành lập vào năm 2011 Họ thành lập Firebase như một công ty vào tháng 9 - 2011 Đến tháng 4 năm 2012 Firebase đã lần đầu tiên được ra mắt công chúng
Sản phẩm đầu tiên của Firebase là Cơ sở dữ liệu thời gian thực (Firebase realtime database), một API đồng bộ hóa dữ liệu ứng dụng trên các thiết
bị iOS, Android và Web, đồng thời lưu trữ trên đám mây của Firebase Sản phẩm hỗ trợ các nhà phát triển phần mềm trong việc xây dựng các ứng dụng cộng tác, theo thời gian thực
Vào tháng 10 năm 2014, Firebase đã được Google mua lại Từ đó đến nay, Firebase đã ra mắt thêm nhiều tính năng mới và được nhiều nhà phát triển ưa thích sử dụng trong các dự án của mình
Flutter luôn đảm bảo chất lượng lập trình cho app đa nền nhờ vào cấu trúc mã native được tối ưu tốt và sử dụng các engine đồ họa hiện đại Sự trao đổi dữ liệu từ mã nguồn đến ngôn ngữ lập trình luôn thông suốt Bất
kì thứ gì mà native app của Android, iOS có thể làm được thì cũng
tương tự ở Flutter app Nhóm phát triển cũng tiết kiệm được rất nhiều thời gian tùy chỉnh giao diện bởi UI đa nền của Flutter về căn bản là giống nhau
Trải nghiệm người dùng đối với app điện thoại phụ thuộc nhiều vào mức
độ tối ưu phần mềm Flutter có hiệu năng rất tốt trong trường hợp này
Trang 13nhờ vào cấu trúc mã gắn liền với mã máy thay vì dựa vào các câu lệnh giao tiếp đi kèm khác, từ đó loại bỏ các lỗi triệt để
Tốc độ, năng suất – đây là hai trọng tâm của nhóm phát triển Flutter Công cụ đã có sẵn bộ widget dễ sử dụng và yêu cầu ở cú pháp không đòi hỏi những đoạn mã phức tạp Chức năng “hot reload” được đề cập ở trên giúp gia tăng tốc độ tìm kiếm và sửa lỗi, vô cùng phù hợp cho những dự
án đặt nặng về yếu tố thời gian
Tính đến năm 2020, cộng đồng Flutter đã phát triển rất mạnh Theo khảo sát của Stack Overflow, 68.8% người tham gia đã thể hiện sự ưa thích của họ với framework này và có mong muốn tiếp tục dùng nó nhiều hơn trong tương lai
Khả năng giúp tiết kiệm thời gian lập trình cũng rút ngắn tốc độ triển khai một sản phẩm Flutter ra thị trường
Nhờ vào thế mạnh trong hiệu năng và khả năng tối ưu phần mềm, việc lập trình app bằng Flutter không yêu cầu nhiều thời gian và cũng giảm giá thành làm việc theo giờ Từ đó doanh nghiệp dễ dàng tiết kiệm chi phí cho sản phẩm so với việc sử dụng các công cụ lập trình ứng dụng đa nền khác
*Firebase
Firebase realtime data:
Khi đăng ký một tài khoản trên Firebase để tạo ứng dụng, bạn đã có một cơ sở dữ liệu
thời gian thực Dữ liệu bạn nhận được dưới dạng JSON Đồng thời nó cũng luôn được đồng bộ thời gian thực đến mọi kết nối client
Đối với các ứng dụng đa nền tảng, tất cả các client đều sử dụng cùng một cơ sở dữ liệu
Nó được tự động cập nhật dữ liệu mới nhất bất cứ khi nào các lập trình viên phát triển ứng dụng Cuối cùng, tất cả các dữ liệu này được truyền qua kết nối an toàn SSL có bảo mật với chứng nhận 2048 bit
Trong trường hợp bị mất mạng, dữ liệu được lưu lại ở local Vì thế khi có mọi sự thay đổi
nào đều được tự động cập nhật lên Server của Firebase Bên cạnh đó, đối với các dữ liệu
ở local cũ hơn với Server thì cũng tự động cập nhật để được dữ liệu mới nhất
Firebase Authendication
Trang 14Hoạt động nổi bật của Firebase là xây dựng các bước xác thực người dùng bằng Email, Facebook, Twitter, GitHub, Google Đồng thời cũng xác thực nặc danh cho các ứng dụng Hoạt động xác thực có thể giúp thông tin cá nhân của người sử dụng được an toàn
và đảm bảo không bị đánh cắp tài khoản
Firebasehosting:
Cách thức hoạt động cuối cùng của Firebase được đề cập trong bài viết này là cung cấp các hosting Hosting được phân phối qua tiêu chuẩn công nghệ bảo mật SSL từ mạng
CDN.
2 Phương pháp nghiên cứu
- Phương pháp chủ đạo: Phương pháp nghiên cứu tài liệu
- Phương pháp bổ trợ: Phương pháp quan sát
Trang 15PHÂN TÍCH THIẾT KẾ
1 Nhiệm vụ và yêu cầu
Hệ thống cung cấp đầy đủ các thông tin về sản phẩm, có nhiều tính năng hỗ trợ khách hàng đặt hàng một cách thuận tiện, nhanh chóng hơn, có thể quản lý cơ sở dữ liệu
- Đối với quản lý:
Quản lý được tất cả các cơ sở dữ liệu
Thống kê doanh thu
Cập nhật, thay đổi dữ liệu
- Đối với khách hàng
Phân loại giúp tìm kiếm sản phẩm nhanh hơn
Xem được thông tin của sản phẩm
Thanh toán nhanh chóng
Giao diện đẹp, trực quan, cho phép đổi giao diện theo sở thích
2 Phân thích thiết kế hệ thống
Khách hàng:
- Nhóm chức năng xem thông tin: đăng ký thành viên, đăng nhập, đăng xuất, xem thông tin giỏ hàng, xem thông tin đơn hàng, xem thông tin sản phẩm, tìm kiếm sản phẩm, phân loại sản phẩm, yêu thích sản phẩm, xem danh mục yêu thích, thay đổi giao diện app, thay đổi thông tin cá nhân
Trang 16Tác nhân của hệ thống:
1 Admin Là người quản lý, vận hành hệ thống và
có toàn quyền
2 Khách hàng Là người có quyền đăng ký thành viên,
xem, yêu thích, đặt hàng, xem đơn hàng, custom tài khoản, custom giao diện app
Xem thông tin sản phẩm
Khách hàng
Xem, tìm kiếm các sản phẩm Quản lý giỏ hàng Thêm, xóa các sản phẩm trong giỏ
hàng và thanh toán Thêm và xoá các sản phẩm yêu thích Quản lý sản phẩm
Admin
Thêm, sửa, xóa,tìm kiếm thông tin các sản phẩm
Quản lý người dùng Cập nhật, xóa người dùng
Thống kê Thống kê doanh thu và còn hàng và
hết hàng Quản lý đơn hàng Xem và cập nhật các đơn hàng
Trang 17HIỆN THỰC
1 Kết quả cài đặt các chức năng
1.1 Màn hình Login
Trang 181.2 Màn hình đăng ký thành viên
Trang 191.3 Menu
1.3.1 Trang chủ
Trang 201.3.2 Thực đơn
Trang 211.3.3 Giỏ hàng
Trang 221.3.4 Thông tin giao hàng
Trang 231.4 Tài khoản
1.4.1 Menu chính
Trang 241.4.2 Cài đặt giao diện
Trang 251.4.3 Thông tin cá nhân
Trang 261.5 Thông tin sản phẩm
Trang 272 Các yêu cầu khác khi cài đặt/sử dụng phần mềm
- Phần mềm hệ quản trị cơ sở dữ liệu: Firebase
- Phần mềm khác cần sử dụng khi dùng phần mềm:
- Nền tảng : Hệ điều hành: Android/IOS
Trang 28TỔNG KẾT
1 Tổng kết
Trong thế kỉ 21 với sự phát triển ngày càng nhanh của công nghệ, để doanh nghiệp thành công thì việc thử nghiệm các công nghệ mới là vô cùng cần thiết Chính vì thế nên em đã chọn Flutter để xây dựng ứng dụng của mình
Với kiến thức nền tảng cộng thêm sự hỗ trợ tận tình của cô Hàn Thuỵ Thái Uyển, em đã hoàn thành đề tài và em đã phần nào hiểu được quy trình kinh doanh của một của hàng, ưu điểm khuyết điểm khi sử dụng Flutter ứng dụng vào xây dựng cửa hàng này
Em rất mong nhận được sự đóng góp của cô để trong thời gian tới thì
em sẽ cố gắng khắc phục các vấn đề hạn chế, những vấn đề chưa được tốt, cũng như tìm hiểu và bổ sung thêm những chức năng mới cho phần mềm
Em xin chân thành cảm ơn!
2 Hướng phát triển
Hướng phát triển của em về Jiji Store là tiến đến một hệ thống đáng tin cậy hơn, thuận tiện cho người sử dụng hơn Do vậy trong thời gian tới,
em sẽ tiến hành bổ sung các tính năng như:
+ Liên kết với các ngân hàng, ví điện tử uy tín hiện tại
+ Liên kết với các ứng dụng thứ ba về vận chuyển
+ Cải thiện hệ thống bảo mật như: yêu cầu người dùng phải thay đổi mật khẩu sau xx ngày, thông báo cho admin khi có người export data,… + Google Maps
+ Thiết kế giáo diện đẹp và dễ sử dụng hơn