Đặc biệt, trong thời đại công nghệ4.0, khi mà mọi thứ đều gắn liền với các thiết bị thông minh, nhu cầu sử dụng ứngdụng di động để quản lý lịch trình và hoạt động cá nhân đang ngày càng
Trang 1TRƯỜNG ĐẠI HỌC KIẾN TRÚC HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
-*** -ĐỒ ÁN MÔN HỌC THỰC TẬP CHUYÊN MÔN 1
ĐỀ TÀI: NGHIÊN CỨU VÀ XÂY DỰNG ỨNG DỤNG QUẢN LÝ LỊCH SINH HOẠT VÀ LÀM VIỆC TRÊN NỀN TẢNG ANDROID
Nhóm sinh viên thực hiện: Trương Thịnh Phát
Định Đại NhânNguyễn Việt AnhPhùng Tiến Đạt
Giảng viên hướng dẫn: Ths Phạm Trọng Tuấn
Hà Nội, 10-2024
Trang 2MỤC LỤC
MỤC LỤC 2
LỜI NÓI ĐẦU 5
DANH MỤC HÌNH ẢNH 6
DANH MỤC BẢNG BIỂU 7
I GIỚI THIỆU CHUNG 9
1.1 Lý do chọn đề tài 9
1.2 Mục tiêu của đề tài 9
1.3 Phạm vi nghiên cứu 10
1.4 Phương pháp nghiên cứu và triển khai 11
1.4.1 Nghiên cứu lý thuyết 11
1.4.2 Phân tích yêu cầu 11
1.4.3 Thiết kế giao diện người dùng (UI/UX) 11
1.4.4 Triển khai mã nguồn 11
1.4.5 Kiểm thử ứng dụng 12
1.4.6 Đánh giá và cải tiến 12
1.5 Cấu trúc báo cáo 12
II CƠ SỞ LÝ THUYẾT 15
2.1 Tổng quan về ứng dụng quản lý lịch sinh hoạt và làm việc 15
2.2 Tổng quan về nền tảng Android 17
2.2.1 Giới thiệu về nền tảng Android 17
2.2.2 Giao diện và ứng dụng Android 17
2.2.3 Ưu điểm và nhược điểm của hệ điều hành Android 18
2.3 Các công nghệ và công cụ sử dụng 19
2.3.1 Ngôn ngữ lập trình (Java) 19
2.3.1.1 Đặc điểm của Java 19
2.3.1.2 Cấu trúc của Java 20
2.3.1.3 Các thư viện và API phong phú 20
2.3.1.4 Ứng dụng của Java 21
2.3.1.5 Ưu điểm của Java 22
2.3.1.6 Hạn chế của Java 22
2.3.2 Môi trường phát triển (Android Studio, Visual Studio Code) 23
Trang 32.3.2.1 Các tính năng chính của Android Studio 23
2.3.2.2 Yêu cầu hệ thống 24
2.3.2.3 Cách sử dụng Android Studio 24
2.3.2.4 Lợi ích của Android Studio 25
2.3.2.5 Hạn chế của Android Studio 25
2.3.3 Kiến trúc ứng dụng (MVC/MVVM) 25
2.3.4 SQLite cho lưu trữ dữ liệu 26
2.4 Lý thuyết về UX/UI cho ứng dụng di động 27
2.4.1 UX (Trải nghiệm người dùng) 27
2.4.2 UI (Giao diện người dùng) 28
2.4.3 Nguyên tắc thiết kế UX/UI 29
2.4.4 Xu hướng thiết kế UX/UI hiện nay 30
III PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 30
3.1 Phân tích yêu cầu 30
3.1.1 Yêu cầu chức năng 30
3.1.2 Yêu cầu phi chức năng 33
3.2 Thiết kế hệ thống 35
3.2.1 Thiết kế kiến trúc hệ thống 35
3.2.2 Thiết kế cơ sở dữ liệu 35
3.2.3 Sơ đồ luồng dữ liệu (DFD) 37
3.2.4 Sơ đồ hoạt động (Activity Diagram) 38
3.2.5 Sơ đồ lớp (Class Diagram) 39
3.3 Thiết kế giao diện 40
3.3.1 Giao diện quản lý lịch sinh hoạt (lịch công việc, lịch học tập) 40
3.3.2 Giao diện hiển thị và nhắc nhở các sự kiện 41
3.3.3 Giao diện cài đặt và các chức năng khác 42
IV TRIỂN KHAI ỨNG DỤNG 43
4.1 Môi trường phát triển 43
4.1.1 Cài đặt Android Studio hoặc Visual Studio Code 43
4.1.2 Cài đặt và cấu hình SDK, Gradle 45
4.2 Các bước triển khai 48
4.2.1 Xây dựng các chức năng chính 48
4.2.1.1 Chức năng thêm hoạt động 48
Trang 44.2.1.2 Chức năng sửa hoạt động 49
4.2.1.3 Chức năng xoá hoạt động 50
4.2.1.4 Chức năng đánh giá hoạt động 51
4.2.1.5 Chức năng theo dõi hoạt động 52
4.2.2 Xây dựng cơ sở dữ liệu và kết nối với ứng dụng 54
4.3 Kiểm thử 55
4.3.1 Phương pháp kiểm thử 55
4.3.2 Kết quả kiểm thử 56
4.3.3 Khắc phục lỗi và cải thiện hiệu suất 57
V ĐÁNH GIÁ VÀ KẾT LUẬN 59
5.1 Đánh giá kết quả đạt được 59
5.2 Hạn chế và khó khăn gặp phải 60
5.3 Hướng phát triển trong tương lai 62
VI PHỤ LỤC 64
6.1 Mã nguồn chính của ứng dụng 64
6.2 Hình ảnh giao diện ứng dụng 64
6.3 Tài liệu kiểm thử 64
VII TÀI LIỆU THAM KHẢO 64
Trang 5LỜI NÓI ĐẦU
Trong bối cảnh cuộc sống hiện đại với nhịp độ nhanh chóng, việc quản lý thờigian và tổ chức các hoạt động hàng ngày trở thành một yếu tố then chốt giúp nângcao hiệu quả công việc và chất lượng cuộc sống Đặc biệt, trong thời đại công nghệ4.0, khi mà mọi thứ đều gắn liền với các thiết bị thông minh, nhu cầu sử dụng ứngdụng di động để quản lý lịch trình và hoạt động cá nhân đang ngày càng gia tăng.Nhận thức được điều này, nhóm chúng tôi đã quyết định thực hiện đồ án môn thựctập chuyển môn 1 với đề tài "Nghiên cứu và xây dựng ứng dụng quản lý lịch sinhhoạt và làm việc trên nền tảng Android."
Mục tiêu chính của ứng dụng là cung cấp cho người dùng một công cụ tiện ích,cho phép họ dễ dàng lập kế hoạch, theo dõi và đánh giá hiệu suất thực hiện các hoạtđộng trong cuộc sống hàng ngày Ứng dụng không chỉ giúp người dùng sắp xếp lịchtrình một cách hợp lý mà còn cung cấp các chức năng theo dõi và đánh giá, từ đó giúpcải thiện năng suất làm việc và quản lý thời gian hiệu quả hơn
Trong báo cáo này, chúng tôi sẽ trình bày chi tiết quy trình phát triển ứngdụng, bao gồm việc phân tích yêu cầu, thiết kế hệ thống, xây dựng cơ sở dữ liệu vàcài đặt các chức năng chính Chúng tôi cũng sẽ chia sẻ các phương pháp kiểm thử mànhóm đã áp dụng để đảm bảo ứng dụng hoạt động ổn định và hiệu quả, cũng nhưđánh giá kết quả đạt được và những khó khăn mà nhóm đã phải đối mặt trong quátrình thực hiện dự án
Hy vọng rằng sản phẩm mà nhóm chúng tôi đã phát triển sẽ không chỉ đáp ứngđược nhu cầu hiện tại mà còn là nguồn tài liệu tham khảo quý giá cho các nghiên cứu
và phát triển ứng dụng trong tương lai Chúng tôi xin chân thành cảm ơn sự hướngdẫn và hỗ trợ của các thầy cô, cũng như những người đã góp phần vào sự thành côngcủa đồ án này
Trang 6DANH MỤC HÌNH ẢNH
Hình 3.1 Thiết kế kiến trúc hệ thống 35
Hình 3.2 Sơ đồ luồng dữ liệu (DFD) 37
Hình 3.3 Sơ đồ hoạt động (Activity Diagram) 38
Hình 3.4 Sơ đồ lớp (Class Diagram) 39
Hình 3.5: Màn hình quản lý lịch sinh hoạt và làm việc 40
Hình 3.6: Màn hình quản lý thời gian 41
Hình 3.7: Màn hình tạo lịch sinh hoạt và làm việc 42
Hình 3.8: Màn hình thêm thời gian cho lịch sinh hoạt và làm việc 42
Hình 6.1: Màn hình chính 64
Trang 7DANH MỤC BẢNG BIỂU
Bảng 3.1 ACTIVITIES 36 Bảng 3.2 RATINGS 36 Bảng 3.3 TRACKEDACTIVITIES 37
Trang 8DANH MỤC VIẾT TẮT
1 SQL Structured Query Language Ngôn ngữ truy vấn có cấu trúc
2 API Application Programming
Interface Giao diện lập trình ứng dụng
Trang 9I GIỚI THIỆU CHUNG 1.1 Lý do chọn đề tài
Nhu cầu thực tiễn cao: Trong cuộc sống hiện đại, việc quản lý thời gian hiệu
quả rất quan trọng, giúp người dùng sắp xếp lịch trình, tránh bỏ sót công việc
Phổ biến và dễ tiếp cận: Android là hệ điều hành phổ biến, cho phép ứng
dụng dễ dàng tiếp cận đông đảo người dùng
Phát triển kỹ năng lập trình: Đề tài tạo cơ hội thực hành lập trình Android,
quản lý dữ liệu và tối ưu hóa ứng dụng
Xu hướng cá nhân hóa: Ứng dụng quản lý lịch phù hợp xu hướng cá nhân
hóa, giúp nâng cao trải nghiệm người dùng
Khả năng mở rộng: Ứng dụng có thể phát triển thêm các tính năng như đồng
bộ hóa, phân tích lịch trình và tích hợp AI trong tương lai
1.2 Mục tiêu của đề tài
Phát triển ứng dụng quản lý thời gian hiệu quả: Giúp người dùng tạo, sắp
xếp, và nhắc nhở lịch trình công việc, sự kiện, và hoạt động cá nhân một cách dễdàng
Nâng cao trải nghiệm người dùng: Thiết kế giao diện thân thiện, dễ sử dụng,
hỗ trợ người dùng quản lý thời gian nhanh chóng và hiệu quả trên thiết bị di động
Cung cấp tính năng đồng bộ và nhắc nhở thông minh: Đồng bộ hóa lịch
với các ứng dụng khác (như Google Calendar), tích hợp thông báo để đảm bảo ngườidùng không bỏ lỡ sự kiện quan trọng
Trang 10Tạo nền tảng mở rộng tính năng: Ứng dụng có khả năng phát triển thêm các
chức năng nâng cao như phân tích thói quen sử dụng, đề xuất lịch trình hợp lý và tíchhợp AI
Nâng cao kỹ năng lập trình Android: Tạo cơ hội cho người phát triển thực
hành các kiến thức về lập trình Android, xử lý dữ liệu, thiết kế kiến trúc phần mềm vàtối ưu hóa hiệu suất ứng dụng
1.3 Phạm vi nghiên cứu
Nền tảng Android: Tập trung phát triển ứng dụng trên hệ điều hành Android,
đảm bảo ứng dụng tương thích với các phiên bản Android phổ biến và các loại thiết
bị khác nhau
Chức năng quản lý lịch và nhắc nhở: Nghiên cứu cách tạo, cập nhật, và hiển
thị các sự kiện, công việc Tích hợp các chức năng nhắc nhở sự kiện theo thời gianhoặc địa điểm
Đồng bộ dữ liệu: Đảm bảo khả năng đồng bộ hóa lịch trình với các ứng dụng
khác như Google Calendar, để người dùng có thể quản lý lịch từ nhiều nguồn
Giao diện người dùng (UI/UX): Tập trung vào thiết kế giao diện thân thiện,
dễ sử dụng, phù hợp với màn hình thiết bị di động và tuân theo tiêu chuẩn MaterialDesign
Bảo mật và lưu trữ dữ liệu: Tìm hiểu cách lưu trữ dữ liệu an toàn, có thể trên
cơ sở dữ liệu nội bộ hoặc dịch vụ lưu trữ đám mây Đảm bảo bảo mật thông tin ngườidùng và quyền riêng tư
Phát triển tính năng mở rộng: Đề xuất các hướng phát triển tính năng mở
rộng, như gợi ý lịch trình thông minh hoặc tích hợp AI
Trang 111.4 Phương pháp nghiên cứu và triển khai
1.4.1 Nghiên cứu lý thuyết
Tìm hiểu công nghệ: Nghiên cứu các công nghệ và công cụ phát triển
Android như Java/Kotlin, Android Studio, Firebase (để đồng bộ dữ liệu)
Tham khảo ứng dụng tương tự: Phân tích các ứng dụng quản lý lịch
phổ biến (như Google Calendar) để hiểu về các tính năng cơ bản và cách tối ưugiao diện người dùng
Xác định kiến trúc phần mềm: Lựa chọn mô hình kiến trúc phù hợp,
như MVVM, giúp duy trì và phát triển mã dễ dàng
1.4.2 Phân tích yêu cầu
Thu thập yêu cầu từ người dùng mục tiêu thông qua khảo sát hoặcphỏng vấn
Xác định các tính năng chính như tạo lịch, nhắc nhở, đồng bộ hóa, vàquản lý dữ liệu
1.4.3 Thiết kế giao diện người dùng (UI/UX)
Thiết kế wireframe và prototype cho các màn hình chính của ứng dụng,bao gồm trang lịch, danh sách công việc, và giao diện tạo sự kiện
Sử dụng Material Design để đảm bảo giao diện thống nhất, thân thiện và
dễ sử dụng
1.4.4 Triển khai mã nguồn
Lập trình giao diện (Frontend): Sử dụng XML cho giao diện và kết
hợp với Kotlin/Java để xử lý tương tác người dùng
Trang 12Xây dựng logic xử lý (Backend): Phát triển các chức năng chính như
tạo, chỉnh sửa, xóa và nhắc nhở sự kiện, quản lý trạng thái công việc
Tích hợp dịch vụ đồng bộ hóa và nhắc nhở: Sử dụng Firebase hoặc
API Google Calendar để đồng bộ dữ liệu; tích hợp hệ thống nhắc nhở củaAndroid
1.4.5 Kiểm thử ứng dụng
Kiểm thử chức năng: Đảm bảo các chức năng chính hoạt động đúng
(tạo sự kiện, nhắc nhở, đồng bộ hóa)
Kiểm thử giao diện: Kiểm tra tính thân thiện của giao diện trên nhiều
thiết bị Android khác nhau
Kiểm thử hiệu suất: Đảm bảo ứng dụng hoạt động mượt mà, không
tiêu tốn quá nhiều tài nguyên và bộ nhớ
1.4.6 Đánh giá và cải tiến
Thu thập phản hồi từ người dùng thử nghiệm, từ đó tối ưu hóa giao diện
và cải thiện các tính năng
Đánh giá kết quả, xem xét các tính năng mới có thể thêm vào cho cácphiên bản tương lai của ứng dụng
1.5 Cấu trúc báo cáo
Báo cáo được chia thành các phần chính như sau:
Lời nói đầu
Trang 13Phần này giới thiệu lý do thực hiện đề tài, các mục tiêu và phạm vinghiên cứu của đồ án, nêu rõ lý do chọn đề tài cũng như tầm quan trọng và tínhthực tiễn của đề tài đối với sinh viên và người dùng.
Giới thiệu chung
Cung cấp tổng quan về đề tài, bao gồm mục tiêu của ứng dụng, các tínhnăng chính và những lợi ích mà ứng dụng mang lại cho người dùng Ngoài ra,trình bày các công nghệ và phương pháp mà nhóm sử dụng để xây dựng ứngdụng quản lý lịch sinh hoạt và làm việc
Cơ sở lý thuyết và các công nghệ sử dụng
Giới thiệu và mô tả về các công nghệ, công cụ, ngôn ngữ lập trình và thưviện mà nhóm sử dụng trong quá trình phát triển ứng dụng Phần này bao gồm:
○ Tổng quan về nền tảng Android
○ Các công cụ phát triển như Android Studio, ngôn ngữ lập trình(Java, Kotlin)
○ Các thư viện hỗ trợ cho phát triển ứng dụng Android
Phân tích yêu cầu
Xác định và mô tả chi tiết các yêu cầu chức năng và phi chức năng củaứng dụng Phần này trình bày các yêu cầu từ phía người dùng, các chức năngcần có của ứng dụng để đáp ứng nhu cầu quản lý lịch sinh hoạt và làm việc
Thiết kế hệ thống
Cung cấp chi tiết về cách thiết kế giao diện người dùng (UI) và trảinghiệm người dùng (UX) của ứng dụng Phần này bao gồm:
Trang 14Trình bày quy trình triển khai và phát triển ứng dụng, từ việc xây dựng
cơ sở dữ liệu, các mô-đun chức năng đến tích hợp và hoàn thiện ứng dụng.Phần này cũng bao gồm mô tả về việc kiểm thử các chức năng của ứng dụng
Đánh giá và kết quả đạt được
Phân tích các kết quả đạt được so với mục tiêu ban đầu Đánh giá tínhhiệu quả, tính ổn định và trải nghiệm người dùng của ứng dụng thông qua cácthử nghiệm và phản hồi từ người dùng
Kết luận và hướng phát triển
Tổng kết lại quá trình thực hiện đồ án, những khó khăn đã gặp và cácgiải pháp đã áp dụng Đưa ra những đề xuất cải tiến và hướng phát triển trongtương lai để nâng cao tính năng của ứng dụng và mở rộng phạm vi ứng dụng
Trang 15Danh sách các tài liệu, bài báo, website hoặc nguồn kiến thức mà nhóm
sử dụng để hoàn thành đồ án
II CƠ SỞ LÝ THUYẾT 2.1 Tổng quan về ứng dụng quản lý lịch sinh hoạt và làm việc
Ứng dụng quản lý lịch sinh hoạt và làm việc trên nền tảng Android là một công
cụ hỗ trợ người dùng trong việc tổ chức, sắp xếp và theo dõi lịch trình cá nhân, côngviệc hàng ngày một cách hiệu quả và khoa học Ứng dụng này được thiết kế với mụctiêu giúp người dùng tối ưu hóa thời gian, nhắc nhở các sự kiện quan trọng, đồng thờitạo một trải nghiệm tiện lợi và thân thiện
Trang 16○ Đồng bộ lịch trình với các ứng dụng lịch khác như Google Calendar,giúp quản lý lịch trình từ nhiều nguồn khác nhau.
○ Lưu trữ dữ liệu trên đám mây để dễ dàng truy cập và sao lưu từ nhiềuthiết bị Android khác nhau
Giao diện thân thiện, dễ sử dụng:
○ Giao diện ứng dụng được thiết kế đơn giản, tuân theo các nguyên tắcMaterial Design, giúp người dùng dễ dàng tương tác
○ Có chế độ hiển thị ngày, tuần, và tháng để phù hợp với nhu cầu xem lịchtrình linh hoạt
Phân tích và báo cáo thời gian:
○ Cung cấp số liệu thống kê và phân tích về thời gian dành cho từng loạicông việc, giúp người dùng theo dõi và điều chỉnh thời gian hợp lý
Lợi ích của ứng dụng:
○ Tối ưu hóa quản lý thời gian: Người dùng có thể dễ dàng sắp xếp, theo dõi và
quản lý thời gian cá nhân, đảm bảo không bỏ sót các sự kiện, công việc quantrọng
○ Trải nghiệm liền mạch: Với khả năng đồng bộ hóa, ứng dụng giúp người
dùng quản lý lịch trình mọi lúc, mọi nơi
○ Phù hợp với nhiều đối tượng: Ứng dụng hữu ích cho người đi làm, học sinh,
sinh viên và bất kỳ ai cần sắp xếp lịch trình sinh hoạt, làm việc
Công nghệ sử dụng:
Trang 17Ứng dụng được phát triển trên nền tảng Android sử dụng ngôn ngữ lập trìnhKotlin hoặc Java Các công nghệ và công cụ hỗ trợ bao gồm:
○ Firebase hoặc Google Calendar API cho việc đồng bộ và lưu trữ dữ liệu
○ Android Studio cho phát triển và kiểm thử ứng dụng
○ Kiến trúc MVVM để đảm bảo mã nguồn dễ bảo trì và mở rộng
2.2 Tổng quan về nền tảng Android
2.2.1 Giới thiệu về nền tảng Android
Android là hệ điều hành được phát triển bởi Tổng công ty Android, với
sự hỗ trợ tài chính từ Google Mãi đến năm 2005, được chính Google mua lại
và cho ra mắt vào năm 2007
Android là hệ điều hành nguồn mở dựa trên nền tảng Linux, chủ yếudành cho các thiết bị có màn hình cảm ứng như điện thoại, máy tính bảng
Với mã nguồn mở và giấy phép không có nhiều ràng buộc nên Androidngày càng trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới
Vào quý 3 năm 2012, Android chiếm 75% thị phần về điện thoại thôngminh trên toàn thế giới với con số tổng cộng khoảng 500 triệu thiết bị đã đượckích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày
2.2.2 Giao diện và ứng dụng Android
Giao diện:
○ Giao diện của Android sử dụng cảm ứng chạm, tác động trực tiếp lênmàn hình như vuốt, chạm, phóng to và thu lại để xử lý các đối tượngtrên màn hình
Trang 18○ Sau khi khởi động các thiết bị Android màn hình chính sẽ hiển thị gồmnhiều biểu tượng (icon) và tiện ích (widget) Giao diện của Android chophép người dùng tự do sắp xếp hình dáng, biểu tượng, tiện ích tùy theo
○ Nhiều ứng dụng chạy ngầm làm chậm máy
○ Một số ứng dụng chưa được tối ưu hóa tốt
○ Chất lượng một số ứng dụng còn kém
Trang 191995 Java là một trong những ngôn ngữ lập trình phổ biến nhất thế giới, được
sử dụng rộng rãi trong phát triển ứng dụng doanh nghiệp, ứng dụng di động, hệthống nhúng, và nhiều lĩnh vực khác Đặc điểm nổi bật của Java là tính khảchuyển và khả năng chạy trên mọi nền tảng có Java Virtual Machine (JVM)
2.3.1.1 Đặc điểm của Java
Đa nền tảng (Platform Independence): Nhờ vào cơ chế “Write
Once, Run Anywhere” (WORA), Java cho phép chương trình chạy trênbất kỳ hệ điều hành nào có JVM Mã nguồn Java được biên dịch thànhbytecode, bytecode này có thể được JVM thực thi trên nhiều hệ điềuhành khác nhau như Windows, MacOS, Linux, và Android
Hướng đối tượng (Object-Oriented): Java hỗ trợ các đặc tính
hướng đối tượng như tính kế thừa, tính đa hình, tính đóng gói và tínhtrừu tượng Điều này giúp tổ chức mã rõ ràng và dễ bảo trì hơn
Bảo mật (Security): Java cung cấp nhiều tính năng bảo mật, như
kiểm tra mã và quản lý quyền truy cập, giúp bảo vệ ứng dụng khỏi cácmối đe dọa tiềm ẩn JVM có khả năng chạy mã trong sandbox (môitrường cách ly) và hạn chế truy cập vào hệ thống máy chủ, tăng cườngbảo mật
Trang 20Quản lý bộ nhớ tự động: Java có cơ chế Garbage Collection tự
động, giúp thu hồi bộ nhớ không sử dụng và giảm thiểu lỗi quản lý bộnhớ
Đa luồng (Multithreading): Java hỗ trợ đa luồng, cho phép thực
thi nhiều tác vụ đồng thời trong cùng một chương trình, nâng cao hiệusuất và giảm thiểu thời gian xử lý
2.3.1.2 Cấu trúc của Java
Java có ba thành phần chính:
○ Java Development Kit (JDK): Bao gồm công cụ biên dịch, gỡ
lỗi và phát triển các chương trình Java JDK bao gồm cả JVM vàcác thư viện chuẩn
○ Java Virtual Machine (JVM): Là máy ảo giúp thực thi mã
bytecode của Java trên nhiều nền tảng khác nhau JVM đóng vaitrò là cầu nối giữa mã bytecode và hệ điều hành
○ Java Runtime Environment (JRE): Bao gồm JVM và các thư
viện cần thiết để chạy các ứng dụng Java JRE là phần mà ngườidùng cuối cần để chạy chương trình, không bao gồm các công cụphát triển như JDK
2.3.1.3 Các thư viện và API phong phú
Java cung cấp một bộ thư viện và API phong phú, cho phép pháttriển nhiều loại ứng dụng khác nhau Các thư viện phổ biến bao gồm:
Trang 21○ Java Standard Library: Cung cấp các lớp và phương thức cơ
bản, hỗ trợ các chức năng như thao tác chuỗi, tính toán, xử lý file,mạng, và quản lý luồng
○ JavaFX: Thư viện giao diện đồ họa để phát triển ứng dụng máy
tính để bàn với giao diện phong phú
○ Java Servlet và JSP: Được sử dụng để phát triển các ứng dụng
web
○ Spring Framework: Một framework mạnh mẽ cho phát triển
ứng dụng doanh nghiệp, đặc biệt là các ứng dụng web và ứngdụng nền tảng đám mây
2.3.1.4 Ứng dụng của Java
Ứng dụng di động: Java là ngôn ngữ chính để phát triển ứng
dụng Android Các ứng dụng Android được viết bằng Java có thể chạytrên hầu hết các thiết bị di động phổ biến
Ứng dụng web: Java thường được sử dụng để xây dựng các ứng
dụng web doanh nghiệp với các công nghệ như Java Servlet, JSP và cácframework như Spring và Hibernate
Ứng dụng doanh nghiệp: Java phù hợp cho các ứng dụng doanh
nghiệp lớn nhờ vào khả năng bảo mật, hiệu năng và sự ổn định Nó được
sử dụng trong các hệ thống quản lý, hệ thống tài chính, và các ứng dụngquy mô lớn
Hệ thống nhúng và IoT: Với tính năng nhẹ và khả năng tối ưu
hóa, Java cũng được sử dụng trong các hệ thống nhúng, thiết bị IoT
Trang 222.3.1.5 Ưu điểm của Java
Khả chuyển cao: Java có thể chạy trên nhiều nền tảng mà không
cần thay đổi mã nguồn
Hiệu suất cao: Java đã cải thiện nhiều về hiệu suất trong những
năm qua, và nhờ JVM tối ưu hóa, các chương trình Java có thể chạy rấtnhanh
Bảo mật tốt: Java cung cấp các tính năng bảo mật mạnh mẽ và
liên tục được cập nhật để đối phó với các lỗ hổng bảo mật
Hỗ trợ mạnh mẽ từ cộng đồng: Với cộng đồng phát triển lớn và
tài liệu phong phú, Java có nhiều thư viện và công cụ hỗ trợ
2.3.1.6 Hạn chế của Java
Tiêu tốn tài nguyên: So với một số ngôn ngữ như C++, Java có
thể tiêu tốn tài nguyên bộ nhớ và thời gian khởi động lâu hơn, đặc biệtđối với các ứng dụng lớn
Không thân thiện với lập trình viên mới bắt đầu: Cú pháp của
Java có thể phức tạp đối với những người mới học lập trình so với cácngôn ngữ như Python
Thời gian thực thi chậm hơn ngôn ngữ biên dịch trực tiếp:
Java phụ thuộc vào JVM, nên thời gian thực thi có thể chậm hơn so vớicác ngôn ngữ như C++
Trang 232.3.2 Môi trường phát triển (Android Studio, Visual Studio Code)
2.3.2.1 Các tính năng chính của Android Studio
Trình biên tập mã nguồn mạnh mẽ: Android Studio hỗ trợ
hoàn thiện mã (code completion), phân tích mã (code analysis), và địnhdạng mã (code formatting) Nó cung cấp các tính năng thông minh nhưnhận diện ngữ nghĩa, giúp lập trình viên dễ dàng viết mã và phát hiệnlỗi
Hỗ trợ Gradle: Android Studio sử dụng hệ thống quản lý dự án
Gradle, cho phép cấu hình dự án một cách linh hoạt Gradle giúp quản
lý thư viện phụ thuộc, tạo ra các bản build khác nhau cho các môitrường và cấu hình khác nhau
Trình giả lập Android: Android Studio tích hợp sẵn trình giả
lập Android, cho phép các nhà phát triển thử nghiệm ứng dụng trênnhiều thiết bị ảo với các kích thước màn hình và phiên bản Androidkhác nhau mà không cần thiết bị vật lý
Thiết kế giao diện người dùng (UI): Công cụ thiết kế giao diện
drag-and-drop giúp lập trình viên dễ dàng xây dựng giao diện ngườidùng Android Studio hỗ trợ nhiều công cụ và thư viện để tạo ra giaodiện đẹp và thân thiện
Hỗ trợ kiểm thử: Android Studio cung cấp các công cụ để viết
và thực hiện các bài kiểm thử tự động cho ứng dụng, bao gồm kiểm thửđơn vị (unit testing) và kiểm thử giao diện (UI testing)
Quản lý tài nguyên: Hỗ trợ quản lý tài nguyên như hình ảnh, âm
thanh, và các tệp XML, giúp tổ chức và tái sử dụng tài nguyên dễ dàng
Trang 24Tích hợp với Firebase: Android Studio cho phép tích hợp dễ
dàng với Firebase, giúp thêm các dịch vụ như phân tích, xác thực, lưutrữ đám mây, và nhiều dịch vụ khác vào ứng dụng
2.3.2.2 Yêu cầu hệ thống
Để cài đặt và sử dụng Android Studio, máy tính của bạn cần đápứng một số yêu cầu tối thiểu, bao gồm:
○ Hệ điều hành: Windows, macOS, hoặc Linux.
○ Bộ xử lý: Tối thiểu 64-bit.
○ Bộ nhớ: Ít nhất 4 GB RAM (8 GB trở lên được khuyến nghị).
○ Không gian lưu trữ: Tối thiểu 2 GB không gian lưu trữ miễn phí
(có thể yêu cầu thêm khi cài đặt SDK và các công cụ khác)
2.3.2.3 Cách sử dụng Android Studio
Cài đặt: Tải về Android Studio từ trang web chính thức và làm
theo hướng dẫn cài đặt
Tạo dự án mới: Bắt đầu bằng việc tạo một dự án mới, chọn loại
ứng dụng và các cài đặt ban đầu
Phát triển và kiểm thử: Viết mã, thiết kế giao diện, chạy ứng
dụng trên trình giả lập hoặc thiết bị thật để kiểm thử
Xây dựng và phát hành: Khi ứng dụng hoàn thiện, bạn có thể
tạo file APK hoặc App Bundle để phát hành trên Google Play hoặc cácnền tảng phân phối khác
Trang 252.3.2.4 Lợi ích của Android Studio
Được hỗ trợ chính thức: Là IDE chính thức của Google cho
phát triển Android, Android Studio luôn được cập nhật và cải tiến liêntục với các tính năng mới và sửa lỗi
Tính năng phong phú: Tích hợp nhiều công cụ và tính năng
mạnh mẽ giúp phát triển ứng dụng hiệu quả và dễ dàng hơn
Cộng đồng lớn: Với một cộng đồng phát triển rộng lớn, có nhiều
tài liệu, hướng dẫn và ví dụ sẵn có, giúp lập trình viên giải quyết vấn đềnhanh chóng
2.3.2.5 Hạn chế của Android Studio
Yêu cầu hệ thống cao: Android Studio có thể tiêu tốn nhiều tài
nguyên hệ thống, điều này có thể gây khó khăn cho những máy tính cócấu hình thấp
Thời gian khởi động lâu: Do tính năng phong phú, Android
Studio có thể khởi động chậm hơn so với một số IDE khác
Học tập ban đầu: Đối với những lập trình viên mới bắt đầu, giao
diện và tính năng của Android Studio có thể gây nhầm lẫn
2.3.3 Kiến trúc ứng dụng (MVC/MVVM)
Trong quá trình phát triển ứng dụng "Quản lý lịch sinh hoạt và làmviệc", nhóm chúng tôi đã áp dụng mô hình kiến trúc Model-View-ViewModel(MVVM) Mô hình MVVM giúp tách biệt rõ ràng các thành phần của ứngdụng, từ đó cải thiện khả năng bảo trì, mở rộng và kiểm thử Dưới đây là mô tả
Trang 26chi tiết về các thành phần trong mô hình MVVM được sử dụng trong ứngdụng:
Model:
Model đại diện cho dữ liệu và các quy tắc nghiệp vụ của ứngdụng Trong ứng dụng này, Model bao gồm các lớp quản lý dữ liệu nhưActivity, TrackedActivity và Rating Các lớp này sẽ thực hiện các thaotác như thêm, sửa, xóa và truy vấn dữ liệu từ cơ sở dữ liệu
View:
View là giao diện người dùng, nơi người dùng tương tác với ứngdụng Trong ứng dụng, View được xây dựng bằng các tệp XML trongthư mục res/layout, và các lớp Activity hoặc Fragment sẽ chịu tráchnhiệm hiển thị dữ liệu từ Model lên giao diện
ViewModel:
ViewModel giữ vai trò trung gian giữa Model và View, giúpquản lý dữ liệu cho View ViewModel sẽ cung cấp dữ liệu từ Model choView và nhận các sự kiện từ View để cập nhật Model Điều này giúpView không cần phải biết chi tiết về Model, và ngược lại, Model khôngcần phải biết về View
2.3.4 SQLite cho lưu trữ dữ liệu
Tính nhẹ và dễ sử dụng
SQLite là một giải pháp lưu trữ dữ liệu lý tưởng cho các ứng dụng diđộng nhờ vào kích thước nhỏ gọn và việc tích hợp dễ dàng Không cần phải
Trang 27thiết lập máy chủ hay cấu hình phức tạp, SQLite cho phép chúng tôi quản lý cơ
sở dữ liệu một cách nhanh chóng và hiệu quả
Lưu trữ dữ liệu offline
Với SQLite, người dùng có thể truy cập dữ liệu ngay cả khi không cókết nối internet Điều này là rất quan trọng cho ứng dụng "Quản lý lịch sinhhoạt và làm việc", nơi mà người dùng thường cần ghi chú và theo dõi các hoạtđộng mà không phải lúc nào cũng có internet
Tính năng và hiệu suất
SQLite hỗ trợ nhiều tính năng của SQL, bao gồm các phép toán nhưINSERT, UPDATE, DELETE, và SELECT, giúp chúng tôi thực hiện các thaotác trên dữ liệu một cách linh hoạt Hơn nữa, SQLite có hiệu suất tốt cho cácthao tác đọc và ghi, đặc biệt là trong môi trường di động
Cấu trúc cơ sở dữ liệu
Cơ sở dữ liệu của ứng dụng bao gồm ba bảng chính: Activities, Ratings,
và Tracked Activities Mỗi bảng được thiết kế để lưu trữ các thông tin cụ thểliên quan đến hoạt động, đánh giá và các hoạt động theo dõi của người dùng
Tương tác với cơ sở dữ liệu
Các tương tác với cơ sở dữ liệu được thực hiện thông qua lớp Database,nơi chứa các phương thức để thêm, sửa, xóa và truy vấn dữ liệu Điều này giúptách biệt logic truy cập dữ liệu khỏi phần giao diện người dùng và cải thiện khảnăng bảo trì
2.4 Lý thuyết về UX/UI cho ứng dụng di động
2.4.1 UX (Trải nghiệm người dùng)
Trang 28UX đề cập đến tất cả các khía cạnh của trải nghiệm người dùng khitương tác với sản phẩm hoặc dịch vụ Đó là cảm giác, cảm xúc, và sự hài lòng
mà người dùng trải qua trong suốt quá trình sử dụng ứng dụng
Yếu tố chính của UX:
○ Nghiên cứu người dùng: Hiểu nhu cầu, mong muốn và hành vi của
người dùng thông qua các phương pháp như khảo sát, phỏng vấn và thửnghiệm người dùng
○ Thiết kế thông tin: Cấu trúc và tổ chức thông tin trong ứng dụng một
cách hợp lý và dễ dàng cho người dùng truy cập Sử dụng các mô hìnhnhư bản đồ trang (site map) và wireframe để phác thảo cấu trúc ứngdụng
○ Dòng trải nghiệm: Thiết kế hành trình của người dùng, từ lúc họ bắt
đầu sử dụng ứng dụng cho đến khi họ hoàn thành một mục tiêu cụ thể.Cần đảm bảo rằng các bước trong hành trình này là mượt mà và dễ hiểu
○ Kiểm thử người dùng: Tiến hành các bài kiểm thử để đánh giá cách
người dùng tương tác với ứng dụng Nhận phản hồi và điều chỉnh thiết
kế dựa trên kết quả kiểm thử
2.4.2 UI (Giao diện người dùng)
UI là phần trực quan của ứng dụng mà người dùng tương tác Nó baogồm các yếu tố như bố cục, màu sắc, font chữ, và các thành phần giao diện nhưnút, thanh điều hướng và biểu tượng
Yếu tố chính của UI:
Trang 29○ Bố cục (Lay)out: Thiết kế bố cục hợp lý, rõ ràng và dễ sử dụng, giúp
người dùng dễ dàng tìm thấy thông tin và thao tác với ứng dụng Bố cụcnên tối ưu hóa cho kích thước màn hình của thiết bị di động
○ Màu sắc: Lựa chọn bảng màu phù hợp với thương hiệu và tạo cảm xúc
tích cực cho người dùng Màu sắc cũng cần hỗ trợ khả năng đọc và phânbiệt giữa các thành phần trong giao diện
○ Font chữ: Sử dụng font chữ dễ đọc và phù hợp với nội dung Cần chú ý
đến kích thước và khoảng cách giữa các ký tự để cải thiện khả năng đọctrên màn hình nhỏ
○ Các thành phần giao diện: Thiết kế các nút, thanh điều hướng và biểu
tượng một cách rõ ràng và dễ nhận diện Các thành phần này cần tươngthích với các nguyên tắc thiết kế của nền tảng (Android, iOS)
2.4.3 Nguyên tắc thiết kế UX/UI
Tính đơn giản (Simplicity): Giữ cho giao diện và trải nghiệm người
dùng đơn giản, tránh các yếu tố thừa thãi có thể gây rối cho người dùng
Tính nhất quán (Consistency): Sử dụng các yếu tố thiết kế đồng nhất
trong toàn bộ ứng dụng để người dùng dễ dàng làm quen và sử dụng
Tính khả dụng (Usability): Đảm bảo rằng ứng dụng dễ sử dụng, giúp
người dùng hoàn thành mục tiêu một cách nhanh chóng và hiệu quả
Tính khả thi (Feasibility): Thiết kế phải có thể thực hiện được trong
phạm vi kỹ thuật và công nghệ hiện có
Trang 30Phản hồi (Feedback): Cung cấp phản hồi rõ ràng cho người dùng về
hành động của họ, chẳng hạn như thông báo khi một thao tác đã thành cônghay thất bại
2.4.4 Xu hướng thiết kế UX/UI hiện nay
Thiết kế tối giản (Minimalism): Tập trung vào nội dung chính và loại
bỏ các yếu tố không cần thiết, giúp người dùng dễ dàng tiếp cận thông tin
Thiết kế thân thiện với cảm ứng (Touch-friendly Design): Tối ưu
hóa giao diện cho các thao tác cảm ứng, như cử chỉ vuốt, chạm và nhấn lâu
Thiết kế đáp ứng (Responsive Design): Đảm bảo ứng dụng hoạt động
tốt trên nhiều kích thước màn hình khác nhau và các thiết bị di động
Thiết kế theo xu hướng dark mode: Dark mode đang trở thành một xu
hướng phổ biến, giúp giảm mỏi mắt cho người dùng và tiết kiệm pin cho cácthiết bị màn hình OLED
III PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 3.1 Phân tích yêu cầu
3.1.1 Yêu cầu chức năng
Quản lý lịch và sự kiện:
○ Thêm, chỉnh sửa và xóa sự kiện: Người dùng có thể dễ dàng thêm,
chỉnh sửa hoặc xóa các sự kiện trong lịch của họ
○ Tạo lịch đa dạng: Cho phép người dùng tạo nhiều lịch khác nhau (ví
dụ: lịch cá nhân, lịch công việc) để phân loại sự kiện
Trang 31○ Nhắc nhở và thông báo: Cung cấp chức năng nhắc nhở cho người
dùng về các sự kiện sắp diễn ra thông qua thông báo đẩy hoặc âm thanh
○ Xem lịch theo nhiều chế độ: Hiển thị lịch theo dạng ngày, tuần, tháng,
giúp người dùng dễ dàng theo dõi và lập kế hoạch
Quản lý công việc và nhiệm vụ:
○ Tạo và quản lý công việc: Người dùng có thể thêm, chỉnh sửa và xóa
các nhiệm vụ hoặc công việc cần thực hiện
○ Phân loại công việc: Cho phép người dùng phân loại công việc theo dự
án, ưu tiên hoặc tình trạng (chưa hoàn thành, đang thực hiện, đã hoànthành)
○ Theo dõi tiến độ: Cung cấp chức năng theo dõi tiến độ của các công
việc đã giao và hoàn thành
○ Ghi chú và bình luận: Cho phép người dùng thêm ghi chú hoặc bình
luận vào các nhiệm vụ để có thể lưu lại thông tin quan trọng
Tích hợp và đồng bộ hóa:
○ Đồng bộ hóa với lịch khác: Cung cấp khả năng đồng bộ hóa với các
dịch vụ lịch khác như Google Calendar, Outlook Calendar để ngườidùng có thể dễ dàng truy cập thông tin lịch của họ
○ Chia sẻ lịch và công việc: Cho phép người dùng chia sẻ lịch hoặc
nhiệm vụ với người khác để cùng nhau làm việc hiệu quả hơn
Cá nhân hóa và tùy chỉnh:
Trang 32○ Tùy chỉnh giao diện: Người dùng có thể thay đổi giao diện của ứng
dụng, bao gồm chủ đề màu sắc, kiểu chữ và bố cục
○ Tùy chỉnh nhắc nhở: Cho phép người dùng tùy chỉnh cách và thời gian
nhận thông báo nhắc nhở cho các sự kiện hoặc công việc
Báo cáo và phân tích:
○ Thống kê sử dụng: Cung cấp báo cáo về số lượng sự kiện, công việc đã
hoàn thành, và thời gian làm việc để người dùng có thể theo dõi hiệusuất cá nhân
○ Đánh giá và phản hồi: Cho phép người dùng đánh giá hiệu quả của các
công việc và sự kiện, từ đó có thể rút ra kinh nghiệm cho các kế hoạchtương lai
Bảo mật và quyền riêng tư:
○ Đăng nhập và bảo mật: Cung cấp chức năng đăng nhập để bảo vệ dữ
liệu cá nhân của người dùng
○ Quản lý quyền truy cập: Cho phép người dùng quyết định ai có thể
xem hoặc chỉnh sửa thông tin lịch và công việc của họ
Hỗ trợ và hướng dẫn:
○ Hỗ trợ người dùng: Cung cấp tài liệu hướng dẫn sử dụng và các câu
hỏi thường gặp để người dùng dễ dàng tìm hiểu cách sử dụng ứng dụng
○ Chức năng tìm kiếm: Cho phép người dùng tìm kiếm nhanh chóng các
sự kiện hoặc công việc trong ứng dụng