Bối cảnh và vấn đề nghiên cứu

Đồ án tốt nghiệp kỹ sư ngành Công nghệ Thông tin (chuyên ngành Công nghệ Phần mềm) với đề tài "Xây dựng app tìm kiếm và đặt phòng trọ" do sinh viên Nguyễn Tuấn Kiệt (MSSV: 16110367) và Lê Thị Thuỳ Trang (MSSV: 16110488) thực hiện dưới sự hướng dẫn của ThS. Mai Tuấn Khôi tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (bảo vệ vào tháng 07/2020, mã số lưu trữ SKL007089).

Về bối cảnh thực tiễn, việc tìm kiếm phòng trọ là nhu cầu thiết yếu đối với người lao động và đặc biệt là sinh viên xa quê lên thành phố học tập. Thực tế ghi nhận vào mỗi mùa nhập học, tình trạng các chủ phòng trọ nâng giá thuê, gây khó khăn cho người thuê trọ diễn ra phổ biến. Việc tìm được một địa điểm lưu trú phù hợp với điều kiện kinh tế, đảm bảo tiện nghi và yêu cầu cá nhân là bài toán nan giải. Xuất phát từ trải nghiệm thực tế của sinh viên, nhóm tác giả định hướng xây dựng ứng dụng di động nhằm hỗ trợ giải quyết nhu cầu tìm kiếm và quản lý thông tin nhà trọ.

Mục tiêu nghiên cứu của đề tài được phân định thành hai nhóm nhiệm vụ chính:

  1. Về mặt lý thuyết:

    • Nghiên cứu môi trường phát triển Android Studio và ngôn ngữ lập trình Java.
    • Tìm hiểu hệ thống cơ sở dữ liệu Firebase Realtime Database phục vụ lưu trữ và đồng bộ dữ liệu.
    • Khai thác các giao diện lập trình ứng dụng bản đồ gồm Google Maps API và Google Directions API (Google Direct).
    • Nghiên cứu giải pháp truy vấn không gian thông qua Geofire.
    • Khảo sát hiện trạng các ứng dụng tìm phòng trọ hiện có trên thị trường để phân tích ưu, nhược điểm và xác định bộ tiêu chí phát triển.
  2. Về mặt thực hành và phát triển hệ thống:

    • Xây dựng ứng dụng chạy trên hệ điều hành Android đáp ứng các trường hợp sử dụng (use case) theo từng nhóm người dùng.
    • Hiện thực hóa chức năng phía người dùng (User): đăng tin, sửa tin, xóa tin thuê trọ; tìm kiếm phòng qua bộ lọc (khu vực, mức giá, loại phòng); tìm kiếm theo vị trí và bán kính; lưu tin yêu thích; liên hệ trực tiếp qua cuộc gọi điện thoại; chỉ dẫn đường đi tới phòng trọ.
    • Hiện thực hóa chức năng phía quản trị viên (Admin): nhận thông báo khi có tin đăng mới, kiểm duyệt tin (phê duyệt hoặc từ chối), quản lý và thống kê danh sách phòng trọ.

Về đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Quy trình quản lý, tìm kiếm, đăng tin phòng trọ và giải pháp xây dựng phần mềm ứng dụng di động trên nền tảng Android.
  • Phạm vi không gian và công nghệ: Ứng dụng di động cài đặt trên hệ điều hành Android, sử dụng hệ thống máy chủ cơ sở dữ liệu phân tán đám mây Firebase.
  • Phạm vi thời gian: Đồ án được thực hiện trong thời gian 15 tuần, từ ngày 30/03/2020 đến ngày 19/07/2020.

Cơ sở lý thuyết và phương pháp

Đồ án ứng dụng quy trình kỹ nghệ phần mềm để xây dựng hệ thống thông tin di động, kết hợp giữa phương pháp phân tích so sánh hiện trạng và mô hình hóa hệ thống hướng đối tượng.

Khung kỹ thuật và công nghệ được tác giả sử dụng bao gồm:

  • Ngôn ngữ lập trình và môi trường phát triển: Ngôn ngữ Java trên môi trường phát triển tích hợp (IDE) Android Studio.
  • Hệ quản trị cơ sở dữ liệu: Firebase Realtime Database (hệ cơ sở dữ liệu NoSQL hướng tài liệu JSON, cung cấp khả năng đồng bộ dữ liệu thời gian thực giữa ứng dụng và máy chủ).
  • Dịch vụ định vị và bản đồ:
    • Google Maps API: Hiển thị bản đồ, đánh dấu tọa độ vị trí các phòng trọ.
    • Google Directions API: Tính toán tuyến đường và vẽ lộ trình di chuyển từ vị trí hiện tại của người dùng đến phòng trọ.
    • Thư viện Geofire: Lưu trữ và truy vấn dữ liệu vị trí địa lý theo tọa độ (kinh độ, vĩ độ) để tìm kiếm các thực thể trong một bán kính xác định.
  • Bảo mật và xác thực:
    • Thuật toán băm MD5 áp dụng cho mã hóa mật khẩu tài khoản người dùng trước khi lưu trữ vào cơ sở dữ liệu.
    • Dịch vụ gửi mã xác thực SMS (SMS OTP) phục vụ quy trình đăng ký tài khoản và khôi phục mật khẩu.

Phương pháp nghiên cứu thực tế:

  • Phương pháp khảo sát hiện trạng: Phân tích trực tiếp 5 ứng dụng di động liên quan đang lưu hành (Ohana, NhaTro360, Phòng Trọ Giá Rẻ, Phòng Trọ, Tìm Nhà Trọ 24/7), so sánh giao diện và chức năng để đúc kết tiêu chí xây dựng.
  • Phương pháp mô hình hóa nghiệp vụ: Sử dụng biểu đồ ca sử dụng (Use Case Diagram), sơ đồ luồng dữ liệu (Data Flow Diagram - DFD), biểu đồ tuần tự (Sequence Diagram) và bảng mô tả đặc tả nghiệp vụ theo chuẩn công nghệ phần mềm.
  • Nguồn dữ liệu: Dữ liệu thử nghiệm phòng trọ, thông tin tài khoản và hình ảnh được thiết lập trực tiếp trên hệ thống Firebase Realtime Database.

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo cấu trúc phân quyền ba tác nhân độc lập: Khách vãng lai (Guest), Người dùng đã xác thực (User), và Quản trị viên hệ thống (Admin).

Tác nhân Số lượng nghiệp vụ Các nghiệp vụ then chốt
Guest 08 nghiệp vụ Đăng nhập (QD_G_Login), Đăng ký (QD_G_Register), Quên mật khẩu (QD_G_ForgetPass), Xem trang chủ (QD_G_ViewHome), Xem thông tin phòng (QD_G_ViewInfoHouse), Tìm kiếm (QD_G_SearchRoom), Chỉ đường (QD_G_Direct), Gọi điện (QD_G_Call).
User 13 nghiệp vụ Thừa kế các quyền xem/tìm kiếm của Guest; bổ sung: Đăng xuất (QD_U_Logout), Quản lý tin (QD_U_ManagePost), Đăng tin (QD_U_Post), Xoá tin (QD_U_DelPost), Sửa tin (QD_U_EditPost), Cập nhật thông tin cá nhân (QD_U_UpdateInfo), Bình luận tin (QD_U_CommentPost), Lưu tin yêu thích (QD_U_SavePost).
Admin 17 nghiệp vụ Thừa kế toàn bộ chức năng của User; bổ sung nghiệp vụ quản trị hệ thống: Thống kê phòng trọ (QD_A_Statistics), Nhận thông báo tin mới (QD_A_Notification), Quản trị tin (QD_A_AdministerPost), Phê duyệt tin (QD_A_ApprovePost), Từ chối tin (QD_A_DenyPost).

Thiết kế hướng đối tượng được thể hiện qua cấu trúc các lớp phần mềm trong chương trình:

  • Lớp MotelRoom: Chứa các thuộc tính định danh phòng, tiêu đề, giá phòng, diện tích, địa chỉ, loại phòng, số điện thoại liên hệ, mô tả chi tiết, danh sách hình ảnh, tọa độ kinh độ/vĩ độ và trạng thái kiểm duyệt; đi kèm các phương thức khởi tạo, lấy và gán giá trị thuộc tính.
  • Lớp Account: Định nghĩa thực thể tài khoản người dùng gồm mã ID, số điện thoại, mật khẩu (đã mã hóa), quyền hạn (User/Admin), họ tên, ảnh đại diện; cung cấp các phương thức thao tác dữ liệu người dùng.
  • Lớp Maps: Quản lý tích hợp Google Maps API, xử lý hiển thị bản đồ, tính toán khoảng cách và tương tác Geofire.
  • Lớp Imagess / Image: Quản lý danh sách hình ảnh đính kèm của mỗi bài đăng phòng trọ.
  • Lớp Guest và Admin: Hiện thực các phương thức xử lý nghiệp vụ tương ứng với từng vai trò.

Các thuật toán then chốt được hiện thực hóa trong mã nguồn:

  • Thuật toán tìm kiếm theo vị trí và bán kính: Kết hợp dữ liệu GPS của thiết bị di động với Geofire để truy vấn danh sách các phòng trọ có tọa độ nằm trong phạm vi bán kính lựa chọn.
  • Thuật toán tìm kiếm đa tiêu chí: Lọc dữ liệu trên Firebase theo mức giá, loại phòng và khu vực địa lý.
  • Thuật toán tạo chỉ dẫn đường đi: Nhận tọa độ gốc từ vị trí thiết bị và tọa độ đích từ dữ liệu phòng trọ, gửi yêu cầu tới Google Directions API để nhận tập hợp các điểm tọa độ trung gian (polyline) và vẽ lộ trình lên bản đồ.
  • Thuật toán xác thực qua SMS và mã hóa: Tạo mã xác thực ngẫu nhiên gửi tới số điện thoại người dùng thông qua dịch vụ SMS; xử lý chuỗi mật khẩu qua hàm băm MD5 trước khi ghi xuống cơ sở dữ liệu.

Nội dung chính theo từng chương

Bố cục khóa luận được cấu trúc thành 5 chương nội dung chính, phản ánh đầy đủ tiến trình phát triển một sản phẩm phần mềm từ khảo sát đến kiểm thử:

Chương 1: Khảo sát hiện trạng

Chương này tập trung khảo sát và đánh giá 5 ứng dụng tìm kiếm nhà trọ hiện có nhằm xác định ưu nhược điểm thực tế:

Tên ứng dụng Ưu điểm ghi nhận Nhược điểm tồn tại
Ohana Giao diện rõ ràng, đồng nhất; hỗ trợ chat trực tuyến; tốc độ xử lý nhanh; có chức năng tìm kiếm theo vị trí hiện tại. Bắt buộc đăng nhập mạng xã hội (Facebook, Zalo, Gmail) mới cho tìm trọ; màn hình chính hiển thị thừa thông tin.
NhaTro360 Bố cục cân đối; hỗ trợ tìm theo quận/đường; có chức năng lưu tin, gọi điện, chỉ đường; hỗ trợ đăng tin. Giao diện còn sơ sài; nhiều tin lấy từ Internet chưa xác thực; không có tìm kiếm theo vị trí hiện tại; thừa tab bài viết.
Phòng Trọ Giá Rẻ Giao diện hài hòa; tìm kiếm theo bán kính tương đối chính xác; hỗ trợ gọi điện, nhắn tin; phân loại phòng đa dạng. Sử dụng ngôn ngữ không đồng nhất (tiếng Anh lẫn tiếng Việt); yêu cầu quá nhiều quyền truy cập (tin nhắn, hình ảnh, tài khoản Google).
Phòng Trọ Tìm kiếm theo quận/huyện, khoảng giá; hiển thị bản đồ vị trí phòng trọ; sắp xếp tin theo thời gian và giá thuê. Số lượng phòng ít; nguồn tin chủ yếu lấy từ chotot.com chưa qua kiểm duyệt; không cho người dùng tự đăng tin; thiếu tìm kiếm theo vị trí.
Tìm Nhà Trọ 24/7 Điều hướng dễ dàng; tìm kiếm theo địa giới hành chính; hỗ trợ lưu tin và theo dõi tin đăng. Dữ liệu phòng trọ ít, chưa xác thực; chưa có tìm kiếm theo vị trí hiện tại; chưa tích hợp chỉ đường qua bản đồ.

Từ kết quả đối sánh trên, nhóm tác giả xác lập các tiêu chuẩn cần đạt cho ứng dụng mới: giao diện trực quan, thao tác tìm kiếm không bắt buộc đăng nhập, tích hợp tìm kiếm theo bán kính vị trí thực tế, kiểm duyệt tin đăng bởi quản trị viên và đồng bộ ngôn ngữ tiếng Việt.

Chương 2: Mô hình hoá yêu cầu và thiết kế cơ sở dữ liệu

Chương 2 mô hình hóa toàn bộ hệ thống phần mềm thông qua các công cụ kỹ nghệ:

  • Biểu đồ Use Case tổng thể: Phân định rõ ranh giới nghiệp vụ của Guest, User và Admin.
  • Bảng đặc tả quy định nghiệp vụ: Xây dựng hệ thống mã quy định tương ứng từng tác nhân (ví dụ: QD_G_Login, QD_G_Register, QD_U_Post, QD_A_ApprovePost...). Quy định đăng ký yêu cầu số điện thoại thực để gửi mã SMS OTP; mật khẩu hiển thị ký tự ẩn và được mã hóa MD5.
  • Sơ đồ luồng dữ liệu (DFD): Xây dựng chi tiết luồng xử lý và dữ liệu chuyển giao (D1: thông tin đầu vào, D3: dữ liệu người dùng, D6: thông báo/biểu mẫu giao diện) cho từng chức năng như đăng nhập, đăng ký, quên mật khẩu, đăng tin, duyệt tin và thống kê.
  • Biểu đồ tuần tự (Sequence Diagram): Mô tả tương tác giữa người dùng, giao diện (Boundary), bộ điều khiển (Controller) và cơ sở dữ liệu (Database) cho các nghiệp vụ trọng tâm (Đăng nhập, Đăng ký, Đăng tin, Duyệt tin, Tìm kiếm trọ).
  • Thiết kế cơ sở dữ liệu: Xây dựng cấu trúc dữ liệu trên Firebase Realtime Database, bao gồm các bảng/nút lưu trữ: tài khoản người dùng (Account), danh sách phòng trọ (MotelRoom), tin yêu thích (LikePost), bình luận (CommentPost) và dữ liệu hình ảnh.

Chương 3: Thiết kế giao diện và xử lý

Chương này trình bày toàn bộ thiết kế giao diện người dùng (UI) và sơ đồ chuyển đổi màn hình:

  • Giao diện dành cho Guest: Màn hình Đăng nhập (BM_G_Login), Đăng ký (BM_G_Register), Quên mật khẩu (BM_G_ForgetPass), Trang chủ (BM_G_ViewHome), Chi tiết phòng trọ (BM_G_ViewInfoHouse), Tìm kiếm trọ theo bộ lọc và Tìm kiếm trọ gần theo bán kính vị trí.
  • Giao diện dành cho User: Bổ sung màn hình Đăng tin (BM_U_Post), Quản lý tin đã đăng (BM_U_ManagePost), Sửa tin (BM_U_EditPost), Cập nhật thông tin cá nhân (BM_U_UpdateInfo), và Danh sách tin đã lưu (BM_U_SavePost).
  • Giao diện dành cho Admin: Màn hình Danh sách tin chờ duyệt (BM_A_AdministerPost), Chi tiết phê duyệt tin (BM_A_ApprovePost), Chi tiết từ chối tin (BM_A_DenyPost), và Màn hình Thống kê số lượng phòng trọ theo phân loại (BM_A_Statistics).
  • Đi kèm mỗi giao diện là bảng đánh số các đối tượng thành phần (nút bấm, ô nhập liệu, danh sách hiển thị) và luồng xử lý tương ứng khi phát sinh sự kiện bấm/chạm.

Chương 4: Lập trình

Chương 4 thuyết minh giải pháp hiện thực hóa phần mềm bằng mã lệnh:

  • Giới thiệu tổng quan về nền tảng Java và kiến trúc ứng dụng Android.
  • Khai báo chi tiết thuộc tính (Attributes) và phương thức (Methods) của các lớp phần mềm: lớp MotelRoom, lớp Account, lớp Maps, lớp Imagess, lớp Image, lớp Guest, và lớp Admin.
  • Thuyết minh và mô tả giải thuật xử lý nghiệp vụ chính: thuật toán lọc phòng trọ theo khoảng giá, thuật toán truy vấn phòng trọ theo loại hình lưu trú, thuật toán tính toán và vẽ đường đi thông qua Google Directions API, cùng thuật toán gửi mã OTP qua tin nhắn SMS để xác thực số điện thoại.

Chương 5: Kiểm thử phần mềm

Chương 5 trình bày việc thực hiện kiểm thử chức năng của ứng dụng:

  • Xây dựng các ca kiểm thử (test cases) cho các chức năng chính: kiểm tra đăng nhập/đăng ký với dữ liệu hợp lệ và không hợp lệ; kiểm tra tính năng gửi và xác nhận mã SMS; kiểm tra quá trình tải hình ảnh và đăng tin phòng trọ.
  • Thực hiện kiểm thử tính năng định vị vị trí hiện tại, tính toán bán kính tìm kiếm và độ chính xác của lộ trình chỉ đường trên bản đồ.
  • Đánh giá khả năng đồng bộ dữ liệu của Firebase khi quản trị viên thực hiện thao tác phê duyệt hoặc từ chối bài đăng.

Kết quả và đóng góp

Qua quá trình thực hiện đề tài trong 15 tuần, đồ án đã đạt được các kết quả cụ thể:

  1. Kết quả kỹ thuật và sản phẩm:

    • Hoàn thành ứng dụng di động chạy hoàn chỉnh trên hệ điều hành Android, kết nối và đồng bộ dữ liệu thời gian thực với Firebase Realtime Database.
    • Triển khai thành công 8 nghiệp vụ cho Khách vãng lai, 13 nghiệp vụ cho Người dùng và 17 nghiệp vụ cho Quản trị viên theo đúng tài liệu mô hình hóa yêu cầu.
    • Tích hợp thành công các dịch vụ định vị: Google Maps API hiển thị vị trí phòng trọ, Google Directions API hỗ trợ tìm đường từ vị trí người dùng, và thư viện Geofire cho phép quét các phòng trọ lân cận theo bán kính do người dùng tùy chọn.
    • Xây dựng cơ chế xác thực tài khoản qua số điện thoại thực tế bằng tin nhắn SMS OTP và bảo mật mật khẩu bằng thuật toán mã hóa MD5.
  2. Giải pháp giải quyết nhược điểm từ thực tế khảo sát:

    • Cho phép người dùng tra cứu, tìm kiếm và xem chi tiết phòng trọ ngay ở chế độ Khách vãng lai mà không bắt buộc phải đăng nhập tài khoản cá nhân như ứng dụng Ohana.
    • Giải quyết vấn đề tin đăng ảo và thông tin sai lệch bằng việc thiết lập quy trình kiểm duyệt hai lớp: người dùng đăng bài -> hệ thống đẩy thông báo tới Admin -> Admin trực tiếp phê duyệt hoặc từ chối bài đăng trước khi hiển thị lên trang chủ.
    • Thống nhất ngôn ngữ giao diện hoàn toàn bằng tiếng Việt, khắc phục lỗi pha trộn ngôn ngữ ở các ứng dụng tham chiếu.
    • Hạn chế tối đa việc yêu cầu quyền truy cập nhạy cảm của thiết bị, chỉ yêu cầu các quyền thực sự phục vụ tính năng (quyền truy cập vị trí phục vụ bản đồ, quyền gọi điện thoại để liên hệ trực tiếp chủ trọ).

Hạn chế và hướng nghiên cứu tiếp

Căn cứ vào nội dung và phạm vi nghiên cứu được trình bày trong khóa luận, hệ thống vẫn còn một số điểm giới hạn:

  • Hạn chế của đề tài:

    • Ứng dụng mới chỉ được xây dựng và đóng gói độc quyền cho nền tảng Android, chưa hỗ trợ người dùng thiết bị iOS.
    • Quy trình kiểm duyệt thông tin nhà trọ vẫn phụ thuộc hoàn toàn vào thao tác thủ công của Quản trị viên, chưa có cơ chế kiểm tra tự động nội dung hay chất lượng hình ảnh phòng trọ.
    • Các thông số, địa chỉ và giá thuê hoàn toàn dựa trên dữ liệu người đăng cung cấp, ứng dụng chưa có cơ chế liên kết với cơ quan quản lý để xác thực quyền sở hữu bất động sản của chủ trọ.
    • Ứng dụng dừng lại ở mức độ kết nối thông tin (xem thông tin, gọi điện, chỉ đường), chưa hỗ trợ giao dịch đặt cọc hoặc thanh toán tiền thuê trực tuyến trên app.
  • Hướng nghiên cứu tiếp:

    • Phát triển phiên bản ứng dụng trên hệ điều hành iOS hoặc chuyển đổi sang các framework đa nền tảng để mở rộng tệp người dùng.
    • Bổ sung chức năng thanh toán trực tuyến và tích hợp ví điện tử phục vụ nhu cầu đặt cọc giữ phòng an toàn.
    • Nghiên cứu cơ chế tự động đánh giá độ tin cậy của bài đăng và phát triển thêm tính năng đánh giá, chấm điểm chất lượng phòng trọ từ những người đã từng thuê.

Giá trị tham khảo

Báo cáo khóa luận là tài liệu tham khảo phù hợp cho các nhóm đối tượng sau:

  • Sinh viên ngành Công nghệ Thông tin, Công nghệ Phần mềm: Tài liệu minh họa quy trình làm đồ án tốt nghiệp chuẩn mực, từ bước khảo sát hiện trạng, phân tích nghiệp vụ, vẽ biểu đồ Use Case, Sequence Diagram, DFD đến thiết kế chi tiết các lớp đối tượng và kiểm thử phần mềm.
  • Lập trình viên phát triển ứng dụng di động Android: Tham khảo trực tiếp cấu trúc mã nguồn và phương pháp tích hợp các dịch vụ của Google (Google Maps API, Google Directions API, Geofire) vào ứng dụng Java, cũng như kỹ thuật kết nối Firebase Realtime Database.
  • Người làm đề tài về hệ thống quản lý bất động sản/nhà trọ: Có thể tái sử dụng mô hình dữ liệu, ma trận phân quyền người dùng (Guest - User - Admin) và quy trình kiểm duyệt bài đăng đã được chuẩn hóa trong đồ án.

Phần có giá trị học thuật và kỹ thuật cao nhất trong tài liệu là Chương 2 (Mô hình hoá yêu cầu và thiết kế cơ sở dữ liệu) và Chương 4 (Lập trình) nhờ hệ thống biểu đồ tuần tự chi tiết, các sơ đồ luồng dữ liệu chuẩn hóa và mô tả cấu trúc thuộc tính/phương thức của từng lớp phần mềm.


Câu hỏi thường gặp

1. Ứng dụng phân quyền người dùng như thế nào và các vai trò có sự khác biệt ra sao?
Hệ thống phân định 3 vai trò rõ ràng:

  • Guest (Khách vãng lai): Có 8 nghiệp vụ, được phép xem trang chủ, tra cứu, lọc phòng trọ, tìm kiếm theo bán kính, xem chỉ đường và gọi điện cho chủ trọ mà không cần đăng nhập.
  • User (Người dùng): Có 13 nghiệp vụ, sau khi đăng nhập có thêm quyền đăng tin cho thuê phòng, chỉnh sửa/xóa tin của chính mình, lưu tin yêu thích, bình luận và cập nhật thông tin cá nhân.
  • Admin (Quản trị viên): Có 17 nghiệp vụ, sở hữu toàn bộ quyền của User kèm theo các quyền quản trị hệ thống: nhận thông báo khi có bài đăng mới, phê duyệt hoặc từ chối tin đăng và xem thống kê số lượng phòng trọ theo từng phân loại.

2. Ứng dụng sử dụng giải pháp gì để ngăn chặn thông tin phòng trọ rác hoặc chưa xác thực?
Khắc phục tình trạng tin rác trên các app tham chiếu, hệ thống thiết lập quy trình kiểm duyệt tập trung. Khi User đăng bài mới, tin đăng chưa được hiển thị công khai ngay mà được chuyển vào danh sách chờ duyệt (BM_A_AdministerPost). Hệ thống tự động gửi thông báo đến Admin (QD_A_Notification). Chỉ khi Admin kiểm tra nội dung và nhấn nút đồng ý phê duyệt (QD_A_ApprovePost), tin đăng mới chính thức xuất hiện trên trang chủ của toàn bộ người dùng.

3. Cơ chế tìm kiếm phòng trọ theo vị trí địa lý được hiện thực bằng công nghệ nào?
Tính năng tìm kiếm phòng trọ xung quanh vị trí người dùng được xây dựng dựa trên sự kết hợp giữa hệ thống GPS của thiết bị Android, dịch vụ Google Maps API và thư viện Geofire. Geofire cho phép lưu trữ tọa độ kinh độ/vĩ độ của các phòng trọ dưới dạng các chuỗi geohash và hỗ trợ truy vấn các nút dữ liệu nằm trong phạm vi bán kính xác định do người dùng lựa chọn trên giao diện.

4. Khâu xác thực tài khoản và bảo mật thông tin trong đồ án được thiết kế ra sao?
Trong quy trình đăng ký tài khoản (QD_G_Register) và quên mật khẩu (QD_G_ForgetPass), ứng dụng yêu cầu nhập số điện thoại thực tế để gửi mã xác thực SMS OTP về máy người dùng. Mật khẩu khi người dùng nhập vào được ẩn dưới dạng ký tự * và trước khi lưu trữ xuống cơ sở dữ liệu Firebase, chuỗi mật khẩu bắt buộc phải đi qua thuật toán băm một chiều MD5 để đảm bảo an toàn.

5. Cơ sở dữ liệu của ứng dụng được xây dựng trên công nghệ nào và có cấu trúc ra sao?
Ứng dụng sử dụng hệ quản trị cơ sở dữ liệu đám mây Firebase Realtime Database của Google. Dữ liệu được lưu trữ dưới định dạng cây JSON phân cấp thời gian thực, quản lý các nút thông tin chính bao gồm tài khoản người dùng (Account), danh mục thông tin phòng trọ (MotelRoom), danh sách lưu tin yêu thích (LikePost) và danh sách phản hồi/bình luận (CommentPost).


Kết luận

Đồ án tốt nghiệp "Xây dựng app tìm kiếm và đặt phòng trọ" của sinh viên Nguyễn Tuấn Kiệt và Lê Thị Thuỳ Trang đã giải quyết trọn vẹn mục tiêu nghiên cứu và phát triển phần mềm ứng dụng di động trên nền tảng Android. Hệ thống khắc phục được các hạn chế thường gặp của các ứng dụng cùng loại thông qua cơ chế duyệt bài tập trung của Admin, tính năng định vị dẫn đường qua Google Maps và Geofire, cùng trải nghiệm tìm kiếm tiện lợi không ràng buộc đăng nhập đối với khách vãng lai. Toàn bộ quy trình từ khảo sát hiện trạng, phân tích thiết kế hướng đối tượng, mô hình hóa dữ liệu đến hiện thực mã nguồn và kiểm thử chức năng đều được tài liệu hóa chi tiết, mang lại giá trị tham khảo học thuật và ứng dụng thực tiễn cao cho sinh viên chuyên ngành Công nghệ phần mềm.