ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
ĐỒ ÁN 1
XÂY DỰNG ỨNG DỤNG EBOOK
GIẢNG VIÊN HƯỚNG DẪN
ThS. Thái Thụy Hàn Uyển
Sinh viên thực hiện:
Lữ Đình Long - 20521565
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
ĐỒ ÁN 1
XÂY DỰNG ỨNG DỤNG EBOOK
GIẢNG VIÊN HƯỚNG DẪN
ThS. Thái Thụy Hàn Uyển
Sinh viên thực hiện:
Lữ Đình Long - 20521565
LỜI CẢM ƠN
Lời đầu tiên, em xin gửi lời cảm ơn chân thành và sự tri ân sâu sắc đến cơ đã hướng
dẫn, tạo điều kiện cho em hồn thành đồ án mơn Đồ án 1.
Trong vịng 11 tuần, qua các buổi học, nhờ sự chỉ dẫn nhiệt tình của cô, em đã tiếp thu
được những kiến thức quan trọng, bổ ích cùng những góp ý chân thành để có thể làm
được một đồ án hoàn chỉnh. Trong khoảng thời gian thực hiện đồ án, em đã học hỏi
thêm được nhiều kiến thức, kinh nghiệm, biết được quy trình để tạo ra một sản phẩm
phần mềm.
Bên cạnh đó, em xin cảm ơn các bạn bè trong lớp đã động viên, thảo luận và góp ý
cho em đồng thời đã khơi thêm nguồn động lực cho nhóm trong suốt q trình đầy
khó khăn.
Mặc dù đã cố gắng hồn thành báo cáo với tất cả nỗ lực song báo cáo của em chắc
chắn khơng tránh khỏi những thiếu sót, em rất mong nhận được sự thơng cảm và góp
ý chân thành từ cơ. Em xin chân thành cảm ơn.
Thành phố Hồ Chí Minh, tháng 6 năm 2023
Lữ Đình Long
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
Tp.HCM, ngày ... tháng 6 năm 2023
GVHD
ThS. Thái Thụy Hàn Uyển
MỤC LỤC
Chương 1 - Thông tin chung .............................................................................. 7
1.1
Tên đề tài .................................................................................................. 7
1.2
Thông tin sinh viên ................................................................................... 7
1.3
Môi trường phát triển ............................................................................... 7
1.4
Môi trường triển khai ............................................................................... 7
Chương 2 - Ngơn ngữ lập trình và cơng nghệ .................................................. 8
1.1
Dart ........................................................................................................... 8
1.1.1
Dart là gì? ........................................................................................... 8
1.1.2
Lợi ích khi sử dụng Dart .................................................................... 9
1.2
Flutter ....................................................................................................... 9
1.2.1
Flutter là gì? ....................................................................................... 9
1.2.2
Tại sao dùng Flutter?........................................................................ 10
1.2.3
Đặc điểm nổi bật .............................................................................. 10
Chương 3 – Tổng quan ..................................................................................... 11
3.1
Khảo sát hiện trạng ................................................................................. 11
3.2
Phát biểu bài toán ................................................................................... 11
3.3
Yêu cầu ................................................................................................... 11
3.3.1
Yêu cầu chức năng ........................................................................... 11
3.3.2
Yêu cầu phi chức năng ..................................................................... 12
Chương 4 - Thiết kế cơ sở dữ liệu.................................................................... 13
4.1
Sơ đồ ERD .............................................................................................. 13
4.2
Mô tả chi tiết........................................................................................... 13
4.2.1
Ebook ............................................................................................... 13
4.2.2
AudioBook ....................................................................................... 14
4.2.3
Genre ................................................................................................ 15
4.2.4
Genre_ebook .................................................................................... 15
4.2.5
Genre_audio_book ........................................................................... 15
4.2.6
ChapterMp3...................................................................................... 16
4.2.7
Library_ebook .................................................................................. 16
4.2.8
Library_audio_book ......................................................................... 16
Chương 5 - USE CASE ..................................................................................... 17
5.1
Sơ đồ Use Case ....................................................................................... 17
Chương 6 - Thiết kế giao diện .......................................................................... 18
6.1
Sơ đồ liên kết màn hình .......................................................................... 18
6.2
Danh sách màn hình ............................................................................... 18
6.3
Mơ tả màn hình....................................................................................... 19
6.3.1
Splash Screen ................................................................................... 19
6.3.2
Onboarding Screen ........................................................................... 20
6.3.3
Home Screen .................................................................................... 20
6.3.4
Library Screen .................................................................................. 20
6.3.5
Ebook Screen ................................................................................... 21
6.3.6
AudioBook Screen ........................................................................... 22
6.3.7
Genre Screen .................................................................................... 23
6.3.8
Detail Ebook Screen......................................................................... 23
6.3.9
Detail AudioBook Screen ................................................................ 24
6.3.10 Reading Ebook Screen ..................................................................... 24
6.3.11 Listening AudioBook Screen ........................................................... 25
6.3.12 Search Screen ................................................................................... 25
Chương 7 - Kết luận.......................................................................................... 26
7.1
Ưu điểm .................................................................................................. 26
7.2
Nhược điểm ............................................................................................ 26
7.3
Hướng phát triển..................................................................................... 26
TÀI LIỆU THAM KHẢO ................................................................................ 27
Chương 1 - Thông tin chung
1.1 Tên đề tài
Xây dựng ứng dụng Ebook
1.2 Thông tin sinh viên
MSSV: 20521565
Họ và tên: Lữ Đình Long
Email:
1.3 Mơi trường phát triển
Visual Studio Code: Viết mã
Android Studio: Giả lập Android
Material Design: Style phong cách Google cho ứng dụng Flutter
1.4 Môi trường triển khai
Android và iOS
Chương 2 - Ngơn ngữ lập trình và cơng nghệ
1.1 Dart
1.1.1 Dart là gì?
Tổng quan
Dart là ngơn ngữ được tối ưu cho client để phát triển các ứng dụng một
cách nhanh chóng trên mọi nền tảng. Mục tiêu của Dart là trở thành một
ngôn ngữ năng suất cao nhất cho việc phát triển đa nền tảng với nền tảng
runtime linh hoạt cho các framework.
Dart cũng là nền tảng của Flutter. Dart cung cấp ngôn ngữ và môi trường
chạy cho Flutter, nhưng Dart cũng hỗ trợ các khía cạnh khác như
formatting, analyzing, testing.
Ngôn ngữ
Dart là ngôn ngữ type-safe, nó sử dụng cơ chế kiểm tra static type để đảm
bảo rằng giá trị của một biến luôn trùng với static type của biến đó. Đơi
khi nó được đề cập như là sound typing. Mặc dù kiểu dữ liệu thì bắt buộc,
nhưng type annotation thì khơng bắt buộc bởi vì cơ chế type inference.
Dart cho phép kiểu dữ liệu dynamic kết hợp với runtime check, rất hữu
dụng trong những trường hợp cụ thể.
Thư viện
Dart có một tập hợp các core libraries phong phú, cung cấp căn bản cho
các tác vụ hằng ngày của nhà phát triển:
o Built-in types, collections, and core functionality khác cho mỗi
chương trình Dart (dart::core).
o Collection types như queues, linked lists, hashmaps, and binary
trees (dart:collection).
o Encoders và decoders cho việc chuyển đổi giữa các dạng dữ liệu
với nhau, bao gồm JSON và UTF-8 (dart:convert).
o Hàm và các hằng số toán học, và lấy số ngẫu nhiên (dart:math).
o File, socket, HTTP, and hỗ trợ I/O khác cho các ứng dụng non-web
(dart:io).
o Hỗ trợ asynchronous programming, với class như Future và Stream
(dart:async).
o Và còn nhiều các thư viện khác.
Ngồi các core libraries, cịn có rất nhiều API được publish lên pub.dev
bởi đội ngũ phát triển của Google.
Nền tảng
Native platform: Nhắm vào thiết bị di động và desktop, bao gồm Dart
VM cùng với bộ biên dịch just-in-time (JIT) và ahead-of-time (AOT).
Web platform: Nhắm vào ứng dụng web, bao gồm bộ biên dịch Dart sang
Javascript.
1.1.2 Lợi ích khi sử dụng Dart
Năng suất: Cú pháp Dart rõ ràng và súc tích, cơng cụ của nó đơn giản
nhưng mạnh mẽ. Type-safe giúp bạn xác định sớm các lỗi tinh tế.
Nhanh: Dart cung cấp tối ưu hóa việc biên dịch trước thời hạn để có
được dự đốn hiệu suất cao và khởi động nhanh trên các thiết bị di động
và web.
Dart biên dịch thành mã ARM và x86, để các ứng dụng di động của Dart
có thể chạy tự nhiên trên iOS, Android và hơn thế nữa. Đối với các ứng
dụng web, chuyển mã từ Dart sang JavaScript.
Dễ gần: Dart quen thuộc với nhiều nhà phát triển hiện có, nhờ vào cú
pháp và định hướng đối tượng.
Reactive: Dart rất phù hợp với lập trình Reactive, với sự hỗ trợ để quản
lý các đối tượng tồn tại trong thời gian ngắn.
1.2 Flutter
1.2.1 Flutter là gì?
Flutter là mobile UI framework của Google để tạo ra các giao diện chất
lượng cao trên iOS và Android trong khoảng thời gian ngắn. Flutter hoạt
động với những code sẵn có được sử dụng bởi các lập trình viên, các tổ
chức.
Flutter hồn tồn miễn phí và cũng là mã nguồn mở.
1.2.2 Tại sao dùng Flutter?
Nếu bạn đang tìm kiếm các phương pháp thay thế để phát triển ứng dụng
Android, bạn nên cân nhắc thử Flutter của Google, một framework dựa
trên ngơn ngữ lập trình Dart.
Các ứng dụng được xây dựng với Flutter hầu như không thể phân biệt với
những ứng dụng được xây dựng bằng cách sử dụng Android SDK, cả về
giao diện và hiệu suất. Hơn nữa, với những tinh chỉnh nhỏ, chúng có thể
chạy trên thiết bị iOS.
Flutter sử dụng Dart, một ngôn ngữ nhanh, hướng đối tượng với nhiều
tính năng hữu ích như mixin, generic, isolate, và static type.
Flutter có các thành phần UI của riêng nó, cùng với một cơ chế để kết
xuất chúng trên nền tảng Android và iOS. Hầu hết các thành phần giao
diện người dùng, đều sẵn dùng, phù hợp với các nguyên tắc của Material
Design.
Các ứng dụng Flutter có thể được phát triển bằng cách sử dụng IntelliJ
IDEA, một IDE rất giống với Android Studio.
1.2.3 Đặc điểm nổi bật
Fast Development: Tính năng Hot Reload hoạt động trong milliseconds
để hiện thị giao diện tới bạn. Sử dụng tập hợp các widget có thể
customizable để xây dựng giao diện trong vài phút. Ngồi ra Hot Reload
cịn giúp bạn thêm các tính năng, fix bug tiết kiệm thời gian hơn mà
không cần phải thông qua máy ảo, máy android hoặc iOS.
Expressive and Flexible UI: Có rất nhiều các thành phần để xây dựng
giao diện của Flutter vô cùng đẹp mắt theo phong cách Material Design
và Cupertino, hỗ trợ nhiều các APIs chuyển động, smooth scrolling…
Native Performance: Các widget của Flutter kết hợp các sự khác biệt của
các nền tảng ví dụ như scrolling, navigation, icons, font để cung cấp một
hiệu năng tốt nhất tới iOS và Android.
Chương 3 – Tổng quan
3.1 Khảo sát hiện trạng
• Cùng với sự phát triển của công nghệ và sự phổ biến của các thiết bị di động,
việc đọc sách điện tử trở nên ngày càng phổ biến. Người dùng có thể tiếp cận
với hàng ngàn quyển sách từ điện thoại di động, máy tính bảng hoặc đọc sách
trên các thiết bị đọc sách chuyên dụng.
• Ứng dụng ebook cung cấp sự tiện lợi và linh hoạt cho người đọc. Người dùng
có thể mang theo hàng trăm, thậm chí hàng ngàn quyển sách trong một thiết bị
nhỏ gọn và dễ dàng tiếp cận sách mọi lúc, mọi nơi. Điều này giúp tiết kiệm
không gian vật lý và giảm sự phụ thuộc vào sách giấy truyền thống.
• Ứng dụng ebook thường cung cấp các tính năng tiện ích như đánh dấu trang,
ghi chú, tìm kiếm nhanh, đổi font chữ, điều chỉnh kích thước chữ, đọc trong chế
độ ban đêm, và nhiều tính năng khác. Nhờ đó, người dùng có thể tùy chỉnh trải
nghiệm đọc sách của mình theo ý thích và nhu cầu cá nhân.
• Tuy nhiên, một số người vẫn có sự ưu tiên cho sách giấy truyền thống vì cảm
giác chạm vào sách và trải nghiệm hình ảnh trực tiếp trên trang giấy. Đồng thời,
còn một số thách thức như khó khăn trong việc đọc sách trên màn hình nhỏ, mệt
mỏi cho mắt, hoặc vấn đề bản quyền khi sử dụng sách điện tử.
3.2 Phát biểu bài tốn
Tầm nhìn
Áp dụng các kiến thức về lập trình
thiết bị di động và Flutter để xây dựng
ứng dụng ebook
Mục tiêu
Hướng tới một ứng dụng có giao diện
hiện đại, dễ dàng sử dụng, phù hợp
cho mọi đối tượng có nhu cầu đọc và
nghe sách.
Đối tượng
Những cá nhân có nhu cầu đọc sách ,
nghe sách.
3.3 Yêu cầu
3.3.1 Yêu cầu chức năng
Đọc sách điện tử: Cho phép đọc sách điện tử trên nhiều thiết bị khác
nhau, bao gồm máy tính, điện thoại thơng minh và máy tính bảng.
Nghe sách điện tử: Cho phép nghe sách điện tử trên nhiều thiết bị khác
nhau, bao gồm máy tính, điện thoại thơng minh và máy tính bảng cùng
với nhiều tính năng: chọn chương, thay đổi tốc độ nghe.
Thư viện sách : Cho phép quản lý sách điện tử đã tải , u thích của mình.
Tìm kiếm: Cung cấp khả năng tìm kiếm sách để phù hợp với nhu cầu và
sở thích của người đọc.
Đánh dấu và ghi chú: Cho phép người dùng đánh dấu trang và tạo ghi chú
cho các phần trong sách mà họ quan tâm đến.
Lịch sử nghe đọc: Ghi lại lịch sử nghe đọc sách của người dùng để tiện
cho việc tiếp tục nghe đọc.
Sách theo sở thích: Hiển thị những cuốn sách theo sở thích của người
dùng.
Hẹn giờ đọc sách: Cho phép người dùng hẹn giờ để thông báo nhắc nhở
đọc sách.
3.3.2 Yêu cầu phi chức năng
Giao diện thân thiện: Cung cấp một giao diện thân thiện, dễ sử dụng để
người dùng có thể dễ dàng tìm kiếm và đọc sách.
Tương thích với nhiều thiết bị: Hỗ trợ ios và android
Tốc độ tải sách nhanh: Cung cấp tốc độ tải sách nhanh và ổn định để
người dùng có thể đọc sách một cách liền mạch.
Bảo mật thông tin: Bảo vệ thông tin cá nhân của người dùng và đảm bảo
rằng các thơng tin nhạy cảm khơng bị rị rỉ hoặc lộ ra bên ngoài.
Chương 4 - Thiết kế cơ sở dữ liệu
4.1 Sơ đồ ERD
Hình 1.1 Sơ đồ ERD
4.2 Mơ tả chi tiết
4.2.1 Ebook
STT Tên thuộc tính Kiểu Ràng buộc
PK
Ý nghĩa/ghi chú
Mã sách điện tử
1
ebook_id
UUID
2
title
text
Tiêu đề sách
3
image
text
Ảnh sách
4
author
text
Tên tác giả
5
year
text
Năm xuất bản
6
view
text
Lượt xem
7
publisher
text
Tên nhà xuất bản
8
pages
int
Số trang sách
9
description
text
Thông tin mô tả sách
10
epub
text
Lưu file epub của sách
11
createAt
int
Thời gian sách được tạo
12
isFavorite
bool
Sách có được u thích khơng?
Bảng 1. 2 Mơ tả chi tiết bảng Ebook
4.2.2 AudioBook
STT Tên thuộc tính Kiểu Ràng buộc
1
audio_book_id UUID
PK
Ý nghĩa/ghi chú
Mã sách nói
2
title
text
Tiêu đề sách
3
image
text
Ảnh sách
4
author
text
Tên tác giả
5
year
text
Năm xuất bản
6
listen
text
Lượt nghe
7
publisher
text
Tên nhà xuất bản
8
description
text
Thông tin mô tả sách
9
epub
text
Lưu file epub của sách
10
createAt
int
Thời gian sách được tạo
11
isFavorite
bool
Sách có được u thích khơng?
Bảng 1. 3 Mơ tả chi tiết bảng AudioBook
4.2.3 Genre
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1
genre _id
UUID
2
name
text
Mã thể loại
PK
Tên thể loại
Bảng 1. 4 Mô tả chi tiết bảng Genre
4.2.4 Genre_ebook
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1
genre _id
UUID
FD
Mã thể loại
2
ebook _id
UUID
FD
Mã sách điện tử
Bảng 1. 5 Mô tả chi tiết bảng Genre_ebook
4.2.5 Genre_audio_book
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1
2
UUID
FD
Mã thể loại
audio_book _id UUID
FD
Mã sách nói
genre _id
Bảng 1. 6 Mơ tả chi tiết bảng Genre_audio_book
4.2.6 ChapterMp3
STT Tên thuộc tính
1
Kiểu Ràng buộc
chapter_mp3 _id UUID
Ý nghĩa/ghi chú
Mã chương sách nghe
FK
2
title
Text
Tên chương
3
url
Text
File nghe của chương
Bảng 1. 7 Mô tả chi tiết bảng ChapterMp3
4.2.7 Library_ebook
STT Tên thuộc tính Kiểu Ràng buộc
1
lib_ebook _id
UUID
Ý nghĩa/ghi chú
Mã thư viện sách điện tử
FK
Bảng 1. 8 Mô tả chi tiết bảng Library_ebook
4.2.8 Library_audio_book
STT
1
Tên thuộc tính
Kiểu Ràng buộc
lib_audio_book _id UUID
FK
Ý nghĩa/ghi chú
Mã thư viện sách nói
Bảng 1. 9 Mơ tả chi tiết bảng Library_audio_book
Chương 5 - USE CASE
5.1 Sơ đồ Use Case
Hình 2. 1 Sơ đồ Use Case
Chương 6 - Thiết kế giao diện
6.1 Sơ đồ liên kết màn hình
Hình 2. 2 Sơ đồ liên kết màn hình
6.2 Danh sách màn hình
STT
1
2
3
4
5
6
7
Tên màn hình
Màn hình Splash
Màn hình
Onboarding
Màn hình Main
Màn hình Home
Màn hình Library
Màn hình Ebook
Màn hình
Chức năng
Hiển thị khi mở ứng dụng
Hiển thị thông tin về ứng dụng
Chứa thơng tin về các màn hình khác
Hiển thị các thông tin về sách, lịch sử đọc sách…
Quản lý thư viên sách của người dùng
Hiển thị thông tin về các sách điện tử
Hiển thị thơng tin về các sách nói
8
9
10
11
12
13
AudioBook
Màn hình Search
Màn hình Ebook
Detail
Màn hình
AuioBook Detail
Màn hình Genre
Màn hình Reading
Ebook
Cho phép người dùng tìm kiếm sách theo nhu cầu
Hiển thị chi tiết thông tin sách điện tử
Hiển thị chi tiết thơng tin sách nói
Hiển thị sách theo thể loại
Cho phép người dùng đọc sách và thực hiện nhiều
chức năng khác : ghi chú , đánh dấu…
Cho phép người dùng nghe sách và thực hiện nhiều
Màn hình Listening
chức năng khác : thay đổi tốc độ đọc, chuyển
AudioBook
chương nghe
Bảng 2. 3 Danh sách màn hình
6.3 Mơ tả màn hình
6.3.1 Splash Screen
Hình 2. 4 Splash Screen
6.3.2 Onboarding Screen
Hình 2. 5 Onboarding Screen
6.3.3 Home Screen
Hình 2. 6 Home Screen
6.3.4 Library Screen
Hình 2. 7 Library Screen 1
Hình 2. 8 Library Screen 2
6.3.5 Ebook Screen
Hình 2. 9 Ebook Screen
6.3.6 AudioBook Screen
Hình 3. 1 AudioBook Screen
6.3.7 Genre Screen
Hình 3. 2 Genre Screen
6.3.8 Detail Ebook Screen
Hình 3. 3 Detail Ebook Screen
6.3.9 Detail AudioBook Screen
Hình 3. 4 Detail AudioBook Screen
6.3.10 Reading Ebook Screen
Hình 3. 5 Reading Ebook Screen
6.3.11 Listening AudioBook Screen
Hình 3. 6 Listening AudioBook Screen
6.3.12 Search Screen
Hình 3. 7 Search Screen