9 8 Cho phép lọc kết quả tìm kiếm theo giá cả, loại phòng, tiện ích, số người,… 9 Cho phép yêu thích/bỏ yêu thích phòng trọ 10 Cho phép gửi yêu cầu thuê phòng và thuê phòng 11 Cho phép g
CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ
Flutter
Flutter là một framework phát triển ứng dụng di động đa nền tảng được phát triển bởi Google Sử dụng ngôn ngữ lập trình Dart, Flutter cho phép bạn xây dựng các ứng dụng di động đẹp và tương tác trên cả nền tảng iOS và Android từ một mã nguồn duy nhất Flutter đi kèm với một bộ công cụ phong phú, cho phép bạn xây dựng giao diện người dùng đáp ứng và quản lý trạng thái ứng dụng một cách hiệu quả
• Đa nền tảng: Flutter cho phép bạn xây dụng ứng dụng di động trên cả iOS và Android từ một mã nguồn duy nhât
• Hiệu suất cao: Flutter sử dụng kỹ thuật rendering riêng (skia) và không cần thông qua bridge như các framework khác, giúp cải thiện hiệu suất ứng dụng
• Giao diện người dùng đẹp: Flutter cung cấp bộ widget phù hợp với giao diện người dùng tương tác, cho phép bạn tạo ra ứng dụng với giao diện đẹp và mượt mà
• Tích hợp dễ dàng: Flutter cung cấp các plugin và thư viện mạnh mẽ để tích hợp với các dịch vụ và API bên ngoài
• Hạn chế số lượng plugin: So vói các framwork khác, Flutter có số lượng plugin hạn chế hơn, đặc biết đối với các tính năng phức tạp và đặc thù của từng nền tảng
• Kích thước file lớn: Ứng dụng Flutter có kích thước tương đối lớn do bao gồm các framework và thư viện cần thiết.
GetX
GetX là một thư viện Flutter cung cấp công cụ quản lý trạng thái và dependency injection, Với GetX, bạn có thể dễ dạng quản lý trạng thái ứng dụng mà không cần sử dụng các thư viện phức tạp khác Thư viện này cung cấp các lớp hỗ trợ như GetBuilder, GetX, Obx, giúp bạn theo dõi và cập nhật trạng thái ứng dụng một cách thuận tiện và hiệu quả Ưu điểm:
• Quản lý trạng thái dễ dàng, GetX cung cấp các lớp hỗ trợ giúp bạn quản lý trạng thái ứng dụng một các thuận tiện và hiệu quả
• Dependency injection: Thư viện này cung cấp công cụ dependency injection giúp quản lý và tiếp cận các thành phần ứng dụng một cách linh hoạt và dễ dàng
• Tích hợp đơn giản: GetX tích hợp dễ dàng với Flutter và không đòi hỏi cấu hình phức tạp
• Hạn chế tài liệu và cộng đồng: So với các thư viện quản lý trạng thái khác, GetX có một cộng đồng nhỏ hơn và tài liệu hạn chế hơn, dẫn đến việc tìm kiếm hỗ trợ có thể khó hơn.
Firebase
Firebase là một nền tảng phát triển ứng dụng di động và web do Google cung cấp Nó cung cấp một loạt các dịch vụ đám mây để phát triển ứng dụng báo gồm xác thực người dùng, lưu trữ dữ liệu thông qua cơ sở dữ liệu realtime, push notifications, phân tích và nhiều dịch vụ khác Với Firebase, developer có thể nhanh chóng tích hợp các tính năng mạnh mẽ vào ứng dụng của mình mà không cần xây dựng từ đầu Ưu điểm:
• Xác thực và quản lý người dùng dễ dàng: Firebase cung cấp các dịch vụ xác thực người dùng mạnh mẽ và dễ dàng tích hợp vào ứng dụng
• Lưu trữ và đồng bộ dữ liệu: Firebase cung cấp các dịch vụ lưu trữ dự liệu realtime và đồng bộ dữ liệu giữa các thiết bị
• Tích hợp dịch vụ đám mây: Firebase cung cấp nhiều dịch vụ đám mây, bao gồm cơ sở dữ liệu, push notifications, phân tích và nhiều hơn nữa, giúp bạn phát triển các tính năng mạnh mẽ vào ứng dụng
• Giới hạn bảng giá: Firebase áp dụng mô hình giá cước dựa trên việc sử dụng, việc mở rộng ứng dụng có thể đòi hỏi chi phí cao hơn
• Tùy chọn quản lý dữ liệu hạn chế: Firebase có giới hạn trong việc truy vấn và xử lý dữ liệu phức tạp, đặc biệt khi ứng dụng có quy mô lớn.
Google Maps API
Google Map API là một tập hợp các API do Google cung cấp để truy cập và sử dụng dữ liệu và tính năng của Google Maps Google Map API có thể được sử dụng để tạo ra các ứng dụng web, di động và máy tính để bàn sử dụng bản đồ, định vị và các tính năng bản đồ khác
Google Map API dựa trên một số công nghệ tiên tiến, bao gồm:
• Google Maps Platform: Google Maps Platform là một nền tảng cung cấp các dịch vụ bản đồ, định vị và các tính năng bản đồ khác Google Map API là một phần của Google Maps Platform
• REST API: Google Map API sử dụng REST API để cung cấp truy cập đến dữ liệu và tính năng của Google Maps REST API là một phương thức tiêu chuẩn để truy cập các tài nguyên web
• JSON: Google Map API sử dụng JSON để truyền dữ liệu giữa ứng dụng và Google Maps Platform JSON là một định dạng dữ liệu nhẹ và dễ sử dụng
Google cung cấp một số loại Google Map API, bao gồm:
• Maps Android API: Maps Android API là một API Java cho phép các nhà phát triển thêm bản đồ Google vào ứng dụng Android của họ
• Maps iOS API: Maps iOS API là một API Objective-C cho phép các nhà phát triển thêm bản đồ Google vào ứng dụng iOS của họ
• Các tính năng của Google Map API
Google Map API cung cấp một loạt các tính năng, bao gồm:
• Hiển thị bản đồ: Google Map API cho phép các nhà phát triển hiển thị bản đồ Google trong ứng dụng của họ
• Tìm kiếm địa điểm: Google Map API cho phép các nhà phát triển tìm kiếm địa điểm trên bản đồ
• Định vị: Google Map API cho phép các nhà phát triển định vị vị trí của người dùng
• Đường đi: Google Map API cho phép các nhà phát triển tạo đường đi giữa các địa điểm
• Thông tin giao thông: Google Map API cho phép các nhà phát triển hiển thị thông tin giao thông trên bản đồ
• Lớp bản đồ: Google Map API cho phép các nhà phát triển thêm các lớp bản đồ tùy chỉnh vào ứng dụng của họ
• Ứng dụng của Google Map API Ưu điểm:
• Cung cấp nhiều tính năng: Google Map API cung cấp một loạt các tính năng, giúp các nhà phát triển tạo ra các ứng dụng bản đồ mạnh mẽ
• Dễ sử dụng: Google Map API được thiết kế để dễ sử dụng, giúp các nhà phát triển nhanh chóng tích hợp bản đồ Google vào ứng dụng của họ
• Có sẵn cho nhiều nền tảng: Google Map API có sẵn cho nhiều nền tảng, bao gồm web, di động và máy tính để bàn
• Chi phí: Google Map API áp dụng mô hình giá cước dựa trên việc sử dụng, có thể tốn kém cho các ứng dụng có quy mô lớn
• Tính bảo mật: Google Map API xử lý dữ liệu nhạy cảm, vì vậy các nhà phát triển cần đảm bảo rằng ứng dụng của họ được bảo mật.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Phân tích yêu cầu
1 Cho phép đăng nhập bằng tài khoản xác thực qua số điện thoại
2 Cho phép đăng ký tài khoản xác thực qua số điện thoại
3 Cho phép chỉnh sửa thông tin cá nhân
4 Cho phép đăng bài cho thuê phòng, sửa/xóa bài đã đăng
5 Cho phép xem thông tin chi tiết phòng trọ
6 Cho phép xem lịch sử đánh giá phòng trọ
7 Cho phép tìm kiếm phòng trọ theo địa điểm
8 Cho phép lọc kết quả tìm kiếm theo giá cả, loại phòng, tiện ích, số người,…
9 Cho phép yêu thích/bỏ yêu thích phòng trọ
10 Cho phép gửi yêu cầu thuê phòng và thuê phòng
11 Cho phép gửi yêu cầu trả phòng và trả phòng
12 Cho phép đánh giá phòng trọ đã thuê
13 Cho phép thanh toán tiền đặt cọc/hoàn tiền đặt cọc phòng trọ
14 Cho phép nhắn tin thời gian thực với chủ nhà/người thuê
15 Lưu trữ danh sách phòng trọ đã xem gần đây
16 Cho phép cài đặt (bật/tắt) các thông báo hệ thống
17 Cho phép báo cáo sự cố cho quản trị viên
18 Cho phép xem vị trí phòng trọ trên bản đồ
19 Cho phép tìm kiếm phòng trọ gần nơi học tập/làm việc
20 Tự động thông báo cho người dùng khi có phòng mới được đăng, có tin nhắn mới,…
3.1.2 Yêu cầu phi chức năng
• Hệ thống phải tương thích với các hệ thống khác mà doanh nghiệp đang sử dụng để quản lý và vận hành các hoạt động khác
• Hệ thống phải chạy được trên các thiết bị di động hệ điều hành Android và iOS
• Hệ thống phải được hoạt động 24/7
• Tốc độ truy cập và xử lý dữ liệu nhanh chóng và hiệu quả
• Khả năng xử lý và lưu trữ dữ liệu lớn một cách ổn định và đảm bảo an toàn
• Đảm bảo tính đáp ứng cao đối với số lượng người dùng lớn cùng lúc
• Không gây ra các tình trạng treo, chậm hoặc tắt đột ngột
• Hệ thống phải đảm bảo an toàn thông tin của khách hàng và nhân viên quản lý
• Hệ thống cần đảm bảo thông tin và dữ liệu được lưu trữ và xử lý đúng cách mà không bị mất mát hoặc bị thay đổi
• Có khả năng kiểm soát quyền truy cập dữ liệu của người dùng, đảm bảo chỉ các người dùng có quyền truy cập mới có thể truy cập vào dữ liệu
• Hệ thống có giao diện trực quan, dễ sử dụng và thân thiện với người dùng, đảm bảo người dùng có thể tìm thấy và truy cập các chức năng, thông tin một cách dễ dàng
• Có hướng dẫn sử dụng đầy đủ, rõ ràng
• Hệ thống cần có tính linh hoạt và khả năng mở rộng để dễ dàng đáp ứng với sự tăng trưởng của doanh nghiệp và số lượng khách hàng.
Phân tích Use case
STT Tác nhân của hệ thống Ý nghĩa
1 Người dùng Người sử dụng hệ thống
1 Thêm phòng trọ Thêm thông tin một phòng trọ mới
2 Sửa phòng trọ Chỉnh sửa thông tin một phòng trọ
3 Xóa phòng trọ Xóa thông tin một phòng trọ
4 Tìm kiếm phòng trọ Tìm kiếm danh sách phòng trọ theo địa điểm
5 Lọc kết quả tìm kiếm Lọc kết quả tìm kiếm theo giá cả, loại phòng, số người, tiện ích,…
6 Xem bản đồ với vị trí phòng trọ Hiển thị vị trí phòng trọ trên bản đồ
7 Tìm phòng trọ gần nơi học tập và làm việc
Tìm kiếm phòng trọ gần nơi học tập hoặc làm việc và hiển thị kết quả trên bản đồ
8 Thêm/bỏ phòng trọ yêu thích
Thêm vào hoặc loại bỏ phòng trọ khỏi danh sách yêu thích
9 Xem danh sách yêu thích Xem danh sách phòng trọ đã yêu thích
10 Xem danh sách đã xem gần đây Xem danh sách phòng trọ đã xem gần đây
11 Xem thông tin chi tiết phòng trọ Xem thông tin chi tiết của phòng trọ
12 Xem lịch sử đánh giá phòng trọ
Xem lịch sử đánh giá phòng trọ từ những người đã thuê trước đó
13 Xem phòng trọ của bạn
Xem danh sách các phòng trọ của bạn, bao gồm: phòng yêu cầu thuê, phòng yêu cầu trả, phòng đã thuê, phòng đã đăng, phòng đang chờ duyệt, phòng yêu thích
14 Thuê phòng trọ Quy trình thực hiện thuê 1 phòng trọ
15 Gửi yêu cầu thuê phòng Gửi yêu cầu thuê phòng đến chủ nhà
16 Thanh toán Thanh toán tiền đặt cọc hoặc hoàn tiền đặt cọc
17 Trả phòng Quy trình thực hiện trả 1 phòng trọ
18 Gửi yêu cầu trả phòng Gửi yêu cầu trả 1 phòng trọ đã thuê tới chủ nhà
19 Đánh giá phòng đã thuê Đánh giá phòng đã thuê sau khi trả phòng thành công
20 Đăng nhập Đăng nhập vào hệ thống bằng tài khoản đã đăng ký hoặc đăng nhập với Google
21 Đăng ký Đăng ký một tài khoản mới
22 Cập nhật thông tin cá nhân Cập nhật thông tin cá nhân của tài khoản
23 Gửi báo cáo sự cố Gửi báo cáo sự cố cho quản trị viên hệ thống
24 Nhắn tin thời gian thực Gửi tin nhắn cho chủ nhà trọ hoặc người thuê
3.2.4 Đặc tả Use case và Sơ đồ luồng hoạt động
3.2.4.1 Use case thêm phòng trọ
Tên Use Case Thêm phòng trọ
Mô tả Use case cho phép người dùng đăng bài cho thuê và thêm thông tin của phòng trọ mới vào hệ thống
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Hậu điều kiện Thông tin phòng trọ mới được thêm vào danh sách chờ quản trị viên duyệt
Hệ thống hiển thị thông báo thêm mới thành công và chuyển đến màn hình chi tiết phòng trọ
3.2.4.2 Use case sửa phòng trọ
Tên Use Case Sửa phòng trọ
Mô tả Use case cho phép người dùng chỉnh sửa thông tin của một phòng trọ người dùng đó đã đăng
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã truy cập vào trang “Phòng đã đăng” hoặc “Phòng chờ duyệt”
Hậu điều kiện Thông tin của phòng trọ được cập nhật thành công trong hệ thống
3.2.4.3 Use case xóa phòng trọ
Tên Use Case Xóa phòng trọ
Mô tả Use case cho phép người dùng xóa thông tin của một phòng trọ người dùng đó đã đăng
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã truy cập vào trang “Phòng đã đăng” hoặc “Phòng chờ duyệt”
Hậu điều kiện Thông tin của phòng trọ được xóa khỏi hệ thống và các thông tin liên quan cũng được xóa
3.2.4.4 Use case tìm kiếm phòng trọ
Tên Use Case Tìm kiếm phòng trọ
Mô tả Use case cho phép người dùng tìm kiếm các phòng trọ trong hệ thống theo địa điểm
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã truy cập vào màn hình “Trang chủ”
Hậu điều kiện Hiển thị kết quả tìm kiếm theo địa điểm được nhập vào
3.2.4.5 Use case lọc kết quả tìm kiếm
Tên Use Case Lọc kết quả tìm kiếm
Mô tả Use case cho phép người dùng lọc kết quả tìm kiếm phòng trọ dựa trên các tiêu chí và yêu cầu của mình để thu hẹp phạm vi tìm kiếm và tìm được phòng trọ phù hợp
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã thực hiện tìm kiếm phòng trọ trên hệ thống
Hậu điều kiện Hiển thị kết quả tìm kiếm được áp dụng bộ lọc dựa trên yêu cầu của người dùng
3.2.4.6 Use case xem bản đồ với vị trí phòng trọ
Tên Use Case Xem bản đồ với vị trí phòng trọ
Mô tả Use case cho phép người dùng xem bản đồ hiển thị vị trí của tất cả phòng trọ có sẵn trong hệ thống để có cái nhìn tổng quan về sự phân bố và vị trí của các phòng trọ
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã truy cập vào trang xem bản đồ của hệ thống
Hậu điều kiện Người dùng đã xem được bản đồ hiển thị vị trí của tất cả các phòng trọ có sẵn trong hệ thống
3.2.4.7 Use case tìm phòng trọ gần nơi học tập và làm việc
Tên Use Case Tìm phòng trọ gần nơi học tập và làm việc
Mô tả Use case cho phép người dùng tìm kiếm phòng trọ gần nơi học tập và làm việc của người dùng
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã truy cập vào màn hình “Trang chủ”
Hậu điều kiện Người dùng đã xem được bản đồ hiển thị vị trí của tất cả các phòng trọ gần nơi học tập và làm việc của mình
3.2.4.8 Use case thêm/bỏ phòng trọ yêu thích
Tên Use Case Thêm/bỏ phòng trọ yêu thích
Mô tả Use case cho phép người dùng thêm hoặc bỏ một phòng trọ vào danh sách yêu thích
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã truy cập vào trang thông tin chi tiết của phòng trọ hoặc các danh sách hiển thị phòng trọ
Hậu điều kiện Phòng trọ đã được thêm vào hoặc xóa khỏi danh sách yêu thích của người dùng
3.2.4.9 Use case xem danh sách yêu thích
Tên Use Case Xem danh sách yêu thích
Mô tả Use case cho phép người dùng xem lại danh sách các phòng trọ mà họ quan tâm và đã chọn yêu thích
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã truy cập vào trang Yêu thích
Hậu điều kiện Người dùng đã xem danh sách các phòng trọ yêu thích
3.2.4.10 Use case xem danh sách đã xem gần đây
Tên Use Case Xem danh sách đã xem gần đây
Mô tả Use case cho phép người dùng xem danh sách các phòng trọ mà người dùng đã xem gần đây trên hệ thống
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã truy cập vào màn hình trang chủ
Hậu điều kiện Người dùng đã xem danh sách các phòng trọ đã xem gần đây
3.2.4.11 Use case xem thông tin chi tiết phòng trọ
Tên Use Case Xem thông tin chi tiết phòng trọ
Mô tả Use case cho phép người dùng xem thông tin chi tiết về một phòng trọ cụ thể trên hệ thống Người dùng có thể xem mô tả, hình ảnh, tiện ích, giá thuê, vị trí và các thông tin liên quan khác
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã tìm thấy phòng trọ muốn xem thông tin chi tiết
Hậu điều kiện Người dùng đã xem thông tin chi tiết về phòng trọ
3.2.4.12 Use case xem lịch sử đánh giá phòng trọ
Tên Use Case Xem lịch sử đánh giá phòng trọ
Mô tả Use case cho phép người dùng xem thông lịch sử đánh giá phòng trọ bao gồm số điểm đánh giá và nhận xét từ những người đã thuê phòng trọ này trước đó
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã tìm thấy phòng trọ muốn xem lịch sử đánh giá
Hậu điều kiện Người dùng đã xem lịch sử đánh giá về phòng trọ
3.2.4.13 Use case xem phòng trọ của bạn
Tên Use Case Xem phòng trọ của bạn
Mô tả Use case cho phép người dùng xem danh sách các phòng trọ của bạn, bao gồm: phòng yêu cầu thuê, phòng yêu cầu trả, phòng đã thuê, phòng đã đăng, phòng đang chờ duyệt, phòng yêu thích
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Hậu điều kiện Người dùng đã xem danh sách phòng trọ của mình
3.2.4.14 Use case thuê phòng trọ
Tên Use Case Thuê phòng trọ
Mô tả Use case cho phép người dùng thực hiện quy trình thuê một phòng trọ
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã xác định được phòng trọ muốn thuê, phòng trọ này đã tồn tại trên hệ thống và có trạng thái chưa được thuê
Hậu điều kiện Người dùng hoàn tất quá trình thuê một phòng trọ
3.2.4.15 Use case gửi yêu cầu thuê phòng
Tên Use Case Gửi yêu cầu thuê phòng
Mô tả Use case cho phép người dùng gửi một yêu cầu thuê phòng tới chủ phòng trọ
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã xác định được phòng trọ muốn gửi yêu cầu thuê, phòng trọ này đã tồn tại trên hệ thống và có trạng thái chưa được thuê
Hậu điều kiện Người dùng đã gửi được yêu cầu thuê phòng
Tên Use Case Thanh toán
Mô tả Use case cho phép người dùng thực hiện thanh toán khoản tiền đặt cọc phòng trọ cho chủ nhà hoặc hoàn trả tiền cọc cho người thuê
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã xác định được phòng trọ muốn thanh toán, phòng trọ này đã tồn tại trên hệ thống
Hậu điều kiện Người dùng đã hoàn tất thanh toán
3.2.4.17 Use case trả phòng trọ
Tên Use Case Trả phòng trọ
Mô tả Use case cho phép người dùng thực hiện quy trình trả một phòng trọ đã thuê
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã xác định được phòng trọ muốn trả Phòng trọ được trả có trạng thái đang được thuê bởi tác nhân
Hậu điều kiện Người dùng hoàn tất quá trình trả phòng trọ
3.2.4.18 Use case gửi yêu cầu trả phòng
Tên Use Case Gửi yêu cầu trả phòng trọ
Mô tả Use case cho phép người dùng thực hiện gửi yêu cầu trả một phòng trọ đã thuê tới chủ phòng trọ
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã xác định được phòng trọ muốn gửi yêu cầu trả
Phòng trọ được trả có trạng thái đang được thuê bởi tác nhân
Hậu điều kiện Người dùng đã gửi yêu cầu trả phòng trọ
3.2.4.19 Use case đánh giá phòng đã thuê
Tên Use Case Đánh giá phòng đã thuê
Mô tả Use case cho phép người dùng thực hiện đánh giá một phòng trọ đã thuê sau khi trả phòng thành công
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Phòng trọ muốn đánh giá đã được người dùng trả thành công
Hậu điều kiện Người dùng đã đánh giá phòng trọ
Tên Use Case Đăng nhập
Mô tả Use case mô tả quá trình đăng nhập vào hệ thống, cho phép người dùng đăng nhập bằng tài khoản đã đăng ký trước đó hoặc sử dụng tài khoản Google của mình để đăng nhập nhanh chóng
Tiền điều kiện Người dùng đã truy cập vào ứng dụng
Hậu điều kiện Người dùng đã đăng nhập thành công và có thể truy cập và sử dụng các tính năng của ứng dụng
Tên Use Case Đăng ký
Mô tả Use case mô tả quá trình đăng ký để tạo một tài khoản mới trên hệ thống
Tiền điều kiện Người dùng đã truy cập vào trang đăng ký của hệ thống
Hậu điều kiện Người dùng đã đăng ký thành công và một tài khoản mới được tạo để truy cập vào hệ thống
3.2.4.22 Use case cập nhật thông tin cá nhân
Tên Use Case Cập nhật thông tin cá nhân
Mô tả Use case cho phép người dùng cập nhật thông tin cá nhân trên hệ thống
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã truy cập vào “Trang cá nhân”
Hậu điều kiện Thông tin cá nhân của người dùng được cập nhật thành công và được lưu trữ trong hệ thống
3.2.4.23 Use case gửi báo cáo sự cố
Tên Use Case Gửi báo cáo sự cố
Mô tả Use case cho phép người dùng gửi báo cáo sự cố cho quản trị viên hệ thống
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã truy cập vào “Trang cá nhân”
Hậu điều kiện Báo cáo sự cố được tạo và gửi đến quản trị viên hệ thống
3.2.4.24 Use case nhắn tin thời gian thực
Tên Use Case Nhắn tin thời gian thực
Mô tả Use case cho phép nhắn tin thời gian thực giữa chủ phòng và người thuê phòng trên hệ thống
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống
Người dùng đã truy cập vào trang thông tin chi tiết của một phòng trọ
Hậu điều kiện Người dùng đã gửi và nhận tin nhắn thành công, có thể tiếp tục trao đổi thông qua tin nhắn trên hệ thống
Sơ đồ lớp
Kiến trúc hệ thống
Về tổng thể, kiến trúc hệ thống được thiết kế theo mô hình Client-Server:
• Client: Ứng dụng được xây dựng với Flutter Được thiết kế theo mô hình MVVM (Model – View – ViewModel) - đây là một kiến trúc phân lớp được sử dụng để tách biệt logic xử lý dữ liệu (ViewModel) và giao diện người dùng (View), trong khi vẫn giữ liên kết với dữ liệu (Model), cụ thể như sau: o Model: Tầng dữ liệu, đại diện cho dữ liệu của ứng dụng, bao gồm các lớp, cấu trúc hoặc đối tượng dùng để lưu trữ và quản lý dữ liệu o View: Tầng giao diện người dùng, chứa tất cả các đối tượng GUI như TextField, Button,…View chịu trách nhiệm nhận thông tin từ ViewModel và hiển thị giao diện cho người dùng Ngoài ra, View còn xử lý phản hồi các sự kiện người dùng và chuyển tới ViewModel để xử lý o ViewModel: Tầng logic, tiếp nhận những thông báo về hành vi của người dùng và cập nhật lại Model khi cần thiết.ViewModel chịu trách nhiệm xử lý logic của ứng dụng, nhận dữ liệu từ Model và chuyển cho View để hiển thị
• Server: o Lưu trữ Cơ sở dữ liệu với Cloud Firestore o Lưu trữ file với Cloud Storage for Firebase o Xác thực người dùng thông qua Firebase Authentication o Gửi thông báo đẩy với Firebase Cloud Messaging.
Thiết kế cơ sở dữ liệu
3.5.1 Lược đồ cơ sở dữ liệu
3.5.2 Mô tả cơ sở dữ liệu
STT Tên thuộc tính Mô tả Kiểu dữ liệu Ràng buộc
Mã phòng, duy nhất cho mỗi phòng
String Bắt buộc, không được trùng lặp
Tiêu đề hoặc tên của phòng
3 Description Mô tả chi tiết về phòng String Bắt buộc
4 RoomType Loại phòng String Bắt buộc
Sức chứa tối đa của phòng int Bắt buộc, phải là số nguyên dương
Giới tính của người thuê phòng
Diện tích của phòng Double Bắt buộc, phải là số nguyên dương
Giá thuê phòng int Bắt buộc, phải là số nguyên dương
Số tiền đặt cọc int Bắt buộc, phải là số nguyên dương
Tiền điện int Bắt buộc, phải là số nguyên không âm
Tiền nước int Bắt buộc, phải là số nguyên không âm
Tiền internet int Bắt buộc, phải là số nguyên không âm
Tổng điểm đánh giá của phòng double Phải là số không âm
HasParking Cho biết có chỗ đậu xe hay không bool Bắt buộc
Chi phí đỗ xe (nếu có) int Bắt buộc, , phải là số nguyên không âm nếu HasParking là true
16 Location Địa chỉ của phòng String Bắt buộc
Utilities Danh sách các tiện ích có sẵn trong phòng List
18 CreatedBy Mã người tạo phòng String Bắt buộc
19 CreatedAt Thời điểm tạo phòng DateTime Bắt buộc
IsRented Cho biết phòng đã được thuê hay chưa bool Bắt buộc
Trạng thái hiện tại của phòng
Images Danh sách url hình ảnh của phòng List Bắt buộc
STT Tên thuộc tính Mô tả Kiểu dữ liệu Ràng buộc
1 Username Tên đăng nhập của người dùng String Bắt buộc, duy nhất, không trùng lặp
2 Password Mật khẩu của người dùng String Bắt buộc, phải được hash
3 Email Địa chỉ email của người dùng
String Cần đúng định dạng email
4 Phone number Số điện thoại của người dùng String Bắt buộc, đúng định dạng số điện thoại
5 Address Địa chỉ của người dùng String
6 Avatar Url hình đại diện của người dùng String
7 Age Tuổi của người dùng Int Phải là số nguyên lớn hơn hoặc bằng
8 Sex Giới tính của người dùng
9 CreatedAt Thời điểm tạo tài khoản người dùng
STT Tên thuộc tính Mô tả Kiểu dữ liệu
1 ReviewId Mã bài đánh giá String Bắt buộc, không được trùng lặp
2 CreatedBy Mã người tạo bài đánh giá String
3 Title Tiêu đề bài đánh giá String
4 Content Nội dung bài đánh giá String
5 Rating Điểm đánh giá Double
6 Images Danh sách URL hình ảnh đính kèm List
7 CreatedAt Thời điểm tạo bài đánh giá DateTime
STT Tên thuộc tính Mô tả Kiểu dữ liệu
1 RequestId Mã yêu cầu String
2 Reason Lý do trả phòng String
3 ReturnDate Ngày trả phòng String
5 Status Trạng thái trả String
6 Timestamp Ngày yêu cầu String
STT Tên thuộc tính Mô tả Kiểu dữ liệu
1 RequestId Mã yêu cầu String
2 DateJoin Ngày bắt đầu nhận phòng
3 DateLeave Ngày dự kiến trả phòng String
4 PriceSuggest Giá đề xuất Int
5 QuantitySuggest Số lượng người ở đề xuất Int
7 Description Mô tả yêu cầu String
8 Status Trạng thái của yêu cầu String
9 Timestamp Thời điểm tạo yêu cầu String
STT Tên thuộc tính Mô tả Kiểu dữ liệu
1 OrderCode Mã hóa đơn Int
2 ReceiverId Mã người nhận String
3 ReceiverName Tên người nhận String
ReceiverPhone Số điện thoại người nhận String
Số ngân hàng người nhận
ReceiverBank Ngân hàng người nhận String
8 Description Mô tả hóa đơn String
IssuedAt Ngày phát sinh hóa đơn DateTime
Thiết kế giao diện
3.6.1 Danh sách các màn hình
7 Màn hình lọc kết quả tìm kiếm
8 Màn hình kết quả tìm kiếm
9 Màn hình thông tin chi tiết phòng trọ
10 Màn hình thông tin chủ phòng
11 Màn hình phòng của bạn
13 Màn hình cuộc trò chuyện
17 Màn hình đã xem gần đây
19 Màn hình lịch sử đánh giá phòng trọ
22 Màn hình hóa đơn thanh toán
23 Màn hình đánh giá phòng trọ
24 Màn hình gửi yêu cầu thuê phòng
25 Màn hình danh sách yêu cầu thuê phòng
26 Màn hình chi tiết yêu cầu thuê phòng
27 Màn hình gửi yêu cầu trả phòng
28 Màn hình chi tiết yêu cầu trả phòng
3.6.2 Sơ đồ liên kết các màn hình
3.6.3 Giao diện các màn hình
7 Màn hình lọc kết quả tìm kiếm
8 Màn hình kết quả tìm kiếm
9 Màn hình thông tin chi tiết phòng trọ
10 Màn hình thông tin chủ phòng
12 Màn hình cuộc trò chuyện
16 Màn hình đã xem gần đây
18 Màn hình lịch sử đánh giá phòng trọ
20 Màn hình hóa đơn thanh toán
21 Màn hình đánh giá phòng trọ
22 Màn hình gửi yêu cầu thuê phòng
23 Màn hình danh sách yêu cầu thuê phòng
24 Màn hình chi tiết yêu cầu thuê phòng
25 Màn hình gửi yêu cầu trả phòng
26 Màn hình chi tiết yêu cầu trả phòng