Đề tài khoá luận này tập trung vào việc phát triển một giải pháp website toàndiện không chỉ giúp người dùng tìm kiếm phòng trọ một cách dễ dàng mà còn tíchhợp hệ thống quản lý điện năng
TỔNG QUAN
Giới thiệu
Nhà trọ là một hình thức chỗ ở tồn tại từ lâu đời, chúng được ra đời nhằm đáp ứng nhu cầu cơ bản về chỗ ở tạm thời cho người có nhu cầu như sinh viên, công nhân và người lao động nhập cư, v.v Trải qua các thời kỳ, từ những phòng trọ đơn giản đến các khu trọ hiện đại với đầy đủ tiện nghi, nhà trọ đã không ngừng phát triển để theo kịp sự phát triển của xã hội.
Sự công nghiệp hoá, đô thị hoá cùng với sự phát triển của nền giáo dục đại học đã thúc đẩy sự đi lên của mô hình nhà trọ Các yếu tố kinh tế - xã hội đã tác động đến việc thiết kế, giá cả và vị trí của nhà trọ, đồng thời tạo ra nhu cầu cho các phương pháp quản lý và vận hành nhà trọ thông minh hơn.
Trong bối cảnh hiện đại, nhà trọ không chỉ là nơi cung cấp chỗ ở mà còn là một phần quan trọng trong đời sống đô thị Các thách thức như cạnh tranh từ các hình thức chỗ ở mới và nhu cầu về một không gian sống chất lượng cao đòi hỏi nhà trọ phải không ngừng cải tiến.
Nhận thấy nhu cầu đó của thị trường và nhằm đưa ra giải pháp hiệu quả, nhóm đã quyết định nghiên cứu và thực hiện đề tài “Xây dựng website tìm kiếm phòng trọ và quản lý điện năng” Hệ thống có thể đáp ứng yêu cầu tạo mới khu trọ dành cho chủ nhà trọ, quản lý thông tin khách thuê phòng, quản lý chi phí thuê của từng phòng Đồng thời đáp ứng nhu cầu tra cứu, tham khảo, thuê phòng và quản lý phòng trọ của người thuê Mục tiêu của báo cáo này là xây dựng một giải pháp hiệu quả và tối ưu dành cho nhu cầu quản lý phòng trọ và cho thuê trọ, thông qua đó gia tăng hiệu suất kinh doanh Trong cuốn báo cáo này, nhóm sẽ trình bày về cấu trúc và nguyên lý vận hành của hệ thống, cũng như phân tích những ưu điểm và nhược điểm của sản phẩm, đồng thời đưa ra phương hướng phát triển trong tương lai Phạm vi của đề tài sẽ đi sâu vào việc phát triển phần mềm có khả năng đáp ứng các yêu cầu liên quan đến việc quản lý và cho thuê phòng trọ. tiện lợi trong việc đăng ký tài khoản người dùng, tạo lập khu trọ mới và quản lý phòng trọ Với việc ứng dụng các thiết bị phần cứng IoT trong việc thu thập dữ liệu về điện, hệ thống có thể loại bỏ sự phiền phức trong việc ghi lại dữ liệu điện tiêu thụ hàng tháng và giảm sai sót trong quá trình quản lý Ngoài ra, hệ thống được kết nối với cơ sở dữ liệu đám mây để lưu trữ và xử lý dữ liệu phòng trọ và người dùng. Bằng cơ sở dữ liệu MongoDB, hệ thống có thể tự động cập nhật và lưu trữ thông tin phòng trọ, tối ưu thời gian và tài nguyên cho việc quản lý dữ liệu.
Trong quá trình triển khai và kiểm thử hệ thống trong môi trường thực tế, nhóm đã tiến hành các thử nghiệm và kiểm định tính hiệu quả của hệ thống Kết quả chỉ ra hệ thống quản lý và tìm kiếm phòng trọ đạt được hiệu quả đáng kể Hệ thống không chỉ giúp giản lược, tự động hoá quá trình quản lý phòng trọ mà còn giúp tiết kiệm công sức, chi phí cho người chủ khu trọ Và đặc biệt là vấn đề bảo mật, những thông tin lưu trữ trong hệ thống đều là những dữ liệu nhạy cảm, đòi hỏi tính bảo mật cao và cần được quan tâm sâu sắc.
Tựu trung lại, báo cáo này phân tích về một hệ thống quản lý và tìm kiếm phòng trọ, giúp giải quyết nhu cầu về quản lý và hoạt động tìm chỗ ở trong môi trường xã hội Phần sau của báo cáo sẽ đánh giá những tiềm năng phát triển cùng những khó khăn cần khắc phục của hệ thống Mục đích cuối cùng là góp phần vào sự phát triển của lĩnh vực nhà trọ nói riêng và lĩnh vực công nghệ nói chung.
Mục tiêu đề tài
Mục tiêu của đề tài “Xây dựng website tìm kiếm phòng trọ và quản lý điện năng” được xác định như sau:
- Phát triển một nền tảng trực tuyến cho phép người dùng tìm kiếm phòng trọ, xem thông tin phòng và đặt cọc thuê phòng nhanh chóng và thuận tiện.
- Cung cấp các công cụ quản lý phòng trọ và quản lý điện năng dành cho người thuê phòng và người chủ trọ.
- Xây dựng website tích hợp giao diện người dùng dễ tiếp cận, với các chức năng hỗ trợ người dùng quản lý thông tin.
- Phát triển các công cụ giúp tự động hoả việc tính toán hoả đơn tiền phòng , hỗ trợ chủ nhà và người thuê trong việc quản lý tài chính liên quan đến việc thuê và cho thuê phòng trọ.
- Đảm bảo khả năng mở rộng, có thể ứng dụng cho nhiều khu vực và đối tượng người dùng khác nhau, cũng như dễ dàng tích hợp thêm các tính năng mới trong tương lai.
Tình hình nghiên cứu
1.1.1 Sự phát triển của thị trường cho thuê phòng trọ
Trong khoảng thời gian gần đây, thị trường nhà trọ đã chứng kiến sự thay đổi đáng kể, là hệ quả của sự gia tăng nhanh chóng của làn sóng dân nhập cư tại các đô thị lớn Nhu cầu tìm kiếm phòng trọ đang tăng cao, trong đó đối tượng đặc biệt là giới trẻ và người lao động Họ mong muốn tìm cho mình một phòng trọ vừa đáp ứng với điều kiện kinh tế và yêu cầu về vị trí địa lý, vừa tiết kiệm thời gian và công sức. Chính điều đó đã thúc đẩy cho sự ra đời của các nền tảng tìm kiếm phòng trọ cung cấp thông tin đầy đủ và chính xác.
Theo số liệu thống kê từ các chủ trọ ở những khu vực vùng ven TP HCM năm
2022, nhu cầu thuê trọ của công nhân tăng mạnh Trong đó, tỷ lệ lấp đầy lên đến 95
- 100% so với giai đoạn đầu năm chỉ 20 - 30% [1].
Dữ liệu nghiên cứu thị trường vừa công bố mới đây của Batdongsan.com cho thấy, trong tháng 12, nhu cầu cho thuê phòng trọ có nhiều chuyển biến tích cực Cụ thể, trong tháng 12/2023, cả nước ghi nhận lượng tin rao cho thuê phòng trọ chỉ tăng 4% nhưng nhu cầu tìm thuê lại tăng mạnh lên đến 58% TP HCM là thị trường ghi nhận nhu cầu thuê phòng trọ tăng mạnh nhất.Việc nhà nước siết chặt hơn phân khúc nhà trọ đảm bảo phòng cháy chữa cháy khiến nguồn cung nhà trọ đáp ứng tiêu chuẩn cho thuê bị giảm, từ đó tạo đà cho nhu cầu tìm trọ tăng cao [2].
Những tiến bộ của công nghệ và Internet đã mở ra một giai đoạn mới trong việc tìm kiếm và quản lý nhà trọ Sự ra đời của các nền tảng trực tuyến đã thay đổi cách thức kết nối giữa người cho thuê và người thuê trọ, mạng lại sự tiện lợi và hiệu
Với nhu cầu lớn và mang tính thực tiễn như đã đề cập bên trên, các nền tảng tìm kiếm phòng trọ đã được phát triển và ra đời, các ví dụ cụ thể là Phongtro123.com, Chotot.com, Phongtot.vn Họ là các đơn vị cung cấp website tìm kiếm phòng trọ dựa trên các thông tin mà chủ trọ đăng tải, qua đó trở thành cầu nối giữa người có nhu cầu cho thuê phòng và những người có nhu cầu tìm phòng trọ.
Sự phát triển kinh tế - xã hội luôn song hành với lực lượng lao động, chính vì vậy thị trường phòng trọ vẫn còn trong mình dư địa và nội lực để tăng trưởng, là đòn bẩy cho các công cụ phục vụ ra đời và cải tiến, giúp người dùng tìm kiếm và quản lý nơi ở một cách hiệu quả Các công cụ này không chỉ giúp người thuê trọ tiết kiệm thời gian cũng như công sức mà còn hỗ trợ chủ nhà trọ trong việc quản lý tài sản và người thuê của mình một cách thông minh.
1.1.2 Sự phát triển của các nền tảng tìm kiếm phòng trọ
Sự phát triển của các nền tảng tìm kiếm phòng trọ đã đánh dấu bước tiến quan trọng trong việc kết nối người cho thuê trọ và người có nhu cầu tìm trọ Các website và ứng dụng di động là công cụ không thể tốt hơn để thực hiện điều này Tuy nhiên, mặc cho đã có những cải tiến đáng kể, nhưng các công cụ hiện nay vẫn tồn tại những hạn chế nhất định, đặc biệt trong việc quản lý thông tin người thuê phòng và quản lý điện năng.
Các website tìm kiếm phòng trọ hiện nay chủ yếu đánh mạnh vào việc cung cấp thông tin về giá cả, vị trí và tiện ích đi kèm, nhưng lại thiếu vắng các tính năng giúp người dùng theo dõi và quản lý việc tiêu thụ điện năng và các thông tin liên quan đến hoá đơn hàng tháng, thời hạn hợp đồng cho thuê đối với phòng trọ của mình Điều này không chỉ gây khó khăn cho người thuê trong việc theo dõi chi phí hàng tháng mà còn làm tăng thêm gánh nặng quản lý cho chủ nhà trọ, đặc biệt đối với những người sở hữu nhiều khu vực cho thuê.
Nhu cầu về một hệ thống tích hợp quản lý dữ liệu điện năng thông minh ngày càng trở nên cấp thiết, nhằm giúp người thuê và chủ nhà trọ có góc nhìn rõ ràng về mức tiêu thụ điện năng, thông qua đó họ có thể đưa ra các quyết định tiết kiệm chi phí và bảo vệ môi trường.
Sự kết hợp giữa công nghệ thông tin và quản lý điện năng hứa hẹn sẽ mở ra một trang mới cho thị trường nhà trọ, góp phần vào việc kiến tạo một cộng đồng sống xanh và bền vững hơn.
Đối tượng và phạm vi nghiên cứu
Về đối tượng nghiên cứu, nhóm tập trung vào việc phát triển các giải pháp lưu trữ dữ liệu hiệu quả liên quan đến thông tin phòng trọ và quản lý điện năng. Điều này bao gồm việc xây dựng cơ sở dữ liệu để lưu trữ thông tin chi tiết về các phòng trọ, cũng như tích hợp hệ thống quản lý điện năng thông minh Mục tiêu là tạo ra một giao diện người dùng thân thiện, trực quan và dễ tiếp cận, phục vụ mục đích tìm kiếm và quản lý phòng trọ.
Về phạm vi nghiên cứu, phạm vi nghiên cứu của đề tài được xác định dựa trên nhu cầu thực tế của thị trường nhà trọ và quản lý điện năng Đề tài sẽ sử dụng dữ liệu thông qua API của hệ thống thu thập dữ liệu nhà trọ được phát triển bởi nhóm sinh viên tại công ty TNHH Thương mại và Kỹ thuật Thái Bình Các API này sẽ được ứng dụng để tích hợp dữ liệu về hiệu suất tiêu thụ điện năng của các thiết bị nằm trong hệ thống, giúp người dùng nắm bắt được sự tổng quan và chi tiết trong việc quản lý điện năng trong phòng trọ của họ.
Phương pháp nghiên cứu
Để đạt được mục tiêu của đề tài, nhóm sử dụng các phương pháp quan sát, thực nghiệm và phân tích tổng kết kinh nghiệm.
Phương pháp quan sát: Nhóm thu thập thông tin thông qua sát đối với một số khu nhà trọ trong khu vực để xác định những yêu cầu tối thiểu đối với hệ thống.
Tiến hành thử nghiệm: Nhóm thực hiện các bài thử nghiệm hệ thống để đảm bảo tính chính xác và hiệu quả của quá trình lấy dữ liệu điện năng và quản lý phòng trọ.
Phương pháp phân tích tổng kết kinh nghiệm: Đánh giá hiệu quả: Nhóm tiến hành đánh giá hiệu quả của hệ thống dựa trên
Tổng kết kinh nghiệm: Dựa trên phân tích, nhóm tổng kết kinh nghiệm từ việc triển khai hệ thống website tìm kiếm phòng trọ và quản lý điện năng Sau đó nhận định ưu điểm, hạn chế và những thách thức đã đối mặt trong quá trình triển khai hệ thống Thông qua đó, nhóm xác định phương hướng cải tiến để tối hư hoá tính hiệu quả của hệ thống.
Bố cục bài báo cáo
Bố cục của bài báo cáo được tổ chức như sau:
Trong chương này, nhóm sẽ giới thiệu về đề tài, bao gồm các nội dung như:
Lý do chọn đề tài, mục tiêu và đối tượng nghiên cứu, phạm vi nghiên cứu, phương pháp nghiên cứu, cấu trúc báo cáo.
CƠ SỞ LÝ THUYẾT
HTML, CSS và JavaScript
HTML là một ngôn ngữ đánh dấu được tạo ra để xây dựng các trang web trên World Wide Web Ngoài HTML ra còn có các công nghệ hỗ trợ khác như CSS và các ngôn ngữ lập trình như JavaScript.
Các trình duyệt web sẽ lấy tài nguyên HTML từ một web server hoặc máy chủ cục bộ và giải mã chúng thành các trang web theo những gì người dùng đã xây dựng Một cấu trúc HTML được tạo nên bởi các phần tử HTML (HTML Elements) bọc bởi một cặp dấu ngoặc nhọn (ví dụ
) bao gồm một thẻ mở và một thẻ đóng Theo nguyên tắc, một cấu trúc HTML được bao bọc trong một cặp thẻNgoài ra HTML còn có một số thẻ (tag) phổ biến như sau:
- Thẻ : Thẻ này chứa thông tin về trang web như tiêu đề, các tập tin CSS hoặc JavaScript được liên kết, meta tags và các thông tin khác.
- Thẻ : Được đặt trong thẻ , thẻ này định nghĩa tên của trang web, hiển thị trong thanh tiêu đề của trình duyệt.
- Thẻ : Đây là thẻ mở và đóng chứa nội dung hiển thị trực tiếp trên trang web, bao gồm các đoạn văn bản, hình ảnh, đường liên kết và các phần tử khác.
- Thẻ đến : Các thẻ này được sử dụng để phân cấp nội dung trang web theo cấu trúc với độ ưu tiên khác nhau Thẻ có độ ưu tiên cao nhất, trong khi thẻ có độ ưu tiên thấp nhất.
- Thẻ
: Được sử dụng để tạo ra các đoạn văn bản.
- Thẻ : Được sử dụng để tạo đường liên kết Thuộc tính "href" chứa địa chỉ URL của trang đích.
- Thẻ : Được sử dụng để thêm hình ảnh vào trang web Thuộc tính "src" chứa đường dẫn của hình ảnh, trong khi thuộc tính "alt" cung cấp mô tả hình ảnh trong trường hợp hình ảnh không hiển thị được.
- Thẻ
- và
- : Thẻ
- tạo một danh sách không có thứ tự, trong khi thẻ
- định nghĩa mỗi mục trong danh sách.
- Thẻ , , và : Được sử dụng để tạo bảng Thẻ định nghĩa bảng, thẻ định nghĩa hàng trong bảng, thẻ định nghĩa ô tiêu đề và thẻ định nghĩa ô dữ liệu trong bảng.
- Thẻ , và : Được sử dụng để tạo biểu mẫu và nhập liệu.
- Thẻ và : Đây là các thẻ chủ đề dùng để tạo một khung chung cho các phần tử lại nhất định Thẻ thường được sử dụng để gom các phần tử thành các khối lớn, trong khi thẻ thường được sử dụng để nhóm các phần tử nhỏ hơn [3].
Hình 2.1:Ví dụ về một đoạn mã HTML
2.1.2 Giới thiệu về CSS và SCSS
CSS (viết tắt của Cascading Style Sheets), là một ngôn ngữ lập trình được sử dụng để định dạng và tạo phong cách cho các phần tử được tạo ra bởi các ngôn ngữ đánh dấu như HTML CSS đóng vai trò quan trọng trong việc thiết kế và tạo giao diện cho các trang web.
Nếu như HTML là ngôn ngữ dùng để tạo ra cấu trúc và nội dung của trang web, thì CSS được sử dụng để định dạng và tạo phong cách cho các phần tử HTML.HTML và CSS có mối quan hệ mật thiết, vì CSS không thể tồn tại độc lập mà không được kết hợp với HTML Trước khi sử dụng CSS, nhà phát triển cần phải đính kèm đường dẫn file CSS đó trong mã HTML CSS giúp tách biệt phần định
Cấu trúc cơ bản của CSS bao gồm 4 thành phần: selector, property, value và declaration.
Selector xác định phần tử HTML mà CSS sẽ được áp dụng.
Property là các thuộc tính như màu sắc, kích thước, vị trí, v.v mà CSS sẽ thay đổi.
Value là giá trị được gán cho các property.
Declaration là sự kết hợp giữa property và value.
CSS có 3 loại chính: Inline CSS, Internal CSS và External CSS.
Inline CSS: CSS được viết trực tiếp trong thuộc tính style của thẻ HTML. Internal CSS: CSS được viết trong thẻ ‘’ trong phần ‘’ của trang HTML.
External CSS: CSS được viết trong một tệp riêng ‘.css’ và được liên kết với trang HTML bằng thẻ ‘’ [4].
Hình 2.2:Ví dụ mã CSS SCSS là một ngôn ngữ tiền xử lý cho CSS, cho phép sử dụng biến, quy tắc lồng nhau và nhiều tính năng khác để viết CSS một cách gọn gàng và mang tính tái sử dụng SCSS tương thích hoàn toàn với CSS và giúp mở rộng khả năng của CSS.
Cú pháp của SCSS tương tự như CSS nhưng với khả năng sử dụng dấu ngoặc nhọn ‘{}’ và dấu chấm phẩy ‘;’ Điều này làm cho SCSS dễ đọc và dễ viết hơn cho những người đã quen với CSS [5].
Hình 2.3:Ví dụ mã SCSS
JavaScript là một ngôn ngữ lập trình thông dịch và đa mục đích Ban đầu, nó được phát triển để thêm tính năng tương tác vào các trang web, nhưng ngày nay, nó đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất và được sử dụng trên nhiều nền tảng khác nhau bao gồm web, máy chủ, ứng dụng di động và nhiều hơn nữa JavaScript có khả năng xử lý các tương tác từ người dùng, tương tác với máy chủ và tạo ra các hiệu ứng động.
JavaScript sử dụng cú pháp tương tự như các ngôn ngữ lập trình khác như C và Java Dưới đây là một số khái niệm cơ bản:
Biến: Là một định danh được sử dụng để lưu trữ giá trị Biến được khai báo bằng từ khoá var, let, hoặc const.
Toán tử: Bao gồm các toán tử như +, -, *, /, ++, , &&, ||, và nhiều hơn nữa. JavaScript hỗ trợ các cấu trúc điều khiển thông thường như:
Câu lệnh điều kiện (if, else if, else): Dùng để thực thi các khối mã dựa trên một điều kiện.
Vòng lặp (for, while, do while): Dùng để lặp lại một khối mã cho đến khi một điều kiện được thoả mãn.
JavaScript là một ngôn ngữ dựa trên đối tượng, có nghĩa là mọi thứ trong JavaScript đều là một đối tượng hoặc có thể biến thành một đối tượng Đối tượng trong JavaScript có thể được tạo ra bằng cách sử dụng các cú pháp như đối tượng định danh JSON, hoặc bằng cách sử dụng từ khoá new và hàm tạo.
JavaScript là một ngôn ngữ bất đồng bộ, có nghĩa là nó có thể thực thi nhiều tác vụ cùng một lúc mà không chờ đợi kết thúc của một tác vụ trước Điều này rất hữu ích cho việc xử lý sự kiện trong các ứng dụng web, nơi mà người dùng có thể tương tác với trang web mà không cần tải lại trang.
JavaScript cung cấp hỗ trợ cho module, cho phép tách mã của bạn thành các phần nhỏ hơn và tái sử dụng chúng trong các dự án khác nhau.
Bằng cách sử dụng JavaScript để truy cập và thay đổi DOM, người dùng có thể thêm, xoá và sửa đổi các phần tử HTML, thay đổi thuộc tính CSS và tạo ra hiệu ứng động trên trang web Với khả năng tương tác người dùng, JavaScript cho phép xử lý các hành động như nhấp chuột, di chuyển chuột, gõ phím và tương tác với các phần tử trên trang web, kiểm tra và xác thực dữ liệu đầu vào từ người dùng, thay đổi nội dung của trang web và hiển thị thông báo[6].
React JS
2.2.1 Giới thiệu về React JS
React JS là một thư viện JavaScript mã nguồn mở và miễn phí để xây dựng giao diện người dùng dựa trên các thành phần giao diện người dùng (UI) riêng lẻ.React JS được phát triển và duy trì bởi Meta (trước đây là Facebook) và cộng đồng các nhà phát triển React JS khuyến khích việc tạo ra các thành phần UI có thể tái sử
JavaScript, giúp người dùng có thể viết mã HTML trực tiếp trong file JavaScript thay vì phải tách riêng như trước đây.
React JS có cấu trúc gồm các thành phần như sau:
Virtual DOM: React JS sử dụng Virtual DOM để tối ưu hoá việc render trang web Thay vì cập nhật trực tiếp DOM, React JS tạo ra một bản sao ảo của DOM và chỉ cập nhật những phần thay đổi, giúp cải thiện hiệu suất và tốc độ của ứng dụng.
Component: Đây là một đơn vị cơ bản để tạo ra giao diện người dùng trong React JS Một component có thể là một hàm hoặc một class, nhận vào các đối số gọi là props và trả về một đối tượng gọi là element, biểu diễn một phần giao diện người dùng.
JSX: React JS sử dụng JSX, một phần mở rộng của JavaScript, để viết mã HTML trong JavaScript JSX giúp viết mã dễ đọc hơn và tạo ra các component một cách trực quan.
Element: Đây là một đối tượng đơn giản, mô tả những gì người dùng muốn hiển thị trên giao diện Một element được tạo ra bằng cách sử dụng cú pháp JSX.
Props: Đây là một đối tượng chứa các tham số truyền vào một component. Props có chức năng truyền dữ liệu từ component cha sang component con và tạo ra các component có tính tái sử dụng cao.
State: Đây là một đối tượng chứa các dữ liệu có thể thay đổi theo thời gian trong component State giúp người dùng tạo ra các component có tính tương tác cao, đồng thời phản ánh sự thay đổi dữ liệu trên giao diện người dùng Ví dụ khi người dùng nhập thông tin tài khoản, dữ liệu đó sẽ được cập nhật vào state và được dùng để xác thực [7].
Hình 2.5:Ví dụ về mã React JS
2.2.2 Ưu điểm của React JS
React JS cho phép các nhà phát triển tái sử dụng các thành phần UI, giúp giảm thiểu thời gian phát triển và bảo trì Các cấu trúc này có thể được chia sử giữa các ứng dụng khác nhau nhằm tăng hiệu suất.
React JS sử dụng Virtual DOM để tối ưu hoá việc cập nhật giao diện, giúp ứng dụng chạy nhanh và mượt mà hơn.
React JS cung cấp cú pháp JSX cho phép nhà phát triển viết mã lồng JavaScript vào cấu trúc HTML, làm cho mã dễ đọc và viết hơn.
React JS có thể render trên cả phía client (trình duyệt) và phía server, giúp tối ưu hoá SEO và thời gian tải trang.
React JS có một cộng đồng hỗ trợ rộng lớn, với rất nhiều tài liệu, hướng dẫn và các thư viện hỗ trợ Cộng đồng này giúp các nhà phát triển có thể tìm các giải pháp cho vấn đề họ gặp phải [8].
Express.JS
2.3.1 Giới thiệu về Express.JS
Express.JS là một framework web phía máy chủ (server-side) được viết bằng JavaScript Nó được dùng để xây dựng ứng dụng web và RESTful API Nền tảng này cung cấp cơ chế hoạt động cơ bản để xử lý các yêu cầu HTTP Express.JS giúp quản lý định tuyến, xử lý logic cho từng thành phần của ứng dụng, tạo điều kiện cho việc mở rộng và bảo trì sau này Framework này không chỉ hỗ trợ việc xây dựng các ứng dụng từ đơn giản đến phức tạp mà còn giúp quản lý cấu trúc và dữ liệu của ứng dụng một cách rõ ràng và có tổ chức [9].
2.3.2 Ưu điểm của Express.JS
Tối giản và linh hoạt: Express.JS cung cấp bộ công cụ tối giản nhưng đủ mạnh để xây dựng các ứng dụng web và API, cho phép nhà phát triển dễ dàng mở rộng và tuỳ chỉnh theo nhu cầu cụ thể.
Middleware: Express.JS hỗ trợ mạnh mẽ cho middleware, cho phép nhà phát triển thêm các chức năng xử lý trước và sau khi yêu cầu HTTP được xử lý, như xác thực, ghi log và xử lý lỗi.
Express.JS cung cấp chức năng Routing, cho phép định nghĩa các tuyến đường (route) với các phương thức HTTP khác nhau Mỗi tuyến đường có thể là một hoặc nhiều hàm xử lý, được thực thi khi có yêu cầu được gọi đến phù hợp.
Express.JS có khả năng tích hợp với nhiều loại cơ sở dữ liệu khác nhau, từ NoSQL như MongoDB đến SQL như MySQL, giúp nhà phát triển dễ dàng thao tác với dữ liệu.
Cộng đồng lớn mạnh, với nhiều nhà phát triển và công ty lớn sử dụng cũng như đóng góp Vì vậy tài liệu hướng dẫn, công cụ phục vụ cho các nhà phát triển là rất lớn.
Có thể tích hợp với nhiều framework khác như React JS, MongoDB,Firebase, v.v để tăng cường tính năng của Web Application [10].
MongoDB
MongoDB là một dịch vụ cơ sở dữ liệu hướng tài liệu, thuộc loại cơ sở dữ liệu NoSQL (cơ sở dữ liệu không quan hệ), được phát triển và quản lý bởi MongoDB Inc Ban đầu, MongoDB với tiền thân là một nền tảng tương tự dịch vụ Azure của Microsoft được phát triển bởi công ty 10gen 10gen là một công ty phần mềm có trụ sở tại New York, nay được đổi tên thành MongoDB Inc Việc phát triển ban đầu tập trung xây dựng PaaS (Platform as a Service) Sau đó nó đã được chuyển thành mã nguồn mở từ năm 2009 và được duy trì bởi chính tổ chức này.
MongoDB không sử dụng các bảng để lưu trữ dữ liệu, mà sử dụng các collection và document Một collection là một tập hợp các document, có thể coi là tương đương với một bảng trong cơ sở dữ liệu quan hệ Một document là một đơn vị dữ liệu độc lập, có thể coi là tương đương với một hàng trong bảng Một document có thể có nhiều trường, mỗi trường có một giá trị Một document có thể có các trường khác nhau với các document khác trong cùng một collection Một document có thể có các trường lồng nhau, tạo thành các cấu trúc dữ liệu phức tạp.
Cấu trúc của một document trong MongoDB được biểu diễn bằng định dạng BSON, một dạng mở rộng của JSON BSON cho phép lưu trữ các kiểu dữ liệu như số nguyên, số thực, chuỗi, mảng, đối tượng, ngày giờ, nhị phân,… Một document trong MongoDB có thể có kích thước tối đa là 16 MB.
MongoDB đang nổi lên như một trong những cơ sở dữ liệu NoSQL phổ biến nhất thế giới MongoDB được sử dụng bởi nhiều công ty và tổ chức lớn như Google,Facebook, Adobe, eBay, MTV Networks,… Sở dĩ MongoDB trở nên phổ biến là bởi những ưu điểm sau đây:
Linh hoạt và dễ sử dụng: MongoDB là cơ sở dữ liệu NoSQL nên nó cho phép người dùng truy vấn dữ liệu mà không cần học và thành thạo SQL Các dữ liệu có thể được truy xuất dưới dạng JSON dễ đọc hiểu Điều này cho phép lưu trữ dữ liệu một cách linh hoạt và phong phú, với khả năng quản lý các cấu trúc dữ liệu phức tạp như mảng và tài liệu lồng nhau.
Khả năng mở rộng: MongoDB là cơ sở dữ liệu với kiến trúc mở rộng theo chiều ngang, phân tán trên nhiều máy, chính vì vậy người dùng có thể sử dụng và xử lý các luồng dữ liệu theo lưu lượng mong muốn.
Phù hợp với nhiều nhà phát triển: MongoDB được xây dựng để phù hợp với nhiều ngôn ngữ lập trình khác nhau, bao gồm C, C#, NET, C++, Go, Java, JavaScript, PHP, Python,…
Cộng đồng hỗ trợ đông đảo: Với việc ngày càng nhiều nhà phát triển sử dụng, số lượng đóng góp vào mã nguồn mở cho MongoDB luôn được cập nhật và cải tiến.
Tuy nhiên MongoDB có những giới hạn về kích thước bản ghi ở mức 16MB, không có các tính chất ràng buộc, có thể dẫn đến việc làm sai dữ liệu nếu không có cơ chế kiểm soát và xử lý lỗi.
MongoDB hỗ trợ đồng bộ dữ liệu trực tiếp và thời gian thực giữa các thiết bị và máy chủ Khi dữ liệu trong cơ sở dữ liệu thay đổi, các thiết bị và máy chủ có thể nhận ngay lập tức các cập nhật về dữ liệu mới, đồng bộ hoá để hiển thị dữ liệu mới nhất MongoDB cung cấp các API cho phép người phát triển tương tác trực tiếp với cơ sở dữ liệu Các API này cho phép người dùng đọc, ghi dữ liệu và lắng nghe sự thay đổi của dữ liệu trong cơ sở dữ liệu Người dùng có thể xem API như một công cụ để thêm, sửa đổi và xoá dữ liệu từ cơ sở dữ liệu, đồng thời lắng nghe các sự kiện thay đổi dữ liệu để cập nhật giao diện của ứng dụng web hoặc thực hiện các tác vụ khác.
Tính bảo mật là một khía cạnh rất quan trọng khi nói về cơ sở dữ liệu.MongoDB được thiết kế để bảo vệ dữ liệu người dùng khỏi rủi ro và truy cập trái phép MongoDB cung cấp trình hỗ trợ xác thực, bảo đảm rằng chỉ những người có quyền truy cập mới được phép thực hiện các thao tác trên cơ sở dữ liệu Ngoài ra, cắp Không những thế, MongoDB hỗ trợ kết nối bảo mật thông qua SSL/TLS để đảm bảo an toàn trong quá trình truyền tải dữ liệu giữa máy khách và máy chủ.
Tổng kết lại, MongoDB là một cơ sở dữ liệu đáng tin cậy, cơ chế hoạt động linh hoạt, hiệu năng mạnh mẽ nhưng vẫn đảm bảo tính bảo mật cao Đây là những yếu tố để nhóm quyết định sử dụng MongoDB làm cơ sở dữ liệu cho đề tài.
Redux Saga
2.5.1 Giới thiệu về Redux Saga
Redux Saga là một thư viện middleware cho Redux - một thư viện quản lý trạng thái phổ biến trong lĩnh vực phát triển web Redux Saga cho phép nhà phát triển viết các side effect (như gọi API, xử lý bất đồng bộ) một cách đồng bộ và dễ quản lý, làm cho code trở nên gọn gàng và dễ bảo trì hơn.
Redux Saga sử dụng mô hình Generator của JavaScript để xử lý các side effect Generator là một hàm đặc biệt có khả năng tạm dừng và tiếp tục thực thi, điều này cho phép Redux Saga tạo ra một luồng xử lý đồng bộ cho các side effect, trong khi vẫn giữ cho code dễ đọc và dễ hiểu [11].
Hình 2.6:Cơ chế hoạt động của Redux Saga
2.5.2 Ưu điểm của Redux Saga Đồng bộ và dễ quản lý: Redux Saga cho phép nhà phát triển xử lý các side effect một cách đồng bộ trong một luồng riêng biệt, làm cho code dễ đọc và dễ quản lý hơn.
Kiểm soát luồng xử lý: Redux Saga giúp nhà phát triển kiểm soát hoàn toàn luồng xử lý của các side effect và dễ dàng trong việc xử lý các tình huống phức tạp như gọi nhiều API theo thứ tự hoặc xử lý các lỗi.
Tích hợp tốt với React JS và Redux: Redux Saga tương thích tốt với React JS và Redux, giúp nhà phát triển kiểm soát trạng thái của ứng dụng một cách hiệu quả mà không tác động đến hiệu suất [11].
KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU
Khảo sát hiện trạng
Link website:https://phongtro123.com/
Hình 3.1:Trang chủ Phongtro123.com
Các chức năng chính cho người thuê phòng
Người dùng thực hiện việc tìm kiếm thông tin phòng trọ thông qua các bộ lọc.
Hình 3.2:Thanh bộ lọc của websiteDanh sách các phòng trọ được hiển thị như hình bên dưới.
Hình 3.3:Giao diện danh sách các phòng trọ Người dùng sau khi đăng nhập có khả năng vào từng phòng để xem thông tin chi tiết.
Hình 3.4:Giao diện thông tin chi tiết của phòng
Từ đây người dùng có thể liên hệ với chủ trọ thông qua số điện thoại hoặc Zalo được hiển thị trên giao diện.
Chức năng dành cho người dùng là chủ nhà trọ
Người dùng là chủ nhà trọ có thể đăng ký tài khoản với vai trò là chỉnh chủ có thể truy cập vào các chức năng chính như hình bên dưới.
Hình 3.5:Giao diện quản lý tin đăng của của nhà trọChủ nhà trọ có thể truy cập vào “Đăng tin mới” để thực hiện đăng tin.
Hình 3.6:Giao diện đăng tin mới cho chủ nhà trọ Chủ nhà trọ cần điền đầy đủ các thông tin liên quan đến phòng cần cho thuê vào các trường như hình bên dưới.
Hình 3.7:Giao diện đăng tin mới
Hình 3.8:Giao diện đăng tin mới
Hình 3.9:Giao diện đăng tin mới Sau khi hoàn thành việc điền thông tin nhà trọ, bài đăng sẽ được hiển thị trên giao diện của website.
Hình 3.10:Giao diện bài đăng mới trên websiteChủ nhà trọ có thể quản lý thông tin liên quan đến bài đăng và lịch sử thanh toán tin.
Hình 3.12:Giao diện lịch sử thanh toán tin
Bảng 3.1: Bảng phân tích ưu điểm và nhược điểm của Phongtro123.com Ưu điểm và nhược điểm của Phongtro123.com Ưu điểm Nguồn tin đăng phòng trọ đa dạng, bao gồm nhiều khu vực, mức giá, tiện ích khác nhau.
Giao diện đơn giản, dễ thao tác, có chức năng tìm kiếm và lọc tin đăng theo nhu cầu.
Các tin đăng đều có hình ảnh thực tế phòng trọ cùng mô tả chi tiết.
Các bài đăng được cập nhật thường xuyên.
Nhược điểm Các bài đăng mang tính lừa đảo vẫn tồn tại, tiềm ẩn nguy cơ cho người dùng.
Chưa có tính năng giao dịch đặt cọc phòng trực tiếp với chủ nhà trọ.
Nhìn chung, lĩnh vực website tìm kiếm phòng trọ hiện nay trên thị trường đã và đang cung cấp một loạt các tính năng cơ bản cho người dùng, điển hình là tìm kiếm phòng trọ theo các từ khoá và bộ lọc, những tính năng đã được kiểm chứng là có hiệu quả Tuy vậy, vẫn còn đó là tiềm năng cho sự phát triển trong lĩnh vực này, phòng trọ mà không cần thông qua nền tảng thứ ba, cũng như tích hợp khả năng quản lý điện năng đối với từng phòng.
Yêu cầu hệ thống
3.2.1 Yêu cầu về chức năng
Mô hình Hệ thống website tìm kiếm phòng trọ và quản lý điện năng cần đáp ứng các yêu cầu chức năng sau: Đối tượng người dùng: Khách hàng
Bảng 3.2:Bảng yêu cầu chức năng cho khách hàng
STT Hoạt động Mô tả
1 Đăng ký, đăng nhập Đăng ký tài khoản mới để sử dụng cái tính năng của hệ thống. Đăng nhập để quản lý thông tin cá nhân và sử dụng các tính năng khác.
2 Tìm kiếm và xem thông tin phòng trọ
Tìm kiếm phòng trọ dựa trên bản đồ tương tác.
Xem được thông tin về vị trí, giá cả, mô tả, tình trạng phòng và thông tin liên hệ.
3 Đặt cọc phòng và thanh toán khi nhận phòng
Có thể tiến hành đặt cọc phòng và hoàn tất việc thanh toán nhận phòng.
4 Quản lý thông tin phòng
Xem được thông tin về phòng đã thuê, bao gồm hoá đơn hiện tại, thời hạn hợp đồng, có thể kết thúc thuê phòng/gia hạn thời gian thuê phòng.
Xem lịch sử thuê phòng.
5 Quản lý thông tin điện năng điện của phòng
Xem được thông tin về mức tiêu thụ điện năng của phòng theo thời gian và có lưu lại lịch sử dữ liệu từng tháng. Đối tượng người dùng: Chủ khu trọ
Bảng 3.3:Bảng yêu cầu chức năng cho chủ khu trọ
STT Hoạt động Mô tả
1 Đăng ký, đăng nhập Đăng ký tài khoản mới để sử dụng cái tính năng của hệ thống. Đăng nhập để quản lý thông tin cá nhân và sử dụng các tính năng khác.
2 Quản lý khu trọ Thêm mới toà nhà với thông tin chi tiết có thể tuỳ chỉnh.
Có thể chỉnh sửa thông tin hoặc xoá phòng/toà nhà đã thêm.
3 Quản lý yêu cầu đặt cọc và thanh toán nhận phòng.
Quản lý, phê duyệt các hoá đơn đặt cọc từ khách hàng.
Quản lý, phê duyệt các hoá đơn thanh toán nhận phòng từ khách hàng.
4 Quản lý doanh thu Xem được thông tin về doanh thu của từng toà theo các tuỳ chọn thời gian.
5 Quản lý thông tin điện năng của phòng.
Xem được thông tin về mức tiêu thụ điện năng của phòng theo thời gian và có lưu lại lịch sử dữ liệu từng tháng.
6 Quản lý hoá đơn Xem được thông tin hoá đơn từng phòng và gửi hoá đơn đến email của Đối tượng người dùng: Quản trị viên
Bảng 3.4:Bảng yêu cầu chức năng cho quản trị viên
STT Hoạt động Mô tả
1 Quản lý thông tin người dùng
Xem được thông tin người dùng đối với cả người thuê phòng và chủ khu trọ.
Có thể chỉnh sửa hoặc xoá tài khoản người dùng.
2 Quản lý chủ trọ Xem được thông tin của chủ khu trọ như họ tên, số điện thoại, số khu trọ hiện có, doanh thu hiện tại, …
3.2.2 Yêu cầu về kỹ thuật
Mục tiêu nghiên cứu của hệ thống:
Hoạt động ổn định: Đảm bảo hệ thống có khả năng hoạt động liên tục và ổn định.
Lưu trữ nhật ký hoạt động: Hệ thống phải có khả năng lưu trữ dữ liệu và quản lý các hoạt động của người dùng.
Bảo mật: Hệ thống phải đảm bảo tính bảo mật cao để bảo vệ dữ liệu cá nhân của người dùng và dữ liệu điện năng.
THIẾT KẾ HỆ THỐNG
Kiến trúc hệ thống
Hình 4.1:Lưu đồ kiến trúc hệ thống
Browser: Đây là nơi người dùng sẽ truy cập website tìm kiếm phòng trọ và quản lý điện năng thông qua các trình duyệt như Microsoft Edge, Google Chrome, Safari, v.v.
Trình duyệt sẽ gửi yêu cầu (requests) tới web server và nhận phản hồi (responses) để hiển thị nội dung trang web.
Mạng lưới toàn cầu kết nối các máy tính với nhau, cho phép giao tiếp giữa
Tiếp nhận các yêu cầu từ trình duyệt.
Chuyển tiếp các yêu cầu tới ứng dụng web (web application) để xử lý.
Web application chạy trên web server, gồm hai phần chính: User Interface (UI) và API.
Cung cấp giao diện người dùng, cho phép người dùng tương tác với hệ thống.
Nhận yêu cầu từ UI hoặc trực tiếp từ trình duyệt.
Giao tiếp với cơ sở dữ liệu (MongoDB) để lưu trữ và truy xuất dữ liệu.
Trả kết quả về cho UI hoặc trực tiếp cho trình duyệt.
API từ bên thứ ba được tích hợp để cung cấp các dịch vụ và tính năng mở rộng cho hệ thống Trong trường hợp của hệ thống tìm kiếm phòng trọ và quản lý điện năng, API từ bên thứ ba có thể bao gồm:
API quản lý điện năng: Cung cấp dữ liệu về lượng tiêu thụ điện năng của từng phòng trọ, giúp chủ nhà và người thuê dễ dàng theo dõi và quản lý lượng điện tiêu thụ hàng tháng.
API bản đồ: Sử dụng dịch vụ bản đồ từ Google Maps để hiển thị vị trí của các khu nhà trọ trên giao diện người dùng.
Cơ sở dữ liệu NoSQL dùng để lưu trữ các thông tin về người dùng, phòng trọ, thông tin điện năng, và các dữ liệu liên quan.
Cung cấp dữ liệu cho API khi có yêu cầu truy xuất.
Ghi nhận các thay đổi từ API khi có yêu cầu cập nhật hoặc xoá dữ liệu.
Người dùng mở trình duyệt và nhập URL của website tìm kiếm phòng trọ và quản lý điện năng.
Trình duyệt gửi yêu cầu HTTP/HTTPS qua Internet tới web server.
Web server nhận yêu cầu và chuyển tiếp tới web application để xử lý.
UI: Nếu yêu cầu liên quan đến giao diện, UI sẽ chuẩn bị các giao diện là các dòng mã HTML, CSS và JavaScript để gửi về trình duyệt.
API: Nếu yêu cầu liên quan đến dữ liệu (như tìm kiếm phòng trọ, quản lý tài khoản), API sẽ xử lý logic và có thể truy xuất dữ liệu từ MongoDB.
API gửi truy vấn tới MongoDB để lấy dữ liệu cần thiết hoặc cập nhật dữ liệu hiện có.
API: Sau khi xử lý, API gửi kết quả về cho UI hoặc trực tiếp về trình duyệt. UI: Hiển thị nội dung dựa trên dữ liệu nhận được từ API.
Trình duyệt nhận phản hồi từ web server và hiển thị nội dung trang web cho người dùng.
Thiết kế cơ sở dữ liệu
Hệ thống website tìm kiếm phòng trọ và quản lý điện năng yêu cầu người dùng phải có tài khoản để sử dụng, ngoài ra còn lưu trữ và quản lý thông tin liên quan đến phòng trọ và dữ liệu điện năng thu thập được,… thì cơ sở dữ liệu của hệ thống được thiết kế theo sơ đồ như sau:
Hình 4.2:Sơ đồ cơ sở dữ liệu Trong cơ sở dữ liệu được sử dụng cho đề tài, nhóm đã tiến hành liệt kê các mục cần có, dựa vào đó để phân tích cấu trúc các bảng cho cơ sở dữ liệu, cụ thể như sau:
Tên trường Kiểu Mô tả PK/FK
_id objectId Dùng để xác định tài ngoài người PK email string Email của người dùng password string Mật khẩu tài khoản avatar string Ảnh đại diện của người dùng FK firstName string Tên của người dùng lastName string Họ của người dùng dobString string Ngày tháng năm sinh của người dùng nationalId string Số căn cước công dân của người dùng frontId string Ảnh chụp mặt trước CCCD FK backId string Ảnh chụp mặt sau CCCD FK phoneNumberFull string Số điện thoại đầy đủ của người dùng phoneNumber object Đây là object chứa 2 phần tử:
- countryCode: Mã số điện thoại Việt Nam
- number: Số điện thoại role array Trường dữ liệu role có 3 giá trị:
- master: Quản trị viên token string Token xác thực. tokenForgotPasswo rd string Token dùng để khôi phục mật khẩu address string Địa chỉ của người dùn tokenActive string Token dùng để kích hoạt tài khoản isVerified boolean Trạng thái xác thức của người dùng signupCompleted boolean Trạng thái hoàn tất đăng ký của người dùng active boolean Trạng thái hoạt động của tài khoản room string Phòng hiện tại của người dùng (nếu có)
FK currentContract string Hợp đồng cho thuê phòng hiện tại của người dùng
FK contract string Danh sách các hợp đồng thuê phòng của người dùng
FK idDevice number Mã số đồng hồ điện phòng của người dùng (nếu có) isDeleted boolean Trạng thái xác định liệu bản ghi có bị xoá hay không (false là không bị
Tên trường Kiểu Mô tả PK/FK
_id objectId Định danh địa chỉ PK isDeleted boolean Trạng thái xác định liệu bản ghi có bị xoá hay không (false là không bị xoá) address string Thông tin địa chỉ components array Chứa các phần tử chi tiết của địa chỉ (Số nhà, tên đường, tên quận/huyện, tên thành phố, v.v.) geometry object Chứa các phần tử là toạ độ của địa chỉ
Tên trường Kiểu Mô tả PK/FK
_id objectId PK images array Ảnh ngân hàng FK isDeleted boolean Trạng thái xác định liệu bản ghi có bị xoá hay không (false là không bị xoá) user object Tên của người dùng FK bank string Mã ngân hàng branch string Tên chi nhánh bankAccountUsername string Tên tài khoản ngân hàng bankAccountNumber string Số tài khoản ngân hàng bankName string Tên ngân hàng
Tên trường Kiểu Mô tả PK/FK
_id objectId Định danh hợp đồng PK orders array Danh sách các hoá đơn hiện tại
FK images array Danh sách ảnh minh chứng
FK isCompleted boolean Trạng thái hoàn thành isActivated boolean Trạng thái kích hoạt của hợp đồng isRoomReturnDateUpdated boolean rentalPeriod number Thời hạn hợp đồng status string Trạng thái của hợp đồng. isDeleted boolean Trạng thái xác định liệu bản ghi có bị xoá hay không (false là không bị xoá) checkInTime date Thời gian xác nhận thuê phòng fullName string Tên đầy đủ của người dùng phoneNumber string Số điện thoại của người dùng bail number Tiền bảo chứng total number Tổng tiền deposit number Tiền đặt cọc phòng postCheckInCost number Tiền cọc phần còn lại thanh toán khi nhận phòng room objectId Mã của phòng được thuê
FK user objectId Người thuê phòng FK currentOrder objectId Hóa đơn hiện tại FK
Tên trường Kiểu Mô tả PK/FK id objectId Định danh toà nhà PK isDeleted boolean Trạng thái xác định liệu bản ghi có bị xoá hay không (false là không bị xoá) images array Danh sách ảnh FK roomAcreage number Diện tích phòng totalFloor number Số tầng totalRoom number Số lượng phòng availableRoom number Số phòng còn trống rentedRoom number Số phòng đã thuê price number Giá phòng minPrice number Giá phòng thấp nhất maxPrice number Giá phòng cao nhất electricityPrice number Giá điện waterPrice number Giá nước wifiPrice number Giá wifi garbagePrice number Giá dịch vụ floors array Chứa danh sách id các tầng
FK name string Tên toà nhà address objectId Địa chỉ của toà nhà FK contactPhone string Số điện thoại của chủ toà nhà owner objectId Chủ toà nhà FK description string Mô tả utilities array Chứa các danh mục cơ sở vật chất của toà nhà
Tên trường Kiểu Mô tả PK/FK
_id objectId Định danh tầng PK totalRoom number Số lượng phòng availableRoom number Số phòng trống rentedRoom number Số phòng đã thuê depositedRoom number Số phòng đã đặt cọc rooms array Danh sách id các phòng FK isDeleted boolean Trạng thái xác định liệu bản ghi có bị xoá hay không (false là không bị xoá) name string Tên tầng key string Mã số tầng expiringRoomCount number Số lượng các phòng sắp hết hạn hợp đồng cho thuê
Tên trường Kiểu Mô tả PK/FK
_id objectId Định danh phòng PK electricMeterId number Mã đồng hồ điện FK acreage number Diện tích của phòng status string Trạng thái hiện tại của phòng price number Giá phòng depositPrice number Giá đặt cọc phòng electricityPrice number Giá điện waterPrice number Giá nước vehiclePrice number Giá phương tiện images array Danh sách ảnh thực tế của phòng
FK isCompleted boolean rentedBy objectId Định danh người thuê phòng
FK previousElectricityNumber number Số điện tiêu thụ của tháng trước currentElectricityNumber number Số điện tiêu thụ của tháng hiện tại isDeleted boolean Trạng thái xác định liệu bản ghi có bị xoá hay không (false là không bị xoá) name string Tên phòng key string Mã phòng utilities array Danh sách cơ sở vật chất của phòng availableDate date Ngày phòng sẽ trống
Tên trường Kiểu Mô tả PK/FK
_id objectId Định danh hóa đơn PK isCompleted boolean Trạng thái hoàn thành của hóa đơn amount number Tiền phòng waterCost number Tiền nước wifiCost number Tiền wifi vehicleCost number Tiền phương tiện garbageCost number Tiền dịch vụ paymentMethod string Phương thức thanh toán
UNC objectId Định danh ảnh ủy nhiệm chi FK isDeleted boolean Trạng thái xác định liệu bản ghi có bị xoá hay không (false là không bị xoá) user objectId Người thuê phòng FK contract objectId Hóa đơn hiện tại FK description string Mô tả thông tin hóa đơn type string Phương thức hóa đơn:
- deposit: Hóa đơn đặt cọc
- monthly: Hóa đơn tiền phòng hàng tháng
- postCheckInCost: Tiền cọc còn lại thanh toán khi nhận phòng
Tên trường Kiểu Mô tả PK/FK
Sequence Diagram
4.3.1 Người dùng đăng nhập hệ thống
Hình 4.3:Lưu đồ người dùng đăng nhập hệ thống
4.3.2 Người dùng đăng xuất hệ thống
Hình 4.4:Lưu đồ người dùng đăng xuất hệ thống
4.3.3 Người dùng xem thông tin phòng và tiến hành đặt cọc thuê phòng
Hình 4.5:Lưu đồ người dùng tiến hành đặt cọc thuê phòng
4.3.4 Người dùng quản lý thông tin tài khoản
Hình 4.6:Người dùng quản lý thông tin tài khoản
4.3.5 Người dùng xem thông tin phòng đã thuê và thanh toán tiền phòng hàng tháng
Hình 4.7:Người dùng xem thông tin phòng và thanh toán tiền phòng
4.3.6 Người dùng quản lý thông tin điện năng
Hình 4.8:Lưu đồ người dùng quản lý điện năng
4.3.7 Người dùng quản lý hoá đơn
Hình 4.9:Lưu đồ người dùng quản lý hoá đơn
4.3.8 Người dùng báo cáo sự cố
Hình 4.10:Lưu đồ người dùng báo cáo sự cố
4.3.9 Chủ nhà trọ tạo khu nhà trọ mới
Hình 4.11:Chủ nhà trọ tạo toà nhà mới
4.3.10 Chủ nhà trọ quản lý và chỉnh sửa thông tin khu nhà trọ
Hình 4.12:Lưu đồ chủ nhà trọ chỉnh sửa thông tin khu nhà trọ
4.3.11 Chủ nhà trọ thêm tầng cho khu nhà trọ
Hình 4.13:Lưu đồ củ nhà trọ thêm tầng cho khu nhà trọ
4.3.12 Chủ nhà trọ thêm phòng mới cho khu nhà trọ
Hình 4.14:Lưu đồ chủ nhà trọ thêm phòng mới
4.3.13 Chủ nhà trọ quản lý lịch sử thuê phòng
Hình 4.15:Lưu đồ chủ nhà trọ quản lý lịch sử thuê phòng
4.3.14 Chủ nhà trọ quản lý hoá đơn
Hình 4.16:Lưu đồ chủ nhà trọ quản lý hoá đơn
4.3.15 Chủ nhà trọ quản lý đặt cọc
Hình 4.17:Lưu đồ chủ nhà trọ quản lý đặt cọc
4.3.16 Chủ nhà trọ quản lý doanh thu
Hình 4.18:Lưu đồ chủ nhà trọ quản lý doanh thu
4.3.17 Chủ nhà trọ quản lý sự cố
Hình 4.19:Lưu đồ chủ nhà trọ quản lý sự cố
4.3.18 Quản trị viên quản lý tài khoản người dùng
Hình 4.20:Lưu đồ quản trị viên quản lý tài khoản người dùng
4.3.19 Quản trị viên quản lý thông tin các chủ nhà trọ
Hình 4.21:Lưu đồ quản trị viên quản lý thông tin các chủ trọ
4.3.20 Quản trị viên quản lý thông tin tiền cọc
Hình 4.22:Lưu đồ quản trị viên quản lý tiền cọc
4.3.21 Quản trị viên quản lý danh sách sự cố
Hình 4.23:Lưu đồ quản trị viên quản lý danh sách sự cố
4.3.22 Quản trị viên quản lý thông tin hoá đơn
Hình 4.24:Lưu đồ quản trị viên quản lý thông tin hoá đơn
CÀI ĐẶT VÀ KIỂM THỬ
Công cụ
Bảng 5.1:Bảng các công cụ triển trai
Công nghệ
Bảng 5.2:Bảng các công nghệ sử dụng
- định nghĩa mỗi mục trong danh sách.