BỘ GIÁO DỤC VÀ ĐÀO TẠO
-
D A T N Đ H
TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT
--------------------------
N G U Y Ễ N A N H T Ú
I
ĐỒ ÁN TỐT NGHIỆP
Í
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ SỐ: 7480201
X Â Y D Ự N G Ứ N G D Ụ N G C H A S Ẻ T R C H D Ẫ N H A Y M Ỗ
I
I
N G À Y T R Ê N N Ề N T Ả N G A N D R O D
H À N Ộ
I -
2 0 2 1
HÀ NỘI - 2021
TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT
KHOA CÔNG NGHỆ THÔNG TIN
-------------⁂-------------
ĐỒ ÁN TỐT NGHIỆP
CHUYÊN NGÀNH KHOA HỌC MÁY TÍNH
ĐỀ TÀI
Xây dựng ứng dụng chia sẻ trích dẫn hay mỗi ngày
trên nền tảng Android
CÁN BỘ HƯỚNG DẪN
SINH VIÊN THỰC HIỆN
GV.ThS ĐẶNG VĂN NAM
NGUYỄN ANH TÚ
BỘ MÔN KHOA HỌC MÁY TÍNH
MÃ SINH VIÊN: 1621050292
LỚP: DCCTKH61A
LỚP: DCCTKH61A
HÀ NỘI - 2021
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
MỤC LỤC
MỤC LỤC ....................................................................................................................... 1
DANH MỤC HÌNH ẢNH ............................................................................................... 4
DANH MỤC BẢNG BIỂU ............................................................................................. 6
LỜI CẢM ƠN .................................................................................................................. 7
LỜI NÓI ĐẦU ................................................................................................................. 8
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI ....................................................................... 9
1.1 Giới thiệu chung ..................................................................................................... 9
1.2 Đặt vấn đề .............................................................................................................. 9
1.3 Lý do chọn đề tài .................................................................................................. 10
1.4 Mục tiêu của đề tài ............................................................................................... 11
1.5 Nội dung nghiên cứu ............................................................................................ 11
1.6 Phạm vi của đề tài ................................................................................................ 11
CHƯƠNG 2: PHÂN TÍCH – THIẾT KẾ HỆ THỐNG ................................................ 12
2.1 Mô tả hệ thống chia sẻ trích dẫn hay ................................................................... 12
2.2 Xác định đối tượng (tác nhân) tương tác với hệ thống ........................................ 13
2.3 Xác định yêu cầu chức năng ................................................................................ 14
2.3.1 Xác định các chức năng chi tiết và gom nhóm các chức năng ...................... 14
2.3.2 Xây dựng biểu đồ phân rã chức năng ............................................................ 16
2.4 Xây dựng các mô hình luồng dữ liệu ................................................................... 17
2.4.1 Ký hiệu sử dụng ............................................................................................. 17
2.4.2 Lập sơ đồ luồng dữ liệu ................................................................................. 17
2.5 Thiết kế các Bảng dữ liệu của hệ thống ............................................................... 21
2.6 Xây dựng biểu đồ quan hệ thực thể ..................................................................... 24
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 1
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
2.6.1 Ký hiệu sử dụng ............................................................................................. 24
2.6.2 Lập biểu đồ quan hệ thực thể ......................................................................... 24
2.6.3 Mối liên kết trong biểu đồ quan hệ thực thể .................................................. 24
2.7 Xác định các yêu cầu phi chức năng .................................................................... 26
CHƯƠNG 3 CƠ SỞ LÝ THUYẾT ............................................................................... 27
3.1 Hệ điều hành Android .......................................................................................... 27
3.1.1 Giới thiệu ....................................................................................................... 27
3.1.2 Kiến trúc của hệ điều hành Android .............................................................. 28
3.1.3 Ưu nhược điểm của hệ điều hành Android .................................................... 29
3.2 Ngôn ngữ lập trình Java ....................................................................................... 30
3.2.1 Lịch sử ........................................................................................................... 30
3.2.2 Đặc điểm ........................................................................................................ 30
3.3 Firebase ................................................................................................................ 32
3.3.1 Firebase là gì? ................................................................................................ 32
3.3.2 Lịch sử phát triển ........................................................................................... 33
3.3.3 Cách thức hoạt động của Firebase ................................................................. 33
3.3.4 Ưu nhược điểm của Firebase ......................................................................... 34
3.4 Android Studio ..................................................................................................... 38
3.4.1 Giới thiệu chung ............................................................................................ 38
3.4.2 Những tính năng chính .................................................................................. 38
CHƯƠNG 4: XÂY DỰNG VÀ PHÁT TRIỂN ỨNG DỤNG ...................................... 39
4.1 Thiết kế giao diện ................................................................................................. 39
4.2 Firebase Realtime Database ................................................................................. 40
4.3 Thiết kế giao diện ứng dụng................................................................................. 46
4.3.1 Giao diện đăng ký, đăng nhập ....................................................................... 46
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 2
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
4.3.2 Giao diện trang chủ ........................................................................................ 49
4.3.3 Giao diện trang cá nhân ................................................................................. 50
4.3.4 Giao diện các người dùng .............................................................................. 51
4.3.5 Giao diện nhắn tin .......................................................................................... 52
4.3.6 Giao diện đăng bài viết .................................................................................. 53
4.3.7 Giao diện sửa thông tin cá nhân .................................................................... 54
4.4 Kiểm thử và đánh giá hệ thống ............................................................................ 55
4.4.1 Kiểm thử chức năng đăng ký, đăng nhập ...................................................... 55
4.4.2 Kiểm thử chức năng đăng bài viết ................................................................. 56
4.4.3 Kiểm thử chức năng sửa thông tin cá nhân ................................................... 56
4.4.4 Kiểm thử chức năng tạo nhóm chat ............................................................... 57
4.4.5 Kiểm thử chức năng thích, bình luận, chia sẻ ................................................ 57
ĐÁNH GIÁ – KẾT LUẬN ............................................................................................ 58
TÀI LIỆU THAM KHẢO ............................................................................................. 60
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 3
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
DANH MỤC HÌNH ẢNH
Hình 2 - 1 Sơ đồ phân rã chức năng. ............................................................................. 16
Hình 2 - 2 Ký hiệu sử dụng. .......................................................................................... 17
Hình 2 - 3 Cách truy xuất dữ liệu. ................................................................................. 17
Hình 2 - 4 Biểu đồ luồng dữ liệu mức ngữ cảnh (mức 0). ............................................ 17
Hình 2 - 5 Biểu đồ luồng dữ liệu mức đỉnh (mức 1). .................................................... 18
Hình 2 - 6 Mức dưới đỉnh (mức 2) của chức năng Quản lý tài khoản. ......................... 18
Hình 2 - 7 Mức dưới đỉnh (mức 2) của chức năng Quản lý bài viết chung. ................. 19
Hình 2 - 8 Mức dưới đỉnh (mức 2) của chức năng Quản lý bài viết cá nhân. ............... 19
Hình 2 - 9 Mức dưới đỉnh (mức 2) của chức năng Quản lý hồ sơ cá nhân. .................. 20
Hình 2 - 10 Mức dưới đỉnh (mức 2) của chức năng Quản lý tin nhắn. ......................... 20
Hình 2 - 11 Mức dưới đỉnh (mức 2) của chức năng Quản lý tin nhắn nhóm. ............... 21
Hình 2 - 12 Ký hiệu sử dụng trong biểu đồ quan hệ thực thể ....................................... 24
Hình 2 - 13 Lược đồ quan hệ thực thể ........................................................................... 24
Hình 3 - 1 Biểu tượng của hệ điều hành Android ......................................................... 27
Hình 3 - 2 Kiến trúc của hệ điều hành Android ............................................................ 29
Hình 3 - 3 Quá trình biên dịch qua máy ảo JVM .......................................................... 31
Hình 3 - 4 Biểu tượng của Firebase ............................................................................... 33
Hình 3 - 5 Minh họa sự kết hợp của Firebase và Google Cloud Platform .................... 35
Hình 3 - 6 Biểu tượng API Cloud Vision của Google .................................................. 37
Hình 4 - 1 Cơ sở dữ liệu dạng JSON ............................................................................. 40
Hình 4 - 2 Các model ánh xạ tương ứng ....................................................................... 40
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 4
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Hình 4 - 3 Dữ liệu của Các tin nhắn trong cơ sở dữ liệu ............................................... 41
Hình 4 - 4 Dữ liệu của Danh sách nhóm tin nhắn trong cơ sở dữ liệu .......................... 41
Hình 4 - 5 Dữ liệu của Các bài viết trong cơ sở dữ liệu ................................................ 42
Hình 4 - 6 Dữ liệu của Các người dùng trong cơ sở dữ liệu ......................................... 42
Hình 4 - 7 Quản lý người dùng với Firebase Authentication ........................................ 43
Hình 4 - 8 Quản lý tài nguyên với Firebase Storage ..................................................... 43
Hình 4 - 9 Lấy dữ liệu tất cả người dùng ...................................................................... 44
Hình 4 - 10 Cập nhật bài viết không ảnh ....................................................................... 44
Hình 4 - 11 Cấp quyền truy cập vào máy ảnh và kho lưu trữ ....................................... 45
Hình 4 - 12 Xóa ảnh trong bài viết ................................................................................ 45
Hình 4 - 13 Giao diện đăng ký, đăng nhập .................................................................... 46
Hình 4 - 14 Giao diện chức năng đăng ký ..................................................................... 47
Hình 4 - 15 Giao diện chức năng đăng nhập ................................................................. 48
Hình 4 - 16 Giao diện trang chủ .................................................................................... 49
Hình 4 - 17 Giao diện trang cá nhân .............................................................................. 50
Hình 4 - 18 Giao diện Các người dùng ......................................................................... 51
Hình 4 - 19 Giao diện nhắn tin ...................................................................................... 52
Hình 4 - 20 Giao diện đăng bài viết .............................................................................. 53
Hình 4 - 21 Giao diện sửa thông tin cá nhân ................................................................. 54
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 5
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
DANH MỤC BẢNG BIỂU
Bảng 2 - 1 Thiết kế cấu trúc bảng người dùng. ............................................................. 21
Bảng 2 - 2 Thiết kế cấu trúc bảng bài viết. .................................................................... 22
Bảng 2 - 3 Thiết kế cấu trúc bảng tin nhắn.................................................................... 22
Bảng 2 - 4 Thiết kế cấu trúc bảng danh sách nhắn tin. .................................................. 22
Bảng 2 - 5 Thiết kế cấu trúc bảng bình luận. ................................................................ 23
Bảng 2 - 6 Thiết kế cấu trúc các nhóm nhắn tin. ........................................................... 23
Bảng 2 - 7 Thiết kế cấu trúc bảng tin nhắn nhóm. ........................................................ 23
Bảng 4 - 1 Kiểm thử chức năng đăng ký, đăng nhập .................................................... 55
Bảng 4 - 2 Kiểm thử chức năng đăng bài viết ............................................................... 56
Bảng 4 - 3 Kiểm thử chức năng Sửa thông tin cá nhân ................................................. 56
Bảng 4 - 4 Kiểm thử chức năng tạo nhóm nhắn tin ....................................................... 57
Bảng 4 - 5 Kiểm thử chức năng thích, bình luận, chia sẻ .............................................. 57
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 6
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
LỜI CẢM ƠN
Em xin chân thành cảm ơn trường Đại học Mỏ - Địa chất, khoa Công nghệ thông
tin và bộ môn Khoa học máy tính đã tạo điều kiện cho em hoàn thành đồ án tốt nghiệp.
Nhờ đồ án tốt nghiệp này em đã có thêm rất nhiều kinh nghiệm quý báu. Những kinh
nghiệm đó sẽ giúp em nhiều trong công việc sau này.
Em cũng xin cảm ơn các thầy, cô trong Bộ môn, trong Khoa và trong Trường đã
tận tình giảng dạy và trang bị cho em những kiến thức cần thiết. Những kiến thức này
đã hỗ trợ cho em rất nhiều trong việc hoàn thành đồ án tốt nghiệp.
Hơn cả, em xin cảm ơn thầy giáo - Ths. Đặng Văn Nam đã hướng dẫn, cung cấp
một số tài liệu giúp em hoàn thành đồ án tốt nghiệp. Những điều thầy chỉ dẫn giúp em
có được hướng đi trong công việc sắp tới.
Vì thời gian có hạn và kinh nghiệm còn thiếu nên đồ án của em khó tránh khỏi
những thiếu sót. Em mong nhận được sự chỉ bảo, đóng góp ý kiến của thầy, cô để em
có thêm kinh nghiệm giúp hoàn thành tốt đề tài của mình hơn.
Một lần nữa em xin chân thành cảm ơn.
Sinh viên thực hiện
NGUYỄN ANH TÚ
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 7
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
LỜI NÓI ĐẦU
Trong thời đại hiện nay, mạng xã hội là một nơi gần như không thể tách rời đối
với hầu hết mọi người và chúng phục vụ nhiều mục đích, nhu cầu khác nhau của mỗi
người. Chính vì mạng xã hội quá mở khiến cho nhiều người thường xuyên bị xao lãng
vào những thứ không mang lại nhiều giá trị thiết thực cho cuộc sống của chính họ.
Với mong muốn hưởng ứng sự kêu gọi, tuyên truyền, xây dựng thói quen đọc
sách cho đại bộ phận người dân Việt Nam để đưa đất nước ta trở thành quốc gia khởi
nghiệp trong những thập kỷ tiếp theo, bắt kịp với sự phát triển ngày càng nhanh của
khoa học công nghệ và mức sống, mức thu nhập ngày càng tăng cao của xã hội.
Khác với mạng xã hội tin tức hay mạng xã hội hình ảnh thì mạng xã hội sách là
nơi tập trung giao lưu về chủ đề sách, những trải nghiệm thú vị học được khi đọc một
cuốn sách nào đó hay một hành động cụ thể, kinh nghiệm thực tế từng trải qua để kể lại,
chia sẻ lại cho mọi người để học hỏi và cùng nhau phát triển đi lên.
Ngoài ra, mạng xã hội sách còn là nơi để mọi người review những cuốn hay, phân
tích, bàn luận hay phản biện với nhau về những giá trị hiện tại mà cuốn sách mang lại
cho người đọc, tập trung vào một hoặc một số thứ tích cực nhất định thật sự có ích lợi
lớn cho những người sử dụng.
Và ứng dụng chia sẻ trích dẫn nhỏ này là một phần trong những mong muốn xây
dựng một cộng đồng mạng xã hội sách cho người Việt Nam.
Nhờ vào những trích dẫn ngắn, nhỏ, tinh túy, tâm đắc cũng có thể khơi dậy sự
hiếu kỳ, sự tò mò, ham muốn thèm đọc, mở lối cho những bế tắc, những bài toán mà
cuộc sống đặt ra cần phải giải quyết của cá nhân mỗi người.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 8
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu chung
▪ Tên đề tài bằng tiếng việt: Xây dựng ứng dụng chia sẻ trích dẫn hay mỗi ngày
trên nền tảng Android.
▪ Tên đề tài bằng tiếng anh: Build apps to share good quotes every day on Android.
▪ Thời gian thực hiện: 2 tháng (26/04/2021 – 27/06/2021).
▪ Môi trường phát triển: Android Studio phiên bản 4.4.1.
▪ Ngôn ngữ lập trình: Java.
▪ Lưu trữ Cơ sở dữ liệu: Firebase.
▪ Nền tảng phát triển: Hệ điều hành Android 5.0 (Lollipop) API 21 trở lên.
▪ Thiết bị điện tử được cài đặt: Điện thoại di động thông minh.
▪ Đối tượng sử dụng: Bất kỳ ai.
1.2 Đặt vấn đề
Với sự phát triển như vũ bão của nền công nghiệp hiện đại, đặc biệt là ngành
công nghệ thông tin, truyền thông, giải trí, các phương tiện nghe, nhìn (điện thoại, máy
tính bảng, laptop, …) tỏ ra vượt trội và tính năng tiện dụng, có sức hấp dẫn, lôi cuốn
mạnh mẽ hơn so với các trang sách báo truyền thống.
Nhiều người trẻ hiện nay thường không có thói quen đọc sách với rất nhiều lí do
khác nhau nhưng lại luôn mất thời gian của mình vào những thói quen vô bổ như lướt
mạng xã hội Facebook hay xem các video tiktok được sáng tạo nội dung để thu hút
người dùng dành sự quan tâm vào đó mà quên đi những mục tiêu và ước muốn cá nhân.
Trong thời đại tiêu dùng nhanh như hiện nay thì người trẻ thường xuyên bị sao
lãng bởi các phương tiện truyền thông và tâm lý thích sự giản đơn, nhanh chóng và tiện
lợi muốn nhanh chóng đạt được khiến việc đọc sách bị xem nhẹ.
Cá nhân em nói riêng cũng thường cảm thấy ngại đọc nhiều chữ hay lấy lí do bận
rộn với các vấn đề của tuổi trưởng thành (như tình yêu, công việc làm thêm, bài tập lớn,
…) mà ít khi dành thời gian cho việc đọc sách.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 9
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Những người luôn muốn thay đổi bản thân tiến bộ hơn thường dành thời gian đọc
sách, cảm thấy được truyền cảm hứng, truyền lửa bởi những câu viết trong sách, những
câu từ cá nhân họ tâm đắc có ý nghĩa với họ và khiến họ thay đổi.
Thông thường mọi người sẽ đánh dấu vào sách những câu viết mà họ tâm đắc
hoặc viết ra một cuốn sổ tay để đọc lại những khi cảm thấy thiếu sức mạnh ý chí. Nhưng
nhiều khi những ghi chú đó ít khi được đọc lại thường xuyên bởi vì những bộn bề của
công việc và cuộc sống hối hả, tấp nập khiến ta quên mất đi những giá trị tinh túy của
những cuốn sách ta đã đọc, những thức tỉnh của bản thân mỗi khi đọc được chúng.
Ít khi đọc lại, lười ngại việc đọc lại nên không nhớ những bài học, lời khuyên
nhỏ, châm ngôn sống, dòng tâm trạng, triết lý về cuộc sống để có thể ghi nhớ và vận
dụng trong các tình huống, trường hợp cụ thể.
Các ứng dụng trích dẫn đa phần là ứng dụng chỉnh sửa và đi kèm với ghép ảnh.
1.3 Lý do chọn đề tài
Với ý muốn tận dụng sự phát triển, sự thuận tiện của khoa học công nghệ, kỹ thuật điện
tử như hiện nay để có thể:
▪ Tạo thói quen văn hóa đọc trong người trẻ nói riêng và mọi người dân nói chung.
▪ Giúp tập trung sự chú ý vào những thứ tích cực hữu ích thay vì bị xao lãng một
▪ Dung nạp những suy nghĩ, ý niệm tích cực, lạc quan hàng ngày hàng giờ, cả trước
khi đi vào giấc ngủ hay ngay sau khi thức dậy.
▪ Và còn là nơi để tìm đến khi bế tắc cần động viên, khích lệ, an ủi, định hướng,
trấn an tinh thần, cổ vũ ý chí, sức mạnh, sự tự tin, niềm hy vọng, sự dũng cảm.
▪ Nhắc nhở bản thân sống tích cực, lạc quan, tự tin, mạnh mẽ hơn trong cuộc sống.
▪ Tự đọc lên những câu chữ như đang tự mình nhắn nhủ chính mình.
▪ Tạo sự tương tác với mọi người khác để thi đua với nhau, xếp hạng thành tích và
thử thách giúp người dùng vượt lên chính mình, thay đổi để trở thành một con
người tốt hơn.
Chính vì những lý do trên mà em quyết định lựa chọn đề tài “Xây dựng ứng dụng
chia sẻ trích dẫn hay mỗi ngày trên nền tảng Android” để làm đồ án tốt nghiệp.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 10
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
1.4 Mục tiêu của đề tài
Xây dựng được ứng dụng trên nền tảng Android cho phép kết nối mọi người cùng
sở thích vào một cộng đồng chung để chia sẻ nhưng câu nói, quyển sách, bài học ý nghĩa
trong cuộc sống.
Cụ thể, ứng dụng “Chia sẻ trích dẫn hay” này cung cấp cho người dùng những
tính năng như:
▪ Ghi lại các câu trích dẫn tâm đắc.
▪ Ghi lại các câu từ hay trong các cuốn sách đã đọc hay tóm tắt lại ý chính và viết
lại để kích thích sự tò mò về cuốn sách đó để tìm đọc lại.
▪ Được thông báo hàng ngày các câu trích dẫn ngắn ưa thích của cá nhân để cổ vũ
tinh thần, tiếp thêm sức mạnh, động lực, sự tự tin, sức sống cho một ngày mới
tràn đầy năng lượng.
▪ Chia sẻ được những câu trích dẫn hay cho bạn bè, mọi người.
▪ Ngoài ra còn có thông báo những câu trích dẫn mới mỗi ngày về những chủ đề,
những tác giả, những cuốn sách, những trạng thái cảm xúc mà bạn quan tâm.
▪ Và không chỉ là một ứng dụng đọc không mà còn là một ứng dụng để giải trí, duy
trì thói quen đọc.
1.5 Nội dung nghiên cứu
Để đạt được những mục tiêu ở trên em cần nghiên cứu, tìm hiểu những nội dung sau:
▪ Tìm hiểu về công cụ phát triển ứng dụng Android Studio.
▪ Nghiên cứu về nền tảng Firebase.
▪ Khảo sát, phân tích yêu cầu hệ thống.
▪ Thiết kế, xây dựng cấu trúc dữ liệu.
▪ Tìm kiếm các thư viện hỗ trợ
1.6 Phạm vi của đề tài
Phạm vi của đề tài này là tập trung xây dựng lên một ứng dụng với những chức
năng cơ bản của một mạng xã hội nhỏ cho phép người dùng đăng bài viết, bình luận,
bày tỏ cảm xúc và nhắn tin lẫn nhau trên các thiết bị di động thông minh hệ điều hành
Android.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 11
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
CHƯƠNG 2: PHÂN TÍCH – THIẾT KẾ HỆ THỐNG
2.1 Mô tả hệ thống chia sẻ trích dẫn hay
Một nhóm người dùng muốn xây dựng một ứng dụng để phục vụ và giúp quản
lý các trích dẫn mà họ yêu thích và tâm đắc. Người dùng thường xuyên ghi lại các trích
dẫn và lời khuyên hữu ích để có thể đọc lại khi cần.
Do vậy hệ thống cần phải cho phép ghi và lưu nhận các trích dẫn và thông báo
lại các câu nói hay đó với người dùng.
Hệ thống chia sẻ trích dẫn là chương trình phần mềm được sử dụng để ghi lại các
phiên viết trích dẫn, lưu giữ và thông báo lại thường xuyên với người dùng, chủ yếu
phục vụ những người dùng cá nhân.
Hệ thống chia sẻ trích dẫn có một kho lưu trữ đám mây Firebase để lưu dữ liệu
chung của mọi người dùng.
Hệ thống của ứng dụng cho phép tất cả các trao đổi được thực hiện bởi một người
dùng đã đăng ký tài khoản với tên đăng nhập là hòm thư điện tử (email) của họ với ứng
dụng.
Một người dùng được yêu cầu đăng ký tài khoản với email cá nhân và mật khẩu
đăng nhập ứng dụng, email và mật khẩu mã hóa sẽ được gửi đến hệ thống lưu trữ thông
tin (Firebase) để xác nhận.
Hệ thống tự động gửi thư xác nhận đăng ký của người dùng. Sau khi đã đăng ký
thành công người dùng sẽ có thể sử dụng và thực hiện một hoặc nhiều sự trao đổi. Sau
khi đăng nhập thành công, tài khoản sẽ được duy trì đăng nhập tự động trên máy cho
đến khi người dùng đăng xuất.
Người dùng chỉ có thể sử dụng ứng dụng trên thiết bị điện thoại di động thông
minh hệ điều hành Android.
Một người dùng phải có khả năng xem lại các câu trích dẫn cá nhân của mình
Người dùng được thông báo về các bài viết mới cũng như tin nhắn đến.
Người dùng phải có khả năng chia sẻ bài viết của mình cho mọi người, bạn bè.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 12
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Người dùng phải có khả năng bày tỏ cảm xúc với bài viết của người dùng khác.
Người dùng phải có thể bình luận với bài viết của người dùng khác.
Người dùng phải có khả năng tìm kiếm các trích dẫn, các tác giả, các bạn bè.
Người dùng có thể hủy bỏ bài viết bằng cách chạm ‘Hủy’.
Nếu hệ thống Firebase xác định rằng mật khẩu của người dùng là không hợp lệ,
người dùng sẽ được yêu cầu nhập lại mật khẩu. Nếu người dùng nhập quên mật khẩu thì
có thể khôi phục thì hệ thống sẽ gửi thư xác nhận lại mật khẩu vào hòm thư email đã
đăng ký tài khoản của người dùng.
Hệ thống phải cung cấp cho người dùng danh sách các bài đã viết của cá nhân
sau khi lưu thành công, gồm các thông tin ngày tháng, thời gian, chủ đề, lượt thích.
Thông tin của mỗi người dùng được lưu trữ trong hệ thống gồm Mã người dùng,
địa chỉ Email, một người dùng có chỉ có thể có một tài khoản cho một email, một tài
khoản chỉ thuộc một người dùng.
Hệ thống hiển thị tất cả các trích dẫn của mọi người về các lĩnh vực chủ đề.
Hệ thống sẽ có thể hiển thị 2 ngôn ngữ chính là tiếng việt và tiếng anh.
Người dùng có thể sửa đổi tên, mật khẩu, ảnh đại diện của mình.
2.2 Xác định đối tượng (tác nhân) tương tác với hệ thống
Ứng dụng được phát triển hướng tới tất cả các đối tượng là cá nhân có nhu cầu
phát triển hoàn thiện bản thân nhờ vào việc đọc các trích dẫn ngắn tâm đắc được thông
báo nhắc nhớ, khơi dậy sự nhận thức, tỉnh ngộ về những giá trị sống quanh mình.
Dựa vào bản mô tả hệ thống trên, ta xác định được đối tượng sau:
• Firebase: Là hệ thống quản lý thông tin lưu giữ trên Firebase.
• Người dùng (hay người đọc): Là những người sử dụng hệ thống để ghi chú và
được thông báo nhắc về những gì đã ghi hoặc những trích dẫn hay khác do người
khác đăng tải.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 13
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
2.3 Xác định yêu cầu chức năng
2.3.1 Xác định các chức năng chi tiết và gom nhóm các chức năng
Trên cơ sở khảo sát các bài toán thực tế, ứng dụng sẽ có các chức năng chính sau:
Nhóm chức năng Quản lý tài khoản:
• Đăng ký: Người dùng mới có thể tạo một tài khoản cho riêng mình để quản lý,
theo dõi, cá nhân hóa nhu cầu sử dụng ứng dụng của mình.
• Đăng nhập: Nếu người dùng đã có tài khoản thì có thể đăng nhập vào để sử dụng
các chức năng khác nhau của ứng dụng.
• Đăng xuất: Khi người dùng muốn đổi tài khoản đăng nhập khác hay đăng ký tài
khoản mới hoặc chỉ là không muốn duy trì đăng nhập trên ứng dụng để bảo mật
dữ liệu cá nhân.
• Xem danh sách người dùng: Người dùng có thể xem danh sách những người đăng
ký khác đang sử dụng ứng dụng và có thể nhắn tin trò chuyện, kết nối với nhau
và tạo ra những nhóm chat nhỏ riêng.
• Tìm kiếm chung: Cho phép người dùng tìm kiếm các người dùng, bài viết khác
bằng tên hoặc email cá nhân.
• Đổi mật khẩu: Cho phép người dùng thay đổi mật khẩu đăng nhập vào hệ thống.
Nhóm chức năng Quản lý bài viết chung:
• Xem bài viết chung: Người dùng có thể xem được tất cả các bài viết của những
người dùng khác.
• Bày tỏ cảm xúc: Người dùng có thể chạm vào nút thích để thêm số lượt thích cho
bài viết mà mình ấn tượng.
• Xem những người thích: Cho phép người dùng xem thông tin về những người đã
thích bài viết.
• Bình luận bài viết: Cho phép người dùng viết nhận xét, bày tỏ quan điểm, cảm
nhận của mình về bài viết.
• Xem bình luận: Cho phép người dùng xem, đọc các dòng viết nhận xét của người
khác về bài viết đó.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 14
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
• Chia sẻ bài viết: Cho phép người dùng chia sẻ bài viết sang các ứng dụng hay
nền tảng khác như email, tin nhắn, …
Nhóm chức năng Quản lý bài viết cá nhân:
• Xem bài viết cá nhân: Cho phép người dùng xem các bài mình đã viết
• Tạo bài viết: Cho phép người dùng viết bài và đăng tải cho mọi người dùng khác
đọc bài viết đó.
• Xóa bài viết: Cho phép người dùng xóa những bài mình đã viết.
• Sửa bài viết: Cho phép người dùng chỉnh sửa, thêm bớt chữ, hình ảnh đăng tải.
Nhóm chức năng Quản lý hồ sơ cá nhân:
• Đổi biệt danh hiển thị: Cho phép người dùng chỉnh sửa, thay đổi tên hiển thị của
mình với những người dùng khác.
• Đổi ảnh đại diện: Cho phép người dùng thay đổi hình ảnh nhận diện của cá nhân.
• Đổi ảnh bìa: Cho phép người dùng chỉnh sửa ảnh nền cá nhân mình bắt mắt hơn.
• Đổi số điện thoại: Cho phép người dùng thay đổi thông tin liên hệ trực tiếp.
• Xem thông tin cá nhân: Cho phép người dùng xem lại những bài viết của mình,
số lượt thích, lượt người bình luận về bài viết.
Nhóm chức năng Quản lý tin nhắn (hay Quản lý chat):
• Viết tin nhắn: Cho phép người viết tin nhắn riêng cho mỗi người hoặc nhắn chung
cho tất cả mọi người trong nhóm.
• Xem tin nhắn: Người dùng đọc được các tin nhắn gửi đến và đã gửi đi.
• Xem danh sách nhắn tin: Người dùng có thể xem danh sách những người mình
đã nhắn tin.
• Xóa tin nhắn: Cho phép người dùng xóa đi tin mình đã gửi.
• Khóa người dùng khác: Cho phép người dùng chặn tin nhắn từ những người dùng
khác.
Nhóm chức năng Quản lý nhóm tin nhắn:
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 15
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
• Tạo nhóm chat: Người dùng có thể tạo một nhóm nhắn tin để trò chuyện chung
với những thành viên trong nhóm.
• Xem danh sách nhóm: Xem danh sách các nhóm người dùng đã lập ra hay được
mời tham gia vào.
• Xem danh sách thành viên: Cho phép người dùng xem được những người có mặt
trong nhóm chat.
• Thêm thành viên: Cho phép người dùng thêm các thành viên vào nhóm tin nhắn
• Sửa nhóm: Cho phép người dùng sửa mô tả nhóm và tên nhóm.
• Xóa nhóm: Cho phép người dùng xóa nhóm.
• Rời nhóm: Người dùng có thể thoát khỏi nhóm và không nhận tin nhắn của nhóm.
2.3.2 Xây dựng biểu đồ phân rã chức năng
Trên cơ sở các chức năng chi tiết đã xác định được bên trên em tiến hành xây dựng
biểu đồ phân rã chức năng của hệ thống như hình sau đây:
Hình 2 - 1 Sơ đồ phân rã chức năng.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 16
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
2.4 Xây dựng các mô hình luồng dữ liệu
2.4.1 Ký hiệu sử dụng
Hình 2 - 2 Ký hiệu sử dụng.
Hình 2 - 3 Cách truy xuất dữ liệu.
2.4.2 Lập sơ đồ luồng dữ liệu
Hình 2 - 4 Biểu đồ luồng dữ liệu mức ngữ cảnh (mức 0).
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 17
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Hình 2 - 5 Biểu đồ luồng dữ liệu mức đỉnh (mức 1).
Hình 2 - 6 Mức dưới đỉnh (mức 2) của chức năng Quản lý tài khoản.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 18
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Hình 2 - 7 Mức dưới đỉnh (mức 2) của chức năng Quản lý bài viết chung.
Hình 2 - 8 Mức dưới đỉnh (mức 2) của chức năng Quản lý bài viết cá nhân.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 19
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Hình 2 - 9 Mức dưới đỉnh (mức 2) của chức năng Quản lý hồ sơ cá nhân.
Hình 2 - 10 Mức dưới đỉnh (mức 2) của chức năng Quản lý tin nhắn.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 20
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Hình 2 - 11 Mức dưới đỉnh (mức 2) của chức năng Quản lý tin nhắn nhóm.
2.5 Thiết kế các Bảng dữ liệu của hệ thống
❖ Bảng người dùng: Lưu trữ thông tin của các người dùng trong hệ thống.
Bảng 2 - 1 Thiết kế cấu trúc bảng người dùng.
STT Thuộc tính Kiểu dữ liệu Mô tả
Tên biệt danh người dùng name String 1
Hòm thư điện tử đã đăng ký của người dùng email String 2
search String 3 Tìm kiếm người dùng
phone String 4 Số điện thoại người dùng
image String 5 Ảnh đại diện người dùng
cover String 6 Ảnh bìa người dùng
uid String 7 Mã người dùng
onlineStatus String 8 Trạng thái sử dụng
typingTo String 9 Trạng thái nhập liệu
10 isBlocked Boolean Người dùng có bị chặn hay không
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 21
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
❖ Bảng bài viết: Lưu trữ thông tin của các bài viết trong hệ thống.
Bảng 2 - 2 Thiết kế cấu trúc bảng bài viết.
STT Thuộc tính Kiểu dữ liệu Mô tả
Mã bài viết pId 1 String
Tiêu đề bài viết pTitle 2 String
Mô tả bài viết pDescr 3 String
Số lượt thích bài viết pLikes 4 String
Số lượt bình luận bài viết pComments 5 String
Ảnh bài viết pImage 6 String
Thời gian viết bài pTime 7 String
Mã người dùng uid 8 String
Hòm thư điện tử người dùng uEmail 9 String
Ảnh đại diện người dùng uDp 10 String
Tên biệt danh người dùng uName 11 String
❖ Bảng tin nhắn: Lưu trữ thông tin các tin nhắn trong hệ thống.
Bảng 2 - 3 Thiết kế cấu trúc bảng tin nhắn
STT Thuộc tính Kiểu dữ liệu Mô tả
message 1 String Nội dung tin nhắn
receiver 2 String Mã người nhận
sender 3 String Mã người gửi
timeStamp 4 String Mốc thời gian nhắn tin
type 5 String Kiểu tin nhắn
isSeen 6 Boolean Đã xem tin nhắn hay chưa
❖ Bảng danh sách nhắn tin: Lưu trữ mã người dùng trên hệ thống Firebase.
Bảng 2 - 4 Thiết kế cấu trúc bảng danh sách nhắn tin.
STT Thuộc tính Kiểu dữ liệu Mô tả
1 Id String Mã người dùng
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 22
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
❖ Bảng bình luận: Lưu trữ thông tin các bình buận trong hệ thống.
Bảng 2 - 5 Thiết kế cấu trúc bảng bình luận.
STT Thuộc tính Kiểu dữ liệu Mô tả
cId String Mã bình luận 1
comment String Nội dung bình luận 2
timesStamp String Mốc thời gian bình luận 3
uid String Mốc thời gian 4
uEmail String Hòm thư điện tử của người dùng 5
uDp String Ảnh đại diện người dùng 6
uName String Tên biệt danh người dùng 7
❖ Bảng nhóm tin nhắn: Lưu trữ thông tin các nhóm nhắn tin trong hệ thống.
Bảng 2 - 6 Thiết kế cấu trúc các nhóm nhắn tin.
STT Thuộc tính Kiểu dữ liệu Mô tả
groupId String Mã nhóm 1
groupTitle String Tiêu đề nhóm 2
groupDescription String Mô tả nhóm 3
groupIcon String Biểu tượng nhóm 4
timeStamp String Mốc thời gian tạo nhóm 5
createdBy String Được tạo bởi người dùng 6
uId String Mã người dùng 7
messages String Mã tin nhắn trong nhóm 8
❖ Bảng tin nhắn nhóm: Lưu trữ thông tin các tin nhắn trong nhóm trong hệ thống.
Bảng 2 - 7 Thiết kế cấu trúc bảng tin nhắn nhóm.
STT Thuộc tính Kiểu dữ liệu Mô tả
message String Nội dung tin nhắn nhóm 1
sender String Người gửi tin nhắn 2
timeStamp String Mốc thời gian gửi tin nhắn lên nhóm 3
type String Kiểu tin nhắn 4
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 23
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
2.6 Xây dựng biểu đồ quan hệ thực thể
2.6.1 Ký hiệu sử dụng
Hình 2 - 12 Ký hiệu sử dụng trong biểu đồ quan hệ thực thể
2.6.2 Lập biểu đồ quan hệ thực thể
Hình 2 - 13 Lược đồ quan hệ thực thể
2.6.3 Mối liên kết trong biểu đồ quan hệ thực thể
Quan hệ thực thể giữa Các bài viết và Các người dùng:
• Nhiều người dùng không viết một bài viết nào hoặc viết nhiều bài viết.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 24
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
• Nhiều bài viết được viết bởi một người dùng hoặc nhiều người dùng.
Quan hệ thực thể giữa Các bài viết và Các bình luận:
• Nhiều bài viết có nhiều bình luận hoặc nhiều bài viết không có bình luận.
• Nhiều bình luận được có trong một bài viết hoặc nhiều bài viết
Quan hệ thực thể giữa Các bình luận và Các người dùng:
• Nhiều người dùng bình luận nhiều hoặc nhiều người dùng không bình luận.
• Nhiều bình luận được bình luận bởi một người hoặc bởi nhiều người.
Quan hệ thực thể giữa Các người dùng và Danh sách nhắn tin:
• Một người dùng xem một danh sách nhắn tin
• Một danh sách nhắn tin được xem bởi một người dùng
Quan hệ thực thể giữa Các người dùng và Các tin nhắn:
• Nhiều người dùng viết nhiều tin nhắn hoặc không viết tin nhắn nào.
• Nhiều tin nhắn được viết bởi một người dùng hoặc nhiều người dùng.
Quan hệ thực thể giữa Các tin nhắn và Danh sách nhắn tin:
• Một danh sách nhắn tin chứa một hoặc nhiều tin nhắn.
• Nhiều tin nhắn phải thuộc một danh sách nhắn tin.
Quan hệ thực thể giữa Các người dùng và Danh sách nhóm tin nhắn:
• Một người dùng xem một danh sách nhóm tin nhắn.
• Một danh sách nhóm tin nhắn được xem bởi một người dùng.
Quan hệ thực thể giữa Các người dùng và Tin nhắn nhóm:
• Nhiều người dùng viết nhiều tin nhắn nhóm hoặc không viết tin nhắn nhóm nào.
• Nhiều tin nhắn nhóm được viết bởi một người dùng hoặc nhiều người dùng.
Quan hệ thực thể giữa Tin nhắn nhóm và Danh sách nhóm tin nhắn:
• Một danh sách nhóm tin nhắn chứa một hoặc nhiều tin nhắn nhóm.
• Nhiều tin nhắn nhóm phải thuộc một danh sách nhóm tin nhắn.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 25
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
2.7 Xác định các yêu cầu phi chức năng
▪ Tin nhắn phải cập nhật theo thời gian thực
▪ Tương tác giữa người dùng với hệ thống không nên vượt quá 3s
▪ Có thể hoạt động ổn định trên các dòng điện thoại khác nhau
▪ Thời gian xử lý nhanh
▪ Dễ sử dụng với những giao diện đồ họa thân thiện phù hợp với người dùng
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 26
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
CHƯƠNG 3 CƠ SỞ LÝ THUYẾT
3.1 Hệ điều hành Android
3.1.1 Giới thiệu
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các
thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng. Ban
đầu, Android được phát triển bởi Android, Inc. với sự hỗ trợ tài chính từ Google và sau
này được chính Google mua lại vào năm 2005.
Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm
tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục
tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động. Chiếc điện thoại đầu tiên chạy
Android được bán vào năm 2008.
Hình 3 - 1 Biểu tượng của hệ điều hành Android
Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép Apache.
Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho phép các
nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết được điều chỉnh
và phân phối Android một cách tự do.
Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo chuyên viết các
ứng dụng để mở rộng chức năng của thiết bị, bằng một loại ngôn ngữ lập trình Java có
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 27
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
sửa đổi. Tháng 10 năm 2012, có khoảng 700.000 ứng dụng trên Android, và số lượt tải
ứng dụng từ Google Play, cửa hàng ứng dụng chính của Android, ước tính khoảng 25 tỷ
lượt.
Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh phổ
biến nhất thế giới, vượt qua Symbian OS vào quý 4 năm 2010, và được các công ty công
nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh chỉnh, và
giá rẻ chạy trên các thiết bị công nghệ cao thay vì tạo dựng từ đầu.
Kết quả là mặc dù được thiết kế để chạy trên điện thoại và máy tính bảng, Android
đã xuất hiện trên TV, máy chơi game và các thiết bị điện tử khác. Bản chất mở của
Android cũng khích lệ một đội ngũ đông đảo lập trình viên và những người đam mê sử
dụng mã nguồn mở để tạo ra những dự án do cộng đồng quản lý. Những dự án này bổ
sung các tính năng cao cấp cho những người dùng thích tìm tòi hoặc đưa Android vào
các thiết bị ban đầu chạy hệ điều hành khác.
Android chiếm 87,7% thị phần điện thoại thông minh trên toàn thế giới vào thời
điểm quý 2 năm 2017, với tổng cộng 2 tỷ thiết bị đã được kích hoạt và 1,3 triệu lượt
kích hoạt mỗi ngày. Sự thành công của hệ điều hành cũng khiến nó trở thành mục tiêu
trong các vụ kiện liên quan đến bằng phát minh, góp mặt trong cái gọi là "cuộc chiến
điện thoại thông minh" giữa các công ty công nghệ.
3.1.2 Kiến trúc của hệ điều hành Android
Android có một hạt nhân dựa trên nhân Linux phiên bản 2.6, kể từ Android 4.0 Ice
Cream Sandwich (bánh ngọt kẹp kem) trở về sau, là phiên bản 3.x, với middleware, thư
viện và API viết bằng C, còn phần mềm ứng dụng chạy trên một nền tảng ứng dụng gồm
các thư viện tương thích với Java dựa trên Apache Harmony.
Android sử dụng máy ảo Dalvik với một trình biên dịch động để chạy 'mã dex'
(Dalvik Executable) của Dalvik, thường được biên dịch sang Java bytecode. Nền tảng
phần cứng chính của Android là kiến trúc ARM. Người ta cũng hỗ trợ x86 thông qua dự
án Android x86, và Google TV cũng sử dụng một phiên bản x86 đặc biệt của Android.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 28
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Hình 3 - 2 Kiến trúc của hệ điều hành Android
Nhân Linux dùng cho Android đã được Google thực hiện nhiều thay đổi về kiến
trúc so với nhân Linux gốc. Android không có sẵn X Window System cũng không hỗ
trợ các thư viện GNU chuẩn, nên việc chuyển các ứng dụng hoặc thư viện Linux có sẵn
sang Android rất khó khăn. Các ứng dụng C đơn giản và SDL cũng được hỗ trợ bằng
cách chèn những đoạn shim Java và sử dụng tương tự JNI, như khi người ta chuyển
Jagged Alliance 2 sang Android.
3.1.3 Ưu nhược điểm của hệ điều hành Android
a) Ưu điểm
+ Là hệ điều hành có mã nguồn mở nên khả năng tuỳ biến cao, có thể tùy ý chỉnh sửa
mà không có sự can thiệp hay cấm cản từ Google.
+ Đa dạng sản phẩm, rất nhiều hãng điện thoại, thiết bị công nghệ đã ưu ái chọn Android
cho thiết bị của họ, giá cả thì hợp lý từ bình dân đến cao cấp.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 29
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
+ Kho ứng dụng Google Play Store đồ sộ.
+ Thân thiện và dễ sử dụng.
+ Khả năng đa nhiệm, chạy cùng lúc nhiều ứng dụng cao
b) Nhược điểm
- Dễ nhiễm phần mềm độc hại và virus. Do tính chất mã nguồn mở, nhiều phần mềm
không được kiểm soát có chất lượng không tốt hoặc lỗi bảo mật vẫn được sử dụng.
- Kho ứng dụng quá nhiều dẫn đến khó kiểm soát chất lượng, thiếu các ứng dụng thật
sự tốt.
- Sự phân mảnh lớn. Trong khi một số thiết bị Android xuất sắc đã trình làng như Galaxy
S5, Galaxy Note 4, Xperia Z3…, vẫn còn rất nhiều sản phẩm giá rẻ bình thường khác.
- Cập nhật không tự động với tất cả thiết bị. Khi một phiên bản hệ điều hành mới ra mắt,
không phải tất cả sản phẩm đều được cập nhật, thậm chí nếu muốn trải nghiệm bạn
thường xuyên phải mua mới thiết bị.
3.2 Ngôn ngữ lập trình Java
3.2.1 Lịch sử
Java được khởi đầu bởi James Gosling và đồng nghiệp ở Sun Microsystems năm
1991. Ban đầu ngôn ngữ này được gọi là Oak (có nghĩa là cây sồi, do bên ngoài cơ quan
của ông Gosling có trồng nhiều loại cây này), họ dự định ngôn ngữ đó thay cho C++,
nhưng các tính năng giống Objective C. Không nên lẫn lộn Java với JavaScript, hai ngôn
ngữ đó chỉ giống tên và loại cú pháp như C. Công ty Sun Microsystems đang giữ bản
quyền và phát triển Java thường xuyên. Tháng 04/2011, công ty Sun Microsystems tiếp
tục cho ra bản JDK 1.6.24.
3.2.2 Đặc điểm
Java là ngôn ngữ lập trình hướng đối tượng nên nó cũng có 4 đặc điểm chung của
các ngôn ngữ hướng đối tượng:
▪ Tính trừu tượng (Abstraction): Là tiến trình xác định và nhóm các thuộc tính, các
hành động liên quan đến một thực thể đặc thù, xét trong mối tương quan với ứng
dụng đang phát triển.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 30
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
▪ Tính đa hình (Polymorphism): Cho phép một phương thức có các tác động khác
nhau trên nhiều loại đối tượng khác nhau. Với tính đa hình, nếu cùng một phương
thức ứng dụng cho các đối tượng thuộc các lớp khác nhau thì nó đưa đến những
kết quả khác nhau. Bản chất của sự việc chính là phương thức này bao gồm cùng
một số lượng các tham số.
▪ Tính kế thừa (Inheritance): Điều này cho phép các đối tượng chia sẻ hay mở rộng
các đặc tính sẵn có mà không phải tiến hành định nghĩa lại.
▪ Tính đóng gói (Encapsulation): Là tiến trình che giấu việc thực thi những chi tiết
của một đối tượng đối với người sử dụng đối tượng ấy.
Bên cạnh đó Java còn có một số đặc tính khác:
▪ Độc lập nền (Write Once, Run Anywhere): Không giống như nhiều ngôn ngữ lập
trình khác như C và C ++, khi Java được biên dịch, nó không được biên dịch sang
mã máy cụ thể, mà thay vào đó là mã byte code chạy trên máy ảo Java (JVM).
Điều này đồng nghĩa với việc bất cứ thiết bị nào có cài đặt JVM sẽ có thể thực
thi được các chương trình Java.
Hình 3 - 3 Quá trình biên dịch qua máy ảo JVM
▪ Đơn giản: Học Java thật sự dễ hơn nhiều so với C/C++, nếu bạn đã quen với các
ngôn ngữ lập trình hướng đối tượng thì việc học Java sẽ dễ dàng hơn. Java trở
nên đơn giản hơn so với C/C++ do đã loại bỏ tính đa kế thừa và phép toán con
trỏ từ C/C++.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 31
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
▪ Bảo mật: Java hỗ trợ bảo mật rất tốt bởi các thuật toán mã hóa như mã hóa một
chiều (one way hashing) hoặc mã hóa công cộng (public key).
▪ Đa luồng: Với tính năng đa luồng Java có thể viết chương trình có thể thực thi
nhiều task cùng một lúc. Tính năng này thường được xử dụng rất nhiều trong lập
trình game.
▪ Hiệu suất cao: Nhờ vào trình thu gom rác (garbage collection), giải phóng bộ nhớ
đối với các đối tượng không được dùng đến.
▪ Linh hoạt: Java được xem là linh hoạt hơn C/C ++ vì nó được thiết kế để thích
ứng với nhiều môi trường phát triển.
3.3 Firebase
3.3.1 Firebase là gì?
Firebase là một nền tảng để phát triển ứng dụng di động và trang web, bao gồm
các API đơn giản và mạnh mẽ mà không cần backend hay server. Nó giúp các lập trình
viên rút ngắn thời gian triển khai và mở rộng quy mô của ứng dụng mà họ đang phát
triển.
Firebase là dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây – cloud. Kèm
theo đó là hệ thống máy chủ cực kỳ mạnh mẽ của Google. Chức năng chính là giúp
người dùng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.
Firebase là dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây – cloud. Kèm
theo đó là hệ thống máy chủ cực kỳ mạnh mẽ của Google. Chức năng chính là giúp
người dùng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu cụ
thể là những giao diện lập trình ứng dụng API đơn giản với mục đích nhằm tăng số
lượng người dùng và thu lại nhiều lợi nhuận hơn.
Đặc biệt, còn là dịch vụ đa năng và bảo mật cực tốt. Firebase hỗ trợ cả hai nền
tảng Android và IOS. Không có gì khó hiểu khi nhiều lập trình viên chọn Firebase làm
nền tảng đầu tiên để xây dựng ứng dụng cho hàng triệu người dùng trên toàn thế giới.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 32
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
3.3.2 Lịch sử phát triển
Firebase phát triển từ Envolve, một công ty khởi nghiệp trước đó do James
Tamplin và Andrew Lee thành lập vào năm 2011. Envolve cung cấp cho các nhà phát
triển một API cho phép tích hợp chức năng trò chuyện trực tuyến vào trang web của họ.
Sau khi phát hành dịch vụ trò chuyện, Tamplin và Lee nhận thấy rằng nó đang
được sử dụng để chuyển dữ liệu ứng dụng không phải là tin nhắn trò chuyện. Các nhà
phát triển đã sử dụng Envolve để đồng bộ hóa dữ liệu ứng dụng, chẳng hạn như trạng
thái trò chơi trong thời gian thực giữa người dùng của họ. Tamplin và Lee quyết định
tách biệt hệ thống trò chuyện và kiến trúc thời gian thực cung cấp năng lượng cho nó.
Họ thành lập Firebase như một công ty riêng biệt vào tháng 9 năm 2011 và ra
mắt công chúng vào tháng 4 năm 2012.
Hình 3 - 4 Biểu tượng của Firebase
Sản phẩm đầu tiên của Firebase là Cơ sở dữ liệu thời gian thực của Firebase, một
API đồng bộ hóa dữ liệu ứng dụng trên các thiết bị iOS, Android và Web, đồng thời lưu
trữ trên đám mây của Firebase. Sản phẩm hỗ trợ các nhà phát triển phần mềm trong việc
xây dựng các ứng dụng cộng tác, theo thời gian thực.
3.3.3 Cách thức hoạt động của Firebase
Sau khi Google mua lại và phát triển, Firebase hiện nay bao gồm các hoạt động như:
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 33
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
➢ Firebase Realtime Database:
Khi đăng ký một tài khoản trên Firebase để tạo ứng dụng, bạn đã có một cơ sở dữ
liệu thời gian thực. Dữ liệu bạn nhận được dưới dạng JSON. Đồng thời nó cũng luôn
được đồng bộ thời gian thực đến mọi kết nối client.
Đối với các ứng dụng đa nền tảng, tất cả các client đều sử dụng cùng một cơ sở dữ
liệu. Nó được tự động cập nhật dữ liệu mới nhất bất cứ khi nào các lập trình viên phát
triển ứng dụng. Cuối cùng, tất cả các dữ liệu này được truyền qua kết nối an toàn SSL
có bảo mật với chứng nhận 2048 bit.
Trong trường hợp bị mất mạng, dữ liệu được lưu lại ở local vì thế khi có mọi sự thay
đổi nào đều được tự động cập nhật lên Server của Firebase. Bên cạnh đó, đối với các dữ
liệu ở local cũ hơn với Server thì cũng tự động cập nhật để được dữ liệu mới nhất.
➢ Firebase Authentication:
Hoạt động nổi bật của Firebase Authentication là xây dựng các bước xác thực người
dùng bằng Email, Facebook, Twitter, GitHub, Google. Đồng thời cũng xác thực nặc
danh cho các ứng dụng. Hoạt động xác thực có thể giúp thông tin cá nhân của người sử
dụng được an toàn và đảm bảo không bị đánh cắp tài khoản.
➢ Firebase Hosting:
Hosting được phân phối qua tiêu chuẩn công nghệ bảo mật SSL từ mạng CDN
(Content Delivery Network) - mạng lưới máy chủ lưu giữ bản sao của các nội dung tĩnh
bên trong website và phân phối đến nhiều máy chủ PoP.
Mạng lưới máy chủ CDN được đặt ở khắp mọi nơi trên toàn cầu. Từ PoP (Points of
Presence), dữ liệu sẽ tiếp tục được gửi đến người dùng cuối. Thông qua CDN, bản sao
nội dung trên máy chủ gần nhất sẽ được trả về cho người dùng khi họ truy cập website.
Hoạt động này giúp lập trình viên tiết kiệm thời gian thiết kế, xây dựng và phát triển
ứng dụng.
3.3.4 Ưu nhược điểm của Firebase
a) Ưu điểm
✓ Tạo tài khoản và sử dụng dễ dàng: Firebase cho phép người dùng đăng nhập bằng
tài khoản Google đơn giản. Gói Spark của Firebase miễn phí và cung cấp nhiều
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 34
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
tính năng để giúp các nhà phát triển bắt đầu sử dụng. Khi yêu cầu ngày càng tăng,
tôi chọn gói Blaze có trả phí với nhiều tính năng nâng cao hơn.
✓ Tốc độ phát triển nhanh: Thông thường, mọi Developer cần có quyền truy cập
vào Server và Host để tạo, bảo trì cơ sở dữ liệu và dịch vụ phụ trợ. Do đó, cần có
một Backend Developer và một Frontend Developer để xây dựng các ứng dụng.
Tuy nhiên, việc này thường có thể dẫn đến lỗi và các vấn đề có thể gây ra sự cố
ứng dụng và làm tăng chi phí phát triển. Thông qua việc sử dụng Firebase và
Firestore, Frontend Developer có thể quản lý, giảm thời gian cần thiết để hoàn
thành tất cả công việc.
✓ Nhiều dịch vụ trong một nền tảng: Hai tùy chọn cơ sở dữ liệu là Firestore và
Realtime Database của Firebase. Tương tự như vậy, Firebase cho phép bạn thực
hiện lưu trữ Cloud Media dễ dàng. Nó cũng cho phép phát triển ứng dụng không
cần máy chủ thông qua việc tích hợp Cloud Functions.
Hình 3 - 5 Minh họa sự kết hợp của Firebase và Google Cloud Platform
✓ Được cung cấp bởi Google: Google - một trong những tên tuổi nổi bật và đáng
tin cậy nhất trong thế giới công nghệ kể từ khi mua lại, Firebase đã trải qua một
loạt thay đổi, phát triển và trở thành nền tảng đáng tin cậy như ngày nay. Nó khai
thác sức mạnh của Google Cloud và nhiều dịch vụ của Google.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 35
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
✓ Tập trung vào phát triển giao diện người dùng: Nó cho phép Developer tập trung
vào việc tạo mã Frontend cho các ứng dụng di động. Nền tảng này giúp cho việc
phát triển ứng dụng trở nên thuận tiện và giúp giảm chi phí đáng kể.
✓ Firebase không có máy chủ: Firebase cung cấp một môi trường hoàn toàn không
có máy chủ đi kèm với kiến trúc không máy chủ (Serverless Architecture). Do
đó, bạn sẽ không cần lo lắng về cơ sở hạ tầng máy chủ.
✓ Học máy (Machine Learning): Firebase đi kèm với bộ ML với các API sẵn có
cho các tính năng khác nhau của nền tảng di động như nhận dạng văn bản, nhận
diện khuôn mặt, ghi nhãn hình ảnh, quét mã vạch,…
✓ Tạo lưu lượng truy cập: Firebase hỗ trợ lập chỉ mục ứng dụng để cho phép người
dùng thu hút lại những khách tìm kiếm trên Google. Cụ thể, nó cung cấp liên kết
ứng dụng trên mục tìm kiếm của Google.
✓ Theo dõi lỗi: Firebase có thể theo dõi cả lỗi không nghiêm trọng và lỗi nghiêm
trọng. Đồng thời, báo cáo được tạo dựa trên mức độ ảnh hưởng của lỗi đến trải
nghiệm của người dùng.
✓ Sao lưu: Firebase đảm bảo tính bảo mật tối ưu và tính sẵn có của dữ liệu nhờ các
bản sao lưu thường xuyên. Các ứng dụng được bảo vệ khỏi mọi khả năng mất dữ
liệu bằng cách dựa vào tính năng sao lưu tự động của nền tảng này.
b) Nhược điểm của Firebase
➢ Không phải là mã nguồn mở: Firebase không phải là một tùy chọn mã nguồn mở
để phát triển ứng dụng di động. Điều này khiến nó trở thành một lựa chọn không
tối ưu cho nhiều nhà phát triển. Người dùng không thể sửa đổi mã nguồn Firebase
➢ Người dùng không có quyền truy cập mã nguồn: Việc không có quyền truy cập
vào mã nguồn có thể khá khó khăn đối với một số nhà phát triển. Đặc biệt, đối
với các ứng dụng lớn, việc chuyển sang các nhà cung cấp khác không phải là một
nhiệm vụ dễ dàng và để thực hiện việc này, toàn bộ Backend sẽ cần được xây
dựng lại từ đầu.
➢ Firebase không hoạt động ở nhiều quốc gia: Firebase là một Subdomain của
Google. trang Web chính thức của nó là https://firebase.google.com và bị chặn ở
nhiều quốc gia. Google cùng với các dịch vụ khác của Google bị chặn và không
thể truy cập được ở nhiều quốc gia, trong đó có Trung Quốc.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 36
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
➢ Chỉ hoạt động với Cơ sở dữ liệu NoSQL: Cả Firestore và Firebase Realtime
Database đều cung cấp cấu trúc NoSQL. Người dùng không thể xử lý nhanh
chóng việc di chuyển dữ liệu tương tự như cơ sở dữ liệu SQL đơn giản. Firebase
sử dụng JSON và hầu như không có tính năng SQL nào. Vì vậy, việc di chuyển
từ cơ sở dữ liệu sẽ không dễ dàng.
➢ Truy vấn chậm: Kích thước yêu cầu API tối đa 10 MiB, không có truy vấn tổng
hợp gốc, giới hạn kích thước tài liệu là 1 MiB, kết nối đồng thời tối đa 1M, truy
vấn hiệu suất chậm.
➢ Không phải tất cả các dịch vụ Firebase đều miễn phí: Các chức năng đám mây
chỉ khả dụng trên gói Blaze và người dùng không thể dùng thử dịch vụ trong gói
Spark. API Cloud Vision trong tính năng học máy cũng không khả dụng trong
gói Spark miễn phí của nền tảng này. Dịch vụ này chỉ có sẵn cho người dùng của
gói Blaze và tính phí 1,5 USD/k API.
Hình 3 - 6 Biểu tượng API Cloud Vision của Google
➢ Firebase khá đắt và giá không ổn định: Firebase cung cấp dịch vụ theo mô hình
định giá dựa trên mức sử dụng và không có cách nào để giới hạn giá cả. Không
có bảng giá cố định cho nền tảng và việc theo dõi mức độ sử dụng tài nguyên có
thể là một vấn đề phức tạp.
➢ Chỉ chạy trên Google Cloud: Firebase hiện là một phần của Google và cơ sở hạ
tầng của nó chạy hoàn toàn trên Google Cloud. Bạn sẽ không có tùy chọn để chạy
Firebase trên các nhà cung cấp đám mây khác như AWS, Azure hoặc Digital
Ocean.
➢ Thiếu Dedicated Servers và hợp đồng doanh nghiệp: Firebase không có tùy chọn
Dedicated Servers hoặc hợp đồng doanh nghiệp. Cách duy nhất để sử dụng
Firebase là sử dụng cấu trúc Serverless ít tính linh hoạt hơn.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 37
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
➢ Không cung cấp các API GraphQL: Firebase không cung cấp API GraphQL như
một phần của thiết lập tiêu chuẩn. Mặc dù có những giải pháp thay thế cho việc
triển khai GraphQL với Firebase, REST vẫn là tùy chọn mặc định của nền tảng.
3.4 Android Studio
3.4.1 Giới thiệu chung
Android Studio là môi trường phát triển tích hợp chuyên nghiệp hỗ trợ việc thiết
kế và xây dựng các ứng dụng di động trên nền tảng Android được Google và JetBrains
hợp tác xây dựng nhằm thay thế các phiên bản plugin android dành cho Eclipse ngày
xưa.
3.4.2 Những tính năng chính
Android Studio là môi trường phát triển tích hợp (IDE) chính thức dành cho phát
triển ứng dụng Android, dựa trên IntelliJ IDEA.
Trên trình soạn thảo mã và công cụ phát triển mạnh mẽ của IntelliJ, Android
Studio cung cấp nhiều tính năng nâng cao hiệu suất của bạn khi xây dựng ứng dụng
Android, chẳng hạn như:
• Một hệ thống xây dựng Gradle linh hoạt.
• Trình mô phỏng nhanh và tính năng phong phú.
• Một môi trường hợp nhất nơi bạn có thể phát triển cho tất cả các thiết bị
Android.Đồ án tốt nghiệp chuyên ngành khoa học máy tính
• Instant Run để đẩy các thay đổi vào ứng dụng đang chạy của bạn mà không cần
xây dựng một APK mới.
• Mẫu mã và tích hợp GitHub để giúp bạn xây dựng các tính năng ứng dụng phổ
biến và nhập mã mẫu
• Các công cụ và khuôn khổ thử nghiệm mở rộng.
• Lint công cụ để bắt hiệu suất, khả năng sử dụng, tương thích phiên bản, và các
vấn đề khác.
• Tích hợp hỗ trợ Google Cloud Platform, giúp dễ dàng tích hợp Google Cloud
Messaging và App Engine.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 38
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
CHƯƠNG 4: XÂY DỰNG VÀ PHÁT TRIỂN ỨNG DỤNG
4.1 Thiết kế giao diện
Sử dụng phong cách Material Design. Material Design là hình thức phát triển hơn
của Flat Design (thiết kế phẳng) - một xu hướng ‘làm mưa làm gió’ thời gian gần đây.
Tuy nhiên, thay vì mang đến cảm giác ‘phẳng lì’ trên toàn bộ giao diện, Material Design
là những lớp Flat xếp chồng lên nhau, tạo chiều sâu và điểm nhấn hơn thiết kế phẳng
thông thường.
Material Design chủ yếu tập trung vào những đường nét đơn giản, sử dụng những
gam màu đậm, nổi bật. Đồng thời, chúng thường sử dụng những yếu tố đồ họa có cảm
giác 3D, có hiệu ứng ‘nổi lên’ trên giao diện.
Ngoài ra, thiết kế này còn bao gồm những chuyển động tự nhiên, như khi các nút,
menu hiện trên màn hình chẳng hạn. Tất cả đều nhằm mục đích mang lại cho người
dùng trải nghiệm mới mẻ hơn, thú vị hơn và gần gũi với đời thực.
Một số đặc điểm có thể dùng để ‘nhận dạng’ Material Design là:
• Thường sử dụng những gam màu nổi bật, tuy nhiên vẫn cần thống nhất một mảng
màu chủ đạo
• Các biểu tượng (icon) phẳng, theo phong cách tối giản và dễ hiểu
• Giao diện phẳng, ít hoặc không có hiệu ứng chuyển màu hay đổ bóng
• Tận dụng nhiều khoảng trắng, giúp không gian giao diện khá thoáng và dễ chịu.
• Hiệu ứng chuyển động tự nhiên, mượt mà, dễ để hình dung
• Tránh đi sự nhàm chán: Nhờ có các màu sắc vui vẻ và sinh động hơn, hiệu ứng
chuyển động lôi cuốn hơn.
Android Studio còn có thể tạo ra các biểu tượng cho các loại kích cỡ màn hình một
cách nhanh chóng và đơn giản với tính năng Image Asset.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 39
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
4.2 Firebase Realtime Database
Hình 4 - 1 Cơ sở dữ liệu dạng JSON
Hình 4 - 2 Các model ánh xạ tương ứng
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 40
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Hình 4 - 3 Dữ liệu của Các tin nhắn trong cơ sở dữ liệu
Hình 4 - 4 Dữ liệu của Danh sách nhóm tin nhắn trong cơ sở dữ liệu
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 41
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Hình 4 - 5 Dữ liệu của Các bài viết trong cơ sở dữ liệu
Hình 4 - 6 Dữ liệu của Các người dùng trong cơ sở dữ liệu
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 42
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Hình 4 - 7 Quản lý người dùng với Firebase Authentication
Hình 4 - 8 Quản lý tài nguyên với Firebase Storage
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 43
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Hình 4 - 9 Lấy dữ liệu tất cả người dùng
Hình 4 - 10 Cập nhật bài viết không ảnh
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 44
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Hình 4 - 11 Cấp quyền truy cập vào máy ảnh và kho lưu trữ
Hình 4 - 12 Xóa ảnh trong bài viết
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 45
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
4.3 Thiết kế giao diện ứng dụng
4.3.1 Giao diện đăng ký, đăng nhập
Đây là màn hình hiển thị đầu tiên khi chọn vào ứng dụng.
Người dùng có 2 tùy chọn:
• Đăng ký: nếu người dùng chưa có tài khoản truy cập ứng dụng.
• Đăng nhập: nếu người dùng đã có tài khoản
Hình 4 - 13 Giao diện đăng ký, đăng nhập
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 46
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Tại chức năng đăng ký, người dùng nhập hòm thư điện tử (email) và mật khẩu dùng để
đăng nhập vào ứng dụng.
Nếu người dùng muốn quay trở lại màn hình hiển thị ban đầu chọn mũi tên trên trái để
quay trở lại.
Nếu người dùng đã có tài khoản thì chạm dòng chữ “Đã có tài khoản? Đăng nhập” để
chuyển sang màn hình đăng nhập.
Hình 4 - 14 Giao diện chức năng đăng ký
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 47
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Tại màn hình đăng nhập người dùng nhập email và mật khẩu đã đăng ký để truy cập vào
ứng dụng.
Nếu người dùng quên mật khẩu có thể chạm vào dòng chữ “Quên mật khẩu?Khôi phục”
để reset lại mật khẩu
Có thể chuyển qua màn hình đăng ký nếu chưa có tài khoản ứng dụng.
Hình 4 - 15 Giao diện chức năng đăng nhập
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 48
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
4.3.2 Giao diện trang chủ
Đây là nơi hiển thị đầu tiên sau khi đăng nhập vào ứng dụng. Tại trang chủ sẽ hiển thị
các bài viết trích dẫn hay của mọi người dùng ứng dụng này đăng.
Tại trang chủ cũng sẽ có các nút tạo bài viết, tìm kiếm, đăng xuất.
Người dùng có thể thả thích, bình luận, chia sẻ bài viết tại đây.
Hình 4 - 16 Giao diện trang chủ
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 49
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
4.3.3 Giao diện trang cá nhân
Đây là trang cá nhân của người dùng, tại đây người dùng có thể đặt tên hiển thị, cài ảnh
đại diện, ảnh bìa và xem lại được các bài viết mình đã đăng.
Ngoài ra, người dùng còn có thể sửa đổi mật khẩu, tạo bài viết mới hoặc thêm số điện
thoại cá nhân.
Hình 4 - 17 Giao diện trang cá nhân
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 50
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
4.3.4 Giao diện các người dùng
Đây là nơi hiển thị tất cả người dùng đăng ký sử dụng ứng dụng.
Tại đây, người dùng có thể chọn xem hồ sơ cá nhân người dùng khác hoặc gửi tin nhắn
Hình 4 - 18 Giao diện Các người dùng
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 51
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
4.3.5 Giao diện nhắn tin
Sau khi nhấn vào nhắn tin với người dùng bạn muốn, giao diện sẽ hiển thị trang nhắn
tin như dưới đây. Tại đây, người dùng có thể gửi tin nhắn, gửi ảnh, xem ngày giờ, thời
gian gửi tin, đọc tin nhắn.
Người dùng có thể xem được người kia có đang gõ hay đã đọc nhận được tin nhắn hay
chưa
Ngoài ra, người dùng còn có thể xóa được tin đã nhắn gửi đi
Hình 4 - 19 Giao diện nhắn tin
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 52
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
4.3.6 Giao diện đăng bài viết
Người dùng có thể nhấn vào biểu tượng dấu cộng khoanh tròn tại trang chủ hoặc trang
cá nhân để tạo bài viết. Sau khi chạm vào sẽ hiển thị ra trang như dưới đây
Tại đây người dùng nhập tiêu đề (có thể là tên tác giả, tựa đề sách, hoặc nguồn tham
khảo), chèn thêm ảnh minh họa cho bài viết thêm sinh động và cuối cùng là nội dung.
Hình 4 - 20 Giao diện đăng bài viết
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 53
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
4.3.7 Giao diện sửa thông tin cá nhân
Đây là chức năng nằm trong trang hồ sơ cá nhân của người dùng.
Người dùng nhấn vào biểu tượng hình cây bút có nền màu xanh lá cây thì nó sẽ hiển thị
lên các chức năng để có thể chỉnh sửa các thông tin của người dùng.
Hình 4 - 21 Giao diện sửa thông tin cá nhân
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 54
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
4.4 Kiểm thử và đánh giá hệ thống
4.4.1 Kiểm thử chức năng đăng ký, đăng nhập
Bảng 4 - 1 Kiểm thử chức năng đăng ký, đăng nhập
Trường hợp Kết quả mong đợi Kết quả thưc tế
Hiển thị thông báo: Đúng Tại ô email và mật khẩu không nhập gì cả Email không hợp lệ
Kích vào nút đăng ký, đăng nhập
Hiển thị thông báo: Đúng Nhập email mà không có đuôi @ hay tên miền Email không hợp lệ
Kích vào nút đăng ký, đăng nhập
Hiển thị thông báo: Đúng Nhập email mà không nhập mật khẩu Mật khẩu dài tối thiểu 6 ký tự
Kích vào nút đăng ký, đăng nhập
Hiển thị thông báo: Đúng Nhập mật khẩu mà không nhập email Mật khẩu dài tối thiểu 6 ký tự
Kích vào nút đăng ký, đăng nhập
Hiển thị thông báo: Đúng Nhập đúng email, mật khẩu nhập ít hơn 6 ký tự Mật khẩu dài tối thiểu 6 ký tự
Kích vào nút đăng ký, đăng nhập
Hiển thị thông báo: Đúng Nhập đúng email, nhập đúng mật khẩu Đã đăng ký thành công + tên email
Đăng nhập thành công Kích vào nút đăng ký, đăng nhập
Đúng Hiển thị thông báo: Nhập email chưa đăng ký vào trang đăng nhập Xác thực thất bại
Kích vào nút đăng ký, đăng nhập
Đúng Hiển thị thông báo: Nhập một email đã đăng ký vào trang đăng ký Xác thực thất bại
Kích vào nút đăng ký, đăng nhập
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 55
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
4.4.2 Kiểm thử chức năng đăng bài viết
Bảng 4 - 2 Kiểm thử chức năng đăng bài viết
Trường hợp Kết quả mong đợi Kết quả thực tế
Hiển thị thông báo: Đúng
Nhập tiêu đề Không nhập tiêu đề, không nhập nội dung mô tả, không chèn ảnh
Hiển thị thông báo: Đúng Nhập tiêu đề, không chèn ảnh, không nhập nội dung mô tả Nhập mô tả
Hiển thị thông báo: Đúng
Nhập tiêu đề, nhập mô tả, không chèn ảnh Bài đăng đã được công bố
Hiển thị thông báo: Đúng Nhập tiêu đề, nhập mô tả, chèn ảnh Bài đăng đã được công bố
4.4.3 Kiểm thử chức năng sửa thông tin cá nhân
Bảng 4 - 3 Kiểm thử chức năng Sửa thông tin cá nhân
Trường hợp Kết quả mong đợi Kết quả thực tế
Hiển thị thông báo: Đúng
Chọn sửa ảnh đại diện, sửa ảnh bìa, chọn máy ảnh hoặc chọn thư viện Vui lòng cấp phép truy cập máy ảnh và kho lưu trữ
Hiển thị thông báo: Đúng Chọn ảnh từ thư viện, chọn ảnh từ máy ảnh xong Ảnh đã được cập nhật
Hiển thị thông báo: Đúng Chọn sửa tên hiển thị và nhập tên Đã cập nhật
Kích vào nút cập nhật
Hiển thị thông báo: Đúng
Chọn sửa số điện thoại và nhập số điện thoại Đã cập nhật Kích vào nút cập nhật
Hiển thị thông báo: Đúng
Không hợp lệ Chọn đổi mật khẩu và nhập sai mật khẩu hiện tại, nhập mật khẩu mới
Hiển thị thông báo: Đúng
Mật khẩu đã được cập nhật Chọn đổi mật khẩu và nhập mật khẩu hiện tại, nhập mật khẩu mới
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 56
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
4.4.4 Kiểm thử chức năng tạo nhóm chat
Bảng 4 - 4 Kiểm thử chức năng tạo nhóm nhắn tin
Trường hợp Kết quả mong đợi Kết quả thực tế
Hiển thị thông báo: Đúng
Nhập tiêu đề Không nhập tiêu đề, không nhập mô tả, không chèn ảnh nhóm nhắn tin
Kích vào nút tick
Hiển thị thông báo: Đúng
Nhập mô tả Nhập tiêu đề, không nhập mô tả, không chèn ảnh đại diện nhóm nhắn tin
Kích vào nút tick
Hiển thị thông báo: Đúng Nhập tiêu đề, nhập mô tả, không chèn ảnh Nhóm đã được tạo Kích vào nút tick
Hiển thị thông báo: Đúng Nhập tiêu đề, nhập mô tả, chèn ảnh Nhóm đã được tạo Kích vào nút tick
4.4.5 Kiểm thử chức năng thích, bình luận, chia sẻ
Bảng 4 - 5 Kiểm thử chức năng thích, bình luận, chia sẻ
Trường hợp Kết quả mong đợi Kết quả thực tế
Kích vào nút thích Hiển thị thông báo: Đúng
Đã thích
Hiển thị thông báo: Đúng Kích vào nút bình luận, viết bình luận, gửi bình luận Bình luận đã được thêm
Hiển thị thông báo: Đúng Kích vào nút chia sẻ, chọn nền tảng chia sẻ, nhấn gửi Đã chia sẻ thành công
Qua việc phân tích các trường hợp kiểm thử ứng dụng thì em rút ra kết quả như nhau:
➢ Hệ thống chạy tương đối ổn định.
➢ Tất cả các chức năng mong muốn đều đúng đối với một ứng dụng xã hội nhỏ.
➢ Giao diện đơn giản dễ sử dụng, tuy nhiên chưa được bắt mắt.
➢ Hoàn thành ứng dụng đúng quy định.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 57
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
ĐÁNH GIÁ – KẾT LUẬN
Sau thời gian thực hiện đồ án tốt nghiệp, cùng với sự cố gắng và nỗ lực của bản
thân thì đến nay đồ án của em đã hoàn thành đáp ứng được đầy đủ các chức năng của
đề tài. Trong quá trình thực hiện đồ án, bản thân em đã đạt được nhiều tiến bộ cả về việc
tìm hiểu, nghiên cứu lý thuyết lẫn kỹ năng lập trình, kỹ năng viết và trình bày báo cáo.
Đồ án tốt nghiệp đã hoàn thành đúng thời gian, tiến độ và đạt được các mục tiêu
đặt ra. Các kết quả chính đã đạt được bao gồm:
Về kiến thức:
✓ Hiểu biết hơn về một số quy tắc trong thiết kế giao diện với Material Design.
✓ Sử dụng vận dụng được các kỹ thuật về cấu trúc dữ liệu trong lập trình Android.
✓ Có thêm sự hiểu biết về nền tảng Firebase và giải pháp lưu trữ đám mây.
✓ Phân tích thiết kế đối tượng theo hướng chuyên nghiệp hơn.
Về chương trình:
✓ Chương trình thực hiện được các yêu cầu đề ra của đề tài.
✓ Ứng dụng được xây dựng đã đáp ứng được các chức năng chính.
✓ Giao diện đơn giản, dễ sử dụng với người dùng.
Về báo cáo đồ án tốt nghiệp:
✓ Báo cáo trình bày theo đúng quy định, đầy đủ các nội dung liên quan tới đề tài từ
nghiên cứu lý thuyết đến xây dựng chương trình.
✓ Các hình vẽ bảng biểu được đánh số ghi chú đầy đủ.
✓ Đáp ứng được yêu cầu của một Đồ án tốt nghiệp ngành Công nghệ Thông tin.
Bên cạnh những kết quả đạt được, chương trình vẫn còn một số hạn chế như:
➢ Giao diện chưa được bắt mắt với người dùng.
➢ Vẫn còn phát sinh một số lỗi khiến ứng dụng bị thoát đột ngột.
➢ Bày tỏ cảm xúc chỉ giới hạn bằng một biểu tượng thích.
➢ Chưa có nhiều chức năng hỗ trợ người dùng như tố cáo bài viết hay gửi ý kiến
phản hồi, …
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 58
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
Để tiếp tục phát triển đề tài này trong thực tế em nhận thấy cần phải tiếp tục thực
hiện các công việc sau:
Xử lý các lỗi chặt chẽ hơn.
Xử lý thêm phần đăng nhập và đăng xuất như: kiểm tra đăng nhập khi có người
dùng khác đăng nhập vào tài khoản hiện tại.
Xử lý dữ liệu khi mất kết nối internet.
Tìm kiếm các phương pháp giảm chi phí khi sử dụng Firebase Realtime Database.
Nâng cấp giao diện, cải thiện hình ảnh hiển thị các tính năng.
Phát triển thêm các chức năng đáp ứng các nhu cầu như các mạng xã hội khác.
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 59
Đồ án tốt nghiệp chuyên ngành Khoa học máy tính
TÀI LIỆU THAM KHẢO
[1] https://vi.wikipedia.org/wiki/Android
[2] https://viblo.asia/p/kien-truc-cua-he-dieu-hanh-androidPaLGDYdaelX.
[3] https://viblo.asia/p/activity-va-vong-doi-cua-activity-bWrZngRwlxw.
[4] https://en.wikipedia.org/wiki/Java_(programming_language).
[5] https://hoclaptrinhweb.org/lap-trinh/hoc-java/224-bai-1-tong-quanve-java.html.
[6] https://viblo.asia/p/tim-hieu-firebase-phan-1-ByEZkGPYZQ0.
[7] https://vntoworld.com/android-he-dieu-hanh-co-thi-phan-lon-nhatthe-gioi/.
[8] https://colorme.vn/blog/material-design-la-gi.
[9] https://wiki.matbao.net/firebase-la-gi-giai-phap-lap-trinh-khong-can-backend-
tu-google/#firebase-la-gi
Sinh viên: Nguyễn Anh Tú – Khoa học máy tính K61A 60