Mobile Travel là ứng dụng du lịch di động thế hệ mới, tích hợp đầy đủ các tính năng cần thiết để đáp ứng mọi nhu cầu của du khách, bao gồm: Tìm kiếm và đặt phòng khách sạn, tour du lịch
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG
ĐỀ TÀI MOBILE APP TRAVEL VIETNAM
Ngành: CÔNG NGHỆ THÔNG TIN
Giảng viên hướng dẫn: Ths Bùi Mạnh Toàn
Sinh viên thực hiện :
Đoàn Võ Hoàng Phúc 21DTHJA2 2180601149
TP Hồ Chí Minh, 2024
Trang 2LỜI MỞ ĐẦU
Thế giới ngày nay đang trải qua giai đoạn biến đổi mạnh mẽ, nơi mà ranh giới giữa các quốcgia ngày càng thu hẹp, và việc di chuyển, khám phá trở nên dễ dàng hơn bao giờ hết Nhờnhững tiến bộ vượt bậc trong công nghệ, đặc biệt là sự bùng nổ của internet và điện thoạithông minh, nhu cầu du lịch của con người cũng ngày càng tăng cao, đặc biệt là giới trẻ
Nắm bắt được xu hướng tất yếu này, em xin hân hạnh giới thiệu đến quý thầy cô dự ánTravel - ứng dụng di động cung cấp giải pháp du lịch và khách sạn toàn diện cho ngườidùng Dự án được ấp ủ và phát triển bởi em và sự hướng dẫn của GV BÙI MẠNH TOÀN,giàu kinh nghiệm và tâm huyết, với mục tiêu mang đến cho người dùng những trải nghiệm
du lịch tuyệt vời nhất, biến mỗi chuyến đi trở thành những kỷ niệm khó phai
Mobile Travel là ứng dụng du lịch di động thế hệ mới, tích hợp đầy đủ các tính năng cần
thiết để đáp ứng mọi nhu cầu của du khách, bao gồm:
Tìm kiếm và đặt phòng khách sạn, tour du lịch một cách nhanh chóng và tiện lợi với mứcgiá cạnh tranh
Khám phá các điểm tham quan, nhà hàng, quán ăn uy tín và chất lượng
Mobile Travel được thiết kế với giao diện thân thiện, dễ sử dụng, phù hợp với mọi đối
tượng người dùng, từ những du khách trẻ tuổi năng động đến những gia đình có trẻ nhỏ.Ứng dụng còn hỗ trợ đa ngôn ngữ, giúp người dùng từ các quốc gia khác nhau có thể dễdàng sử dụng
Điểm nổi bật của Mobile Travel:
Tính năng tìm kiếm thông minh: Giúp người dùng dễ dàng tìm kiếm thông tin về các điểmđến, khách sạn, nhà hàng, phù hợp với nhu cầu và sở thích của mình
Bộ lọc thông minh: Cho phép người dùng lọc kết quả tìm kiếm theo nhiều tiêu chí như giá
Xin trân trọng cảm ơn!
Trang 3Mục Lục
CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI 6
1.1 Lý do thực hiện đề tài 6
1.1.1 Lý do chọn đề tài 6
1.1.2 Tính cấp thiết của đề tài 6
1.1.3 lợi ích mang đến cho xã hội 6
1.2 Mục tiêu 7
1.3 Nội dung thực hiện 7
1.4 Phương pháp thực hiện 7
1.5 Mục tiêu đề ra 7
CHƯƠNG 2 KIẾN THỨC CƠ SỞ 9
2.1 Khái niệm cơ chế hoạt động 9
2.1.1 Tổng quan về ngôn ngữ và công nghệ sử dụng (Dart – flutter - firebase) 9
2.1.1.1 Dịch vụ Authentication 11 2.1.1.2 Dịch vụ Firestore Database 12 2.1.1.3 Firebase Cloud Storage 12 2.1.1.4 Cách kết nối firebase với dự án 12 2.2 Nhóm chức năng chính 15
2.3 Mô hình sử dụng của hệ thống 16
2.3.1 Mô hình MVVM 16
2.3.2 Ưu điểm của MVVM 16
2.3.3 Mô hình MVVM + Repository 17
2.4 Các yêu cầu phi chức năng 17
Trang 42.5 Sơ đồ use case 19
2.5.1 Usecase Tổng Quát 19
2.5.2 Usecase đăng nhập 20
2.5.3 Usecase người dùng 21
2.6 Mô hình lớp Sequence diagram 22
2.7 Bảng dữ liệu 23
2.7.1 Mô hình các bảng dữ liệu theo dạng NoSQL 23
2.8 Chi tiết các Collection 23
2.8.1 Collection users 23
2.8.2 Collection hotels 24
2.8.3 Collection location 24
2.8.4 Collection favorite 25
2.8.5 Collection room 25
2.8.6 Collection CartItem 25
2.8.7 Collection Order 26
CHƯƠNG 3 KẾT QUẢ THỰC NGHIỆM 27
3.1 Giao diện icon trên thiết bị di động 27
3.2 Giao diện màn hình đăng nhập 28
3.3 Giao diện màn hình đăng ký 29
3.4 Giao diện màn hình trang chủ 30
3.5 Giao diện màn hình tìm kiếm 31
3.6 Giao diện màn hình chi tiết điểm tham quan / du lịch 32
3.7 Giao diện màn hình chi tiết khách sạn 33
3.8 Giao diện màn hình chờ thanh toán 34
3.9 Giao diện màn hình hoàn thành thanh toán 34
3.10 Giao diện google map 35
3.11 Giao diện màn hình hiển thị sản phẩm yêu thích 36
3.12 Giao diện trang cá nhân 37
3.13 Giao diện cài đặt 38
3.14 Giao diện hiển thị lịch sử và hiện thanh đặt phòng/vé 40
CHƯƠNG 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 41
4.1 Ưu Điểm 41
Trang 54.2 Nhược Điểm 41 4.3 Hướng phát triển của đồ án 41 TÀI LIỆU THAM KHẢO 42
CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI
1.1 Lý do thực hiện đề tài
Trang 61.1.1 Lý do chọn đề tài
Du lịch di động đang nổi lên như một xu hướng tất yếu trong thời đại công nghệ số, mở ratiềm năng to lớn cho các dự án khởi nghiệp Lựa chọn đề tài này mang đến nhiều lợi ích,Nhu cầu du lịch ngày càng tăng, đặc biệt là du lịch di động với sự tiện lợi và dễ dàng tìmkiếm thông tin, đặt dịch vụ Thị trường du lịch di động còn nhiều tiềm năng khai thác vớilượng người dùng smartphone ngày càng gia tăng
So với các lĩnh vực khác như thương mại điện tử hay gọi xe, thị trường du lịch di động còntương đối mới mẻ và ít cạnh tranh hơn Do đó, đây là cơ hội tốt để bạn tạo dựng vị thế vàkhẳng định thương hiệu của mình
Ngành du lịch là một ngành kinh doanh có lợi nhuận cao Với ứng dụng du lịch di động, bạn
có thể kiếm tiền từ nhiều nguồn như hoa hồng đặt phòng khách sạn, vé máy bay, tour dulịch, quảng cáo, Ngoài ra, bạn cũng có thể cung cấp các dịch vụ du lịch khác như đặt xeđưa đón, hướng dẫn viên, vé tham quan, để tăng thêm doanh thu
1.1.2 Tính cấp thiết của đề tài
Với sự phát triển mạnh mẽ của công nghệ,đi đôi với việc bùng nổ của mạng xã hội thì việcphát triển một ứng dụng di động để người dùng có thể lựa chọn các chuyến đi để có đượcmột kỳ nghĩ dưỡng,du lịch một cách trọn vẹn nhất,mang đến cho người dùng một trảinghiệm tận tình và chu đáo góp phần thúc đẩy ngành du lịch phát triển và tạo ra nhiều việclàm mới Mang đến cho người dùng những trải nghiệm du lịch tuyệt vời và đáng nhớ
1.1.3 lợi ích mang đến cho xã hội
với sự bùng nổ và phát triển của công nghệ thì ứng dụng sẽ phát triển đi đôi với nó sẽ tạo
ra nhiều công việc làm dành cho mọi tầng lớp,giúp ích cho khách du lịch trong nước và ngoài nước có thể tiếp cận các địa điểm du lịch từ nhiều tỉnh thành khác nhau
Trang 71.2 Mục tiêu
Tiếp cận làm việc với đồ án theo đúng quy tắc,chuẩn mực
Tìm hiểu được công nghệ mới mẽ ,tăng khả năng tự học,tiếp thu thêm các kiến thức mới
Xây dựng các chức năng và triển khai theo một mô hình nhất định
ứng dụng dễ dàng kiểm tra,bảo trì,cải tiến
Phân tích yêu cầu,thiết kế (CSDL,giao diện phần mềm…),kiểm thử phần mềm,phát hành phần mềm và bảo trì,quản lý dự án phần mềm và tổng kết
Phần III: Tiến hành kiểm thử phần mềm qua nhiều hình thức
Phần IV: Phát hành phần mềm lên môi trường máy ảo và tiến hành bảo trì.
Phần V: Quản lý phiên bản phần mềm qua Git và tổng kết dự án.
Ứng dụng sau khi được hoàn thành sẽ giúp người dùng dễ dàng tiếp cận các địa điểm du lịch nổi tiếng cũng như có được các nơi nghĩ dưỡng sang trọng đáp ứng nhu cầu của người dùng hiện nay.
Trang 8CHƯƠNG 2 KIẾN THỨC CƠ SỞ
2.1 Khái niệm cơ chế hoạt động
2.1.1 Tổng quan về ngôn ngữ và công nghệ sử dụng (Dart – flutter - firebase)
Dart là ngôn ngữ lập trình được tối ưu hóa cho các ứng dụng đa nền tảng Nó được phát triển bởi Google và được sử dụng để tạo các ứng dụng di động, máy tính
để bàn, máy chủ và web Dart là ngôn ngữ thu thập rác hướng đối tượng với cú pháp giống C++.
Biên dịch sang JavaScript
Để hoạt động trong các trình duyệt web phổ biến , Dart dựa vào trình biên dịch nguồn trong JavaScript Theo trang web của dự án, Dart "được thiết kế để trở thành một công cụ phát triển dễ viết, rất phù hợp với việc phát triển ứng dụng hiện đại và có khả năng triển khai hiệu suất cao" Khi mã Dart được chạy trong trình duyệt web, mã sẽ được biên dịch trước thành JavaScript bằng trình biên dịch Dart2js Được biên dịch bằng JavaScript, mã Dart tương thích với các trình duyệt chính mà không cần chúng hỗ trợ trực tiếp cho Dart Bằng cách tối ưu hóa JavaScript được biên dịch để tránh các thao tác
nguồn-và kiểm tra tốn kém, trong một số trường hợp, mã được viết bằng Dart có thể chạy nhanh hơn mã JavaScript viết tay tương đương
Tự trị
SDK Dart đi kèm với một máy ảo Dart (VM) độc lập, cho phép mã Dart chạy trong môi trường giao diện dòng lệnh Vì các công cụ ngôn ngữ có trong Dart SDK chủ yếu được viết bằng Dart nên Dart VM là một phần thiết yếu của SDK Những công cụ này bao gồm trình biên dịch Dart2js và trình quản lý gói có tên Pub Dart đi kèm với một thư viện tiêu chuẩn toàn diện cho phép người dùng viết các ứng dụng hệ thống có đầy đủ chức năng, chẳng hạn như máy chủ web tùy chỉnh
Biên soạn sớm
Trang 9Mã phi tiêu có thể được biên dịch thành AOT thành mã máy ( bộ hướng dẫn gốc ).Các ứng dụng được xây dựng bằng Flutter , SDK ứng dụng di động được xây dựng bằng Dart, được triển khai tới các cửa hàng ứng dụng dưới dạng mã Dart được biên dịch trong AOT.
Trang 10Firebase là dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây – cloud Kèm
theo đó là hệ thống máy chủ cực kỳ mạnh mẽ của Google Chức năng chính là giúpngười dùng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu
Cụ thể là những giao diện lập trình ứng dụng API đơn giản Mục đích nhằm tăng
số lượng người dùng và thu lại nhiều lợi nhuận hơn
Đặc biệt, còn là dịch vụ đa năng và bảo mật cực tốt Firebase hỗ trợ cả hai nềntảng Android và IOS Không có gì khó hiểu khi nhiều lập trình viên chọn Firebase làmnền tảng đầu tiên để xây dựng ứng dụng cho hàng triệu người dùng trên toàn thế giới
2.1.1.1 Dịch vụ Authentication
Dịch vụ Authentication cung cấp cho ứng dụng của bạn một số phương pháp xácthực thông qua email, mật khẩu, số điện thoải, tài khoản Google, tài khoản Facebook…Với tính năng này, người dùng sẽ dễ dàng xây dựng login mà không cần sử dụng dữliệu đăng ký riêng
2.1.1.2 Dịch vụ Firestore Database
Firestore là cơ sở dữ liệu NoSQL được phát triển bởi Google Firebase, cung cấp giải
pháp lưu trữ và quản lý dữ liệu linh hoạt, mở rộng cho các ứng dụng web và di động
Trang 11Nó được thiết kế để đáp ứng nhu cầu ngày càng tăng của các ứng dụng hiện đại, đòihỏi khả năng truy cập dữ liệu nhanh chóng, hiệu quả và đồng bộ hóa thời gian thựctrên nhiều thiết bị.
2.1.1.3 Firebase Cloud Storage
Lưu trữ đám mây của Firebase cung cấp bộ nhớ đám mây an toàn, có thể mở rộng,dùng để lưu trữ và phân phát nội dung do người dùng tạo, chẳng hạn như hình ảnh,video và các tệp khác
Nó cung cấp các API đơn giản để tải lên, tải xuống và quản lý tệp, cùng với quyềnkiểm soát truy cập cụ thể
Ở đây em đã sử dụng dịch vụ Clound Storage để lưu trữ hình ảnh
2.1.1.4 Cách kết nối firebase với dự án
Bước 1: Cài đặt các công cụ dòng lệnh bắt buộc
1 Cài đặt Firebase CLI nếu bạn chưa cài đặt
2 Đăng nhập vào Firebase bằng Tài khoản Google của bạn bằng cách chạy lệnh sau:
3 Cài đặt FlutterFire CLI bằng cách chạy lệnh sau từ bất kỳ thư mục nào:
Bước 2: Định cấu hình ứng dụng để sử dụng Firebase
Sử dụng FlutterFire CLI để định cấu hình cho các ứng dụng Flutter của bạn nhằm kết nối với Firebase
Trong thư mục dự án Flutter, hãy chạy lệnh sau để bắt đầu quy trình định cấu hình ứng dụng:
Trang 12Bước 3: Khởi chạy Firebase trong ứng dụng của bạn
1 Trong thư mục dự án Flutter, hãy chạy lệnh sau để cài đặt trình bổ trợ cốt lõi:
Trong thư mục dự án Flutter, hãy chạy lệnh sau để đảm bảo rằng cấu hình Firebase của ứng dụng Flutter
Trang 13Dịch vụ sẵn có
2.2 Nhóm chức năng chính
Đăng ký tài khoản (Google,gmail-password)
Khôi phục tài khoảng qua gmail
Đăng nhập ứng dụng
Lọc sản phẩm(theo tỉnh thành,địa danh)
Xem các khách sạn được gợi ý xung quanh điểm du lịch lịch
Tìm kiếm địa danh,khách sạn theo tên
Xem các địa danh thông qua hình ảnh và mô tả
Đặt khách sạn,vé tham quan
Thêm khách sạn hoặc địa danh vào phần yêu thích
Xem được google map ngay trên ứng dụng
Xem trạng thái đặt phòng,lịch sử đặt
Thay đổi giao diện sáng tối,ngôn ngữ VN-EN
Thanh toán online
Trang 142.3 Mô hình sử dụng của hệ thống
2.3.1 Mô hình MVVM
● Mô hình MVVM (Model-View-ViewModel) là một mô hình thiết kế phần mềm được
sử dụng trong lập trình ứng dụng di động, bao gồm cả Flutter
● Mô hình này giúp tách biệt logic xử lý dữ liệu (Model) và giao diện người dùng
(View),đồng thời sử dụng một lớp trung gian gọi là ViewModel để kết nối giữa Model và View
● Trong mô hình MVVM, Model đại diện cho dữ liệu và logic xử lý dữ liệu Nó có thể làmột lớp đơn giản hoặc một tập hợp các lớp phức tạp, tùy thuộc vào yêu cầu của ứngdụng Model không biết gì về View hoặc ViewModel, và nó không trực tiếp tương tácvới người dùng
● View là giao diện người dùng, nơi người dùng tương tác với ứng dụng Trong Flutter,View có thể là một widget hoặc một tập hợp các widget View chỉ biết về ViewModel vàkhông biết gì về Model Nó chỉ hiển thị dữ liệu từ ViewModel và gửi các sự kiện tớiViewModel khi người dùng tương tác
● ViewModel là lớp trung gian giữa Model và View Nó chịu trách nhiệm lấy dữ liệu từModel và cung cấp cho View hiển thị ViewModel cũng xử lý các sự kiện từ View và cậpnhật Model nếu cần ViewModel không biết gì về View cụ thể
2.3.2 Ưu điểm của MVVM
Trang 151 Tách biệt giữa logic và giao diệnn gười dùng
MVVM giúp tách biệt rõ ràng giữa logic ứng dụng và giao diện người dùng
ViewModel chịu trách nhiệm xử lý logic và cung cấp dữ liệu cho View, trong khi View chỉ đơn giản là hiển thị dữ liệu và gửi các sự kiện tới ViewModel
4 Dễ dàng bảo trì
Với MVVM, việc bảo trì ứng dụng trở nên dễ dàng hơn Việc tách biệt rõ ràng giữa logic và giao diện người dùng giúp giảm thiểu rủi ro gây ảnh hưởng đến các phần khác nhau của ứng dụng khi thay đổi
2.3.3 Mô hình MVVM + Repository
2.4 Các yêu cầu phi chức năng
Trang 16STT Nội dung Tiêu chuẩn Mô tả chi tiết Ghi chú
các chức năng trong hệ thống cho người đăng nhập theo chức vụ
Dành cho khách hàng
tra cứu nhanh chóng tức thì,dễ dàng tìm kiếm,tra cứu
Dành cho khách hàng
cần thì hệ thống phải xuất dữ liệu ra thật nhanh
Tự động lưu vào CSDL
4 Giao diện trực quan
dễ sử dụng
Tiện dụng Hệ thống với
giao diện dễ
sử dụng,không quá chi tiết cũng như quá tổng quát,gần gũi với người dùng
Dành cho khách hàng
5 Quản lý đặt phòng vé Hiệu quả Cho phép tra
cứu các lần đặt trước
đó ,điều chỉnh dịch vụ tức thời trong hệ thống
Cho phép hủy vé,cập nhập lại vé
…
Trang 17Yêu cầu hệ thống
- Hệ thống sử dụng hệ quản trị cơ sở dữ liệu lớn để đáp ứng lượng khách hàng mới
- Bảo mật tốt cho người quản trị hệ thống
- Thông tin có tính đồng bộ
- Có khả năng tính toán nhanh,chính xác,lữu trữ dài và bảo mật
2.5 Sơ đồ use case
2.5.1 Usecase Tổng Quát
- Tên usecase: usecase tổng quát.
- Actor: người dùng,người dùng đã đăng nhập.
- Chức năng: Đăng nhập, Đăng ký,đặt phòng,vé,quản lý vé,thanh toán
Mô tả:
- người dùng và người dùng đã đăng nhập có thể dùng các chức năng theo sơ
đồ
2.5.2 Usecase đăng nhập
Trang 18- Tên usecase: usecase đăng nhập
- Nếu người dùng chưa có tài khoản có thể đăng ký
2.5.3 Usecase người dùng
Trang 19- Tên usecase: use case khách hàng
2.6 Mô hình lớp Sequence diagram
2.6.1 Mô hình Sequence diagram Thanh toán
Trang 202.7 Bảng dữ liệu
2.7.1 Mô hình các bảng dữ liệu theo dạng NoSQL
Trang 212.8 Chi tiết các Collection
Trang 25CHƯƠNG 3 KẾT QUẢ THỰC NGHIỆM
3.1 Giao diện icon trên thiết bị di động
Mô tả:
- ảnh icon và tên của ứng dụng hiển thị trên màn hình mobile
Trang 263.2 Giao diện màn hình đăng nhập
Mô tả:
- Hiển thị các yêu cầu ràng buộc và các lựa chọn
Trang 273.3 Giao diện màn hình đăng ký
Mô tả:
- Giao diện hiển thị các trường để người dùng nhập thông tin để đăng ký tài khoản
- Người dùng nhập tên , email và mật khẩu sau đó chọn đồng ý và nhấp vào button Sign up ( đăng ký)