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

Ứng dụng theo dõi thói quen habit tracker trên android

120 4 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 đề Ứng Dụng Theo Dõi Thói Quen Habit Tracker Trên Android
Tác giả Tất Tân Chu, Huỳnh Xuân Hoàng
Người hướng dẫn ThS. Nguyễn Minh Đạo
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 Đồ Án Tốt Nghiệp
Năm xuất bản 2023
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 120
Dung lượng 6,28 MB

Cấu trúc

  • CHƯƠNG 1 TỔNG QUAN (16)
    • 1.1 Lý do chọn đề tài (16)
    • 1.2 Mục tiêu đề tài (16)
    • 1.3 Phương pháp nghiên cứu (16)
  • CHƯƠNG 2 CƠ SỞ LÝ THUYẾT (18)
    • 2.1 Android (18)
      • 2.1.1 Giới thiệu (18)
      • 2.1.2 Lịch sử các phiên bản Android (18)
      • 2.1.3 Cấu trúc hệ điều hành Android (20)
      • 2.1.4 Ưu điểm của Android (22)
      • 2.1.5 Khuyết điểm của Android (23)
      • 2.1.6 Ứng dụng (24)
    • 2.2 Springboot (24)
      • 2.2.1 Giới thiệu (24)
      • 2.2.2 Lịch sử các phiên bản Spring Boot (24)
      • 2.2.3 Kiến trúc của Spring Boot (25)
      • 2.2.4 Chức năng (27)
      • 2.2.5 Ưu điểm của Spring Boot (27)
      • 2.2.6 Nhược điểm của Spring Boot (28)
      • 2.2.7 Ứng dụng (29)
    • 2.3 Room Database (29)
      • 2.3.1 Giới thiệu (29)
      • 2.3.2 Phiên bản Room (29)
      • 2.3.3 Cấu trúc Room Database (30)
      • 2.3.4 Chức năng của Room (30)
      • 2.3.5 Ưu điểm của Room (31)
      • 2.3.6 Khuyết điểm của Room (31)
      • 2.3.7 Ứng dụng của Room (31)
    • 2.4 Ngôn ngữ lập trình Java (31)
      • 2.4.1 Giới thiệu (31)
      • 2.4.2 Các phiên bản ngôn ngữ lập trình Java (32)
      • 2.4.3 Cấu trúc của Java (33)
      • 2.4.4 Chức năng chính của Java (36)
      • 2.4.5 Ưu điểm của Java (37)
      • 2.4.6 Khuyết điểm của Java (38)
      • 2.4.7 Ứng dụng (39)
    • 2.5 MongoDB (39)
      • 2.5.1 Giới thiệu (39)
      • 2.5.2 Các phiên bản của MongoDB (40)
      • 2.5.3 Cấu trúc của MongoDB (41)
      • 2.5.4 Chức năng của MongoDB (41)
      • 2.5.5 Ưu điểm của MongoDB (42)
      • 2.5.6 Khuyết điểm của MongoDB (43)
      • 2.5.7 Ứng dụng (44)
  • CHƯƠNG 3 KHẢO SÁT HIỆN TRẠNG & XÁC ĐỊNH YÊU CẦU (45)
    • 3.1 Khảo sát hiện trạng (45)
      • 3.1.1 Nhu cầu (45)
      • 3.1.2 Hiện trạng (48)
    • 3.2 Xác định yêu cầu (55)
      • 3.2.1 Nghiệp vụ (55)
      • 3.2.2 Phạm vi (55)
    • 3.3 Đánh giá và lựa chọn công nghệ (55)
      • 3.3.1 Front-end (55)
      • 3.3.2 Back-end (55)
      • 3.3.3 Cơ sở dữ liệu (55)
  • CHƯƠNG 4 MÔ HÌNH HÓA HỆ THỐNG (56)
    • 4.1 Các chức năng của hệ thống (56)
    • 4.2 Lược đồ Usecase và đặc tả Usecase (58)
      • 4.2.1 Lược đồ Usecase (58)
      • 4.2.2 Đặc tả Usecase (59)
  • CHƯƠNG 5 THIẾT KẾ HỆ THỐNG (75)
    • 5.1 Thiết kế dữ liệu – Ứng dụng Android (75)
      • 5.1.1 Mô hình liên kết thực thể (75)
      • 5.1.2 Mô tả dữ liệu (75)
    • 5.2 Thiết kế dữ liệu – Back end Server (78)
      • 5.2.1 Mô hình liên kết thực thể (78)
      • 5.2.2 Mô tả dữ liệu (78)
    • 5.3 Class Diagram (80)
    • 5.4 Lược đồ tuần tự (81)
      • 5.4.1 Sequence tạo mới Habit (81)
      • 5.4.2 Sequence tạo mới Habit trong 1 tuần (81)
      • 5.4.3 Sequence đăng nhập (82)
      • 5.4.4 Sequence cập nhật trạng thái Done Habit (83)
      • 5.4.5 Sequence cập nhật trạng thái Failed Habit (84)
      • 5.4.6 Sequence lấy danh sách Habit theo mã người dùng (85)
      • 5.4.7 Sequence lấy danh sách habit theo mỗi ngày trong tuần (86)
      • 5.4.8 Sequence lấy danh sách lịch sử theo mỗi ngày (86)
      • 5.4.9 Sequence tính toán và hiển thị chuỗi hoạt động liên tục (87)
      • 5.4.10 Sequence tính toán phần trăm nhật ký hoàn thành các habit các ngày trong tuần (88)
      • 5.4.11 Sequence lấy thông tin một habit (88)
      • 5.4.12 Sequence xóa một habit (89)
      • 5.4.13 Sequence cập nhật một habit (90)
      • 5.4.14 Sequence xóa toàn bộ ghi chú ngày hoạt động trong tuần của habit (90)
      • 5.4.15 Sequence cập nhật buổi thực hiện habit (90)
      • 5.4.16 Sequence thêm ngày thực hiện habit (91)
      • 5.4.17 Sequence thêm mới nhắc nhở (92)
      • 5.4.18 Sequence cập nhật nhắc nhở (92)
      • 5.4.19 Sequence xóa nhắc nhở (93)
      • 5.4.20 Sequence hiển thị danh sách nhắc nhở (93)
      • 5.4.21 Sequence tự động thêm nhật ký mới sau 24 giờ (94)
      • 5.4.22 Sequence Diagram kiểm tra và tự động thêm nhật ký mới sau khi người dùng khởi động điện thoại (95)
      • 5.4.23 Sequence đồng bộ dữ liệu lên server (96)
  • CHƯƠNG 6 THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ (97)
    • 6.1 Các màn hình User (97)
      • 6.1.1 Login Screen (98)
      • 6.1.2 Home Screen (99)
      • 6.1.3 Create Habit Screen (101)
      • 6.1.4 Countdown Screen (103)
      • 6.1.5 Habit Setting Screen (105)
      • 6.1.6 Planner Screen (107)
      • 6.1.7 Setting Screen (108)
      • 6.1.8 About Us Screen (110)
      • 6.1.9 Delete Habit Dialog Screen (111)
      • 6.1.10 Remainder Dialog (112)
      • 6.1.11 Timer Dialog (114)
      • 6.1.12 Logout Dialog (115)
  • CHƯƠNG 7 CÀI ĐẶT VÀ KIỂM THỬ (116)
    • 7.1 Cài đặt (116)
    • 7.2 Kiểm thử (116)
  • CHƯƠNG 8 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (117)
    • 8.1 Kết quả đạt được (117)

Nội dung

TỔNG QUAN

Lý do chọn đề tài

Sự bùng nổ công nghệ thông tin, cùng với những sản phẩm công nghệ, đã ảnh hưởng sâu sắc đến cuộc sống hàng ngày, đặc biệt là trong bối cảnh dịch Covid-19 Nhiều người đã mất đi thói quen sinh hoạt thường nhật và gặp khó khăn trong việc khôi phục lại những thói quen đã mất.

Theo khảo sát, nhu cầu theo dõi thói quen hàng ngày đang gia tăng, đặc biệt ở học sinh và sinh viên Việc này không chỉ giúp người dùng có động lực và tự nhắc nhở bản thân mà còn thúc đẩy sự hoàn thiện cá nhân qua từng ngày Bên cạnh đó, việc duy trì thói quen tốt còn góp phần nâng cao chất lượng cuộc sống.

Nhóm đã nhận thấy nhu cầu theo dõi thói quen hàng ngày và quyết định phát triển ứng dụng "Theo dõi thói quen trên Android" Ứng dụng này nhằm phục vụ người dùng ở mọi lứa tuổi, giúp họ dễ dàng quản lý và ghi lại hành vi thói quen của mình chỉ với chiếc điện thoại thông minh.

Mục tiêu đề tài

 Xây dựng ứng dụng đáp ứng nhu cầu theo dõi thói quen hằng ngày của người dùng

 Ứng dung đáp ứng được các chức năng sau:

 Khởi tạo người dùng trên thiết bị mới

 Hiển thị danh sách các thói quen đang theo dõi theo ngày

 Thống kê các thói quen theo ngày

 Thống kê một thói quen theo tháng

 Thống kê các thói quen không thực hiện theo tuần

 Đếm ngược thời gian giống phương pháp Pomodoro

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

 Phương pháp tổng hợp cơ sở từ lý thuyết:

 Học hỏi và tìm hiểu các tài liệu, các ứng dụng liên quan đến các công nghệ đang tìm hiểu

 Đánh giá và lựa chọn công nghệ

 Phương pháp tham khảo ý kiến từ chuyên gia

Để đảm bảo tính chính xác và khoa học cho đề tài, cần tham khảo ý kiến đóng góp từ giảng viên, cũng như từ những người có kinh nghiệm trong lĩnh vực công nghệ và thực tiễn liên quan.

CƠ SỞ LÝ THUYẾT

Android

Android là hệ điều hành phát triển trên nền tảng Linux 2.6, được tối ưu hóa cho các thiết bị di động có màn hình cảm ứng như smartphone và tablet.

Android, ban đầu được phát triển bởi công ty Android Inc., đã được Google mua lại vào năm 2005 và ra mắt dưới dạng mã nguồn mở vào năm 2007 Hiện nay, Android trở thành một trong những hệ điều hành phổ biến nhất toàn cầu.

2.1.2Lịch sử các phiên bản Android

Dưới đây là danh sách tóm tắt các bản Android cùng tên và ngày phát hành

Bảng : Lịch sử các phiên bản Android

Phiên bản Tên Ngày phát hành

2.1.3Cấu trúc hệ điều hành Android

Hình : Cấu trúc hệ điều hành Android

Tầng thấp nhất của hệ điều hành là Linux Kernel, đóng vai trò quan trọng trong việc quản lý và xử lý các thiết bị ngoại vi như màn hình, máy ảnh, và bàn phím Ngoài ra, kernel còn đảm nhiệm việc xử lý mạng kết nối và điều khiển các thiết bị, đảm bảo hệ thống hoạt động ổn định và hiệu quả.

Tầng thư viện gốc bao gồm Webkit hỗ trợ trình duyệt, SQLite cho cơ sở dữ liệu, FreeType cho phông chữ, và các thư viện SSL đảm bảo bảo mật Internet.

Về các thư viện lõi, một số thư viện chính của Android:

 android.app – Cấp quyền truy cập vào ứng dụng

 android.content – Cấp quyền truy cập nội dung (content), truyền tải thông điệp giữa các ứng dụng

 android.database – Được sử dụng để truy cập dữ liệu của content provider và các lớp quản lý cơ sở dữ liệu SQLite

 android.opengl -Một Java interface để sử dụng OpenGL

Android.os cung cấp các ứng dụng với quyền truy cập vào các dịch vụ chuẩn của hệ điều hành, bao gồm thông báo, dịch vụ hệ thống và giao tiếp nội tiến trình.

 android.text – Để hiển thị và thao tác chữ trên màn hình

 android.view – Các thành phần cơ bản trong xây dựng UI của ứng dụng

 android.widget - Tập thành phần UI đã được xây dựng sẵn như button, label, list view, radio button,

 android.webkit - Tập các lớp cho phép duyệt web được xây dựng trong các ứng dụng

Tầng thứ hai từ dưới lên trong kiến trúc Android chứa Dalvik Virtual Machine, một loại Java Virtual Machine được tối ưu hóa cho Android, mang lại hiệu suất cao hơn Tầng này cũng bao gồm các thư viện lõi quan trọng đã được đề cập trước đó.

DVM tận dụng các tính năng của Linux Kernel như quản lý bộ nhớ và hỗ trợ đa luồng, cho phép các ứng dụng Android hoạt động trong các tiến trình riêng biệt.

Android Runtime cũng cung cấp các thư viện chính giúp các nhà phát triển ứng dụng Android có thể viết ứng dụng Android bằng Java

 Lớp Android Framework bao gồm các API của Android như UI, điện thoại

 Android Framework bao gồm các dịch vụ chính sau:

 Activity Manager: Kiểm soát tất cả mọi mặt của vòng đời ứng dụng và ngăn xếp các Activity

 Content Providers: Cho phép các ứng dụng chia sẻ dữ liệu với nhau

 Resource Manager: Quyền truy cập các tài nguyên như chuỗi, màu sắc, layout UI

 Notifications Manager: Hiển thị cảnh báo và các thông báo cho người dùng

 View System: Các thành phần giao diện (view) được sử dụng để tạo UI

RX Java là một thư viện nổi bật trong lập trình Reactive, hay lập trình phản ứng, giúp phát triển ứng dụng hiệu quả.

RX Java là thư viện giúp đơn giản hóa các tác vụ đồng thời và không đồng thời trong lập trình di động trên Android Những đặc điểm nổi bật của RX Java bao gồm khả năng xử lý dữ liệu linh hoạt, quản lý luồng sự kiện hiệu quả và hỗ trợ lập trình phản ứng, giúp lập trình viên dễ dàng phát triển ứng dụng mượt mà và hiệu quả hơn.

 RX sử dụng cùng kiểu synxtax cho các tác vụ liên quan tới (action- descriptions) với synxtax của các ngôn ngữ lập trình như Java Stream

 Người lập trình có thể mở rộng thư viện RX bằng cách tự custom các extension method

 Người lập trình có thể dễ dàng kết hợp các hàm (operator) trong Rx Java, để thực hiện các hàm phức tạp hơn

 Các hàm trong RxJava có thể chuyển đổi kiểu dữ liệu thông qua việc phân loại (filtering), xử lý (processing), và mở rộng (expanding) các luồng dữ liệu

 Người lập trình có thể mô tả yêu cầu của chương trình ở mức độ trừu tượng cao hơn

Nhiều ứng dụng Android yêu cầu khởi tạo các đối tượng cần thiết cho các phụ thuộc Chẳng hạn, một Client API của Twitter có thể được xây dựng với các thư viện networking như Gson Dagger hỗ trợ phân tích các phụ thuộc và tự động tạo ra mã để kết nối chúng.

Dagger hoạt động dựa vào các annotation processor và kiểm tra tại thời điểm biên dịch để phân tích và xác thực các phụ thuộc Khác với các framework khác, Dagger không bị ràng buộc bởi XML và không gặp phải vấn đề về hiệu năng khi khởi động.

Những ưu điểm của Android:

 Giá cả thiết bị di động Android:

Thị trường di động với hệ điều hành Android rất phong phú, cung cấp nhiều lựa chọn về giá cả từ thấp đến cao Các sản phẩm này không chỉ đa dạng mà còn đảm bảo đầy đủ các chức năng cần thiết cho người sử dụng.

Với 8 mạnh phần cứng vượt trội, sản phẩm này đáp ứng nhu cầu của đa số người tiêu dùng Điều này cho thấy việc phát triển ứng dụng cho Android là một chiến lược thông minh, bởi tiềm năng người dùng trên nền tảng này rất lớn và đa dạng.

Điện thoại Android được sản xuất bởi nhiều thương hiệu như Samsung, Sony Ericsson và Lenovo, mang đến sự đa dạng về cấu hình và giá cả cạnh tranh Trong khi đó, điện thoại sử dụng hệ điều hành iOS chỉ có từ Apple, với mức giá thường rất cao, khiến cho người tiêu dùng khó có thể sở hữu nếu không đủ ngân sách Sự khác biệt này tạo ra một thị trường điện thoại phong phú cho người dùng lựa chọn.

Khác với iOS, hệ điều hành đóng và khó tùy biến, Android là một nền tảng mở, cho phép người dùng tự do tùy chỉnh thiết bị của mình bằng cách sử dụng các phần mềm bên ngoài.

Springboot

Java Spring Boot là một công cụ mã nguồn mở giúp đơn giản hóa việc phát triển ứng dụng web và microservices dựa trên Java Microservices được coi là một phương pháp hiện đại trong kiến trúc phần mềm, cho phép phân chia ứng dụng thành các dịch vụ nhỏ, kết hợp lỏng lẻo để đáp ứng linh hoạt các yêu cầu kinh doanh Spring Boot được phát triển bởi đội ngũ Pivotal.

Spring Boot cho phép phát triển ứng dụng Spring một cách nhanh chóng mà không cần cấu hình XML, giảm thiểu việc viết mã và sử dụng chú thích (annotation).

Spring Boot, được phát triển vào đầu năm 2013 theo yêu cầu của khách hàng Mike Youngstrom, nhằm khởi động Spring framework để ứng dụng có thể chạy ngay lập tức Mike đã gửi một lá thư qua Jira, một ứng dụng quản lý dự án, đề xuất ý tưởng này Hiện nay, Spring Boot chủ yếu được sử dụng để phát triển REST API.

2.2.2Lịch sử các phiên bản Spring Boot

Bảng : Các phiên bản Spring Boot

STT Phiên bản Nâng cấp đáng chú ý Ngày phát hành

1 3.1.x Đảm bảo Flyway mặc định sử dụng SLF4J và cung cấp config property để override setting

Thêm Reference cho Tor Spring Boot Starter

3 2.7.12 Bug fixes và tối ưu 19/05/2022

2.2.3Kiến trúc của Spring Boot

Spring boot là một module của Spring Framework, được sử dụng để tạo ra các ứng dụng Spring based độc lập mà không cần tốn quá nhiều nỗ lực

Spring Boot được xây dựng theo kiến trúc phân lớp, trong đó mỗi tầng có khả năng giao tiếp trực tiếp với các tầng phía trên hoặc phía dưới.

Hình : Kiến trúc Spring Boot

Có 4 tầng chính trong kiến trúc Spring Boot:

The Presentation Layer processes HTTP requests, converts JSON parameters into objects, validates requests, and forwards them to the business layer In summary, the Presentation Layer encompasses the views and components of the front end.

Tầng Business chịu trách nhiệm xử lý các logic kinh doanh, bao gồm các lớp dịch vụ và tận dụng các dịch vụ từ tầng truy cập dữ liệu Ngoài ra, nó còn đảm nhiệm vai trò ủy quyền và xác thực, đảm bảo tính chính xác và bảo mật trong quá trình xử lý thông tin.

The Persistence Layer encompasses all storage logic, transforming it into business objects and subsequently mapping these objects to rows in the database.

 Database: Trong tầng Database, các chức năng CRUD (Create, Retrieve,

Update, Delete) được hoạt động

2.2.3.1 Workflow của kiến trúc Spring Boot

Hình ': Workflow kiến trúc Spring Boot

Phương thức hoạt và workflow của kiến trúc Spring boot:

 Tập hợp các lớp xác thực (validator), lớp view, lớp đa dụng (utility)

Spring Boot tích hợp tất cả các module của Spring, bao gồm Spring MVC và Spring Data Kiến trúc của Spring Boot tương tự như Spring MVC, nhưng điểm khác biệt chính là không cần khai báo lớp DAO và lớp DAOImpl trong Spring Boot.

 Tạo ra một tầng data access và thực hiên chức năng CRUD

 Client gửi các yêu cầu HTTP (PUT và GET)

 Yêu cầu được gửi thẳng tới controller, và controller thực hiện việc map các yêu cầu và xử lý nó Sau đó, controller sẽ gọi service logic nếu cần

 Ở tầng Service, tất cả các logic nghiệp vụ (business) được thực hiện Tầng Service thực hiện logic trên dữ liệu được map cho JPA với các lớp model

 Một trang JSP được trả về cho người dùng nếu không có lỗi xảy ra

Spring Boot Framework có các chức năng chính như sau:

Tự cấu hình (Auto-configuration) là một phương pháp tự động thiết lập ứng dụng Spring dựa trên các dependencies có sẵn Nhờ vào autoconfiguration, thời gian phát triển phần mềm được rút ngắn và quy trình phát triển trở nên đơn giản hơn, vì không cần phải định nghĩa các beans một cách thủ công.

 Phát triển web: Lập trình viên có thể sử dụng Spring Boot Starter Web Module để tạo và khởi chạy web một cách nhanh chóng

Spring Boot utilizes events to manage various tasks, enabling developers to create factory files for adding listeners effectively.

Spring Boot cung cấp các công cụ hỗ trợ quyền quản trị viên cho ứng dụng, cho phép truy cập và quản lý ứng dụng từ xa một cách hiệu quả.

Các ứng dụng Spring Boot có tính bảo mật cao nhờ vào việc kế thừa các ứng dụng web cơ sở của Spring, với cơ chế xác thực cơ bản được áp dụng mặc định cho tất cả các điểm endpoint của HTTP.

Spring Boot hỗ trợ cấu hình bên ngoài, cho phép người dùng tùy chỉnh theo nhu cầu, giúp lập trình viên làm việc với cùng một ứng dụng trên nhiều môi trường khác nhau.

2.2.5Ưu điểm của Spring Boot

Những ưu điểm chính của Spring Boot:

 Môi trường cấu an toàn và nhanh cho việc phát triển phần mềm:

Điều này cho phép lập trình viên bắt tay vào việc phát triển ứng dụng ngay lập tức, tiết kiệm thời gian quý báu mà không cần phải lo lắng về việc cấu hình các bộ công cụ hay framework.

 Giảm tải độ dài của code, và đơn giản hóa tiến trình phát tiển:

Spring Boot sử dụng chú thích (Annotation) để nâng cao khả năng hiểu mã nguồn, đồng thời cung cấp tính năng cấu hình soạn sẵn (Boilerplate configuration) giúp tự động hóa việc sao chép các đoạn mã cho những chức năng lặp lại.

 Hỗ trợ máy chủ nhúng (embedded) HTTP, như Tomcat hay Jetty để kiểm thử ứng dụng

 Làm đơn giản hóa việc quản lý các phụ thuộc (dependencies):

Room Database

Room is a Persistence Library introduced by Google at the Google I/O event, serving as an abstraction layer that facilitates data access and manipulation within SQLite databases.

Các ứng dụng có thể sử dụng Room Database để lưu trữ dữ liệu trên local, cho phép cache thông tin quan trọng Điều này giúp người dùng truy cập dữ liệu ngay cả khi không có kết nối internet Tất cả dữ liệu được tạo ra hoặc thay đổi bởi người dùng sẽ được tự động đồng bộ với server khi kết nối internet được khôi phục.

Bảng ': Lịch sử các phiên bản Room

STT Phiên bản Nâng cấp đáng chú ý Ngày phát hành

Hỗ trợ giá trị lớp cho KSP &

Room-runtime được chuyển đổi từ Java sang Kotlin

5 2.4.1 Thêm hỗ trợ cho các internal 12/1/2022

15 properties từ các nguồn Kotlin

Hình /: Cấu trúc của Room Database

Cấu trúc của Room Database bao gồm:

Entity đại diện cho một lớp chứa một hàng trong cơ sở dữ liệu Mỗi thực thể sẽ tạo ra một bảng cơ sở dữ liệu để lưu trữ các mục tương ứng.

DAO (Data Access Objects) là lớp hoặc giao diện đại diện cho các đối tượng truy cập dữ liệu, đóng vai trò quan trọng trong Room DAO đảm bảo tính bảo mật và hiệu quả trong các phương thức truy cập cơ sở dữ liệu.

Để tạo ra chủ sở hữu cho cơ sở dữ liệu, Annotation sẽ cung cấp danh sách các thực thi và lớp nội dung, từ đó định nghĩa danh sách các DAO (CSDL truy cập đối tượng) cho cơ sở dữ liệu Đây cũng chính là điểm truy cập chính để kết nối với cơ sở dữ liệu phía dưới.

Những chức năng chính của Room:

 Cung cấp tầng Abstraction trên SQLite

 Cache những dữ liệu quan trọng

 Cho phép kết nối cơ sở dữ liệu một cách trơn chu trong khi khai thác được toàn bộ sức mạng của SQLite

Những ưu điểm của Room:

 Tài liệu chi tiết về cách sử dụng

 Đẩy dự liệu lớn lên server dễ dàng

Khuyết điểm lớn nhất của Room là sự thiếu phổ biến trong cộng đồng lập trình viên, dẫn đến khó khăn trong việc tìm kiếm tài liệu và các nguồn thông tin liên quan.

Room DB được sử dụng trong cho một số công ty như SWORD Health, BestDoctor, INEX Digital, beNext

Ngôn ngữ lập trình Java

Java là ngôn ngữ lập trình bậc cao, dựa trên cấu trúc class và hướng đối tượng, được thiết kế để giảm thiểu tối đa các phụ thuộc trong quá trình triển khai Với tính bảo mật cao, Java không chỉ là một ngôn ngữ lập trình mà còn là một nền tảng (platform) mạnh mẽ cho phát triển ứng dụng.

Nền tảng (Platform) là bất kỳ môi trường phần cứng hoặc phần mềm nào mà trong đó một chương trình có thể hoạt động Java được xem là một nền tảng nhờ vào môi trường runtime riêng (JRE) và API của nó.

Java là ngôn ngữ lập trình đa mục đích với phương châm "Viết một lần, chạy mọi nơi", cho phép lập trình viên viết chương trình một lần và thực thi trên nhiều hệ thống hỗ trợ Java Chẳng hạn, bạn có thể phát triển ứng dụng trên Windows và chương trình đó vẫn có thể chạy trên Linux, Android, và các thiết bị J2ME.

Các ứng dụng Java thường được biên dịch thành các bytecode, có thể chạy trên bất kỳ máy tính ảo Java (Java Virtual Machine-JVM)

Java là một trong những ngôn ngữ lập trình phổ biến nhất toàn cầu, được sử dụng rộng rãi trong việc phát triển ứng dụng di động, ứng dụng cho máy tính để bàn và laptop, cũng như trong lĩnh vực phát triển trò chơi điện tử.

Ngôn ngữ lập trình Java được thiết kế vào đầu những năm 90 tại công ty Sun Microsystems, INC dưới sự dẫn dắt của James Gosling, nhằm kết nối và giao tiếp giữa các thiết bị điện tử Quá trình phát triển bắt đầu từ năm 1991 và được công bố chính thức vào ngày 23 tháng 5 năm 1993 Đến năm 2009, Sun Microsystems, INC đã bị Oracle mua lại, dẫn đến việc ngôn ngữ Java hiện nay thuộc quyền sở hữu của Oracle.

2.4.2Các phiên bản ngôn ngữ lập trình Java

Bảng /: Lịch sử các phiên bản Java

Phiên bản Java Ngày Phát Hành

Java SE 6 ngày 11 tháng 12 năm 2006

Java SE 7 ngày 28 tháng 7 năm 2011

Java SE 8 ngày 18 tháng 3 năm 2014

Java SE 9 ngày 21 tháng 9 năm 2017

Java SE 10 ngày 20 tháng 3 năm 2018

Java SE 11 ngày 25 tháng 9 năm 2018

Java SE 12 ngày 19 tháng 3 năm 2019

Java SE 13 ngày 17 tháng 9 năm 2019

Java SE 14 ngày 17 tháng 3 năm 2020 Java SE 15 ngày 15 tháng 9 năm 2020 Java SE 16 ngày 16 tháng 3 năm 2021 Java SE 17 ngày 14 tháng 9 năm 2021

Cấu trúc của Java bao gồm các thành phần chính như JVM, JRE và JDK, tích hợp vào các quy trình thông dịch và biên soạn Kiến trúc Java định nghĩa toàn bộ các bước liên quan đến việc phát triển chương trình Java.

 Phát hiện tiến trình biên soạn và thông dịch trong Java

 Java compiler thực hiện việc chuyển đổi code Java ra thành byte code

 JVM chuyển đổi byte code thành machine code

 Machine code được thực hiện bởi máy tính

Dựa theo hình ảnh trên, ta có thể liệt kê ra được những thành phần chính của cấu trúc Java bao gồm:

Chức năng chính của Java là WORA, viết tắt của "Write Once Run Anywhere" Điều này có nghĩa là lập trình viên chỉ cần viết mã một lần và có thể chạy nó trên bất kỳ hệ điều hành nào.

Chương trình Java có khả năng chạy trên mọi hệ thống nhờ vào JVM, một thành phần thiết yếu của hệ thống Java JVM cung cấp môi trường thực thi cho các chương trình Java, với nhiệm vụ chính là chuyển đổi byte code thành machine code để máy tính có thể thực hiện.

JVM hoạt động bằng cách tải mã vào bộ nhớ và xác thực chúng, sau đó thực thi các dòng mã và cung cấp môi trường runtime.

JVM có một cấu trúc dành riêng cho nó

Bao gồm các thành phần:

 Class Loader: Là một subsystem được dùng cho việc load các file lớp

ClassLoader sẽ load các đoạn code Java bất cứ khi nào ta chạy chương trình

Khu vực phương thức lớp là một phần trong bộ nhớ, nơi lưu trữ dữ liệu của lớp trong suốt quá trình thực thi mã Khu vực này chứa thông tin về các biến tĩnh, các khối tĩnh, cũng như các phương thức thể hiện và phương thức tĩnh.

Stack, hay còn gọi là thread stack, là khu vực bộ nhớ được tạo ra cho một thread thực thi Khu vực này được sử dụng để lưu trữ các phần tử như biến cục bộ, dữ liệu cần thiết cho các phương thức gọi và giá trị trả về.

Khu vực Heap trong JVM là một phần quan trọng của bộ nhớ, được khởi tạo khi JVM hoạt động Kích thước của Heap không cố định, mà có khả năng tăng hoặc giảm trong quá trình thực thi chương trình.

 Native Stack: Nó chứa thông tin cả tất cả native method được sử dụng trong chương trình của người dùng

Execution Engine là thành phần quan trọng nhất của JVM, có nhiệm vụ chính là thực thi bytecode và các lớp Java Nó bao gồm ba thành phần chính, giúp thực hiện các lớp Java một cách hiệu quả.

 Interpreter: Thực hiện việc đổi byte code thành native code và thực thi nó

Interpreter thực thi các đoạn code tuần tự và liên tục, ngay cả khi gặp lại cùng một phương thức nhiều lần, điều này có thể làm giảm hiệu năng của hệ thống Để khắc phục vấn đề này, JIT Compiler đã được giới thiệu.

 JIT Compiler: JIT Compiler đóng vai trò xóa bỏ đi khuyết điểm chính của interpreter bằng việc tăng tốc độ xử lý và cải thiện hiệu năng

Garbage Collector là một chương trình viết bằng Java, có chức năng quản lý bộ nhớ hiệu quả Quá trình hoạt động của nó bao gồm hai giai đoạn chính: Mark và Sweep Trong giai đoạn Mark, Garbage Collector xác định các đối tượng còn được sử dụng, trong khi giai đoạn Sweep sẽ thu dọn các đối tượng không còn cần thiết, giúp tối ưu hóa bộ nhớ.

Collector thực hiện việc xác định những khối bộ nhớ đã và chưa sử dụng

Và Sweep xóa đi các đối tượng được xác định khỏi Mark

 Java Native Interface: Được xem như là một trung gian giữa việc gọi Java

Method và các thư viện Native

MongoDB

MongoDB là một hệ thống quản lý cơ sở dữ liệu NoSQL mã nguồn mở, cung cấp giải pháp thay thế cho các hệ thống dữ liệu quan hệ truyền thống Với khả năng xử lý khối lượng lớn dữ liệu phân phối, MongoDB là công cụ lý tưởng để quản lý thông tin theo định dạng tài liệu, giúp người dùng dễ dàng lưu trữ và truy xuất dữ liệu hiệu quả.

MongoDB là lựa chọn phổ biến cho việc quản lý dữ liệu lớn, giúp doanh nghiệp và tập đoàn lưu trữ khối lượng dữ liệu khổng lồ mà vẫn duy trì hiệu suất làm việc nhanh chóng.

Thay vì sử dụng bảng và dòng như trong cơ sở dữ liệu quan hệ truyền thống, MongoDB sử dụng kiến trúc gồm các collections và documents Documents là các cặp giá trị khóa, được coi là đơn vị dữ liệu cơ bản của MongoDB Collections tương đương với các bảng trong SQL, dùng để chứa các bộ tài liệu.

MongoDB hỗ trợ nhiều ngôn ngữ lập trình khác nhau như C, C++, C#, Java, Python hay Swift

MongoDB được phát triển bởi Eliot Horowitz và Dwight Merriman, nhằm khắc phục những hạn chế trong quá trình phát triển và khả năng mở rộng của các ứng dụng web khi áp dụng phương pháp quản lý dữ liệu quan hệ truyền thống.

2.5.2Các phiên bản của MongoDB

Bảng 6: Lịch sử các phiên bản MongoDB

STT Phiên bản Ngày phát hành

Mỗi cơ sở dữ liệu trong MongoDB sẽ được lưu trữ trong một bộ file riêng biệt trên hệ thống tệp, cho phép nhiều cơ sở dữ liệu khác nhau cùng tồn tại trên một server duy nhất.

Collection là một nhóm các tài liệu trong cơ sở dữ liệu, không yêu cầu schema Trong một collection, có nhiều trường khác nhau, nhưng các tài liệu thường chia sẻ cùng một mục đích hoặc phục vụ cho một mục tiêu chung.

Document là tập hợp các cặp giá trị khóa (Key-Value) được gán cho một document Các Document này liên kết với các dynamic schema, cho phép mỗi document trong một collection không cần phải có cùng kiến trúc hay các trường (field) giống nhau Lợi ích của việc sử dụng dynamic schema là tính linh hoạt trong việc quản lý và lưu trữ dữ liệu.

Các chức năng chính của MongoDB:

MongoDB hỗ trợ cả mở rộng chiều ngang và chiều dọc Mở rộng chiều dọc tập trung vào việc nâng cấp phần cứng như CPU, RAM và Storage, trong khi mở rộng chiều ngang tăng cường khả năng chịu tải của hệ thống thông qua việc thêm Node hoặc Server.

MongoDB là một cơ sở dữ liệu không cần schema, cho phép quản lý dữ liệu linh hoạt mà không cần bản thiết kế chi tiết.

 Mongo DB xử lý vấn đề load cân bằng mà không cần sử dụng một bộ load balancer riêng biệt và chuyên dụng

Dữ liệu trong MongoDB được lưu trữ dưới dạng các documents với các cặp giá trị khóa (key-value), mang lại tính linh hoạt cao hơn so với các cơ sở dữ liệu SQL truyền thống, nơi dữ liệu được tổ chức theo các cột và hàng.

 Bất kỳ các trường nào trong Document đều có thể được lập chỉ mục (indexed)

 MongoDB hỗ trợ ad-hoc queries và document-based queries

MongoDB hỗ trợ chế độ sao chép Master-Slave, cho phép quản lý nhiều bản sao dữ liệu thông qua các ứng dụng gốc Điều này giúp giảm thiểu thời gian ngừng hoạt động (downtime) trong quá trình vận hành cơ sở dữ liệu.

 MongoDB có thể chạy trên nhiều server Dữ liệu được sao lưu lại để phòng ngừa trường hợp thiết bị phần cứng không may gặp vấn đề

Tiến trình phân phối dữ liệu qua các phân đoạn vật lý (shard) trong MongoDB cho phép hệ thống tự động thực hiện load cân bằng.

 Chức năng GridFS chia các file ra thành những phần nhỏ và lưu trữ chúng thành các document riêng biệt

Những ưu điểm chính của MongoDB:

 Là nền tảng phân phối dữ liệu:

 MongoDB đảm bảo tính khả dụng và khả năng mở rộng

 Nền tảng MongoDB cho phép người lập trình linh hoạt xử lý các dữ liệu với sự ổn định tốt nhất

MongoDB linh hoạt trong việc xử lý khối lượng và thông lượng dữ liệu, giúp giảm thiểu thời gian ngừng hoạt động (downtime) mà không cần phải thay đổi ứng dụng nhiều để đảm bảo tính tương thích.

 Quá trình phát triển nhanh và lặp đi lặp lại: (Fast and Iterative):

 Thay đổi các yêu cầu kinh doanh sẽ không còn ảnh hưởng tới việc thành công khi phân phối dự án trong doanh nghiệp

 Không cần phải sử dụng các Static Schema hay các operation phức tạp từ RDMBS

Mô hình dữ liệu linh hoạt với schema động, kết hợp với bộ công cụ GUI và command line mạnh mẽ, cho phép lập trình viên xây dựng và nâng cấp ứng dụng một cách nhanh chóng và hiệu quả.

 Mô hình dữ liệu linh hoạt:

 MongoDB lưu trữ dữ liệu dưới dạng các JSON-like document linh hoạt, giúp đảm bảo tính bền vững và kết hợp đơn giản của dữ liệu

 Do hạn chế đi Downtime, người lập trình có thể linh động chỉnh sửa schema

 Chính vì sự linh hoạt của MongoDB, người lập trình không cần phải quá bận tâm với việc thao tác dữ liệu (Data manipulation)

 Giảm thiểu chi phí TCO (Total Cost of Ownership):

 Team vận hành (Operation Team) có thể thực hiện công việc mình tốt hơn, nhờ có hệ thống điện toán đám mây Atlas Cloud service

 Chi phí rẻ hơn rất nhiều do MongoDB có thể chạy trên các thiết bị phần cứng có cấu hình tầm trung

 Các lập trình viên ứng dụng có thể làm việc tốt hơn nhiều khi MongoDB được sử dụng

 Hỗ trợ lâu dài từ nhà phát triển:

 MongoDB đã có hơn 30 triệu lượt tải về, hơn 5000 khách hàng và hơn 1000 đối tác

Những khuyết điểm chính của MongoDB:

 Sử dụng bộ nhớ rất nhiều cho việc lưu trữ dữ liệu

 Kích cỡ Document có giới hạn

 Tính linh hoạt thấp đối với querying

 Vì luôn cập nhật thường xuyên, nên đôi khi nhà phát triển không ghi cụ thể thông tin cập nhật

MongoDB là một cơ sở dữ liệu NoSQL, do đó không tuân thủ các nguyên tắc ACID (Atomicity, Consistency, Isolation, Durability) Điều này có nghĩa là MongoDB không phù hợp cho các ứng dụng yêu cầu giao dịch cấp cơ sở dữ liệu, nơi mà cơ chế ACID là cần thiết.

 Mongo DB không có các điều khoản (provisions) cho stored-procedure

Những ứng dụng chính của MongoDB:

 Cho các ứng dụng mobile Android/IOS

 Dịch vụ điện toán đám mây như Alibaba Cloud

 Cho các ứng dụng web

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

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

3.1.1Nhu cầu Để khảo sát nhu cầu theo dõi thói quen, tạo lập thói quen của người dùng Nhóm đã tạo khảo sát dựa vào các câu hỏi như:

 Có bao giờ bạn nghĩ về việc theo dõi hành vi hằng ngày của mình không ?

 Bạn có biết tới ứng dụng Habit Tracker không ?

 Bạn có nhu cầu lập thói quen không ?

 Nếu có một ứng dụng hỗ trợ việc theo dõi lập thói quen, bạn có ủng hộ hay không ?

Kết quả khảo sát trên 49 câu trả lời:

Hình ' : Kết quả độ tuổi của người khảo sát

Hình ' : Kết quả khảo sát Có/Không về việc theo dõi hành vi

Hình '.': Kết quả khảo sát Bạn có biết đến Habit Tracker không ?

Hình './: Kết quả khảo sát bạn có nhu cầu lập thói quen tốt không

Hình '.6: Kết quả khảo sát sự ủng hộ đối với một App hỗ trợ việc theo dõi thói quen

Hiện nay có một số ứng dụng habit tracker như:

Các ứng dụng này đều đạt đánh giá cao của người dùng nên nhóm quyết định sẽ khảo sát trên các ứng dụng này

3.1.2.1 Ứng dụng Rabit a) Giới thiệu Ứng dụng Rabit được xây dựng nhằm theo dõi thói quen của người dùng Giúp hình thành nên thói quen tốt cho người dùng thông qua việc thông báo đến giờ thực hiện thói quen cho người dùng Ứng dụng sẽ theo sát tiến độ thực hiện các công việc của người dùng trong 1 ngày Tích cực thống kê các hoạt động diễn ra theo ngày, tuần và tháng Nếu người dùng cập nhật liên tục trạng thái thói quen thì ứng dụng sẽ hình thành các loại cây trồng tương ứng Mục đích sử dụng các loại cây trồng để tạo nên sự kiên trì cho người sử dụng Vì nếu người sử dụng thất bại trong việc giữ vững thói quen, thì cây sẽ chết

Hình '.7: Giao diện Streak map, tạo thói quen của Rabit

Hình '.:: Giao diện quản lý habit của Rabit

Hình ' Q Giao diện thống kê Streak của Rabit

Bao gồm các chức năng như:

 Thống kê thói quen theo ngày, tuần, tháng

 Lập danh sách To Do List

 Có theme Trắng và Đen

 Có thể tạo ra một streak bằng việc hoàng thành các mục tiêu được đề ra hằng ngày

Bạn có thể nâng cấp lên Premium Membership để truy cập các chức năng bổ sung, như xem chi tiết thông tin từ những ngày trước và đồng bộ dữ liệu trên cloud Việc này mang lại nhiều lợi ích cho người dùng.

 Thiết kế thân thiện, gần gũi với thiên nhiên

 Ý tưởng trồng cây dựa theo việc hoàn thành các thói quen hằng ngày là một ý tưởng khá độc nhất và thú vị

 Chức năng thêm, sửa, xóa đơn giản thực hiện dễ dàng

 Thói quen được phân loại rõ ràng dễ quan sát

 Thống kê trình bày đơn giản thân thiện với người dùng

 Trồng cây để duy trì thói quen

 Chức năng count down để bám sát thói quen

 Hỗ trợ đa ngôn ngữ e) Nhược điểm

Những nhược điểm của ứng dụng Rabit:

 Âm lượng âm thanh khi sử dụng hơi thấp hơn so với tiêu chuẩn bình thường

 Phải trả phí mỗi tháng để mở khóa một số tính năng quan trọng để xem thông tin trong quá khứ, hay để đồng bộ dữ liệu

 Một số lỗi nhỏ còn tồn động

3.1.2.2 Habitbull a) Giới thiệu Ứng dụng được xây dựng nhằm theo dõi thói quen của người dùng với phương châm “Dễ dàng phá bỏ các thói quen xấu như hút thuốc, uống rượu hoặc cắn móng tay hoặc xây dựng các thói quen tích cực như tập thể dục, thiền hoặc đọc sách”

Là ứng dụng đa nền tảng đầy mạnh mẽ, giúp theo dõi các thói quen hằng Hỗ trợ cả IOS và Android b) Giao diện

Hình '.R: Giao diện chính của Habit Bull

Hình ' T: Giao diện thêm thói quen của Habit Bull

Hình ' : Giao diện cộng đồng của Habit Bull

Bao gồm các chức năng như:

 Thêm thói quen theo các loại thói quen, chọn mức độ thực hiện

 Thống kê dữ liệu bằng biểu đồ, các số liệu

 Thảo luận cùng người dùng khác

 Đồng bộ với nhiều loại thiết bị

 Có thể xuất dữ liệu ra file CSV format d) Ưu điểm

 Có phân loại các loại thói quen

 Thói quen được đo bằng các đơn vị khác nhau

 Thống kê đơn giản dễ hiểu

 Trồng cây để duy trì thói quen

 Có hỗ trợ thảo luận giữa các người dùng

 Có cộng đồng hỗ trợ

 Một số hình ảnh tạo động lực tốt

 Có đội ngũ hỗ trợ khi gặp vấn đề

 Có hướng dẫn rõ ràng khi sử dụng e) Nhược điểm

Những nhược điểm của ứng dụng:

 Giao diện UI phần thảo luận thiết kế chưa được đẹp khiến bố cục bị rối

Cách phối màu chưa hợp lý

 Vẫn cần phải trả phí hằng tháng, hay hằng năm để unlock một số tính năng quan trọng

 Nếu lỡ xóa App, thì tất cả dữ liệu thói quen sẽ mất hết

 Vài lỗi liên quan tới quá trình đồng bộ với các thiết bị khác, khiến quá trình đồng bộ không thành công

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

 Những ai có nhu cầu theo dõi hành vi hằng ngày hay tạo thói quen

 Hiển thị thông tin của các habits đã được người dùng thêm vào

 Thuận tiện cho việc xây dựng thói quen và theo dõi hành vi hằng ngày

 Mang đến cho người dùng trải nghiệm tốt nhất về dịch vụ theo dõi hành vi.

Đánh giá và lựa chọn công nghệ

 Xây dựng giao diện trên môi trường Android Studio bằng ngôn ngữ Java

 Thiết kế giao diện trên Figma

Xây dựng hệ thống trên môi trường Android Studio bằng ngôn ngữ Java

 Thiết kế cơ sở dữ liệu trên SQLite

 Sử dụng Room Database để lưu trữ thông tin người dùng

MÔ HÌNH HÓA HỆ THỐNG

Các chức năng của hệ thống

Bảng / : Các chức năng của hệ thống

STT TÊN CHỨC NĂNG MÔ TẢ

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

2 Đăng xuất User đăng xuất khỏi hệ thống

3 Tạo thói quen User tiến hành tạo mới một thói quen

4 Cập nhật thói quen User tiến hành cập nhật thông tin cho một thói quen

5 Xóa thói quen User tiến hành xóa thói quen khi không cần thực hiện nữa

6 Tạo lời nhắc nhở User tiến hành tạo mới lời nhắc nhở cho thói quen

7 Cập nhật lời nhắc nhở User cập nhật thời gian thực hiện lời nhắc nhở

8 Xóa lời nhắc nhở User tiến hành xóa lời nhắc nhở khi không cần thiết nữa

9 Tạo thời gian giám sát thói quen

User cập nhật thêm thời gian giám sát cho một thói quen tương ứng

10 Tạo lịch sử nhật ký

System tự động tạo lịch sử nhật ký thói quen hằng ngày hoặc sau mỗi lần User tạo mới một thói quen

11 Cập nhật lịch sử nhật ký

Hệ thống tự động cập nhật thông tin lịch sử nhật ký khi người dùng thay đổi các thông tin thói quen liên quan đến trạng thái hoặc thời gian thực hiện.

12 Cập nhật lịch sử nhật ký

User chỉ có thể cập nhật trạng thái hoàn thành thói quen theo từng ngày cho nhật ký

13 Xóa nhật ký lịch sử User xóa thói quen sẽ thực hiện đồng thời việc xóa lịch sử nhật ký cho thói quen đó

14 Đếm ngược thời gian User tiến hành thực hiện đếm người gian khi thực hiện một thói quen nào đó

15 Đồng bộ User tiến hành đồng bộ toàn bộ dữ liệu dưới thiết bị lên Server

Tự động cập nhật chuỗi thực hiện thói quen và thêm mới danh sách cho nhật ký lịch sử

System tiến hành thêm mới lịch sử sau mỗi 24 giờ Đồng thời kiểm tra trạng thái hoạt động cho thói quen mỗi ngày để tính toán chuỗi thực hiện

Tự động thêm mới nhật ký thực hiện khi người dùng khởi động lại thiết bị

Hệ thống sẽ tự động kiểm tra và tạo mới nhật ký hoạt động hàng ngày mỗi khi người dùng thực hiện việc reset hoặc khởi động lại điện thoại sau một thời gian dài không sử dụng.

Lược đồ Usecase và đặc tả Usecase

Short Description User có thể đăng nhập vào ứng dụng

Pre-Conditions Người dùng đã có ứng dụng trên hệ thống

Post-Conditions Tình huống 1: Nếu đăng nhập thành công: Người dùng vào trang chủ và nội dung trang chủ được trình bày

Tình huống 2: Nếu đăng nhập không thành công: Người dùng không truy cập được vào hệ thống và hiển thị thông báo không thành công

Main Flow Bước 1: Người dùng nhấn vào icon ứng dụng

Bước 2: Ứng dụng hiển thị trang đăng nhập

Bước 3: Người chọn tài khoản Google muốn đăng nhập vào ứng dụng

Bước 4: Ứng dụng hiển thị trang chủ

Alternate Flow Trường hợp thay thế: Người dùng hủy thay đổi tiếp tục ở bước 4

Exception Flow Ứng dụng hiển thị thông báo lỗi nếu đăng nhập Google không thành công ở bước 3

Short Description User có thể đăng xuất khỏi ứng dụng

Pre-Conditions Người dùng đã có ứng dụng trên hệ thống

Post-Conditions Hiển thị thông báo khi đăng xuất thành công

Bước 1: Người dùng nhấn vào setting Bước 2: Ứng dụng hiển thị trang setting

Bước 3: Người dùng nhấn vào log in Bước 4: Người dùng sẽ quay trở lại trang home

Bảng /./: UseCase Tạo thói quen

Use Case Tạo thói quen

Short Description User tạo mới một thói quen

Pre-Conditions Người dùng đã có ứng dụng trên hệ thống

Post-Conditions Hiển thị thông báo khi đã tạo mới thói quen thành công

Bước 1: Người dùng nhấn vào màn hình home

Bước 2: Người nhấn vào biểu tượng dấu cộng gốc phải màn hình

Bước 3: Người dùng điền thông tạo mới thói quen

Bước 4: Người dùng nhấn nút tạo mới Alternate Flow

Trường hợp thay thế: Người dùng nhấn nút trở về gốc trái dưới để hủy thao tác thêm mới ở bước 4

- Hiển thị thông báo vui lòng điền tên thói quen nếu người dùng bỏ trống ở bước 4

- Hiển thị thông báo vui lòng điền thông tin các ngày thực hiện trong tuần nếu người dùng bỏ trống bước

- Hiển thị thông báo vui lòng chọn buổi thực hiện trong ngày nếu người dùng bỏ trống bước 4

- Hiển thị thông báo vui lòng điền tên thói quen khác nếu người dùng điền vào tên đã tồn tại trước đó ở bước 4

4.2.2.4 Usecase cập nhật thói quen

Bảng /.6: UseCase Cập nhật thói quen

Use Case Cập nhật thói quen

Short Description User tạo cập nhật một thói quen

Pre-Conditions Người dùng đã có ứng dụng trên hệ thống

Post-Conditions Hiển thị thông báo khi đã cập nhật thói quen thành công

Main Flow Bước 1: Người dùng nhấn vào màn hình home

Bước 2: Người nhấn vào một thói quen hiển thị trên danh sách bất kỳ

Bước 3: Người dùng điền thông tin muốn cập nhật thói quen

Bước 4: Người dùng nhấn nút cập nhật Alternate Flow

Trường hợp thay thế: Người dùng nhấn nút trở về gốc trái để hủy thao tác cập nhật ở bước 3

- Hiển thị thông báo vui lòng điền tên thói quen nếu người dùng bỏ trống ở bước 4

- Hiển thị thông báo vui lòng điền thông tin các ngày thực hiện trong tuần nếu người dùng bỏ trống ở bước 4

- Hiển thị thông báo vui lòng chọn buổi thực hiện trong ngày nếu người dùng bỏ trống ở bước 4

- Hiển thị thông báo vui lòng điền tên thói quen khác nếu người dùng điền vào tên đã tồn tại trước đó ở bước 4

Bảng /.7: UseCase Xóa thói quen

Use Case Xóa thói quen

Short Description User xóa một thói quen

Pre-Conditions Người dùng đã có ứng dụng trên hệ thống

Post-Conditions Hệ thống xóa thói quen thành công

Main Flow Bước 1: Người dùng nhấn vào màn hình home

Bước 2: Người nhấn vào một thói quen hiển thị trên danh sách bất kỳ

Bước 3: Người dùng nhấn bào biểu tượng xóa nếu bên gốc phải màn hình

Alternate Flow Trường hợp thay thế 1: Người dùng chọn nút hủy thao tác sẽ không thực hiện chức năng xóa ở bước 3

Trường hợp thay thế 2: Người dùng chọn nút xác nhận sẽ thực hiện chức năng xóa ở bước 3

Exception Flow 4.2.2.6 Usecase tạo lời nhắc nhở

Bảng /.:: UseCase Tạo mới lời nhắc nhở

Use Case Tạo mới lời nhắc nhở

Short Description User tạo mới một lời nhắc nhở cho thói quen

Pre-Conditions Người dùng đã có ứng dụng trên hệ thống

Post-Conditions Hệ thống tạo thành công một lời nhắc cho ứng dụng

Bước 1: Người dùng nhấn vào màn hình home

Bước 2: Người nhấn vào một thói quen hiển thị trên danh sách bất kỳ

Bước 3: Người dùng nhấn vào biển tượng dấu cộng tại phần “Remainder”

Bước 4: Người dùng điều khiển thanh cuộn thời gian để chọn thời gian nhắc nhở thực hiện thói quen

Bước 5: Người dùng nhấn nút “Select” để xác nhận một lời nhắc nhở

Trường hợp thay thế: Người dùng chọn nút “Cancel” để không thực hiện việc thêm mới

- Hiển thị ứng dụng bị lỗi khi tạo mới không thành công ở bước 5

- Hiển thị thông báo trùng thời gian nhắc nhở nếu chọn phải giá trị thời gian bị trùng ở bước 5

4.2.2.7 Usecase cập nhật lời nhắc nhở

Bảng /.Q: UseCase Cập nhật lời nhắc nhở

Use Case Cập nhật lời nhắc nhở

Short Description User cập nhật một lời nhắc nhở cho thói quen

Pre-Conditions Người dùng đã có ứng dụng trên hệ thống

Post-Conditions Hệ thống tạo thành công một lời nhắc cho ứng dụng

Bước 1: Người dùng nhấn vào màn hình home

Bước 2: Người nhấn vào một thói quen hiển thị trên danh sách bất kỳ

Bước 3: Người dùng nhấn vào một item remainder bất kỳ

Bước 4: Người dùng điều khiển thanh cuộn thời gian để chọn thời gian nhắc nhở thực hiện thói quen

Bước 5: Người dùng nhấn nút “Select” để xác nhận một lời nhắc nhở được cập nhật

Trường hợp thay thế: Người dùng chọn nút “Cancel” để không thực hiện việc cập nhật

- Hiển thị ứng dụng bị lỗi khi tạo mới không thành công ở bước 5

- Hiển thị thông báo trùng thời gian nhắc nhở nếu chọn phải giá trị thời gian bị trùng ở bước 5

4.2.2.8 Usecase xóa lời nhắc nhở

Bảng /.R: UseCase Xóa lời nhắc nhở

Use Case Xóa lời nhắc nhở

Short Description User xóa một lời nhắc nhở cho thói quen

Pre-Conditions Người dùng đã có ứng dụng trên hệ thống

Post-Conditions Hệ thống tạo thành công một lời nhắc cho ứng dụng

Bước 1: Người dùng nhấn vào màn hình home

Bước 2: Người nhấn vào một thói quen hiển thị trên danh sách bất kỳ

Bước 3: Người dùng nhấn vào biểu tượng “x” một item remainder bất kỳ

Alternate Flow Exception Flow 4.2.2.9 Usecase tạo thời gian giám sát

Bảng / T: UseCase tạo thời gian giám sát

Use Case Tạo thời gian giám sát

Short Description User tạo thời gian giám sát cho thói quen

Pre-Conditions Người dùng đã có ứng dụng trên hệ thống

Hệ thống tạo thành công thời gian giám sát cho thói quen và cập nhật vào nhật ký

Bước 1: Người dùng nhấn vào màn hình home

Bước 2: Người nhấn vào một thói quen hiển thị trên danh sách bất kỳ

Bước 3: Người dùng nhấn vào thanh nội ở phần “Timer”

Bước 4: Người dùng cuộn thanh với giá trị thời gian tương ứng

4.2.2.10 Usecase đồng bộ dữ liệu trên Server

Bảng / : UseCase Đồng bộ dữ liệu lên Server

Use Case Đồng bộ dữ liệu lên Server

Short Description User đồng bộ dữ liệu lên Server

Pre-Conditions Người dùng đã có ứng dụng trên hệ thống

Post-Conditions Hệ thống thông báo đồng bộ dữ liệu thành công

Bước 1: Người dùng nhấn vào màn hình setting

Bước 2: Người nhấn nút “Synchronize” Alternate Flow

Exception Flow - Hiển thị lỗi khi đồng bộ không thành công ở bước 2

4.2.2.11 Usecase thực hiện việc đếm ngược

Bảng / : Usecase Thực hiện chức năng đếm ngược

Use Case Thực hiện chức năng đếm ngược

Short Description User thực hiện chức năng đếm ngược

Pre-Conditions Người dùng đã có ứng dụng trên hệ thống

Bước 1: Người dùng nhấn vào màn hình home

Bước 2: Người vuốt sang phải vào một thói quen bất kỳ hiển thị trong danh sách

Bước 3: Người dùng nhấn nút bắt đầu để thực hiện chức năng

4.2.2.12 Usecase cập nhật trạng thái nhật ký

Bảng / ': UseCase Cập nhật trạng thái nhật ký

Use Case Cập nhật trạng thái nhật ký

Short Description User thực hiện chức năng cập nhật trạng thái nhật ký

Pre-Conditions Người dùng đã có ứng dụng trên hệ thống

Bước 1: Người dùng nhấn vào màn hình home

Bước 2: Người vuốt sang phải vào một thói quen bất kỳ hiển thị trong danh sách để cập nhật trạng thái hoàn thành

Trường hợp thay thế: Người dùng vuốt sang trái vào một thói quen để cập nhật trạng thái không hoàn thành

Bảng / /: UseCase Xóa nhật ký

Use Case Xóa nhật ký

Short Description User thực hiện chức năng xóa nhật ký

Pre-Conditions Người dùng đã có ứng dụng trên hệ thống

Bước 1: Người dùng nhấn vào màn hình home

Bước 2: Người nhấn vào một thói quen hiển thị trên danh sách bất kỳ

Bước 3: Người dùng nhấn vào biểu tượng xóa nếu bên gốc phải màn hình

Trường hợp thay thế 1: Người dùng chọn nút hủy thao tác sẽ không thực chức năng xóa ở bước 3

Trường hợp thay thế 2: Người dùng chọn nút xác nhận sẽ thực hiện chức năng xóa ở bước 3

4.2.2.14 Usecase tự động thêm mới nhật ký

Bảng / 6: UseCase Tự độn thêm mới nhật ký

Use Case Tự động thêm mới nhật ký

Short Description System tự động thêm mới nhật ký mỗi ngày

Pre-Conditions Đúng 23:55 mỗi ngày

Post-Conditions Nhật ký mới đã được thêm vào cơ sở dữ liệu của ứng dụng

Main Flow Alternate Flow Exception Flow 4.2.2.15 Usecase kiểm tra nhật ký sau mỗi lần khởi động và tạo mới

Bảng / 7: UseCase Kiểm tra nhật ký sau mỗi lần khởi động và tạo mới

Use Case Kiểm tra và tự động thêm mới nhật ký sau mỗi lần khởi động điện thoại

Short Description System kiểm tra và tự động thêm mới sau mỗi lần khởi động điện thoại

Pre-Conditions Khởi động máy

Nhật ký mới đã được thêm vào cơ sở dữ liệu của ứng dụng nếu ngày đó không tồn tại nhật ký hoạt động

Main Flow Alternate Flow Exception Flow

THIẾT KẾ HỆ THỐNG

Thiết kế dữ liệu – Ứng dụng Android

5.1.1Mô hình liên kết thực thể

Hình 6 : Mô hình liên kết thực thể

STT Tên cột Loại dữ liệu Bắt buộc Mô tả

1 Id Integer  Cột ID tự tăng cho đối tượng history

2 User_id Integer  Mã người dùng được đặt cố định

3 Habit_id Integer  Mã thói quen được tạo trước đó

4 State Text  Trạng thái hoàn thành thói quen theo ngày

5 Date Text  Ngày được thêm hoặc thống kê mỗi ngày

STT Tên cột Loại dữ liệu Bắt buộc Mô tả

1 Id Integer  Mã tự tặng sau mỗi lần tạo mới thói quen

2 User_id Integer  Mã cục bộ được đặt mặc định là

3 Day_of_time_id Integer  Buổi thực hiện trong một ngày của thói quen

4 Habit_name Text  Tên thói quen

5 Habit_logo Text Logo của thói quen

6 longest_steak Integer  Chuỗi thực hiện một thói quen

STT Tên cột Loại dữ liệu Bắt buộc Mô tả

1 Id Integer  Mã tương ứng với một buổi trong một ngày

2 Time_name Text  Tên buổi trong một ngày

STT Tên cột Loại dữ liệu Bắt buộc Mô tả

1 Id Integer  Mã cục bộ được đặt mặc định là 1

2 User_name Text  Tên người dùng sẽ là Email sau khi đăng nhập

STT Tên cột Loại dữ liệu Bắt buộc Mô tả

1 Id Integer  Mã tự tăng sau mỗi lần tạo mới một lời nhắc

2 Habit_id Integer  Mã thói quen tương ứng với lời nhắc

3 Hour_time Integer  Giờ thực hiện lời nhắc

4 Minutes_time Integer  Phút thực hiện lời nhắc

STT Tên cột Loại dữ liệu Bắt buộc Mô tả

1 Habit_id Integer  Mã thói quen tương ứng với ngày thực hiện

2 User_id Integer  Mã cục bộ được đặt mặc định là

3 Day_of_week_id Integer  Mã ngày trong tuần tương ứng với ngày thực hiện

4 Time_hour Integer  Giờ thực hiện thói quen

5 Time_minute Integer  Phút thực hiện thói quen

6 Time_second Integer  Giây thực hiện thói quen

STT Tên cột Loại dữ liệu Bắt buộc Mô tả

1 Id Integer  Mã tương ứng với 7 ngày trong tuần

2 Day_of_week_name Text  Tên ngày thực hiện trong tuần

Thiết kế dữ liệu – Back end Server

5.2.1Mô hình liên kết thực thể

Hình 6 : Mô hình liên kết thực thể

STT Tên cột Loại dữ liệu

1 _id Int64 Mã tự sinh trong Mongo

2 UserName Int64  Tên người dùng sẽ được đặt mặc định là email

3 DayOfTime Int64  Tên buổi thực hiện trong ngày

4 HabitName String  Tên thói quen

5 HabitId String  Mã thói quen tương ứng Mã này sẽ được lấy trong data của thiết bị

6 numLongestSteak Int64  Chuỗi thực hiện thói quen

STT Tên cột Loại dữ liệu

1 HabitId Int64  Mã habit tương ứng

2 UserName Int64  Email của username

3 DayOfWeekName Int64  Tên ngày thực hiện trong tuần

4 TimeHour Int64  Thời gian đại diện cho giờ thực hiện

5 TimeMinute Int64  Thời gian đại diện cho phút thực hiện

6 TimeSecond Int64  Thời gian đại diện cho số giây thực hiện

STT Tên cột Loại dữ liệu

1 _id Int64 Mã tự sinh trong Mongo

2 UserName String  Email của user

STT Tên cột Loại dữ liệu

1 _id Int64 Mã tự sinh trong Mongo

2 HabitId Int64  Mã của habit tương ứng

3 UserName String  Email của người dùng

4 Hour_time Int64  Giờ thực hiện lời nhắc nhở

5 Minutes_time Int64  Phút thực hiện lời nhắc nhở

STT Tên cột Loại dữ liệu

1 _id Int64 Mã tự sinh trong Mongo

2 UserName Int64  Email của người dùng

3 HabitId Int64  Mã habit tương ứng

4 historyHabitsState String  Trạng thái thực hiện habit trong 1 ngày

5 historyDate String  Ngày thực hiện habit

Class Diagram

Hình 6.': Sơ đồ Class Diagram

Lược đồ tuần tự

Hình 6./: Sequence tạo mới Habit

5.4.2Sequence tạo mới Habit trong 1 tuần

Hình 6.6: Sequence tạo mới Habit trong tuần

5.4.4Sequence cập nhật trạng thái Done Habit

Hình 6.:: Squence cập nhật trạng thái Done Habit

5.4.5Sequence cập nhật trạng thái Failed Habit

Hình 6.Q: Sequence cập nhật trạng thái Failed Habit

5.4.6Sequence lấy danh sách Habit theo mã người dùng

Hình 6.R: Sequence lấy danh sách Habit theo mã người dùng

5.4.7Sequence lấy danh sách habit theo mỗi ngày trong tuần

Hình 6 T: Sequence lấy danh sách habit theo mỗi ngày trong tuần

5.4.8Sequence lấy danh sách lịch sử theo mỗi ngày

Hình 6 : Sequence lấy danh sách lịch sử theo mỗi ngày

5.4.9Sequence tính toán và hiển thị chuỗi hoạt động liên tục

Hình 6 : Sequence tính toán và hiển thị chuỗi hoạt động liên tục

5.4.9.1 Sequence tính toán và hiển thị chuỗi hoạt động liên tục

Hình 6 ': Sequence tính toán và hiển thị chuỗi hoạt động liên tục

5.4.10Sequence tính toán phần trăm nhật ký hoàn thành các habit các ngày trong tuần

Hình 6 /: Sequence tính toán % nhật ký hoàn thành các habit của các ngày trong tuần

5.4.11Sequence lấy thông tin một habit

Hình 6 6: Sequence lấy thông tin một habit

Hình 6 7: Sequence xóa một habit

5.4.13Sequence cập nhật một habit

Hình 6 :: Sequence cập nhật một Habit

5.4.14Sequence xóa toàn bộ ghi chú ngày hoạt động trong tuần của habit

Hình 6 Q: Sequence xóa toàn bộ ghi chú ngày hoạt động trong tuần của habit

5.4.15Sequence cập nhật buổi thực hiện habit

Hình 6 R: Sequence cập nhật buổi thực hiện habit

5.4.16Sequence thêm ngày thực hiện habit

Hình 6 T: Sequence thêm ngày thực hiện habit

5.4.17Sequence thêm mới nhắc nhở

Hình 6 : Sequence thêm mới nhắc nhở

5.4.18Sequence cập nhật nhắc nhở

Hình 6 : Sequence cập nhật nhắc nhở

Hình 6 ': Sequence xóa nhắc nhở

5.4.20Sequence hiển thị danh sách nhắc nhở

Hình 6 /: Sequence hiển thị danh sách nhắc nhở

5.4.21Sequence tự động thêm nhật ký mới sau 24 giờ

Hình 6 6: Sequence tự động thêm nhật ký sau / giờ

5.4.22Sequence Diagram kiểm tra và tự động thêm nhật ký mới sau khi người dùng khởi động điện thoại

Hình 6 7: Sequence Diagram kiểm tra và tự động thêm nhật ký mới sau khi người dùng khởi động điện thoại

5.4.23Sequence đồng bộ dữ liệu lên server

Hình 6 :: Sequence đồng bộ dữ liệu lên điện thoại

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

Các màn hình User

Bảng 7 : Các màn hình User

ID Screen name Mô tả Ghi chú

SCU01 Login screen Màn hình đăng nhập

SCU02 Home screen Màn hình trang chủ

SCU03 Create habit screen Màn hình thêm mới habit

SCU04 Count down screen Màn hình đếm ngược

SCU05 Habit Setting screen Màn hình cài đặt habit

SCU06 Planner screen Màn hình thống kê kế hoạch

SCU07 Setting screen Màn hình cài đặt

SCU08 About us screen Màn hình thông tin nhà phát triển

DS01 Delete habit dialog screen Màn hình xác nhận xóa thói quen

DS02 Remainder dialog Màn hình tạo, cập nhật nhắc nhở

DS03 Timer dialog Màn hình tạo thời gian thói quen cụ thể

DS04 Logout dialog Màn hình xác nhận đăng xuất

Hình 7 : Login Screen Bảng 7 : Bảng đặc tả màn hình SCUT

No Name Require Format Reference Note

1 Nút vào ứng dụng ngay True Button Nhấn vào đến màn hình SCU02

2 Nút đăng nhập với Goole True Button

Nhấn nút đăng nhập chọn tài khoản thành công đến màn hình

Hình 7 : Home Screen Bảng 7.': Bảng đặc tả màn hình SCUT

No Name Require Format Reference Note

1 Nút tạo mới habit True Button Nhấn vào đến màn hình

Nút thống kê thói quen theo ngày

Khi nhấn vào từng ngày cụ thể danh sách thói quen sẽ hiện ra theo mỗi ngày tương đương

3 Tab ẩn hiện danh sách True Tab Khi nhấn giúp thu gọi hoặc hiện ra danh sách

85 thói quen cần làm thói quen cần làm trong ngày

4 Nút thói quen cụ thể True Button

[Trường hợp 1] Nếu thói quen không có thời gian theo dõi thì khi vuốt sang phải sẽ chuyển sang màn hình SCU04

[Trường hợp 2] Nếu thói quen có thời gian theo dõi thì khi vuốt sang phải sẽ chuyển màu sang xanh lá – trạng thái Done

[Trường hợp 3] Khi vuốt sang phải sẽ chuyển màu sang đỏ – trạng thái Failed

[Trường hợp 4] Khi nhấn vào sẽ chuyển sang màn hình SCU05

Tab ẩn hiện danh sách thói quen hoàn thành

Khi nhấn giúp thu gọi hoặc hiện ra danh sách thói quen đã hoàn thành

Tab ẩn hiện danh sách thói quen chưa hoàn thành

Khi nhấn giúp thu gọi hoặc hiện ra danh sách thói quen chưa hoàn thành

7 Tab home True Tab Trở về màn hình SCU02

8 Tab planner True Tab Chuyển đến màn hình

9 Tab setting True Tab Chuyển đến màn hình

Bảng 7./: Bảng đặc tả màn hình SCUT'

No Name Require Format Reference Note

1 Thanh nhập tên thói quen True Input text Nhấn vào đển nhập tên thói quen

Nút các ngày thực hiện thói quen trong 1 tuần

Nhấn nút để chọn các ngày thực hiện thói quen trong 1 tuần

Nút các buổi thực hiện thói quen trong 1 ngày

Nhấn nút để chọn các buổi thực hiện thói quen trong 1 ngày

4 Nút tạo mới thói quen True Button

Nhấn nút tạo mới thói quen Tạo mới thành công sẽ trở về màn hình SCU02

5 Nút trở về True Button Nhấn nút trở về màn hình SCU02

Hình 7./: Hình Countdown Screen Bảng 7.6: Bảng đặc tả màn hình SCUT/

No Name Require Format Reference Note

1 Nút trở về True Button Nhấn vào trở về màn hình

Nút bắt đầu đếm ngược

Nhấn vào để bắt đầu thời gian thực hiện một thói quen có thời gian định sẵn

3 Nút bắt đầu lại True Button

Nhấn vào để bắt đầu lại một thói quen khi quá trình thực hiện không ưng ý

Nút hoàn thành thói quen

Nhấn vào nút hoàn thành Sau khi trở về màn hình

Hình 7.6: Habit Setting Screen Bảng 7.7: Bảng đặc tả màn hình SCUT6

No Name Require Format Reference Note

1 Nút trở về True Button Nhấn vào trở về màn hình SCU02

2 Nút xóa thói quen True Button Nhấn vào hiển thị màn hình DS01

3 Thanh nhập tên thói quen True Input text

Nhấn vào đển nhập tên thói quen

Nút các ngày thực hiện thói quen trong 1 tuần

Nhấn nút để chọn các ngày thực hiện thói quen trong 1 tuần

Nút các buổi thực hiện thói quen trong 1 ngày

Nhấn nút để chọn các buổi thực hiện thói quen trong 1 ngày

Nút tạo thời gian theo dõi thói quen theo thời điểm cụ thể

True Button Nhấn nút hiển thị màn hình DS03

Nút tạo lời nhắc nhở cho thói quen theo từng thời gian cụ thể

True Button Nhấn nút hiển thị màn hình DS02

8 Nút cập nhật thói quen True Button Nhấn vào giúp cập nhật thói quen

Hình 7.7: Planner Screen Bảng 7.:: Bảng đặc tả màn hình SCUT7

No Name Require Format Reference Note

1 Tab home True Tab Chuyển đến màn hình

2 Tab planner True Tab Chuyển đến màn hình

3 Tab setting True Tab Chuyển đến màn hình

Hình 7.:: Setting Screen Bảng 7.Q: Bảng đặc tả màn hình SCUT:

No Name Require Format Reference Note

1 Nút đồng bộ True Button

Nhấn vào để đồng bộ toàn bộ dữ liệu dưới thiết bị lên server lưu trữ

2 Nút About us True Button Nhấn vào chuyển đến màn hình SCU08

Nút Đăng xuất/Đăng nhập

[Trường hợp 1] Nếu đang ở trạng thái đăng nhập thì nhấn vào hiển thị màn hình

DS04 [Trường hợp 2] Nếu ở trạng thái chưa đăng nhập thì khi nhấn vào sẽ hiển thị màn hình chọn tài khoản Google

4 Tab home True Tab Chuyển đến màn hình

5 Tab planner True Tab Chuyển đến màn hình

6 Tab setting True Tab Chuyển đến màn hình

Hình 7.Q: About Us Screen Bảng 7.R: Bảng đặc tả SCUTQ

No Name Require Format Reference Note

1 Nút trở về True Button Nhấn vào trở về màn hình

Hình 7.R: Delete Habit Dialog Screen Bảng 7 T: Bảng đặc tả màn hình DST

No Name Require Format Reference Note

1 Nút hủy True Button Nhấn vào trở lại màn hình

2 Nút xác nhận xóa True Button Nhấn nút xóa thói quen và trở về màn hình SCU02

Hình 7 T: Remainder Dialog Bảng 7 : Bảng đặc tả DSUT

No Name Require Format Reference Note

Thanh cuộc chọn thời gian nhắc nhở

Vuốt theo chiều dọc lên xuống để chọn thời gian nhắc nhở cho thói quen

1 Nút hủy True Button Nhấn vào trở lại màn hình

Nút xác tạo thời gian theo dõi

Nhấn vào trở lại màn hình

SC05 và cập nhật lại màn hình

Hình 7 : Timer Dialog Bảng 7 : Bảng đặc tả SCUT'

No Name Require Format Reference Note

Thanh cuộn chọn thời gian giám sát

Vuốt theo chiều dọc lên xuống để chọn thời gian giám sát cho thói quen

Hình 7 : Logout Dialog Bảng 7 ': Bảng đặc tả màn hình DST/

No Name Require Format Reference Note

1 Nút hủy True Button Nhấn vào trở lại màn hình SCU07

2 Nút xác nhận đăng xuất True Button

Nhấn nút xác nhận đăng xuất cập nhật màn hình và trở về màn hình

CÀI ĐẶT VÀ KIỂM THỬ

Cài đặt

 Sử dụng Draw.io để vẽ UML

 Sử dụng Android Studio Flamigo để lập trình Android

 Sử dụng IntelliJ IDEA để lập trình Java back-end

 Sử dụng Figma để thiết kế giao diện bản mềm

 Sử dụng Docker để Deploy

 Sử dụng Postgres14 để làm Server back-end

 Sử dụng MongoDB làm cơ sở dữ liệu.

Kiểm thử

Bảng : : Bảng kiểm thử các chức năng của ứng dụng

Chức năng Mô tả Trạng thái Đăng nhập User đăng nhập vào bằng tài khoản Google Pass

Tạo thói quen mới bằng cách sử dụng nút "Tạo mới" để bắt đầu hành trình hình thành thói quen Để thực hiện thói quen, người dùng chỉ cần nhấn vào nút "Bắt đầu đếm ngược" và theo dõi quá trình.

Cài đặt thói quen User nhấn vào nút cài đặt để sửa thói quen hay xóa chúng Pass

Thống kê kế hoạch User nhấn vào nút Planner để xem thống kê các habit Pass

User nhấn vào nút cài đặt chương trình để thực hiện việc đăng xuất, đồng bộ hóa hay để truy cập vào phần About Us

User nhấn vào nút About Us để xem thông tin của chủ sỡ hữu nhằm biết thêm thông tin về App

Xóa thói quen User nhấn vào biểu tượng thùng rác để xóa đi thói quen không mong muốn Pass

User nhấn vào biểu tượng Remainder để thực hiện việc lên lịch nhắc nhở thực hiện các thói quen

User nhấn vào biểu tượng Timer để thực hiện việc giám sát xem bản thân thực hiện thói quen trong bao lâu

Màn hình đăng xuất User được thông báo về việc lựa chọn

Yes/No trong vấn đề đăng xuất Pass

Ngày đăng: 05/12/2023, 10:00

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w