Đồ án HCMUTE: Xây dựng ứng dụng tìm phòng trọ trên di động

Khám phá đồ án HCMUTE về hệ thống ứng dụng tìm phòng trọ trên di động, giúp người dùng dễ dàng tìm kiếm và quản lý chỗ ở hiệu quả.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

khóa luận tốt nghiệp

2020

120
9
0

Phí lưu trữ

35 Point

Mục lục chi tiết

LỜI CẢM ƠN

1. PHẦN MỞ ĐẦU

2. PHẦN NỘI DUNG

2.1. Giới thiệu Flutter

2.2. Lịch sử phát triển của Flutter

2.3. Đặc điểm chính của Flutter

2.4. Ưu, nhược điểm của Flutter

2.5. Giới thiệu về Google Firebase

2.6. Lịch sử của Firebase

2.7. Chức năng chính của Firebase

2.8. Đặc điểm nổi bật của Firebase

2.9. Cấu hình tác vụ

2.10. Tổng quan về Google Map API

2.11. Các dịch vụ Google Map APIs

2.12. Giới thiệu về Redux

2.13. Lịch sử phát triển của Redux

2.14. Đặc điểm chính của Redux

2.15. Giới thiệu về TypeScript

2.16. Đặc điểm chính của TypeScript

2.17. Ưu điểm của TypeScript

2.18. Giới thiệu về NextJs

2.19. Đặc điểm chính của NextJs

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

3.1. Khảo sát hiện trạng

3.2. Xác định yêu cầu

3.3. Mô tả chi tiết use case

4. PHÂN TÍCH, MÔ HÌNH HÓA YÊU CẦU, THIẾT KẾ CSDL

4.1. Phân tích chức năng, thiết kế cơ sở dữ liệu

4.2. Mô tả cơ sở dữ liệu

5. THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ

5.1. Danh sách màn hình chuyển đổi

5.2. Danh sách màn hình

5.3. Danh sách xử lý

6. CÀI ĐẶT VÀ KIỂM THỬ ỨNG DỤNG

6.1. Cài đặt ứng dụng

6.2. Kiểm thử ứng dụng

PHẦN KẾT THÚC

appendix.1. Những kết quả đạt được

appendix.2. Hạn chế đề tài

appendix.3. Hướng phát triển trong tương lai

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Giới thiệu về đề tài Ứng dụng tìm phòng trọ di động tại HCMUTE

Đề tài khóa luận tốt nghiệp "Xây dựng hệ thống ứng dụng tìm phòng trọ trên di động" của sinh viên Nguyễn Thành Đồng và Hồ Ngọc Sơn Hà, HCMUTE, tập trung vào việc phát triển một ứng dụng di động hỗ trợ tìm kiếm phòng trọ. Khóa luận đề cập đến việc sử dụng các công nghệ hiện đại như Flutter, Firebase và Google Maps Platform để xây dựng một giải pháp tiện lợi cho người dùng. Ứng dụng này hướng đến việc giải quyết vấn đề tìm kiếm phòng trọ, đặc biệt là đối với sinh viên, một vấn đề thường gặp khó khăn về thời gian và chi phí. Nội dung khóa luận bao gồm phần nghiên cứu lý thuyết về các công nghệ được sử dụng, phân tích nhu cầu người dùng, thiết kế hệ thống, triển khai và đánh giá hiệu quả.

1.1. Từ khóa và thực thể chính

Các từ khóa chính của đề tài bao gồm: Ứng dụng tìm phòng trọ di động, Flutter, Firebase, Google Maps. Từ khóa SalientỨng dụng tìm phòng trọ. Từ khóa Salient LSIỨng dụng di động. Thực thể Semantic chính là Ứng dụng. Thực thể SalientPhòng trọ. Thực thể Close liên quan chặt chẽ là HCMUTE (vì đây là trường đại học nơi sinh viên thực hiện đề tài). Việc xác định chính xác các từ khóa và thực thể này giúp định hướng nội dung nghiên cứu và đánh giá hiệu quả của ứng dụng.

1.2. Phân tích nội dung chính

Khóa luận trình bày quá trình xây dựng ứng dụng gồm các giai đoạn: nghiên cứu, thiết kế, triển khai và đánh giá. Phần nghiên cứu tập trung vào các công nghệ then chốt: Flutter (cho giao diện người dùng), Firebase (cho cơ sở dữ liệu và quản lý người dùng), và Google Maps (tích hợp bản đồ). Phần thiết kế mô tả kiến trúc hệ thống, giao diện người dùng, và cơ sở dữ liệu. Phần triển khai trình bày quá trình xây dựng và tích hợp các thành phần. Cuối cùng, phần đánh giá đánh giá hiệu quả của ứng dụng dựa trên các tiêu chí về chức năng, hiệu suất và trải nghiệm người dùng. Khóa luận cũng đề cập đến việc xây dựng một trang web quản lý cho Admin để quản lý nội dung và người dùng của ứng dụng.

II. Đánh giá giá trị và ứng dụng thực tiễn

Khóa luận có giá trị thực tiễn cao. Ứng dụng tìm phòng trọ di động giải quyết vấn đề bức thiết cho sinh viên và người đi thuê trọ. Việc sử dụng các công nghệ hiện đại như Flutter, Firebase, Google Maps làm cho ứng dụng có hiệu năng cao và dễ dàng cập nhật. Tuy nhiên, cần xem xét một số điểm hạn chế như khả năng mở rộng, bảo mật, và tính chính xác của dữ liệu. Việc cập nhật thông tin phòng trọ thường xuyên và đảm bảo tính chính xác của dữ liệu là rất quan trọng để ứng dụng hoạt động hiệu quả.

2.1. Ưu điểm và hạn chế

Ưu điểm chính của khóa luận nằm ở việc ứng dụng các công nghệ hiện đại, tạo ra một sản phẩm đáp ứng nhu cầu thực tiễn. Ứng dụng có giao diện thân thiện, dễ sử dụng. Tuy nhiên, khóa luận có thể chưa đề cập đến đầy đủ các tính năng nâng cao như hệ thống thanh toán trực tuyến, chức năng báo cáo thống kê, và tính năng hỗ trợ đa ngôn ngữ. Hơn nữa, tính bảo mật và khả năng mở rộng của hệ thống cần được nghiên cứu kỹ hơn.

2.2. Khả năng ứng dụng và phát triển

Ứng dụng này có thể được phát triển hơn nữa bằng cách thêm nhiều tính năng. Ví dụ, tích hợp hệ thống thanh toán trực tuyến sẽ tạo ra một trải nghiệm người dùng hoàn chỉnh hơn. Thêm các tính năng hỗ trợ người dùng như bộ lọc tìm kiếm nâng cao, đánh giá và bình luận sẽ tăng tính tương tác và hấp dẫn của ứng dụng. Ngoài ra, tích hợp trí tuệ nhân tạo (AI) trong việc gợi ý phòng trọ phù hợp sẽ làm tăng trải nghiệm người dùng và tính hiệu quả của ứng dụng. Việc nghiên cứu và bổ sung các tính năng này sẽ góp phần làm tăng giá trị và tính cạnh tranh của ứng dụng trên thị trường.

01/02/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1. CƠ SỞ LÝ THUYẾT TỔNG QUAN VỀ FLUTTER Giới thiệu Flutter[1] Flutter được Google giới thiệu là một bộ SDK(Software Development Kit) mới trong giới phát triển ứng dụng di động. Là một SDK mới của Google dành cho các thiết bị di động giúp nhà phát triển và nhà thiết kế xây dựng nhanh chóng ứng dụng dành cho các thiết bị di động (Android, iOS). Nó như một thủ thuật khôn khéo để tương thích được với framework UI trên cả hai hệ điều hành này.

Các ứng dụng Flutter không biên dịch trực tiếp với các ứng dụng native của Android và iOS. Thay vào đó, chúng chạy trên engine render Flutter (được viết bằng C++) và Flutter Framework (được viết bằng Dart, cũng như các ứng dụng Flutter), cả hai bộ này đều được đóng gói cùng với mọi ứng dụng. Sau đó bộ SDK sẽ đóng gói lại vào trong một ứng dụng để sẵn sàng chạy trên mỗi nền tảng. Bạn tạo ra ứng dụng của mình, một engine mới sẽ chạy các đoạn code của Flutter, và các đoạn mã nguồn vừa đủ để nền tảng Flutter chạy trên cả Android và iOS.

Flutter được phát triển nhằm giải quyết bài toán thường gặp trong thiết bị di động là Fast Development và Native Performance. Nếu như React Native chỉ đảm bảo Fast Development và mã nguồn thuần chỉ đảm bảo Native Performance thì Flutter làm được cả 2 điều trên. Lịch sử phát triển của Flutter[2] Phiên bản đầu tiên của Flutter được gọi là "Sky" và chạy trên hệ điều hành Android. Flutter được công bố tại hội nghị nhà phát triển Dart 2015, với dự định ban đầu để có thể kết xuất ổn định ở mức 120 khung hình trên giây.

Trong bài phát biểu chính ở hội nghị Google Developer Days tại Thượng Hải, Google công bố phiên bản Flutter Release Preview 2, đây là phiên bản lớn cuối cùng trước Flutter 1. Vào ngày 4 tháng 12 năm 2018, Flutter 1.0 đã được phát hành tại sự kiện Flutter Live, là phiên bản "ổn định" đầu tiên của khung ứng dụng này. 5 do an Xây dựng hệ thống ứng dụng tìm phòng trọ trên di động Đặc điểm chính của Flutter[3] • Ngôn ngữ Dart. Dart là ngôn ngữ hướng đối tượng (OOP), định nghĩa lớp (class defined), thu gom rác (garbage-collected) và được xem như là ngôn ngữ lập trình tối ưu hóa phía client (client-optimized programming language) cho các ứng dụng chạy đa nền tảng.

Được phát triển bời Google, Dart nói chung và Flutter nói riêng được hỗ trợ bởi nhà phát triền lớn mạnh và cộng đồng rộng lớn, nó hỗ trợ interfaces, mixins, abstract classes, reified generics, stactic typing. Dart chủ yếu được sử dụng để phát triền ứng dụng di động, ngoài ra thì nó cũng được sử dụng trong ứng dụng desktop, phát triển hệ thống backend và ứng dụng web application. • Các IDE được khuyến nghị với Flutter là Android Studio, Intellij Idea hoặc đơn giản và phổ biến hơn là Visual Studio Code. • Về cầu nối đối với những ứng dụng di động đa nền tảng, Flutter sử dụng Dart, so với đối thủ lớn nhất hiện giờ là React Native sử dụng Javascript, Flutter đảm bảo được hiệu năng và đảm bảo nó tốt hơn so với React Native.

• React Native và Flutter chia sẻ các mô hình tương tự như trình xử lý sự kiện và mở rộng lớp. • Điểm mạnh nhất của Flutter được giới thiệu chính là Fast Development, Native Performance và dễ dàng tạo xây dựng giao diện bắt mắt, biểu cảm. Ưu, nhược điểm của Flutter[3] Ưu điểm • Ngôn ngữ Dart: Dart - OOP, nó khá dài, nhưng những người quen viết bằng Java / C # sẽ hài lòng với Dart. • Ít phải config khi tạo project mới theo cách thủ công, ngược lại với React Native.

• Chỉ cần tải về Flutter từ git, chạy “flutter doctor”, và nó sẽ cho bạn biết những loại vấn đề bạn có thể có trong hệ thống. Sau đó, tạo một project từ Android 6 do an Xây dựng hệ thống ứng dụng tìm phòng trọ trên di động Studio hoặc bất kỳ IDE nào sau khi cài đặt Flutter Plug-in sơ bộ và start project. Ngoài ra nó còn có Hot-reload giống như trong React-Native. • Hỗ trợ tuyệt vời cho IDE (Android Studio, IDE IntelliJ, VSCode) • Trình điều hướng tích hợp sẵn.

Sau khi tạo ra một ứng dụng trên Flutter, bạn có thể thấy nó có Navigator được xây dựng sẵn. Bạn có thể tạo một route mới mà không cần kết nối bất kỳ thứ gì (không giống như trong RN, nơi bạn cần kết nối bất kỳ package điều hướng gốc nào vv). • Giải pháp quản lý dữ liệu được tạo sẵn, ví dụ trong Flutter này là "Mọi thứ đều có một Widget" cho nó. Có một StatefulWidget đặc biệt, với sự giúp đỡ của nó mà chúng ta có thể quản lý trạng thái widget và thay đổi nó một cách năng động.

Nhược điểm • Có một rào cản lớn cho những người chỉ học JS, hoặc đến từ RN. Do thực tế là Dart được sử dụng với sự thừa kế, đa hình của nó và tất cả các thứ về OOP. • Không có JSX mà tất cả chúng ta đã quen khi làm RN. Nhìn vào tệp Dart trong đó không có phân chia thành template, styling và data, nó trở nên khó chịu.

• Styling là một nhược điểm. Thực tế là không có sự tách biệt thành Styles, templates và controller, có một vấn đề khi mô tả một thành phần thì chúng ta cũng cần mô tả các styles cùng một lúc. • Animation còn khó khăn hơn. Mặc dù nó có một animation tốt, nhưng nó sẽ khó hơn khi tạo hiệu ứng động, không giống như trong RN.

Trong Flutter, chỉ có thừa kế widget với các điều kiện có thể thay đổi (trạng thái) và không thể thay đổi (không trạng thái). Trong khi ở React- Native chúng ta có thể quản lý vòng đời. Ngoài ra, một nhược điểm lớn là thiếu các công cụ để lưu trạng thái của ứng dụng, vấn đề này có thể, tuy nhiên, được giải quyết bằng cách tuần tự hóa trạng thái hiện tại. 7 do an Xây dựng hệ thống ứng dụng tìm phòng trọ trên di động TỔNG QUAN VỀ GOOGLE FIREBASE Giới thiệu về Google Firebase[4] Firebase là một dịch vụ điện toán đám được cung cấp bởi Google nhằm giúp các lập trình phát triển nhanh các ứng dụng di động, đơn giản và hiệu quả cao, tương tác tốt với thời gian thực.

Với nhiều dịch vụ chất lượng cao Firebase đã và đang, không chỉ là sự lựa chọn hàng đầu cho các lập trình viên, các công ty khởi nghiệp, mà các công ty, tổ chức lớn có tên tuổi cũng sử dụng Firebase để xây dựng các tính năng, các chương trình mới, cũng như chuyển đổi các dịch vụ trước đây sang hệ thống của Firebase. Cơ sở dữ liệu của Firebase là NoSQL, được tổ chức theo kiểu trees, parent- children. Dịch vụ Firebase Lịch sử của Firebase[4] Firebase (tiền thân là Evolve) được thành lập vào năm 2011. Ban đầu, Evolve chỉ cung cấp cơ sở dữ liệu để các lập trình viên thiết kế các ứng dụng chat.

Tuy nhiên, họ nhanh chóng nhận ra tiềm năng sản phẩm của mình khi nhận thấy các khách hàng không sử dụng cơ sở dữ liệu để làm ứng dụng chat, mà thay vào đó, để lưu các thông tin như game progress. Bộ đôi Lee và Tamplin quyết định tách mảng Realtime ra để thành lập một công ty độc lập – chính là Firebase – vào tháng 4 năm 2012. 8 do an Xây dựng hệ thống ứng dụng tìm phòng trọ trên di động Sau nhiều lần huy động vốn và gặt hái được những thành công nổi bật, Firebase đã được Google để ý. Vào tháng 10 năm 2014, Firebase gia nhập gia đình Google.

Chức năng chính của Firebase[4] Firebase là sự kết hợp giữa nền tảng cloud với hệ thống máy chủ cực kì mạnh mẽ tới từ Google, để cung cấp những API đơn giản, mạnh mẽ và đa nền tảng trong việc quản lý, sử dụng database. • Firebase Cloud Firestore[5] Cloud Firestore là một Realtime Database linh hoạt và dễ mở rộng cho mobile, Web và server được phát triển từ Firebase và Google Cloud Platform. Cũng giống như Firebase Realtime Database, nhưng là phiên bản nâng cấp và mạnh mẽ hơn, Firestore giúp cho việc đồng bộ dữ liệu giữa các ứng dụng phía khách hàng một các nhanh chóng (Realtime) và hộ trợ lưu offline data trong ứng dụng. Firestore đã và đang dần cải thiện những yếu điểm mà người anh tiền nhiệm Realtime Database còn mắc phải như các truy vấn, kiểu dữ liệu,… Cloud Firestore là một cloud-hosted, NoSQL database mà các ứng dụng phía client có thể trực tiếp truy cập thông qua native SDKs.

Nó lưu dữ liệu theo mô hình dữ liệu NoSQL. Dữ liệu được lưu trữ trong các file tài liệu chứa các trường được ánh xạ vào các giá trị. Các file tài liệu này được lưu trữ trong các tập hợp chúng có thể sử dụng nó để tổ chức dữ liệu và truy vấn dữ liệu. Cloud Firestore hỗ trợ rất nhiều kiểu dữ liệu từ đơn giản như String, Integer hay những kiểu dữ liệu phức tạp như các đối tượng lồng nhau.

• Firebase authentication – Hệ thống xác thực của Firebase Có thể dễ dàng tích hợp các công nghệ xác thực của Google, Facebook, Twitter… hoặc một hệ thống xác thực mà tự tạo ra ở bất kì nền tảng nào như Android, iOS hoặc Web. • Firebase storage Có thể lưu trữ dữ liệu trực tiếp trên server của firebase như hình ảnh, video, tập tin một cách dễ dàng. Firebase còn bổ sung Google security để tải lên và tải về các ứng dụng firebase, để lưu trữ hình ảnh, âm thanh, video hoặc nội dung do người dùng tạo ra. 9 do an Xây dựng hệ thống ứng dụng tìm phòng trọ trên di động Đặc điểm nổi bật của Firebase[4] • Triển khai ứng dụng nhanh Có thể giảm bớt rất nhiều thời gian cho việc viết các dòng code để quản lý và đồng bộ cơ sở dữ liệu, mọi việc sẽ diễn ra hoàn toàn tự động với các API của Firebase.

Hỗ trợ đa nền tảng giúp thuận lợi và tiết kiệm thời gian trong việc xây dựng ứng dụng đa nền tảng. • Bảo mật Bảo mật tốt do Firebase hoạt động dựa trên nền tảng cloud và thực hiện kết nối thông qua giao thức bảo mật SSL. Cho phép phân quyền người dùng database bằng cú pháp javascipt. • Tính linh hoạt và khả năng mở rộng Firebase sẽ giúp đơn giản hóa việc nâng cấp hay mở rộng dịch vụ, cho phép xây dựng server của riêng.

Việc Firebase sử dụng NoSQL, giúp cho database không bị bó buộc trong các bảng và các trường mà có thể tùy ý xây dựng database theo cấu trúc của riêng. • Ổn định Firebase hoạt động dựa trên nền tảng cloud đến từ Google vì vậy hầu như không phải lo lắng về việc sập server, tấn công mạng như DDOS.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Bài viết "Ứng dụng tìm phòng trọ di động tại HCMUTE" giới thiệu một ứng dụng hữu ích giúp sinh viên và người lao động tại HCMUTE dễ dàng tìm kiếm phòng trọ phù hợp với nhu cầu của mình. Ứng dụng này không chỉ cung cấp thông tin chi tiết về các phòng trọ, mà còn cho phép người dùng lọc theo giá cả, vị trí và các tiện ích đi kèm. Điều này giúp tiết kiệm thời gian và công sức cho người tìm phòng, đồng thời nâng cao trải nghiệm sống cho người thuê.

Nếu bạn quan tâm đến các ứng dụng công nghệ trong lĩnh vực khác, hãy khám phá thêm về Nghiên cứu xây dựng cloud storage và vpn trong điện toán đám mây sử dụng devstack luận văn thạc sĩ, nơi bạn có thể tìm hiểu về các giải pháp lưu trữ đám mây. Hoặc bạn có thể tham khảo Luận văn thạc sĩ khoa học máy tính sử dụng active learning trong việc lựa chọn dữ liệu gán nhãn cho bài toán speech recognition để hiểu thêm về ứng dụng của machine learning trong các lĩnh vực khác. Cuối cùng, bài viết về Luận văn thạc sĩ khoa học máy tính nghiên cứu các phương pháp trích xuất thông tin trong ảnh tài liệu và ứng dụng cũng sẽ mang đến cho bạn cái nhìn sâu sắc về công nghệ xử lý hình ảnh. Những tài liệu này sẽ giúp bạn mở rộng kiến thức và khám phá thêm nhiều khía cạnh thú vị trong lĩnh vực công nghệ.