Nguyễn Trần Thi Văn Nhiệm Vụ Của Khóa Luận: Lý thuyết: - Tìm hiểu về lập trình Android bằng Java và cơ sở dữ liệu Firebase của Google - Tìm hiểu về nghiệp vụ đặt hàng online Thực hành:
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
SKL 0 0 7 1 6 3
ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ PHẦN MỀM
XÂY DỰNG ỨNG DỤNG ĐẶT HÀNG ONLINE
GVHD:ThS NGUYỄN TRẦN THI VĂN SVTH:PHẠM VĂN NHẤT
MSSV:16110407 SVTH:PHẠM HOÀNG PHÚC MSSV:16110419
Trang 2Đề tài:
TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TP HCM
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
XÂY DỰNG ỨNG DỤNG ĐẶT HÀNG ONLINE
KHÓA LUẬN TỐT NGHIỆP KỸ SƯ CNTT
GIÁO VIÊN HƯỚNG DẪN ThS NGUYỄN TRẦN THI VĂN PHẠM VĂN NHẤT - 16110407 PHẠM HOÀNG PHÚC - 16110419
Trang 3TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TP HCM
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
PHẠM VĂN NHẤT - 16110407 PHẠM HOÀNG PHÚC - 16110419
Đề tài:
XÂY DỰNG ỨNG DỤNG ĐẶT HÀNG ONLINE
KHÓA LUẬN TỐT NGHIỆP KĨ SƯ CNTT
GIÁO VIÊN HƯỚNG DẪN ThS NGUYỄN TRẦN THI VĂN
Trang 4PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên Sinh viên 1: PHẠM VĂN NHẤT MSSV 1: 16110407
Họ và tên Sinh viên 2: PHẠM HOÀNG PHÚC MSSV 2: 16110419
Ngành: Công nghệ Thông tin
Tên đề tài: XÂY DỰNG ỨNG DỤNG ĐẶT HÀNG ONLINE
Họ và tên Giáo viên hướng dẫn: ThS Nguyễn Trần Thi Văn
NHẬN XÉT
1 Về nội dung đề tài khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:
Tp Hồ Chí Minh, ngày tháng năm 2020
Giáo viên hướng dẫn
(Ký & ghi rõ họ tên)
Trang 5PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên Sinh viên 1: PHẠM VĂN NHẤT MSSV 1: 16110407
Họ và tên Sinh viên 2: PHẠM HOÀNG PHÚC MSSV 2: 16110419
Ngành: Công nghệ Thông tin
Tên đề tài: XÂY DỰNG ỨNG DỤNG ĐẶT HÀNG ONLINE
Họ và tên Giáo viên phản biện:
NHẬN XÉT
1 Về nội dung đề tài khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:
Tp Hồ Chí Minh, ngày tháng năm 2020
Giáo viên phản biện
(Ký & ghi rõ họ tên)
Trang 6LỜI CẢM ƠN
Đề tài “Xây dựng ứng dụng đặt hàng Online” là nội dung chúng em chọn để
nghiên cứu và hoàn thành khóa luận tốt nghiệp chuyên ngành công nghệ phần mềm
Để hoàn thành quá trình nghiên cứu và hoàn thiện luận văn này, lời đầu tiên cho
phép chúng em xin chân thành cảm ơn sâu sắc đến thầy Nguyễn Trần Thi Văn Thầy
đã trực tiếp chỉ bảo và hướng dẫn chúng em trong suốt quá trình nghiên cứu để
chúng em hoàn thiện luận văn Ngoài ra chúng em cũng xin chân thành cảm ơn các
thầy cô trong khoa Công nghệ thông tin đã đóng góp những ý kiến quý báu cho luận
văn được ngày càng hoàn thiện hơn
Chúng em cũng xin chân thành cảm ơn bố mẹ đã nuôi nấng, dạy dỗ chúng em,
luôn bên cạnh cổ vũ, tiếp thêm tinh thần, luôn ủng hộ và lắng nghe chúng em để
chúng em có được như ngày hôm nay
Nhân dịp này, chúng em cũng xin cảm ơn lãnh đạo và các anh chị đang công tác
tại trường đã tạo điều kiện, thời gian, cơ sở vật chất cho chúng em trong suốt quá
Trang 7ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP
Họ và Tên SV thực hiện 1: PHẠM VĂN NHẤT MSSV: 16110407
Họ và Tên SV thực hiện 2: PHẠM HOÀNG PHÚC MSSV: 16110419
Thời gian làm khóa luận: Từ: 30/03/2020 Đến: 10/07/2020
Chuyên ngành: Công nghệ phần mềm
Tên khóa luận: XÂY DỰNG ỨNG DỤNG ĐẶT HÀNG ONLINE
Giáo viên hướng dẫn: ThS Nguyễn Trần Thi Văn
Nhiệm Vụ Của Khóa Luận:
Lý thuyết:
- Tìm hiểu về lập trình Android bằng Java và cơ sở dữ liệu Firebase của Google
- Tìm hiểu về nghiệp vụ đặt hàng online
Thực hành:
- Xây dựng được 3 ứng dụng dành cho chủ của hàng, người mua hàng và người vận chuyển với các tính năng cơ bản sau:
- Ứng dụng dành cho người mua hàng:
+ Thao tác với món ăn: Tìm món ăn, xem thông tin món ăn, thêm món ăn vào giỏ hàng, xóa món ăn khỏi giỏi hàng, đặt hàng, bình luận về món ăn, thích món ăn, bỏ thích món ăn
+ Thao tác với đơn hàng: Theo dõi quá trình vận chuyển của đơn hàng
+ Hệ thống: Đăng nhập, đăng xuất
- Ứng dụng dành cho chủ của hàng:
+ Quản lý: Quản lý món ăn, quản lý người giao hàng, quản lý hóa đơn đặt hàng + Hệ thống: Đăng nhập, đăng xuất
- Ứng dụng cho người giao hàng:
+ Thao tác với đơn hàng: Cập nhật tình trạng đơn hàng cần giao, xác định được đường đi của đơn hàng
+ Hệ thống: Đăng nhập, đăng xuất
Trang 8MỤC LỤC
MỞ ĐẦU
1 Tính cấp thiết của đề tài
2 Mục đích của đề tài
3 Đối tượng và phạm vi nghiên cứu
4 Kết quả dự kiến đạt được
NỘI DUNG
Chương 1: CƠ SỞ LÝ THUYẾT
1.1 Khái niệm về Java và lập trình Android bằng Java 1.2 Khái niệm về cở dữ liệu Firebase
Chương 2: KHẢO SÁT HIỆN TRẠNG
4.1 Thiết kế cơ sở dữ liệu
4.2 Thiết kế giao diện
Trang 92 Ưu điểm
3 Nhược điểm
4 Hướng phát triển
KẾ HOẠCH THỰC HIỆN LUẬN VĂN TỐT NGHIỆP
- Liệt kê danh sách biểu mẫu
- Thiết kế giao diện
Nhất + Phúc
Xây dựng được giao diện cơ bản
cơ bản
11 + 12 05/06 – 19/06
- Kiểm thử và báo cáo
- Trao đổi với GVHD về báo cáo và chương trình
Trang 10báo cáo hoàn chỉnh
15 03/07 – 10/07 - Tuần dự trữ Nhất + Phúc
Ngày 16 tháng 07 năm 2020 Người viết đề cương Phạm Văn Nhất Phạm Hoàng Phúc NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ………
………
………
………
………
………
………
………
………
………
(Ký và ghi rõ họ tên)
Trang 11MỤC LỤC
MỞ ĐẦU 1
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1
2.MỤC ĐÍCH CỦA ĐỀ TÀI 2
3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 3
3.1 Đối tượng nghiên cứu 3
3.2 Phạm vi nghiên cứu 3
4 KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC 4
NỘI DUNG 5
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 5
1.1 Khái niệm về Java và Lập trình Android bằng Java 5
1.2 Khái niệm về cơ sở dữ liệu Firebase 8
CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG 11
2.1 Khảo sát hiện trạng 11
2.2 Khảo sát các ứng dụng liên quan 11
2.3 Xác định yêu cầu 15
CHƯƠNG 3: MÔ HÌNH HÓA YÊU CẦU 17
3.1 Usecase Diagram 17
3.2 Đặc tả Usecase Diagram 19
CHƯƠNG 4: THIẾT KẾ PHẦN MỀM 31
4.1 Thiết kế cơ sở dữ liệu 31
4.2 Thiết kế giao diện 41
4.3 Thiết kế xử lý 90
CHƯƠNG 5: CÀI ĐẶT VÀ KIỂM THỬ 102
5.1 Cài đặt 102
5.1.1 Cài đặt môi trường 102
5.1.2 Cài đặt Class 102
5.2 Kiểm thử 104
KẾT LUẬN 115
1 KẾT QUẢ ĐẠT ĐƯỢC 115
1.1 Chức năng ứng dụng 115
Trang 121.2 Kiến thực đạt được 115
2 ƯU ĐIỂM 116
3 NHƯỢC ĐIỂM 116
4 HƯỚNG PHÁT TRIỂN 117
TÀI LIỆU THAM KHẢO 118
Trang 13DANH MỤC HÌNH ẢNH
Hình 1 Kiến trúc hệ thống Android 6
Hình 2 Ứng dụng BaeMin 11
Hình 3 Ứng dụng Grap Food 12
Hình 4 Ứng dụng Now 13
Hình 5 Ứng dụng LoShip 14
Hình 6 Sơ đồ usecase của khách hàng 17
Hình 7 Sơ đồ usecase của Admin 18
Hình 8 Sơ đồ usecase của shipper 19
Hình 9 Hình vẽ lược đồ CSDL của User 31
Hình 10 Hình ảnh database 33
Hình 11 Màn hình trang chủ 41
Hình 12 Màn hình đăng nhập 42
Hình 13 Màn hình đăng nhập 43
Hình 14 Màn hình danh sách loại đồ ăn 44
Hình 15 Màn hình “Navigation Menu” 45
Hình 16 Màn hình “Danh sách đồ ăn của từng loại” 46
Hình 17 Màn hình “Chi tiết món ăn” 47
Hình 18 Màn hình “Cart” 48
Hình 19 Màn hình “Đặt hàng” 49
Hình 20 Màn hình “Đặt hàng” 50
Hình 21 Màn hình “Xem danh sách đặt hàng” 51
Hình 22 Màn hình “Xem chi tiết đặt hàng” 52
Hình 23 Màn hình “Xem danh sách hàng đang được giao” 54
Hình 24 Màn hình “Theo dõi trình giao hàng” 55
Hình 25 Màn hình “Xem danh sách đã nhận hàng” 56
Hình 26 Màn hình “Xem danh sách đơn hàng đang xử lý” 57
Hình 27 Màn hình “Xem danh sách đơn hàng bị hủy” 58
Hình 28 Màn hình “Xem danh sách món ăn yêu thích” 59
Hình 29 Màn hình “Đăng nhập” 60
Hình 30 Màn hình “Danh sách đơn hàng shipper cần giao” 61
Hình 31 Màn hình “Danh sách đơn hàng đã giao xong” 62
Trang 14Hình 32 Màn hình “Danh sách đơn hàng đang chờ xử lí” 63
Hình 33 Màn hình “Bản đồ đường đi của đơn hàng” 64
Hình 34 Màn hình “Navigation Menu” 65
Hình 35 Màn hình “Đăng nhập” 67
Hình 36 Màn hình “Danh sách các loại món ăn” 67
Hình 37 Màn hình “Thêm loại món ăn” 68
Hình 38 Màn hình “Sửa loại món ăn” 69
Hình 39 Màn hình “Danh sách các món ăn” 70
Hình 40 Màn hình “Thêm món ăn” 72
Hình 41 Màn hình “Sửa món ăn” 72
Hình 42 Màn hình “Cập nhật giá món ăn” 73
Hình 43 Màn hình “Navigation Menu” 74
Hình 44 Màn hình “Quản lí đơn hàng” 75
Hình 45 Màn hình “Danh sách Banner” 76
Hình 46 Màn hình “Thêm Banner” 77
Hình 47 Màn hình “Sửa Banner” 78
Hình 48 Màn hình “Quản lí Shipper” 79
Hình 49 Màn hình “Thêm Shipper” 80
Hình 50 Màn hình “Danh sách đơn hàng vừa đặt” 81
Hình 51 Màn hình “Cập nhật đơn hàng” 82
Hình 52 Màn hình “Xem chi tiết đơn hàng” 83
Hình 53 Màn hình “Danh sách đơn hàng đang giao” 84
Hình 54 Màn hình “Danh sách đơn hàng đã giao” 85
Hình 55 Màn hình “Danh sách đơn hàng đang chờ xử lí” 86
Hình 56 Màn hình “Danh sách đơn hàng bị hủy” 87
Hình 57 Màn hình “Theo dõi quá trình vận chuyển đơn hàng” 88
Hình 58 Màn hình “Cập nhật Shipper” 89
Hình 59 Lược đồ tuần tự chức năng đặt hàng 90
Hình 60 Lược đồ tuần tự chức năng hủy đơn hàng 91
Hình 61 Lược đồ tuần tự chức năng đăng nhập 92
Hình 62 Lược đồ tuần tự chức năng thêm món ăn 93
Hình 63 Lược đồ tuần tự chức năng sửa món ăn 94
Trang 15Hình 64 Lược đồ tuần tự chức năng theo dõi người giao hàng 95
Hình 65 Lược đồ tuần tự chức năng cập nhật trạng thái đơn hàng 96
Hình 66 Lược đồ tuần tự chức năng đánh giá món ăn 97
Hình 67 Lược đồ tuần tự chức năng thêm tìm kiếm món ăn 99
Hình 68 Lược đồ tuần tự chức năng xem món ăn 100
Hình 69 Lược đồ tuần tự chức năng xóa món ăn 101
Hình 70 Hình vẽ lược đồ lớp của User 103
Hình 71 Hình vẽ lược đồ lớp của Admin 103
Hình 72 Hình vẽ lược đồ lớp của Shipper 104
Trang 16DANH MỤC BẢNG
Bảng 1 Đặc tả usecase đăng nhập 19
Bảng 2 Đặc tả usecase đăng xuất 20
Bảng 3 Đặc tả usecase xem theo danh mục 20
Bảng 4 Đặc tả usecase xem món ăn 20
Bảng 5 Đặc tả usecase thêm vào giỏ hàng 21
Bảng 6 Đặc tả usecase tìm kiếm món ăn trong tất cả món ăn 21
Bảng 7 Đặc tả usecase tìm kiếm món ăn theo loại 21
Bảng 8 Đặc tả usecase lưu món ăn ưu thích 22
Bảng 9 Đặc tả usecase thanh toán 22
Bảng 10 Đặc tả usecase đặt hàng 22
Bảng 11 Đặc tả usecase bình luận món ăn 23
Bảng 12 Đặc tả usecase xem bình luận 23
Bảng 13 Đặc tả usecase xem đơn hàng theo danh mục 23
Bảng 14 Đặc tả usecase xem chi tiết đơn hàng 24
Bảng 15 Đặc tả usecase thêm món ăn 24
Bảng 16 Đặc tả usecase sửa món ăn 24
Bảng 17 Đặc tả usecase xóa món ăn 25
Bảng 18 Đặc tả usecase thêm banner 25
Bảng 19 Đặc tả usecase sửa banner 25
Bảng 20 Đặc tả usecase xóa banner 26
Bảng 21 Đặc tả usecase cập nhật đơn hàng 26
Bảng 22 Đặc tả usecase thêm shipper 26
Bảng 23 Đặc tả usecase sửa shipper 27
Bảng 24 Đặc tả usecase xóa shipper 27
Bảng 25 Đặc tả usecase xem đơn hàng theo danh mục 27
Bảng 26 Đặc tả usecase xem chi tiết đơn hàng 28
Bảng 27 Đặc tả usecase đăng nhập 28
Bảng 28 Đặc tả usecase đăng xuất 28
Bảng 29 Đặc tả usecase cập nhật tình trạng đơn hàng 29
Bảng 30 Đặc tả usecase xem đường đi 29
Bảng 31 Đặc tả usecase xem danh sách đơn hàng 29
Trang 17Bảng 32 Đặc tả usecase đăng nhập 30
Bảng 33 Đặc tả usecase đăng xuất 30
Bảng 34 Chi tiết bảng dữ liệu Admin 33
Bảng 35 Chi tiết bảng dữ liệu Banner 33
Bảng 36 Chi tiết bảng dữ liệu Category 34
Bảng 37 Chi tiết bảng dữ liệu Foods 34
Bảng 38 Chi tiết bảng dữ liệu OrderFoodWithPhone 35
Bảng 39 Chi tiết bảng dữ liệu OrderNeedShip 35
Bảng 40 Chi tiết bảng dữ liệu Requests 35
Bảng 41 Chi tiết bảng dữ liệu Shippers 36
Bảng 42 Chi tiết bảng dữ liệu Users 37
Bảng 43 Chi tiết bảng dữ liệu ShippingOrder 37
Bảng 44 Chi tiết bảng dữ liệu Tokens 38
Bảng 45 Chi tiết bảng dữ liệu Rating 38
Bảng 46 Ràng buộc tất cả collections 39
Bảng 47 Ràng buộc món ăn và loại món ăn 39
Bảng 48 Ràng buộc user bình luận 39
Bảng 49 Ràng buộc chi tiết hóa đơn 40
Bảng 50 Mô tả màn hình trang chủ 41
Bảng 51 Mô tả màn hình đăng nhập 42
Bảng 52 Mô tả màn hình nhập mã OTP 43
Bảng 53 Mô tả màn hình danh sách đồ ăn 44
Bảng 54 Mô tả màn hình Navigation View 45
Bảng 55 Mô tả màn hình Navigation View 46
Bảng 56 Mô tả màn hình Navigation View 48
Bảng 57 Mô tả màn hình Cart 49
Bảng 58 Mô tả màn hình Đặt hàng 50
Bảng 59 Mô tả màn hình đặt hàng 51
Bảng 60 Mô tả màn hình xem danh sách đặt hàng 52
Bảng 61 Mô tả màn hình xem chi tiết đặt hàng 53
Bảng 62 Mô tả màn hình danh sách hàng đang được giao 54
Bảng 63 Mô tả màn hình xem danh sách đã nhận hàng 56
Trang 18Bảng 64 Mô tả màn hình xem danh sách đơn hàng đang xử lý 58
Bảng 65 Mô tả màn hình xem danh sách đơn hàng đang bị hủy 59
Bảng 66 Mô tả màn hình xem danh sách món ăn yêu thích 60
Bảng 67 Mô tả màn hình đăng nhập 61
Bảng 68 Mô tả màn hình danh sách đơn hàng Shipper cần giao 62
Bảng 69 Mô tả màn hình xem danh sách đơn hàng đã giao xong 63
Bảng 70 Mô tả màn hình xem danh sách đơn hàng đang chờ xử lí 64
Bảng 71 Mô tả màn hình bản đồ đường đi của đơn hàng 65
Bảng 72 Mô tả màn hình Navigation Menu 66
Bảng 73 Mô tả màn hình đăng nhập 67
Bảng 74 Mô tả danh sách các loại món ăn 68
Bảng 75 Mô tả thêm loại món ăn 69
Bảng 76 Mô tả sửa loại món ăn 70
Bảng 77 Mô tả danh sách các món ăn 71
Bảng 78 Mô tả thêm món ăn 72
Bảng 79 Mô tả sửa món ăn 73
Bảng 80 Mô tả cập nhật giá món ăn 74
Bảng 81 Mô tả Navigation Menu 75
Bảng 82 Mô tả quản lí đơn hàng 76
Bảng 83 Mô tả danh sách Banner 77
Bảng 84 Mô tả thêm Banner 78
Bảng 85 Mô tả sửa Banner 79
Bảng 86 Mô tả quản lí Shipper 80
Bảng 87 Mô tả thêm Shipper 81
Bảng 88 Mô tả danh sách đơn hàng vừa đặt 82
Bảng 89 Mô tả cập nhật đơn hàng 83
Bảng 90 Mô tả xem chi tiết đơn hàng 84
Bảng 91 Mô tả danh sách đơn hàng đang giao 85
Bảng 92 Mô tả danh sách đơn hàng đã giao 86
Bảng 93 Mô tả danh sách đơn hàng đang chờ xử lí 87
Bảng 94 Mô tả danh sách đơn hàng bị hủy 88
Bảng 95 Mô tả theo dõi quá trình vận chuyển đơn hàng 89
Trang 19Bảng 96 Mô tả cập nhật Shipper 90
Bảng 97 Bảng kiểm thử ở phía khách hàng 104
Bảng 98 Bảng kiểm thử ở phía quản trị viên 107
Bảng 99 Bảng kiểm thử ở phía quản trị viên 111
Trang 20Tính cấp thiết của đề tài
MỞ ĐẦU
1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Công việc kinh doanh buôn bán đã xuất hiện từ rất lâu, trải qua mỗi giai đoạn lịch sử
nó mang một hình thức đặc thù riêng Trước kia, khi các công cụ hỗ trợ công việc mua bán chưa phát triển mạnh, thì người kinh doanh mua bán chỉ diễn ra dưới hình thức mua bán trực tiếp Từ khi khoa học công nghệ phát triển, nó đã tạo ra phát triển các loại hình thức mua bán mới, điển hình là mua bán trực tuyến Hình thức mua bán trực tuyến hỗ trợ đắc lực cho người kinh doanh tiếp xúc với được nhiều khách hàng, còn khách hàng thì công việc mua bán được diễn ra nhanh chóng, thuận lợi, tiết kiệm được thời gian…
- Hiện nay, Thương Mại Điện Tử (TMĐT) đang được nhiều quốc gia quan tâm, coi
là một trong những động lực phát triển chủ yếu của nền kinh tế TMĐT đem lại những lợi ích tiềm tàng, giúp doanh nghiệp thu được thông tin phong phú về thị trường và đối tác, giảm chi phí tiếp thị và giao dịch, tạo dựng và củng cố quan hệ bạn hàng
- Việc mua hàng qua mạng chỉ với thủ tục đăng ký mua sắm đơn giản nhưng đem lại nhiều lợi ích: tiết kiệm và chủ động về thời gian, tránh khỏi những phiền phức khó chịu Vậy nên việc mua bán hàng qua mạng đang rất được mọi người quan tâm
Trên cơ sở các kiến thức được học trong nhà trường và quá trình tìm hiểu các ứng dụng trong thực tế, em đã quyết định chọn đề tài “Xây dựng ứng dụng đặt hàng Online”
- Phục vụ tốt hơn nhu cầu của khách hàng và quản lý của nhà hàng trong hoạt động kinh doanh
- Khách hàng chỉ cần các thao tác đơn giản trên điện thoại di động là có thể đặt hàng được ngay
Trang 21Mục đích của đề tài
2 MỤC ĐÍCH CỦA ĐỀ TÀI
Ứng dụng đặt hàng Online chạy trên nền Android được thực hiện dựa trên hai mục đích chính sau:
- Thứ nhất là nghiên cứu các công nghệ lập trình như: lập trình ứng dụng với Android
- Thứ hai là phát triển ứng dụng có tính thực tiễn cao, có khả năng triển khai ứng dụng vào thực tế, giúp những người có nhu cầu mua bán thức ăn nhanh có thể thao tác dễ dàng và tiện lợi
Chúng em hy vọng dựa trên nền tảng lý thuyết đã được thầy cô truyền thụ lại, kết hợp với sự tìm hiểu công nghệ của cá nhân, khóa luận tốt nghiệp của em sẽ đạt được mục đích mong đợi
Trang 22Đối tượng và phạm vi nghiên cứu
3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
3.1 Đối tượng nghiên cứu
Trang 23Kết quả dự kiến đạt được
4 KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC
- Hiểu được cách lập trình Android bằng Java và sử dụng cơ sở dữ liệu Firebase
- Hiểu được các thành phần cơ bản của Android
- Biết cách sử dụng các tính năng cơ bản của Firebase
- Hiểu được nghiệp vụ cơ bản của ứng dụng đặt hàng
- Hiểu được cách làm việc nhóm:
+ Phân chia công việc
+ Phân bố thời gian
+ Thảo luận và đưa ra giải pháp để hoàn thành ứng dụng
- Xây dựng ứng dụng với các tính năng cơ bản nhất giúp:
+ Khách hàng: Tìm món ăn, xem thông tin món ăn, thêm món ăn vào giỏ hàng, xóa món ăn khỏi giỏi hàng, đặt hàng, bình luận về món ăn, thích món ăn, bỏ thích món ăn, theo dõi quá trình vận chuyển đơn hàng
+ Quản lí: Quản lý người giao hàng, quản lý đơn hàng, quản lý món ăn
+ Người giao hàng: Quản lí đơn hàng cần giao, xác định đường đi dễ dàng
Trang 24Chương 1: Cơ sở lý thuyết
NỘI DUNG
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Khái niệm về Java và Lập trình Android bằng Java
Java là một ngôn ngữ lập trình hướng đối tượng (OOP) và dựa trên các lớp (class) Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mã nguồn thành
mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment) chạy [1]
Java có những ưu điểm sau đây:
- Hướng đối tượng rộng
- Java có nền tảng riêng biệt
- Thiết kế mẫu khá đơn giản
- Tính bảo mật cao
- Nhanh và mạnh [1]
Android là hệ điều hành mã nguồn mở, dựa trên Linux Kernel, dành cho các thiết bị
di động nói chung (điện thoại, máy tính bảng, đồng hồ thông minh, máy nghe nhạc…) Android không chỉ giới hạn trong phạm vi một hệ điều hành cho điện thoại! Nó có thể được nhà sản xuất cài đặt lên đồng hồ, máy nghe nhạc, thiết bị định vị GPS, thậm chí
là ô tô (các thiết bị Android Auto) Hiện Android là một thương hiệu của Google Có
khả năng tùy biến rất cao và có thể chạy trên nhiều thiết bị, nhiều kiến trúc vi xử lý (ARM / x86) [2]
Trang 25Chương 1: Cơ sở lý thuyết
Tầng Libraries: Chứa các thư viện, API gần như là cốt lõi của Android, bao gồm bộ quản lý bề mặt cảm ứng (Surface Manager), OpenGL (phục vụ cho việc dựng đồ họa phức tạp)…
Tầng Android Runtime: Chứa các thư viện lõi của Android và máy ảo Dalvik Virtual Machine (từ Android 4 trở lên chúng ta có thêm máy ảo ART)
Trang 26Chương 1: Cơ sở lý thuyết
Tầng Kernel: Là nhân lõi của hệ điều hành, chứa các tập lệnh, driver giao tiếp giữa phần cứng và phần mềm của Android
Android cung cấp một nền tảng phát triển mở, Android cung cấp cho các nhà phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo Nhà phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập, các dịch vụ chạy nền, thiết lập hệ thống báo động, thêm các thông báo để các thanh trạng thái, và nhiều, nhiều hơn nữa
Nhà phát triển có thể truy cập vào các API cùng một khuôn khổ được sử dụng bởi các ứng dụng lõi Các kiến trúc ứng dụng được thiết kế để đơn giản hóa việc sử dụng lại các thành phần; bất kỳ ứng dụng có thể xuất bản khả năng của mình và ứng dụng nào khác sau đó có thể sử dụng những khả năng (có thể hạn chế bảo mật được thực thi bởi khuôn khổ) Cơ chế này cho phép các thành phần tương tự sẽ được thay thế bởi người
- Một “Resource Manager” cung cấp truy xuất tới các tài nguyên không phải là
mã nguồn, chẳng hạn như: localized strings, graphics, and layout files
- Một “Notifycation Manager” cho phép tất cả các ứng dụng hiển thị các custom alerts trong status bar
- Một “Activity Manager” được dùng để quản lý chu trình sống của ứng dụng
và điều hướng các activity [2]
Trang 27Chương 1: Cơ sở lý thuyết
1.2 Khái niệm về cơ sở dữ liệu Firebase
1.2.1 Giới thiệu về cơ sở dữ liệu Firebase
Firebase là một nền tảng ứng dụng di động và web với các công cụ và hạ tầng được thiết kế để giúp các lập trình viên xây dựng các ứng dụng chất lượng cao
Là một cơ sở dữ liệu NoSQL được lưu và đồng bộ dữ liệu trên mây Dữ liệu đượclưu trữ và đồng bộ hóa theo thời gian thực với mỗi client được kêt nối và vẫn khả dụng khi ứng dụng offline Khi bạn xây dựng ứng dụng đa nền tẩng với iOS, Android,
và javascript SDK, tất cả các client của bạn chia sẽ một thể hiện Realtime Database và
tự động tiếp nhận các thay đổi với dữ liệu mới nhất [3]
1.2.2 Các tính năng cơ bản của Firebase
1.2.2.1 Realtime Database – Cơ sở dữ liệu thời gian thực
Firebase lưu trữ dữ liệu database dưới dạng JSON và thực hiện đồng bộ database tới tất cả các client theo thời gian thực Cụ thể hơn là có thể xây dựng được client đa nền tảng (cross-platform client) và tất cả các client này sẽ cùng sử dụng chung một database đến từ Firebase và có thể tự động cập nhật mỗi khi dữ liệu trong database được thêm mới hoặc sửa đổi [4]
1.2.2.2 Tự động tính toán quy mô ứng dụng
Khi ứng dụng muốn phát triển không cần lo lắng về việc nâng cấp máy chủ Firebase sẽ xử lý tự động Các máy chủ của Firebase quản lý hàng triệu kết nối đồng thời và hàng tỉ lượt truy vấn mỗi tháng [4]
1.2.2.3 Các tính năng bảo mật lớp đầu
Tất cả dữ liệu được truyền qua một kết nối an toàn SSL với một chứng nhận 2048-bit Cơ sở dữ liệu truy vấn và việc xác nhận được điều khiển tại một cấp độ chi tiết sử dụng theo một số các quy tắc mềm dẻo security rules language Tất cả các logic bảo mật dữ liệu của bạn được tập trung ở một chỗ để dễ dàng cho việc cập nhật và kiểm thử [4]
1.2.2.4 Làm việc offline
Ứng dụng Firebase của bạn sẽ duy trì tương tác bất chấp một số các vấn đề
về internet xảy ra Trước khi bất kỳ dữ liệu được ghi đến server thì tất cả dữ liệu lập tức sẽ được viết vào một cơ sở dữ liệu Firebase ở local Ngay khi có thể kết
Trang 28Chương 1: Cơ sở lý thuyết
nối lại, client đó sẽ nhận bất kỳ thay đổi mà nó thiếu và đồng bộ hoá nó với trạng thái hiện tại server [4]
1.2.2.5 Firebase Authentication – Hệ thống xác thực của Firebase
Firebase dễ dàng xác thực người dùng từ ứng dụng của bạn trên Android, iOS
và JavaScript SDKs chỉ với một vài đoạn mã Firebase đã xây dựng chức năng cho việc xác thực người dùng với Email, Facebook, Twitter, GitHub, Google, và xác thực nạc danh Các ứng dụng sử dụng chức năng xác thực của FireBase có thể giải quyết được vấn đề khi người dùng đăng nhập, nó sẽ tiết kiện thời gian và rất nhiều các vấn đề phức tạp về phần back-end
1.2.2.6 Firebase Hosting
Phát triển ứng dụng trong thời gian ngắn với các hosting tĩnh đã được cung cấp sẵn Tất cả các kết nối được phân phối qua SSL từ CDN trên toàn thể giới của Firebase
Triểu khai siêu tốc: Việc triển khai sử dụng các công cụ dòng lệnh Firebase
và có thể quay trở lại với phiên bản trước chỉ với một cú click chuột Tất cả các ứng dụng sẽ có đường dẫn mặc đinh ở sau firebaseapp.com và nếu trả phí thì có thể triểu khai một tên miền tuỳ chỉnh SSL default: Mọi ứng dụng được xử lý thông qua một kết nối an toàn, và Firebase đã cẩn thận cung cấp SSL cert cho bạn [4]
1.2.2.7 Firebase Storage
Firebase ra mắt Firebase Storage để giúp lập trình viên upload và download file dễ dàng Firebase Storage được Google Cloud Storage hỗ trợ, mang đến khả năng lưu trữ khổng lồ và cho phép Google Cloud project truy cập file dễ dàng Firebase Storage client SDKs còn có logic nâng cao có thể dễ dàng xử lý điều kiện mạng kém [4]
1.2.3 Những lợi ích khi sử dụng cơ sở dữ liệu Firebase
2.3.1 Triển khai ứng dụng cực mạnh
Với Firebase bạn có thể giảm bớt rất nhiều thời gian cho việc viết các dòng code để quản lý và đồng bộ cơ sở dữ liệu, mọi việc sẽ diễn ra hoàn toàn tự động với các API của Firebase Không chỉ có vậy Firebase còn hỗ trợ đã nền tảng nên
Trang 29Chương 1: Cơ sở lý thuyết
bạn sẽ càng đỡ mất thời gian rất nhiều khi ứng dụng bạn muốn xây dựng là ứng dụng đa nền tảng [4]
1.2.3.2 Bảo mật
Firebase hoạt động dựa trên nền tảng cloud và thực hiện kết nối thông qua giao thức bảo mật SSL, chính vì vậy bạn sẽ bớt lo lắng rất nhiều về việc bảo mật của dữ liệu cũng như đường truyền giữa client và server Không chỉ có vậy, việc cho phép phân quyền người dùng database bằng cú pháp javascipt cũng nâng cao hơn nhiều độ bảo mật cho ứng dụng của bạn, bởi chỉ những user mà bạn cho phép mới có thể có quyền chỉnh sửa cơ sở dữ liệu [4]
1.2.3.3 Tính linh hoạt và khả năng mở rộng
Sử dụng Firebase dễ dàng hơn rất nhiều mỗi khi cần nâng cấp hay mở rộng dịch vụ Ngoài ra firebase còn cho phép tự xây dựng server của riêng mình để có thể thuận tiện hơn trong quá trình quản lý
Việc Firebase sử dụng NoSQL, giúp cho database sẽ không bị bó buộc trong các bảng và các trường mà có thể tùy ý xây dựng database theo cấu trúc của riêng [4]
1.2.3.4 Sự ổn định
Firebase hoạt động dựa trên nền tảng cloud đến từ Google vì vậy hầu như không bao giờ phải lo lắng về việc sập server, tấn công mạng như DDOS, tốc độ kết nối lúc nhanh lúc chậm nữa, bởi đơn giản là Firebase hoạt động trên hệ thống server của Google Hơn nữa nhờ hoạt động trên nền tảng Cloud nên việc nâng cấp, bảo trì server cũng diễn ra rất đơn giản mà không cần phải dừng server để nâng cấp như truyền thống [4]
1.2.3.5 Giá thành
Google Firebase có rất nhiều gói dịch vụ với các mức dung lượng lưu trữ cũng như băng thông khác nhau với mức giá dao động từ Free đến $1500 đủ để đáp ứng được nhu cầu của tất cả các đối tượng Chính vì vậy có thể lựa chọn gói dịch vụ phù hợp nhất với nhu cầu sử dụng Điều này giúp tới ưu hóa được vốn đầu tư và vận hành tùy theo số lượng người sử dụng Ngoài ra còn không mất chi
Trang 30Chương 1: Cơ sở lý thuyết
phí để bảo trì, nâng cấp, khắc phục các sự cố bởi vì những điều này đã có Firebase
lo [4]
Trang 31Chương 2: Khảo sát hiện trạng
CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG
lạ và tiết kiệm chi phí
2.2 Khảo sát các ứng dụng liên quan
2.2.1 Khảo sát app BaeMin
Hình 2 Ứng dụng BaeMin
Trang 32Chương 2: Khảo sát hiện trạng
- Ưu điểm:
+ Giao diện dễ dùng, biểu tượng mình hoạ dễ thương
+ Nhiều ưu đãi "khủng" chất lượng, giảm 50-60%, giảm tối đa 50-80k + Thông báo cập nhật đơn hàng dễ thương
+ Có thể ghi chú cho từng món
- Nhược điểm:
+ Chưa có nhiều dữ liệu quán
+ Không có hình ảnh minh hoạ
+ Độ phủ sóng chưa tốt, chỉ tập trung ở các khu vực trung tâm
+ Không có phần chatbox để liên lạc khi có nhu cầu chỉnh sửa đơn hàng với shipper
2.2.2 Khảo sát app Grap Food
Hình 3 Ứng dụng Grap Food
Trang 33Chương 2: Khảo sát hiện trạng
- Ưu điểm:
+ Giao diện app trực quan, dễ dùng, không cần tải thêm nhiều app khác hỗ trợ
+ Có tích hợp liên kết ví điện tử Moca ngay trong app
+ Bạn có tích điểm sau mỗi lần sử dụng dịch vụ và dùng điểm để đổi quà hay voucher
+ Có nhiều chương trình khuyến mãi dành cho từng thành viên, cấp độ khác nhau
- Nhược điểm:
+ Dữ liệu không quá nhiều
2.2.3 Khảo sát app Now
Hình 4 Ứng dụng Now
Trang 34Chương 2: Khảo sát hiện trạng
- Ưu điểm:
+ Khách hàng có thể tham khảo bình luận, review, hình ảnh trước khi đặt món
+ Dữ liệu quán dồi dào
+ Giao diện app trực quan, người dùng có thể ghi chú
+ Có nhiều phương thức thanh toán như ví điện tử AirPay, thanh toán thẻ + Hỗ trợ đặt nhóm
- Nhược điểm:
+ Thời gian xác nhận đơn còn chậm
2.2.4 Khảo sát app LoShip
Hình 5 Ứng dụng LoShip
Trang 35Chương 2: Khảo sát hiện trạng
- Ưu điểm:
+ Có nhiều discount cho người dùng + Có nhiều ứng dụng tiện ích như: giao đồ ăn, gọi xe, gửi hàng, đi chợ… + Giao diện gọn gàng, đẹp đẽ
+ Thanh toán trực tuyến nhanh gọn + Quản lý người dùng chặt chẽ
- Nhược điểm:
+ Thao tác đăng nhập rờm rà
+ Yêu cầu người dùng cấp quá nhiều quyền
2.3 Xác định yêu cầu
2.3.1 Yêu cầu chức năng
- Ứng dụng dành cho người mua hàng:
+ Thao tác với món ăn: Tìm món ăn, xem thông tin món ăn, thêm món ăn vào giỏ hàng, xóa món ăn khỏi giỏi hàng, đặt hàng, bình luận về món ăn, thích món ăn, bỏ thích món ăn
+ Thao tác với đơn hàng: Theo dõi quá trình vận chuyển của đơn hàng
+ Hệ thống: Đăng nhập, đăng xuất
- Ứng dụng dành cho chủ của hàng:
+ Quản lý: Quản lý món ăn, quản lý người giao hàng, quản lý hóa đơn đặt hàng + Hệ thống: Đăng nhập, đăng xuất
- Ứng dụng cho người giao hàng:
+ Thao tác với đơn hàng: Cập nhật tình trạng đơn hàng cần giao, xác định được đường đi của đơn hàng
+ Hệ thống: Đăng nhập, đăng xuất
2.3.2 Yêu cầu phi chức năng
- Tốc độ xử lý phần mềm nhanh chóng
- Độ chính xác cao
- Dễ dàng nâng cấp, bảo trì
Trang 36Chương 2: Khảo sát hiện trạng
- Bảo mật: Mỗi người sử dụng trong hệ thống cần được phép truy cập đến các chức năng và thông tin cần thiết liên quan đến nhiệm vụ và trách nhiệm của mình, đồng thời không được truy cập đến các chức năng nằm ngoài phạm vi và trách nhiệm của mình
- An toàn: Tất cả các thông tin được lưu trữ trên 10 năm Không mất mát thông tin, không có sự nhầm lẫn sai lệch, thông tin chính xác và được lưu trữ một cách rõ ràng
2.3.3 Yêu cầu hệ thống
- Cho phép cập nhật, xử lý trên cơ sở dữ liệu
- Người dùng có thể tìm kiếm tất cả các thông tin trên cơ sở dữ liệu và tùy vào mức độ phân quyền mà lượng cơ sở dữ liệu đó nhiều hay ít
- Tất cả những đối tượng trong hệ thống như sản phẩm, khách hàng đều có một mã duy nhất
- Chương trình phải đảm bảo đáp ứng nhu cầu người sử dụng, thực hiện nhanh chóng
và chính xác
Trang 37Chương 3: Mô hình hóa yêu cầu
CHƯƠNG 3: MÔ HÌNH HÓA YÊU CẦU
3.1 Usecase Diagram
3.1.1 Usecase Diagram của khách hàng
Hình 6 Sơ đồ usecase của khách hàng
3.1.2 Usecase Diagram của người quản lí
Trang 38Chương 3: Mô hình hóa yêu cầu
Hình 7 Sơ đồ usecase của Admin
Trang 39Chương 3: Mô hình hóa yêu cầu
3.1.3 Usecase Diagram của người giao hàng
Hình 8 Sơ đồ usecase của shipper
3.2 Đặc tả Usecase Diagram
3.2.1 Đặc tả Use case của khách hàng
Bảng 1 Đặc tả usecase đăng nhập
1 Use Case “Đăng nhập”
Mô Tả Guest đăng nhập để thành khách hàng
Tác Nhân Kích Hoạt Guest
Trang 40Chương 3: Mô hình hóa yêu cầu
Tiền Điều Kiện Không có
Các Bước Thực Hiện
1 Nhấn vào nút đăng nhập
2 Điền đầy đủ các thông tin
3 Nhấn nút đăng nhập
Bảng 2 Đặc tả usecase đăng xuất
2 Use Case “Đăng xuất”
Mô Tả User đăng xuất để sử dụng các chức năng bên trong
Tác Nhân Kích Hoạt User
Tiền Điều Kiện Đã đăng nhập
Các Bước Thực Hiện 1 Nhấn vào nút đăng xuất
Bảng 3 Đặc tả usecase xem theo danh mục
3 Use Case “Xem theo danh mục”
Mô Tả
Khách hàng có thể xem các sản phẩm theo danh mục sản phẩm
Tác Nhân Kích Hoạt User
Tiền Điều Kiện Đã đăng nhập
Các Bước Thực Hiện 1 Chọn danh mục sản phẩm cần xem
2 Xem các sản phẩm
Bảng 4 Đặc tả usecase xem món ăn
4 Use Case “Xem chi tiết món ăn”
Mô Tả Khách hàng có thể xem chi tiết sản phẩm
Tác Nhân Kích Hoạt User