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

Trong bối cảnh giáo dục đại học hiện nay, các đô thị và tỉnh thành lớn tiếp nhận số lượng lớn sinh viên ngoại tỉnh đến học tập. Tuy nhiên, hệ thống ký túc xá tại các trường đại học chỉ đáp ứng được khoảng 20% đến 30% nhu cầu chỗ ở thực tế của sinh viên. Phần lớn sinh viên buộc phải tìm kiếm phòng trọ bên ngoài. Việc tìm kiếm phòng trọ theo các phương thức truyền thống bộc lộ nhiều bất cập như tốn kém thời gian, công sức và đặc biệt phức tạp đối với tân sinh viên khi chưa am hiểu địa bàn. Các giải pháp hỗ trợ từ Hội sinh viên thường chỉ diễn ra trong thời gian ngắn vào dịp nhập trường nên số lượng phòng trọ cung cấp còn hạn chế. Khi tiếp cận các trung tâm môi giới bên ngoài, sinh viên thường phải chịu mức chi phí cao nhưng đối mặt với rủi ro lừa đảo lớn và chất lượng phòng trọ không tương xứng với giá tiền.

Từ thực trạng trên, đề tài "Xây dựng website tìm kiếm nhà trọ trên toàn quốc" do sinh viên Trần Y Tiến thực hiện dưới sự hướng dẫn của TS. Nguyễn Tấn Thuận tại Khoa Công nghệ số, Trường Đại học Sư phạm Kỹ thuật – Đại học Đà Nẵng, nhằm cung cấp một nền tảng trực tuyến minh bạch, hỗ trợ kết nối trực tiếp giữa người thuê và chủ nhà trọ.

Mục tiêu nghiên cứu của đề tài: Xây dựng hoàn chỉnh hệ thống website tìm kiếm nhà trọ trên toàn quốc với các phân hệ chức năng tương ứng cho từng nhóm người dùng:

  1. Khách vãng lai: Đăng ký, đăng nhập tài khoản; xem danh sách và chi tiết phòng trọ; lọc phòng theo khoảng giá, khu vực, diện tích và thời gian đăng tin.
  2. Người thuê trọ (Renter - Khách hàng thành viên): Sử dụng toàn bộ chức năng của khách vãng lai; xem chỉ đường và khoảng cách ngắn nhất từ vị trí cá nhân đến phòng trọ; nhắn tin trực tiếp với chủ trọ (chatbox); quản lý hồ sơ cá nhân; theo dõi và hủy theo dõi người đăng tin; nhận thông báo từ người theo dõi; quản lý danh sách trọ yêu thích.
  3. Chủ trọ (Host): Quản lý bài đăng cho thuê phòng (thêm bài viết kèm hình ảnh, video); quản lý trạng thái nhà trọ; cập nhật thông tin cá nhân; nhắn tin trao đổi với người tìm thuê.
  4. Quản trị viên (Admin/Employee): Xem và cập nhật tài khoản người dùng; xét duyệt hồ sơ đăng ký chủ trọ; quản lý nội dung banner; quản lý danh mục câu hỏi (question); theo dõi thống kê người dùng và hồ sơ phòng trọ.

Nhiệm vụ nghiên cứu (theo phân công nhiệm vụ đồ án):

  1. Thu thập thông tin, tài liệu liên quan và khảo sát thực tế nhu cầu người dùng.
  2. Phân tích và thiết kế các yêu cầu chức năng, phi chức năng của hệ thống.
  3. Phân tích và thiết kế cơ sở dữ liệu quan hệ.
  4. Thiết kế hệ thống giao diện người dùng cho các chức năng.
  5. Xây dựng và lập trình hệ thống website.
  6. Kiểm thử chương trình và sửa lỗi.
  7. Hoàn thành báo cáo tổng hợp đồ án tốt nghiệp.

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

  • Đối tượng nghiên cứu: Phân tích thiết kế chức năng tìm đường đi ngắn nhất đến phòng trọ, phân hệ trò chuyện trực tuyến (chatbox) và phân hệ quản lý thông tin phòng trọ.
  • Phạm vi nghiên cứu: Ứng dụng triển khai trên phạm vi toàn quốc, tập trung giải quyết nhu cầu tìm trọ của sinh viên trường Đại học Sư phạm Kỹ thuật – Đại học Đà Nẵng và các trường đại học, cao đẳng trên cả nước.

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

Đề tài sử dụng các cơ sở lý thuyết về phát triển phần mềm web toàn diện (Full-stack Web Development) với nền tảng ngôn ngữ JavaScript làm chủ đạo cùng mô hình cơ sở dữ liệu quan hệ.

Khung lý thuyết và công nghệ sử dụng

  • Ngôn ngữ lập trình JavaScript: Ngôn ngữ thông dịch dựa trên nguyên mẫu (prototype-based), do Brendan Eich phát triển tại Netscape vào năm 1995 (với tên gọi ban đầu là Mocha, sau đó là LiveScript và JavaScript). JavaScript cho phép thao tác trực tiếp với Document Object Model (DOM) và đối tượng window để tạo ra các trang web động (dynamic web).
  • Thư viện Front-end ReactJS: Thư viện JavaScript mã nguồn mở do Facebook phát triển và phát hành năm 2013, chuyên dùng xây dựng giao diện ứng dụng đơn trang (Single Page Application - SPA). ReactJS vận hành trên cơ chế DOM ảo (Virtual DOM) để tối ưu hóa hiệu năng cập nhật giao diện, sử dụng cú pháp JSX (JavaScript XML), quản lý luồng dữ liệu một chiều (One-way data flow) từ component cha xuống component con và kiến trúc component độc lập có thể tái sử dụng thông qua State và Props.
  • Môi trường thực thi Back-end NodeJS: Nền tảng xây dựng trên JavaScript V8 Engine của Google, hỗ trợ phát triển các ứng dụng máy chủ xử lý dữ liệu theo thời gian thực. NodeJS sở hữu các đặc tính: xử lý bất đồng bộ không chặn (Non-blocking I/O API), kiến trúc đơn luồng kết hợp vòng lặp sự kiện (Single-threaded event loop) cho khả năng mở rộng cao, tốc độ thực thi nhanh và cơ chế truyền dữ liệu trực tiếp không qua vùng đệm trung gian (No buffering).
  • Hệ quản trị cơ sở dữ liệu MySQL: Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở sử dụng ngôn ngữ truy vấn có cấu trúc (SQL), cung cấp tính năng lưu trữ dữ liệu phân tầng, tốc độ xử lý cao, độ bảo mật ổn định và khả năng hoạt động đa nền tảng (Windows, Linux, macOS).

Phương pháp nghiên cứu và công cụ hỗ trợ

  • Phương pháp nghiên cứu lý thuyết: Thu thập, phân tích tài liệu học thuật và tài liệu kỹ thuật chuyên ngành từ sách báo, tài nguyên trực tuyến để xây dựng khung lý thuyết phát triển phần mềm.
  • Phương pháp triển khai thực nghiệm: Thiết kế mô hình, xây dựng mã nguồn chương trình, kết nối API và cơ sở dữ liệu, sau đó thực hiện kiểm thử trên môi trường thực tế.
  • Công cụ triển khai: Môi trường phát triển tích hợp Visual Studio Code, máy chủ cục bộ XAMPP, công cụ kiểm thử API Postman và tích hợp dịch vụ bản đồ Google Maps.

Thiết kế và triển khai

Hệ thống được thiết kế theo quy trình công nghệ phần mềm chuẩn, bao gồm mô hình hóa use case, kịch bản chi tiết, sơ đồ hoạt động (Activity Diagram), sơ đồ tuần tự (Sequence Diagram), sơ đồ lớp (Class Diagram) và thiết kế bảng cơ sở dữ liệu quan hệ.

Phân quyền tác nhân hệ thống

Hệ thống xác định 4 tác nhân chính tương tác với ứng dụng:

  1. Khách vãng lai: Người dùng chưa đăng nhập, được phép tra cứu thông tin cơ bản.
  2. Renter (Người thuê trọ): Người dùng đã đăng ký/đăng nhập tài khoản thành viên để tìm kiếm, tương tác với chủ nhà và lưu trữ thông tin cá nhân.
  3. Host (Chủ trọ): Người dùng có quyền đăng tin cho thuê phòng, quản lý danh sách phòng và quản lý tương tác với người thuê.
  4. Admin / Employee (Quản trị viên / Nhân viên): Thực hiện quản trị hệ thống. Nhân viên (Employee) bị giới hạn quyền, chỉ được thực hiện chức năng xem chi tiết và tìm kiếm ở một số phân hệ; trong khi Quản trị viên (Admin) có toàn quyền thêm, sửa, xóa, khóa/mở khóa người dùng, xét duyệt hồ sơ và xem thống kê.

Kịch bản và quy trình xử lý một số Use Case tiêu biểu

Tên Use Case Tác nhân thực hiện Luồng sự kiện chính (Basic Flow) Xử lý ngoại lệ / Luồng rẽ nhánh
Đăng ký và đăng nhập Renter, Host, Admin Nhập thông tin tài khoản (số điện thoại, mật khẩu) hoặc chọn đăng nhập Google -> Nhấn Đăng nhập -> Hệ thống xác thực và chuyển hướng về Trang chủ. Báo lỗi khi sai thông tin tài khoản hoặc mật khẩu; cho phép kết thúc use case nếu thoát hệ thống.
Lọc và xem phòng trọ Khách vãng lai, Renter Truy cập trang chủ -> Chọn khu vực, khoảng giá, diện tích -> Nhấn Tìm kiếm -> Hệ thống hiển thị danh sách phòng phù hợp. Trả về danh sách rỗng nếu thông tin tìm kiếm không hợp lệ hoặc không có dữ liệu phòng phù hợp.
Đường đi ngắn nhất Renter Xem chi tiết nhà trọ -> Nhấn xem bản đồ -> Hệ thống tải Google Maps kèm vị trí người dùng và phòng trọ -> Nhấn "Tìm đường đi" -> Hệ thống hiển thị lộ trình, khoảng cách (km) và thời gian ước tính. Không tìm được đường đi nếu dữ liệu tọa độ hoặc địa chỉ đầu vào không hợp lệ.
Chatbox Renter, Host Nhấn vào menu Message -> Chọn đối tượng cần trao đổi -> Nhập nội dung tin nhắn -> Nhấn nút Gửi -> Hệ thống cập nhật hội thoại. Yêu cầu người dùng phải đăng nhập thành công trước khi truy cập hộp thoại tin nhắn.
Đăng tin Host Nhấn nút "Đăng tin" -> Nhập thông tin mô tả chi tiết phòng trọ -> Tải hình ảnh và video thực tế -> Nhấn xác nhận đăng tin -> Hệ thống thông báo thành công. Hệ thống báo lỗi và yêu cầu bổ sung nếu nhập thiếu trường dữ liệu hoặc file phương tiện sai định dạng.
Quản lý người dùng Admin, Employee Truy cập menu "Quản lý người dùng" tại thanh side-bar -> Thực hiện xem chi tiết, thêm, sửa, khóa/mở khóa tài khoản người dùng. Tài khoản quyền Employee chỉ được phép xem chi tiết và tìm kiếm người dùng, không được chỉnh sửa hoặc khóa tài khoản.
Thống kê Admin Chọn menu "Thống kê" tại thanh side-bar -> Hệ thống tính toán và xuất các biểu đồ, bảng dữ liệu thống kê tổng hợp. Hiển thị màn hình số liệu rỗng nếu hệ thống chưa ghi nhận dữ liệu người dùng và bài đăng.

Thiết kế cấu trúc dữ liệu và giao diện

  • Sơ đồ lớp: Đồ án thiết kế 2 sơ đồ lớp cốt lõi là Sơ đồ lớp Tài khoản (quản lý thông tin định danh, phân quyền, mật khẩu, phương thức cập nhật) và Sơ đồ lớp Nhà trọ (quản lý thông tin địa chỉ, giá cả, diện tích, trạng thái duyệt, liên kết hình ảnh/video).
  • Hệ thống giao diện người dùng: Xây dựng đầy đủ 28 màn hình giao diện phục vụ các luồng nghiệp vụ: Giao diện Trang chủ, Thông báo, Đăng nhập, Đăng ký, Trang cá nhân người dùng, Thay đổi mật khẩu, Chỉnh sửa trang cá nhân, Trang cá nhân chủ trọ, Tìm nhà trọ, Chi tiết nhà trọ, Chatbox, Quản lý nhà trọ, Đăng trọ, Chỉnh sửa nhà trọ, Thống kê, Danh sách người dùng, Thêm người dùng, Sửa người dùng, Khóa/mở khóa người dùng, Danh sách banner, Thêm banner, Sửa banner, Xóa banner, Danh sách question, Thêm question, Sửa question, Xóa question và Giao diện Trọ yêu thích.

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

Mở đầu

Trình bày tính cấp thiết của đề tài xuất phát từ bài toán thiếu hụt chỗ ở ký túc xá (chỉ đáp ứng 20-30% sinh viên) và các rủi ro từ phương thức tìm trọ truyền thống. Xác định mục tiêu xây dựng website tìm kiếm nhà trọ toàn quốc, phân định phạm vi, đối tượng nghiên cứu, phương pháp tiếp cận và cấu trúc tổng thể của bản báo cáo tốt nghiệp.

CHƯƠNG I. Ngôn ngữ lập trình JavaScript

Tổng quan về các nền tảng kỹ thuật được lựa chọn triển khai:

  • JavaScript: Lịch sử phát triển từ phiên bản đầu tiên của Brendan Eich (1995), cơ chế thao tác DOM và window object trên trình duyệt.
  • ReactJS: Kiến trúc thư viện giao diện người dùng, giải thích chi tiết về JSX, luồng dữ liệu một chiều (Single-way data flow), cơ chế phân tách component (Function/Class, State, Props), Virtual DOM và các biểu thức JavaScript (JS Expressions).
  • NodeJS: Nền tảng thực thi back-end dựa trên V8 Engine, phân tích 4 đặc tính then chốt gồm xử lý không đồng bộ (None-blocking API), tốc độ thực thi cao, mô hình đơn luồng với khả năng mở rộng lớn và cơ chế không sử dụng bộ đệm (No buffering).
  • MySQL: Tổng quan hệ quản trị cơ sở dữ liệu quan hệ, tính mở, khả năng bảo mật, tính khả chuyển đa nền tảng và việc ứng dụng ngôn ngữ SQL trong quản lý thông tin trực tuyến.

CHƯƠNG II. PHÂN TÍCH THIẾT KẾ HỆ THỐNG

Nội dung phân tích nghiệp vụ và thiết kế chi tiết phần mềm:

  • Khảo sát hệ thống và người dùng: Đánh giá thực trạng sinh viên thuê trọ giá cao, chất lượng kém và các cạm bẫy lừa đảo môi giới.
  • Đặc tả yêu cầu: Liệt kê chi tiết yêu cầu chức năng cho 4 tác nhân (Khách vãng lai, Renter, Host, Admin/Employee) và yêu cầu phi chức năng (giao diện trực quan, tính an toàn bảo mật, tốc độ phản hồi nhanh).
  • Mô hình hóa Use Case: Xây dựng biểu đồ use case tổng hợp và biểu đồ use case chi tiết cho từng tác nhân.
  • Kịch bản Use Case: Lập 12 bảng kịch bản chuẩn hóa (từ Bảng 2.1 đến 2.12) mô tả điều kiện tiên quyết, luồng sự kiện chính, luồng phụ và luồng ngoại lệ cho các tính năng: Đăng ký/đăng nhập, Quản lý tài khoản, Xem danh sách và tìm kiếm, Quản lý người dùng, Quản lý nhà trọ, Chatbox, Đường đi ngắn nhất, Theo dõi/hủy theo dõi, Đăng tin, Quản lý banner, Quản lý question và Thống kê.
  • Biểu đồ tương tác và dữ liệu: Xây dựng các sơ đồ hoạt động (Activity Diagram), sơ đồ tuần tự (Sequence Diagram), sơ đồ lớp Tài khoản, sơ đồ lớp Nhà trọ và hệ thống bảng cơ sở dữ liệu quan hệ trên MySQL.

CHƯƠNG III. XÂY DỰNG CHƯƠNG TRÌNH

Hiện thực hóa thiết kế hệ thống thành sản phẩm ứng dụng:

  • Công cụ phát triển: Sử dụng bộ công cụ Visual Studio Code, XAMPP và Postman để lập trình và kiểm thử.
  • Hiện thực giao diện: Trình bày chi tiết 28 giao diện chức năng, minh họa trực quan từ giao diện công khai (Trang chủ, Tìm kiếm, Chi tiết trọ), giao diện tương tác người dùng (Đăng trọ kèm media, Chatbox, Chỉ đường Google Maps, Trọ yêu thích) đến toàn bộ hệ thống biểu mẫu và bảng điều khiển quản trị (Admin Dashboard, Thống kê, Quản lý banner, Quản lý câu hỏi hỏi đáp, Phân quyền người dùng).

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

Kết quả chính

  • Xây dựng hoàn chỉnh website tìm kiếm nhà trọ trên toàn quốc với 4 nhóm tác nhân được phân quyền rõ ràng: Khách vãng lai, Người thuê trọ (Renter), Chủ trọ (Host) và Quản trị viên (Admin/Employee).
  • Tích hợp thành công chức năng tìm đường đi ngắn nhất sử dụng bản đồ Google Maps, cho phép tự động tính toán lộ trình, khoảng cách chi tiết (km) và thời gian di chuyển ước tính từ vị trí người dùng đến phòng trọ.
  • Triển khai chức năng nhắn tin trực tiếp (Chatbox) hỗ trợ kết nối và trao đổi thông tin tức thì giữa người thuê trọ và chủ trọ trên giao diện web.
  • Hoàn thiện module đăng tin đa phương tiện cho phép chủ nhà tải ảnh chụp và video trực tiếp về khu trọ, hỗ trợ bộ lọc đa tiêu chí (khoảng giá, khu vực địa lý, diện tích, thời gian đăng).
  • Thiết kế và lập trình hoàn chỉnh 28 màn hình giao diện đáp ứng đầy đủ các quy trình nghiệp vụ từ phía người dùng đến hệ thống quản trị nội dung, xét duyệt bài đăng và thống kê báo cáo.

Đóng góp thực tiễn

  • Đồ án giải quyết bài toán tiếp cận chỗ ở thực tế cho sinh viên trong bối cảnh các khu ký túc xá chỉ đáp ứng được từ 20% đến 30% nhu cầu lưu trú.
  • Cung cấp nguồn dữ liệu phòng trọ có tính xác thực cao nhờ cơ chế duyệt bài và định danh, giảm thiểu rủi ro bị môi giới lừa đảo hoặc thuê phòng kém chất lượng với giá cao.
  • Giúp sinh viên và người thuê tiết kiệm tối đa thời gian, chi phí di chuyển tìm kiếm phòng trọ nhờ hệ thống định vị khoảng cách và hình ảnh/video trực quan.

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

  • Hạn chế: Tác giả tự đánh giá trong báo cáo tốt nghiệp rằng do giới hạn về mặt thời gian và kiến thức cá nhân trong quá trình làm đồ án, hệ thống khó tránh khỏi một số thiếu sót nhất định trong việc tối ưu hóa hiệu năng và bao quát hết các tình huống thực tế phức tạp trên toàn quốc.
  • Hướng nghiên cứu tiếp: Tiếp thu các ý kiến đóng góp từ Hội đồng phản biện và giảng viên hướng dẫn để khắc phục các sai sót; tiếp tục hoàn thiện, nâng cấp các tính năng hiện có của website và mở rộng cơ sở dữ liệu phòng trọ trên phạm vi toàn quốc theo hướng phát triển đã vạch ra trong phần kết luận.

Giá trị tham khảo

Bản đồ án tốt nghiệp là tài liệu tham khảo hữu ích cho:

  • Sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm: Cung cấp mẫu hình triển khai một đồ án tốt nghiệp công nghệ web Full-stack sử dụng ReactJS, NodeJS và MySQL từ khâu khảo sát, phân tích đến lập trình giao diện.
  • Người nghiên cứu về phân tích thiết kế hệ thống: Phần đáng tham khảo nhất là hệ thống 12 kịch bản use case được chuẩn hóa chi tiết (Basic flow, Alternative flow, Exception flow) cùng hệ thống biểu đồ UML (Use Case, Activity, Sequence, Class Diagram).
  • Lập trình viên phát triển ứng dụng web dịch vụ: Tham khảo giải pháp tích hợp bản đồ số (Google Maps) để đo khoảng cách/tìm đường đi ngắn nhất và giải pháp thiết kế mô đun Chatbox tương tác thời gian thực giữa hai nhóm người dùng.

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

1. Hệ thống sử dụng ngăn xếp công nghệ (Tech Stack) nào để xây dựng?
Hệ thống sử dụng ngôn ngữ JavaScript làm chủ đạo, trong đó Front-end được xây dựng bằng thư viện ReactJS, Back-end sử dụng môi trường thực thi NodeJS và cơ sở dữ liệu được quản lý bằng hệ quản trị cơ sở dữ liệu quan hệ MySQL. Các công cụ hỗ trợ gồm Visual Studio Code, XAMPP và Postman.

2. Quyền hạn của nhóm tài khoản Nhân viên (Employee) khác gì so với Quản trị viên (Admin)?
Trong các kịch bản use case quản trị (quản lý người dùng, quản lý nhà trọ, quản lý banner, quản lý question), nếu tài khoản có quyền Employee thì hệ thống chỉ cho phép thực hiện các thao tác "Xem chi tiết" và "Tìm kiếm". Chỉ có tài khoản quyền Admin mới được thực hiện đầy đủ các quyền thêm, sửa, xóa, khóa/mở khóa tài khoản hoặc duyệt dữ liệu.

3. Chức năng "Tìm đường đi ngắn nhất" cung cấp những thông tin gì cho người thuê trọ?
Khi người thuê trọ chọn xem bản đồ ở trang chi tiết nhà trọ, hệ thống sẽ tải bản đồ Google Maps cùng vị trí của người dùng và nhà trọ. Sau khi nhấn "Tìm đường đi", hệ thống sẽ hiển thị trực quan lộ trình di chuyển giữa hai địa điểm, khoảng cách ước tính (tính bằng km) và thời gian di chuyển ước tính.

4. Khách vãng lai và thành viên có thể lọc phòng trọ dựa trên các tiêu chí nào?
Người dùng có thể thực hiện tra cứu danh sách phòng trọ thông qua các bộ lọc gồm: lọc theo khoảng giá, lọc theo khu vực địa lý, lọc theo diện tích phòng và lọc theo thời gian đăng tin của chủ trọ.

5. Tác nhân Chủ trọ (Host) được cung cấp những tính năng nghiệp vụ nào trên website?
Chủ trọ được sử dụng các tính năng cơ bản của khách vãng lai, đồng thời có các quyền nghiệp vụ chuyên biệt gồm: Đăng tin cho thuê trọ (kèm tải ảnh và video), quản lý danh sách nhà trọ cá nhân (xem chi tiết, thêm, chỉnh sửa), cập nhật thông tin cá nhân và sử dụng Chatbox để nhắn tin trực tiếp với người thuê trọ.

Kết luận

Đồ án tốt nghiệp "Xây dựng website tìm kiếm nhà trọ trên toàn quốc" của sinh viên Trần Y Tiến đã giải quyết thành công bài toán kết nối nhu cầu thuê và cho thuê chỗ ở sinh viên thông qua nền tảng web Full-stack (ReactJS, NodeJS, MySQL). Báo cáo thể hiện đầy đủ quy trình kỹ thuật phần mềm từ khảo sát thực tế, mô hình hóa use case chuẩn xác đến xây dựng 28 màn hình giao diện tương tác và tích hợp tiện ích bản đồ Google Maps, nhắn tin trực tuyến. Đây là công trình kỹ thuật có giá trị thực tiễn cao, đáp ứng tốt yêu cầu tốt nghiệp đại học chuyên ngành Công nghệ thông tin.