Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 87 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
87
Dung lượng
6,52 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN XÂY DỰNG ỨNG DỤNG TÌM KIẾM HÀNG HỐ / CỬA HÀNG GVHD:NGUYỄN TRẦN THI VĂN SVTT: TRẦN MINH MSSV:15110249 SKL 0 7 Tp Hồ Chí Minh, năm 2019 an TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM –––––––––––– TRẦN MINH – 15110249 Đề tài: XÂY DỰNG ỨNG DỤNG TÌM KIẾM HÀNG HỐ / CỬA HÀNG KHĨA LUẬN TỐT NGHIỆP KỸ SƯ CNTT GIÁO VIÊN HƯỚNG DẪN ThS NGUYỄN TRẦN THI VĂN Khóa 2015 – 2019 an TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM –––––––––––– TRẦN MINH – 15110249 Đề tài: XÂY DỰNG ỨNG DỤNG TÌM KIẾM HÀNG HỐ / CỬA HÀNG KHĨA LUẬN TỐT NGHIỆP KỸ SƯ CNTT GIÁO VIÊN HƯỚNG DẪN ThS NGUYỄN TRẦN THI VĂN Khóa 2015 – 2019 an ĐH SƯ PHẠM KỸ THUẬT TP HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA CNTT Độc lập – Tự – Hạnh phúc PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Họ tên Sinh viên 1: Trần Minh MSSV 1: 15110249 Họ tên Sinh viên 2: MSSV 2: Ngành: Công nghệ Thông tin Tên đề tài: Xây dựng ứng dụng tìm kiếm hàng hóa / cửa hàng Họ tên Giáo viên hướng dẫn: ThS Nguyễn Trần Thi Văn NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không ? Đánh giá loại : Điểm : Tp Hồ Chí Minh, ngày … tháng … năm 2019 Giáo viên hướng dẫn (Ký & ghi rõ họ tên) an ĐH SƯ PHẠM KỸ THUẬT TP HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA CNTT Độc lập – Tự – Hạnh phúc PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên Sinh viên 1: Trần Minh MSSV 1: 15110249 Họ tên Sinh viên 2: MSSV 2: Ngành: Công nghệ Thông tin Tên đề tài: Xây dựng ứng dụng tìm kiếm hàng hóa / cửa hàng Họ tên Giáo viên phản biện: ThS Mai Tuấn Khôi NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không ? Đánh giá loại : Điểm : Tp Hồ Chí Minh, ngày … tháng … năm 2019 Giáo viên phản biện (Ký & ghi rõ họ tên) an LỜI CẢM ƠN Nhóm chúng em xin chân thành cảm ơn Thầy tận tình giảng dạy, dẫn, góp ý giúp đỡ nhóm em suốt q trình học tập, nghiên cứu làm đề tài Những kiến thức mà thầy truyền dạy thực giúp chúng em nhiều, hiểu biết thêm quy trình xây dựng phần mềm ứng dụng sống, cách thức xây dựng, tìm hiểu lý thuyết để áp dụng vào Chúng em xin gửi lời cảm ơn sâu sắc đến q Thầy Cơ Khoa tận tình giảng dạy, trang bị cho chúng em kiến thức quý báu năm học vừa qua Chúng em xin gửi lòng biết ơn sâu sắc đến ba, mẹ, anh chị bạn bè ủng hộ, giúp đỡ động viên chúng em lúc khó khăn suốt thời gian học tập nghiên cứu Mặc dù chúng em cố gắng hoàn thành đề tài phạm vi khả cho phép, chắn không tránh khỏi thiếu sót, mong nhận cảm thơng tận tình bảo q Thầy Cơ bạn Nhóm em xin chân thành cám ơn! Nhóm sinh viên thực Trần Minh i an ĐH SƯ PHẠM KỸ THUẬT TP HCM KHOA CNTT ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP Họ tên Sinh viên 1: Trần Minh MSSV 1: 15110249 Họ tên Sinh viên 2: MSSV 2: Thời gian làm khóa luận: từ 3/2019 đến 6/2019 Chun ngành: Cơng nghệ phần mềm Tên khóa luận: Xây dựng ứng dụng tìm kiếm hàng hóa / cửa hàng GV hướng dẫn: ThS Nguyễn Trần Thi Văn Nhiệm vụ Khóa luận tốt nghiệp Lý thuyết Tìm hiểu tảng Firebase, Google Map API Thực hành: Xây dựng ứng dụng tìm kiếm hàng hố / cửa hàng Ứng dụng Cloud Firestore, Storage, Firestore làm máy chủ lưu trữ liệu cho ứng dụng Cải thiện giao diện ứng dụng Cải thiện liệu cho ứng dụng Xây dựng tính thêm cửa hàng, lưu trữ cửa hàng, tìm kiếm hàng hóa / cửa hàng với tùy chọn khác Đề cương viết Khóa luận tốt nghiệp: Phần MỞ ĐẦU 1.1 Tính cấp thiết đề tài 1.2 Mục đích đề tài 1.3 Cách tiếp cận phương pháp nghiên cứu - Đối tượng nghiên cứu - Phạm vi nghiên cứu 1.4 Phân tích cơng trình có liên quan 1.5 Kết dự kiến đạt Phần NỘI DUNG Chương 1: Cơ sở lý thuyết 1.1 Tìm hiểu Google Map Api ii an 1.2 Tìm hiểu tảng Firebase Chương 2: Khảo sát trạng xác định yêu cầu 2.1 Khảo sát trạng 2.2 Xác định yêu cầu 2.3 Mô tả hoạt động số chức Chương 3: Phân tích mơ hình hố u cầu 3.1 Nhận diện tác nhân chức sơ đồ use case 3.2 Sơ đồ Use case 3.3 Đặc tả Use case Chương 4: Thiết kế ứng dụng 4.1 Thiết kế sở liệu 4.2 Thiết kế giao diện 4.3 Thiết kế xử lý Chương 5: Cài đặt 5.1 Đặc tả hệ thống 5.2 Cấu trúc ứng dụng 5.3 Các lớp ứng dụng 5.4 Các thuật toán xử lý ứng dụng Chương 6: Kiểm thử so sánh 6.1 Kế hoạch kiểm thử 6.2 So sánh sản phẩm với ứng dụng khảo sát Phần KẾT LUẬN Kết đạt Những đóng góp đề xuất Ưu nhược điểm Hướng phát triển Danh mục tài liệu tham khảo iii an KẾ HOẠCH THỰC HIỆN STT Nhiệm vụ Ngày (Công việc dự kiến) 17/3 – 30/3 Chỉnh sửa, xây dựng yêu cầu ứng dụng 1/4 – 14/4 Ghi Xây dựng, phát thảo cải tiến giao diện ứng dụng Tìm hiểu tối ưu lưu trữ database local thiết bị 15/4 – 28/4 Xây dựng database local để lưu trữ thứ cần thiết Tìm hiểu Room Persistence Library 29/4 – 19/5 Xây dựng tính thêm cửa hàng từ phía người dùng 20/5 – 02/6 10/6 – 09/6 Hồn thành tính ứng dụng theo yêu cầu 10/6 – 23/6 Kiểm thử chương trình, chỉnh sửa, hồn thiện ứng dụng 24/6 Tìm hiểu ứng dụng Places API Xây dựng tính nhỏ ứng dụng Kiểm tra lại tồn chương trình báo cáo Trao đổi với GVHD báo cáo chương trình Tp Hồ Chí Minh, ngày … tháng … năm 2019 Ý kiến giáo viên hướng dẫn Người viết đề cương (Ký ghi rõ họ tên) (Ký ghi rõ họ tên) iv an MỤC LỤC PHẦN MỞ ĐẦU 1 Tính cấp thiết đề tài Mục tiêu đề tài Cách tiếp cận phương pháp nghiên cứu Kết dự kiến đạt PHẦN NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Tìm hiểu Google map API[2] 1.1.1 Tổng quan Google Maps SDK Android 1.1.2 Tạo Map 1.1.3 Map Padding 1.1.4 Businesses Points of Interest (POIs) 1.1.5 Tương tác với Map 1.1.6 Markers 1.1.7 Camera View 1.2 Tìm hiểu tảng Firebase 1.2.1 Tổng quan Firebase[1] 1.2.2 Các dịch vụ Firebase cung cấp 10 1.2.3 Tổng quan Cloud Firestore 13 1.2.4 Mơ hình liệu 14 CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 16 2.1 Khảo sát trạng 16 2.1.1 Hiện trạng 16 2.1.2 Phân tích cơng trình có liên quan 16 2.1.3 Yêu cầu 20 2.2 Xác định yêu cầu 21 v an CHƯƠNG 5: CÀI ĐẶT VÀ KẾT QUẢ THỰC NGHIỆM mở (OHA): hiệp hội gồm công ty phần cứng, phần mềm, viễn thông với mục tiêu đẩy mạnh tiêu chuẩn mở cho thiết bị di động Android trở thành tảng điện thoại thông minh phổ biến giới Android chiếm 87,7% thị phần điện thoại thông minh toàn giới vào thời điểm quý năm 2017, với tổng cộng tỷ thiết bị kích hoạt 1,3 triệu lượt kích hoạt ngày giới hạn/mở rộng thư viện hỗ trợ cho thiết bị di động, chứa thư viện mã nguồn mở cho Web, SQL Lite, OpenGL,… Phần mềm trung gian: dựa thư viện C/C++ từ nhân Linux, hoàn toàn hỗ trợ giao diện lập trình với ngơn ngữ java, tối ưu linh động định nghĩa thiết kế giao diện XML Tổ hợp phần mềm tiện ích cho thiết bị di động: nhiều ứng dụng cho phép quản lý/giải trí cá nhân thiết bị di động dộng (Contacts, Calendar, Phone, SMS Manager, Browser, Player, ) Hỗ trợ chuẩn đa phương tiện phổ biến, thoại GSM, Bluetooth EDGE, 3G Wifi, camera, GPS, la bàn, máy đo gia tốc,… Ngôn ngữ lập trình thức Android Java Dựa máy ảo Java Sun, Google tinh chỉnh phát triển nên máy ảo Dalvik để biên dịch mã Java với tốc độ biên dịch nhanh nhẹ ứng dụng Android sử dụng SQLite để quản lý sở liệu Bằng cách sử dụng frameworks hãng thứ ba (VD: PhoneGap, Titanium, ) Do sử dụng mã nguồn mở, Android ngày thu hút nhiều nhà phát triển khắp giới, họ tự tạo thương mại ứng dụng, hãng sản xuất tùy biến lại trải nghiệm Android cho khách hàng riêng Về phần cứng, Android hệ điều hành xuất nhiều thiết bị nhất, người dùng có thêm nhiều lựa chọn để sở hữu điện thoại hợp với túi tiền nhu cầu sử dụng thân Hầu tất Smartphone sử dụng hệ điều hành android dễ sử dụng, khả tùy biến nhanh chóng, ứng dụng hỗ trợ phong phú, tương thích với đa cấu hình phần cứng nhà xản xuất 5.2 Cấu trúc ứng dụng 5.2.1 Phần Java Thành phần ứng dụng Java, phần thực công việc lấy liệu từ Firebase hiển thị lên điện thoại, ngồi cịn sử dụng tài ngun điện thoại như: GPS, chụp ảnh 58 an CHƯƠNG 5: CÀI ĐẶT VÀ KẾT QUẢ THỰC NGHIỆM 5.2.2 Phần thư viện Ứng dụng sử dụng thư viện tảng Firebase tảng Google Map Ngoài có sử dụng thêm thư viện: xử lý ảnh, Facebook Develop SDK, Android Architecture Components[3], quản lý quyền[4] 5.3 Các lớp ứng dụng 5.3.1 Module lấy liệu cửa hàng Bộ phận thực nhiệm vụ tương tác đến Cloud Functions Firebase để lấy liệu cửa hàng tùy vào tham số truyền lên, dựa vào tham số lấy liệu chức mong muốn (lấy gần đây, lấy tất cả, lấy với khoảng cách nào, lấy thành phố / quận, ) class ModelStoreConnect StoreConnector HomeFragment - mHomeViewModel: HomeViewModel mInstance: HomeFragment mListStoreAdapter: StoreListAdapter mStoreConnector: StoreConnector + + GeocoderHandler(Location): String getLastLocation(): Location getListStoresByKeywords(string[]): List loadAllNewStores(Location, int, int): List loadStoresAt(int, Location, int, int): List onFailure(Exception): void onResult(T): void - mInstance: StoreConnector + + + + + + getInstance(): StoreConnector getNearbyStores(Location, float, int, IResult): void getNearbyStoresByKeywords(Location, int, string, double, IResult): void getNearbyStoresByProducts(Location, int, string, double, IResult): void getStoreById(int, IResult): void getStoresByKeywords(int, String, String[], IResult): void StoreListAdapter - mListStore: List mLocation: Location mOnItemClickListener: View.OnClickListener + setDataSetStore(List, Location): void «interface» IResult HomeViewModel + + + + categoryStore: MutableLiveData currentLocation: MutableLiveData listStore: MutableLiveData modeRange: MutableLiveData + updateListStore(List): void + + onFailure(Exception): void onResult(T): void Hình 5.2 Module lấy liệu cửa hàng 5.3.2 Module lấy liệu hàng hóa Bộ phận thực nhiệm vụ tương tác đến Cloud Functions Firebase để lấy liệu hàng hóa tùy vào tham số truyền lên, dựa vào tham số lấy liệu chức mong muốn (lấy gần đây, lấy tất cả, lấy với khoảng cách nào, lấy thành phố / quận, ) 59 an CHƯƠNG 5: CÀI ĐẶT VÀ KẾT QUẢ THỰC NGHIỆM class ModelProductConnect ProductConnector - mInstance: ProductConnector + + + + + getInstance(): ProductConnector getNearbyProduct(Location, float, int, IResult): void getProductById(int, IResult): void getProductByKeywords(int, String, String[], IResult): void getProductsOfStore(int, IResult): void HomeFragment - mHomeViewModel: HomeViewModel mInstance: HomeFragment mListProductAdapter: ProductListAdapter mProductConnector: ProductConnector + + GeocoderHandler(Location): String getLastLocation(): Location getListProductsByKeywords(string[]): List loadAllNewProducts(Location, int, int): List loadProductsAt(int, Location, int, int): List onFailure(Exception): void onResult(T): void ProductListAdapter - mListProduct: List mLocation: Location mOnItemClickListener: View.OnClickListener + setDataSetProduct(List, Location): void «interface» IResult HomeViewModel + + + + categoryProduct: MutableLiveData currentLocation: MutableLiveData listProduct: MutableLiveData modeRange: MutableLiveData + updateListProduct(List): void + + onFailure(Exception): void onResult(T): void Hình 5.3 Module lấy liệu hàng hóa 5.3.3 Module lấy liệu giao diện đồ Bộ phận thực lấy liệu cửa hàng đưa vào giao diện đồ hiển thị lên dạng marker có đồ class ModelGetListForMap MyMapFragment - mInstance: MyMapFragment mListMarkers: List mMap: GoogleMap mScaleFactor: int mStoreConnector: StoreConnector + + - addPlaces(stores): void getLastLocation(IResult): void getListStoreCenterPos(): void onFailure(Exception): void onResult(T): void removePlaces(): void updatePlacesWhenMoveIdle(): void updatePlacesWhenScaleSearchBox(): void StoreConnector - mInstance: StoreConnector + getNearbyStoresMap(Location, IResult): void «interface» IResult + + onFailure(Exception): void onResult(T): void Hình 5.4 Module lấy cửa hàng giao diện đồ 5.3.4 Module thêm cửa hàng Bộ phận thực đưa liệu người dùng nhập tính thêm cửa hàng lên thẳng Firestore nằm collection verify_store Sau Admin 60 an CHƯƠNG 5: CÀI ĐẶT VÀ KẾT QUẢ THỰC NGHIỆM kiểm duyệt liệu thêm thuộc tính hồn chỉnh vào, liệu ổn thõa đưa vào trực tiếp sở liệu class ModelAddStore AddStoreViewModel AddStoreActivity - mAddStoreViewModel: AddStoreViewModel mStoreConnector: StoreConnector - checkCorrectData(): boolean requestPermission(): void selectImage(): List + + + + + + categoryStore: MutableLiveData cityID: MutableLiveData districtID: MutableLiveData listImageSelect: MutableLiveData location: MutableLiveData mAddressRepository: AddressRepository wardID: MutableLiveData + + + getCityByID(int): void getDistrictByID(int): void getWardByID(int): void StoreConnector - mInstance: StoreConnector + + uploadImage(ArrayList, int, int): void uploadStore(int, int, string, int, String[], Location, String, String, String): void Hình 5.5 Module thêm cửa hàng 5.4 Các thuật toán xử lý ứng dụng 5.4.1 Thuật toán GeoHash[5] Vấn đề: Cần tìm cửa hàng khu vực xác định dựa theo toạ độ phạm vi Nếu map lớn có nhiều cửa hàng việc tìm kiếm khó khăn phải duyệt qua toàn cửa hàng map, tốn nhiều chi phí tính tốn thời gian Như cần tổ chức lại cách thức lưu trữ cho việc tìm kiếm cửa hàng tọa độ phạm vi định thực nhanh chóng Ý tưởng thuật tốn: Dữ liệu lưu trữ Cloud Firestore truy xuất nhanh chóng dựa Indexing tức liệu cột index xếp trước theo thứ tự tăng dần hay giảm dần, từ tìm kiếm nhanh chóng liệu cần tìm Vậy ta thêm thuột tính A nào liệu cửa hàng mà ta thực indexing cột A, từ nhanh chóng tìm kiếm cửa hàng cần tìm Dựa vào cấu trúc kiệu Quad tree, chia toàn mặt phẳng Google Map thành phần R0(i), R1(i), R2(i), R3(i) (i có nghĩa số thứ tự lần chia, lần chia i = 0, lần chia thứ hai i + 1,…) tương ứng với phần theo chiều kim đồng hồ, phần bên trái Chúng ta thực đệ quy chia tiếp lớp thành 61 an CHƯƠNG 5: CÀI ĐẶT VÀ KẾT QUẢ THỰC NGHIỆM phần R0(i + 1), R1(i + 1), R2(i + 1), R3(i + 1), lúc ta có * = 16 phần lần chia thứ i + 1, kích thước phần chia cuối R(i + n) đạt giá trị định ngừng Hình 5.6 Tầng lớp phân chia thuận tốn Geohash Như hình (b) có lớp R(i) > R(i + 1) > R(i + 2) > … > R(i + n), (R0 > R1 có nghĩa lớp R0 chứa lớp R1) R có phần R0, R1, R2, R3 Ta định nghĩa Grid Number (GN) phần RK(i) (với i = 0, 1, 2, …, n; K = 0, 1, 2, 3) có giá trị là: 𝐺𝑁 = 𝐾(0) ∗ 4𝑛 + 𝐾 (1) ∗ 4𝑛−1 + … + 𝐾(𝑖 ) ∗ 4𝑛−1 Ví dụ ta có R0(0) > R2(1) > R1(2) > R3(3), n = 7, i = : 𝐺𝑁 = ∗ 47 + ∗ 46 + ∗ 45 + ∗ 44 Các cửa hàng nằm phần Rk(n) gán GN vào thuộc tính A mà ta đề cập trước, Cloud FireStore ta cần thực Indexing lên cột A cửa hàng 62 an CHƯƠNG 5: CÀI ĐẶT VÀ KẾT QUẢ THỰC NGHIỆM Hình 5.7 Thuật toán GeoHash map 63 an CHƯƠNG 6: KIỂM THỬ VÀ SO SÁNH CHƯƠNG 6: KIỂM THỬ VÀ SO SÁNH 6.1 Kế hoạch kiểm thử Ứng dụng thực test case bảng đây, tập trung vào loại test type như: functionality, user interface, performance, Bảng 6.1 Thiết kế test case cho ứng dụng Semi Yêu cầu cấp Yêu cầu cấp Test case ID Mô tả test case Kiểm tra danh sách hiển thị User_Search_Store_1 cửa hàng có với phân loại chọn Kiểm tra danh sách hiển thị User_Search_Store_2 cửa hàng thay đổi khoảng cách tìm theo chế độ quanh Kiểm tra danh sách hiển thị User_Search_Store_3 tìm theo chế độ tất Tìm kiếm cửa User hàng hình cửa hàng thay đổi địa Kiểm tra danh sách hiển thị User_Search_Store_4 cửa hàng sử dụng nút điều hướng nhanh Nếu danh sách cửa hàng đạt User_Search_Store_5 20 lần kéo đầu tiên, kiểm tra liệu có nhận tiếp hay khơng Chọn cửa hàng danh User_Search_Store_6 sách hiển thị, kiểm tra thông tin nhận có xác khơng Kiểm tra danh sách hiển thị Tìm kiếm hàng User User_Search_Product_1 loại chọn hóa hình hàng hóa có với phân User_Search_Product_2 64 an Kiểm tra danh sách hiển thị hàng hóa thay đổi khoảng CHƯƠNG 6: KIỂM THỬ VÀ SO SÁNH cách tìm theo chế độ quanh Kiểm tra danh sách hiển thị User_Search_Product_3 hàng hóa thay đổi địa tìm theo chế độ tất Nếu danh sách hàng hóa đạt User_Search_Product_4 20 lần kéo đầu tiên, kiểm tra liệu có nhận tiếp hay khơng UI_Home_1 Kiểm tra trạng thái có hiển thị tùy chọn Kiểm tra chữ hiển thị trạng UI_Home_2 User thái có tùy chọn chọn Màn hình home UI_Home_3 Kiểm tra danh sách có trả khoảng cách chưa Thao tác chuyển đổi qua UI_Home_4 menu khác, kiểm tra hình trả User_Search_Map_Store_1 User_Search_Map_Store_2 Màn hình Around User User_Search_Map_Store_3 (các cửa hàng khu vực bất Kiểm tra cửa hàng có hiển thị lên bảng đồ không Kiểm tra thay đổi động rộng ô vuông đồ Kiểm tra thao tác kéo đồ Kiểm tra liệu cửa hàng User_Search_Map_Store_4 nhấn vào marker hiển thị đồ kỳ) Kiểm tra thông tin chuyển đổi sang hình chi tiết cửa User_Search_Map_Store_5 hàng nhấp vào tiêu đề marker xác với cửa hàng chọn trước chưa 65 an CHƯƠNG 6: KIỂM THỬ VÀ SO SÁNH Kiểm tra lưu cửa hàng User_Bookmark_1 có hiển thị giao diện hay khơng User Màn hình đánh User_Bookmark_2 dấu cửa hàng User_Bookmark_3 User_Bookmark_4 User Màn hình thơng tin người dùng User_Me_Infor_1 User_Me_Infor_2 Kiểm tra thông tin cửa hàng lưu Kiểm tra bỏ lưu cửa hàng Kiểm tra thoát ứng dụng, cửa hàng lưu có bị Đăng nhập / đăng xuất ứng dụng Kiểm tra tính góp ý / liên hệ Kiểm tra khơng đăng nhập User_Add_Store_1 có sử dụng tính hay khơng Kiểm tra giao diện thực User_Add_Store_2 nhập thông tin tên cửa hàng, địa chỉ, số điện thoại, mô tả Kiểm tra liệu thành phố / User_Add_Store_3 Màn hình thêm User xác khơng cửa hàng (bắt buộc đăng nhập) quận / phường chọn có trả Kiểm tra liệu vị trí chọn User_Add_Store_4 vị trí đồ có trả xác hay khơng User_Add_Store_5 User_Add_Store_6 Kiểm tra thêm hình ảnh cho cửa hàng Kiểm tra xóa hình ảnh cho cửa hàng Kiểm tra tính người User_Add_Store_7 dùng hoàn thành liệu gửi xác chưa 66 an CHƯƠNG 6: KIỂM THỬ VÀ SO SÁNH Kiểm tra chất lượng hình ảnh User_Add_Store_8 lên “Storage Firebase” nén xuống chưa Kiểm tra danh sách trả User_Search_Keyword_1 tương ứng với keywords nhập trước User_Search_Keyword_2 Màn hình tìm User kiếm cửa hàng / User_Search_Keyword_3 hàng hóa theo từ khóa Kiểm tra chuyển đổi tìm cửa hàng / hàng hóa Kiểm tra tắt mạng có báo lỗi Kiểm tra danh sách trả có User_Search_Keyword_4 tương ứng với tùy chọn chọn trước Kiểm tra nhấn vào cửa User_Search_Keyword_5 hàng / hàng hóa có chuyển sang hình cửa hàng khơng Kiểm tra danh sách cửa hàng Admin_Data_Verify_1 nhận với Firebase chưa Kiểm duyệt cửa Admin_Data_Verify_2 hàng Kiểm tra hình ảnh nhận Kiểm tra liệu xác nhận Admin_Data_Verify_3 Admin kiểm duyệt, liệu có thêm vào collection Store / Product Firestore Kiểm tra cập nhập liệu Cập nhập liệu Admin_Data_Update_1 collection Store / Product Firestore có cập nhập theo khơng Dữ liệu hình ảnh Thêm liệu Admin_Data_Add_1 thêm vào có Firestore khơng 67 an CHƯƠNG 6: KIỂM THỬ VÀ SO SÁNH 6.2 So sánh sản phẩm với ứng dụng khảo sát 6.2.1 Ứng dụng Foody di động Điểm bật Một phần ứng dụng không nhiều tính so với Foody nên tập trung vào tính tìm kiếm cửa hàng / hàng hóa, thiết kế phần giao diện để người dùng thao tác nhận thơng tin cửa hàng Điểm hạn chế Mặt kỹ thuật hạn chế nên chưa tối ưu ứng dụng, tốc độ xử lý cịn chậm, ngồi Foody phát triển lớn mạnh, họ thêm tính đề tài đưa họ dể dàng đánh bật nhóm em Kiểm duyệt liệu vấn đề trọng điểm, cần nhân lực để thực việc Điểm cần cải tiến học hỏi Đưa ứng dụng trở thành hướng cộng động Foody: có bình luận, đăng bài, vote, giúp cho liệu đa dạng phong phú đến người dùng Foody dùng sở hạ tầng riêng, ứng dụng Semi dùng tảng Firebase nên phụ thuộc vào Google, sử dụng server riêng không phụ thuộc vào Google nên điều hướng tới đề tài nhóm em 6.2.2 Ứng dụng Map.me di động Điểm bật So với Map.me ứng dụng Semi nhóm có phần giao diện bật tính hiển thị cửa hàng trọng sâu vào tùy chọn tìm kiếm khác Điểm hạn chế Ứng dụng Map.me sử dụng đồ riêng sử dụng offline, không phụ thuộc bên thứ nên ưu điểm lớn so với ứng dụng Semi nhóm em Ứng dụng Map.me cung cấp nhiều tính đồ đường mà gần Semi khơng có Điểm cần cải tiến học hỏi Bản đồ offline thứ mà nhóm em tương lai để mắt đến Các tính đồ Map.me hay như: đường với nhiều loại phương tiện khác nhau, hiển thị theo lớp đồ khác (giao thông, tàu điện), đánh dấu địa điểm lưu trữ online, hổ trợ tìm loại địa điểm hay dùng chưa có nhiều ứng dụng (bãi đỗ xe, trạm xăng, cảnh sát, bưu điện) 68 an PHẦN : KẾT LUẬN PHẦN KẾT LUẬN Kết đạt - Những kiến thức tìm hiểu Biết thêm kĩ thuật xây dựng giao diện Android Nắm tương tác với collection document Cloud Firestore, hiểu số nguyên lý hoạt động trình truy vấn đến Cloud Firestore Sử dụng số công nghệ liên quan Cloud Storage, Cloud Functions Biết thêm kiến thức tính tốn, thuật tốn dùng việc xử lý liệu Google Map Biết cách sử dụng thành phần Android Architecture Components (Room database, live data, view model, mơ hình MVVM, ) Hiểu cách hoạt động ứng dụng Google Place API - Ứng dụng tìm kiếm hàng hóa / cửa hàng Android Xây dựng chức quan trọng: tìm kiếm cửa hàng hàng hóa tùy theo lựa chọn khác (khoảng cách, địa chỉ), hiển thị thông tin cửa hàng lên Google Map Nắm cách tích hợp tương tác với Google Map ứng dụng Android Người dùng thêm cửa hàng Sử dụng dịch vụ đăng nhập bên thứ Facebook Google - Ứng dụng quản lý quản trị viên Windows Quản trị viên kiểm sốt liệu cửa hàng người dùng thêm vào Cập nhập, chỉnh sửa liệu cửa hàng / hàng hóa Những đóng góp đề xuất Xây dựng bước đầu chức giải vấn đề tìm kiếm cửa hàng hàng hóa: cửa hàng xung quanh vị trí tại, cửa hàng có bán loại hàng hóa cần tìm, cách bao xa cho biết cách liên hệ đến cửa hàng thơng qua Google Maps 69 an PHẦN : KẾT LUẬN Ưu nhược điểm 3.1 Ưu điểm Ứng dụng có khả giúp người dùng tìm kiếm cửa hàng hàng - hóa Với lựa chọn khác nhau, dựa tình huống, người dùng dể dàng tìm - kiếm nhanh (gần theo địa chỉ) Firestore cấp khả truy vấn nhanh chóng, dễ dàng sửa đổi liệu - Database Google Maps cho phép người dùng tìm đường đến cửa hàng mà - họ mong muốn 3.2 Nhược điểm - Ứng dụng chưa hồn thiện, cịn thiếu sót nhiều chức - Cơng nghệ sử dụng Cloud Firestore nhiều hạn chế việc truy vấn liệu, có thời điểm tương tác với Cloud Firestore cịn chậm q trình cold start Cloud Firestore - Google Maps hoạt động chậm dần kiệu (Marker) hiển thị Map tăng lên Hướng phát triển - Tiếp tục cải thiện hiệu suất ứng dụng trình tìm kiếm cửa hàng hàng hóa, cải thiện giao diện người dùng - Xây dựng server lưu trữ liệu riêng thay cho Firebase - Xây dựng thêm nhiều chức - Thu thập thêm nhiều liệu cửa hàng hàng hóa từ người dùng - Mở rộng từ cửa hàng / hàng hóa thành tìm kiếm địa điểm khác Dựa triển khai thêm tính liên quan đến thơng tin địa điểm như: dịch vụ địa điểm đó, đặt hàng / đặt vé, 70 an DANH MỤC TÀI LIỆU THAM KHẢO DANH MỤC TÀI LIỆU THAM KHẢO [1] Google – Documentation Firebase https://firebase.google.com/docs/firestore/ [2] Google – Documentation Google Map https://developers.google.com/maps/documentation/android-sdk/start [3] Vu Viet Anh Viblo.asia - Android Architecture Components - Live Data https://viblo.asia/p/android-architecture-components-live-data-vyDZOXMdlwj [4] Dexter - Thư viện quản lý quyền https://github.com/Karumi/Dexter [5] Wikipedia - Geohash https://en.wikipedia.org/wiki/Geohash 71 an S an K L 0 ... từ áp dụng xây dựng ứng dụng Semi – tìm kiếm hàng hố / cửa hàng có tính sau: - Ứng dụng cho phép tìm kiếm hàng hố, cửa hàng sau đưa thơng tin cửa hàng liên quan - Tìm kiếm cửa hàng / hàng hóa với... Place API để sử dụng chung liệu cửa hàng Google nhằm mở rộng độ lớn database - Xây dựng ứng dụng tìm kiếm hàng hóa / cửa hàng Android với chức năng: Tìm kiếm cửa hàng / hàng hóa xung quanh vị... khả tìm kiếm (từ khóa, khoảng cách, địa chỉ, phân loại) Tìm kiếm cửa hàng vùng bao quanh tùy chỉnh Lưu lại cửa hàng Đăng nhập vào ứng dụng Người dùng thêm cửa hàng - Xây dựng ứng dụng