1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng ứng dụng rèn luyện thể hình

75 6 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 đề Xây Dựng Ứng Dụng Rèn Luyện Thể Hình
Tác giả Phạm Trương Hải Đoàn
Người hướng dẫn Th.S. Trần Anh Dũng
Trường học Đại học quốc gia TP. Hồ Chí Minh
Chuyên ngành Công nghệ thông tin
Thể loại đồ án
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 75
Dung lượng 2,67 MB

Cấu trúc

  • Chương 1. MỞ ĐẦU (14)
    • 1.1. Lý do chọn đề tài (14)
    • 1.2. Mục đích nghiên cứu (15)
      • 1.2.1. Khách quan (15)
      • 1.2.2. Chủ quan (15)
    • 1.3. Đối tượng nghiên cứu (15)
      • 1.3.1. Đối tượng công nghệ (15)
      • 1.3.2. Đối tượng sử dụng (16)
    • 1.4. Phạm vi nghiên cứu (16)
      • 1.4.1. Phạm vi môi trường (16)
      • 1.4.2. Phạm vi chức năng (16)
  • Chương 2. CƠ SỞ LÝ THUYẾT (18)
    • 2.1. Android (18)
      • 2.1.1. Hệ điều hành Android (18)
      • 2.1.2. Ngôn ngữ lập trình Kotlin (19)
      • 2.1.3. Jetpack Compose (19)
      • 2.1.4. Lập trình bất đồng bộ với Flow, Coroutine (20)
        • 2.1.4.1. Lập trình bất đồng bộ (20)
        • 2.1.4.2. Coroutine (20)
        • 2.1.4.3. Flow (21)
    • 2.2. Firebase (21)
      • 2.2.1. Cloud Firestore (21)
      • 2.2.2. Firebase Authentication (22)
      • 2.2.3. Cloud Storage cho Firebase (22)
    • 2.3. Full-text search với Algolia (23)
      • 2.3.1. Full-text search (23)
      • 2.3.2. Algolia (23)
    • 2.4. FoodData Central API (24)
  • Chương 3. PHÂN TÍCH, THIẾT KẾ HỆ THỐNG (0)
    • 3.1. Phân tích Use Case (26)
      • 3.1.1. Sơ đồ Use Case (26)
      • 3.1.2. Danh sách tác nhân (26)
      • 3.1.3. Danh sách Use Case (26)
      • 3.1.4. Đặc tả Use Case (28)
    • 3.2. Sơ đồ Sequence (39)
    • 3.3. Sơ đồ Activity (43)
    • 3.4. Kiến trúc hệ thống (49)
      • 3.4.1. Sơ đồ tổng quan (49)
      • 3.4.2. Mô tả kiến trúc (49)
    • 3.5. Thiết kế Cơ sở dữ liệu (50)
      • 3.5.1. Sơ đồ Cơ sở dữ liệu tổng quan (50)
      • 3.5.2. Mô tả Cơ sở dữ liệu (50)
    • 3.6. Thiết kế Giao diện người dùng (54)
      • 3.6.1. Danh sách màn hình (54)
      • 3.6.2. Mô tả chi tiết các Màn hình (55)
        • 3.6.2.1. Màn hình Đăng ký (55)
        • 3.6.2.2. Màn hình Đăng nhập (56)
        • 3.6.2.3. Màn hình Trang chủ (58)
        • 3.6.2.4. Màn hình Lịch sử tập luyện (59)
        • 3.6.2.5. Màn hình Chi tiết buổi tập (60)
        • 3.6.2.6. Màn hình Ghi chép thông tin buổi tập (61)
        • 3.6.2.7. Màn hình Danh sách bài tập (62)
        • 3.6.2.8. Màn hình Chi tiết bài tập (63)
        • 3.6.2.9. Màn hình Thêm bài tập Custom (64)
        • 3.6.2.10. Màn hình Danh sách chương trình tập (65)
        • 3.6.2.11. Màn hình Thêm mới chương trình tập (66)
        • 3.6.2.12. Màn hình Lịch sử ăn uống (67)
        • 3.6.2.13. Màn hình Danh sách thực phẩm (68)
        • 3.6.2.14. Màn hình Chi tiết thực phẩm (69)
        • 3.6.2.15. Màn hình Điều chỉnh Profile (70)
        • 3.6.2.16. Màn hình Ghi chép số đo cơ thể (71)
  • Chương 4. KẾT LUẬN (73)
    • 4.1. Thành quả (73)
    • 4.2. Hạn chế (73)
    • 4.3. Hướng phát triển (73)
  • TÀI LIỆU THAM KHẢO.......................................................................................65 (74)

Nội dung

CƠ SỞ LÝ THUYẾT

Android

Hình 2.1 Logo Android, bản quyền được nắm giữ bởi Google

Android là một hệ điều hành mã nguồn mở dựa trên nền tảng Linux kernel, được phát triển chủ yếu cho các thiết bị có màn hình cảm ứng (điện thoại thông minh, tablet, đồng hồ thông minh…).

Android được phát triển bởi một hiệp hội các nhà phát triển ứng dụng được gọi là Open Handset Alliance, mặc dù phiên bản được sử dụng rộng rãi nhất chủ yếu do Google phát triển Android được công bố vào tháng 11 năm

2007, với thiết bị Android thương mại đầu tiên, HTC Dream, được ra mắt vào tháng 9 năm 2008.

Android là hệ điều hành phổ biến nhất trên toàn cầu dành cho điện thoại kể từ 2011 đến nay và phổ biến nhất trên máy tính bảng từ năm 2013 đến nay Tính đến tháng 5 năm 2021, Android có hơn 3 tỷ người dùng hoạt động hàng tháng và tính đến tháng 1 năm 2021, Google Play Store có hơn 3 triệu ứng dụng Android 13, phát hành vào ngày 15 tháng 8 năm 2022, là phiên bản mới nhất và Android 12.1/12L mới phát hành gần đây bao gồm nhiều cải tiến dành riêng cho điện thoại gập, máy tính bảng, màn hình desktop rời và Chromebook [ CITATION Wik23 \l 1033 ]

2.1.2 Ngôn ngữ lập trình Kotlin

Hình 2.2 Logo ngôn ngữ lập trình Kotlin (Nguồn: Wikimedia Commons)

Kotlin là ngôn ngữ lập trình high-level, sử dụng static type, có thể phát triển đa nền tảng và được sử dụng cho nhiều mục tiêu khác nhau Kotlin được thiết kế để tương thích hoàn toàn với Java và JVM, nhưng đồng thời cũng có thể biên dịch thành JavaScript (ví dụ: đối với ứng dụng web sử dụng React) hoặc native code thông qua LLVM (ví dụ: đối với ứng dụng iOS) Chi phí phát triển ngôn ngữ Kotlin do JetBrains bỏ ra, còn thương hiệu Kotlin do Kotlin Foundation nắm giữ [ CITATION Wik231 \l 1033 ].

Kể từ ngày 7 tháng 5 năm 2019, Google công bố ngôn ngữ lập trình Kotlin sẽ là ngôn ngữ chính cho việc phát triển ứng dụng Android, và đang dần thay thế trình biên dịch Java tiêu chuẩn.

Jetpack Compose là UI toolkit được đề xuất bởi Android để xây dựng giao diện người dùng Jetpack Compose đơn giản hóa và tăng tốc phát triển giao diện người dùng trên Android bằng cách giảm thiểu lượng code và sử dụng nhiều tính năng mạnh mẽ của Kotlin API Đồng thời Jetpack Compose có rất nhiều công cụ built-in để xây dựng theme, các UI Component, chế độ tối Đồng thời, Jetpack Compose có thể được sử dụng để phát triển giao diện người dùng cho nhiều loại thiết bị di động khác nhau (điện thoại, đồng hồ thông minh, máy tính bảng) [ CITATION And231 \l 1033 ].

2.1.4 Lập trình bất đồng bộ với Flow, Coroutine

2.1.4.1 Lập trình bất đồng bộ

Lập trình bất đồng bộ (hay Asynchronous Programming) là một kĩ thuật lập trình cho phép nhiều tác vụ được thực hiện đồng thời mà không làm ảnh hưởng đến luồng chạy chính của chương trình, điều này tạo cảm tưởng như các tác vụ ấy được chạy song song với luồng chạy chính Khi các tác vụ ấy hoàn thành xong thì sẽ trả về kết quả cho luồng chạy chính, đảm bảo cho việc luồng chạy chính không bị

“block” (bị đông cứng, phải đợi có kết quả của các tác vụ mới được chạy tiếp) Điều này giữ việc thực hiện chương trình được tối ưu và trải nghiệm người dùng được tốt nhất.

Trong lập trình ứng dụng nói chung và lập trình Android nói riêng, lập trình bất đồng bộ là cực kỳ quan trọng vì việc ứng dụng bị đứng trong khi các tác vụ phức tạp, cần nhiều thời gian được thực thi sẽ gây nhiều khó chịu cho người dùng.

Các phương pháp để cài đặt kĩ thuật này bao gồm: Xử lý đa luồng (Multithreading), sử dụng Callback, sử dụng Promise/Future, sử dụng các Reactive Extensions, sử dụng Coroutine…[ CITATION Kot23 \l 1033 ]

Hướng tiếp cận của ngôn ngữ lập trình Kotlin trong lập trình bất đồng bộ là sử dụng Coroutine Coroutine được dựa trên khái niệm suspendable computations - ý tưởng cho rằng một hàm có thể tạm dừng việc thực thi của nó tại một số thời điểm và tiếp tục sau đó Một coroutine có thể coi như một “lightweight thread”.

Một trong những ưu điểm lớn nhất của Coroutines là việc viết non-blocking code (các đoạn code không block luồng chạy chính bằng cách sử dụng lập trình bất đồng bộ) gần tương tự như viết blocking code Chỉ cần sử dụng thêm một số hàm và cú pháp nhất định, thì đoạn code bất đồng bộ nhìn tương tự như đoạn code đồng bộ, và không cần phải tìm hiểu thêm các API hay cú pháp phức tạp nào Đồng thời Coroutine có thể được sử dụng cho nhiều nền tảng, dù là JVM, JavaScript hay nền tảng nào thì vẫn có thể dùng chung một đoạn code, vì bên dưới đã có trình biên dịch xử lý việc chuyển đổi code sang nền tảng tương ứng [ CITATION Kot231 \l 1033 ].

Flow được xây dựng dựa trên Coroutine để lần lượt trả về nhiều giá trị một cách bất đồng bộ, trong khi đó suspend function – cài đặt cơ bản của Coroutine – chỉ có khả năng trả về một giá trị một lần, Một Flow có thể coi như một Iterator duyệt qua từng phần tử trong một nhóm dữ liệu và lần lượt trả về từng giá trị một bằng cách sử dụng suspend function ở bên dưới để có thể đảm bảo tính bất đồng bộ[ CITATION And23 \l 1033 ].

Firebase

Hình 2.3 Logo Firebase (Nguồn: Wikimedia Commons)

Cloud Firestore (hay Firestore) là một cơ sở dữ liệu linh hoạt và có tính scalability dành cho việc phát triển ứng dụng di động, lập trình web và xây dựng máy chủ từ thông qua một số dịch vụ khác của Firebase và Google

Cloud Tương tự với Firebase Realtime Database, Cloud Firestore giúp đồng bộ hóa dữ liệu trên tất cả các ứng dụng thông qua các real-time listeners và hỗ trợ tính năng offline cho di động và web để lập trình viên có thể xây dựng các ứng dụng hoạt động tốt bất kể độ trễ của mạng hay kết nối Internet Cloud Firestore cũng cung cấp khả năng tích hợp với các sản phẩm khác của Firebase và Google Cloud, bao gồm Cloud Functions [ CITATION Fir23 \l

Firebase Authentication cung cấp dịch vụ, các SDK dễ sử dụng và thư viện giao diện người dùng để xác thực người dùng Firebase Authentication hỗ trợ xác thực bằng mật khẩu, số điện thoại, hay xác thực thông qua các liên kết phổ biến như Google, Facebook và Twitter, v.v.

Firebase Authentication có khả năng tích hợp với các dịch vụ Firebase khác, và đồng thời tận dụng các tiêu chuẩn OAuth 2.0 và OpenID Connect nên lập trình viên hoàn toàn có thể tích hợp Firebase Authentication với một hệ thống backend khác ngoài các dịch vụ mà Firebase cung cấp [ CITATION Fir231 \l 1033 ].

Cloud Storage cho Firebase được sử dụng khi ứng dụng cần lưu trữ các nội dung do người dùng tạo ra, chẳng hạn như hình ảnh, âm thanh, video.

Cloud Storage cho Firebase là dịch vụ lưu trữ mạnh mẽ, đơn giản với chi phí tiết kiệm chi phí Các Firebase SDK dành cho Cloud Storage cung cấp tính năng bảo mật cho quá trình tải các tập tin trong ứng dụng, bất kể chất lượng đường truyền kết nối mạng [ CITATION Fir232 \l 1033 ].

Full-text search với Algolia

Full-text search là kĩ thuật tìm kiếm văn bản trong dữ liệu văn bản sao cho kết quả trả về có chứa một số hoặc tất cả các kí tự trong văn bản được truy vấn Ngược lại, tìm kiếm truyền thống sẽ trả về kết quả khớp chính xác từng kí tự trong tham số truy vấn.

Full-text search được ứng dụng trong nhiều lĩnh vực khác nhau—ví dụ: tìm kiếm một món ăn trong thực đơn nhà hàng hoặc tìm kiếm một mặt hàng trên trang web thương mại điện tử thông qua một vài từ trong tên của mặt hàng Ngoài việc tìm kiếm các từ khóa cụ thể, full-text search có thể được phụ trợ với các kĩ thuật như fuzzy search và từ đồng nghĩa Do đó, kết quả cho một từ chẳng hạn như “Mì ống” sẽ không chỉ trả về các mục như

“Mì ống với thịt viên” mà còn có thể trả về các mục như “Fettuccine

Carbonara” bằng cách sử dụng từ đồng nghĩa hoặc “Thịt xông khói và bánh mì dẹt sốt pesto” bằng cách sử dụng fuzzy search [ CITATION Mon23 \l

Hình 2.4 Logo Algolia (Nguồn: Wikipedia)

Algolia là một search engine cung cấp nhiều dịch vụ tìm kiếm (trong đó có full-text search) dưới mô hình SaaS (Software as a Service).

Algolia cung cấp dịch vụ tìm kiếm thông qua các API khác nhau Trong đó, Rest API của Algolia cung cấp các tính năng cơ bản về tìm kiếm, phân tích và giám sát Đồng thời, có 10 ngôn ngữ và nền tảng được hỗ trợ để sử dụng Algolia Các ngôn ngữ được hỗ trợ bao gồm Python, Ruby, PHP, JavaScript, Java, Go, C#, Scala Hai nền tảng di động, iOS, Android cũng được hỗ trợ Algolia cũng có thể được tích hợp với 4 web framework: Ruby on Rails, Symfony, Django và Laravel Về giao diện người dùng, Algolia có một vài thư viện giao diện người dùng để lựa chọn [ CITATION Wik232 \l

Bên cạnh những sản phẩm trên, Algolia cũng tích hợp với các phần mềm mã nguồn mở và bên thứ ba khác, bao gồm Drupal, WordPress và Magento.

FoodData Central API

Hình 2.5 Logo của USDA - Bộ Nông nghiệp Hoa Kỳ

FoodData Central (FDC) là hệ thống dữ liệu tích hợp về dinh dưỡng và thực phẩm được phát triển bởi U.S Department of Agriculture (USDA –

Bộ Nông nghiệp Hoa Kỳ), tập trung vào nghiên cứu, cung cấp dữ liệu về chất dinh dưỡng và các thành phần thực phẩm khác cũng như các nguồn thông tin liên quan đến nông nghiệp, thực phẩm, thực phẩm bổ sung và các thông tin khác FoodData Central có thể được sử dụng trong nhiều lĩnh vực khác nhau, bao gồm nghiên cứu, hoạch định chính sách, giáo dục, dinh dưỡng và sức khỏe, phát triển sản phẩm, v.v.[ CITATION USD23 \l 1033 ]

FoodData Central API là một REST API được phát triển bởi USDA cho phép người dùng truy cập đến dữ liệu của FoodData Central với mục đích tích hợp dữ liệu dinh dưỡng vào ứng dụng của họ.

PHÂN TÍCH, THIẾT KẾ HỆ THỐNG

Phân tích Use Case

Hình 3.6 Sơ đồ Use Case tổng quan

STT Tác nhân Mô tả/Ghi chú

Người tập luyện, sử dụng ứng dụng để quản lý việc tập luyện, ăn uống Bảng 3.1 Danh sách tác nhân

STT Tên Use Case Mô tả/Ghi chú

1 Đăng ký Dành cho Người tập luyện, để đăng ký tài khoản mới cho ứng dụng

2 Đăng nhập Dành cho Người tập luyện, để đăng nhập với ứng dụng bằng tài khoản đã đăng ký

3 Xem lịch sử tập luyện Dành cho Người tập luyện, để xem lịch sử các buổi tập của một ngày bất ký

4 Ghi chép một buổi tập Dành cho Người tập luyện, để ghi chi tiết một buổi tập

5 Bắt đầu một buổi tập

Dành cho Người tập luyện, để bắt đầu tiến hành tập luyện (có thể các chức năng bấm giờ để canh thời gian nghỉ)

6 Xem danh sách chương trình tập

Dành cho Người tập luyện, để xem tất cả các chương trình tập người dùng đã tạo

Dành cho Người tập luyện, để tạo mới một chương trình tập và tiến hành ghi chép, bắt đầu tập với chương trình tập

8 Xem danh sách bài tập Dành cho Người tập luyện, để xem danh sách tất cả bài tập

Dành cho Người tập luyện, để tạo một bài tập cho riêng họ khi danh sách bài tập của ứng dụng không có bài tập họ cần

10 Ghi chép một ngày ăn

Dành cho Người tập luyện, để ghi chép các thực phẩm và chất dinh dưỡng tiêu thụ trong một ngày

11 Xem thông tin dinh dưỡng của thực phẩm

Dành cho Người tập luyện, để xem thông tin chi tiết dinh dưỡng của một thực phẩm

Dành cho Người tập luyện, để chỉnh sửa, thay đổi các thông tin Profile như tên, số tuổi, giới tính, cân nặng, chiều cao

13 Thêm số đo cơ thể

Dành cho Người tập luyện, để ghi chép các số đo cơ thể (VD: Chiều cao, cân nặng, số đo vòng bụng, số đo vòng bắp tay,…)

14 Theo dõi sự tiến bộ

Dành cho Người tập luyện, để theo dõi sự tiến bộ về mặt tập luyện, dinh dưỡng, thể chất theo thời gian

Bảng 3.2 Danh sách Use Case

Tên Use Case Đăng ký

Mô tả Cho phép người đăng ký tài khoản mới cho ứng dụng

Tiền điều kiện Không có

Hậu điều kiện Tài khoản mới được tạo cho người dùng

1) Người dùng khởi động ứng dụng

2) Người dùng chuyển đến màn hình Đăng ký

3) Người dùng nhập email, mật khẩu

4) Người dùng xác thực email

1) Người dùng khởi động ứng dụng

2) Người dùng chọn “Đăng ký với Google

3) Người dùng chọn tài khoản Google tương ứng

4) Người dùng nhập email đã đăng ký/mật khẩu không trùng khớp

5) Hệ thống báo lỗi Bảng 3.3 Đặc tả Use Case Đăng ký

Tên Use Case Đăng nhập

Mô tả Cho phép người dùng đăng nhập vào ứng dụng

Tiền điều kiện Không có

Hậu điều kiện Người dùng đăng nhập vào ứng dụng và chuyển đến màn hình chính

1) Người dùng khởi động ứng dụng

2) Người dùng nhập email, mật khẩu

3) Người dùng nhấn Đăng nhập

1) Người dùng khởi động ứng dụng

2) Người dùng chọn “Đăng nhập với Google

3) Người dùng chọn tài khoản Google tương ứng

Dòng sự kiện lỗi 4) Người dùng sai email, mật khẩu

5) Hệ thống báo lỗi Bảng 3.4 Đặc tả Use Case Đăng nhập

Tên Use Case Xem lịch sử tập luyện

Mô tả Cho phép người dùng xem lịch sử tập luyện theo từng ngày

Tiền điều kiện Người dùng đã truy cập vào ứng dụng

Hậu điều kiện Lịch sử tập của ngày được chọn được hiển thị

1) Người dùng nhấn vào BottomNavigationMenu item “Training”

2) Người dùng chọn Tab History

3) Người dùng nhấn vào một buổi tập trong ngày hiện tại để xem chi tiết lịch sử tập

4) Người dùng nhấn nút Đăng nhập

Dòng sự kiện phụ 1) Người dùng nhấn vào BottomNavigationMenu item “Training”

2) Người dùng chọn Tab History

3) Người dùng nhấn icon Calendar

4) Người dùng chọn một ngày trên lịch được hiển thị

Dòng sự kiện lỗi Không có

Bảng 3.5 Đặc tả Use Case Xem lịch sử tập luyện

Tên Use Case Ghi chép một buổi tập

Mô tả Cho phép người dùng lưu lại chi tiết buổi tập để đánh giá sự tiến bộ cũng như lên kế hoạch cho việc tập

Tiền điều kiện Người dùng đã truy cập vào ứng dụng

Hậu điều kiện Buổi tập vừa nhập được thêm vào lịch sử

1) Người dùng nhấn vào BottomNavigationMenu item “Training”

2) Người dùng chọn Tab History

3) Người dùng nhấn icon Add

4) Người dụng chọn các bài tập đã tập

5) Người dụng nhập thông tin chi tiết về buổi tập (số set, số rep, mức tạ…)

6) Người dùng nhấn icon Save

1) Người dùng nhấn vào BottomNavigationMenu item “Training”

2) Người dùng chọn Tab History

3) Người dùng nhấn icon Copy from previous workout

4) Người dùng chọn một workout trong quá khư để copy

5) Người dụng nhập thông tin chi tiết về buổi tập (số set, số rep, mức tạ…)

Dòng sự kiện lỗi Không có

Bảng 3.6 Đặc tả Use Case Ghi chép một buổi tập

Tên Use Case Bắt đầu một buổi tập

Mô tả Cho phép người dùng bắt đầu tiến hành tập luyện (có thể các chức năng bấm giờ để canh thời gian nghỉ)

Tiền điều kiện Người dùng đã truy cập vào ứng dụng

Hậu điều kiện Buổi tập vừa tập được thêm vào lịch sử

1) Người dùng nhấn vào BottomNavigationMenu item “Training”

2) Người dùng chọn Tab History

3) Người dùng nhấn button “Start Workout”

4) Người dụng chọn các bài tập đã tập

5) Người dụng nhập thông tin chi tiết về buổi tập (số set, số rep, mức tạ…)

6) Người dùng nhấn Complete mỗi hiệp tập

7) Người dùng nhấn icon Save

1) Người dùng nhấn vào BottomNavigationMenu item “Training”

2) Người dùng chọn Tab History

3) Người dùng nhấn button “Start Workout”

4) Người dùng quay về màn hình khác

5) Người dùng nhấn thanh “Workout In Progress”

6) Người dùng tiếp tục tập luyện

Dòng sự kiện lỗi 7) Người dùng nhấn Save khi chưa hoàn thành việc tập luyện

8) Ứng dụng báo lỗi Bảng 3.7 Đặc tả Use Case Bắt đầu một buổi tập

Tên Use Case Xem danh sách chương trình tập

Mô tả Cho phép người dùng xem tất cả các chương trình tập người dùng đã tạo

Tiền điều kiện Người dùng đã truy cập vào ứng dụng

Hậu điều kiện Danh sách chương trình tập được hiển thị

1) Người dùng nhấn vào BottomNavigationMenu item “Training”

2) Người dùng chọn Tab Routines

3) Người dùng nhấn vào Routine bất kỳ để xem chi tiết Routine

Dòng sự kiện phụ Không có

Dòng sự kiện lỗi Không có

Bảng 3.8 Đặc tả Use Case Xem danh sách chương trình tập

Tên Use Case Tạo chương trình tập

Mô tả Cho phép người dùng tạo mới một chương trình tập và tiến hành ghi chép, bắt đầu tập với chương trình tập

Tiền điều kiện Người dùng đã truy cập vào ứng dụng

Hậu điều kiện Chương trình tập mới được tạo ra

Dòng sự kiện 1) Người dùng nhấn vào BottomNavigationMenu chính item “Training”

2) Người dùng chọn Tab Routines

3) Người dùng nhấn icon Add

4) Người dùng chọn các bài tập

5) Người dùng nhập thông tin chương trình tập

Dòng sự kiện phụ Không có

Dòng sự kiện lỗi Không có

Bảng 3.9 Đặc tả Use Case Tạo chương trình tập

Tên Use Case Xem danh sách bài tập

Mô tả Cho phép người dùng xem danh sách tất cả các bài tập

Tiền điều kiện Người dùng đã truy cập vào ứng dụng

Hậu điều kiện Danh sách bài tập được hiển thị

1) Người dùng nhấn vào BottomNavigationMenu item “Training”

2) Người dùng chọn Tab Exercises

3) Người dùng nhấn chọn một bài tập bất kỳ để xem thông tin

1) Người dùng nhấn vào BottomNavigationMenu item “Training”

2) Người dùng chọn Tab Exercises

3) Người dùng nhấn tìm kiếm bài tập

4) Người dùng sử dụng bộ lọc để lọc các bài tập

5) Người dùng nhấn chọn một bài tập bất kỳ để xem thông tin

Dòng sự kiện lỗi Không có

Bảng 3.10 Đặc tả Use Case Xem danh sách bài tập

Tên Use Case Tạo bài tập custom

Mô tả Cho phép người dùng tạo một bài tập cho riêng họ khi danh sách bài tập của ứng dụng không có bài tập họ cần

Tiền điều kiện Người dùng đã truy cập vào ứng dụng

Hậu điều kiện Bài tập custom được tạo

1) Người dùng nhấn vào BottomNavigationMenu item “Training”

2) Người dùng chọn Tab Exercises

3) Người dùng nhấn icon Add

4) Người dùng nhập thông tin bài tập Custom (hình ảnh tên, category, các nhóm cơ được tập)

Dòng sự kiện phụ 1) Người dùng nhấn vào BottomNavigationMenu item “Training”

2) Người dùng chọn Tab Exercises

3) Người dùng tìm kiếm bài tập thông qua tên

4) Khi ứng dụng không có thông tin về bài tập được truy vấn, sẽ hiển thị màn hình đề xuất tạo bài tập custom

5) Người dùng nhấn vào icon Add

6) Người dùng nhập thông tin bài tập Custom (hình ảnh tên, category, các nhóm cơ được tập)

Dòng sự kiện lỗi Không có

Bảng 3.11 Đặc tả Use Case Tạo bài tập Custom

Tên Use Case Ghi chép một ngày ăn

Mô tả Cho phép người dùng ghi chép các thực phẩm và chất dinh dưỡng tiêu thụ trong một ngày

Tiền điều kiện Người dùng đã truy cập vào ứng dụng

Hậu điều kiện Thông tin dinh dưỡng của một ngày được cập nhật

1) Người dùng nhấn vào BottomNavigationMenu item “Nutrition”

2) Người dùng chọn Add food cho một bữa ăn

3) Người dùng chọn các thực phẩm

4) Người dùng chọn khối lượng thực phẩm

Dòng sự kiện phụ Không có

Dòng sự kiện lỗi Không có

Bảng 3.12 Đặc tả Use Case Ghi chép một ngày ăn

Tên Use Case Xem thông tin dinh dưỡng của thực phẩm

Mô tả Cho phép người dùng xem thông tin chi tiết dinh dưỡng của một thực phẩm

Tiền điều kiện Người dùng đã truy cập vào ứng dụng

Hậu điều kiện Thông tin của thực phẩm được hiển thị

1) Người dùng nhấn vào BottomNavigationMenu item “Nutrition”

2) Người dụng chọn Tab Food

3) Người dùng nhấn chọn một thực phẩm

4) Người dùng xem thực phẩm vừa chọn

1) Người dùng nhấn vào BottomNavigationMenu item “Nutrition”

2) Người dụng chọn Tab Food

3) Người dùng tìm kiếm thực phẩm theo tên

4) Người dùng nhấn chọn một thực phẩm

5) Người dùng xem thực phẩm vừa chọn

Dòng sự kiện lỗi Không có

Bảng 3.13 Đặc tả Use Case Xem thông tin dinh dưỡng của thực phẩm

Tên Use Case Chỉnh sửa Profile

Mô tả Cho phép người dùng chỉnh sửa, thay đổi các thông tin Profile như tên, số tuổi, giới tính, cường độ vận động, mục tiêu cân nặng

Tiền điều kiện Người dùng đã truy cập vào ứng dụng

Hậu điều kiện Profile của người dụng được cập nhật

1) Người dùng nhấn vào BottomNavigationMenu item “Setting”

2) Người dụng chọn Button Profile

3) Người dùng nhập các thông tin: tên, số tuổi, giới tính, cường độ vận động, mục tiêu cân nặng

Dòng sự kiện phụ Không có

5) Thông tin được nhập không hợp lệ (VD: Số tuổi <

6) Ứng dụng báo lỗi Bảng 3.14 Đặc tả Use Case Chỉnh sửa Profile

Tên Use Case Thêm số đo cơ thể

Mô tả Cho phép người dùng ghi chép các số đo cơ thể (VD: Chiều cao, cân nặng, số đo vòng bụng, số đo vòng bắp tay,…)

Tiền điều kiện Người dùng đã truy cập vào ứng dụng

Hậu điều kiện Số đo cơ thể của người dùng được cập nhật

1) Người dùng nhấn vào BottomNavigationMenu item “Setting”

2) Người dụng chọn Button Measurement

3) Người dùng nhấn chọn một số đo

4) Người dùng các thông tin: giá trị, ngày tháng năm

Dòng sự kiện phụ Không có

6) Thông tin được nhập không hợp lệ (VD: Giá trị số đo < 0)

7) Ứng dụng báo lỗi Bảng 3.15 Đặc tả Use Case Thêm số đo cơ thể

Tên Use Case Theo dõi sự tiến bộ

Mô tả Cho phép người dùng theo dõi sự tiến bộ về mặt tập luyện, dinh dưỡng, thể chất theo thời gian

Tiền điều kiện Người dùng đã truy cập vào ứng dụng

Hậu điều kiện Sự tiến bộ được thể hiện dưới dạng các biểu đồ đường

1) Người dùng nhấn vào BottomNavigationMenu item “Dashboard”

2) Người dùng nhấn icon Add

3) Người dùng chọn một thông số để theo dõi sự tiến bộ (bài tập, số đo cơ thể)

4) Người dùng chọn một trong 3 tab Training, Nutrition, Biometrics để quan sát sự tiến bộ

1) Người dùng nhấn vào BottomNavigationMenu item “Dashboard”

2) Người dùng nhấn icon Calendar bên cạnh mỗi biểu đồ đường

3) Người dùng chọn một khoảng thời gian

4) Người dùng chọn một trong 3 tab Training, Nutrition, Biometrics để quan sát sự tiến bộ

Dòng sự kiện lỗi Không có

Bảng 3.16 Đặc tả Use Case Theo dõi sự tiến bộ

Sơ đồ Sequence

Hình 3.7 Sơ đồ Sequence cho Use Case Đăng ký

Hình 3.8 Sơ đồ Sequence cho Use Case Xem lịch sử tập luyện

Hình 3.9 Sơ đồ Sequence cho Use Case Ghi chép một buổi tập

Hình 3.10 Sơ đồ Sequence cho Use Case Xem danh sách chương trình tập

Hình 3.11 Sơ đồ Sequence cho Use Case Tạo chương trình tập

Hình 3.12 Sơ đồ Sequence cho Use Case Ghi chép một ngày ăn

Hình 3.13 Sơ đồ Sequence cho Use Case Theo dõi sự tiến bộ

Sơ đồ Activity

Hình 3.14 Sơ đồ Activity của Use Case Xem lịch sử tập luyện

Hình 3.15 Sơ đồ Activity cho Use Case Ghi chép một buổi tập

Hình 3.16 Sơ đồ Activity cho Use Case Xem danh sách Chương trình tập

Hình 3.17 Sơ đồ Activity cho Use Case Tạo chương trình tập

Hình 3.18 Sơ đồ Activity cho Use Case Ghi chép một ngày ăn

Hình 3.19 Sơ đồ Activity cho Use Case chỉnh sửa Profile

Hình 3.20 Sơ đồ Activity cho Use Case Theo dõi sự tiến bộ

Kiến trúc hệ thống

Hình 3.21 Sơ đồ kiến trúc tổng quan

Về tổng thể, kiến trúc hệ thống được thiết kế theo mô hình Client-Server:

- Client: Ứng dụng di động được xây dựng với Android Được thiết kế theo mô hình MVVM (Model – View – ViewModel): o Model: Các lớp lưu trữ dữ liệu bao gồm các lớp DataSource (đảm nhiệm việc truy xuất đến backend) và các lớp Repository (Đóng gói các DataSource và cho phép các tầng phía trên lấy dữ liệu). o View: Đảm nhận việc xây dựng giao diện người dùng o ViewModel: Giao tiếp với tầng Model và đưa dữ liệu tới View (thường sử dụng các observable state holder để làm việc này).

- Server: Lưu trữ CSDL với Cloud Firestore, Lưu trữ file với CloudStorage for Firebase.

Thiết kế Cơ sở dữ liệu

3.5.1 Sơ đồ Cơ sở dữ liệu tổng quan

Hình 3.22 Sơ đồ Cơ sở dữ liệu tổng quan

3.5.2 Mô tả Cơ sở dữ liệu

Tên trường Kiểu dữ liệu Mô tả/Ghi chú username String Tên tài khoản email String Email của người dùng age Number Độ tuổi của người dùng sex String Giới tính của người dùng measurements SubCollection Các số đo cơ thể

Bảng 3.17 Mô tả Collection User

Tên trường Kiểu dữ liệu Mô tả/Ghi chú name String Tên thực phẩm calories Number Tổng lượng calo của thực phẩm coreNutrients Map

Ngày đăng: 04/09/2023, 20:43

HÌNH ẢNH LIÊN QUAN

Hình 3.6. Sơ đồ Use Case tổng quan - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.6. Sơ đồ Use Case tổng quan (Trang 26)
Bảng 3.3. Đặc tả Use Case Đăng ký - Xây dựng ứng dụng rèn luyện thể hình
Bảng 3.3. Đặc tả Use Case Đăng ký (Trang 28)
Bảng 3.4. Đặc tả Use Case Đăng nhập - Xây dựng ứng dụng rèn luyện thể hình
Bảng 3.4. Đặc tả Use Case Đăng nhập (Trang 29)
Bảng 3.7. Đặc tả Use Case Bắt đầu một buổi tập - Xây dựng ứng dụng rèn luyện thể hình
Bảng 3.7. Đặc tả Use Case Bắt đầu một buổi tập (Trang 32)
Bảng 3.11. Đặc tả Use Case Tạo bài tập Custom - Xây dựng ứng dụng rèn luyện thể hình
Bảng 3.11. Đặc tả Use Case Tạo bài tập Custom (Trang 35)
3.2. Sơ đồ Sequence - Xây dựng ứng dụng rèn luyện thể hình
3.2. Sơ đồ Sequence (Trang 39)
Hình 3.9. Sơ đồ Sequence cho Use Case Ghi chép một buổi tập - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.9. Sơ đồ Sequence cho Use Case Ghi chép một buổi tập (Trang 40)
Hình 3.11. Sơ đồ Sequence cho Use Case Tạo chương trình tập - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.11. Sơ đồ Sequence cho Use Case Tạo chương trình tập (Trang 41)
Hình 3.10. Sơ đồ Sequence cho Use Case Xem danh sách chương trình tập - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.10. Sơ đồ Sequence cho Use Case Xem danh sách chương trình tập (Trang 41)
Hình 3.12. Sơ đồ Sequence cho Use Case Ghi chép một ngày ăn - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.12. Sơ đồ Sequence cho Use Case Ghi chép một ngày ăn (Trang 42)
Hỡnh 3.13. Sơ đồ Sequence cho Use Case Theo dừi sự tiến bộ - Xây dựng ứng dụng rèn luyện thể hình
nh 3.13. Sơ đồ Sequence cho Use Case Theo dừi sự tiến bộ (Trang 43)
Hình 3.15. Sơ đồ Activity cho Use Case Ghi chép một buổi tập - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.15. Sơ đồ Activity cho Use Case Ghi chép một buổi tập (Trang 44)
Hình 3.16. Sơ đồ Activity cho Use Case Xem danh sách Chương trình tập - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.16. Sơ đồ Activity cho Use Case Xem danh sách Chương trình tập (Trang 44)
Hình 3.17. Sơ đồ Activity cho Use Case Tạo chương trình tập - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.17. Sơ đồ Activity cho Use Case Tạo chương trình tập (Trang 45)
Hình 3.18. Sơ đồ Activity cho Use Case Ghi chép một ngày ăn - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.18. Sơ đồ Activity cho Use Case Ghi chép một ngày ăn (Trang 46)
Hình 3.19. Sơ đồ Activity cho Use Case chỉnh sửa Profile - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.19. Sơ đồ Activity cho Use Case chỉnh sửa Profile (Trang 47)
Hỡnh 3.20. Sơ đồ Activity cho Use Case Theo dừi sự tiến bộ - Xây dựng ứng dụng rèn luyện thể hình
nh 3.20. Sơ đồ Activity cho Use Case Theo dừi sự tiến bộ (Trang 48)
Hình 3.21. Sơ đồ kiến trúc tổng quan - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.21. Sơ đồ kiến trúc tổng quan (Trang 49)
Bảng 3.17. Mô tả Collection User - Xây dựng ứng dụng rèn luyện thể hình
Bảng 3.17. Mô tả Collection User (Trang 51)
Bảng 3.20. Mô tả Collection EatingDay - Xây dựng ứng dụng rèn luyện thể hình
Bảng 3.20. Mô tả Collection EatingDay (Trang 52)
Hình 3.24. Màn hình Đăng nhập - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.24. Màn hình Đăng nhập (Trang 57)
Bảng 3.29. Mô tả Màn hình Trang chủ - Xây dựng ứng dụng rèn luyện thể hình
Bảng 3.29. Mô tả Màn hình Trang chủ (Trang 58)
Hình 3.29. Màn hình Danh sách bài tập - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.29. Màn hình Danh sách bài tập (Trang 62)
Bảng 3.33. Mô tả Màn hình Danh sách bài tập - Xây dựng ứng dụng rèn luyện thể hình
Bảng 3.33. Mô tả Màn hình Danh sách bài tập (Trang 63)
Hình 3.31. Màn hình Thêm bài tập Custom - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.31. Màn hình Thêm bài tập Custom (Trang 64)
Hình 3.32. Màn hình Danh sách chương trình tập - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.32. Màn hình Danh sách chương trình tập (Trang 65)
Bảng 3.37. Mô tả Màn hình Thêm mới chương trình tập - Xây dựng ứng dụng rèn luyện thể hình
Bảng 3.37. Mô tả Màn hình Thêm mới chương trình tập (Trang 67)
Bảng 3.38. Mô tả Màn hình Lịch sử ăn uống - Xây dựng ứng dụng rèn luyện thể hình
Bảng 3.38. Mô tả Màn hình Lịch sử ăn uống (Trang 68)
Hình 3.38. Màn hình Đăng ký - Xây dựng ứng dụng rèn luyện thể hình
Hình 3.38. Màn hình Đăng ký (Trang 71)
Bảng 3.41. Mô tả Màn hình Điều chỉnh Profile - Xây dựng ứng dụng rèn luyện thể hình
Bảng 3.41. Mô tả Màn hình Điều chỉnh Profile (Trang 71)

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

TÀI LIỆU LIÊN QUAN

w