Bảng chi tiết đối tượng của màn hình chọn địa điểm .... Bảng chi tiết xử lý của màn hình chọn địa điểm .... Bảng chi tiết đối tượng của màn hình tạo lịch trình .... Bảng chi tiết xử lý c
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
ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN
XÂY DỰNG ỨNG DỤNG DU LỊCH SỬ DỤNG
FLUTTER VÀ MICROSERVICES
GVHD: TRƯƠNG THỊ NGỌC PHƯỢNG SVTH: TRẦN KIM HOÀNG
MSSV: 15110211 SVTH: TRẦN LÊ ANH QUỐC MSSV: 15110295
SKL 0 0 5 9 4 2
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
O VIÊN HƯỚNG DẪN THS
Trang 3
Tp Hồ Chí Minh, ngày 18 tháng 03 năm 2019
NHIỆM VỤ KHÓA LUẬN TỐT NGHIỆP
1 Tên đề tài:
XÂY DỰNG ỨNG DỤNG DU LỊCH SỬ DỤNG FLUTTER VÀ MICROSERVICES
2 Các số liệu, tài liệu ban đầu
3 Nội dung thuyết minh và tính toán
- Tìm hiểu về chung về Flutter và Microservices
- Ứng dụng các công cụ trên vào việc xây dựng ứng dụng du lịch
- Cài đặt, kiểm thử và đánh giá tính năng của ứng dụng du lịch
4 Sản phẩm
Ứng dụng du lịch Travel-Express chạy trên nền tảng Android, IOS và báo cáo về ứng
dụng
Trường Đại Học Sư Phạm Kỹ Thuật Tp.HCM
Khoa Công Nghệ Thông Tin
Giáo viên hướng dẫn: ThS TRƯƠNG THỊ NGỌC PHƯỢNG
Trang 4PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Ngành: Công nghệ Thông tin
Tên đề tài: Xây dựng ứng dụng du lịch sử dụng Flutter và Microservices
Họ và tên Giáo viên hướng dẫn: ThS Trương Thị Ngọc Phượng
NHẬN XÉT
1 Về nội dung và 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 15 tháng 7 năm 2019 Giáo viên hướng dẫn (Ký và ghi rõ họ tên) ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA CÔNG NGHỆ THÔNG TIN -***
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự do – Hạnh phúc ***
Trang 5PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Ngành: Công nghệ Thông tin
Tên đề tài: Xây dựng ứng dụng du lịch sử dụng Flutter và Microservices
Họ và tên Giáo viên hướng dẫn: ThS Trương Thị Ngọc Phượng
NHẬN XÉT
1 Về nội dung và 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 2019 Giáo viên phản biện (Ký và ghi rõ họ tên) ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA CÔNG NGHỆ THÔNG TIN -***
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự do – Hạnh phúc ***
Trang 6LỜI CẢM ƠN
LỜI CẢM ƠN
Chúng em xin chân thành cảm ơn Quý Thầy Cô Khoa Công Nghệ Thông Tin Trường Đại Học Sư Phạm Kỹ Thuật Tp.HCM đã tạo điều kiện thuận lợi cho chúng em thực hiện đề tài Khóa luận tốt nghiệp này
Chúng em cũng xin được gửi lời cảm ơn chân thành nhất đến Cô Trương Thị Ngọc Phượng, người đã hướng dẫn và chỉ bảo chúng em trong suốt quá trình thực hiện đề tài Cảm ơn Quý Thầy Cô trong khoa đã truyền đạt những kiến thức và kinh nghiệm quý báu cho chúng em trong suốt thời gian học tại trường
Xin chân thành cảm ơn các anh chị và bạn bè đã ủng hộ, giúp đỡ và động viên chúng em trong thời gian học tập và nghiên cứu khóa luận tốt nghiệp
Dù đã cố gắng hoàn thành tiểu luận, nhưng chắc chắn sẽ có những thiếu sót không tránh khỏi Chúng em kính mong nhận được sự cảm thông và những ý kiến đóng góp của Quý Thầy Cô và các bạn
Trang 7ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP
Trường ĐH Sư phạm Kỹ thuật TP.HCM
Khoa Công nghệ Thông tin
ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP
Thời gian làm tiểu luận: Từ ngày 18/03/2019 đến ngày 30/06/2019
Chuyên ngành: Công nghệ phần mềm
Tên tiểu luận: Xây dựng ứng dụng du lịch sử dụng Flutter và Microservices
GV hướng dẫn: ThS Trương Thị Ngọc Phượng
Nhiệm vụ của tiểu luận:
1 Tìm hiểu về chung về Flutter và Microservices
2 Ứng dụng các công cụ trên vào việc xây dựng ứng dụng du lịch
3 Cài đặt, kiểm thử và đánh giá tính năng của ứng dụng du lịch
Đề cương tiểu luận: (gồm các phần sau đây)
MỤC LỤC PHẦN MỞ ĐẦU
1 Tính cấp thiết của đề tài
2 Mục tiêu của đề tài
3 Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
1.2 Hệ quản trị cơ sở dữ liệu
CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG
2.1 Khảo sát hiện trạng
Trang 8ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP
2.2.1 Trip hunter
2.2.2 GrupTrip
2.2.3 Tale.city/ Google Map
2.3 Đặc tả các tính năng của ứng dụng Travel-Express
CHƯƠNG 3: LẬP DANH SÁCH YÊU CẦU
3.1 Sơ đồ UseCase
3.2 Danh sách yêu cầu chức năng của phần mềm
3.2.1 Yêu cầu chức năng của Guest
3.2.2 Yêu cầu chức năng của User
CHƯƠNG 4: PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ CƠ SỞ DỮ LIỆU
4.1 Mô hình hóa yêu cầu
4.1.1 Nghiệp vụ View Trip Itineraries
4.1.2 Nghiệp vụ View Places
4.1.3 Nghiệp vụ View Profile
4.1.4 Nghiệp vụ Edit Profile
4.1.5 Nghiệp vụ Create Trip
4.1.6 Nghiệp vụ Login with Facebook
4.1.7 Nghiệp vụ Login with Google
4.1.8 Nghiệp vụ Login with Phone Number
4.1.9 Nghiệp vụ Create Destination
4.1.10 Nghiệp vụ View Destination
4.1.11 Nghiệp vụ Logout
4.2 Mô tả cơ sở dữ liệu
4.2.1 Sơ đồ UML
4.2.2 Chi tiết các bảng dữ liệu
CHƯƠNG 5: THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ
Trang 9ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP
5.7 Màn hình khám phá
5.8 Màn hình đánh giá địa danh
5.9 Màn hình thông tin địa danh
5.10 Màn hình chọn nơi dừng chân
5.11 Màn hình chi tiết kế hoạch chuyến đi
CHƯƠNG 6: CÀI ĐẶT VÀ KIỂM THỬ
6.2.2 Test màn hình chỉnh sửa thông tin cá nhân
6.2.3 Test màn hình chọn địa điểm
6.2.4 Test màn hình tạo lịch trình
6.2.5 Test màn hình thêm lịch trình cụ thể cho từng ngày
6.2.6 Test màn hình khám phá
6.2.7 Test màn hình đánh giá địa danh
6.2.8 Test màn hình thông tin địa danh
6.2.9 Test màn hình chọn nơi dừng chân
6.2.10 Test màn hình chi tiết kế hoạch chuyến đi
TÀI LIỆU THAM KHẢO
[3] An invaluable guide to microservices, 18/10/2017:
Trang 10
https://hackernoon.com/microservices-are-hard-an-invaluable-guide-to-ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP
[5] Building a Live Location Sharing App, 10/01/2018:
https://blog.geekyants.com/flutter-hands-on-building-a-live-location-sharing-app-14b67ef17404
[7] Practice Golang Using Protobuffs, 24/05/2016:
- Cài đặt công cụ cần thiết
- Xây dựng project ban đầu
Ý kiến của GVHD Ngày 18 tháng 03 năm 2019
Trang 11MỤC LỤC
MỤC LỤC
NHIỆM VỤ KHÓA LUẬN TỐT NGHIỆP II PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN III PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN IV LỜI CẢM ƠN V
ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP VI MỤC LỤC X DANH MỤC HÌNH ẢNH XIV DANH MỤC CÁC BẢNG XVII
PHẦN MỞ ĐẦU 1
1 Tính cấp thiết của đề tài 2
2 Mục tiêu của đề tài 2
3 Đối tượng và phạm vi nghiên cứu 3
3.1 Đối tượng 3
3.2 Phạm vi nghiên cứu 3
4 Phương pháp nghiên cứu 3
PHẦN NỘI DUNG 4
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 5
1.1 Ngôn ngữ lập trình 5
Các ngôn ngữ được sử dụng 5
Kiến trúc microservices 5
1.2 Hệ quản trị cơ sở dữ liệu 8
CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG 10
2.1 Khảo sát hiện trạng 10
2.2 Khảo sát một số ứng dụng 10
Trip hunter 10
GrupTrip 15
Tale.city/ Google Map 19
2.3 Đặc tả các tính năng của ứng dụng travel-express 20
CHƯƠNG 3: LẬP DANH SÁCH YÊU CẦU 22
Trang 12MỤC LỤC
3.2 Danh sách yêu cầu chức năng của phần mềm 22
Yêu cầu chức năng của Guest 22
Yêu cầu chức năng của User 25
CHƯƠNG 4: PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ CƠ SỞ DỮ LIỆU 31
4.1 Mô hình hóa yêu cầu 31
Nghiệp vụ View Trip Itineraries 31
Nghiệp vụ View Places 32
Nghiệp vụ View Profile 34
Nghiệp vụ Edit Profile 36
Nghiệp vụ Create Trip 38
Nghiệp vụ Login with Facebook 40
Nghiệp vụ Login with Google 42
Nghiệp vụ Login with Phone Number 44
Nghiệp vụ Create Destination 46
Nghiệp vụ View Destination 48
Nghiệp vụ Logout 50
4.2 Mô tả cơ sở dữ liệu 52
Mô tả cơ sở dữ liệu 52
Bảng mô tả các thuộc tính của cơ sở dữ liệu 54
CHƯƠNG 5: THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ 59
5.1 Màn hình Splash 59
Màn hình đối tượng 59
Màn hình xử lý 60
Danh sách xử lý 60
5.2 Màn hình đăng nhập 61
Màn hình đối tượng 61
Màn hình xử lý 62
Danh sách xử lý 62
5.3 Màn hình chỉnh sửa thông tin cá nhân 63
Màn hình đối tượng 63
Màn hình xử lý 65
Trang 13MỤC LỤC
5.4 Màn hình chọn địa điểm 66
Màn hình đối tượng 66
Màn hình xử lý 68
Danh sách xử lý 68
5.5 Màn hình tạo lịch trình 69
Màn hình đối tượng 69
Màn hình xử lý 71
Danh sách xử lý 71
5.6 Màn hình thêm lịch trình cụ thể cho từng ngày 72
Màn hình đối tượng 72
Màn hình xử lý 73
Danh sách xử lý 74
5.7 Màn hình khám phá 75
Màn hình đối tượng 75
Màn hình xử lý 77
Danh sách xử lý 77
5.8 Màn hình đánh giá địa danh 78
Màn hình đối tượng 78
Màn hình xử lý 80
Danh sách xử lý 80
5.9 Màn hình thông tin địa danh 81
Màn hình đối tượng 81
Màn hình xử lý 82
Danh sách xử lý 82
5.10 Màn hình chọn nơi dừng chân 84
Màn hình đối tượng 84
Màn hình xử lý 85
Danh sách xử lý 85
5.11 Màn hình chi tiết kế hoạch chuyến đi 87
Màn hình đối tượng 87
Màn hình xử lý 89
Trang 14MỤC LỤC
CHƯƠNG 6: CÀI ĐẶT VÀ KIỂM THỬ 90
6.1 Cài đặt 90
Sơ đồ 90
Hệ quản trị cơ sở dữ liệu 91
6.2 Kiểm thử 91
Test màn hình đăng nhập 91
Test màn hình chỉnh sửa thông tin cá nhân 92
Test màn hình chọn địa điểm 92
Test màn hình tạo lịch trình 93
Test màn hình thêm lịch trình cụ thể cho từng ngày 94
Test màn hình khám phá 94
Test màn hình đánh giá địa danh 95
Test màn hình thông tin địa danh 95
Test màn hình chọn nơi dừng chân 96
Test màn hình chi tiết kế hoạch chuyến đi 96
Kết quả kiểm thử 97
PHẦN TỔNG KẾT 99
1 Kết quả đạt được 100
2 Ưu điểm 100
3 Hạn chế 100
4 Hướng phát triển 100
TÀI LIỆU THAM KHẢO 101
Trang 15DANH MỤC HÌNH ẢNH
DANH MỤC HÌNH ẢNH
Hình 1-1 Mô hình kiến trúc của Microservices 5
Hình 1-2 NATS Streaming 7
Hình 2-1 Màn hình tạo lịch trình 10
Hình 2-2 Màn hình đặt khách sạn 11
Hình 2-3 Chức năng tạo lịch trình tự động hoặc thủ công 11
Hình 2-4 Màn hình ước tính chi phí 12
Hình 2-5 Màn hình đặt lộ trình có sẵn 13
Hình 2-6 Chức năng thêm hình ảnh vào địa điểm 13
Hình 2-7 Màn hình đánh giá địa điểm 14
Hình 2-8 Chức năng đề xuất địa danh 14
Hình 2-9 Chức năng đề xuất món ăn, thức uống 15
Hình 2-10 Màn hình tạo lịch trình 16
Hình 2-11 Màn hình thêm hình ảnh vào địa điểm 17
Hình 2-12 Màn hình góp ý lịch trình thành viên khác đề xuất 18
Hình 2-13 Màn hình quản lý kinh phí 19
Hình 2-14 Màn hình gợi ý đường đi 20
Hình 3-1 Sơ đồ Use case 22
Hình 4-1 Sơ đồ luồng dữ liệu View Trip Itineraries 31
Hình 4-2 View Trip Itineraries - Lược đồ tuần tự 32
Hình 4-3 Sơ đồ luồng dữ liệu View Places 32
Hình 4-4 View Places - Lược đồ tuần tự 34
Hình 4-5 Sơ đồ luồng dữ liệu View Profile 34
Hình 4-6 View Profile - Lược đồ tuần tự 36
Hình 4-7 Sơ đồ luồng dữ liệu Edit Profile 36
Hình 4-8 Edit Profile - Lược đồ tuần tự 38
Hình 4-9 Sơ đồ luồng dữ liệu Create Trip 38
Hình 4-10 Create Trip - Lược đồ tuần tự 40
Hình 4-11 Sơ đồ luồng dữ liệu Login with Facebook 40
Hình 4-12 Login with Facebook - Lược đồ tuần tự 42
Trang 16DANH MỤC HÌNH ẢNH
Hình 4-14 Login with Gooogle – Lược đồ tuần tự 44
Hình 4-15 Sơ đồ luồng dữ liệu Login with Phone Number 44
Hình 4-16 Login with Phone Number - Lược đồ tuần tự 46
Hình 4-17 Sơ đồ luồng dữ liệu Create Destination 46
Hình 4-18 Create Destination - Lược đồ tuần tự 48
Hình 4-19 Sơ đồ luồng dữ liệu View Destination 48
Hình 4-20 View Destination - Lược đồ tuần tự 50
Hình 4-21 Sơ đồ luồng dữ liệu Logout 50
Hình 4-22 Logout - Lược đồ tuần tự 52
Hình 4-23 Mô tả cơ sở dữ liệu bảng User 52
Hình 4-24 Mô tả cơ sở dữ liệu bảng Trip 53
Hình 4-25 Mô tả cơ sở dữ liệu bảng Day 53
Hình 4-26 Mô tả cơ sở dữ liệu bảng Region 53
Hình 4-27 Mô tả cơ sở dữ liệu bảng Place 54
Hình 5-1 Màn hình đối tượng Splash 59
Hình 5-2 Màn hình xử lý Splash 60
Hình 5-3 Màn hình đối tượng đăng nhập 61
Hình 5-4 Màn hình xử lý đăng nhập 62
Hình 5-5 Màn hình đối tượng chỉnh sửa thông tin cá nhân 63
Hình 5-6 Màn hình xử lý thông tin cá nhân 65
Hình 5-7 Màn hình đối tượng chọn địa điểm 66
Hình 5-8 Màn hình xử lý chọn địa điểm 68
Hình 5-9 Màn hình đối tượng tạo lịch trình 69
Hình 5-10 Màn hình xử lý tạo lịch trình 71
Hình 5-11 Màn hình đối tượng thêm lịch trình cụ thể cho từng ngày 72
Hình 5-12 Màn hình xử lý thêm lịch trình cụ thể cho từng ngày 74
Hình 5-13 Màn hình đối tượng khám phá 75
Hình 5-14 Màn hình xử lý khám phá 77
Hình 5-15 Màn hình đối tượng đánh giá địa danh 78
Hình 5-16 Màn hình xử lý đánh giá địa danh 80
Hình 5-17 Màn hình đối tượng thông tin địa danh 81
Trang 17DANH MỤC HÌNH ẢNH
Hình 5-19 Màn hình đối tượng chọn nơi dừng chân 84
Hình 5-20 Màn hình xử lý chọn nơi dừng chân 85
Hình 5-21 Màn hình đối tượng chi tiết kế hoạch chuyến đi 87
Hình 5-22 Màn hình xử lý chi tiết kế hoạch chuyến đi 89
Hình 6-1 Sơ đồ thành phần - Component Diagram 90
Hình 6-2 Sơ đồ triển khai - Deployment Diagram 90
Trang 18DANH MỤC CÁC BẢNG
DANH MỤC CÁC BẢNG
Bảng 2-1 Bảng đặc tả các tính năng của ứng dụng Travel-Express 20
Bảng 3-1 Chức năng nghiệp vụ của Guest 22
Bảng 3-2 Chi tiết quy định/ công thức liên quan của Guest 23
Bảng 3-3 Yêu cầu chức năng nghiệp vụ của User 25
Bảng 3-4 Chi tiết quy định/ công thức liên quan của User 26
Bảng 4-1 Chi tiết bảng User 54
Bảng 4-2 Chi tiết bảng Trip 55
Bảng 4-3 Chi tiết bảng Place 56
Bảng 4-4 Chi tiết bảng Day 57
Bảng 4-5 Chi tiết bảng Region 58
Bảng 5-1 Bảng chi tiết đối tượng của màn hình Splash 59
Bảng 5-2 Bảng chi tiết xử lý của màn hình Splash 60
Bảng 5-3 Bảng chi tiết đối tượng của màn hình đăng nhập 61
Bảng 5-4 Bảng chi tiết xử lý của màn hình đăng nhập 62
Bảng 5-5 Bảng chi tiết đối tượng của màn hình chỉnh sửa thông tin cá nhân 63
Bảng 5-6 Bảng chi tiết xử lý của màn hình chỉnh sửa thông tin cá nhân 65
Bảng 5-7 Bảng chi tiết đối tượng của màn hình chọn địa điểm 66
Bảng 5-8 Bảng chi tiết xử lý của màn hình chọn địa điểm 68
Bảng 5-9 Bảng chi tiết đối tượng của màn hình tạo lịch trình 69
Bảng 5-10 Bảng chi tiết xử lý của màn hình tạo lịch trình 71
Bảng 5-11 Bảng chi tiết đối tượng của màn hình thêm lịch trình cụ thể cho từng ngày 72
Bảng 5-12 Bảng chi tiết xử lý của màn hình thêm lịch trình cụ thể cho từng ngày 74
Bảng 5-13 Bảng chi tiết đối tượng của màn hình khám phá 75
Bảng 5-14 Bảng chi tiết xử lý của màn hình khám phá 77
Bảng 5-15 Bảng chi tiết đối tượng của màn hình đánh giá địa danh 78
Bảng 5-16 Bảng chi tiết xử lý của màn hình đánh giá địa danh 80
Bảng 5-17 Bảng chi tiết đối tượng của màn hình thông tin địa danh 81
Bảng 5-18 Bảng chi tiết xử lý của màn hình thông tin địa danh 82
Trang 19DANH MỤC CÁC BẢNG
Bảng 5-20 Bảng chi tiết xử lý của màn hình chọn nơi dừng chân 85
Bảng 5-21 Bảng chi tiết đối tượng của màn hình chi tiết kế hoạch chuyến đi 87
Bảng 5-22 Bảng chi tiết xử lý của màn hình kế hoạch chuyến đi 89
Bảng 6-1 Test màn hình đăng nhập 91
Bảng 6-2 Test màn hình chỉnh sửa thông tin cá nhân 92
Bảng 6-3 Test màn hình chọn địa điểm 92
Bảng 6-4 Test màn hình tạo lịch trình 93
Bảng 6-5 Test màn hình thêm lịch trình cụ thể cho từng ngày 94
Bảng 6-6 Test màn hình khám phá 94
Bảng 6-7 Test màn hình đánh giá địa danh 95
Bảng 6-8 Test màn hình thông tin địa danh 95
Bảng 6-9 Test chức năng chọn nơi dừng chân 96
Bảng 6-10 Test màn hình chi tiết kế hoạch chuyến đi 96
Bảng 6-11 Bảng kết quả kiểm thử 97
Trang 20PHẦN MỞ ĐẦU
PHẦN MỞ ĐẦU
Trang 21PHẦN MỞ ĐẦU
1 Tính cấp thiết của đề tài
Nước ta có tiềm năng lớn về nhiều mặt để phát triển du lịch, có điều kiện thiên nhiên phong phú, có nhiều danh lam thắng cảnh nổi tiếng, có truyền thống văn hóa lâu đời với nhiều lễ hội, phong tục tập quán tốt đẹp và độc đáo, nhiều di tích lịch sử, tôn giáo, kiến trúc nghệ thuật đặc sắc, giàu bản sắc nhân văn Trong những năm gần đây, ngành du lịch đã có những đổi mới, từng bước phát triển cơ sở vật chất, kỹ thuật, tạo điều kiện bước đầu thu hút khách nước ngoài và kiều bào về thăm Tổ quốc, giới thiệu đất nước, con người và tinh hoa của dân tộc Việt Nam với bạn bè quốc tế; đáp ứng một phần nhu cầu tham quan, nghỉ ngơi, giải trí của nhân dân trong nước
Cũng trong những năm gần đây, đời sống của con người cũng ngày càng được cải thiện và nâng cao Việc này đồng nghĩa với nhu cầu tận hưởng cuộc sống với những chuyến du lịch ngày càng tăng Tuy nhiên, việc lựa chọn những địa điểm để tham quan,
du lịch sẽ là điều khó khăn với những người mới lần đầu hoặc chỉ một vài lần đi du lịch Đặc biệt, những bạn trẻ là những bạn thích khám phá và muốn tìm những cái mới Vì vậy, việc tìm kiếm những địa điểm du lịch và sắp xếp một tour du lịch sẽ là một điều rất cần thiết Và việc quản lý vị trí của các thành viên trong nhóm khi thất lạc nhau là một điều rất quan trọng Nhóm chúng em quyết định lựa chọn đề tài “xây dựng ứng dụng du lịch sử dụng flutter và microservices” nhằm giải quyết vấn đề đó Ứng dụng giúp cho những người muốn đi du lịch có thể lên lịch trình cho mình, quản lý vị trí của các thành viên trong nhóm để tránh thất lạc, xem những lịch trình của những người khác đã lên trước đó cũng như những lịch trình được đề xuất của những đối tác và một phần góp phần phát triển ngành du lịch của đất nước
2 Mục tiêu của đề tài
Tìm hiểu chung về Flutter và Microservices
Tìm hiểu về những thư viện cần thiết sử dụng trong đề tài
Ứng dụng Flutter và Microservices vào việc xây dựng ứng dụng du lịch
Ứng dụng du lịch có các tính năng sau đây:
- Đăng nhập ứng dụng với số điện thoại, Google hoặc Facebook
- Đặt lịch trình đến từng địa điểm cụ thể
- Đặt lịch trình với chế độ riêng tư hoặc công khai
- Chỉnh sửa lịch trình đã lên
Trang 22PHẦN MỞ ĐẦU
- Xem những lịch trình public của những người khác
- Xem đánh giá những địa điểm du lịch
- Xem vị trí của các thành viên trong nhóm
3 Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng
Flutter, Microservices, các thư viện hỗ trợ, các ứng dụng hỗ trợ đặt lịch trình và các ứng dụng đánh giá các địa điểm du lịch
3.2 Phạm vi nghiên cứu
Tổng quan về Flutter, Microservices
Các tính năng trên các ứng dụng hỗ trợ đặt lịch trình và trên các ứng dụng đánh giá các địa điểm du lịch
4 Phương pháp nghiên cứu
Để thực hiện mục tiêu và nhiệm vụ nghiên cứu, nhóm đã sử dụng các phương pháp nghiên cứu sau:
- Phương pháp nghiên cứu tài liệu: Đọc các tài liệu tham khảo, xem video hướng dẫn sử dụng các tính năng
- Phương pháp chuyên gia: Nhờ sự góp ý, giúp đỡ, tư vấn từ giáo viên hướng dẫn
và các thầy cô trong khoa Công nghệ thông tin trường Đại học Sư phạm kỹ thuật TP.HCM
Trang 23PHẦN NỘI DUNG
PHẦN NỘI DUNG
Trang 24Giới thiệu về Microservices
Microservices Architecture là một mô hình kiến trúc để phát triển hệ thống phần mềm Chúng được ứng dụng để thay đổi cho mô hình cấu trúc một khối Nhờ khả năng mở rộng rất dễ dàng của kiến trúc này mà nó được coi là kiến trúc lý tưởng để xây dựng lên nền tảng phát triển diện rộng trên các thiết bị di dộng, internet, web
Hình 1-1 Mô hình kiến trúc của Microservices
- Giúp giảm thiểu quá trình phức tạp hoá trong các hệ thống lớn nhờ việc chia nhỏ hệ thống thành nhiều dịch vụ nhỏ, dễ dàng quản lý và triển khai từng phần
- Mỗi service có thể được phát triển, đóng gói, triển khai và mở rộng độc lập
- Tận dụng được những ưu điểm của từng ngôn ngữ, công nghệ nhờ khả
Trang 25CƠ SỞ LÝ THUYẾT
- Tối ưu hoá chi phí vận hành: mỗi service được triển khai có resource phù hợp, riêng biệt
- Khó khăn trong việc xử lý sự cố
- Khó khăn trong việc kiểm thử
- Khó khăn trong việc đảm bảo tính đúng đắn của dữ liệu
- Triển khai microservices phức tạp hơn cấu trúc nguyên khối
Protobuf
mở rộng, về cơ bản nó được sử dụng để Serialized object với định dạng là binary Hiện tại, protobuf có hỗ trợ cho C ++, C, Go, Java và Python…
triển tại google Nó rất hữu ích trong việc phát triển các chương trình để giao tiếp với nhau qua một wire hoặc để lưu trữ dữ liệu Tất cả những gì bạn phải làm là chỉ định một thông báo cho từng cấu trúc dữ liệu mà bạn muốn Serialize (theo định dạng giống như lớp Java) bằng cách sử dụng file đặc tả proto
So sánh Protobuf với JSON,XML:
- Dữ liệu rất dày đặc, đầu ra nhỏ
- Khó decode mà không biết schema, định dạng dữ liệu không rõ ràng và cần schema để biết rõ
- Xử lý rất nhanh, nhỏ hơn 3 - 10 lần so với XML hoặc JSON
- không dành cho con người vì là Binary
- Tạo các code truy cập dữ liệu dễ sử dụng hơn theo chương trình
- Con người có thể có thể đọc và chỉnh sửa dễ dàng
- Có thể phân tích cú pháp mà không cần biết schema
- Các browser đều hỗ trợ rất tốt
- Ít dài dòng hơn XML
Trang 26CƠ SỞ LÝ THUYẾT
- Có thể phân tích cú pháp mà không cần biết schema
- Tiêu chuẩn cho SOAP
- Hỗ trợ tốt các công cụ như xsd, xslt, sax, dom
Nats Streaming
và được viết bằng ngôn ngữ lập trình Go Tên thực thi cho máy chủ NATS
Streaming là nats-streaming-server NATS Streaming nhúng, mở rộng và
tương tác liền mạch với nền tảng NATS cốt lõi Máy chủ NATS Streaming được cung cấp dưới dạng phần mềm nguồn mở theo giấy phép Apache-2.0 Synadia tích cực duy trì và hỗ trợ máy chủ NATS Streaming
Hình 1-2 NATS Streaming
hướng các message một cách tự động, có vai trò như là Service Discovery và Service Log
Discovery và Service Log
Flutter
Flutter được phát triển nhằm giải quyết bài toán thường gặp trong mobile là
Fast Development và Native Performance Nếu như React Native chỉ đảm bảo Fast Development và code native thuần chỉ đảm bảo Native Performance thì Flutter làm được cả 2 điều trên
Ưu điểm:
Trang 27CƠ SỞ LÝ THUYẾT
nhanh chóng và dễ dàng thử nghiệm, xây dựng giao diện người dùng, thêm tính năng và sửa lỗi nhanh hơn
động phong phú, scroll tự nhiên mượt mà và tự nhận thức được nền tảng
với framework hiện đại, reactive của Flutter và tập hợp các platform, layout
và widget phong phú Giải quyết các thách thức giao diện người dùng khó khăn của bạn với các API mạnh mẽ và linh hoạt cho 2D, animation, gesture…
1.2 Hệ quản trị cơ sở dữ liệu
Hệ quản trị cơ sở dữ liệu được sử dụng là MongoDB:
thiết kế theo kiểu hướng đối tượng trong đó các bảng được cấu trúc một cách linh hoạt cho phép các dữ liệu lưu trên bảng không cần phải tuân theo một dạng cấu trúc nhất định nào Chính do cấu trúc linh hoạt này nên MongoDB
có thể được dùng để lưu trữ các dữ liệu có cấu trúc phức tạp và đa dạng và không cố định (hay còn gọi là Big Data)
kích cỡ của Document này có thể khác với Document khác
- Cấu trúc của một đối tượng là rõ ràng
- Không có các Join phức tạp
Trang 28CƠ SỞ LÝ THUYẾT
mạnh mẽ như SQL
- MongoDB dễ dàng để mở rộng
sở dữ liệu là không cần thiết
- Sử dụng bộ nhớ nội tại để lưu giữ phần công việc, giúp truy cập dữ liệu nhanh hơn
Trang 29em tạo ra dựa vào xu thế đó và có một số tính năng mới cần thiết cho chuyến du lịch nhóm như biết được vị trí của mỗi thành viên trong nhóm để tránh lạc mất nhau, tự nhóm đưa ra một lịch trình phù hợp để triển khai,…
2.2 Khảo sát một số ứng dụng
Trip hunter
Các tính năng:
- Tạo/ chỉnh sửa/ chia sẻ lộ trình
- Lộ trình ở hai chế độ là công khai và riêng tư
Hình 2-1 Màn hình tạo lịch trình
Trang 30KHẢO SÁT HIỆN TRẠNG
Hình 2-2 Màn hình đặt khách sạn
- Tạo lịch trình cho từng ngày tự động hoặc thủ công
Hình 2-3 Chức năng tạo lịch trình tự động hoặc thủ công
- Hỗ trợ dự trù kinh phí cho lộ trình
Trang 31KHẢO SÁT HIỆN TRẠNG
Hình 2-4 Màn hình ước tính chi phí
- Đặt lộ trình có sẵn của cá nhân hoặc của đơn vị tổ chức tours
Trang 32KHẢO SÁT HIỆN TRẠNG
Hình 2-5 Màn hình đặt lộ trình có sẵn
- Thêm hình ảnh vào địa điểm bất kỳ
Hình 2-6 Chức năng thêm hình ảnh vào địa điểm
- Đánh giá địa điểm bất kỳ
Trang 33KHẢO SÁT HIỆN TRẠNG
Hình 2-7 Màn hình đánh giá địa điểm
- Đặt khách sạn, vé máy bay, nhà hàng
- Đề xuất các địa danh nổi tiếng, phổ biến, được đánh giá cao
Hình 2-8 Chức năng đề xuất địa danh
- Đề xuất các quán ăn, món ăn, thức uống đặc sản
Trang 34- Gợi ý, đề xuất những địa điểm, khách sạn, quán ăn, món ăn
- Tự đặt lộ trình cho cá nhân hoặc nhóm
- Chia sẻ lộ trình
- Đặt tour của các đơn vị tổ chức du lịch
- Tham khảo hoặc đặt lộ trình có sẵn
Nhược điểm:
- Chưa cụ thể hóa lộ trình trên map
- Chưa xác định vị trí hiện trong lộ trình
- Chưa cho biết tiến độ của lộ trình
- Chưa hỗ trợ chat giữa các thành viên trong nhóm
GrupTrip
Các tính năng:
- Tạo/ chỉnh sửa/ chia sẻ lộ trình
Trang 35KHẢO SÁT HIỆN TRẠNG
Hình 2-10 Màn hình tạo lịch trình
- Thêm hình ảnh vào mỗi địa điểm, có thể tag cá nhân vào hình
Trang 36KHẢO SÁT HIỆN TRẠNG
Hình 2-11 Màn hình thêm hình ảnh vào địa điểm
- Mỗi thành viên có thể nhận xét, góp ý tại mỗi địa điểm mà thành viên khác đề xuất
Trang 37KHẢO SÁT HIỆN TRẠNG
Hình 2-12 Màn hình góp ý lịch trình thành viên khác đề xuất
- Quản lý kinh phí
Trang 38KHẢO SÁT HIỆN TRẠNG
Hình 2-13 Màn hình quản lý kinh phí
Ưu điểm:
- Giao diện thân thiện với người dùng
- Hỗ trợ lưu trữ hình ảnh cho từng điểm đến, lộ trình
- Có dòng thời gian trong suốt lộ trình
- Các thành viên có thể góp ý kiến khi quyết định đặt điểm đến
Nhược điểm:
- Chưa hỗ trợ xem toàn bộ lộ trình
- Chưa hỗ trợ chat giữa các thành viên trong nhóm
- Chưa hỗ trợ xem tiến độ của lộ trình
Tale.city/ Google Map
Các tính năng:
- Điều hướng
- Gợi ý nhiều đường đi
Trang 392.3 Đặc tả các tính năng của ứng dụng travel-express
Bảng 2-1 Bảng đặc tả các tính năng của ứng dụng Travel-Express
1
GUEST
Login with phone number
3
USER
Logout
Trang 40KHẢO SÁT HIỆN TRẠNG