Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh công nghệ thông tin và thiết bị thông minh phát triển nhanh chóng, các ứng dụng di động phục vụ nhu cầu cá nhân đóng vai trò thiết thực trong việc hỗ trợ học tập và giải trí. Việc đọc sách theo phương thức truyền thống thông qua việc mua sách trực tiếp tại các hiệu sách hoặc đặt mua qua các kênh bán lẻ trực tuyến chưa hoàn thiện còn bộc lộ nhiều hạn chế:
- Người đọc phải trực tiếp đến cửa hàng, tốn thời gian di chuyển và chờ đợi nhưng có thể gặp tình trạng hết sách hoặc bỏ lỡ các đầu sách mới ra mắt.
- Các đơn vị phát hành và quản lý tốn nhiều nhân lực cho việc kiểm kê kho bãi, theo dõi doanh thu thủ công và thiếu các công cụ tương tác trực tiếp với độc giả.
- Thiếu các nền tảng kỹ thuật số cho phép người dùng cá nhân hóa trải nghiệm đọc, lưu trữ tài liệu cá nhân, tải về đọc khi không có mạng Internet và thảo luận tương tác trong cộng đồng độc giả.
Nhằm giải quyết các vấn đề trên, đề tài "Thiết Kế Ứng Dụng Đọc Sách" (tên ứng dụng: Wisdom / The Wisdom) được nhóm sinh viên thuộc Khoa Công nghệ Thông tin, Trường Đại học Kinh tế - Kỹ thuật Công nghiệp thực hiện trong khuôn khổ học phần "Thực Hành Lập Trình Công Nghệ Đa Nền Tảng Cho Ứng Dụng Di Động" (Mã lớp học phần: 010100185518), dưới sự hướng dẫn của Th.S Trần Thị Huệ.
Mục tiêu và nhiệm vụ nghiên cứu cụ thể của đề tài bao gồm:
- Xây dựng ứng dụng di động hoàn chỉnh hỗ trợ việc đọc sách điện tử trên nền tảng Android mang tên "Wisdom".
- Áp dụng phương pháp phân tích thiết kế hệ thống hướng cấu trúc và xây dựng mô hình cơ sở dữ liệu tương ứng.
- Hệ thống hóa và vận dụng kỹ năng lập trình hướng đối tượng bằng ngôn ngữ Java trên môi trường Android Studio kết hợp hệ thống cơ sở dữ liệu đám mây Firebase.
- Triển khai các tính năng phục vụ độc giả: đọc file PDF, đánh dấu trang, lưu lịch sử, quản lý thư viện cá nhân, tải sách để đọc ngoại tuyến (offline), bình luận đánh giá và cho phép người dùng tự đăng tải tài liệu.
- Xây dựng phân hệ quản trị dành cho Admin nhằm kiểm duyệt nội dung, quản lý danh mục và vận hành hệ thống.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Quy trình phân tích, thiết kế giao diện và phát triển phần mềm ứng dụng đọc sách điện tử trên thiết bị di động.
- Phạm vi không gian và đối tượng thụ hưởng: Phục vụ độc giả có nhu cầu đọc sách điện tử và quản trị viên quản lý kho tài liệu số.
- Phạm vi thời gian: Dự án được triển khai trong thời gian 9 tuần (từ ngày 16/09/2023 đến ngày 11/11/2024 theo kế hoạch phân bổ của nhóm).
Cơ sở lý thuyết và phương pháp
Đề tài sử dụng phương pháp phân tích và thiết kế hệ thống hướng cấu trúc để mô hình hóa các luồng nghiệp vụ và cấu trúc dữ liệu của ứng dụng di động:
- Mô hình hóa chức năng và luồng dữ liệu: Sử dụng sơ đồ phân cấp chức năng và sơ đồ luồng dữ liệu (Data Flow Diagram - DFD) bao gồm DFD mức đỉnh toàn hệ thống, DFD mức đỉnh phân hệ Admin và DFD mức đỉnh phân hệ Người dùng (User).
- Mô hình hóa dữ liệu quan hệ (Database Diagram): Thiết kế lược đồ thực thể và các mối quan hệ logic giữa bảng người dùng, sách, danh mục, thông báo và danh sách yêu thích.
- Phương pháp đánh giá tính khả thi dự án: Phân tích trên 3 khía cạnh gồm tính khả thi về kinh tế (tối ưu chi phí xây dựng, vận hành), tính khả thi về kỹ thuật (khả năng tương thích nền tảng, công nghệ lưu trữ) và tính khả thi về mặt tổ chức (phân công vai trò, tiến độ thực hiện).
- Công cụ và nền tảng kỹ thuật:
- Môi trường phát triển tích hợp (IDE): Android Studio, hệ thống xây dựng Gradle, ngôn ngữ lập trình Java.
- Thiết kế giao diện và tạo mẫu (UI/UX Prototype): Công cụ Figma.
- Hạ tầng Backend và Lưu trữ đám mây: Dịch vụ Firebase bao gồm Firebase Authentication, Firebase Firestore / Realtime Database, Firebase Cloud Storage và Firebase Cloud Functions.
Thiết kế và triển khai
Kiến trúc phần mềm và công nghệ triển khai
Ứng dụng "Wisdom" được xây dựng dưới dạng ứng dụng di động Android thuần (Native Android) với cấu trúc phân lớp rõ ràng dựa trên các thành phần tiêu chuẩn của Android SDK:
- Giao diện người dùng (UI Components): Sử dụng các tệp bố cục XML với các ViewGroup chuyên biệt gồm
LinearLayout, RelativeLayout, ConstraintLayout (tối ưu hóa hiệu năng giao diện phức tạp) và FrameLayout.
- Thành phần hiển thị và điều hướng:
RecyclerView kết hợp CardView để hiển thị danh sách sách dạng lưới và danh sách cuộn linh hoạt.
Bottom Navigation và Navigation Drawer phục vụ chuyển đổi nhanh giữa các phân hệ: Trang chủ, Thư viện, Thông báo, Tài khoản cá nhân.
Floating Action Button (FAB) phục vụ thao tác nhanh như thêm sách mới.
- Kiến trúc dữ liệu và xử lý nền: Sử dụng
Data Binding, ViewModel và LiveData để quản lý trạng thái dữ liệu giao diện, hạn chế xung đột vòng đời của Activity/Fragment.
- Thư viện tích hợp:
Glide/Picasso hỗ trợ tải và hiển thị ảnh bìa từ đám mây; Retrofit kết nối và đồng bộ API; công cụ đọc file chuyên dụng hỗ trợ hiển thị tài liệu định dạng PDF với thanh cuộn dọc.
Thiết kế cơ sở dữ liệu
Cơ sở dữ liệu của ứng dụng được chuẩn hóa thành 5 bảng thực thể chính với các thuộc tính và mối quan hệ ràng buộc:
| Tên thực thể (Bảng) |
Thuộc tính chính |
Mô tả chi tiết |
Khóa ngoại / Quan hệ |
| User |
uid, email, name, profile image, timestamp, usertype |
Quản lý thông tin định danh, email đăng ký, ảnh đại diện, thời gian tạo và loại tài khoản (user hoặc admin). |
Khóa chính: uid |
| Books |
id, title, description, URL, imageThump, LastReadPage, dowloadCount |
Lưu thông tin chi tiết của sách: tiêu đề, mô tả tóm tắt, đường dẫn tệp sách (URL), ảnh bìa, vị trí trang đọc gần nhất và số lượt tải. |
Thuộc về một Categories |
| Categories |
id, category, timestamp |
Quản lý phân loại thể loại sách (tiểu thuyết, khoa học, phi hư cấu...) và thời gian khởi tạo danh mục. |
Khóa chính: id (1 danh mục có nhiều sách) |
| Notification |
id, title, message, bookid, uid, timestamp |
Lưu vết thông báo đẩy gửi tới người dùng về sách mới, khuyến mãi hoặc cập nhật hệ thống. |
bookid liên kết bảng Books, uid liên kết bảng User |
| Favorites |
BookId, timestampe |
Quản lý danh sách các cuốn sách được người dùng đánh dấu yêu thích vào thư viện riêng. |
BookId liên kết bảng Books |
Quy trình kiểm thử và vận hành
Quy trình phát triển tích hợp công cụ kiểm thử tự động JUnit và Espresso có sẵn trong Android Studio nhằm kiểm tra tính đúng đắn của logic xử lý và luồng tương tác UI. Ứng dụng được chạy thử nghiệm trên trình giả lập Android Virtual Device (AVD) kết hợp thiết bị vật lý nhằm kiểm tra:
- Khả năng phản hồi của giao diện trên các mật độ điểm ảnh và kích thước màn hình khác nhau.
- Tính chính xác của quá trình xác thực người dùng qua Firebase Authentication.
- Tính toàn vẹn của tệp PDF khi tải xuống thiết bị phục vụ tính năng đọc ngoại tuyến.
- Cơ chế đồng bộ dữ liệu thời gian thực khi độc giả gửi bình luận hoặc quản trị viên chỉnh sửa danh mục sách.
Nội dung chính theo từng chương
Chương 1: Khảo sát thực trạng và xác lập dự án
Chương 1 tập trung khảo sát các vấn đề thực tiễn của quy trình tiếp cận sách truyền thống và các giải pháp bán sách trực tuyến hiện hành. Qua khảo sát, nhóm tác giả chỉ ra các điểm nghẽn chính như việc khách hàng khó nắm bắt tình trạng tồn kho của sách, tốn thời gian xếp hàng tại các cửa hàng, cũng như sự tốn kém nhân lực của các nhà xuất bản trong việc quản lý và thống kê doanh thu thủ công.
Trên cơ sở đó, báo cáo tiến hành phân tích tính khả thi của dự án:
- Tính khả thi về kinh tế: Chi phí đầu tư phần mềm thấp, tận dụng các dịch vụ đám mây miễn phí và mã nguồn mở, giúp tiết kiệm chi phí vận hành cho nhà quản lý.
- Tính khả thi về kỹ thuật: Ứng dụng được xây dựng trên nền tảng Android phổ biến, công nghệ Firebase đảm bảo khả năng mở rộng lưu trữ hàng ngàn đầu sách và đáp ứng băng thông cho nhiều người dùng truy cập đồng thời.
- Tính khả thi về tổ chức: Quy trình phân công nhiệm vụ rõ ràng trong nhóm 4 sinh viên trong thời gian 9 tuần thực hiện dự án.
Bảng phân công nhiệm vụ các thành viên trong dự án:
| Họ và tên sinh viên |
Mã sinh viên |
Nhiệm vụ đảm nhiệm |
| Vũ Hoàng Việt |
21103100443 |
Viết báo cáo, hỗ trợ thiết kế sơ đồ hệ thống, đóng góp ý tưởng, lập trình các chức năng phụ, sửa lỗi và quản lý tiến độ chung. |
| Kiều Xuân Khánh |
21103100436 |
Lập trình các chức năng chính và giao diện ứng dụng, thiết kế và xây dựng cơ sở dữ liệu Firebase, bảo trì và cập nhật tính năng. |
| Nguyễn Thị Hòa |
21103100041 |
Thiết kế toàn bộ giao diện và luồng tương tác trên Figma, lên ý tưởng chủ đề giao diện, tham gia chỉnh sửa mã nguồn giao diện Android theo thiết kế. |
| Bùi Tuấn Anh |
21103100261 |
Viết báo cáo, thiết kế sơ đồ hệ thống, kiểm thử các tính năng ứng dụng, hỗ trợ lập trình các chức năng phụ và sửa lỗi. |
Chương 2: Phân tích và thiết kế hệ thống
Chương 2 trình bày chi tiết việc phân tích yêu cầu nghiệp vụ và cấu trúc phân quyền của hệ thống ứng dụng đọc sách. Hệ thống phân chia thành hai nhóm tác nhân với các quyền hạn cụ thể:
- Phân hệ Người dùng (User):
- Đăng ký và đăng nhập tài khoản bằng email/mật khẩu hoặc tài khoản liên kết qua Firebase Authentication.
- Tìm kiếm và khám phá sách theo tiêu đề, tác giả hoặc danh mục thể loại.
- Đọc nội dung sách định dạng PDF, hỗ trợ thao tác cuộn trượt mượt mà.
- Quản lý thư viện cá nhân: theo dõi sách đang đọc, lưu sách yêu thích, xem lịch sử đọc.
- Tải tệp sách về bộ nhớ máy để phục vụ việc đọc khi không có kết nối Internet (chế độ offline).
- Đăng tải sách mới hoặc tài liệu tự sáng tác lên hệ thống; tham gia đánh giá và gửi bình luận dưới từng đầu sách.
- Phân hệ Quản trị viên (Admin):
- Sở hữu toàn bộ quyền hạn của người dùng thông thường.
- Quản lý kho nội dung: thêm mới, cập nhật thông tin, xóa các đầu sách vi phạm hoặc không phù hợp.
- Quản lý hệ thống phân loại: tạo mới hoặc xóa bỏ các danh mục sách.
- Quản lý người dùng, theo dõi hoạt động đăng ký, đăng nhập và bảo đảm an toàn hệ thống.
Nội dung chương cũng mô hình hóa các chức năng này qua hệ thống sơ đồ luồng dữ liệu (DFD mức đỉnh toàn hệ thống, DFD phân hệ Admin và DFD phân hệ User), thể hiện rõ luồng trao đổi thông tin giữa các tác nhân và các bảng lưu trữ dữ liệu Firebase.
Chương 3: Xây dựng phần mềm cho App đọc sách
Chương 3 trình bày chi tiết các bước hiện thực hóa ứng dụng từ bản vẽ thiết kế đến mã nguồn hoàn chỉnh:
- Thiết kế giao diện trên Figma: Nhóm thiết kế hệ thống màn hình trực quan và tạo nguyên mẫu tương tác (prototype) bao gồm 16 giao diện chính: Đăng nhập/Đăng ký, Trang chủ (dạng danh sách cuộn), Thông báo, Thể loại sách, Tài khoản cá nhân (Admin/User), Đổi mật khẩu, Xóa tài khoản/Đăng xuất, Thêm sách mới, Sửa thông tin sách, Thêm thể loại của Admin, Chi tiết thông tin sách, Bình luận, và Danh mục sách yêu thích.
- Triển khai giao diện và chức năng trên Android Studio:
- Màn hình Trang chủ: Tích hợp thanh tiêu đề, thanh tìm kiếm thông minh, danh mục phân loại ("Sách Mới", "Sách Nổi Bật", "Sách Đọc Nhiều Nhất") và các khối hiển thị sách có nút "Đọc Ngay".
- Màn hình Thông tin sách: Hiển thị đầy đủ bìa sách, tên tác giả, thể loại, ngày đăng, dung lượng tệp, số lượt đọc, lượt tải, phần tóm tắt nội dung cùng 3 nút hành động: "Bắt đầu đọc", "Tải xuống" và "Yêu thích".
- Màn hình Đọc sách: Hỗ trợ hiển thị nội dung tệp PDF với thanh trượt cuộn dọc, ghi nhớ trang đọc cuối cùng (
LastReadPage).
- Màn hình Tài khoản: Quản lý thông tin cá nhân, chuyển đổi chế độ đọc sáng/tối (giao diện đen trắng), đổi mật khẩu và quản lý danh sách yêu thích.
- Hướng dẫn thao tác sử dụng: Trình bày chi tiết từng bước thao tác thực tế của người dùng: đăng ký tài khoản mới, đăng nhập hệ thống, tìm kiếm sách theo từ khóa/thể loại và mở đọc trực tiếp trên ứng dụng.
Kết quả và đóng góp
Kết quả đạt được
Đề tài đã hoàn thành các mục tiêu nghiên cứu và kỹ thuật đề ra, cụ thể:
- Hoàn thiện tài liệu thuyết minh phân tích và thiết kế hệ thống phần mềm hoàn chỉnh (gồm đầy đủ sơ đồ chức năng, DFD các cấp và mô hình thực thể dữ liệu quan hệ).
- Xây dựng thành công ứng dụng di động "Wisdom" trên nền tảng Android, cài đặt và chạy thử nghiệm ổn định trên các thiết bị di động.
- Triển khai đầy đủ các luồng chức năng thực tế:
- Hệ thống xác thực và quản lý phiên đăng nhập an toàn thông qua Firebase Authentication.
- Chức năng đọc tệp sách PDF mượt mà với thanh cuộn dọc và khả năng đánh dấu vị trí trang đọc.
- Chức năng lưu trữ ngoại tuyến giúp người dùng tải sách và đọc khi không có mạng Internet.
- Hệ thống tương tác cộng đồng thông qua bình luận thời gian thực và đánh dấu sách yêu thích.
- Phân hệ quản trị nội dung cho phép Admin phân loại danh mục và kiểm soát dữ liệu sách toàn diện.
Đóng góp của đề tài
- Cung cấp một giải pháp phần mềm mã nguồn mở ứng dụng công nghệ điện toán đám mây Firebase (BaaS) kết hợp Android Native, giúp đơn giản hóa kiến trúc backend và tối ưu chi phí hạ tầng máy chủ cho các hệ sinh thái thư viện số quy mô vừa và nhỏ.
- Chuẩn hóa quy trình phát triển ứng dụng di động từ khâu khảo sát thực trạng, thiết kế UI/UX trên Figma đến hiện thực hóa mã nguồn trên Android Studio bằng ngôn ngữ Java.
Hạn chế và hướng nghiên cứu tiếp
- Hạn chế:
- Ứng dụng mới chỉ hỗ trợ đọc trực tiếp định dạng tài liệu PDF, chưa tích hợp các định dạng sách điện tử phổ biến khác như ePub hoặc mobi.
- Các tùy chọn cá nhân hóa sâu trong quá trình đọc (như thay đổi kiểu phông chữ, khoảng cách dòng, độ sáng màn hình tự động) chưa được tách thành các module nâng cao.
- Thời gian thực hiện dự án có hạn (9 tuần) nên phạm vi thử nghiệm thực tế chủ yếu dừng lại trên môi trường giả lập và một số thiết bị Android cá nhân của nhóm.
- Hướng phát triển:
- Mở rộng hỗ trợ đa định dạng tài liệu, đặc biệt là tệp ePub nhằm tối ưu khả năng căn chỉnh văn bản (reflowable text) trên màn hình nhỏ.
- Ứng dụng Firebase Cloud Functions để phát triển hệ thống thông báo đẩy thông minh và gợi ý sách tự động dựa trên lịch sử và sở thích đọc của từng cá nhân.
- Hoàn thiện tính năng tùy biến sâu giao diện đọc sách (chế độ ban đêm chuyên sâu, tùy chỉnh font chữ, màu nền).
Giá trị tham khảo
Báo cáo đề tài là tài liệu tham khảo hữu ích cho:
- Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Cung cấp tài liệu mẫu về cấu trúc một báo cáo bài tập lớn / đồ án môn học lập trình di động; minh họa chi tiết cách áp dụng quy trình phân tích DFD và mô hình hóa dữ liệu cho ứng dụng Android.
- Lập trình viên mới tiếp cận Android và Firebase: Tham khảo phương pháp tích hợp các dịch vụ Firebase (Auth, Firestore, Cloud Storage) vào ứng dụng Java Android Studio; cách tổ chức cấu trúc thư mục dự án (
app/src/main/res/layout, gradle, manifests) và sử dụng các thư viện phổ biến như Glide, Picasso, Retrofit.
- Người thiết kế UI/UX di động: Cung cấp quy trình thiết kế và chuyển đổi các màn hình mẫu từ công cụ Figma sang các tệp bố cục XML chuẩn Material Design trên Android.
Câu hỏi thường gặp
1. Ứng dụng "Wisdom" giải quyết những hạn chế nào của phương thức đọc và mua sách truyền thống?
Ứng dụng giúp loại bỏ việc phải di chuyển trực tiếp đến cửa hàng, khắc phục tình trạng hết sách hoặc bỏ lỡ sách mới nhờ hệ thống thông báo tức thời. Đồng thời, ứng dụng cho phép người dùng đọc sách mọi lúc mọi nơi trên điện thoại, hỗ trợ tải về đọc khi không có mạng Internet (offline) và tạo không gian tương tác, bình luận giữa các độc giả.
2. Cơ sở dữ liệu của ứng dụng gồm những bảng thực thể nào và liên kết ra sao?
Cơ sở dữ liệu gồm 5 thực thể chính: User (lưu thông tin người dùng và phân quyền usertype), Books (lưu thông tin sách, URL tệp và liên kết với một Categories), Categories (danh mục thể loại sách), Notification (thông báo hệ thống, liên kết khóa ngoại với bookid và uid), và Favorites (danh sách sách yêu thích, liên kết khóa ngoại với BookId).
3. Phân hệ Admin có những quyền hạn đặc thù nào so với tài khoản người dùng thông thường?
Bên cạnh các quyền hạn đọc và tìm kiếm như User, Admin có toàn quyền quản trị nội dung hệ thống bao gồm: thêm và xóa các danh mục thể loại sách (Categories), chỉnh sửa thông tin hoặc xóa bỏ các cuốn sách không phù hợp khỏi cơ sở dữ liệu, đồng thời giám sát hoạt động của người dùng trên toàn hệ thống.
4. Ứng dụng sử dụng những công nghệ và thư viện chính nào trong quá trình phát triển?
Hệ thống sử dụng Android Studio (ngôn ngữ Java) làm môi trường phát triển chính, Figma để thiết kế giao diện, kết hợp nền tảng đám mây Firebase (gồm Firebase Authentication để xác thực tài khoản, Firestore/Realtime Database để lưu trữ dữ liệu, Cloud Storage để chứa tệp PDF và ảnh bìa). Về mặt giao diện và kết nối, ứng dụng sử dụng Material Design Components, RecyclerView, ConstraintLayout, Data Binding, ViewModel, LiveData, cùng các thư viện Glide/Picasso và Retrofit.
5. Nhóm sinh viên đã tổ chức thực hiện và phân công công việc như thế nào?
Dự án được thực hiện bởi nhóm 4 sinh viên trong thời gian 9 tuần: Kiều Xuân Khánh đảm nhiệm lập trình các chức năng chính, giao diện và cơ sở dữ liệu Firebase; Nguyễn Thị Hòa phụ trách thiết kế toàn bộ UI/UX trên Figma và hỗ trợ code giao diện; Vũ Hoàng Việt và Bùi Tuấn Anh chịu trách nhiệm viết báo cáo, thiết kế sơ đồ hệ thống, kiểm thử tính năng và lập trình các chức năng phụ.
Kết luận
Đề tài "Thiết Kế Ứng Dụng Đọc Sách" đã hoàn thành trọn vẹn mục tiêu xây dựng ứng dụng di động "Wisdom" hỗ trợ đọc và quản lý sách điện tử trên nền tảng Android. Bằng việc kết hợp hiệu quả giữa công cụ thiết kế Figma, ngôn ngữ lập trình Java trong Android Studio và hạ tầng đám mây Firebase, nhóm tác giả đã triển khai thành công một giải pháp phần mềm có giao diện thân thiện và đầy đủ các tính năng tương tác thiết thực. Báo cáo đồ án phản ánh quy trình phát triển phần mềm chặt chẽ từ khảo sát, phân tích DFD, thiết kế cơ sở dữ liệu đến hiện thực hóa mã nguồn, mang lại giá trị tham khảo kỹ thuật rõ ràng cho sinh viên chuyên ngành Công nghệ thông tin.