(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ

108 8 0
(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ

Đ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

(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ(Đồ án tốt nghiệp) Xây dựng app tìm kiếm và đặt phòng trọ

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM ` NGUYỄN TUẤN KIỆT – 16110367 LÊ THỊ THUỲ TRANG – 16110488 Đề tài: XÂY DỰNG APP TÌM KIẾM VÀ ĐẶT PHỊNG TRỌ KHỐ LUẬN TỐT NGHIỆP KỸ SƯ CNTT GIẢNG VIÊN HƯỚNG DẪN ThS MAI TUẤN KHÔI KHÓA 2016 – 2020 TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA CƠNG NGHỆ THƠNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM ` NGUYỄN TUẤN KIỆT – 16110367 LÊ THỊ THUỲ TRANG – 16110488 Đề tài: XÂY DỰNG APP TÌM KIẾM VÀ ĐẶT PHỊNG TRỌ KHỐ LUẬN TỐT NGHIỆP KỸ SƯ CNTT GIẢNG VIÊN HƯỚNG DẪN ThS MAI TUẤN KHƠI KHĨA 2016 – 2020 LỜI CẢM ƠN Với tất kính trọng, nhóm thực đề tài xin bày tỏ lòng biết ơn đến quý thầy cô theo dõi hướng dẫn suốt thời gian thực đề tài Đầu tiên, nhóm chúng em xin gửi lời cảm ơn sâu sắc đến Ban giám hiệu trường Đại học Sư phạm Kỹ Thuật Thành phố Hồ Chí Minh tạo điều kiện, môi trường học tập chất lượng, hiệu cho nhóm phát huy tinh thần nghiên cứu cách tốt Đồng thời, nhóm xin gửi lời cảm ơn đến Ban Chủ nhiệm khoa Công nghệ Thông tin thầy cô khoa Công nghệ Thông tin - trường Đại học Sư phạm Kỹ thuật thành phố Hồ Chí Minh tạo mơi trường học tập làm việc chun nghiệp, nhiệt tình giảng dạy nhóm thực đề tài nói riêng sinh viên khoa Cơng nghệ Thơng tin nói chung q trình học tập làm việc trường Đặc biệt, nhóm xin gửi lời cảm ơn chân thành đến thầy Mai Tuấn Khơi – giáo viên hướng dẫn Khóa luận tốt nghiệp – Khoa Công nghệ Thông tin – Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh hướng dẫn, quan tâm, góp ý ln đồng đồng hành nhóm suốt q trình thực đề tài Với kinh nghiệm thực tiễn hạn chế kinh nghiệm chun mơn cịn non yếu, báo cáo có thiếu sót hạn chế định Kính mong nhận phản hồi, đóng góp ý kiến bảo thêm quý thầy cô để nhóm đạt kiến thức hữu ích nhất, nâng cao ý thức để phục vụ cho kỹ sau Chúng em xin chân thành cảm ơn! Nhóm thực Nguyễn Tuấn Kiệt – 16110367 Lê Thị Thùy Trang – 16110488 Trường ĐH Sư Phạm Kỹ Thuật TP.HCM Khoa Cơng nghệ Thơng tin ĐỀ CƯƠNG KHĨA LUẬN TỐT NGHIỆP Họ tên Sinh viên 1: Nguyễn Tuấn Kiệt MSSV 1: 16110367 Họ tên Sinh viên 2: Lê Thị Thuỳ Trang MSSV 2: 16110488 Thời gian làm khóa luận: Từ 30/03/2020 đến 19/07/2020 (15 tuần) Chuyên ngành: Công nghệ phần mềm Tên đề tài: Xây dựng app tìm kiếm đặt phịng trọ Giáo viên hướng dẫn: ThS Mai Tuấn Khơi Nhiệm vụ khóa luận: Lý thuyết: - Tìm hiểu Android Studio, ngơn ngữ lập trình Java, Google Firebase, Google Map API, Google Direct - Khảo sát app tìm nhà trọ có phân tích ưu nhược điểm sau rút điều cần thiết cho app Thực hành: - Thực theo yêu cầu usecase nhóm đề - Thiết kế giao diện, xây dựng hệ quản trị sở liệu Firebase - Báo cáo đầy đủ phần nội dung trình bày theo yêu cầu khoa ĐỀ CƯƠNG VIẾT KHÓA LUẬN: GIỚI THIỆU ĐỀ TÀI Chương 1: KHẢO SÁT HIỆN TRẠNG 1.1 KHẢO SÁT MỘT SỐ APP 1.2 NHỮNG TIÊU CHÍ APP CẦN ĐẠT ĐƯỢC Chương 2: MƠ HÌNH HỐ U CẦU VÀ THIẾT KẾ CƠ SỞ DỮ LIỆU 2.1 USERCASE DIAGRAM 2.2 DANH SÁCH NGHIỆP VỤ 2.3 MƠ HÌNH HỐ U CẦU 2.4 CƠ SỞ DỮ LIỆU CUỐI CÙNG Chương 3: THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ 3.1 CÁC MÀN HÌNH GIAO DIỆN CỦA GUEST 3.2 CÁC MÀN HÌNH GIAO DIỆN CỦA USER 3.3 MÀN HÌNH GIAO DIỆN CỦA ADMIN Chương 4: LẬP TRÌNH 4.1 NGƠN NGỮ LẬP TRÌNH JAVA VÀ ANDROID STUDIO 4.2 GOOGLE FIREBASE [8] 4.3 SƠ ĐỒ LỚP 4.4 MÔ TẢ CHI TIẾT TỪNG LỚP 4.5 MỘT SỐ THUẬT TOÁN HAY Chương 5: KIỂM THỬ PHẦN MỀM KẾT LUẬN TÀI LIỆU THAM KHẢO KẾ HOẠCH THỰC HIỆN Tuần 1+2+3 4+5 6+7+8 9+10 11+12 13 14 15 Ngày 30/03 – 12/04 13/04 – 03/05 04/05 – 24/05 25/05 – 07/06 08/06 – 21/06 Nhiệm vụ (Công việc dự kiến) Sản phẩm - Khảo sát trạng - Thiết kế prototype - Thiết kế usecase mơ hình hóa u cầu - Thiết kế sở liệu - Thiết kế giao diện thiết kế xử lý - Tìm hiểu Android Studio - Tìm hiểu việc sử dụng Firebase Android Studio - Báo cáo có đầy đủ 29/06 12/07 - Ứng dụng hồn - Tìm hiểu xây dựng hệ thống hoàn thiện - Kiểm thử chương trình, tiến hành sửa lỗi - Chỉnh sửa tổng hợp báo cáo 13/07 – 19/07 thiết kế cần thiết, - Xây dựng giao diện thiết bị di động Android Studio - Xây dựng database với Firebase - Tiến hành xây dựng chức - Xây dụng xong chương trình chức khác: đăng tin, sửa tin, xóa tin, - Tìm hiểu Google API ứng dụng - Xây dựng vào hệ thống chức liên quan - Tìm hiểu cách sử dụng sử dụng đến Geofire Google API: tìm kiếm, đường, - Ứng dụng hoàn - Kết hợp thành phần xây dựng thành (Giao diện, API, Database) 22/06 – 28/06 Ghi thành - Ứng dụng kiểm thử sửa lỗi - Bản báo cáo hồn - Hồn tất chương trình Giáo viên hướng dẫn (Ký ghi rõ họ tên) chỉnh để in nộp TP.Hồ Chí Minh, Ngày tháng Người viết đề cương năm 2020 MỤC LỤC GIỚI THIỆU ĐỀ TÀI Chương 1: KHẢO SÁT HIỆN TRẠNG 1.1 KHẢO SÁT MỘT SỐ APP 1.1.1 App “Ohana” [1] 1.1.2 App “NhaTro360” [2] 1.1.3 App “Phòng Trọ Giá Rẻ” [3] .5 1.1.4 App “Phòng Trọ” [4] 1.1.5 App “Tìm Nhà Trọ 24/7” [5] .7 1.2 NHỮNG TIÊU CHÍ APP CẦN ĐẠT ĐƯỢC .8 1.2.1 Ưu điểm cần đạt .8 1.2.2 Nhược điểm cần khắc phục Chương 2: MƠ HÌNH HỐ U CẦU VÀ THIẾT KẾ CƠ SỞ DỮ LIỆU 2.1 USERCASE DIAGRAM .9 2.2 DANH SÁCH NGHIỆP VỤ 10 2.2.1 Guest 10 2.2.2 User 15 2.2.3 Admin .22 2.3 MƠ HÌNH HỐ U CẦU 29 2.3.1 Các nghiệp vụ Guest 29 2.3.2 Các nghiệp vụ User 36 2.3.3 Các nghiệp vụ Admin 43 2.3.4 Sequence diagram .47 2.4 CƠ SỞ DỮ LIỆU CUỐI CÙNG 52 2.4.1 Cơ sở liệu .52 2.4.2 Mô tả sở liệu 52 2.4.3 Sơ đồ hình 54 Chương 3: THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ 55 3.1 CÁC MÀN HÌNH GIAO DIỆN CỦA GUEST 55 3.1.1 Giao diện “Đăng nhập” 55 3.1.2 Giao diện “Đăng ký” 58 3.1.3 Giao diện “Xem trang chủ” 61 3.1.4 Giao diện “Tìm kiếm trọ gần” 64 3.1.5 Giao diện “Tìm kiếm trọ” 66 3.2 CÁC MÀN HÌNH GIAO DIỆN CỦA USER 69 3.2.1 Giao diện “Xem trang chủ” 69 3.2.2 Giao diện “Đăng tin” 69 3.2.3 Giao diện “Sửa phòng” .71 3.2.4 Giao diện “Tìm trọ gần” 72 3.2.5 Giao diện “Tìm kiếm trọ” 72 3.3 MÀN HÌNH GIAO DIỆN CỦA ADMIN 74 3.3.1 Giao diện “Xem trang chủ” 74 3.3.2 Giao diện “Duyện tin” 74 3.3.3 Giao diện “Đăng tin” 76 3.3.4 Giao diện “Sửa phòng” .76 3.3.5 Giao diện “Thống kê” .76 Chương 4: LẬP TRÌNH 79 4.1 NGƠN NGỮ LẬP TRÌNH JAVA VÀ ANDROID STUDIO 79 4.1.1 Ngơn ngữ lập trình Java [6] .79 4.1.2 Android Studio [7] .79 4.2 GOOGLE FIREBASE [8] 80 4.3 SƠ ĐỒ LỚP .81 4.4 MÔ TẢ CHI TIẾT TỪNG LỚP 81 4.4.1 Class MotelRoom .81 4.4.2 Class Account 82 4.4.3 Class Maps 82 4.4.4 Class Images .83 4.4.5 Class Guest .83 4.4.6 Class Admin .83 4.5 MỘT SỐ THUẬT TOÁN HAY 84 4.5.1 Thuật tốn Tìm kiếm theo giá phịng .84 4.5.2 Thuật toán Tạo dẫn đường 84 4.5.3 Thuật tốn Tìm kiếm theo loại phịng 85 4.5.4 Thuật toán Gửi mã xác thực qua SMS .85 Chương 5: KIỂM THỬ PHẦN MỀM 87 KẾT LUẬN 89 TÀI LIỆU THAM KHẢO .91 MỤC LỤC HÌNH ẢNH Hình 1.1: App “Ohana” .3 Hình 1.2: App “NhaTro360” .4 Hình 1.3: App “Phịng Trọ Giá Rẻ” Hình 1.4: App “Phịng Trọ” Hình 1.5: App “Tìm Nhà Trọ 24/7” Hình 2.1: Usercase Diagram .9 Hình 2.2: BM_G_Login 13 Hình 2.3: BM_G_Register 13 Hình 2.4: BM_G_ForgetPass 13 Hình 2.5: BM_G_ViewHome 13 Hình 2.6: BM_G_ViewInfoHouse 14 Hình 2.7: BM_G_SearchRoom .14 Hình 2.8: BM_G_SearchRoom .14 Hình 2.9: BM_G_Direct 14 Hình 2.10: BM_G_Call 15 Hình 2.11: BM_U_ViewHome .19 Hình 2.12: BM_ManagePost 19 Hình 2.13: BM_U_Post 19 Hình 2.14: BM_U_DelPost .19 Hình 2.15: BM_U_EditPost 20 Hình 2.16: BM_U_Logout 20 Hình 2.17: BM_U_SearchRoom .20 Hình 2.18: BM_U_SearchRoom .20 Hình 2.19: BM_U_Call 21 Hình 2.20: BM_U_Direct 21 Hình 2.21: BM_U_ViewInfoHouse 21 Hình 2.22: BM_U_UpdateInfo 21 Hình 2.23: BM_U_CommentPost 22 Hình 2.24: BM_U_SavePost 22 Hình 2.25: BM_A_ViewHome .25 Hình 2.26: BM_A_ManagePost 25 Thuật toán: - Bước 1: Nhận tín hiệu xem thống kê từ Admin - Bước 2: Mở kết nối CSDL - Bước 3: Lấy danh sách phịng trọ có table “MotelRoom”, lấy thơng tin loại phịng chuyển sang dạng column chart - Bước 4: Đưa D6 cho Admin - Bước 5: Đóng kết nối CSDL - Bước 6: Kết thúc 78 Chương 4: LẬP TRÌNH 4.1 NGƠN NGỮ LẬP TRÌNH JAVA VÀ ANDROID STUDIO 4.1.1 Ngơn ngữ lập trình Java [6] Kiểu liệu Java quán cho tất hệ điều hành phần cứng khác Chương trình biên dịch nhiều máy khác mà khơng gặp lỗi Java hỗ trợ lập trình đa tiến trình(multithread) để thực thi cơng việc đồng thời cung cấp giải pháp đồng tiến trình Tính an tồn: Java u cầu chặt chẽ kiểu liệu, liệu phải khai báo tường minh, khơng sử dụng trỏ phép tốn liên quan tới trỏ Java kiểm soát chặt chẽ việc truy nhập đến mảng, chuỗi; không cho phép sử dụng kỹ thuật tràn, truy nhập khơng vượt qua kích thước mảng chuỗi Q trình cấp phát giải phóng nhớ thực tự động Cơ chế xử lý lỗi giúp việc xử lý phục hồi lỗi dễ dàng Tính bảo mật: Java cung cấp mơi trường quản lý chương trình với nhiều mức khác Mức 1: truy xuất liệu phương thức thông qua giao diện mà lớp cung cấp Mức 2: trình biên dịch kiểm sốt đoạn mã cho tuân thủ nguyên tắc Java trước thông dịch Mức 3: trình thơng dịch kiểm tra mã byte code xem đoạn mã có đảm bảo quy định, quy tắc trước thực thi Mức 4: Java kiểm soát việc nạp lớp vào nhớ để giám sát việc vi phạm giới hạn truy xuất trước nạp vào hệ thống 4.1.2 Android Studio [7] Android Studio mơi trường phát triển tích hợp(IDE) thức phát triển ứng dụng Android, dựa IntelliJ IDEA Ngoài khả đáng mong đợi IntelliJ, Android Studio cung cấp: hệ thống Gradle-based linh hoạt; xây dựng biến thể tạo nhiều tệp APK; code mẫu template để hỗ trợ tính app thơng thường; chỉnh sửa bố cục đa dạng với khả kéo thả theme; ProGuard ứng dụng ký app-singing; hỗ trợ tích hợp Google Cloud Platform cho phép dễ dàng tích hợp Google Cloud Messaging App Engine,… Android Studio hỗ trợ loạt giả lập để xem trước ứng dụng để chắn thứ hoạt động trơn tru 79 4.2 GOOGLE FIREBASE [8] Firebase lưu trữ liệu database dạng JSON thực đồng database tới tất client theo thời gian thực Cụ thể xây dựng client đa tảng(cross-platform client) tất client sử dụng chung database đến từ Firebase tự động cập nhật liệu database thêm sửa đổi Ngồi Firebase cịn cho phép bạn phân quyền cách đơn giản cú pháp tương tự Javascript Tất liệu truyền qua lớp kết nối an toàn SSL với chứng nhận 2048-bit Cơ sở liệu truy vấn xác nhận điền khiển cấp độ chi tiết sử dụng theo số quy tắc mềm dẻo security rules language Ứng dụng Firebase trì tương tác có số vấn đề Internet Trước liệu ghi đến server tất liệu viết vào sở liệu Firebase local Ngay kết nối lại, client nhận thay đổi mà thiếu đồng hố với trạng thái server Có thể dễ dàng xác thực người dùng từ ứng dụng Android, iOS JavaScript SDKs với vài đoạn mã Firebase xây dựng chức cho việc xác thực người dùng với Email, Facebook, Twitter, GitHub, Google, xác thực nặc danh Firebase Storage để giúp lập trình viên upload download file dễ dàng Firebase Storage Google Cloud Storage hỗ trợ, mang đến khả lưu trữ khổng lồ cho phép Google Cloud project truy cập file dễ dàng Firebase Storage client SDKs cịn có logic nâng cao dễ dàng xử lý điều kiện mạng Sử dụng Firebase dễ dàng nhiều cần nâng cấp hay mở rộng dịch vụ Ngồi Firebase cịn cho phép tự xây dựng server riêng để thuận tiện trình quản lý Firebase hoạt động dựa tảng cloud đến từ Google khơng phải lo lắng việc sập server, công mạng DDOS, tốc độ kết nối lúc nhanh lúc chậm,… 80 4.3 SƠ ĐỒ LỚP Hình 4.1: Sơ đồ lớp 4.4 MƠ TẢ CHI TIẾT TỪNG LỚP 4.4.1 Class MotelRoom Attributes Bảng 4.1: Attributes – Class MotelRoom Tên ID Room Address Description Phone Price Image Status TypeRoom Kiểu liệu String String String String String String String String Ghi Methods Bảng 4.2: Methods – Class MotelRoom Tên CreateRoom() DeleteRoom() EditRoom() Kiểu liệu Void Void Void 81 Ghi 4.4.2 Class Account Attributes Bảng 4.3: Attribute – Class Account Tên ID Account UserName Password Name Phone Image Role Kiểu liệu String String String String String String String Ghi Methods Bảng 4.4: Methods – Class Account Tên Call() Comment() CreatePost() DeletePost() EditPost() Direct() LikePost() Logout() SearchRoom() ViewDetailMotelRoom() Kiểu liệu Void Void Void Void Void Void Void Void Void Void Ghi 4.4.3 Class Maps Attributes Bảng 4.5: Attributes – Class Maps Tên Distance Duration EndLocation StartLocation Kiểu liệu String String String String Ghi Methods Bảng 4.6: Methods – Class Maps Tên AddMaps() AddMarker() DecodePolyline() Kiểu liệu Void Void Void 82 Ghi 4.4.4 Class Images Attributes Bảng 4.7: Atrributes – Class Imagess Tên ID Images Link Images Kiểu liệu String String Ghi Methods Bảng 4.8: Methods – Class Image Tên AddImage() DeleteImage() EditImage() Kiểu liệu Void Void Void Ghi 4.4.5 Class Guest Methods Bảng 4.9: Methods – Class Guest Tên ForgorPass() Login() Register() SearchRoom() Kiểu liệu Void Void Void Void Ghi 4.4.6 Class Admin Methods Bảng 4.10: Methods – Class Admin Tên ApprovePost() DenyPost() Notification() Statistic() Kiểu liệu Void Void Void Void 83 Ghi 4.5 MỘT SỐ THUẬT TỐN HAY 4.5.1 Thuật tốn Tìm kiếm theo giá phịng private void setUpRecyclerViewWithRangePrice(final long a, final long b) { recRoomsFeatured.setHasFixedSize(true); recRoomsFeatured.setLayoutManager(new LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false)); FirebaseDatabase.getInstance().getReference() child("MotelRoom") addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot snapshot) { for (DataSnapshot dataSnapshot : snapshot.getChildren()) { MotelRoom motelRoom = dataSnapshot.getValue(MotelRoom.class); if (motelRoom != null) { if ((motelRoom.getPrice() >= a) && (motelRoom.getPrice() 0){ motelRoomAdapter = new MotelRoomAdapter(arrayMotelRoom); recRoomsFeatured.setAdapter(motelRoomAdapter); }else { arrayList.add("Khơng có kết phù hợp!"); resultNullAdapter = new ResultNullAdapter(arrayList); recRoomsFeatured.setAdapter(resultNullAdapter); } } @Override public void onCancelled(@NonNull DatabaseError error) { } }); } 4.5.2 Thuật toán Tạo dẫn đường private void addLineArress() { LocationUtils.getInstance().getDirection(new LatLng(position.getLatitude(), position.getLongitude()), new OnDirectionListener() { @Override public void onSuccess(DirectionsResult direction) { if (direction.getRoutes().size() > 0) { directions = direction; addMarker(); addPolyline(); updateCamera(); }else { Toast.makeText(getApplicationContext(), "Khơng thể tìm thấy đoạn đường", Toast.LENGTH_SHORT).show(); } } @Override public void onError() { Toast.makeText(getApplicationContext(), "Đã xảy lỗi tìm kiếm đoạn đường", Toast.LENGTH_SHORT).show(); } }); } 84 4.5.3 Thuật tốn Tìm kiếm theo loại phòng private void sendVerifyCode() { PhoneAuthProvider.getInstance().verifyPhoneNumber( "+84" + account.getPhoneNumber(), 30L /*timeout*/, TimeUnit.SECONDS, this, new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken forceResendingToken) { VerificationId = verificationId; Toast.makeText(getApplicationContext(), "Gửi mã xác minh thành công", Toast.LENGTH_SHORT).show(); } @Override public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) { edtVerifyCode.setText(phoneAuthCredential.getSmsCode()); } @Override public void onVerificationFailed(FirebaseException e) { if (e instanceof FirebaseAuthInvalidCredentialsException) { Toast.makeText(getApplicationContext(), "Số điện thoại không hợp lệ", Toast.LENGTH_SHORT).show(); } else if (e instanceof FirebaseTooManyRequestsException) { Toast.makeText(getApplicationContext(), "Hạn ngạch SMS cho dự án bị vượt quá", Toast.LENGTH_SHORT).show(); } } }); } 4.5.4 Thuật toán Gửi mã xác thực qua SMS private void sendVerifyCode() { PhoneAuthProvider.getInstance().verifyPhoneNumber( "+84" + account.getPhoneNumber(), 30L /*timeout*/, TimeUnit.SECONDS, this, new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken forceResendingToken) { VerificationId = verificationId; Toast.makeText(getApplicationContext(), "Gửi mã xác minh thành công", Toast.LENGTH_SHORT).show(); } @Override public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) { 85 edtVerifyCode.setText(phoneAuthCredential.getSmsCode()); } @Override public void onVerificationFailed(FirebaseException e) { if (e instanceof FirebaseAuthInvalidCredentialsException) { Toast.makeText(getApplicationContext(), "Số điện thoại không hợp lệ", Toast.LENGTH_SHORT).show(); } else if (e instanceof FirebaseTooManyRequestsException) { Toast.makeText(getApplicationContext(), "Hạn ngạch SMS cho dự án bị vượt quá", Toast.LENGTH_SHORT).show(); } } }); } 86 Chương 5: KIỂM THỬ PHẦN MỀM Bảng 5.1: Kiểm thử STT ID GUEST_FUNC_01 GUEST_FUNC_02 GUEST_FUNC_03 USER_FUNC_01 USER_FUNC_02 USER_FUNC_03 Testcase Kiểm tra chức đăng nhập Kiểm tra chức đăng xuất Kiểm tra chức đăng ký tài khoản Kiểm tra chức thêm đăng Kiểm tra chức xóa đăng Kiểm tra chức sửa bải đăng Các bước thực Nhập số điện thoại Nhập mật Nhấn vào nút “Đăng nhập” Kết dự kiến Đăng nhập thành công, chuyển sang hình trang chủ Phân quyền theo quyền lưu CSDL Nhấn vào nút “Đăng xuất” Chọn “Đăng xuất” Đăng xuất thành công, chuyển sang hình đăng nhập Nhấn vào nút “Tạo tài khoản mới” Nhập tên tài khoản, mật khẩu, họ tên, số điện thoại Nhấn vào nút “Đăng ký” Hiển thị hình đăng ký Hiện thơng báo tạo tài khoản thành công Nhấn vào nút thêm đăng Nhập mô tả, địa chỉ, vị trí, hình ảnh đăng Nhấn vào nút “Đăng phịng” Nhấn vào menu cạnh đăng Chọn “Xóa phịng” Chọn “Có” Hiển thị hình thêm đăng Hiển thị thơng báo “Tạo phịng trọ thành cơng” Nhấn vào menu cạnh đăng Chọn “Sửa phịng” Sửa thơng tin Hiển thị thơng báo “Sửa phịng trọ thành công” 87 Kết Pass Pass Pass Hiển thị danh sách đăng khơng cịn bị xóa Pass Pass Pass 10 11 12 USER_FUNC_04 USER_FUNC_05 USER_FUNC_06 AD_FUNC_01 AD_FUNC_02 AD_FUNC_03 Kiểm tra chức gọi điện Nhấn vào nút “Sửa phòng” Nhấn vào menu gọi điện cạnh đăng Chọn “Đồng ý” Chuyển sang hình gọi điện điện thoại Nhấn vào menu đường cạnh đăng Kiểm tra Chọn vào hình chức nhà trọ cần tìm đường đường Nhấn nút đường Google map Nhấn vào menu tìm kiếm Chọn Kiểm tra thông tin cần chức chọn: giá, khu tìm phịng vực, loại phịng Nhấn nút “Tìm kiếm” Hiển thị đường từ địa điểm đầu vào tới trọ Nhấn vào button “Approve” Click OK hộp thoại xác nhận duyệt tin Status tin chuyển thành Bản tin hiển thị tường tất người dùng Nhấn vào button “Delete” Click OK hộp thoại xác nhận xoá tin Bản tin hiển thị tường tất người dùng Thơng tin tin xố khỏi CSDL Chọn “Thêm phịng” 2.Nhập địa chỉ, giá, mơ tả, hình ảnh trọ Nhấn nút “Đăng phịng” Hiển thị thơng báo thêm phịng thành cơng Kiểm tra chức duyệt tin Kiểm tra chức xóa tin Kiểm tra chức thêm phòng trọ 88 Pass Pass Hiển thị danh sách đăng thỏa mãn tiêu chí đề Pass Pass Pass Pass KẾT LUẬN Những kết đạt - Xây dựng hồn thiện ứng dụng tìm kiếm phịng trọ với chức năng: + Tìm trọ theo vị trí bán kính cần tìm + Tìm trọ theo yêu cầu giá, loại phòng khu vực + Gọi điện thoại cho chủ trọ + Chỉ đường đến trọ + Đăng/ Sửa/ Xóa tin thuê trọ + Quản trị phê duyệt từ chối phịng trọ - Tìm hiểu vận dụng dịch vụ sở liệu thời gian thực hoạt động tảng đám mây: Realtime Database Firebase - Vận dụng Map API, Direction API để chèn vào ứng dụng Ưu điểm - Giao diện đơn giản, dễ nhìn; nút điều hướng thể rõ, dễ dàng sử dụng - Người dùng sử dụng ứng dụng điện thoại lúc nơi - Cho phép người dùng quản lý tin đăng cách hợp lý - Ứng dụng bảo mật, ổn định nhờ sử dụng Firebase - Các thông tin phòng trọ hiển thị đầy đủ, rõ ràng - Chỉ đường có độ xác cao, phù hợp với nhu cầu người dùng - Tích hợp tính gọi điện, giúp người dùng dễ dàng liên hệ với chủ trọ Nhược điểm - Hệ thống phân quyền chưa linh hoạt, người quản trị nên sử dụng tảng khác phù hợp - Cơ sở liệu chưa đa dạng, chưa phù hợp với nhiều đối tượng người dùng 89 Hướng phát triển - Tiếp tục nghiên cứu, phát triển ứng dụng thân thiện với người dùng - Phân quyền linh hoạt hơn, cho phép người quản trị sử dụng tảng web để thao tác tính - Nâng cấp, xác thực sở liệu 90 TÀI LIỆU THAM KHẢO Link tải app Ohana: https://play.google.com/store/apps/details?id=com.bayleaf_mobile&hl=vi, Link tải app “NhaTro360”: https://play.google.com/store/apps/details?id=com.dmobisoft.rentforroms&hl=vi Link tải app “Phòng Trọ Giá Rẻ”: https://play.google.com/store/apps/details?id=com.passall.room&hl=vi Link tải app “Tìm Nhà Trọ 24/7”: https://play.google.com/store/apps/details?id=com.ttx.phongtro Link tải app “Phòng trọ”: https://play.google.com/store/apps/details?id=vn.timtro.android https://gpcoder.com/1638-tong-quan-ve-ngon-ngu-lap-trinh-java/#Gioi_thieu, 2017, Tổng quan ngơn ngữ lập trình Java https://tech.bizflycloud.vn/android-studio-la-gi-20181213175711512.htm, 2018, Giới thiệu Android Studio https://blog.vietnamlab.vn/2017/06/30/firebase-p1-gioi-thieu-firebase, 2017, Giới thiệu Firebase 91 S K L 0 ... giao diện ? ?Tìm kiếm trọ gần” 65 Hình 3.12: Sơ đồ luồng liệu cho nghiệp vụ ? ?Tìm kiếm? ?? 65 Hình 3.13: Giao diện ? ?Tìm kiếm trọ? ?? 66 Hình 3.14: Đánh số xử lý giao diện ? ?Tìm kiếm trọ? ?? ... “NhaTro360” [2] 1.1.3 App ? ?Phòng Trọ Giá Rẻ” [3] .5 1.1.4 App ? ?Phòng Trọ? ?? [4] 1.1.5 App ? ?Tìm Nhà Trọ 24/7” [5] .7 1.2 NHỮNG TIÊU CHÍ APP CẦN ĐẠT ĐƯỢC .8 1.2.1... ẢNH Hình 1.1: App “Ohana” .3 Hình 1.2: App “NhaTro360” .4 Hình 1.3: App “Phịng Trọ Giá Rẻ” Hình 1.4: App ? ?Phòng Trọ? ?? Hình 1.5: App ? ?Tìm Nhà Trọ 24/7”

Ngày đăng: 30/01/2023, 06:07