Mô tả chi tiết chức năng của Use Case

Một phần của tài liệu Xây dựng ứng dụng tìm phòng trên nền tảng android (Trang 95)

STT TÊN USE CASE CHÍNH MÔ TẢ

1 Đăng nhập Tất cả các actor liên quan thực hiện: - Nhập Username

- Nhập Password

2 Đăng xuất Tất cả các actor thực hiện:

- Thoát khỏi tài khoản sau khi sử dụng

3 Cập nhật hệ thống Quản trị hệ thống thực hiện: - Thay đổi version ứng dụng - Sửa dữ liệu của hệ thống.

83

- Tìm kiếm lỗi - Chỉnh sửa fix lỗi

5 Duyệt bài Quản lý thực hiện:

- Xác minh thông tin phòng - Xóa dữ liệu phòng

6 Quản lý người dùng Quản lý thực hiện:

- Xóa dữ liệu khách hàng - Sửa dữ liệu khách hàng

7 Tìm kiếm phòng Người đi thuê thực hiện: - Nhập thông tin phòng - Lựa chọn phòng

8 Đăng bài Người cho thuê thực hiện:

- Nhập thông tin phòng - Chỉnh sửa thông tin phòng - Gửi bài

7 Cập nhật thông tin phòng Người cho thuê thực hiện: - Thêm thông tin

- Cập nhật thông tin - Xóa thông tin

Bảng 4.3. Bảng mô tả chi tiết chức năng Use Case của ứng dụng tìm phòng H-Conve (Nguồn: Tác giả xây dựng)

84 4.1.3. Sơ đồ Use Case Diagram

Hình 4.1. Use Case chung của ứng dụng H-Conve

(Nguồn: Tác giả xây dựng)

Hình 4.2. Use Case cập nhật hệ thống ứng dụng H-Conve

85

Hình 4.3. Use Case Bảo trì hệ thống H-Conve

(Nguồn: Tác giả xây dựng)

Hình 4.4. Use Case Cập nhật phòng

86

Hình 4.5. Use Case Đăng bài

(Nguồn: Tác giả xây dựng)

Hình 4.6. Use Case Duyệt Bài

87 (adsbygoogle = window.adsbygoogle || []).push({});

Hình 4.7. Use Case quản lý người dùng

(Nguồn: Tác giả xây dựng)

Hình 4.8. Use Case quản lý phòng

88

Hình 4.9. Use Case Tìm kiếm phòng

(Nguồn: Tác giả xây dựng)

Hình 4.10. Use Case Xem thống kê

89 4.1.4. Sequence Diagram

Hình 4.11. Sequence Diagram “Đăng nhập”

(Nguồn: Tác giả xây dựng)

Sequence Diagram Đăng nhập

Mô tả Cho phép người dùng đăng nhập vào hệ thống.

Tác nhân kích hoạt Người dùng

Tiền điều kiện Người dùng biết tài khoản và mật khẩu đăng nhập

Các bước thực hiện (1) Người dùng mở App H-Conve và click vào ô đăng nhập

(2) Hiển thị forrmDangNhap. Người dùng tiến hành nhập Email và password

(3) Nhấn nút “Đăng Nhập” hoặc nhấn Enter

(4) Gửi thông tin đăng nhập lên CSDL kiểm tra và tiến hành trả kết quả đăng nhập.

(5) Nếu đăng nhập thất bại, thông báo “Nhập sai tên tài khoản hoặc mật khẩu”. Người dùng nhập lại thông tin và đăng nhập lại lần nữa

90 (6) Nếu đăng nhập thành công. Xuất hiện giao diện chương

trình với đầy đủ chức năng của Người dùng.

Bảng 4.4. Bảng mô tả chức năng Sequence diagram “Đăng nhập”

(Nguồn: Tác giả xây dựng)

Hình 4.12. Sequence Diagram “Đăng Xuất”

(Nguồn: Tác giả xây dựng)

Sequence Diagram Đăng nhập

Mô tả Cho phép người dùng đăng xuất vào hệ thống.

Tác nhân kích hoạt Người dùng

Tiền điều kiện Người dùng muốn thoát tài khoản khỏi App H-Conve

Các bước thực hiện (1) Người dùng mở App H-Conve và click vào ô tài khoản. (adsbygoogle = window.adsbygoogle || []).push({});

91

(2) Hiển thị forrm Tài Khoản. Người dùng tiến hành đăng xuất

(3) Gửi thông tin đăng nhập lên CSDL tiến hành đăng xuất Tài khoản.

(4) Thông báo đăng xuất thành công

Bảng 4.5. Bảng mô tả chức năng Sequence diagram “Đăng xuất”

(Nguồn: Tác giả xây dựng)

Hình 4.13. Sequence Diagram “Cập Nhật Hệ Thống”

(Nguồn: Tác giả xây dựng)

Sequence Diagram Cập nhật hệ thống

Mô tả Cho phép Admin cập nhật thông tin hệ thống lên CSDL

92 Tiền điều kiện Admin muốn cập nhật hệ thống về ứng dụng tìm phòng H-

Conve

Các bước thực hiện (1) Admin mở chương trình và chọn mục QuanLy

(2) Xuất hiện trang QuanLy và Admin chọn mục chỉnh sửa hệ thống để tiến hành cập nhật.

(3) Xuất hiện mục con Chỉnh sửa hệ thống và Admin tiến hành chỉnh sửa thông tin hệ thống H-Conve

(4) Dữ liệu sau khi cập nhật được chuyển lên CSDL để lưu trữ.

(5) CSDL tiến hành lưu thông tin chỉnh sửa và phản hồi kết quả. Cuối cùng thông báo chỉnh sửa thành công về cho Admin.

Bảng 4.6. Bảng mô tả chức năng Sequence Diagram “Cập nhật hệ thống”

(Nguồn: Tác giả xây dựng)

Hình 4.14. Sequence Diagram “Đăng Bài”

93 Sequence Diagram Đăng bài

Mô tả Cho phép Người cho thuê cập nhật thông tin hệ thống lên CSDL

Tác nhân kích hoạt Người cho thuê

Tiền điều kiện Người cho thuê muốn cập nhật hệ thống về ứng dụng tìm phòng H-Conve

Các bước thực hiện (1) Người cho thuê mở app H-Conve và chọn mục Đăng bài

(2) Xuất hiện trang Đăng bài và xuất hiện giao diện Đăng bài.

(3) Người cho thuê tiến hành tùy chỉnh thông tin Bài Đăng.

(4) Người cho thuê tiến hành đăng bài

(5) Quản lý kiểm duyệt bài đăng. Nếu không hợp lệ thì thông báo thêm bài thất bại.

(6) Nếu đăng bài thành công thì Dữ liệu sau khi cập nhật được chuyển lên CSDL để lưu trữ. (adsbygoogle = window.adsbygoogle || []).push({});

(7) CSDL tiến hành lưu thông tin chỉnh sửa và phản hồi kết quả. Cuối cùng thông báo đăng bài thành công về Người cho thuê.

Bảng 4.7. Bảng mô tả chức năng Sequence Diagram “Đăng Bài”

94

Hình 4.15. Sequence Diagram “Quản Lý Người Dùng”

(Nguồn: Tác giả xây dựng)

Sequence Diagram Quản Lý Người Dùng

Mô tả Quản Lý muốn kiểm tra thông tin từ Quản lý người dùng

Tác nhân kích hoạt Quản lý

Tiền điều kiện Quản lý muốn kiểm tra thông tin cho chính xác

Các bước thực hiện (1) Quản lý tiến hành chọn mục Quanly từ App H-Conve. Xuất hiện frmQuanly.

(2) Quản lý chọn mục Quản lý người dùng. Hiển thị mục quản lý người dùng

(3) Quản lý tiến hành tùy chỉnh thông tin khách hàng như thêm, xóa thông tin.

(4) Gửi thông tin vừa cập nhật lên CSDL. CSDL tiến hành lưu thông tin và phản hồi kết quả

(5) Thông báo chỉnh sửa thành công

Bảng 4.8. Bảng mô tả chức năng Sequence Diagram “Quản lý người dùng” (Nguồn: Tác giả xây dựng)

95

Hình 4.16. Sequence Diagram “Thống Kê Doanh Thu”

(Nguồn: Tác giả xây dựng)

Sequence Diagram Thống Kê Doanh Thu

Mô tả Quản lý muốn tạo một bảng thống kê doanh thu

Tác nhân kích hoạt

Quản lý

Tiền điều kiện Quản lý muốn cập nhật bảng thống kê doanh thu cho chính xác

Các bước thực hiện

(1) Quản lý tiến hành chọn mục Quanly từ App. Xuất hiện frmQuanLy.

(2) Quản lý tiến hành chọn Thống kê doanh thu từ FrmQuanLy.

(3) Hệ thống hiển thị trang con Thống Kê Doanh Thu. Quản lý tiến hành chọn loại thống kê như ngày, tháng, tuần, quý, năm.

96 (4) Hệ thống kiểm tra thông tin trên CSDL. CSDL phản hồi

kết quả thành công.

(5) Hệ thống kiểm tra lại thông tin. Trả về kết quả thống kê doanh thu như mong muốn. (adsbygoogle = window.adsbygoogle || []).push({});

Bảng 4.9. Bảng mô tả chức năng Sequence Diagram “Thống kê doanh thu” (Nguồn: Tác giả xây dựng)

Hình 4.17. Sequence Diagram “Duyệt Bài”

(Nguồn: Tác giả xây dựng)

Sequence Diagram Duyệt bài

Mô tả Cho phép Quản lý duyệt bài đăng trên App H-Conve.

Tác nhân kích hoạt Quản Lý

Tiền điều kiện Quản lý muốn duyệt các bài đăng của người cho thuê

Các bước thực hiện (1) Quản lý click vào mục QuanLy từ App. Xuất hiện frmQuanly

97 (2) Quản lý chọn mục duyệt bài. Hiển thị giao diện Duyệt

bài.

(3) Quản lý chọn các bài đã đăng. CSDL kiểm tra rồi phản hồi kết quả.

(4) Quản lý tiến hành kiểm tra bằng cách duyệt bài hoặc xóa bài.

(5) Lưu kết quả duyệt bài lên CSDL

(6) Hệ thống CSDL tiến hành xử lý lưu kết quả và thông báo duyệt bài thành công.

Bảng 4.10. Bảng mô tả chức năng Sequence Diagram “Duyệt bài”

(Nguồn: Tác giả xây dựng)

Hình 4.18. Sequence Diagram “Tìm kiếm phòng”

98 Sequence Diagram Tìm kiếm phòng

Mô tả Cho phép Người dùng tìm kiếm phòng trên App H-Conve.

Tác nhân kích hoạt Người dùng

Tiền điều kiện Người dùng muốn tìm phòng mong muốn

Các bước thực hiện (1) Người dùng click vào ô Tìm kiếm từ App.

(2) Gửi thông tin yêu cầu lên CSDL.

(3) Xuất hiện ALT kiểm tra dữ liệu tìm kiếm. Nếu có kết quả thì hiển thị phòng theo yêu cầu. Nếu không có kết quả thì hiển thị không tìm thấy kết quả mong muốn.

(4) Gửi kết quả tìm kiếm về cho người dùng.

Bảng 4.11. Bảng mô tả chức năng Sequence Diagram “Tìm kiếm phòng”

(Nguồn: Tác giả xây dựng)

Hình 4.19. Sequence Diagram Cập nhật phòng

99 Sequence Diagram Cập nhật phòng

Mô tả Cho phép Người cho thuê cập nhật phòng trên App H-Conve. (adsbygoogle = window.adsbygoogle || []).push({});

Tác nhân kích hoạt

Người cho thuê

Tiền điều kiện Người cho thuê muốn chỉnh sửa phòng đã đăng

Các bước thực hiện

(1) Người dùng click vào ô Đăng tin từ App. Xuất hiện Frm Đăng tin.

(2) Người cho thuê cập nhật thông tin phòng (Thêm, sửa, xóa)

(3) Dữ liệu sau khi cập nhật lưu về CSDL.

(4) Gửi kết quả cập nhật thành công về người cho thuê.

Bảng 4.12. Bảng mô tả chức năng Sequence Diagram “Cập nhật phòng”

(Nguồn: Tác giả xây dựng)

4.1.5. Class Diagram

Hình 4.20. Class Diagram Ứng dụng tìm phòng H-Conve

100 4.1.6. Mô hình thực thể quan hệ ERD

Hình 4.21. Mô hình thực thể quan hệ ERD

(Nguồn: Tác giả xây dựng)

Thực thể Thuộc tính Chú thích

Người thuê ID Người thuê

Họ tên Địa chỉ Số điện thoại

ID Người thuê: khóa chính

Tài khoản Tên tài khoản

Mật khẩu Email

Tên tài khoản: khóa chính

Phòng ID phòng

Giá phòng Địa chỉ

SDT người cho thuê

101 Ngày đăng Admin ID admin Tên Số điện thoại Địa chỉ ID admin: khóa chính

Người cho thuê ID người cho thuê Họ tên

Địa chỉ Số điện thoại

ID người cho thuê: khóa chính

Bảng 4.13. Bảng mô tả các thực thể trong hệ thống ERD (adsbygoogle = window.adsbygoogle || []).push({});

(Nguồn: Tác giả xây dựng)

4.1.7. Activity Diagram

Hình 4.22. Sơ đồ Activity Diagram của Use Case Đặt Phòng

102 Thuộc Use Case Đặt Phòng

Mô tả Cho phép Người dùng đăng nhập vào website và đặt phòng.

Tác nhân liên quan Người dùng, hệ thống CSDL

Quy trình thực hiện tuần tự

(1)Người dùng đăng nhập vào hệ thống (nhập user name và password).

(2)Hệ thống nhận dữ liệu và tiến hành xác thực.

(3)Xét TH: Thông tin đăng nhập hợp lệ, hệ thống cấp quyền truy cập cho người dùng.

(4)Người dùng tiến hành tra cứu phòng. (5)Người dùng tiến hành tra tiêu chí phòng.

(6)Người dùng tiến hành đặt phòng sau khi tra cứu xong. (7)Xét TH: Nếu thông tin người dùng nhập chính xác, tiến hành gửi thông báo qua điện thoại và gửi thông tin qua email.

(8)Người dùng tiến hành kiểm tra thông báo trên điện thoại.

(9) Người dùng tiến hành kiểm tra thông tin trên email. (10) Người dùng xem thông tin đặt phòng (kết thúc tác

vụ).

(12), (13) Xét TH: Nếu thông tin Người dùng nhập không chính xác, hệ thống sẽ gửi thông báo cho khách hàng thực hiện lại.

(14) Xét TH: Thông tin đăng nhập không hợp lệ, hệ thống sẽ trở về trang chủ và yêu cầu khách hàng thực hiện lại.

Bảng 4.14. Bảng mô tả quy trình Activity Diagram “Đặt phòng”

103 4.1.8. Biểu đồ trạng thái

Hình 4.23. Biểu đồ State Diagram khi khách hàng mua hàng

(Nguồn: Tác giả xây dựng)

4.2 Thiết kế giao diện

4.2.1. Một số thư viện hỗ trợ lập trình trong android studio

4.2.1.1. Thư viện load ảnh Glide.

Hình 4.24. Thư viện load ảnh Glide

104

Glide là gì?

Thư viện Glide được phát hành bởi Bumptech dùng để load ảnh cho các ứng dụng android. Tại Thái Lan, Google giới thiệu Glide tại một hội nghị chỉ dành cho các Google Development và được Google đề xuất. Glide là một thư viện giúp các ứng dụng android load ảnh nhanh chóng và mượt mà hơn. Cách thêm thư viện ảnh Glide vào phần mềm Android studio.

Bước 1: Mở Android studio > project > build.gradle.

Bước 2: Thêm thư viện ảnh vào dòng cuối cùng của thư mục build.gradle. (adsbygoogle = window.adsbygoogle || []).push({});

Hình 4.26. Thêm thư viện ảnh glide vào Android studio

(Nguồn: Android Studio)

Bước 3: Tạo một java class đặt tên là GlideUnits.

Hình 4.25. Truy cập build.gradle trong Android studio

105

Hình 4.27. Tạo new java class

(Nguồn: Android Studio)

Bước 4: Cách sử dụng Glide.

Đối với một view đơn giản ta làm như sau:

Hình 4.28. Sử dụng glide đối với một view đơn giản

(Nguồn: Android Studio)

106

Hình 4.29. Sử dụng glide đổi với một list view

(Nguồn: Android Studio) Thư viện ảnh Glide giải quyết các vấn đề gì?

Hết bộ nhớ, ngốn bộ nhớ (out of memory)

Các ứng dụng chạy hệ điều hành Android đều được cấp một vùng nhớ nhất định để truy cập và lưu trữ các dữ liệu,… Ngoài dữ liệu, việc ứng dụng sử dụng quá nhiều hình ảnh sẽ dẫn tới hiện tượng đầy vùng nhớ từ đó dẫn tới ứng dụng bị đứng và thoát ra ngoài.

Để giải quyết vấn đề trên thư viện ảnh Glide sử dụng kỹ thuật

Downsampling. Downsampling hoạt động bằng cách scale kích thước ảnh gốc về nhỏ hơn kích thước view.

Tải ảnh chậm.

Việc load cùng lúc nhiều ảnh trên ứng dụng mất rất nhiều thời gian, ứng dụng cần thời gian để mã hóa code về ảnh, lấy ảnh từ server về,… Thư viện Glide sẽ giúp ứng dụng dừng load các tác vụ không cần thiết, chỉ tập trung vào load những ảnh đang hiển thị.

Sử dụng glide dựa vào câu lệnh sau.

Hình 4.30. Câu lệnh giúp load ảnh nhanh trên ứng dụng H-Covne

107 4.2.1.2. Retrofit

Theo định nghĩa của nhà phát triển Retrofit: “A TYPE-SAFE HTTP CLIENT FOR ANDROID AND JAVA”.

Retrofit giúp kết nối một dịch vụ Rest trở nên dễ dàng hơn bằng cách chuyển đổi API thành Java Interface trên ứng dụng android, hoặc trên web.

Hình 4.31. Retrofit trong Android studio

(Nguồn: Viblo.asia)

Thư viện mạnh mẽ này giúp bạn dễ dàng xử lý dữ liệu JSON hoặc XML sau đó phân tích cú pháp thành Plain Old Java Objects (POJOs). Tất cả các yêu cầu GET, POST, PUT, PATCH, và DELETE đều có thể được thực thi.

Hình 4.32. Thêm thư viện Retrofit trong Android studio

108 (adsbygoogle = window.adsbygoogle || []).push({});

Hình 4.33. Retrofit client

(Nguồn: Android Studio)

4.2.1.3. Một số thư viện khác.

Thư viện Apollo hỗ trợ cho việc giao tiếp với GraphQL

Hình 4.34. Thư viện Apollo

(Nguồn: Tác giả xây dựng)

Event bus: Sự kiện cho Android

Hình 4.35. Nguyên lý hoạt động của Event Bus

109

Hình 4.36. Thêm sự kiện Event Bus cho ứng dụng

(Nguồn: Android Studio)

4.2.2. Tiến hành thiết kế giao diện cho ứng dụng.

Tại cửa số activity_main.xml sử dụng ngôn ngữ lập trình java để xây dựng giao diện cho ứng dụng. Thêm các button, textview, editview,… vào giao diện.

Các thành phần chính trong màn hình chính của ứng dụng như sau: Button: Home, quanh đây, Đăng tin, giao dịch, tài khoản.

Textview: choose your perfect room

<TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="@string/choose_your_perfect_room" android:layout_marginLeft="@dimen/dp_20" android:gravity="center_vertical" />

Relativelayout: Gồm các slide ảnh banner.

<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent"> <androidx.viewpager.widget.ViewPager android:id="@+id/slidingImageViewPager" android:layout_width="match_parent" android:layout_height="@dimen/dp_230" /> <me.relex.circleindicator.CircleIndicator android:id="@+id/circleIndicator"

110 android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@id/slidingImageViewPager" android:layout_centerHorizontal="true" android:padding="16dp" /> </RelativeLayout>

Recyclerview: Gồm các danh sách phòng nổi bật.

<androidx.recyclerview.widget.RecyclerView android:id="@+id/homeRecyclerView" android:layout_width="match_parent" android:layout_height="match_parent" />

Hình 4.37. Màn hình thiết kế giao diện ứng dụng

(Nguồn: Android Studio)

Tích hợp google map vào ứng dụng để tìm các phòng trọ xung quanh người dùng

111

Hình 4.38. Giao diện tích hợp google map vào ứng dụng

(Nguồn: Android Studio)

4.3. Xây dựng và quản lý cơ sử dữ liệu bằng MongoDB

4.3.1. MongoDB là gì?

MongoDB là CSDL mã nguồn mở được viết bằng C++, là một trong những kiến trúc CSDL dùng để lưu trữ dữ liệu lớn (Big Data), hỗ trợ phân tán, dễ dàng co giãn mở rộng, tốc độ truy cập nhanh, không có ràng buộc quan hệ gì giữa các bảng. (adsbygoogle = window.adsbygoogle || []).push({});

Mỗi Server được gọi là 1 Cluster, 1 Cluster có nhiều Cơ sở dữ liệu, mỗi cơ sở dữ liệu có nhiều Collection (bảng), mỗi Collection có nhiều Document (dòng). Document là đối tượng Json, tùy biến theo người thiết kế.

112

Hình 4.39. System Architecture

(Nguồn: duythanhese.wordpress.com)

4.3.2. Tạo cơ sở dữ liệu

Để tạo cơ sở dữ liệu, ta bấm vào mục “Create Database” sau đó đặt tên cho Database và Collection.

113

Hình 4.40. Giao diện create database

(Nguồn: Tác giả tự xây dựng)

Khi đã có cơ sở dữ liệu ta tạo thêm các collection.

Hình 4.41. Tạo các Collection

(Nguồn: Tác giả xây dựng)

Insert Document, mỗi Document mặc định sẽ được Mongo tạo một _id khác nhau, id có nhiệm vụ như một khóa chính.

114

Hình 4.42. Insert Document

(Nguồn: Tác giả xây dựng)

4.3.3. Cách kết nối Android với MongoDB

Trong NodeJs tại thư mục “room.js” tạo các giao thức, phương thức kết nối giữa Android Studio với NodeJs.

Hình 4.43. Tạo các giao thức, phương thức kết nối giữa Android với NodeJs (Nguồn: Tác giả xây dựng)

Trong Android Studio tạo một Interface RoomAPI, từ RomAPI gọi API lên NodeJS.

115

Hình 4.44. Tạo các Interface trong Android Studio

(Nguồn: Tác giả xây dựng)

Cuối cùng kết nối NodeJs với MongoDb bằng 2 dòng lệnh sau: var connectionString =

MongoClientURI("mongodb://172.16.96.173:27017") var mongoClient = MongoClient(connectionString)

Lệnh thứ nhất dùng để kết nối MongoDb với NodeJs và dòng lệnh thứ hai dùng để truy xuất dữ liệu trong bảng Room để hiển thị giao diện listview.

4.4. Bảo mật cơ sở dữ liệu.

4.4.1 Bảo mật trên file ứng dụng apk.

Việc lưu trữ dữ liệu là hết sức quan trọng đối với một lập trình viên trong quá trình xây dựng và phát triển một ứng dụng Android. Dữ liệu cần lưu trữ của ứng dụng tìm phòng trọ H-Conve chính là thông tin của khách hàng, bao gồm:

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Xây dựng ứng dụng tìm phòng trên nền tảng android (Trang 95)