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

Phát Triển Ứng Dụng Đặt Phòng Dịch Vụ Du Lịch Homestay Trên Nền Tảng Android (Luận Văn Thạc Sĩ)

66 2 0

Đ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 đề Phát Triển Ứng Dụng Đặt Phòng Dịch Vụ Du Lịch Homestay Trên Nền Tảng Android (Luận Văn Thạc Sĩ)
Tác giả Bùi Văn Phúc
Người hướng dẫn ThS. Nguyễn Văn Phác
Trường học Học viện Kỹ thuật Mật mã
Chuyên ngành Công nghệ Thông tin
Thể loại Đề án tốt nghiệp
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 66
Dung lượng 1,33 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1. PHÂN TÍCH YÊU CẦU HỆ THỐNG (8)
    • 1.1 Tổng quan hệ thống đặt phòng dịch vụ du lịch HomeStay (8)
      • 1.1.1 Đặt vấn đề (8)
      • 1.1.2 Mô hình triển khai hệ thống (9)
    • 1.2 Yêu cầu hệ thống (10)
      • 1.2.1 Yêu cầu chức năng (10)
      • 1.2.2 Yêu cầu phi chức năng (11)
    • 1.3 Các công nghệ và công cụ sử dụng (11)
      • 1.3.1 Hệ điều hành Android (11)
      • 1.3.2 Ngôn ngữ Kotlin (13)
      • 1.3.3 Dịch vụ Firebase (17)
      • 1.3.4 Một số thư viện sử dụng (20)
  • CHƯƠNG 2: PHÂN TÍCH, THIẾT KẾ HỆ THỐNG (23)
    • 2.1 Biểu đồ Use case (23)
      • 2.1.1 Biểu đồ Use case tổng quát (23)
      • 2.1.2 Phân rã biểu đồ use case (26)
    • 2.2 Các biểu đồ tuần tự (28)
    • 2.3 Thiết kế cơ sở dữ liệu (30)
      • 2.3.1 Realtime Database HomeStay (30)
      • 2.3.2 Lưu trữ ảnh Storage của HomeStay (38)
      • 2.3.3 Xác thực Authentication (38)
      • 2.3.4 Push notification FCM (39)
  • CHƯƠNG 3: TRIỂN KHAI HỆ THỐNG (40)
    • 3.1 Quá trình triển khai hệ thống (40)
      • 3.1.1 Tiến hành xây dựng ứng dụng trên nền tảng di động (Android) (40)
      • 3.1.2 Tích hợp các giải pháp an toàn vào ứng dụng (48)
      • 3.2.1 Giao diện màn hình đăng nhập (52)
      • 3.2.2 Giao diện màn hình đăng kí (53)
      • 3.2.3 Màn hình home của tài khoản khách du lịch (54)
      • 3.2.4 Giao diện màn hình danh sách phòng (55)
      • 3.2.5 Giao diện danh sách địa điểm du lịch (56)
      • 3.2.6 Giao diện bình luận phòng (57)
      • 3.2.7 Giao diện chức năng đặt phòng (58)
      • 3.2.8 Giao diện chức năng thêm phòng (59)
      • 3.2.9 Giao diện chức năng sửa phòng (60)
      • 3.2.10 Nhận thông báo (61)
      • 3.2.11 Giao diện màn hình google map (61)
      • 3.2.12 Giao diện màn hình thời tiết (62)
      • 3.2.13 Hình ảnh giao diện tài khoản cá nhân (64)
  • Kết luận (65)
  • TÀI LIỆU THAM KHẢO (66)

Nội dung

Phát Triển Ứng Dụng Đặt Phòng Dịch Vụ Du Lịch Homestay Trên Nền Tảng Android (Luận Văn Thạc Sĩ) CHƯƠNG 1. PHÂN TÍCH YÊU CẦU HỆ THỐNG 1 1.1 Tổng quan hệ thống đặt phòng dịch vụ du lịch HomeStay 1 1.1.1 Đặt vấn đề 1 1.1.2 Mô hình triển khai hệ thống 2 1.2 Yêu cầu hệ thống 3 1.2.1 Yêu cầu chức năng 3 1.2.2 Yêu cầu phi chức năng 4 1.3 Các công nghệ và công cụ sử dụng 4 1.3.1 Hệ điều hành Android 4 1.3.2 Ngôn ngữ Kotlin 6 1.3.3 Dịch vụ Firebase 10 1.3.4 Một số thư viện sử dụng 13 CHƯƠNG 2: PHÂN TÍCH, THIẾT KẾ HỆ THỐNG 16 2.1 Biểu đồ Use case 16 2.1.1 Biểu đồ Use case tổng quát 16 2.1.2 Phân rã biểu đồ use case 19 2.2 Các biểu đồ tuần tự 21 2.3 Thiết kế cơ sở dữ liệu 23 2.3.1 Realtime Database HomeStay 23 2.3.2 Lưu trữ ảnh Storage của HomeStay 31 2.3.3 Xác thực Authentication 31 2.3.4 Push notification FCM 32 CHƯƠNG 3: TRIỂN KHAI HỆ THỐNG 33 3.1 Quá trình triển khai hệ thống 33 3.1.1 Tiến hành xây dựng ứng dụng trên nền tảng di động (Android) 33 3.1.2 Tích hợp các giải pháp an toàn vào ứng dụng 41 3.2 Giới thiệu một số giao diện của hệ thống 45 3.2.1 Giao diện màn hình đăng nhập 45 3.2.2 Giao diện màn hình đăng kí 46 3.2.3 Màn hình home của tài khoản khách du lịch 47 3.2.4 Giao diện màn hình danh sách phòng 48 3.2.5 Giao diện danh sách địa điểm du lịch 49 3.2.6 Giao diện bình luận phòng 50 3.2.7 Giao diện chức năng đặt phòng 51 3.2.8 Giao diện chức năng thêm phòng 52 3.2.9 Giao diện chức năng sửa phòng 53 3.2.10 Nhận thông báo 54 3.2.11 Giao diện màn hình google map 54 3.2.12 Giao diện màn hình thời tiết 55 3.2.13 Hình ảnh giao diện tài khoản cá nhân 57 Ngày nay với sự bùng nổ mạnh mẽ của ngành công nghệ thông tin, chúng ta không còn xa lạ với những chiếc điện thoại thông minh và việc sử dụng phần mềm để tìm kiếm địa điểm du lịch và book phòng khá dễ dàng. Thay vì chúng ta phải đến tận nơi để xem địa điểm ở đâu, tìm phòng nghỉ ở đâu thì ứng dụng đã đáp ứng cho khách du lịch chỉ với một vài thao tác click. Lý do chọn đề tài: - Mong muốn việc xây dựng một ứng dụng phù hợp với thời đại công nghệ thông tin đang ngày càng phát triển để giúp người dùng giảm bớt thời gian và tiếp cận xu thế của hiện tại cũng như tương lai qua internet. Mục đích: - Đáp ứng cho nhu cầu đi du lịch, nghỉ dưỡng. Phạm vi nghiên cứu: - Các ứng dụng trên cửa hàng ứng dụng Android CH Play. Ý nghĩa khoa học: - Thấy được cái nhìn tổng quan về quy trình xây dựng ứng dụng trên nền tảng Android, thiết kế giao diện, phân tích và thiết kế hệ thống, sử dụng Firebase Ý nghĩa thực tiễn: - Thúc đẩy sự phát triển sử dụng công nghệ cho phù hợp với thời đại công nghệ thông tin đang ngày càng phát triển.

PHÂN TÍCH YÊU CẦU HỆ THỐNG

Tổng quan hệ thống đặt phòng dịch vụ du lịch HomeStay

Hiện nay, công nghệ tiên tiến đang phát triển mạnh mẽ và được ứng dụng rộng rãi trong mọi lĩnh vực kinh tế, chính trị, xã hội và đời sống hàng ngày Ứng dụng công nghệ thông tin và tin học hóa là yếu tố quyết định trong hoạt động của quốc gia và tổ chức, giúp công việc được thực hiện nhanh chóng, chính xác và đạt hiệu quả cao hơn.

Kinh tế phát triển kéo theo nhu cầu du lịch tăng cao, với mong muốn khám phá và nghỉ dưỡng ngày càng lớn Sự bùng nổ công nghệ thông tin đã thay đổi cách thức tìm kiếm địa điểm du lịch Thay vì phải hỏi bạn bè hay người thân, du khách hiện nay có thể gặp khó khăn trong việc tìm chỗ ở do cuộc sống bận rộn và thiếu thời gian Điều này dẫn đến rủi ro như hết phòng khi đến nơi, ảnh hưởng đến kế hoạch du lịch của khách.

Cùng với sự gia tăng lượng khách du lịch, nhu cầu thuê phòng trọ và nhà nghỉ cũng tăng cao Việc chờ đợi khách tìm đến để đặt phòng không chỉ lãng phí thời gian mà còn tạo ra rủi ro cạnh tranh tiêu cực giữa các chủ nhà.

Việc phát triển ứng dụng đặt dịch vụ du lịch trên thiết bị di động sẽ giúp khách du lịch và chủ cho thuê phòng tiết kiệm thời gian và công sức trong việc đặt chỗ Khách hàng có thể dễ dàng lựa chọn địa điểm du lịch gần gũi và tiến hành đặt phòng với chủ nhà, trong khi chủ nhà cũng thuận tiện cập nhật thông tin phòng cho khách Do đó, tôi đã quyết định chọn đề tài: ‘Phát triển ứng dụng đặt phòng dịch vụ du lịch Homestay trên nền tảng Android’.

1.1.2 Mô hình triển khai hệ thống

Hệ thống sẽ bao gồm 2 phần dành cho Client (gọi là app HomeStay) và Admin (gọi là app Admin)

Trong app HomeStay sẽ tiếp tục phân quyền dành cho “khách du lịch” và

+ Đăng ký và xác minh bằng email

+ Chức năng chỉnh sửa thông tin cá nhân, quên mật khẩu, đổi mật khẩu

+ Xem danh sách điểm du lịch nổi tiếng của các tỉnh trên cả nước + Tìm kiếm địa điểm du lịch cần đến theo mong muốn

+ Xem thông tin tất cả Homestay, tình trạng của phòng

+ Xem chi tiết các địa điểm du lịch đồng thời có thể tìm kiếm

+ Homestay gần đó để book phòng cho chuyến du lịch đó

+ Tìm kiếm địa chỉ HomeStay cần đến

+ Quản lý các phòng mình đã book, xem chi tiết phòng, xem được chi tiết chủ phòng cho thuê

+ Xem bản đồ, thời tiết để đảm bảo an toàn cho khách có chuyến đi an toàn

+ Xem các đánh giá của phòng, đồng thời có thể tự comment đánh giá trên phòng đó

+ Xem được chi tiết chủ cho thuê đảm bảo tính chính xác

+ Đăng ký và xác minh bằng email

+ Chức năng chỉnh sửa thông tin cá nhân, quên mật khẩu, đổi mật khẩu

+ Chức năng chính là tạo phòng, thêm, sửa, xóa phòng, cập nhật tình trạng khách book phòng và khi trả phòng

+ Quản lý các phòng của mình, xem thông tin khách hàng đặt phòng để dễ liên hệ

+ Chức năng report khi khách hàng đặt phòng và không nhận hoặc lí do khác

+ Xem đánh giá của khách hàng về phòng của mình để cải thiện dịch vụ

+ Đăng kí và xác minh bằng email

+ Quản lý tài khoản của chủ nhà và khách đặt phòng

+ Chức năng block tài khoản khi bị report quá nhiều, mở tài khoản khi có phản hồi

+ Xem các đánh giá của khách hàng để đưa ra quyết định block chính xác.

Yêu cầu hệ thống

- Đối với khách du lịch

Khách hàng đăng nhập vào app sẽ sử dụng các chức năng như sau: + Tìm kiếm địa điểm du lịch muốn đi

+ Tìm kiếm phòng muốn đặt

+ Tiến hành đặt phòng, hủy phòng, bình luận về phòng

- Đối với chủ nhà có phòng cho thuê

Chủ nhà sẽ đăng nhập vào app sẽ sử dụng những chức năng như sau: + Đăng phòng của chủ nhà cho khách hàng thấy

+ Quản lý phòng của mình theo tình trạng đặt phòng

+ Đánh giá khách hàng sử dụng phòng với hệ thống

Admin sẽ đăng nhập vào app và sử dụng những chức năng như sau:

- Xem danh sách user bao gồm tất cả khách du lịch và chủ nhà

- Xem đánh giá của từng tài khoản khi sử dụng dịch vụ

- Block tài khoản nếu vi phạm nội quy, quy định hoặc do bị phản ánh quá nhiều

- Mở khóa cho tài khoản khi nhận được phản hồi từ người dùng

1.2.2 Yêu cầu phi chức năng

Dành cho cả app HomeStay và Admin

- Là ứng dụng di động chạy trên nền tảng Android

- Yêu cầu về sản phẩm: Sử dụng được từ Android 7.0 trở lên

- Giao diện đơn giản, thân thiện, dễ sử dụng

- Có tính thực tiễn cao

- Không để lộ thông tin người dùng

Các công nghệ và công cụ sử dụng

Android là hệ điều hành dựa trên Linux, được thiết kế cho thiết bị di động màn hình cảm ứng như smartphone và tablet Phát triển ban đầu bởi Tổng công ty Android với sự hỗ trợ tài chính từ Google, hệ điều hành này đã được Google mua lại vào năm 2005 Android chính thức ra mắt vào năm 2007, cùng với việc thành lập Liên minh thiết bị cầm tay mở, nhằm thúc đẩy các tiêu chuẩn mở cho thiết bị di động.

Giao diện người dùng của Android sử dụng nguyên tắc tác động trực tiếp với cảm ứng chạm, cho phép người dùng thực hiện các động tác như vuốt, chạm, kéo giãn và thu lại để tương tác với màn hình Các thiết bị Android tích hợp cảm biến như gia tốc kế và con quay hồi chuyển, giúp điều chỉnh màn hình và hỗ trợ các trò chơi như lái xe đua Màn hình chính hiển thị thông tin quan trọng và có thể tùy chỉnh cao, với nhiều biểu tượng và tiện ích hiển thị nội dung sống động như dự báo thời tiết và tin tức Người dùng có thể thay đổi "chủ đề" màn hình chính thông qua các ứng dụng từ Google Play, và các nhà sản xuất thường điều chỉnh giao diện để phân biệt sản phẩm của họ Thanh trạng thái ở trên cùng màn hình cung cấp thông tin về thiết bị và tình trạng kết nối, có thể kéo xuống để xem thông báo mà không làm gián đoạn trải nghiệm Thông báo sẽ tồn tại cho đến khi người dùng đọc hoặc xóa chúng, mang lại sự tiện lợi trong việc quản lý thông tin.

Giao diện thân thiện và dễ sử dụng, cùng với khả năng tùy biến cao, cho phép bạn tự do chỉnh sửa mọi thứ trên hệ điều hành Android, ngoại trừ các phân vùng trong hệ thống.

Hệ điều hành Android rất phổ biến, hiện diện trên mọi loại thiết bị di động, từ điện thoại cao cấp và trung cấp đến các sản phẩm giá rẻ.

- Sử dụng nhiều ứng dụng cùng lúc, đa nhiệm cao

- Dễ bị nhiễm các phần mềm độc hại cùng các mã độc, do hệ điều hành Android cho phép bạn cài đặt các ứng dụng bên ngoài Google Play

- Quá nhiều ứng dụng trên Google Play dẫn đến kiểm soát chất lượng rất khó

- Sự phân mảnh lớn của hệ điều hành android

- Khả năng cập nhật hệ điều hành chậm chạp

- Thường xuyên bị đầy bộ nhớ đệm RAM

Android sử dụng kiến trúc ARM cho nền tảng phần cứng, nhưng các phiên bản sau này cũng hỗ trợ kiến trúc x86 và x86-64 Kể từ năm 2012, nhiều nhà sản xuất đã cho ra mắt điện thoại thông minh và máy tính bảng Android trang bị bộ vi xử lý Intel.

Yêu cầu phần cứng tối thiểu cho Android thay đổi tùy thuộc vào kích thước màn hình, loại và mật độ CPU của thiết bị Ban đầu, Google đã đặt ra yêu cầu với bộ xử lý 200MHz, 32MB bộ nhớ và 32MB RAM.

Để phát triển ứng dụng Android, bạn cần cài đặt phần mềm Android Studio và lập trình bằng một trong hai ngôn ngữ Java hoặc Kotlin.

1.3.2 Ngôn ngữ Kotlin a Giới thiệu ngôn ngữ Kotlin

Kotlin là ngôn ngữ lập trình tĩnh chạy trên máy ảo Java (JVM) và có khả năng biên dịch sang mã Java hoặc sử dụng cơ sở hạ tầng trình biên dịch LLVM Được phát triển bởi JetBrains, Kotlin có cú pháp không hoàn toàn tương thích với Java, nhưng thư viện chuẩn của nó được thiết kế để tương tác hiệu quả với mã Java, dựa vào các thư viện có sẵn như collections framework.

Kể từ phiên bản Android Studio 3.0 ra mắt vào tháng 10 năm 2017, Google đã chính thức hỗ trợ Kotlin cho lập trình ứng dụng Android, tích hợp trực tiếp vào gói cài đặt của IDE, thay thế cho trình biên dịch Java tiêu chuẩn Trình biên dịch Android Kotlin cho phép người dùng lựa chọn giữa mã bytecode tương thích với Java 6 hoặc Java 8.

Kotlin ban đầu là ngôn ngữ lập trình chạy trên máy ảo Java, tương tự như Java, Scala và Groovy Hiện nay, Kotlin đã phát triển thành một ngôn ngữ lập trình đa mục tiêu và đa nền tảng, cho phép phát triển ứng dụng trên Windows, Linux và có thể được sử dụng cho lập trình server (Kotlin for Server Side).

- Chương trình Server cho lại ứng dụng web truyền thống

- Web API backend cho ứng dụng mobile

- Microservice với RPC b Các đặc điểm của Kotlin và ưu điểm so với Java

Kotlin đã nới lỏng các giới hạn của Java, cho phép định nghĩa đối tượng và hàm tĩnh ở mức cao nhất của gói mà không cần lớp dư thừa Để đảm bảo tính tương thích với Java, Kotlin cung cấp chú thích JvmName, cho phép chỉ định tên lớp khi gói được truy cập từ dự án Java, ví dụ: @file:JvmName("JavaClassName").

Kotlin không chỉ có cú pháp ngắn gọn và súc tích hơn Java, mà còn sở hữu nhiều ưu điểm vượt trội như phương thức mở rộng, hàm lồng nhau, shell tương tác, và đặc biệt là tính an toàn giúp tránh lỗi NullPointerException kinh điển.

Kotlin cho phép lập trình viên mở rộng các phương thức vào bất kỳ lớp nào mà không cần tạo lớp dẫn xuất, tương tự như C# và Swift.

Hình 1.1: Hình ảnh ví dụ mã nguồn Kotlin

Bằng cách cài đặt mã ở cấp độ cao nhất của gói, lớp String được mở rộng để bổ sung phương thức lastChar, một phương thức không có trong định nghĩa ban đầu của lớp này.

Kotlin hỗ trợ việc định nghĩa các hàm cục bộ bên trong các hàm hoặc phương thức khác, được gọi là hàm lồng nhau.

Về cơ bản một ứng dụng Android sẽ được xây dựng dựa trên bốn thành phần chính đó là: Activity, Service, BroadCast Receiver và Content Provider

PHÂN TÍCH, THIẾT KẾ HỆ THỐNG

Biểu đồ Use case

2.1.1 Biểu đồ Use case tổng quát

Qua quá trình phân tích ở chương I chúng ta sẽ phân tích thiết kế hệ thống như sau:

2.1.1.1 Ứng dụng dành cho khách hàng - HomeStay

User bao gồm khách du lịch và chủ nhà

- Khách có nhu cầu đi du lịch, nghỉ dưỡng

- Chủ nhà có phòng cho thuê dịch vụ nghỉ dưỡng

* Các Use case chính gồm có:

- Quản lý tài khoản cá nhân của user

- Quản lý danh sách phòng đã book của khách

- Quản lý danh sách phòng đã thêm của chủ nhà

- Bình luận phòng của khách

- Report khách hàng của chủ nhà

- Xem thời tiết để lựa chọn phù hợp chuyển đi

- Xem bản đồ để lựa chuyến đi an toàn

Hình 2.1 Biểu đồ Use case tổng quát của ứng dụng khách hàng

2.1.1.2 Ứng dụng dành cho Admin - AdminHomeStay

* Actor gồm có: Admin là người quản trị của hệ thống HomeStay

- Quản lý tài khoản cá nhân Admin,

- Quản lý tài khoản user bao gồm tài khoản khách du lịch và tài khoản chủ nhà cho thuê dịch vụ

- Quản lý việc khóa tài khoản, mở tài khoản

- Cập nhật điểm du lịch cho hệ thống

Hình 2.2 Biểu đồ Use case tổng quát của ứng dụng Admin

2.1.2 Phân rã biểu đồ use case

2.1.2.1 Ứng dụng dành cho khách hàng - HomeStay a Khách đi du lịch

-Biểu đồ phân rã chức năng quản lý tài khoản

Hình 2.3 Biểu đồ phân rã use case quản lý tài khoản

-Biểu đồ phân rã chức năng quản lý book phòng

Hình 2.4 Biểu đồ phân rã use case quản lý book phòng c Chủ nhà

- Biểu đồ phân rã chức năng quản lý phòng

Hình 2.5 Biểu đồ phân rã use case quản lý phòng

2.1.2.2 Ứng dụng dành cho Admin

Biểu đồ phân rã chức năng quản lý tài khoản của Admin

Hình 2.6 Biểu đồ phân rã use case quản lý tài khoản của Admin

Các biểu đồ tuần tự

Hình 2.7: Biểu đồ tuần tự chức năng đăng nhập tài khoản

Hình 2.8: Biểu đồ tuần tự chức năng chỉnh sửa thông tin cá nhân

Hình 2.9: Biểu đồ tuần tự chức năng đánh giá

Thiết kế cơ sở dữ liệu

Firebase Realtime Database sử dụng mô hình Tree – NoSQL, do đó không có các ràng buộc phức tạp như khóa hay quan hệ giữa các bảng Tất cả dữ liệu trong Firebase đều được lưu trữ dưới dạng các đối tượng JSON, tạo thành một cây JSON (Json Tree) với các nút (Node) và nhánh (Branch) phân nhánh ra.

Hình 2.10 Sơ đồ hệ thống database của dự án 2.3.1 Realtime Database HomeStay a Admin: dành cho Admin quản lý hệ thống HomeStay bao gồm 2 node chính

Tài khoản là nơi lưu trữ tất cả thông tin của Admin, người có quyền kiểm soát người dùng, bao gồm khả năng chặn hoặc mở khóa tài khoản, cũng như cung cấp các địa điểm du lịch.

Khác với các người dùng thông thường, Admin không chỉ cần xác thực đăng ký qua email mà còn phải cung cấp một câu giới thiệu Nếu nhập sai câu giới thiệu này, quá trình đăng ký sẽ không thành công.

Hình 2.11 Hình ảnh chi tiết của Admin

- mail: Là nơi chứa email của Admin đăng kí

- phone: Là nơi chứa số điện thoại của Admin

- uid: Được xem như là 1 id của Admin (được sinh ra bởi Firebase và không thể trùng nhau)

- admin: Là câu giới thiệu để trở thành Admin của dự án b Client

Trong “Client” sẽ có 4 node chính :

Tài khoản trong hệ thống HomeStay sẽ bao gồm tất cả các tài khoản của người dùng, bao gồm cả khách du lịch và chủ nhà cung cấp dịch vụ cho thuê, như nhà nghỉ và biệt thự.

Hình 2.12 Chi tiết của Account

- mail: Là email khách hàng đăng kí để sử dụng dịch vụ HomeStay

- permission: Là quyền mà khách hàng được cung cấp khi đăng nhập vào app HomeStay

- phone: Là nơi chứa số điện thoại của User

- token: Là nơi chưa mã token của tài khoản đó, token được sử dụng để bắn notification

- uid: Được xem như là 1 id của User (được sinh ra bởi Firebase và không thể trùng nhau)

- userName: Là tên của User

Danh sách các bình luận của khách du lịch về những căn phòng đã trải nghiệm giúp chủ nhà cải thiện dịch vụ và cung cấp thông tin cho khách du lịch trong việc lựa chọn phòng để đặt.

Hình 2.13 Hình ảnh chi tiết Comment

- comment: Là bình luận phản hồi của khách hàng về dịch vụ

- idRoom: Là id của căn phòng mà họ comment

- nameClient: Là tên hiển thị dưới dạng ẩn danh của người bình

Báo cáo là nơi lưu trữ danh sách các báo cáo tiêu cực từ chủ nhà về việc khách hàng không tuân thủ nội quy dịch vụ hoặc đã đặt phòng nhưng không đến nhận phòng.

Hình 2.14 Hình ảnh chi tiết Report

- contentReport: Là nội dung mà chủ nhà phản hồi với hệ thống khi khách hàng sử dụng dịch vụ của họ

- idClient: Là id của người bị đánh giá phản hồi

- idHost: Là id của người đánh giá phản hồi

- “TravelList”: Là nơi chứa danh sách các địa điểm du lịch được Admin cập nhật để hiển thị cho người dùng

Hình 2.15 Hình chi tiết TravelList

- address: Là địa chỉ của điểm du lịch

- detail: Là mô tả chi tiết của địa điểm đó

- id: Chính là id của địa điểm du lịch

- img: Là đường link hiển thị ảnh của địa điểm đó c.Host:

Trong “Host” có 3 node chính:

- “ListProvinces” : Nơi chứa danh sách tất cả các Tỉnh thuộc của Việt Nam

Hình 2.16 Hình chi tiết ListProvinces

➔ “DetailProvince”: Nơi chứa danh sách tất cả các Huyện thuộc các tỉnh của Việt Nam

Hình 2.17 Hình chi tiết DetailProvinces

➔ “ListRoom”: Là nơi chứa danh sách tất cả các phòng của tài khoản chủ nhà thêm mới

Hình 2.18 Hình ảnh chi tiết ListRoom

- address: Là địa chỉ của phòng

- convenient: Là các tiện ích của phòng

- id: Là id của phòng (do Firebase tạo và không thể trùng với id khác)

- imgaRoom1: Link hình ảnh thứ nhất của phòng

- imgaRoom2: Link hình ảnh thứ hai của phòng

- introduce: Thêm dữ liệu mô tả cho phòng

- numberSleepRoom: Số lượng phòng ngủ

- price: Giá phòng/1 ngày đêm

- status: Trạng thái của phòng

- typeRoom: Kiểu phòng (Biệt Thự-Nhà Nghỉ-Nhà Riêng)

- uid: id của chủ nhà có căn phòng đó

2.3.2 Lưu trữ ảnh Storage của HomeStay

Dịch vụ lưu trữ ảnh của HomeStay, như được thể hiện trong Hình 2.19, là giải pháp mà Firebase cung cấp để lưu trữ tất cả hình ảnh của hệ thống, bao gồm ảnh phòng cho thuê và ảnh địa điểm du lịch.

Hình 2.20 minh họa lưu trữ tài khoản xác thực qua email, nơi chứa tất cả các tài khoản mà người dùng đã đăng ký Sau khi đăng ký, hệ thống sẽ gửi email xác thực, và người dùng cần xác thực qua email để có thể đăng nhập, nhằm ngăn chặn việc sử dụng email giả để tạo tài khoản ảo trên hệ thống.

2.3.4.1 Dịch vụ Cloud Messaging của Firebase

Hình 2.21 Hình ảnh dịch vụ Cloud Messaging Firebase

TRIỂN KHAI HỆ THỐNG

Quá trình triển khai hệ thống

3.1.1 Tiến hành xây dựng ứng dụng trên nền tảng di động (Android)

Cả 2 ứng dụng HomeStay và AdminHomeStay sẽ được triển khai mã nguồn bằng ngôn ngữ Kotlin và sử dụng IDE cho phát triển ứng dụng Android đó là Android Studio Ngoài ra 2 ứng dụng cũng sẽ được triển khai theo mô hình MVVM gồm các thành phần chính như: View, Model, ViewModel Bên cạnh đó còn có các thành phần như là Database, Utils, Remote, Serivce, CallBack … Trong đó ba thành phần chính là:

View là giao diện của ứng dụng, có nhiệm vụ hiển thị dữ liệu và nhận tương tác từ người dùng Nó chỉ tập trung vào việc tải dữ liệu mà không thực hiện các tác vụ logic tốn thời gian, nhằm tránh hiện tượng treo máy.

- Model: Là nơi chứa phương thức hoặc thuộc tính mô hình hoá các thành phần tham gia vào hệ thống gọi là các đối tượng

ViewModel là thành phần trung gian giữa View và Model, chịu trách nhiệm xử lý logic nghiệp vụ phức tạp và truyền tải thông tin từ Model đến View Một phần quan trọng trong MVVM là LiveData, lớp này sử dụng mô hình Observer để truyền tải thông điệp về dữ liệu Mô hình này bao gồm một Subject trung tâm và các Observers, khi có sự thay đổi trạng thái, Subject sẽ thông báo cho các Observers Trong MVVM, các ViewModel đóng vai trò là Subject, trong khi các thành phần như Service và Fragment là Observers Khi dữ liệu thay đổi, các Observers sẽ nhận thông báo qua phương thức onChanged(), giúp UI tự động cập nhật.

Để sử dụng dịch vụ Firebase, bạn cần có file “google-service.json”, được tạo khi thiết lập tài khoản Firebase và cấu hình cho dự án Nếu file này không được nhúng vào dự án, bạn sẽ không thể sử dụng dịch vụ Firebase, mặc dù đã tạo tài khoản trên https://console.firebase.google.com/.

Hình 3.2 File json được nhúng vào hệ thống 3.1.1.1 Ứng dụng dành cho Admin a Cấu trúc project

Hình 3.3 Hình ảnh cấu trúc project AdminHomeStay

Mỗi thư mục sẽ đại diện cho một thành phần cụ thể và quản lý các Class, Interface, File phù hợp với chức năng của nó Để đăng ký, người dùng cần cung cấp đầy đủ thông tin bao gồm email, mật khẩu, số điện thoại, và đặc biệt là phải nhập đúng câu giới thiệu để trở thành Admin.

Email phải hợp lệ và password phải lớn hơn 6 kí tự

Hình 3.4 Hình ảnh xây dựng giao diện đăng kí c Xây dựng chức năng đăng nhập

Người dùng muốn đăng nhập hệ thống sẽ phải nhập đầy đủ email và password để hệ thống kiểm tra tài khoản ở trạng thái hợp lệ hay không

Nếu hợp lệ cho phép đăng nhập còn không sẽ thông báo lỗi d.Xây dựng chức năng block

Khi quản trị viên muốn chặn tài khoản, họ sẽ sử dụng idClient, tức là id của tài khoản cần chặn, và thực hiện thao tác chặn Kết quả sẽ thông báo cho người dùng biết liệu việc chặn có thành công hay không Ngoài ra, cần xây dựng chức năng để mở chặn tài khoản.

Khi tài khoản bị khóa, người dùng cần liên hệ với Admin để biết lý do cụ thể Admin sẽ xem xét lý do này để quyết định có mở khóa tài khoản hay không Đồng thời, cần xây dựng chức năng thêm địa điểm du lịch.

Admin sẽ cung cấp các thông tin address, detail, id, img và tiến hành thêm vào hệ thống

3.2.1.2 Ứng dụng dành cho khách hàng a Cấu trúc project

Hình 3.5 Hình ảnh cấu trúc project của app HomeStay

-all_login: Chứa các file xử lí về chức năng đăng kí chung cho cả khách du lịch và chủ nhà

-client: Thư mục này chứa các file và thư mục con để xử lí riêng về phần các tài khoản khách du lịch

-host: Thư mục này chứa các file và thư mục con để xử lí riêng về phần các tài khoản chủ nhà b Xây dựng chức năng đăng kí

Để đăng ký trở thành Client, người dùng chỉ cần cung cấp đầy đủ thông tin bao gồm userName, email, uid, số điện thoại và quyền truy cập Sau khi hoàn tất, quá trình đăng ký sẽ được tiến hành để tham gia vào hệ thống.

Email phải hợp lệ, mật khẩu lớn hơn 6 kí tự c Xây dựng chức năng đăng nhập

Người dùng muốn đăng nhập hệ thống sẽ phải nhập đầy đủ email và password để hệ thống kiểm tra tài khoản ở trạng thái hợp lệ hay không

Nếu hợp lệ cho phép đăng nhập còn không sẽ thông báo lỗi

➔ Phía chủ nhà a Xây dựng chức năng thêm phòng

Homeowners wishing to post a listing must provide complete information, including ID, address, room type, room name, square footage, number of sleeping arrangements, amenities, introduction, images (imageRoom1 and imageRoom2), status, price, and user ID Additionally, a feature to update the room status should be developed.

Khi khách hàng không đến nhận phòng đã đặt, hoặc chủ nhà không muốn cho khách hàng đó đặt phòng, trạng thái phòng sẽ được cập nhật thành “Còn Trống” Đồng thời, cần xây dựng chức năng báo cáo khách hàng để quản lý hiệu quả hơn.

Khi khách hàng vi phạm nội quy dịch vụ, không nhận phòng sau khi đã đặt, hoặc có hành vi vi phạm pháp luật Việt Nam, chủ nhà có quyền báo cáo cho Admin bằng cách nhập nội dung cần báo cáo và thực hiện quy trình báo cáo.

➔ Về phía khách du lịch a Xây dựng chức năng đặt phòng

Khi khách du lịch đặt phòng, họ sẽ cung cấp ID của mình và trạng thái của phòng được chọn sẽ ngay lập tức chuyển thành “Đã Đặt” Ngoài ra, cần xây dựng chức năng hủy phòng để đáp ứng nhu cầu của khách hàng.

Khách hàng có thể hủy phòng đã đặt bằng cách xóa ID của mình trong hệ thống và cập nhật lại trạng thái phòng Đồng thời, cần xây dựng chức năng bình luận để cải thiện trải nghiệm người dùng.

Khách hàng sẽ nhập nội dung cần bình luận, không được để rỗng và tiến hành bình luận d Xây dựng chức năng push notification(FCM)

Hình 3.6 Hình ảnh chức năng push notification

3.1.2 Tích hợp các giải pháp an toàn vào ứng dụng

Hình 3.7 Hình ảnh ví dụ minh họa về mã hóa thông tin 3.1.2.1 Xây dựng mã hóa password

MD5 được sử dụng để tạo chuỗi hash cho việc mã hóa password, là một phương pháp mã hóa một chiều, nghĩa là chỉ có thể mã hóa mà không thể giải mã Phương pháp này vẫn được coi là an toàn trên toàn cầu, giúp ngăn chặn hacker chiếm đoạt tài khoản bằng cách giải mã.

Mật khẩu người dùng nên được lưu trữ dưới dạng chuỗi hash, và chuỗi hash này được sử dụng làm "mật khẩu" đăng nhập trên server Khi người dùng đăng nhập, mật khẩu họ nhập sẽ được mã hóa thành chuỗi hash và so sánh với chuỗi hash trong cơ sở dữ liệu của server Ngay cả khi hacker truy cập được cơ sở dữ liệu, họ cũng không thể giải mã chuỗi hash để tìm ra mật khẩu Các hàm băm khác nhau tạo ra các kết quả đầu ra có kích thước khác nhau, nhưng kích thước của các kết quả này luôn cố định Chẳng hạn, thuật toán SHA-256 tạo ra kết quả 256 bit, trong khi SHA-1 tạo ra kết quả 160 bit Hiện nay, chỉ có các nhóm SHA-2 và SHA-3 được coi là các hàm băm bảo mật.

3.1.2.2 Xây dựng mã hóa và giải mã key weather

Hình 3.9 Hình ảnh mã hóa key

Hình 3.10 Hình ảnh giải mã key để sử dụng

Ngày đăng: 24/06/2023, 15:33

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w