1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép

169 3 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Tác giả Nguyễn Nhật Nam, Cao Huỳnh Bảo An
Người hướng dẫn ThS. Mai Tuấn Khôi
Trường học Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh
Chuyên ngành Công nghệ thông tin
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2024
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 169
Dung lượng 13,06 MB

Nội dung

ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2.1 Đối tượng nghiên cứu Trong đồ án này, nhóm sẽ tập trung nghiên cứu hai đối tượng chính là người dùng ứng dụng và các công nghệ để phát triển ứng dụn

Trang 1

THÀNH PHỐ HỒ CHÍ MINH

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT

Trang 2

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN – HỆ ĐÀO TẠO CHẤT LƯỢNG CAO

BỘ MÔN CÔNG NGHỆ PHẦN MỀM

🙦  🙤

KHÓA LUẬN TỐT NGHIỆP CHUYÊN NGÀNH CNPM

Đề tài:

GVHD: ThS Mai Tuấn Khôi

Trang 3

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN – HỆ ĐÀO TẠO CHẤT LƯỢNG CAO

TP Hồ Chí Minh, tháng 7, năm 2024

KHÓA 2020-2024

Trang 4

Trường Đại học Sư phạm Kỹ thuật

2 Cao Huỳnh Bảo An 20126087

Tên đề tài: Xây dựng ứng dụng ECommerce mua bán, quản lý giày dép

Thời gian thực hiện: 04/03/2024 đến 11/07/2024

Họ và tên Giáo viên hướng dẫn: ThS Mai Tuấn Khôi

Tp Hồ Chí Minh, ngày , tháng , năm 2024

Giảng viên hướng dẫn

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

Trang 5

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

1 Nguyễn Nhật Nam 20110523

2 Cao Huỳnh Bảo An 20126087

Tên đề tài: Xây dựng ứng dụng ECommerce mua bán, quản lý giày dép

Thời gian thực hiện: 04/03/2024 đến 11/07/2024

Họ và tên Giáo viên phản biện: ThS Nguyễn Minh Đạo

Tp Hồ Chí Minh, ngày , tháng , năm 2024

Giảng viên phản biện

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

Trường Đại học Sư phạm Kỹ thuật TP

Hồ Chí Minh Khoa Đào tạo Chất lượng cao

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập – Tự do – Hạnh phúc

_

Trang 6

đã tạo điều kiện để chúng em có thể tìm hiểu và thực hiện tốt đề tài Cùng với đó, chúng

em xin được gửi cảm ơn đến các bạn cùng khóa đã cung cấp nhiều thông tin và kiến thức hữu ích giúp chúng em có thể hoàn thiện hơn đề tài của mình

Mặc dù chúng em đã cố gắng hết sức để hoàn thành đồ án, tuy nhiên, vẫn còn nhiều thiếu sót về nội dung và hình thức Chúng em sẽ tiếp tục cải tiến mô hình đồ án

để nó trở nên hoàn thiện hơn Chúng em mong rằng Thầy Cô và các bạn cùng khóa sẽ tiếp tục đóng góp ý kiến và giúp đỡ chúng em trong những dự án tiếp theo Một lần nữa, chúng em muốn gửi lời cảm ơn sâu sắc đến tất cả mọi người đã giúp đỡ chúng em trong quá trình phát triển dự án

Trân trọng

Cao Huỳnh Bảo An Nguyễn Nhật Nam

Trang 7

ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP

 Tìm hiểu về mobile framework Flutter

 Tìm hiểu về các triển khai ứng dụng di động và web-app với Flutter

 Tìm hiểu về Firebase và các ứng dụng của nó trong việc triển khai ứng dụng di động và web-app

Họ và Tên SV: Cao Huỳnh Bảo An Mã Số SV : 20126087

Họ và Tên SV: Nguyễn Nhật Nam Mã Số SV : 20110523

Thời gian làm luận văn : từ 04/03/2024 đến 11/07/2024

Chuyên ngành : Công nghệ phần mềm

Tên luận văn : Xây dựng ứng dụng Ecommerce mua bán, quản lý giày dép

GV hướng dẫn : ThS Mai Tuấn Khôi

Nhiệm Vụ Của Luận Văn :

1 Lý thuyết:

Trang 8

CHƯƠNG 2 KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

2.1 Thực trạng về tình hình thương mại điện tử hiện nay

2.2 Khảo sát các ứng dụng liên quan

2.3 Xác định yêu cầu

2.4 Cấu trúc hệ thống

CHƯƠNG 3 MÔ HÌNH HÓA YÊU CẦU

3.1 Lược đồ use case

3.2 Đặc tả use case, lược đồ tuần tự

CHƯƠNG 4 THIẾT KẾ HỆ THỐNG

4.1 Thiết kế class diagram

4.2 Thiết kế giao diện

CHƯƠNG 5 CÀI ĐẶT, KIỂM THỬ VÀ TRIỂN KHAI HỆ THỐNG

 Khái niệm, ưu nhược điểm, các tính năng nổi bật

 Cài đặt môi trường phát triển Flutter

 Tạo dự án Flutter đầu tiên

o Tìm hiểu về Dart:

 Khái niệm, cú pháp cơ bản, các kiểu dữ liệu

 Làm quen với các khái niệm lập trình hướng đối tượng trong Dart

Tuần 2 (11/03 - 15/03):

Trang 9

o Tìm hiểu về Firebase:

 Các dịch vụ của Firebase (Authentication, Firestore, Storage, Functions, etc.)

 Tích hợp Firebase vào dự án Flutter

 Sử dụng Firebase để quản lý dữ liệu và xác thực người dùng

Tuần 3 (18/03 - 22/03):

o Tìm hiểu về kiến trúc ứng dụng Ecommerce:

 Các thành phần chính của ứng dụng Ecommerce

 Luồng xử lý dữ liệu trong ứng dụng Ecommerce

 Các mô hình thiết kế phổ biến trong ứng dụng Ecommerce

Giai đoạn 2: Nghiên cứu và Lập kế hoạch (25/03/2024 - 12/04/2024)

o Lên ý tưởng về các tính năng chính của ứng dụng

o Thiết kế sơ bộ kiến trúc hệ thống và cơ sở dữ liệu

o Hoàn thiện tài liệu phân tích yêu cầu và kiến trúc hệ thống

o Lập kế hoạch chi tiết cho các giai đoạn tiếp theo, bao gồm các mốc thời gian quan trọng

Giai đoạn 3: Thiết kế UI/UX (15/04/2024 - 26/04/2024)

Tuần 7-8 (15/04 - 26/04):

o Thiết kế wireframes và mockups cho giao diện người dùng

o Xây dựng prototype tương tác để kiểm tra luồng người dùng

o Nhận phản hồi từ giảng viên và bạn bè để cải thiện thiết kế

o Hoàn thiện thiết kế UI/UX chi tiết

o Chuẩn bị tài liệu thiết kế UI/UX để trình bày

Trang 10

Giai đoạn 4: Phát triển UI và Server (29/04/2024 - 05/07/2024)

Tuần 9-18 (29/04 - 05/07):

o Bắt đầu phát triển giao diện người dùng (UI) bằng Flutter

o Xây dựng API và các chức năng xử lý logic nghiệp vụ phía máy chủ (Server)

o Tích hợp UI với Server

o Thực hiện kiểm thử đơn vị và kiểm thử tích hợp liên tục

Giai đoạn 5: Kiểm thử và hoàn thiện (08/07/2024 - 11/07/2024)

Tuần 19 (08/07 - 11/07):

o Tiến hành kiểm thử toàn diện ứng dụng (kiểm thử chức năng, hiệu năng, bảo mật)

o Sửa lỗi và cải thiện hiệu suất ứng dụng

o Hoàn thiện tài liệu dự án và chuẩn bị cho buổi bảo vệ

Ngày 12 tháng 7 năm 2024

Người viết đề cương

Cao Huỳnh Bảo An Nguyễn Nhật Nam

Ý kiến của giảng viên hướng dẫn

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

Trang 11

MỤC LỤC

LỜI CẢM ƠN 3

MỤC LỤC 8

DANH MỤC HÌNH ẢNH 10

DANH MỤC BẢNG 13

MỞ ĐẦU 15

1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 15

2 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 15

2.1 Đối tượng nghiên cứu 15

2.2 Phạm vi nghiên cứu 16

3 MỤC ĐÍCH CỦA ĐỀ TÀI 16

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 18

1.1 DART 18

1.1.1 Lịch sử ra đời 18

1.1.2 Cấu trúc 18

1.1.3 Các kiểu biến trong Dart 18

1.1.4 Các kiểu collection trong Dart 19

1.1.5 Kiểm soát luồng 21

1.1.6 Hàm 22

1.1.7 Null aware operation 23

1.1.8 Các Class 24

1.1.9 Hướng đối tượng 25

1.2 FLUTTER 29

1.2.1 Lịch sử ra đời 29

1.2.2 Tổng quan 30

1.2.3 BuildContext 31

1.2.4 StatelessWidget 32

1.2.5 Stateful Widget 33

1.2.6 Ưu điểm: 35

1.2.7 Nhược điểm: 35

1.2.8 Triển khai trong dự án 36

1.3 FIREBASE 36

1.3.1 Lịch sử ra đời 36

1.3.2 Tổng quan 36

Trang 12

1.3.3 Những service khả dụng của Firebase 36

1.3.4 So sánh với các hệ quản trị cơ sở dữ liệu khác 37

1.3.5 Ưu điểm 37

1.3.6 Nhược điểm: 38

1.3.7 Triển khai trong dự án 38

CHƯƠNG 2 KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 40

2.1 THỰC TRẠNG VỀ TÌNH HÌNH THƯƠNG MẠI ĐIỆN TỬ HIỆN NAY 40

2.2 KHẢO SÁT CÁC ỨNG DỤNG LIÊN QUAN 41

2.3 XÁC ĐỊNH YÊU CẦU 49

2.3.1 Yêu cầu chức năng 49

2.3.2 Yêu cầu phi chức năng 52

2.4 CẤU TRÚC HỆ THỐNG 53

2.4.1 Mô Hình Client-Server 53

2.4.2 Mô hình MVC 53

2.4.3 Lý do chọn mô hình MVC: 54

2.4.4 Mô Tả Hệ Thống 54

CHƯƠNG 3 MÔ HÌNH HÓA YÊU CẦU 56

3.1 LƯỢC ĐỒ USE CASE 56

3.2 ĐẶC TẢ USE CASE, LƯỢC ĐỒ TUẦN TỰ 58

CHƯƠNG 4 THIẾT KẾ HỆ THỐNG 120

4.1 THIẾT KẾ CLASS DIAGRAM 120

4.2 THIẾT KẾ GIAO DIỆN 120

4.2.1 Ứng dụng khách hàng & cửa hàng và shipper 120

4.3.1 CMS Web 146

CHƯƠNG 5 CÀI ĐẶT, KIỂM THỬ VÀ TRIỂN KHAI HỆ THỐNG 154

5.1 CÀI ĐẶT 154

5.2 KIỂM THỬ 154

5.3 TRIỂN KHAI ỨNG DỤNG 160

5.3.1 Triển khai ở Client App 160

5.3.2 Triển khai ở phía Admin Web App 160

CHƯƠNG 6 TỔNG KẾT 163

6.1 KẾT QUẢ ĐẠT ĐƯỢC 163

6.2 ƯU ĐIỂM 164

6.3 NHƯỢC ĐIỂM 164

6.4 HƯỚNG PHÁT TRIỂN 164

TÀI LIỆU THAM KHẢO 165

Trang 13

DANH MỤC HÌNH ẢNH

Hình 1 Widget Tree 31

Hình 2 Build Context Tree 32

Hình 3 Giao Diện StockX 41

Hình 4 Giao diện Ebay 42

Hình 5 Giao diện SNKRDUNK 43

Hình 6 Giao diện GOAT 44

Hình 7 Giao diện NovelShip 45

Hình 8 Giao diện NTWRK 46

Hình 9 Giao diện Adidas 47

Hình 10 Giao diện Nike 48

Hình 11 Mô hình MVC 53

Hình 12 Lược đồ Use Case Guest 56

Hình 13 Lược đồ Use Case Customer 56

Hình 14 Lược đồ Use Case Vendor 57

Hình 15 Lược đồ Use Case Shipper 57

Hình 16 Lược đồ Use Case Admin 58

Hình 17 Lược đồ tuần tự Đăng ký 60

Hình 18 Lược đồ tuần tự Đăng nhập 62

Hình 19 Lược đồ tuần tự Đăng xuất 63

Hình 20 Lược đồ tuần tự Quản lý thông tin cá nhân 64

Hình 21 Lược đồ tuần tự Load thông tin quản lý 65

Hình 22 Lược đồ tuần tự Truy cập vào Profile 65

Hình 23 Lược đồ tuần tự Chỉnh sửa thông tin cá nhân 66

Hình 24 Lược đồ tuần tự Thay đổi mật khẩu 67

Hình 25 Lược đồ tuần tự Xem danh sách sản phẩm yêu thích 68

Hình 26 Lược đồ tuần tự Xem chi tiết sản phẩm 69

Hình 27 Lược đồ tuần tự Thêm/Bỏ danh sách yêu thích 70

Hình 28 Lược đồ tuần tự Thêm sản phẩm vào giỏ hàng 71

Hình 29 Lược đồ tuần tự Xem danh mục sản phẩm 72

Hình 30 Lược đồ tuần tự Quản lý giỏ hàng 73

Hình 31 Lược đồ tuần tự Đặt hàng 75

Hình 32 Lược đồ tuần tự Tìm kiếm sản phẩm 76

Hình 33 Lược đồ tuần tự Xem danh sách đơn hàng 77

Hình 34 Lược đồ tuần tự Xóa sản phẩm khỏi giỏ hàng 78

Hình 35 Lược đồ tuần tự Đánh giá sản phẩm 79

Hình 36 Lược đồ tuần tự Yêu cầu hoàn tiền 81

Hình 37 Lược đồ tuần tự Đăng nhập 83

Hình 38 Lược đồ tuần tự Quản lý thông tin cá nhân 84

Hình 39 Lược đồ tuần tự Đăng xuất 85

Hình 40 Lược đồ tuần tự Tạo sản phẩm mới 87

Hình 41 Lược đồ tuần tự Load thông tin sản phẩm 89

Hình 42 Lược đồ tuần tự Cập nhật thông tin sản phẩm 89

Hình 43 Lược đồ tuần tự Xóa sản phẩm 91

Hình 44 Lược đồ tuần tự Phê duyệt hoàn tiền 92

Trang 14

Hình 45 Lược đồ tuần tự Xem thống kê 93

Hình 46 Lược đồ tuần tự Quản lý trạng thái đơn hàng 95

Hình 47 Lược đồ tuần tự Đăng nhập 97

Hình 48 Lược đồ tuần tự Đăng xuất 98

Hình 49 Lược đồ tuần tự Thực hiện giao hàng 99

Hình 50 Lược đồ tuần tự Xem thống kê 101

Hình 51 Lược đồ tuần tự Quản lý thông tin cá nhân 102

Hình 52 Lược đồ tuần tự Đăng nhập 104

Hình 53 Lược đồ tuần tự Đăng xuất 105

Hình 54 Lược đồ tuần tự Quản lý sản phẩm 107

Hình 55 Lược đồ Load thông tin 108

Hình 56 Lược đồ tuần tự Duyệt thông tin 108

Hình 57 Lược đồ tuần tự Xóa thông tin 109

Hình 58 Lược đồ tuần tự Quản lý người bán 110

Hình 59 Lược đồ tuần tự Quản lý danh mục sản phẩm 112

Hình 60 Lược đồ tuần tự Quản lý rút tiền 114

Hình 61 Lược đồ tuần tự Quản lý người tiêu dùng 115

Hình 62 Lược đồ tuần tự Quản lý trạng thái đơn hàng 116

Hình 63 Lược đồ tuần tự Quản lý hoàn tiền 118

Hình 64 Lược đồ tuần tự Quản lý Shipper 119

Hình 65 Lược đồ Class 120

Hình 66 Giao diện phân luồng 121

Hình 67 Giao diện Trang đăng nhập 122

Hình 68 Giao diện Trang đăng ký 123

Hình 69 Giao diện Trang Home 124

Hình 70 Giao diện Trang Tìm kiếm 125

Hình 71 Giao diện trang Sản phẩm 126

Hình 72 Giao diện Trang giỏ hàng 127

Hình 73 Giao diện Trang đơn hàng 128

Hình 74 Giao diện Trang Thông tin cá nhân 129

Hình 75 Giao diện Trang Chỉnh sửa thông tin 130

Hình 76 Giao diện Trang Đơn hàng 131

Hình 77 Giao diện Trang WishList 132

Hình 78 Giao diện Trang MyChat 133

Hình 79 Giao diện Chat 134

Hình 80 Giao diện thông tin cửa hàng 135

Hình 81 Giao diện Trang Sản phẩm 136

Hình 82 Giao diện Trang đơn hàng 137

Hình 83 Giao diện Trang Tạo sản phẩm mới - Tổng quan 138

Hình 84 Giao diện Trang Tạo sản phẩm mới - Giao hàng 139

Hình 85 Giao diện Trang Tạo sản phẩm mới - Thuộc tính sản phẩm 140

Hình 86 Giao diện Trang Tạo sản phẩm mới - Hình ảnh 141

Hình 87 Giao diện Trang thống kê 142

Hình 88 Giao diện Trang Shipper Home 143

Hình 89 Giao diện Trang đơn hàng sẵn sàng để giao 144

Hình 90 Giao diện Trang đơn hàng đã giao 145

Hình 91 Giao diện Trang Thông tin Shipper 146

Hình 92 Giao diện Trang Đăng nhập 147

Trang 15

Hình 93 Giao diện trang Quản lý sản phẩm 148

Hình 94 Giao diện Trang quản lý đơn hàng 148

Hình 95 Giao diện Trang Quản lý cửa hàng 149

Hình 96 Giao diện Trang quản lý Banner 149

Hình 97 Giao diện Trang quản lý danh mục 150

Hình 98 Giao diện Trang Quản lý rút tiền 150

Hình 99 Giao diện Trang Quản lý người dùng 151

Hình 100 Giao diện Trang quản lý Shipper 151

Hình 101 Giao diện Trang Xem chi tiết sản phẩm 152

Hình 102 Giao diện Trang Refund 152

Hình 103 Giao diện Trang chi tiết Refund 153

Hình 104 Hình minh họa chức năng đăng nhập 156

Hình 105 Hình minh họa chức năng Tạo sản phẩm 159

Hình 106 Hình minh họa chức năng Xóa sản phẩm 160

Hình 107 Cấu hình Web App Trên Firebase 161

Hình 108 Deploy thành công 162

Trang 16

DANH MỤC BẢNG

Bảng 1 Bảng so sánh Firebase và MySQL 37

Bảng 2 Bảng so sánh Firebase và MongoDB 37

Bảng 3 Bảng miêu tả tình trạng thương mại điện tử trong 3 năm 41

Bảng 4 Bảng Yêu cầu chức năng User 50

Bảng 5 Bảng Yêu cầu chức năng Vendor 50

Bảng 6 Bảng Yêu cầu chức năng Vendor 51

Bảng 7 Bảng yêu cầu chức năng Admin 52

Bảng 8 Bảng Yêu cầu phi chức năng 53

Bảng 9 Bảng tổng hợp Use Case Guest 58

Bảng 10 Đặc tả Use Case Đăng nhập 59

Bảng 11 Bảng tổng hợp Use Case Customer 61

Bảng 12 Đặc tả Use Case Đăng nhập 62

Bảng 13 Đặc tả Use Case Đăng xuất 63

Bảng 14 Đặc tả Use Case Quản lý thông tin cá nhân 64

Bảng 15 Đặc tả Use Case Thay đổi mật khẩu 67

Bảng 16 Đặc tả Use Case Xem danh sách sản phẩm yêu thích 68

Bảng 17 Đặc tả Use Case Xem chi tiết sản phẩm 69

Bảng 18 Đặc tả Use Case Thêm sản phẩm vào danh sách yêu thích 69

Bảng 19 Đặc tả Use Case Thêm sản phẩm vào giỏ hàng 71

Bảng 20 Đặc tả Use Case Xem danh mục sản phẩm 71

Bảng 21 Đặc tả Use Case Quản lý giỏ hàng 72

Bảng 22 Đặc tả Use Case Đặt hàng 74

Bảng 23 Đặc tả Use Case Tìm kiếm sản phẩm 76

Bảng 24 Đặc tả Use Case Xem danh sách đơn hàng 77

Bảng 25 Đặc tả Use Case Xóa sản phẩm khỏi giỏ hàng 78

Bảng 26 Đặc tả Use Case Đánh giá sản phẩm 79

Bảng 27 Đặc tả Use Case Yêu cầu hoàn tiền 80

Bảng 28 Bảng tổng hợp Use Case Vendor 81

Bảng 29 Đặc tả Use Case Đăng nhập 82

Bảng 30 Đặc tả Use Case Quản lý thông tin cá nhân 84

Bảng 31 Đặc tả Use Case Đăng xuất 85

Bảng 32 Đặc tả Use Case Tạo sản phẩm mới 86

Bảng 33 Đặc tả Use Case Cập nhật thông tin sản phẩm 88

Bảng 34 Đặc tả Use Case Xóa sản phẩm 90

Bảng 35 Đặc tả Use Case Phê duyệt hoàn tiền 92

Bảng 36 Đặc tả Use Case Xem thống kê 93

Bảng 37 Đặc tả Use Case Quản lý trạng thái đơn hàng 94

Bảng 38 Bảng tổng hợp Use Case Shipper 95

Bảng 39 Đặc tả Use Case Đăng nhập 96

Bảng 40 Đặc tả Use Case Đăng xuất 98

Bảng 41 Đặc tả Use Case Thực hiện giao hàng 99

Bảng 42 Đặc tả Use Case Xem thống kê 100

Bảng 43 Đặc tả Use Case Quản lý thông tin cá nhân 102

Bảng 45 Đặc tả Use Case Đăng nhập 103

Bảng 46 Đặc tả Use Case Đăng xuất 105

Bảng 47 Đặc tả Use Case Quản lý sản phẩm 106

Bảng 48 Đặc tả Use Case Quản lý người bán 110

Trang 17

Bảng 49 Đặc tả Use Case Quản lý danh mục sản phẩm 111

Bảng 50 Đặc tả Use Case Quản lý việc rút tiền 113

Bảng 51 Đặc tả Use Case Quản lý người tiêu dùng 115

Bảng 52 Đặc tả Use Case Quản lý trạng thái đơn hàng 116

Bảng 53 Đặc tả Use Case Quản lý hoàn tiền 117

Bảng 54 Đặc tả Use Case Quản lý Shipper 119

Bảng 55 Mô tả Giao diện Phân luồng 121

Bảng 56 Mô tả Giao diện Đăng nhập 122

Bảng 57 Mô tả Giao diện Đăng ký 124

Bảng 58 Mô tả Giao diện Home 124

Bảng 59 Mô tả Giao diện Tìm kiếm 125

Bảng 60 Mô tả Giao diện Sản phẩm 126

Bảng 61 Mô tả Giao diện Giỏ hàng 127

Bảng 62 Mô tả Giao diện Đơn hàng 128

Bảng 63 Mô tả Giao diện Thông tin cá nhân 129

Bảng 64 Mô tả Giao diện Chỉnh sửa thông tin 130

Bảng 65 Mô tả Giao diện Đơn hàng 131

Bảng 66 Mô tả Giao diện WishList 132

Bảng 67 Mô tả Giao diện MyChat 133

Bảng 68 Mô tả Giao diện Chat 135

Bảng 69 Mô tả Giao diện Thông tin cửa hàng 136

Bảng 70 Mô tả giao diện Sản phẩm 136

Bảng 71 Mô tả Giao diện đơn hàng 137

Bảng 72 Mô tả Giao diện Trang Tạo sản phẩm mới – Tổng quan 138

Bảng 73 Mô tả Giao diện Trang Tạo sản phẩm mới – Giao hàng 139

Bảng 74 Mô tả Giao diện Trang Tạo sản phẩm mới – Thuộc tính sản phẩm 140

Bảng 75 Mô tả Giao diện Trang Tạo sản phẩm mới – Hình ảnh 141

Bảng 76 Mô tả Giao diện Trang Thống kê 142

Bảng 77 Mô tả Giao diện Trang Shipper Home 144

Bảng 78 Mô tả Giao diện Trang đơn hàng sẵn sàng để giao 144

Bảng 79 Mô tả Giao diện Trang đơn hàng đã giao 145

Bảng 80 Mô tả Giao diện Trang Thông tin Shipper 146

Bảng 81 Mô tả Giao diện Trang Đăng nhập Admin 147

Bảng 82 Mô tả Giao diện Trang Quản lý sản phẩm 148

Bảng 83 Mô tả Giao diện Trang quản lý đơn hàng 148

Bảng 84 Mô tả Giao diện Trang quản lý cửa hàng 149

Bảng 85 Mô tả Giao diện Trang quản lý Banner 149

Bảng 86 Mô tả Giao diện Trang quản lý danh mục 150

Bảng 87 Mô tả Giao diện Trang quản lý rút tiền 150

Bảng 88 Mô tả Giao diện Trang quản lý người dùng 151

Bảng 89 Mô tả Giao diện Trang quản lý Shipper 151

Bảng 90 Mô tả Giao diện Trang Xem chi tiết sản phẩm 152

Bảng 91 Mô tả Giao diện Trang Refund 152

Bảng 92 Mô tả Giao diện Trang chi tiết Refund 153

Bảng 93 Kịch bản kiểm thử 155

Bảng 94 Kết quả kiểm thử chức năng đăng nhập 155

Bảng 95 Kết quả kiểm thử chức năng Tạo sản phẩm 159

Bảng 96 Kết quả kiểm thử chức năng xóa sản phẩm 160

Trang 18

MỞ ĐẦU

1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Thương mại điện tử (TMĐT) đã trở thành một xu hướng tất yếu trong thời đại công nghệ 4.0, mang đến những thay đổi sâu sắc trong hành vi mua sắm của người tiêu dùng trên toàn cầu Với những ưu điểm vượt trội như tiết kiệm chi phí, nâng cao hiệu quả và tính tiện lợi, TMĐT đang ngày càng khẳng định vị thế của mình trong nền kinh

tế hiện đại

Trong bối cảnh đó, thị trường giày dép, đặc biệt là phân khúc giày sneaker, nổi lên như một lĩnh vực đầy tiềm năng Giày sneaker không chỉ đơn thuần là một sản phẩm thời trang, mà còn là biểu tượng của văn hóa và phong cách sống, thu hút sự quan tâm đặc biệt từ giới trẻ Tuy nhiên, thị trường sneaker truyền thống đang phải đối mặt với nhiều thách thức, bao gồm sự hạn chế trong việc tiếp cận sản phẩm đa dạng, thiếu minh bạch về giá cả và nguy cơ mua phải hàng giả, hàng nhái

Nhận thức được những tiềm năng và thách thức của thị trường, nhóm nghiên cứu

đã phát triển ứng dụng thương mại điện tử SneakerX, một nền tảng chuyên biệt dành cho việc trao đổi và mua bán giày dép SneakerX được kỳ vọng sẽ cung cấp một môi trường mua sắm trực tuyến đáng tin cậy, nơi người dùng có thể dễ dàng tìm kiếm, so sánh và mua bán các sản phẩm sneaker chính hãng từ nhiều thương hiệu khác nhau Đồng thời, ứng dụng cũng sẽ trang bị cho người bán những công cụ quản lý hiệu quả,

hỗ trợ họ trong việc tiếp cận khách hàng mục tiêu và tối ưu hóa hoạt động kinh doanh Bên cạnh đó, SneakerX cũng sẽ tạo ra một không gian hoạt động thuận tiện và hiệu quả cho các đối tác vận chuyển, giúp họ dễ dàng kết nối với người mua và người bán, quản

lý đơn hàng và tối ưu hóa quy trình giao nhận

Việc nghiên cứu và phát triển ứng dụng SneakerX không chỉ mang ý nghĩa thực tiễn trong việc giải quyết những vấn đề tồn tại của thị trường sneaker, mà còn đóng góp vào sự phát triển chung của lĩnh vực TMĐT tại Việt Nam

2 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU

2.1 Đối tượng nghiên cứu

Trong đồ án này, nhóm sẽ tập trung nghiên cứu hai đối tượng chính là người dùng ứng dụng và các công nghệ để phát triển ứng dụng mobile

Người dùng ứng dụng:

Trang 19

 Khách hàng (Client): Những người có nhu cầu mua giày dép, đặc biệt là giày thể thao (sneaker) Đối tượng này quan tâm đến việc tìm kiếm sản phẩm, so sánh giá, xem đánh giá, đặt hàng và theo dõi đơn hàng

 Người bán (Vendor): Các cửa hàng, thương hiệu hoặc cá nhân bán giày dép trên ứng dụng Đối tượng này cần các công cụ để quản lý sản phẩm, giá cả, khuyến mãi, đơn hàng và tương tác với khách hàng

 Người giao hàng (Shipper): Đối tác vận chuyển chịu trách nhiệm giao hàng từ người bán đến khách hàng Đối tượng này cần thông tin về đơn hàng, địa chỉ giao hàng và các công cụ để cập nhật trạng thái giao hàng

 Quản trị viên (Admin): Người quản lý hệ thống, chịu trách nhiệm giám sát hoạt động của ứng dụng, quản lý người dùng, sản phẩm, nội dung và giải quyết các vấn đề phát sinh

Công nghệ phát triển ứng dụng di động:

 Flutter: Framework chính để xây dựng giao diện người dùng (UI) và logic nghiệp

vụ của ứng dụng trên cả hai nền tảng iOS và Android

 Dart: Ngôn ngữ lập trình được sử dụng để phát triển ứng dụng Flutter

 Firebase: Nền tảng BaaS cung cấp các dịch vụ backend như database (Firestore), authentication, storage (Cloud Storage), và cloud functions

2.2 Phạm vi nghiên cứu

Phạm vi nghiên cứu của dự án này tập trung vào việc phát triển một ứng dụng thương mại điện tử chuyên biệt cho thị trường giày dép, đặc biệt là giày thể thao (sneaker) Ứng dụng sẽ cung cấp các tính năng mua bán, trao đổi và quản lý sản phẩm giày dép, đáp ứng nhu cầu của cả người mua, người bán và quản trị viên hệ thống

3 MỤC ĐÍCH CỦA ĐỀ TÀI

Mục đích của đề tài này là xây dựng một ứng dụng thương mại điện tử chuyên biệt cho thị trường giày dép, đặc biệt là giày thể thao (sneaker), nhằm tạo ra một cầu nối vững chắc giữa người mua và người bán, giúp việc mua bán trở nên dễ dàng, thuận tiện

và minh bạch hơn Ứng dụng sẽ cung cấp một không gian mua sắm trực tuyến thân thiện, mang đến trải nghiệm mua sắm thoải mái, dễ dàng và an toàn cho người dùng, đồng thời cung cấp cho người bán một nền tảng hoạt động ổn định và các công cụ quản lý cần thiết

để bắt đầu và phát triển việc kinh doanh một cách hiệu quả

Dựa trên những kiến thức chuyên môn đã được tích lũy, dự án sẽ tập trung vào việc phân tích, thiết kế và xây dựng ứng dụng di động (mobile app) và ứng dụng web (web-app) với đầy đủ các chức năng cần thiết, đáp ứng toàn diện nhu cầu của cả người mua (client),người bán (vendor), người vận chuyển (shipper) và cả quản lý của hệ thống (admin)

Trang 20

Ứng dụng sẽ được thiết kế với giao diện thân thiện, dễ sử dụng, đảm bảo tính thẩm mỹ và tối ưu trải nghiệm người dùng Đồng thời, dự án cũng đặc biệt chú trọng đến việc xây dựng một hệ thống hoạt động ổn định, đảm bảo hiệu suất cao và khả năng

mở rộng trong tương lai

Trang 21

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT

1.1 DART

1.1.1 Lịch sử ra đời

Dart được Google phát triển lần đầu tiên vào năm 2011, với mục đích tạo ra một ngôn ngữ lập trình mới cho thế hệ ứng dụng web và di động tiếp theo Dart được công bố lần đầu tiên tại hội nghị Google I/O năm 2011 và phiên bản beta đầu tiên được phát hành vào năm 2013 Phiên bản chính thức của Dart được phát hành vào năm 2015

1.1.2 Cấu trúc

Một dự án Flutter có cấu trúc cơ bản như sau:

● Thư mục bin: Chứa các file public tools để chạy Dart scripts

● Thư mục lib: Chứa các file public libraries để import vào trong các file ở thư mục bin

● Tệp pubspec.yaml:` Chứa thông tin về các dependency, phiên bản của Dart và các cấu hình khác của dự án Tệp này tương tự như gradle trong Android và được viết bằng ngôn ngữ YAML (Yet Another Markup Language hoặc YAML Ain't Markup Language)

1.1.3 Các kiểu biến trong Dart

Dart có các kiểu biến sau:

● String: Dùng để thao tác với chuỗi và ký tự

// Khai báo biến String chứa ký tự đặc biệt

String specialChar = '!@#$%^&*()';

● num: Dùng để thao tác với số

// Khai báo biến num chứa số nguyên âm

num negativeNumber = -100;

● int: Dùng để thao tác với số nguyên

// Khai báo biến int chứa số nguyên lớn

int largeNumber = 1000000;

● double: Dùng để thao tác với số thập phân

// Khai báo biến double chứa số thập phân nhỏ

Trang 22

double smallDecimalNumber = 0.1;

● bool: Dùng để khai báo biến boolean

// Khai báo biến bool chứa giá trị true

bool isTrue = true;

● const: Dùng để khai báo biến hằng, không thể thay đổi giá trị sau khi khai báo

// Khai báo biến hằng chứa chuỗi

const String constantString = 'Hello, world!';

● dynamic: Có thể dùng để khai báo cả chuỗi, số và cả boolean

// Khai báo biến dynamic chứa chuỗi

dynamic string = 'Hello, world!';

● var: Dùng để khai báo biến khi chưa biết là chuỗi hay số, không thể dùng để

khai báo kiểu trả về của hàm

// Khai báo biến var chứa số nguyên

var number = 100;

● Runes: Dùng để sử dụng các emoji

// Khai báo biến Runes chứa emoji

Runes emoji = Runes('\u{1f44f}');

1.1.4 Các kiểu collection trong Dart

Dart cung cấp một số kiểu collection để lưu trữ và thao tác với dữ liệu Các kiểu

collection này bao gồm:

● Enumerated types: còn được gọi là enum, là một kiểu class đặc biệt sử dụng

để biểu diễn một tập hợp giá trị không đổi Ví dụ:

//Enum color chứa 4 giá trị không đổi

Trang 23

}

● List: List là một collection thông dụng, dùng để tập hợp các phần tử vào một

mảng List trong Dart chỉ có một loại là object list List có thể chứa các phần tử

có cùng kiểu dữ liệu hoặc các phần tử có kiểu dữ liệu khác nhau Ví dụ:

//List chứa phần tử số nguyên

List<num> numbers = [0, 1, 2 3, 4 5];

//List dynamic chứa 3 phần tử thuộc số nguyên, chuỗi, boolean

List mixin = [69, 'maxin', true];

● Map: Một collection chứa cặp key-value Dart hỗ trợ map literals và kiểu dữ

liệu Map

//Map roles chứa ba cặp key-value là 'H': 'dev', 'U': 'tester', và 'Y': 'designer'

Map roles = {'H': 'dev', 'U': 'tester', 'Y': 'designer'};

● Set: Một tập hợp các giá trị không theo thứ tự và không lặp lại giá trị đã có

//Set numbers chứa bốn phần tử là 2, 3, 7

Set<int> numbers = new Set<int>();

numbers.add(3);

numbers.add(2);

numbers.add(2);

numbers.add(7);

● Queue: Queue là một collection có thể thao tác cả hai đầu vào của mình Một

đầu để đưa dữ liệu và một đầu xóa dữ liệu Hữu dụng khi xây dựng collection

theo kiểu first in, first out

//Queue numbers chứa ba phần tử là 1, 2, 3 Khi xóa phần tử đầu tiên của

Trang 24

print(numbers.removeFirst()); // 1

print(numbers.first); // 2

1.1.5 Kiểm soát luồng

Dart cung cấp một số câu lệnh để kiểm soát luồng thực thi của chương trình Các câu lệnh này bao gồm:

● assert(): Ngắt thực thi thông thường khi điều kiện trả về sai

Trang 25

}

○ do while: Lặp lại một khối mã cho đến khi điều kiện trả về sai, nhưng ít nhất sẽ chạy một lần

do { // do something

Khai báo hàm [kiểu trả về] [tên hàm]([danh sách tham số]) { // Thân hàm

}

● Nếu không khai báo kiểu dữ liệu thì sẽ mặc định là void hoặc tùy vào kết quả trả về của hàm

isYourName(String name) { return name == 'cao an';

}

● Để rút gọn thì ta nên dùng cú pháp => đối với hàm không có block code isYourName(String name) => name == 'cao an';

● Optional named parameter function: khi gọi hàm bạn có thể chỉ định tên tham

số đã khai báo trong hàm và gọi tham số tùy ý không cần quan tâm đến thứ tự của nó

Trang 26

void declareYourCharacter(bool isHumorous, {bool isQuiet, bool isKind = false}) {

// do something

}

declareYourCharacter(true, isKind: true, isQuiet: true);

● Optional unnamed parameter function: có thể tạo ra 1 tham số tùy chọn khi

khởi tạo hàm, lúc gọi làm bạn có thể truyền hoặc không truyền đối số vào cho nó

và phải gọi đúng thứ tự như lúc khởi tạo

void declareYourCharacter(bool isHumorous, [bool isQuiet, bool isKind = false]) {

// do something

}

declareYourCharacter(true, true, true);

● Anonymous function: hầu hết mọi hàm đều có 1 cái tên để thể hiện hàm đó làm

gì nhưng chúng ta vẫn có thể khởi tạo 1 hàm không tên và gọi nó là anonymous function hoặc có thể là lambda hoặc là closure Anonymous function được khởi tạo lúc chạy runtime, nó có thể gán cho 1 biến, gọi 1 hàm khác

var alphabets = ['alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta'];

1.1.7 Null aware operation

Toán tử ?: (Ternary Operator):

Toán tử ?: còn được gọi là toán tử ba ngôi, là một toán tử ngắn gọn thay thế cho câu lệnh if-else Ví dụ:

int height = 170;

Trang 27

String heightDescription = height < 175 ? 'Short' : 'Tall';

// heightDescription = 'Short'

Toán tử ??:

Toán tử ?? là toán tử kiểm tra null Nếu biến trả về bằng null thì nó sẽ gán biến đó cho một giá trị mặc định Ví dụ:

String name = user.name() ?? 'cao an';

// Nếu user.name() trả về null thì name = 'cao an'

String character = alphabet?.character;

// Tốt hơn thì nên gán giá trị mặc định nếu giá trị trả về là null

String character = alphabet?.character ?? 'alpha';

1.1.8 Các Class

Dart là một ngôn ngữ hướng đối tượng với các lớp và thừa kế dựa trên mixin (mixin-based inheritance) Mỗi đối tượng đều là thể hiện của một lớp và tất cả các lớp đều xuất phát từ lớp Object Thừa kế dựa trên mixin có nghĩa là mỗi lớp đều có một superclass (trừ lớp Object), phần bên trong của mỗi lớp đều có thể được tái sử dụng trong nhiều lớp được phân cấp

Tạo một Class

Để tạo một lớp trong Dart, chúng ta sử dụng từ khóa class Ví dụ:

Trang 28

Trong Dart, tính bao đóng được thể hiện bằng cách khai báo các thuộc tính và phương thức bằng từ khóa _ Ví dụ:

class Vehicle {

Trang 29

int wheel;

void countNumberOfWheels(int wheel) {

print('This vehicle has $wheel wheels');

}

}

class Bike extends Vehicle {

// Không khai báo thuộc tính và phương thức nào mới

}

Polymorphism

Tính đa hình là một trong bốn nguyên tắc cơ bản của lập trình hướng đối tượng Tính

đa hình là khả năng các đối tượng khác nhau có thể cùng thực hiện một hành động Trong Dart, tính đa hình được thể hiện bằng cách sử dụng các phương thức trừu tượng

và phương thức được định nghĩa lại

Phương thức trừu tượng

Một phương thức trừu tượng là một phương thức không có triển khai cụ thể Phương thức trừu tượng chỉ được khai báo trong lớp cha

Ví dụ:

abstract class Vehicle {

void move();

}

Phương thức được định nghĩa lại

Một phương thức được định nghĩa lại là một phương thức có cùng tên và tham số với một phương thức trong lớp cha Phương thức được định nghĩa lại có thể có triển khai khác với phương thức trong lớp cha

Trang 30

void move(int speed) {

print('The vehicle is moving at speed $speed');

}

void move() {

// Phương thức này sẽ được gọi khi tham số speed không được truyền vào

print('The vehicle is moving');

}

}

Tính trừu tượng

Trang 31

Tính trừu tượng là một trong bốn nguyên tắc cơ bản của lập trình hướng đối tượng Tính trừu tượng là việc tập trung vào các tính chất cốt lõi nhất của một đối tượng, loại bỏ các chi tiết không cần thiết

Trong Dart, tính trừu tượng được thể hiện bằng cách sử dụng các lớp trừu tượng

Lớp con của lớp trừu tượng

Các lớp con của lớp trừu tượng phải định nghĩa lại tất cả các phương thức trừu tượng của lớp cha

abstract class Vehicle {

Trang 32

 Hiệu suất cao: Dart có khả năng biên dịch thành mã máy, giúp ứng dụng

chạy nhanh và mượt mà hơn so với các ngôn ngữ thông dịch khác

 Phát triển ứng dụng đa nền tảng: Dart là ngôn ngữ chính của Flutter, cho

phép xây dựng ứng dụng di động cho cả iOS và Android từ một codebase duy nhất, tiết kiệm thời gian và công sức phát triển

 Cú pháp dễ học: Cú pháp của Dart tương đồng với các ngôn ngữ phổ biến

như Java, C#, JavaScript, giúp các lập trình viên dễ dàng tiếp cận và làm

quen

 Hot Reload: Tính năng Hot Reload cho phép xem ngay lập tức các thay đổi

trong ứng dụng mà không cần khởi động lại, tăng tốc quá trình phát triển

 Null Safety: Dart hỗ trợ Null Safety, giúp giảm thiểu lỗi liên quan đến giá trị

null, tăng tính ổn định của ứng dụng

 Thư viện phong phú: Dart có một hệ sinh thái thư viện và công cụ đa dạng,

hỗ trợ nhiều tính năng và chức năng khác nhau

1.1.11 Nhược điểm

 Quản lý bộ nhớ: Dart sử dụng bộ dọn rác (garbage collector) tự động, có thể

gây ra hiện tượng "lag" trong quá trình dọn dẹp bộ nhớ, đặc biệt là trong các ứng dụng yêu cầu hiệu năng cao

 Kích thước ứng dụng: Các ứng dụng được xây dựng bằng Flutter (sử dụng

Dart) có thể có kích thước lớn hơn so với các ứng dụng native, do phải tích hợp thêm runtime của Flutter

 Thời gian khởi động: Ứng dụng Dart có thể mất thời gian khởi động lâu hơn

một chút so với ứng dụng native, do phải khởi động runtime của Dart và

Flutter

 Khả năng tương tác với mã native: Việc tương tác giữa Dart và mã native

(ví dụ: Objective-C, Swift, Java, Kotlin) có thể phức tạp hơn so với các ngôn ngữ khác, đòi hỏi phải sử dụng các cầu nối (bridge) đặc biệt

1.2 FLUTTER

1.2.1 Lịch sử ra đời

Flutter được Google phát triển lần đầu tiên vào năm 2015, với mục đích tạo ra một framework mã nguồn mở có thể được sử dụng để xây dựng các ứng dụng đa nền

Trang 33

tảng( web, mobile, desktop và IoT) với hiệu suất và chất lượng cao Flutter được công

bố lần đầu tiên tại hội nghị Google I/O năm 2017 và phiên bản beta đầu tiên được phát hành vào năm 2018 Phiên bản chính thức của Flutter được phát hành vào năm 2019

1.2.2 Tổng quan

Widget và Widget Tree:

Trong Flutter, mọi thứ đều là Widget Widget là những thành phần cơ bản tạo nên giao diện của ứng dụng Flutter Widget có thể là một phần tử giao diện, chẳng hạn như một button, một textbox, hoặc một biểu tượng Widget cũng có thể là một bố cục, chẳng hạn như một cột, một hàng, hoặc một lưới

Widget được tổ chức thành dạng cây, với mỗi Widget có thể có một hoặc nhiều Widget con Widget cha (parent Widget) là Widget chứa các Widget con Ví dụ:

Trang 34

Hình 1 Widget Tree

1.2.3 BuildContext

BuildContext là một đối tượng đại diện cho vị trí của một widget trong widget tree Mỗi widget đều có một BuildContext riêng Nếu một widget có các widget con, thì BuildContext của widget đó cũng sẽ là parent BuildContext của các widget con Điều này tạo ra một cây BuildContext

Trang 35

Hình 2 Build Context Tree

1.2.4 StatelessWidget

StatelessWidget là một loại widget không có trạng thái Trạng thái là những dữ liệu có thể thay đổi theo thời gian, chẳng hạn như giá trị của một biến hoặc kết quả của một cuộc gọi API StatelessWidget chỉ được tạo ra một lần và không bao giờ thay đổi trạng thái

Cấu trúc

Cấu trúc của một StatelessWidget như sau:

class MyWidget extends StatelessWidget {

MyWidget({Key key, this.param}) : super(key: key);

final String param;

Trang 36

);

}

}

Lifecycle

Lifecycle của StatelessWidget gồm hai giai đoạn:

 Khởi tạo: StatelessWidget được tạo ra và khởi tạo các tham số của nó

 Render: StatelessWidget được vẽ trên màn hình bằng phương thức

build()

1.2.5 Stateful Widget

StatefulWidget là một loại widget có trạng thái Trạng thái là những dữ liệu có thể thay đổi theo thời gian, chẳng hạn như giá trị của một biến hoặc kết quả của một cuộc gọi API StatefulWidget có thể thay đổi trạng thái của nó, và những thay đổi này

sẽ được phản ánh trên màn hình

Cấu trúc

Cấu trúc của một StatefulWidget như sau:

class MyWidget extends StatefulWidget {

Trang 37

Lifecycle của StatefulWidget gồm các giai đoạn sau:

 createState(): Phương thức này được gọi khi StatefulWidget được tạo ra Nó sẽ trả

về một đối tượng State cho widget

 initState(): Phương thức này được gọi một lần duy nhất, khi StatefulWidget được tạo ra lần đầu tiên Nó được sử dụng để khởi tạo trạng thái của widget

 didChangeDependencies(): Phương thức này được gọi khi các dependencies của widget thay đổi Dependencies là những dữ liệu mà widget phụ thuộc vào, chẳng hạn như giá trị của một biến hoặc kết quả của một cuộc gọi API

 build(): Phương thức này được gọi mỗi khi trạng thái của widget thay đổi Nó được

sử dụng để vẽ lại widget trên màn hình

 didUpdateWidget(): Phương thức này được gọi khi StatefulWidget được cập nhật

Nó được sử dụng để cập nhật trạng thái của widget

 setState(): Phương thức này được sử dụng để thay đổi trạng thái của widget

 deactivate(): Phương thức này được gọi khi StatefulWidget không còn được sử dụng

 dispose(): Phương thức này được gọi khi StatefulWidget bị hủy Nó được sử dụng

để giải phóng tài nguyên của widget

Trang 38

1.2.6 Ưu điểm:

 Hiệu suất cao: Flutter sử dụng engine render Skia để vẽ giao diện người dùng

trực tiếp lên canvas của hệ điều hành, giúp ứng dụng chạy mượt mà và có tốc

độ khung hình cao (60fps)

 Phát triển ứng dụng đa nền tảng: Flutter cho phép xây dựng ứng dụng cho cả

iOS và Android từ một codebase duy nhất, giúp tiết kiệm thời gian và công sức phát triển

 Hot Reload: Tính năng Hot Reload cho phép xem ngay lập tức các thay đổi

trong ứng dụng mà không cần khởi động lại, tăng tốc quá trình phát triển

 Widget phong phú: Flutter cung cấp một bộ sưu tập lớn các widget có sẵn,

giúp dễ dàng xây dựng giao diện người dùng đẹp và tùy biến cao

 Cộng đồng phát triển mạnh mẽ: Flutter có một cộng đồng phát triển đông đảo

và tích cực, cung cấp nhiều tài liệu, hướng dẫn và hỗ trợ

 Hỗ trợ từ Google: Flutter được phát triển và hỗ trợ bởi Google, đảm bảo sự

phát triển và cập nhật liên tục

1.2.7 Nhược điểm:

 Ngôn ngữ Dart: Flutter sử dụng ngôn ngữ Dart, một ngôn ngữ tương đối mới

và chưa phổ biến bằng các ngôn ngữ khác như JavaScript hay Java Điều này có thể gây khó khăn trong việc tìm kiếm tài liệu, thư viện hỗ trợ và các nhà phát triển có kinh nghiệm

 Cú pháp đặc biệt: Dart có cú pháp và cách tiếp cận riêng, đặc biệt là trong việc

xây dựng giao diện người dùng Điều này có thể đòi hỏi thời gian để làm quen

và thích nghi, đặc biệt là đối với những người đã quen với các framework khác

 Quản lý trạng thái phức tạp: Quản lý trạng thái trong Flutter có thể trở nên

phức tạp khi ứng dụng mở rộng, đặc biệt khi sử dụng các widget phức tạp và có nhiều tương tác

 Hỗ trợ IDE hạn chế: Mặc dù các công cụ phát triển như Android Studio và

Visual Studio Code có hỗ trợ Flutter, nhưng các tính năng hỗ trợ và gỡ lỗi vẫn chưa hoàn thiện bằng so với các công cụ dành cho các ngôn ngữ và framework khác

Trang 39

 Khó khăn trong việc debug: Việc debug ứng dụng Flutter đôi khi có thể gặp

khó khăn do sự kết hợp giữa mã Dart và engine Flutter

1.2.8 Triển khai trong dự án

 Sử dụng Flutter như một framework để xây dựng giao diện người dùng đẹp và tùy biến cao, hiệu suất ổn định và có thể phát triển ở cả nền tảng App Mobile và Web

 Sử dụng Provider như một giải pháp quản lý trạng thái (state management) rất phổ biến và hiệu quả trong Flutter Giúp dễ dàng chia sẻ và cập nhật dữ liệu giữa các widget trong ứng dụng

1.3 FIREBASE

1.3.1 Lịch sử ra đời

Firebase được thành lập bởi James Tamplin, Andrew Lee và Taylor Brown vào tháng 9 năm 2011 Tamplin và Lee là những cựu nhân viên của Google, và Brown là một nhà phát triển ứng dụng di động Firebase ra mắt công chúng lần đầu tiên vào tháng

4 năm 2012 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 Firebase nhanh chóng trở nên phổ biến trong cộng đồng phát triển ứng dụng di động Vào năm 2014, Google đã mua lại Firebase với giá 250 triệu đô la

1.3.2 Tổng quan

Firebase được coi là nền tảng phát triển ứng dụng web Nó giúp các nhà phát triển xây dựng các ứng dụng chất lượng cao Nó lưu trữ dữ liệu ở định dạng JavaScript Object Notation (JSON), không sử dụng truy vấn để chèn, cập nhật, xóa hoặc thêm dữ liệu vào

đó Firebase là phần backend của một hệ thống được sử dụng như một cơ sở dữ liệu để lưu trữ dữ liệu

1.3.3 Những service khả dụng của Firebase

 Firebase Test Lab for Android

 Firebase Crash Reporting

Trang 40

 Firebase Notifications

1.3.4 So sánh với các hệ quản trị cơ sở dữ liệu khác

Loại dữ liệu NoSQL (JSON) SQL (Schema Relations)

Dạng Schema

Dynamic Schema, dữ liệu có thể được thêm, xóa hoặc sửa bất

kỳ thời điểm nào

Fixed schema, nếu có sự thay đổi phải ngừng hệ thống

Cấu trúc dữ liệu Dữ liệu không cần được định

nghĩa hay có cấu trúc xác định

Dữ liệu cần phải được định nghĩa trước

Vị trí lưu trữ Cloud-based Local Server

Khả năng mở

rộng (scalability)

Được thiết kế để dễ dàng mở rộng

Có khả năng mở rộng nhưng yêu cầu cấu hình phức tạp hơn Hiệu suất

(performance) Hiệu suất thời gian thực tốt Có thể đạt hiệu suất cao, nhưng cần tối ưu hóa cẩn thận Tính năng Xác thực người dùng, lưu trữ

tệp, thông báo đẩy,

Không có sẵn, cần tích hợp với dịch

vụ khác Chi phí (cost) Có gói miễn phí, gói trả phí

theo nhu cầu sử dụng Miễn phíCộng đồng và hỗ

trợ

Cộng đồng lớn, hỗ trợ từ Google Cộng đồng lớn, nhiều tài liệu

Bảng 1 Bảng so sánh Firebase và MySQL

Loại dữ liệu NoSQL (JSON) NoSQL (Document)

Dạng Schema

Dynamic Schema, dữ liệu có thể được thêm, xóa hoặc sửa bất

kỳ thời điểm nào

Dynamic Schema, dữ liệu có thể được thêm, xóa hoặc sửa bất kỳ thời điểm nào

Cấu trúc dữ liệu Dữ liệu không cần được định

nghĩa hay có cấu trúc xác định

Dữ liệu không cần được định nghĩa hay có cấu trúc xác định

Vị trí lưu trữ Cloud-based Cloud-based

Khả năng mở

rộng (scalability)

Được thiết kế để dễ dàng mở rộng

Có khả năng mở rộng nhưng yêu cầu cấu hình phức tạp hơn Hiệu suất

(performance) Hiệu suất thời gian thực tốt Có thể đạt hiệu suất cao, nhưng cần tối ưu hóa cẩn thận Tính năng Xác thực người dùng, lưu trữ

tệp, thông báo đẩy,

Không có sẵn, cần tích hợp với dịch

vụ khác Chi phí (cost) Có gói miễn phí, gói trả phí

theo nhu cầu sử dụng Có cả phiên bản miễn phí và trả phíCộng đồng và hỗ

trợ

Cộng đồng lớn, hỗ trợ từ Google Cộng đồng lớn, nhiều tài liệu

Bảng 2 Bảng so sánh Firebase và MongoDB

1.3.5 Ưu điểm

 Phát triển nhanh chóng: Firebase cung cấp nhiều dịch vụ

"backend-as-a-service" (BaaS), giúp giảm thiểu thời gian và công sức phát triển các tính năng

cơ bản như xác thực, cơ sở dữ liệu và lưu trữ

 Dễ sử dụng: Firebase có giao diện thân thiện và tài liệu hướng dẫn chi tiết, giúp

các nhà phát triển dễ dàng tích hợp và sử dụng các dịch vụ của nó

Ngày đăng: 18/11/2024, 16:24

HÌNH ẢNH LIÊN QUAN

Hình 2 Build Context Tree - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 2 Build Context Tree (Trang 35)
Hình 6 Giao diện GOAT - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 6 Giao diện GOAT (Trang 47)
Hình 9 Giao diện Adidas - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 9 Giao diện Adidas (Trang 50)
Hình 13 Lược đồ Use Case Customer - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 13 Lược đồ Use Case Customer (Trang 59)
Hình 15 Lược đồ Use Case Shipper - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 15 Lược đồ Use Case Shipper (Trang 60)
Hình 16 Lược đồ Use Case Admin - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 16 Lược đồ Use Case Admin (Trang 61)
Hình 17 Lược đồ tuần tự Đăng ký - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 17 Lược đồ tuần tự Đăng ký (Trang 63)
Hình 23 Lược đồ tuần tự Chỉnh sửa thông tin cá nhân - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 23 Lược đồ tuần tự Chỉnh sửa thông tin cá nhân (Trang 69)
Hình 30 Lược đồ tuần tự Quản lý giỏ hàng - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 30 Lược đồ tuần tự Quản lý giỏ hàng (Trang 76)
Bảng 23 Đặc tả Use Case Tìm kiếm sản phẩm - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Bảng 23 Đặc tả Use Case Tìm kiếm sản phẩm (Trang 79)
Hình 36 Lược đồ tuần tự Yêu cầu hoàn tiền - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 36 Lược đồ tuần tự Yêu cầu hoàn tiền (Trang 84)
Hình 37 Lược đồ tuần tự Đăng nhập - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 37 Lược đồ tuần tự Đăng nhập (Trang 86)
Hình 40 Lược đồ tuần tự Tạo sản phẩm mới - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 40 Lược đồ tuần tự Tạo sản phẩm mới (Trang 90)
Hình 41 Lược đồ tuần tự Load thông tin sản phẩm - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 41 Lược đồ tuần tự Load thông tin sản phẩm (Trang 92)
Hình 43 Lược đồ tuần tự Xóa sản phẩm - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 43 Lược đồ tuần tự Xóa sản phẩm (Trang 94)
Hình 46 Lược đồ tuần tự Quản lý trạng thái đơn hàng - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 46 Lược đồ tuần tự Quản lý trạng thái đơn hàng (Trang 98)
Hình 54 Lược đồ tuần tự Quản lý sản phẩm - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 54 Lược đồ tuần tự Quản lý sản phẩm (Trang 110)
Hình 55 Lược đồ Load thông tin - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 55 Lược đồ Load thông tin (Trang 111)
Hình 57 Lược đồ tuần tự Xóa thông tin - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 57 Lược đồ tuần tự Xóa thông tin (Trang 112)
Hình 59 Lược đồ tuần tự Quản lý danh mục sản phẩm - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 59 Lược đồ tuần tự Quản lý danh mục sản phẩm (Trang 115)
Hình 60 Lược đồ tuần tự Quản lý rút tiền - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 60 Lược đồ tuần tự Quản lý rút tiền (Trang 117)
Hình 63 Lược đồ tuần tự Quản lý hoàn tiền - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 63 Lược đồ tuần tự Quản lý hoàn tiền (Trang 121)
Hình 65 Lược đồ Class - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 65 Lược đồ Class (Trang 123)
Hình 72 Giao diện Trang giỏ hàng - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 72 Giao diện Trang giỏ hàng (Trang 130)
Hình 74 Giao diện Trang Thông tin cá nhân - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 74 Giao diện Trang Thông tin cá nhân (Trang 132)
Hình 77 Giao diện Trang WishList - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 77 Giao diện Trang WishList (Trang 135)
Hình 79 Giao diện Chat - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 79 Giao diện Chat (Trang 137)
Bảng 77 Mô tả Giao diện Trang Shipper Home - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Bảng 77 Mô tả Giao diện Trang Shipper Home (Trang 147)
Hình 90 Giao diện Trang đơn hàng đã giao - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng ứng dụng ecommerce mua bán, quản lý giày dép
Hình 90 Giao diện Trang đơn hàng đã giao (Trang 148)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN