1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động

112 53 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Xây Dựng Ứng Dụng Tìm Kiếm Nhà Trọ Trên Di Động
Tác giả Lê Hoàng Công, Nguyễn Quang Thọ
Người hướng dẫn TS. Lê Văn Vinh
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Thông Tin
Thể loại Khóa Luận Tốt Nghiệp Kỹ Sư CNTT
Năm xuất bản 2020
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 112
Dung lượng 7,89 MB

Cấu trúc

  • Page 1

  • Page 1

  • Page 1

  • Page 1

  • Page 1

Nội dung

Tính cấp thiết của đề tài

Sự phát triển nhanh chóng của công nghệ di động đã tạo ra nhiều thách thức cần giải quyết trong các lĩnh vực như đời sống xã hội và quản lý kinh tế Một trong những nhu cầu cấp thiết là tìm kiếm nhà trọ, đặc biệt ở các thành phố lớn như TP.HCM và Hà Nội, nơi đối tượng chính là sinh viên mới nhập học, công nhân và nhân viên làm việc xa nhà Do đó, chúng tôi đã quyết định nghiên cứu và xây dựng ứng dụng tìm kiếm nhà trọ trên di động nhằm giải quyết vấn đề này.

Mục đích của đề tài

Mục tiêu nghiên cứu là khám phá các phương pháp tiếp cận ngôn ngữ lập trình Kotlin và sử dụng cơ sở dữ liệu MySQL để phát triển ứng dụng Android tìm kiếm nhà trọ Ngoài ra, dự án còn kết hợp NodeJS để xây dựng Backend và sử dụng Python cho trang quản lý của Admin Để đạt được các mục tiêu này, cần tiến hành nghiên cứu và triển khai các nội dung liên quan.

• Tìm hiểu và nghiên cứu về ngôn ngữ lập trình kotlin trên nền tảng di động (Android)

• Tìm kiếm và so sánh các dữ liệu từ các app đã được dùng để từ đó rút ra được ý tưởng để xây dựng ứng dụng

• Tìm hiểu CSDL MySql để sử dụng lưu dữ liệu thu thập được cho ứng dụng

• Tìm hiểu và nghiên cứu về NodeJS trên nền tảng Web để ứng dụng viết các Api (Backend)

• Tìm hiểu và nghiên cứu về python để thực hiện viết Web cho Admin cũng như viết api và nghiên cứu về hệ thống recommendation system

• Xây dựng ứng dụng tìm kiếm nhà trọ trên nền tảng di động và Web.

Kết quả dự kiến đạt được

Chúng tôi đã phát triển một ứng dụng Android sử dụng công nghệ Kotlin, NodeJS và Python, nhằm phục vụ người dùng Ứng dụng bao gồm hai phần: phần ứng dụng Android dành cho người dùng và phần website cho Super Admin quản lý thông tin người dùng cũng như thông tin của Admin Admin có khả năng quản lý thông tin người dùng và thông tin các nhà trọ trong khu vực mà mình phụ trách.

Phương pháp nghiên cứu

- Thu thập và phân tích các tài liệu và thông tin liên quan đến đề tài

- Xem xét, lựa chọn các phương pháp để giải quyết vấn đề

- Triển khai xây dựng chương trình ứng dụng

- Kiểm tra thử nghiệm và đánh giá kết quả.

Bố cục báo cáo

Báo cáo dự kiến gồm 3 phần và 5 chương

Bài viết này bao gồm các chương chính như sau: Chương 1 trình bày cơ sở lý thuyết, Chương 2 khảo sát hiện trạng và xác định yêu cầu, Chương 3 mô hình hóa yêu cầu, Chương 4 thiết kế phần mềm, Chương 5 thiết kế giao diện, và cuối cùng, Chương 6 cài đặt và kiểm thử phần mềm Những nội dung này sẽ giúp người đọc nắm bắt quy trình phát triển phần mềm một cách rõ ràng và hệ thống.

CƠ SỞ LÝ THUYẾT

KOTLIN

Kotlin là ngôn ngữ lập trình kiểu tĩnh chạy trên máy ảo Java (JVM) và có khả năng biên dịch sang mã nguồn JavaScript hoặc sử dụng cơ sở hạ tầng trình biên dịch LLVM, được phát triển bởi JetBrains Mặc dù cú pháp của Kotlin không tương thích hoàn toàn với Java, nhưng thư viện chuẩn Kotlin được thiết kế để tương tác với mã Java và sử dụng các mã từ Java Class Library, như collections framework Kotlin tích cực sử dụng suy luận kiểu để xác định kiểu của giá trị và biểu thức không được nêu rõ, giúp giảm tính dài dòng so với Java, vốn yêu cầu khai báo kiểu một cách dư thừa cho đến phiên bản 10 Mã Kotlin có thể chạy trên JVM đến phiên bản Java 11 mới nhất.

- Một số ưu điểm của Kotlin:

 Kotlin có khả năng tương thích cao với Java

 An toàn hơn Java: tránh được các lỗi null pointer

 Kotlin hỗ trợ tốt hơn cho lập trình chức năng.

TỔNG QUAN VỀ XMPP

Giao thức XMPP (Extensible Messaging and Presence Protocol) là một công nghệ mở rộng cho nhắn tin tức thời, cho phép hiện diện, trò chuyện nhóm, gọi thoại và video, đồng thời cung cấp khả năng định tuyến dữ liệu XML một cách linh hoạt.

Một số lợi ích của XMPP:

 Miễn phí - các giao thức XMPP là miễn phí, mở, công khai và dễ hiểu

Lực lượng Chuyên trách về Kỹ thuật Liên mạng (IETF) đã công nhận các giao thức truyền phát XML như một công nghệ hiện diện và nhắn tin tức thời.

Công nghệ Jabber/XMPP, được phát triển bởi Jeremie Miller vào năm 1998, đã chứng minh được tính ổn định và sự phát triển mạnh mẽ Hiện nay, hàng trăm nhà phát triển đang tham gia vào việc cải tiến công nghệ này, với hàng chục ngàn máy chủ XMPP hoạt động trên Internet.

Mạng XMPP có cấu trúc phân cấp tương tự như email, cho phép bất kỳ ai thiết lập máy chủ XMPP riêng Điều này mang lại cho cá nhân và tổ chức khả năng kiểm soát toàn bộ trải nghiệm giao tiếp của họ.

Bảo mật là một yếu tố quan trọng trong hệ thống XMPP, cho phép các máy chủ được cách ly khỏi mạng công cộng, như trong mạng nội bộ của công ty XMPP tích hợp các công nghệ bảo mật mạnh mẽ như SASL và TLS, đảm bảo an toàn cho dữ liệu Hơn nữa, cộng đồng phát triển XMPP đang nỗ lực cải thiện bảo mật thông qua mã hóa đầu cuối.

 Có thể mở rộng - bất kỳ ai cũng có thể xây dựng chức năng tùy chỉnh trên các giao thức cốt lõi

XMPP không chỉ dừng lại ở việc nhắn tin, mà còn hỗ trợ nhiều ứng dụng linh hoạt khác như quản lý mạng, cung cấp nội dung, công cụ cộng tác, chia sẻ tệp, chơi trò chơi, giám sát hệ thống từ xa, dịch vụ web, phần mềm trung gian nhẹ và điện toán đám mây, mang lại nhiều lợi ích cho người dùng.

Nhiều công ty và dự án mã nguồn mở đang sử dụng XMPP để phát triển và triển khai các ứng dụng và dịch vụ thời gian thực, tạo nên sự phong phú trong lĩnh vực này.

TỔNG QUAN VỀ WEBRTC

WebRTC (Web Real-Time Communication) là một API web do World Wide Web Consortium (W3C) phát triển, cho phép các trình duyệt giao tiếp trực tiếp với nhau thông qua Video Call, Voice Call và chuyển dữ liệu "Peer-to-Peer" (P2P) mà không cần cài đặt thêm plugins hay phần mềm hỗ trợ bên ngoài.

WebRTC, được phát triển từ năm 2009 bởi nhóm kỹ sư của Google Hangouts, đã ra đời với mục tiêu thay thế Flash trong việc truyền tải video và hình ảnh trên web Nhóm đã quyết định tạo ra một sản phẩm độc lập, mang lại giải pháp tối ưu cho việc giao tiếp trực tuyến.

Năm 2010, Google đã thâu tóm hai công ty On2 và Global IP Solutions (GIPS), qua đó khai thác công nghệ truyền dữ liệu thời gian thực làm nền tảng cho các sản phẩm và dịch vụ của mình.

6 cho WebRTC Đến tháng 5 năm 2011, dự án nguồn mở hỗ trợ giao tiếp thời gian thực giữa trình duyệt mang tên WebRTC mới chính thức được ra mắt

Vào tháng 10 năm 2011, W3C và IETF đã hợp tác phát triển các giao thức kết nối thời gian thực, dẫn đến sự ra mắt phiên bản đầu tiên của WebRTC Đến tháng 11 cùng năm, Chrome 23 trở thành trình duyệt đầu tiên tích hợp sẵn WebRTC, đánh dấu bước tiến quan trọng trong công nghệ giao tiếp trực tuyến.

WebRTC nổi bật với khả năng truyền tải video, âm thanh và dữ liệu theo thời gian thực giữa nhiều thiết bị mà không cần trung gian hay cài đặt thêm plugin.

Một số lợi ích của WebRTC

WebRTC là một dự án mã nguồn mở miễn phí do Google phát triển, cung cấp công cụ truyền thông thời gian thực hoàn toàn miễn phí và tương thích với mọi trình duyệt.

 Hỗ trợ đa nền tảng: có thể sử dụng trên cả web và mobile

Bảo mật voice và video là rất quan trọng, và giao thức SRTP (Secure Real-Time Transport Protocol) được sử dụng để mã hóa và xác thực dữ liệu media Giao thức này giúp ngăn chặn khả năng nghe lén trong quá trình thực hiện các cuộc gọi video hoặc âm thanh, đảm bảo an toàn cho thông tin truyền tải.

WebRTC được đánh giá cao nhờ khả năng hoạt động mà không cần plugin hay phần mềm hỗ trợ bên thứ ba Điều này không chỉ mang lại sự tiện lợi mà còn tối ưu hóa tốc độ và tiết kiệm chi phí cho người sử dụng.

 Tương đối dễ sử dụng: WebRTC có thể được tích hợp trong các dịch vụ web bằng cách dùng JavaScript APIs, các Framework có sẵn

WebRTC tối ưu hóa việc sử dụng băng thông, hỗ trợ đa dạng các kiểu media và thiết bị đầu cuối khác nhau Công nghệ này hoạt động hiệu quả trong mọi điều kiện mạng, đảm bảo trải nghiệm người dùng mượt mà và ổn định.

NODEJS

Node.js là một nền tảng phần mềm lý tưởng để phát triển các ứng dụng internet mở rộng, đặc biệt là máy chủ web Được viết bằng JavaScript, Node.js sử dụng kỹ thuật lập trình theo sự kiện và nhập/xuất không đồng bộ, giúp tối ưu hóa hiệu suất và giảm thiểu chi phí tổng thể.

7 phí và tối đại khả năng mở rộng Node.js bao gồm có V8 JavaScript engine của

Google, libUV, và vài thư viện khác [1]

Node.js được tạo bởi Ryan Dahl từ năm 2009, và phát triển dưới sự bảo trợ của Joyent [1]

Mục tiêu ban đầu của Dahl là phát triển một trang web có khả năng gửi thông báo đẩy tương tự như các ứng dụng web như Gmail Sau khi thử nghiệm với nhiều ngôn ngữ lập trình, Dahl đã quyết định chọn Javascript cho dự án này.

API Nhập/Xuất không đầy đủ Điều này cho phép anh có thể định nghĩa một quy ước

Nhập/Xuất điểu khiển theo sự kiện, non-blocking [1]

Vài môi trường tương tự được viết trong các ngôn ngữ khác bao gồm Twisted cho Python, Perl Object Environment cho Perl, libevent cho C và

EventMachine là một thư viện cho Ruby, khác với hầu hết các chương trình JavaScript, Node.js không chạy trên trình duyệt mà hoạt động trên server Node.js tận dụng nhiều kỹ thuật từ CommonJS và cung cấp môi trường REPL để kiểm thử tương tác.

Node.js được InfoWorld bình chọn là "Công nghệ của năm" năm 2012 [1]

 Một số khái niệm trong Nodejs

Event: NodeJS hỗ trợ các sự kiện trong các ứng dụng rất hoàn hảo Mỗi hành động trong máy tính được gọi là 1 sự kiện (event) [2]

Hàng đợi sự kiện trong NodeJS là nơi lưu trữ các sự kiện, hoạt động theo quy tắc FIFO (First In First Out), đảm bảo rằng những yêu cầu đến trước sẽ được xử lý trước.

Callbacks trong NodeJS cho phép máy chủ xử lý nhiều yêu cầu từ người dùng đồng thời, nâng cao khả năng phục vụ "Callback" là một hàm được gọi khi NodeJS hoàn thành một tác vụ cụ thể, giúp tối ưu hóa hiệu suất của các API.

Message: nội dung thông báo tương ứng với từng Callbacks [1]

Blocking I/O là cơ chế phổ biến trong các ngôn ngữ lập trình server-side, giúp quản lý các yêu cầu gửi đến server Cơ chế này cho phép thực hiện yêu cầu tiếp theo chỉ khi yêu cầu hiện tại đã được xử lý xong.

Trong môi trường lập trình NodeJS, nếu các yêu cầu xử lý của request đến sớm tiêu tốn nhiều thời gian, các request đến sau sẽ phải chờ đợi Để khắc phục vấn đề thời gian chờ này, NodeJS áp dụng cơ chế xử lý Non-Blocking I/O, giúp quản lý hiệu quả các request và tối ưu hóa thời gian phản hồi.

Thread Pool là một chương trình C++ tích hợp trong NodeJS, cho phép xử lý đa luồng Đây là môi trường chính để xử lý tất cả các tác vụ trên server NodeJS, với mỗi tác vụ được thực hiện trên các luồng khác nhau.

Event Loop: là một vòng lặp vô tận, nó chuyển các yêu câu đã nhận sang Thread

Mỗi yêu cầu trong hệ thống Pool sẽ tự động đăng ký một Callback, và khi yêu cầu đó được xử lý xong, hàm Callback tương ứng sẽ được thực thi.

1.4.2 Nguyên tắc hoạt động của cơ chế bất đồng bộ [3]

Bất đồng bộ (Asynchronous) là khái niệm chỉ việc các hành động không diễn ra theo thứ tự, cho phép chúng xảy ra đồng thời Mặc dù các hành động có thể bắt đầu theo trình tự, nhưng thời gian kết thúc của chúng không nhất thiết phải đồng bộ Điều này có nghĩa là một hành động có thể bắt đầu và thậm chí kết thúc trước khi hành động trước đó hoàn thành Nhờ vào cơ chế xử lý bất đồng bộ, thời gian chờ kết quả được tối ưu hóa, giúp hệ thống vẫn hoạt động hiệu quả trong khi chờ phản hồi.

Hình 1 1: Nguyên tắc hoạt động của cơ chế bất đồng bộ

Heap là vùng nhớ được sử dụng để lưu trữ kết quả tạm thời phục vụ cho việc thực thi các hàm trong stack Kích thước của heap càng lớn thì khả năng tính toán và xử lý dữ liệu càng cao.

Stack là vùng nhớ đặc biệt trên chip máy tính, hỗ trợ thực thi các hàm, tức là nhóm lệnh trong chương trình Khi một hàm được triệu gọi, nó sẽ được đưa vào stack, một hàng đợi kiểu LIFO (Last In First Out), nghĩa là phần tử vào trước sẽ ra sau Hàm chỉ được lấy ra khỏi stack khi hoàn thành và thực hiện lệnh return.

Js runtime engine là khu thực thi câu lệnh js gồm Heap và stack

Web APIs là nơi chức các tác vụ được cung cấp bởi trình duyệt

Callback queue: là hàng đợi công việc kiểu FIFO(first in first out) Vào trước ra trước

Event Loop: là đọc Stack và Event Queue Nếu nhận thấy Stack rỗng nó sẽ nhặt

Trong JavaScript, khi một sự kiện xảy ra, nó sẽ được đưa vào Event Queue cùng với handler (callback hoặc listener) liên quan và sau đó được đẩy vào Stack Quá trình thực thi hàm trong JS chỉ dừng lại khi hàm hoàn thành thông qua return hoặc throw exception, có nghĩa là trong khi một hàm đang chạy, không có hàm nào khác có thể được thực thi, và dữ liệu tạm thời của hàm sẽ không bị thay đổi hay dừng lại cho đến khi hoàn tất Điều này dẫn đến sự tồn tại của một vòng lặp liên tục để thực thi Queue, được gọi là Event-loop.

 Đầu tiên: các câu lệnh được chạy lần lượt từ trên xuông dưới Các câu lệnh sẽ được ném vào hàng đợi queue

Khi bắt đầu, stack vẫn trống rỗng, vì vậy event loop sẽ lấy một tác vụ từ queue và đưa vào stack Điều này có nghĩa là lệnh đầu tiên sẽ được đưa vào stack để xử lý.

 Bước 3: sau khi xử lý xong thì tác vụ 1 sẽ được lấy ra khỏi stack Và cho tác vụ

2 vào Khi nào hàng đợi queue rỗng thì nó sẽ được đưa trở lại hàng đợi

 Bước 4: Thực hiện tác vụ 3 tương tự tác vụ 1 In ra cau lenh 3

 Bước 5: lúc này hàng đợi rỗng nên tác vụ 2 sẽ được đưa trở lại queue và sau đó được đưa vào stack để thực hiện

Có thể chạy trên nhiều nền tảng hệ điều hành khác nhau từ Windows cho tới Linux, OS X

Xử lý giao tiếp từ client tới máy chủ theo thời gian thực (RealTime) Đơn luồng nhưng khả năng mở rộng cao

Cộng đồng sử dụng NodeJS lớn mạnh cũng giúp các lập trình viên mới tiếp xúc với NodeJS dễ hòa nhập, học hỏi và tháo gỡ khó khăn

NodeJS cung cấp nhiều công cụ hỗ trợ tích hợp sẵn, giúp lập trình viên dễ dàng kiểm tra mã nguồn với Jasmine để tạo unit test Bên cạnh đó, Node Package Manager (npm) là công cụ hữu ích cho việc cài đặt các thư viện mới phục vụ cho dự án.

ExpressJS

Express.js is a powerful framework built on Node.js that facilitates web and mobile development It supports various HTTP methods and middleware, enabling the creation of robust and user-friendly APIs.

Express.js là một framework nhỏ gọn nhưng linh hoạt, được phát triển dựa trên nền tảng Node.js Nó mang lại nhiều tính năng mạnh mẽ, hỗ trợ hiệu quả cho việc phát triển ứng dụng web và di động.

Cấu hình/lập trình các xử lý cho các HTTP request ở tất cả các URL khác nhau

Kết hợp với các công cụ kết xuất giao diện (“View” rendering) để phản hồi dữ liệu thông qua việc chèn dữ liệu vào các mẫu (templates)

Cấu hình chung toàn bộ ứng dụng website như một cổng (port) kết nối và quy định các thông tin phản hồi (response) tương ứng

Thêm thông tin bổ sung vào request và response trong quá trình xử lý thông qua các trung gian (middleware) là cần thiết khi request vẫn đang trong giai đoạn xử lý.

Python

Python là một ngôn ngữ lập trình hướng đối tượng phổ biến, được sử dụng để phát triển các tiện ích hệ thống và mã trên Internet Được sáng lập bởi Guido van Rossum vào năm 1990 tại Amsterdam, Python hỗ trợ tích hợp với C và C++ và có kiểu dữ liệu động cùng cơ chế cấp phát bộ nhớ tự động Ngôn ngữ này được phát triển trong khuôn khổ dự án mã nguồn mở dưới sự quản lý của tổ chức phi lợi nhuận Python Software Foundation Phiên bản mới nhất hiện tại của Python là 3.4.x.

Python là một ngôn ngữ lập trình với cú pháp đơn giản và rõ ràng, giúp lập trình viên mới dễ dàng tiếp cận và học hỏi.

Python ban đầu được phát triển để hoạt động trên nền tảng Unix, nhưng đã mở rộng ra nhiều hệ điều hành khác như MS-DOS, Mac OS, OS/2, Windows và Linux Dù có sự đóng góp của nhiều cá nhân, Guido van Rossum vẫn là tác giả chính và giữ vai trò quan trọng trong việc định hướng phát triển của Python.

1.6.2 Một số tính chất của python

Python là ngôn ngữ lập trình thông dịch, cho phép xử lý lệnh ngay tại thời điểm chạy chương trình (runtime) mà không cần biên dịch trước, tương tự như Perl và PHP.

Python mang đến tính năng tương tác, cho phép người dùng thực hiện lệnh trực tiếp tại dấu nhắc lệnh của trình thông dịch Điều này giúp việc kiểm tra và thử nghiệm mã trở nên dễ dàng và nhanh chóng hơn.

Python is Object-Oriented: Python hỗ trợ mạnh cho phong cách lập trình hướng đối tương và kỹ thuật lập trình gói mã trong đối tượng

Python là ngôn ngữ lập trình lý tưởng cho người mới bắt đầu, nhưng đồng thời cũng rất mạnh mẽ trong việc phát triển đa dạng ứng dụng Nó có thể được sử dụng để tạo ra các chương trình xử lý văn bản đơn giản, ứng dụng web, và cả các trò chơi.

Python là một ngôn ngữ lập trình thân thiện với người dùng, dễ học và dễ đọc Ngôn ngữ này sử dụng nhiều từ khóa tiếng Anh, đồng thời hạn chế các ký hiệu và cấu trúc cú pháp phức tạp so với các ngôn ngữ lập trình khác.

Mã nguồn của Python là tương đối dễ để bảo trì và duy trì và có khả năng mở rộng

Python sở hữu một thư viện tiêu chuẩn phong phú và tương thích với nhiều hệ điều hành hiện nay, bao gồm UNIX, Windows và Macintosh Đây chính là một trong những ưu điểm nổi bật của Python.

Python có thể được sử dụng như ngôn ngữ script, hoặc ngôn ngữ biên dịch, nhờ đó mà ta có thể buil các chương trình lớn trên nó

Khi sử dụng chế độ Interactive, người dùng có thể nhập kết quả từ các đầu cuối khác nhau vào chương trình Python, điều này giúp việc kiểm tra và gỡ lỗi mã trở nên dễ dàng hơn.

Python cho phép người dùng tích hợp các module vào chương trình, đồng thời cung cấp một bộ sưu tập các module chuẩn để lập trình viên có thể tái sử dụng Những module này mang lại nhiều chức năng hữu ích, bao gồm hàm truy xuất tập tin, lời gọi hệ thống và hỗ trợ lập trình mạng (socket).

Python cung cấp giao diện cho tất cả các cơ sở dữ liệu thương mại lớn

Có thế dễ dàng tích hợp với C, C++, COM, CORBA, ActiveX, Java

Ngoài các tính năng chính nêu trên Python còn nhiều các tính năng khác nữa.

Giới thiệu về hệ thống gợi ý sản phẩm (Recommendation system)

Về bản chất chúng ta có thể coi một hệ thống gợi ý giống như một người mai mối

Hệ thống gợi ý dự đoán sở thích của người dùng và tìm kiếm những đối tượng tiềm năng phù hợp để đưa ra đề xuất Ví dụ, nếu bạn là một chàng trai độc thân thích những cô gái xinh đẹp và năng động, việc tìm kiếm sẽ trở nên khó khăn vì không thể biết hết mọi người xung quanh Lúc này, một hệ gợi ý giống như một bà mối sẽ rất hữu ích Để hiểu rõ hơn, chúng ta hãy xem xét một ví dụ trong lĩnh vực thương mại điện tử, một lĩnh vực quen thuộc với những người làm trong ngành IT.

Hệ thống gợi ý sản phẩm trên các trang thương mại điện tử, như Amazon, giúp người tiêu dùng dễ dàng tìm thấy những sản phẩm tương tự mà họ có thể thích Điều này không chỉ hỗ trợ người mua trong việc ra quyết định mà còn mang lại lợi ích cho người bán hàng, tạo ra một trải nghiệm mua sắm tiện lợi và hiệu quả hơn.

Để hiểu rõ sở thích của khách hàng, cần phân tích dữ liệu từ quá khứ như điểm đánh giá, thời gian khách hàng duyệt từng sản phẩm và số lần nhấp vào sản phẩm Những thông tin này sẽ giúp xác định các sản phẩm mà khách hàng yêu thích nhất.

 Từ đó có thể dự đoán được người dùng có thể sẽ thích những sản phẩm nào khác và đưa ra gợi ý phù hợp cho họ

1.7.2 Các thành phần cơ bản của một hệ thống gợi ý sản phẩm

Để xây dựng một hệ thống thông tin mới, việc xác định các thành phần cần thiết là rất quan trọng Những điều vĩ đại thường bắt nguồn từ những yếu tố nhỏ bé, do đó, việc chú trọng vào từng chi tiết sẽ giúp tạo ra một hệ thống hoàn chỉnh và hiệu quả.

Hình 1 2: Hình ảnh minh họa cho gợi ý sản phẩm người dùng

Khi áp dụng phương pháp Machine Learning vào hệ thống gợi ý, chúng ta cần xem xét ba đặc điểm cơ bản sau đây.

 Thứ nhất: Điều đầu tiên cần phải quan tâm đó chính là ***người dùng (user)***

Chúng ta cần chú ý đến mục tin, bao gồm sản phẩm trên các trang bán hàng và bài hát trên các nền tảng nghe nhạc Việc quan tâm đến các mục tin là rất quan trọng, vì nếu không có chúng, chúng ta sẽ không có items để gợi ý cho người dùng.

Chúng ta cần chú ý đến phản hồi của từng người dùng đối với mục tin, bao gồm điểm đánh giá và các chỉ số thể hiện sự quan tâm Việc định lượng các đại lượng này là cần thiết để có cơ sở gợi ý cho người dùng một cách hiệu quả.

Hình ảnh minh họa cách biểu diễn dữ liệu và chuẩn hóa dữa liệu:

Hình 1 3: Hình ảnh minh họa ma trận lưu trữ dữ liệu

Trong đó: It1 là items 1, U1 là User1

1.7.3 Giải thuật lọc cộng tác

Lọc cộng tác được phát triển dựa trên lý thuyết đồng sở thích giữa các người dùng khác nhau, cho phép hệ thống đưa ra gợi ý dựa trên hành vi và sở thích chung của họ.

Nếu hai người dùng u1 và u2 có những đánh giá hoặc hành vi tương tự với n sản phẩm, họ cũng sẽ có xu hướng đánh giá hoặc hành động tương tự với các sản phẩm khác Câu nói này có thể được diễn đạt như sau: "Cho tôi biết bạn bè của bạn, tôi sẽ cho bạn biết bạn là ai."

Phân loại lọc cộng tác:

 Lọc cộng tác dựa trên người dùng - User based approach

 Lọc cộng tác dựa trên sản phẩm - Item based approach

1.7.4 Lợi ích của hệ thống gợi ý sản phẩm trong ứng dụng tìm kiếm nhà trọ

Gia tăng doanh số cho thuê trọ là lý do quan trọng nhất đối với các trang thương mại điện tử lớn Những trang này có khả năng bán được nhiều mặt hàng và sản phẩm hơn so với những trang không sử dụng hệ thống gợi ý (RS) Bằng cách áp dụng các thuật toán tối ưu, RS giúp cung cấp những sản phẩm phù hợp với nhu cầu của người dùng, từ đó tạo điều kiện thuận lợi cho việc tăng doanh số.

Hình 1 4: Hình ảnh minh họa gợi ý người dùng sử dụng lọc cộng tác

Một hệ thống tư vấn (RS) được thiết kế và cài đặt hiệu quả sẽ nâng cao trải nghiệm người dùng, làm cho họ cảm thấy thú vị và chính xác hơn Nhờ vào những đặc điểm nổi bật, người dùng sẽ dễ dàng sử dụng ứng dụng một cách thông dụng hơn.

Để nắm bắt nhu cầu của khách hàng, việc phân tích hành vi người dùng là rất quan trọng Qua đó, chúng ta có thể hiểu rõ hơn về sở thích, tính cách và nhu cầu của họ Từ những thông tin này, chúng ta có thể đưa ra các gợi ý thông minh và ưu đãi hấp dẫn nhằm phục vụ tốt hơn cho người dùng.

KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

KHẢO SÁT HIỆN TRẠNG

Hình 1 5: Hình ảnh giao diện trang chủ và user App Ahana

Hình 1 6: Giao diện trang lọc, tiềm kiếm của app Ahana

⮚ Giao diện: Đẹp, đơn giản

Các mục phân bố vừa phải

Tìm phòng trọ (tìm phòng gấp, tìm phòng gần nơi làm việc, tìm theo bộ lọc) Đăng phòng để thuê

Hình 1 7: Hình ảnh giao diện trang chủ và chi tiết nhà trọ ủa app Nhà trọ 360

Hình 1 8: Hình ảnh giao diện tìm kiếm và lọc của app Nhà trọ 360

Xem phòng mới đăng, phòng ở ghép

Tìm kiếm theo từ khóa, tìm khu vực lân cận

Gọi điện, chỉ đường, chia sẻ phòng trọ

Hình 1 9: Hình ảnh giao diện tìm kiếm và lọc của app Nhà tốt

Hình 1 10: Hình ảnh lọc trên bản đồ của app Nhà tốt

- Ưu điểm: đơn giản, dễ sử dụng

- Nhược điểm: Thiết kế chưa được bắt mắt, thu hút vào người sử dụng

- Ưu điểm: có chức năng tìm kiếm nhà trọ quanh vị trí muốn tìm bằng google map

- Nhược điểm: Nhược điểm: Dữ liệu tìm kiếm quá ít, chức năng tìm kiếm google map chưa được tối ưu, không có chức năng đăng nhập

Hình 1 11: Hình ảnh giao diện chi tiết nhà trọ và lọc của app Thuê nhà

Hình 1 12: Hình ảnh giao diện cá nhân và đăng nhập của app Thuê nhà

- Ưu điểm: Giao diện bắt mắt, thiết kế màu sắc hài hoà

- Ưu điểm: có chức năng tìm kiếm và lọc, có chức năng đăng nhập

- Nhược điểm: Chức năng lọc còn hạn chế.

XÁC ĐỊNH YÊU CẦU

Xây dựng ứng dụng Android cho người dùng và website cho admin giúp tạo ra sự tương tác hiệu quả giữa hai bên Người dùng có thể dễ dàng tìm kiếm nhà trọ thông qua ứng dụng, trong khi admin quản lý toàn bộ dữ liệu của người dùng Ngoài ra, super admin có khả năng giám sát và quản lý cả người dùng lẫn admin, đảm bảo hệ thống hoạt động trơn tru và hiệu quả.

MÔ HÌNH HÓA YÊU CẦU

Lược đồ user case của User và Admin

Hình 1 13: Lược đồ Usercase của User

Hình 1 14: Lược đồ Usercase của Admin

Thống kê nghiệp vụ cho từng đối tượng

Là tất cả những đối tượng sử dụng ứng dụng này để tìm kiếm, xem thông tin, đăng nhà trọ

STT Tên nghiệp vụ Loại nghiệp vụ Mã quy định Mã giao diện

1 Đăng ký Lưu trữ QD_DK GD_DK

2 Đăng nhập Phân quyền QD_DN GD_DN

3 Xem danh sách nhà trọ

Tra cứu QD_DSNT GD_DSNT

4 Tìm kiếm nhà trọ Tra cứu QD_TK GD_TK

5 Xem chi tiết nhà trọ Tra cứu QD_CTNT GD_CTNT

6 Bình luận nhà trọ Lưu trữ QD_CTNT GD_CTNT

7 Đánh giá nhà trọ Tính toán, lưu trữ

8 Đăng nhà trọ Lưu trữ QD_DT GD_DT

9 Xem nhà trọ đã đăng Tra cứu QD_XT GD_XT

10 Sửa nhà trọ Lưu trữ QD_ST GD_ST

11 Quên mật khẩu Lưu trữ QD_QMK GD_QMK

12 Xem nhà trọ trên bản đồ

Tra cứu QD_XTBD GD_XTBD

13 Đổi thông tin cá nhân

Lưu trữ QD_DTT GD_DTT

14 Đổi mật khẩu Lưu trữ QD_DMK GD_DMK

15 Gọi video đến chủ trọ

Lưu trữ QD_GV GD_GV

16 Nhắn tin đến chủ trọ Lưu trữ QD_NT GD_NT

17 Đặt mật khẩu mới Lưu trữ QD_DMKM GD_DMKM

Bảng 1 1: Bảng thống kê nghiệp vụ của user

Bảng quy định của người dùng:

STT Mã quy định Tên quy định

Người dùng có thể đăng nhập vào hệ thống bằng cách nhập tài khoản và mật khẩu hợp lệ, sau đó nhấn nút "Đăng nhập", hoặc chọn phương thức đăng nhập nhanh bằng cách nhấn nút "Login with Google".

Để đăng ký tài khoản, người dùng cần nhấn vào “Chưa có tài khoản? Đăng ký ngay”, sau đó điền đầy đủ thông tin hợp lệ bao gồm họ, tên, ngày sinh, địa chỉ, quận, số điện thoại, email, mật khẩu và xác nhận mật khẩu Cuối cùng, nhấn nút Đăng ký để hoàn tất quá trình đăng ký.

3 QD_DSNT Xem danh sách nhà trọ

Người dùng mở app để xem danh sách nhà trọ ở màn hình home

4 QD_TK Tìm kiếm nhà trọ

Người dùng nhấn vào thanh tìm kiếm, sau đó nhập từ khoá sau đó nhấn enter Những nhà trọ trùng với từ khóa sẽ hiện lên

5 QD_CTNT Xem chi tiết nhà trọ

Người dùng chọn một nhà trọ bất kỳ và click, ứng dụng sẽ đi đến màn hình chi tiết nhà trọ

6 QD_CTNT Bình luận nhà trọ

Người dùng nhập nội dung vào thanh bình luận, sau đó nhấn nút gửi để bình luận

7 QD_CTNT Đánh giá nhà trọ

Người dùng chọn số sao cần đánh giá để đánh giá

Để đăng nhà trọ, người dùng cần truy cập vào giao diện trang chủ hoặc cá nhân, sau đó chọn mục đăng trọ Tiếp theo, hãy nhập thông tin cần thiết vào các trường như tiêu đề, tên chủ, số điện thoại, địa chỉ, quận, giá phòng, diện tích, giá điện, giá nước và các tiện ích có sẵn Cuối cùng, người dùng chỉ cần thêm hình ảnh và nhấn tick trên thanh actionbar để hoàn tất việc đăng trọ.

9 QD_XT Xem nhà trọ đã đăng

Tại giao diện cá nhân người dùng nhấn phòng đã đăng để xem danh sách nhà trọ đã đăng

10 QD_ST Sửa nhà trọ

Để chỉnh sửa thông tin nhà trọ đã đăng, bạn chỉ cần nhấn vào nhà trọ cần sửa trong giao diện xem Sau khi vào màn hình sửa trọ, hãy thực hiện các chỉnh sửa cần thiết và nhấn tick để xác nhận thay đổi.

11 QD_QMK Quên mật khẩu

Khi người dùng quên mật khẩu, họ chỉ cần nhấn vào tùy chọn "quên mật khẩu" trên giao diện đăng nhập Ứng dụng sẽ chuyển đến màn hình quên mật khẩu, nơi người dùng nhập email và nhấn "lấy mã xác nhận" Sau khi nhận mã xác nhận hợp lệ, người dùng nhập mã và nhấn nút xác nhận để tiếp tục Cuối cùng, ứng dụng sẽ dẫn đến màn hình để đặt mật khẩu mới.

12 QD_XTBD Xem nhà trọ trên bản đồ

Tại giao diện home, nhấn tìm xung quanh, ứng dụng đi đến màn hình bản đồ

13 QD_DTT Đổi thông tin cá nhân

Để chỉnh sửa thông tin cá nhân, bạn hãy truy cập vào giao diện cá nhân và nhấn vào mục thông tin cá nhân Tại đây, ứng dụng sẽ đưa bạn đến màn hình thông tin cá nhân, nơi bạn có thể sửa đổi các trường cần thiết Sau khi hoàn tất, hãy nhấn vào biểu tượng tick để xác nhận việc sửa đổi thông tin cá nhân.

14 QD_DMK Đổi mật khẩu

Để thay đổi mật khẩu, bạn hãy truy cập vào giao diện cá nhân, chọn tùy chọn đổi mật khẩu Sau đó, điền vào các trường yêu cầu gồm mật khẩu cũ, mật khẩu mới và xác nhận mật khẩu mới Cuối cùng, nhấn nút đổi mật khẩu để hoàn tất quá trình.

15 QD_GV Gọi video đến chủ trọ

Tại giao diện nhắn tin, nhấn icon video để bắt đầu gọi video tới chủ trọ

16 QD_NT Nhắn tin đến chủ trọ

Để nhắn tin với chủ trọ, bạn hãy vào giao diện chi tiết nhà trọ, nhấn vào biểu tượng điện thoại, sau đó chọn tùy chọn nhắn tin Tiếp theo, điền nội dung tin nhắn vào thanh tin nhắn và nhấn gửi để hoàn tất việc gửi tin nhắn.

17 QD_DMKM Đặt mật khẩu mới Điền mật khẩu mới và xác nhận mật khẩu sau đó nhấn nút đổi mật khẩu để đổi mật khẩu

Bảng 1 2: Bảng mô tả chi tiết thống kê nghiệp vụ của User

STT Tên nghiệp vụ Loại nghiệp vụ

Mã quy định Mã biểu mẫu Ghi chú 1-3 Các nghiệp vụ liên quan đến phân quyền

1 Đăng nhập Lưu trữ A-DN GD-A-DN U-DN

2 Xem trang chủ A-XTC GD-A-XTC U-XTC

3 Chỉnh sửa thông tin cá nhân

4-6 Các nghiệp vụ liên quan đến quản lý nhà trọ

4 Xem trang quản lý nhà trọ

5 Duyệt bài đăng nhà trọ

6 Xóa bài đăng nhà trọ

7-8 Các nghiệp vụ liên quan đến quản lý user

7 Xem trang quản lý user

8 Xóa User Lưu trữ A-XU GD-A-XU

9-10 Các ghiệp vụ liên quan đến thống kê

9 Thống kê user Tra cứu A-TKU GD-A-

Tra cứu A-TKNT GD-A-TKNT

Bảng 1 3: Bảng thống kê nghiệp vụ của admim

3.2.3 Quản trị viên cao nhất (Super Admin)

STT Tên nghiệp vụ Loại nghiệp vụ

Mã quy định Mã biểu mẫu Ghi chú 1-3 Các nghiệp vụ liên quan đến phân quyền

1 Đăng nhập Lưu trữ A-DN GD-A-DN U-DN

2 Xem trang chủ A-XTC GD-A-XTC U-XTC

3 Chỉnh sửa thông tin cá nhân

4-6 Các nghiệp vụ liên quan đến quản lý nhà trọ

4 Xem trang quản lý nhà trọ

5 Duyệt bài đăng nhà trọ

6 Xóa bài đăng nhà trọ

7-8 Các nghiệp vụ liên quan đến quản lý user

7 Xem trang quản lý user

8 Xóa User Lưu trữ A-XU GD-A-XU

9-10 Các ghiệp vụ liên quan đến thống kê

9 Thống kê user Tra cứu A-TKU GD-A-

Tra cứu A-TKNT GD-A-TKNT

11-13 Các nghiệp vụ liên quan đến quản lý Admin

Tra cứu A-XTCA GD-A-XTCA

12 Thêm Admin Lưu trữ A-TA GD-A-TA

13 Xóa Admin A-XA GD-A-XA

Bảng 1 4: Bảng thống kê nghiệp vụ chi tiết của Super Admin

THIẾT KẾ PHẦN MỀM

LƯỢC ĐỒ LỚP (CLASS DIAGRAM)

4.1.1 Lược đồ lớp cho user

Hình 1 15: Hình ảnh lược đồ lớp cho User

LƯỢC ĐỒ TUẦN TỰ (SEQUENCE DIAGRAM)

Hình 1 16: Hình ảnh Sequence diagram đăng nhập

Hình 1 17: Hình ảnh Sequence diagram đăng kí

Hình 1 18: Hình ảnh Sequence diagram đăng xuất

4.2.4 Tìm và lọc nhà trọ

Hình 1 19: Hình ảnh Sequence diagram tìm và lọc trọ

Hình 1 20: Hình ảnh Sequence diagram Đăng trọ

4.2.6 Xem nhà trọ trên bản đồ

Hình 1 21: Hình ảnh Sequence diagram Xem danh sách nhà trọ trên bản đồ

4.2.7 Sửa thông tin cá nhân

Hình 1 22: Hình ảnh Sequence diagram Sửa thông tin cá nhân

4.2.8 Sửa thông tin nhà trọ

Hình 1 23: Hình ảnh Sequence diagram sửa thông tin nhà trọ

4.2.9 Xem chi tiết nhà trọ

Hình 1 24: Hình ảnh Sequence diagram xem chi tiết nhà trọ

4.2.10 Thống kê nhà trọ (Admin và Super Admin)

Hình 1 25: Hình ảnh Sequence diagram thống kê nhà trọ

4.2.11 Thống kê User (Admin và Super Admin)

Hình 1 26: Hình ảnh Sequence diagram thống kê user

4.2.12 Duyệt bài đăng (Admin và Super Admin)

Hình 1 27: Hình ảnh Sequence diagram duyệt bài đăng

4.2.13 Xóa bài đăng (Admin và Super Admin)

Hình 1 28: Hình ảnh Sequence diagram xóa bài đăng

4.2.14 Xóa user (Admin và Super Admin)

Hình 1 29: Hình ảnh Sequence diagram xóa user

4.2.15 Đăng nhập (Admin và Super Admin)

Hình 1 30: Hình ảnh Sequence diagram đăng nhập

4.2.16 Đăng xuất (Admin và Super Admin)

Hình 1 31: Hình ảnh Sequence diagram đăng xuất

4.2.17 Sửa thông tin cá nhân (Admin và Super Admin)

Hình 1 32: Hình ảnh Sequence diagram sửa thông tin cá nhân

Hình 1 33: Hình ảnh Sequence diagram thêm admin

Hình 1 34: Hình ảnh Sequence diagram xóa admin

Lược đồ cơ sở dữ liệu (CSDL)

Hình 1 35: Lược đồ cơ sở dữ liệu

Tên thuộc tính Kiểu Mô tả idUser int(11) Mã User

Username varchar(50) Tên đăng nhập

Password varchar(50) Mật khẩu đăng nhập

Tên thuộc tính Kiểu Mô tả idUser Int(11) Mã người dùng

Ho Varchar(10) Họ người dùng

Ten Varchar(10) Tên người dùng

NgaySinh Date Ngày sinh của người dùng

DiaChi Longtext Địa chỉ người dùng

Thanhpho Int(11) Mã thành phố

Sdt Varchar(13) số điện thoại của người dùng photo Varchar(200) Địa chỉ hình ảnh đại diện của người dùng

Tên thuộc tính Kiểu Mô tả idThanhpho int(11) Mã thành phố

Tenthanhpho varchar(50) Tên Thành Phố

Tên thuộc tính Kiểu Mô tả idQuan int(11) Mã quận

Tên thuộc tính Kiểu Mô tả

Idqlnhatro Int(11) Mã quản lý nhà trọ idUser Int(11) Mã user idNhatro Int(11) Mã nhà trọ

Tên thuộc tính Kiểu Mô tả idNhatro Int(11) Mã nhà trọ

Tenchutro Varchar(60) Tên của chủ nhà trọ

Sdt Varchar(13) Số điện thoại của chủ trọ

Diachi Longtext Địa chỉ idQuan Int(11) Mã quận idThanhpho Int(11) Mã Thành Phố

LocalX Double Tọa độ nhà trọ theo X

LocalY Double Tọa độ nhà trọ theo Y

Date Date Ngày đăng bài state Int(11) Trạng thái của phòng trọ (còn phòng hoặc hết phòng)

Title Text Tiêu đề bài đăng

Tên thuộc tính Kiểu Mô tả idHinhanh Int(11) Mã hình ảnh idNhaTro int(11) Mã nhà trọ

Hinhanh Text Đường dẫn hình ảnh nhà trọ

Tên thuộc tính Kiểu Mô tả idDanhgia Int(11) Mã đánh giá idNguoidung Int(11) Mã người dùng idNhatro Int(11) Mã nhà trọ

Vote Int(11) Đánh giá sao cho nhà trọ

Tên thuộc tính Kiểu Mô tả idNhatro Int(11) Mã nhà trọ

Dientich Double Diện tích phòng trọ

Phong Int(11) Số phòng của nhà trọ

Nhavesinh Int(11) Số lượng nhà vệ sinh của nhà trọ

Mota Longtext Mô tả khái quát về nhà trọ

Gia Double Giá nhà trọ

Maylanh Int(11) Có máy lạnh hay không

Giuxe Int(11) Có bãi giữ xe hay không

Nuocnong Int(11) Có nước nóng hay không

Dien Int(11) Giá tiền điện

Nuoc Int(11) Giá tiền nước

Loainha Varchar(45) Loại nhà trọ ( nguyên căn, nhà trọ, chung cư….)

Wifi Int(11) Có wifi hay không

Gio Int(11) Giờ giấc có tự do hay không

Chungchu Int(11) Có ở chung với chủ hay không

Tên thuộc tính Kiểu Mô tả idBl_Nhatro Int(11) Mã Bl_Nhatro idBinhluan Int(11) Mã Bình Luận idNhatro Int(11) Mã nhà trọ

Bảng 1 14: Bảng tbl_bl_nhatro

Tên thuộc tính Kiểu Mô tả idBl_Nguoidung int(11) Mã của bảng Bl_Nguoidung idBinhluan int(11) Mã bình luận idNguoidung int(11) Mã người dùng

Bảng 1 15: Bảng tbl_bl_nguoidung

Tên thuộc tính Kiểu Mô tả idBinhluan int(11) Mã của bảng bình luận

Noidung Longtext Nội dung bình luận

Date Date Ngày bình luận

Tên thuộc tính Kiểu Mô tả idAdmin Int(11) Mã Admin

Username Varchar(45) Tên đăng nhập

Password Varchar(45) Mật khẩu đăng nhập

Phanquyen Int(11) Phân quyên admin

Tên thuộc tính Kiểu Mô tả idAdmin Int(11) Mã Admin

NgaySinh Date Ngày Sinh Admin

DiaChi Longtext Địa chỉ Admin idQuan Int(11) Mã quận idThanhpho Int(11) Mã thành phố

Sđt varchar(13) Số điên thoại

THIẾT KẾ GIAO DIỆN

GIAO DIỆN USER

Hình 1 36: Hình ảnh giao diện Home

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Hiển thị nhà trọ trên bản đồ

ImageView Đi đến màn hình bản đồ

2 Tìm kiếm ImageVIew Đi đến màn hình tìm kiếm

3 Đăng phòng ImageView Nếu đã đăng nhập thì đi đến màn hình đăng phòng

Nếu chưa đăng nhập thì yêu cầu người dùng đăng nhập

4 Lọc nhà trọ theo quận

ImageView Đi đến màn hình tìm kiếm và hiển thị danh sách nhà trọ theo quận đã chọn

5 Xem chi tiết nhà trọ

View Đi đến màn hình chi tiết nhà trọ

6 Chuyển sang tab tìm kiếm

BottomNavigation Đi đến màn hình tìm kiếm

7 Chuyển sang tab cá nhân

BottomNavigation Đi đến màn hình cá nhân

Bảng 1 19: Bảng mô tả chi tiết giao diện Home

Hình 1 37: Hình ảnh giao diện tìm kiếm

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Tìm kiếm theo địa chỉ đã nhập

Tìm nhà trọ theo địa chỉ đã nhập

2 Lọc ImageButton Hiển thị dialog lọc

3 Xem chi tiết nhà trọ View Đi đến màn hình chi tiết nhà trọ

4 Chuyển sang tab màn hình chính

BottomNavigation Đi đến màn hình home

5 Chuyển sang tab trang cá nhân

BottomNavigation Đi đến màn hình cá nhân

Bảng 1 20: Bảng mô tả chi tiết giao diện tìm kiếm

Hình 1 38: Hình ảnh giao diện cá nhân

STT Tên xử lý Kiểu đối tượng

1 Đăng nhập TextView Đi đến màn hình đăng nhập

2 Đăng phòng TextView Đi đến màn hình đăng phòng

3 Xem những phòng đã đăng

TextView Đi đến màn hình quản lý phòng trọ

4 Sửa thông tin cá nhân TextView Đi đến màn hình sửa thông tin cá nhân

5 Đổi mật khẩu TextView Đi đến màn hình đổi mật khẩu

6 Đăng xuất TextView Đi đến màn hình đăng xuất

Bảng 1 21: Bảng mô tả chi tiết giao diện cá nhân

5.1.4 Giao diện chi tiết nhà trọ

Hình 1 39: Hình ảnh giao diện chi tiết nhà trọ

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Chỉ đường đến nhà trọ MenuItem Mở Google map chỉ đường đến nhà trọ

2 Hiển thị dialog chọn cách liên lạc

MenuItem Hiển thị dialog chọn cách liên lạc

3 Bình luận EditText Bình luận vào bài viết

4 Đánh giá RatingBar Đánh giá bài viết

5 Chọn cách liên lạc SingleChoiceList Chọn cách liên lạc

6 Xác nhận cách liên lạc TextView Xác nhận cách liên lạc

Bảng 1 22: Bảng mô tả chi tiết giao diện chi tiết nhà trọ

Hình 1 40: Hình ảnh giao diện bản đồ

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Tìm kiếm SearchView Tìm kiếm nhà trọ theo địa chỉ đã nhập

2 Lọc ImageButton Lọc nhà trọ

3 Hiển thị thông tin nhà trọ

Marker Hiển thị thông tin nhà trọ

4 Xem chi tiết nhà trọ InfoWindowMarker Đi đến màn hình chi tiết nhà trọ

5 Xem vị trí hiện tại FloatingActionButton Di chuyển map đến vị trí hiện tại

Bảng 1 23: Bảng mô tả chi tiết giao diện bản đồ

Hình 1 41: Hình ảnh giao diện lọc

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Xoá lọc Button Xoá bộ lọc

2 Lọc Button Áp dụng lọc

Bảng 1 24: Bảng mô tả chi tiết giao diện lọc

Hình 1 42: Hình ảnh giao diện đăng trọ

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Đăng trọ MenuItem Đăng trọ

2 Chọn địa chỉ Button Chọn địa chỉ trên bản đồ

3 Chọn hình ảnh Image Chọn hình ảnh

Bảng 1 25: Bảng mô tả chi tiết giao diện đăng trọ

5.1.8 Giao diện xem nhà trọ đã đăng

Hình 1 43: Hình ảnh giao diện xem nhà trọ đã đăng

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Xem chi tiết nhà trọ View Đi đến màn hình sửa nhà trọ

Bảng 1 26: Bảng mô tả chi tiết giao diện đăng nhà trọ

5.1.9 Giao diện sửa nhà trọ

Hình 1 44: Hình ảnh giao diện sửa nhà trọ

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Sửa trọ MenuItem Sửa trọ

Bảng 1 27: Bảng mô tả chi tiết giao diện sửa nhà trọ

Hình 1 45: Hình ảnh giao diện đăng nhập

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Đăng nhập Button Đăng nhập vào hệ thống

2 Quên mật khẩu TextView Đi đến màn hình quên mật khẩu

3 Đăng nhập bằng google Button Đăng nhập bằng google

4 Đăng ký ImageView Đi đến màn hình đăng ký

Bảng 1 28: Bảng mô tả chi tiết giao diện đăng nhập

5.1.11 Giao diện quên mật khẩu

Hình 1 46: Hình ảnh giao diện quên mật khẩu

STT Tên xử lý Kiểu đối tượng

Button Gửi email chứa mã xác nhận đến người dùng

2 Xác nhận Button Nếu mã xác nhận đúng thì đi đến màn hình đổi mật khẩu Nếu mã xác nhận sai thì thông báo mã sai

Bảng 1 29: Bảng mô tả chi tiết giao diện quên mật khẩu

5.1.12 Giao diện đổi mật khẩu

Hình 1 47: Hình ảnh giao diện đổi mật khẩu

STT Tên xử lý Kiểu đối tượng

Button Đổi mật khẩu nếu mật khẩu cũ đúng và 2 mật khẩu mới trùng nhau

Bảng 1 30: Bảng mô tả chi tiết giao diện đổi mật khẩu

5.1.13 Giao diện đặt mật khẩu mới

Hình 1 48: Hình ảnh giao diện đặt mật khẩu mới

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Đặt mật khẩu Button Đặt mật khẩu mới cho tài khoản

Bảng 1 31: Bảng mô tả chi tiết giao diện đặt lại mật khẩu

Hình 1 49: Hình ảnh giao diện đăng ký

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Chọn avatar ImageView Mở thư viện chọn hình ảnh

2 Chọn ngày sinh ImageButton Mở dialog chọn ngày

3 Đăng ký Button Đăng ký user

Bảng 1 32: Bảng mô tả chi tiết giao diện đăng ký

5.1.15 Giao diện danh sách tin nhắn

Hình 1 50: Hình ảnh giao diện danh sách tin nhắn

STT Tên xử lý Kiểu đối tượng

1 Tìm kiếm người dùng MenuItem Hiển thị thanh tìm kiếm, tìm kiếm người dùng

2 Tạo tin nhắn mới MenuItem Tạo tin nhắn mới

3 Xem danh sách người dùng

MenuItem Xem danh sách người dùng đã nhắn gần đây

4 Xem lại tin nhắn View Đi đến màn hình nhắn tin

Bảng 1 33: Bảng mô tả chi tiết giao diện xem danh sách tin nhắn

5.1.16 Giao diện xem tin nhắn

Hình 1 51: Hình ảnh giao diện xem tin nhắn

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Gọi video MenuItem Gọi video

2 Gửi tin nhắn Image Gửi tin nhắn

3 Gửi hình ảnh Image Mở thư viện để chọn hình ảnh gửi

Bảng 1 34: Bảng mô tả chi tiết giao diện xem tin nhắn

5.1.17 Giao diện nhận cuộc gọi

Hình 1 52: Hình ảnh giao diện nhận cuộc gọi

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Từ chối cuộc gọi ImageView Từ chối cuộc gọi

2 Trả lời cuộc gọi ImageView Trả lời cuộc gọi

Bảng 1 35: Bảng mô tả chi tiết giao diện nhận cuộc gọi

Hình 1 53: Hình ảnh giao diện gọi

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Điều chỉnh khung hình ImageVIew Điều chỉnh khung hình

2 Tắt micro ImageView Tắt micro

3 Tắt camera ImageView Tắt camera

4 Kết thúc cuộc gọi ImageView Kết thúc cuộc gọi

5 Chia sẻ màn hình ImageView Chia sẻ màn hình

6 Thay đổi camera ImageView Thay đổi camera

Bảng 1 36: Bảng mô tả chi tiết giao diện gọi

GIAO DIỆN ADMIN

Hình 1 54: Hình ảnh giao diện đăng nhập Admin

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Nhập username Textbox Dùng để nhập tên đăng nhập

2 Nhập password Textboxx Dùng để nhập mật khẩu

3 Đăng nhập Button Click vào để đăng nhập vào trang web

Bảng 1 37: Bảng mô tả chi tiết giao diện đăng nhập Admin

Hình 1 55: Hình ảnh giao diện trang chủ Admin

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Trở về trang chủ Link Điều chỉnh về lại trang chủ

Bảng 1 38: Bảng mô tả chi tiết giao diện trang chủ Admin

5.2.3 Giao diện sửa đổi thông tin

Hình 1 56: Hình ảnh giao diện sửa thông tin Admin

STT Tên xử lý Kiểu đối tượng

1 Nhập tên admin Textbox Dùng để nhập tên của admin

2 Nhập ngày sinh Textbox Dùng để nhập ngày sinh

3 Chọn quận Selectbox Dùng để lựa chọn quận

4 Nhập số điện thoại Textbox Dùng nhập số điện thoại

5 Nhập địa chỉ Textbox Dùng nhập địa chỉ

6 Chọn thành phố Selectbox Dùng để chọn thành phố

7 Lưu thông tin thay đổi

Button Dùng để lưu thông tin thay đổi xuống

Bảng 1 39: Bảng mô tả chi tiết giao diện sửa thông tin Admin

5.2.4 Giao diện quản lý nhà trọ

Hình 1 57: Hình ảnh giao diện quản lý nhà trọ Admin

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Tìm kiếm Textbox Tìm kiếm những dữ liệu nhập vào

2 Hủy bài Button Hủy bài đăng

3 Xóa bài Button Xóa bài đăng

4 Chuyển trang trước Button Chuyển về trang trước

5 Chuyển trang Button Chuyển về trang sau

Bảng 1 40: Bảng mô tả chi tiết giao diện quản lý nhà trọ Admin

5.2.5 Giao diện quản lý User

Hình 1 58: Hình ảnh giao diện quản lý user Admin

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Tìm kiếm Textbox Tìm kiếm những dữ liệu nhập vào

2 Phân dữ liệu Selectbox Chọn hiển thị số lượng dữ liệu theo mong muốn

3 Xóa bài Button Xóa User

4 Phân trang Button Chuyển về trang trước

5 Phân trnag Button Chuyển về trang sau

Bảng 1 41: Bảng mô tả chi tiết giao diện quản lý user Admin

5.2.6 Giao diện quản lý Admin

Hình 1 59: Hình ảnh giao diện quản lý admin SuperAdmin

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Tìm kiếm Textbox Tìm kiếm những dữ liệu nhập vào

2 Phân dữ liệu Selectbox Chọn hiển thị số lượng dữ liệu theo mong muốn

3 Xóa bài Button Xóa User

4 Phân trang Button Chuyển về trang trước

5 Phân trang Button Chuyển về trang sau

6 Thêm admin Button Thêm admin

Bảng 1 42: Bảng mô tả chi tiết giao diện quản lý admin SuperAdmin

Hình 1 60: Hình ảnh giao diện thêm admin SuperAdmin

STT Tên xử lý Kiểu đối tượng Diễn giải

1 Ghi tên admin Textbox Dùng để nhập tên của admin

2 Nhập ngày sinh Textbox Dùng để nhập ngày sinh

3 Nhập quận Selectbox Dùng để nhập quận

4 Nhập số điện thoại Textbox Dùng để nhập số điện thoại

5 Nhập địa chỉ Textbox Dùng để nhập địa chỉ

6 Nhập thành phố Textbox Dùng để nhập thành phố

7 Phân quyền admin Selectbox Dùng để phân quyền admin

8 Nhập username Textbox Dùng để nhập username

9 Nhập password Textbox Dùng để nhập password

10 Thêm admin Button Thêm admin

Bảng 1 43: Bảng mô tả chi tiết giao diện thêm admin SuperAdmin

Triển khai hệ thống gợi ý cho người dùng (RS) [5]

5.3.1 Ứng dụng thuật toán Collaborative Filtering Recommend System

⁕ Thuật toán Pearson correlation được sử dụng rộng rãi trong nghiên cứu, là một thuật toán phổ biến cho collaborative filtering

Hệ số tương quan Pearson, hay còn gọi là phân tích tương quan Pearson, là một công cụ hữu ích để đo lường mức độ tương quan giữa hai người dùng và các thuộc tính của họ, chẳng hạn như các bài báo được đọc từ một bộ sưu tập blog Thuật toán này hoạt động dựa trên nguyên tắc đo lường sự phụ thuộc tuyến tính giữa hai biến, do đó, phân tích tương quan Pearson cũng thường được xem như là phân tích hồi quy đơn giản.

5.3.1.2 Tính toán sự tương quan giữa hai người dùng

⁕ Trong bài này chúng ta sẽ sử dụng độ tương tự dựa vào sản phẩm với nhau (items-items)

⁕ Xem mỗi thông tin của nhà trọ là 1 vector Chúng ta sẽ tính khoảng cánh giữa hai vector đó để suy ra độ tương phản:

 Khoảng cách càng nhỏ => càng gần nhau => độ tương tự càng lớn

 Khoảng cách càng lớn => càng xa nhau => độ tương tự càng nhỏ

 Dientich: Diện tích nhà trọ

 Phong: Số lượng phòng nhà trọ

 Nhavesinh: Số lượng nhà vệ sinh

 Maylanh: Có máy lạnh hay không

 Giuxe: Có chỗ giữ xe hay không

 Nuocnong: Có nước nóng hay không

 Wifi: Có wifi hay không

 Gio: Giờ giấc có tự do hay không

 Chungchu: Có chung chủ hay không

⁕ Trong bài này chúng ta dùng khoảng cách Ơ-clit để tính toán độ phương phản này, Công thức tổng quát của Ơ-clit là:

Hình 1 61: Hình ảnh minh họa công thức tính của Ơ-clit

5.3.1.3 Tính toán độ tương quan giữa hai nhà trọ dựa vào các đặc tính của nhà trọ

B1: Lấy toàn bộ dữ liệu của các nhà trọ

B2: Chuẩn hóa dữa liệu của mỗi nhà trọ theo vector

B3: Tạo một ma trận 2 chiều để chứa giá trị sau khi tính toán

B4: Tính toán từng vector 1 với nhau rồi sau đó ghi kết quả vào mảng 2 chiều B5: Sắp xếp kết quả và đưa ra danh sách gợi ý

KIỂM THỬ PHẦN MỀM

Cài đặt

⁕ Máy phải có cài đặt mpn

⁕ Máy phải có cài đặt Nodejs

⁕ Máy phải có cài đặt Android studio

⁕ Máy phải có cài đặt pycharm

Clone hoặc dowload project từ link github: https://github.com/Tho391/NhaTroSVKLTN

Bước 2: Ở phần server chúng ta mở thư mục “nhatrosinhvienserver” lên và click mở terminal sau đó chạy dòng lệnh “node server.js” sẽ được như hình sau

Hình 1 62: Hình ảnh minh họa chạy dòng lệnh “node server.js”

Bước 3: ở phần app chúng ta mở thư mục app lên bằng android studio và sau đó run app

Bước 4: ở phần admin chúng ta mở pycharm lên và mở thư mục quanlynhatro sau đó mở terminal trong pycharm lên và chạy dòng lệnh

“python manage.py runserver” chúng ta sẽ được như hình sau

Hình 1 63: Hình ảnh minh họa chạy dòng lệnh "python manage.py runserver"

Kiểm thử

Để đảm bảo sản phẩm đáp ứng các yêu cầu thiết kế và phần mềm, cần xác định chiến lược kiểm tra phù hợp và đánh giá mức độ rủi ro Việc chuẩn bị và phân chia test case cho các thành viên trong nhóm là rất quan trọng Trong quá trình kiểm thử, cần theo dõi, báo cáo và sửa lỗi, ưu tiên những lỗi nghiêm trọng Quá trình này sẽ được lặp lại cho đến khi chương trình hoàn thiện, đáp ứng đầy đủ yêu cầu mà không phát sinh thêm test case mới, hoặc đến khi thời gian kiểm thử kết thúc.

Phân tích yêu cầu là bước quan trọng trong việc đọc hiểu và nghiên cứu tài liệu đặc tả của dự án Qua quá trình này, cần xác định rõ các yêu cầu mà dự án đề ra, bao gồm cả yêu cầu kiểm thử chức năng và phi chức năng.

Lập kế hoạch kiểm thử là bước quan trọng trong quản lý dự án, bao gồm việc xác định phạm vi công việc, thời gian thực hiện và phương pháp tiếp cận Cần phân bổ nguồn lực hợp lý để đảm bảo công việc kiểm thử được thực hiện hiệu quả Đồng thời, việc thiết kế công việc test cũng cần được lên kế hoạch cụ thể để đạt được kết quả tối ưu.

Thiết kế kịch bản kiểm thử bao gồm việc viết test case, chuẩn bị dữ liệu kiểm thử như test data và test script Quá trình này cần tổng hợp lại các test case, xem xét và bổ sung để giảm thiểu sai sót và rủi ro trong tương lai.

Thực hiện kiểm thử bao gồm việc thực hiện các test case theo thiết kế và mức độ ưu tiên đã xác định Sau đó, so sánh kết quả thực tế với kết quả mong đợi, ghi lại các kết quả kiểm thử, tổng hợp thông tin và báo cáo kết quả.

Phân tích kết quả kiểm thử: Từ những kết quả không đạt yêu cầu, tiến hành sửa lỗi và bổ sung test case nếu có phát sinh

Kiểm thử lại lỗi là quá trình thực hiện kiểm tra các test case không đạt yêu cầu trước đó, cùng với những test case mới phát sinh sau khi đã sửa lỗi.

Khi tất cả các test case đều đạt yêu cầu mà không phát sinh thêm test case nào, và các tiêu chí đề ra cho ứng dụng được đáp ứng đầy đủ, quá trình kiểm thử sẽ chính thức kết thúc.

ID Mô tả testcase Quy trình Kết quả mong đợi Kết quả thực tế

Kiểm thử chức năng đăng nhập bằng tài khoản và mật khẩu

2 Nhập tài khoản, mật khẩu

App chuyển sang màn hình trang chủ

Chức năng hoạt động đúng như mong đợi

Kiểm thử chức năng đăng nhập bằng google

2 Nhập tài khoản, mật khẩu

3 Nhấn nút "Sign in with Google

App chuyển sang màn hình trang chủ

Chức năng hoạt động đúng như mong đợi

Kiểm tra chức năng tìm kiếm, lọc, sắp xếp nhà trọ ở màn hình bản đồ

1 Đăng nhập thành công vào app

2 Thay đổi sắp xếp theo giá, theo diện tích, giá phòng, khu vực

3 Xem kết quả nhà trọ hiển thị trên giao diện

1 Hiển thị kết quả danh sách nhà trọ ở mục kết quả và đánh dấu vị trí các nhà trọ tìm được trên bản đồ

2 Danh sách kết quả nhà trọ thay đổi theo tiêu chí lọc của

Chức năng hoạt động đúng như mong đợi

4 Click vào nhà trọ để xem thông tin cơ bản của nhà trọ người dùng

3 Thông tin cơ bản của nhà trọ được hiển thị ở popup mới theo đúng nhà trọ người dùng chọn

Kiểm tra chức năng xem thông tin chi tiết nhà trọ

1 Ở màn hình trang chủ, nhấn vào nút "Chi tiết"

1 Hiển thị thông tin nhà trọ ở màn hình đúng với nhà trọ mà người dùng chọn

Chức năng hoạt động đúng như mong đợi

Kiểm tra chức năng gọi điện cho chủ trọ

1 Ở màn hình chi tiết nhà trọ, nhấn vào icon gọi

2 Sau khi người dùng đóng quảng cáo, số điện thoại hiển thị cho người dùng thấy

Chức năng hoạt động đúng như mong đợi

Bảng 1 44: Kiểm thử phần mềm

Kết quả đạt được

Hiểu và vận dụng các thư viện Retrofit, Coil, Rubber Picker, Bubble Navigation, Dexter, QuickBlox trong việc xây dựng ứng dụng android

Hiểu biết về XMPP và WebRTC là yếu tố quan trọng trong việc phát triển tính năng nhắn tin và gọi video call Việc áp dụng những công nghệ này vào ứng dụng sẽ giúp nâng cao trải nghiệm người dùng một cách hiệu quả.

Sử dụng Google AdMob, Google Map và Google Play để tạo doanh thu cho ứng dụng Nâng cao kỹ năng cá nhân bằng cách lập trình với Kotlin, làm việc với Google Play và Google AdMob, cũng như tích hợp các dịch vụ bên thứ ba như QuickBlox cho tính năng chat và video call Học cách đăng nhập, quảng cáo AdMob và đưa ứng dụng lên Google Play để tối ưu hóa hiệu suất và doanh thu.

Sử dụng được NodeJS để viết api

Sử dụng được Python để lập trình web

Ưu nhược điểm của đề tài

- Ưu điểm: ã Đỏp ứng nhu cõ̀u tỡm kiếm nhà trọ của người dựng ã Giao diện trực quan, dễ sử dụng ã Hoàn thành cỏc tớnh năng:

 Xem và tìm kiếm nhà trọ

 Bình luận, đánh giá trong các bài đăng nhà trọ

 Chat, video call giữa người tìm trọ và chủ trọ

 Người dùng có thể quản lý nhà trọ đã đăng, thông tin của mình

 Đăng nhập, đăng ký bằng google

 Có tính năng gợi ý nhà trọ cho người dùng giúp người dùng dễ dàng tìm kiếm được nhà trọ theo mong muốn

Nhược điểm của ứng dụng là tính năng video call vẫn chưa ổn định và cần được hoàn thiện thêm Mặc dù đã tìm hiểu và giải quyết được vấn đề quên mật khẩu, nhưng do dịch vụ miễn phí nên nhà cung cấp thường gửi tin nhắn xác nhận chậm.

Hướng phát triển của đề tài

- Thêm tính năng tìm bạn chung

- Thêm tính năng thống kê

[1] https://vi.wikipedia.org/wiki/Node.js

[2] https://o7planning.org/vi/11953/huong-dan-nodejs-eventemitter

[3] https://viblo.asia/p/nhung-dieu-can-biet-ve-nodejs-XL6lAypmlek

[4] https://topdev.vn/blog/express-js-la-gi

[5].https://viblo.asia/p/lam-the-nao-de-xay-dung-mot-recommender-system-rs- phan-2-4dbZNxom5YM

[6] Kotlin Programming Language https://kotlinlang.org/

[7] Android Developers https://developer.android.com/

[9] Google Developers https://developers.google.com/

[10] Quickblox https://docs.quickblox.com/docs

[11] Material Design https://material.io/

[12] Rubber Picker https://github.com/Chrisvin/RubberPicker

[13] Bubble Navigation https://github.com/gauravk95/bubble-navigation

[14] Material Spinner https://github.com/jaredrummler/MaterialSpinner

[15] Coil https://github.com/coil-kt/coil

[16] Retrofit https://square.github.io/retrofit/

[17] Dexter https://github.com/Karumi/Dexter

[18] Stack Exchange Inc https://stackoverflow.com/

[19] RxJava https://github.com/ReactiveX/RxJava

[20] Gson https://github.com/google/gson

[23] Google Play https://play.google.com/

[24] Google AdMob https://admob.google.com/

[26] Heroku https://www.heroku.com/

[27] Education Host https://educationhost.cloud/

[28] Gear Host https://www.gearhost.com/

[29] Ohana https://www.ohanaliving.vn/

[30] Nhà Trọ 360 https://thuenhatro360.com/

Ngày đăng: 27/11/2021, 10:31

HÌNH ẢNH LIÊN QUAN

Hình 1. 1: Nguyên tắc hoạt động của cơ chế bất đồng bộ - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
Hình 1. 1: Nguyên tắc hoạt động của cơ chế bất đồng bộ (Trang 26)
Hình ảnh minh họa: - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
nh ảnh minh họa: (Trang 34)
Hình 1. 5: Hình ảnh giao diện  trang chủ và user App Ahana - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
Hình 1. 5: Hình ảnh giao diện trang chủ và user App Ahana (Trang 36)
Hình 1. 7: Hình ảnh giao diện trang chủ và chi tiết nhà trọ ủa app Nhà trọ 360 - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
Hình 1. 7: Hình ảnh giao diện trang chủ và chi tiết nhà trọ ủa app Nhà trọ 360 (Trang 38)
Hình 1. 8: Hình ảnh giao diện tìm kiếm và lọc của app Nhà trọ 360 - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
Hình 1. 8: Hình ảnh giao diện tìm kiếm và lọc của app Nhà trọ 360 (Trang 39)
Hình 1. 9: Hình ảnh giao diện tìm kiếm và lọc của app Nhà tốt - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
Hình 1. 9: Hình ảnh giao diện tìm kiếm và lọc của app Nhà tốt (Trang 40)
Hình 1. 10: Hình ảnh lọc trên bản đồ của app Nhà tốt - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
Hình 1. 10: Hình ảnh lọc trên bản đồ của app Nhà tốt (Trang 41)
Hình 1. 11: Hình ảnh giao diện chi tiết nhà trọ và lọc của app Thuê nhà - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
Hình 1. 11: Hình ảnh giao diện chi tiết nhà trọ và lọc của app Thuê nhà (Trang 42)
Hình 1. 15: Hình ảnh lược đồ lớp cho User - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
Hình 1. 15: Hình ảnh lược đồ lớp cho User (Trang 52)
Hình 1. 16: Hình ảnh Sequence diagram đăng nhập - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
Hình 1. 16: Hình ảnh Sequence diagram đăng nhập (Trang 53)
Hình 1. 17: Hình ảnh Sequence diagram đăng kí - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
Hình 1. 17: Hình ảnh Sequence diagram đăng kí (Trang 54)
Hình 1. 18: Hình ảnh Sequence diagram đăng xuất - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
Hình 1. 18: Hình ảnh Sequence diagram đăng xuất (Trang 55)
Hình 1. 19: Hình ảnh Sequence diagram tìm và lọc trọ - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
Hình 1. 19: Hình ảnh Sequence diagram tìm và lọc trọ (Trang 56)
Hình 1. 20: Hình ảnh Sequence diagram Đăng trọ - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
Hình 1. 20: Hình ảnh Sequence diagram Đăng trọ (Trang 57)
Hình 1. 21: Hình ảnh Sequence diagram Xem danh sách nhà trọ trên bản đồ - Tìm hiểu xây dựng ứng dụng tìm kiếm nhà trọ trên di động
Hình 1. 21: Hình ảnh Sequence diagram Xem danh sách nhà trọ trên bản đồ (Trang 58)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w