LỜI NÓI ĐẦUTrong thời đại công nghệ số hiện nay, các ứng dụng mạng xã hội xem video ngắn đã trở thành một phần không thể thiếu trong cuộc sống hàng ngày của hàng triệu người dùng trên kh
Trang 1HỌC VIỆN KỸ THUẬT MẬT MÃ Khoa Công nghệ thông tin
BÁO CÁO LẬP TRÌNH ANDROID CƠ BẢN
ĐỀ TÀI:
XÂY DỰNG ỨNG DỤNG MẠNG XÃ HỘI XEM VIDEO
NGẮN
Cán bộ hướng dẫn:
TS Lê Anh Tiến
Sinh viên thực hiện:
Đinh Đức Anh Bùi Quý Đôn Nguyễn Quang Huy Ngô Xuân Trọng
Lớp: L03 Nhóm: 17
CT050302 CT050310 CT050325 CT050350
Trang 3HỌC VIỆN KỸ THUẬT MẬT MÃ Khoa Công nghệ thông tin
BÁO CÁO ANDROID CƠ BẢN
ĐỀ TÀI:
XÂY DỰNG ỨNG DỤNG MẠNG XÃ HỘI XEM VIDEO
NGẮN
Nhận xét của cán bộ hướng dẫn:
Điểm chuyên cần:
Điểm báo cáo:
Xác nhận của cán bộ hướng dẫn
Trang 4MỤC LỤC
DANH MỤC HÌNH ẢNH i
DANH MỤC BẢNG BIỂU iii
LỜI CẢM ƠN 1
LỜI NÓI ĐẦU 2
CHƯƠNG 1: PHÂN TÍCH YÊU CẦU HỆ THỐNG 3
1.1 Tổng quan hệ thống ứng dụng thương mại điện tử 3
1.2 Các công nghệ được sử dụng 3
1.2.1 Tổng quan về lập trình đa nền tảng 3
1.2.2 Tổng quan về Flutter framework 6
1.2.3 Tổng quan về NodeJS và framework ExpressJS 8
1.2.5 Tổng quan về Công nghệ Speech – to – text và thư viện speech – to – text của Flutter 14
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 17
2.1 Yêu cầu hệ thống 17
2.1.1 Yêu cầu chức năng 17
2.1.2 Yêu cầu phi chức năng 17
2.2 Biểu đồ Use case 18
2.2.1 Biểu đồ Use case Tổng quát 18
2.2.2 Phân rã biểu đồ Use case 19
2.3 Các biểu đồ tuần tự 22
2.3.1 Biểu đồ tuần tự Đăng ký 22
2.3.2 Biểu đồ tuần tự Đăng nhập 23
2.3.3 Biểu đồ tuần tự Tìm kiếm sản phẩm 23
2.3.4 Biểu đồ tuần tự Thêm sản phẩm vào giỏ hàng 24
2.3.5 Biểu đồ tuần tự Xoá sản phẩm ở giỏ hàng 24
2.3.6 Biểu đồ tuần tự Xem chi tiết sản phẩm 25
2.3.7 Biểu đồ tuần tự Thanh toán 26
2.3.8 Biểu đồ tuần tự Xem chi tiết đơn hàng 27
Trang 52.3.10 Biểu đồ tuần tự Sửa thông tin cá nhân 29
2.3.11 Biểu đồ tuần tự Đổi mật khẩu 30
2.3.12 Biểu đồ tuần tự Thêm sản phẩm 31
2.3.13 Biểu đồ tuần tự Sửa thông tin sản phẩm 32
2.3.14 Biểu đồ tuần tự Xoá sản phẩm 33
2.3.15 Biểu đồ tuần tự Cập nhật trạng thái đơn hàng 34
2.4 Thiết kế cơ sở dữ liệu 35
2.4.1 Sơ đồ kết nối bảng 35
2.4.2 Cấu trúc các bảng 35
CHƯƠNG 3: Kết quả thực nghiệm 37
3.1 Giao diện người dùng (User) 37
3.1.1 Giao diện Đăng nhập 37
3.1.2 Giao diện Đăng ký 38
3.1.3 Giao diện Trang chủ 39
3.1.4 Giao diện Phân loại sản phẩm 40
3.1.5 Giao diện Tìm kiếm sản phẩm 41
3.1.6 Giao diện Sản phẩm 42
3.1.7 Giao diện Giỏ hàng 43
3.1.8 Giao diện Thanh toán 44
3.1.10 Giao diện Thông tin cá nhân 46
3.1.11 Giao diện Đổi mật khẩu 47
3.2 Giao diện Quản lý bán hàng (Admin) 48
3.2.1 Giao diện Quản lý sản phẩm 48
3.2.2 Giao diện Thống kê doanh thu 49
3.2.3 Giao diện Quản lý đơn hàng 50
KẾT LUẬN 51
TÀI LIỆU THAM KHẢO 52
Trang 6DANH MỤC HÌNH ẢN
Hình 1.1 Lập trình đa nền tảng 4
Hình 1.2 Flutter framework 6
Hình 1.3 Cách hoạt động của Node JS 9
Hình 1.4 Luồng hoạt động của ExpressJS 10
Hình 1.5 Cơ chế định tuyến giúp duy trì website của ExpressJS 11
Hình 1.6 Logo của Hệ quản trị cơ sở dữ liệu MongoDB 12
Hình 1.7 Lệnh truy vấn dữ liệu trong MongoDB 13
Hình 1.8 Công nghệ Speech – to – text 14
Hình 2.1 Biểu đồ Use case Tổng quát 18
Hình 2.2 Phân rã biểu đồ Use case Quản lý giỏ hàng 19
Hình 2.3 Phân rã biểu đồ Use case Theo dõi đơn hàng cá nhân 19
Hình 2.4 Phân rã biểu đồ Use case Quản lý sản phẩm 20
Hình 2.5 Phân rã biểu đồ Use case Quản lý đơn hàng 20
Hình 2 6 Phân rã biểu đồ Quản lý thông tin cá nhân 21
Hình 2 7 Biểu đồ tuần tự Đăng ký 22
Hình 2.8 Biểu đồ tuần tự Đăng nhập 23
Hình 2.9 Biểu đồ tuần tự Tìm kiếm sản phẩm 23
Hình 2.10 Biểu đồ tuần tự Thêm sản phẩm vào giỏ hàng 24
Hình 2.11 Biểu đồ tuần tự Xoá sản phẩm ở giỏ hàng 24
Hình 2.12 Biểu đồ tuần tự Xem chi tiết sản phẩm 25
Hình 2.13 Biểu đồ tuần tự Thanh toán 26
Hình 2.14 Biểu đồ tuần tự Xem chi tiết đơn hàng 27
Hình 2.15 Biểu đồ tuần tự Xem thông tin cá nhân 28
Hình 2.16 Biểu đồ tuần tự Sửa thông tin cá nhân 29
Hình 2.17 Biểu đồ tuần tự Đổi mật khẩu 30
Hình 2.18 Biểu đồ tuần tự Thêm sản phẩm 31
Hình 2.19 Biểu đồ tuần tự Sửa thông tin sản phẩm 32
Hình 2.20 Biểu đồ tuần tự Xoá sản phẩm 33
Hình 2.21 Biểu đồ tuần tự Cập nhật trạng thái đơn hàng 34
Hình 2.22 Sơ đồ kết nối các bảng 35
Hình 3.1 Giao diện Đăng nhập 37
Hình 3.2 Giao diện Đăng ký 38
Hình 3.3 Giao diện trang chủ 39
Trang 7Hình 3.5 Giao diện Tìm kiếm sản phẩm 41
Hình 3.6 Giao diện Sản phẩm 42
Hình 3.7 Giao diện Giỏ hàng 43
Hình 3.8 Giao diện Thanh toán 44
Hình 3.9 Giao diện Quản lý tài khoản 45
Hình 3.10 Giao diên Thông tin cá nhân 46
Hình 3.11 Giao diện Đổi mật khẩu 47
Hình 3 12 Giao diện Quản lý sản phẩm (Admin) 48
Hình 3 13 Giao diện Thống kê doanh thu (Admin) 49
Hình 3 14 Giao diện Quản lý đơn hàng (Admin) 50
Trang 8DANH MỤC BẢNG BIỂU
Bảng 2.1 Bảng người dùng 35
Bảng 2.2 Bảng đơn hàng 36
Bảng 2.3 Bảng sản phẩm 36
Bảng 2.4 Bảng đánh giá sản phẩm 36
Trang 9Nhóm sinh viên thực hiện đề tài
Trang 10LỜI NÓI ĐẦU
Trong thời đại công nghệ số hiện nay, các ứng dụng mạng xã hội xem video ngắn đã trở thành một phần không thể thiếu trong cuộc sống hàng ngày của hàng triệu người dùng trên khắp thế giới Với sự phát triển nhanh chóng và phổ biến rộng rãi, các nền tảng như TikTok, Instagram Reels và YouTube Shorts không chỉ cung cấp những trải nghiệm giải trí tuyệt vời
mà còn tạo nên những xu hướng mới, kết nối cộng đồng và thúc đẩy sự sáng tạo không ngừng.
Đề tài “Xây dựng ứng dụng mạng xã hội xem video ngắn” này sẽ cung cấp một cái nhìn tổng
quan cơ bản về hệ thống ứng dụng mạng xã hội xem video ngắn hiện nay, từ giao diện người dùng, hệ thống backend, lưu trữ và phân phối nội dung, tính năng xã hội Qua đó, chúng ta sẽ hiểu rõ hơn về cách thức hoạt động, tầm quan trọng và ảnh hưởng của các ứng dụng này trong cuộc sống số hiện đại.
Nội dung của báo cáo bao gồm:
Chương 1 Phân tích yêu cầu hệ thống – Trình bày một số khái niệm, định
nghĩa cơ bản và cơ sở lý thuyết liên quan; Tổng quan về yêu cầu hệ thống và cáccông nghệ được sử dụng
Chương 2 Phân tích và thiết kế hệ thống – Trình bày tổng quan quá trình
phân tích và thiết kế hệ thống: Phân tích và xác định quan hệ giữa các lớp trong hệthống; Thiết kế cấu trúc hệ thống
Chương 3 Kết quả thực nghiệm – Trình bày kết quả đạt được: Giao diện và
các chức năng của hệ thống; Phương hướng phát triển
Trang 11CHƯƠNG 1: PHÂN TÍCH YÊU CẦU HỆ THỐNG
1.1 Tổng quan hệ thống ứng dụng mạng xã hội xem video ngắn
Hệ thống ứng dụng mạng xã hội xem video ngắn, như TikTok, Instagram Reels và YouTube Shorts, đã trở thành một phần không thể thiếu của cuộc sống số hiện đại Các ứng dụng này cho phép người dùng tạo, chia sẻ và xem các video ngắn, thường từ 15 giây đến 1 phút, với các tính năng mạnh mẽ và trải nghiệm người dùng phong phú.
1.2 Các công nghệ được sử dụng
1.2.1 Tổng quan về lập trình Android
1.2.1.1 Khái niệm về nền tảng Android
Android là một hệ điều hành dựa trên nền tảng Linux Nó được thiết kế ra
để 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 minhhay máy tính bảng
Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phépApache Chính mã nguồn mở và những giấy phép không có quá nhiều ràng buộc
Đã tạo điều kiện thuận lợi để Android phát triển 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 Androidmột cách tự do Thêm vào đó Android còn có một cộng đồng đông đảo các lậptrình viên và các chuyên gia có thể chuyên viết các ứng dụng để mở rộng chứcnăng của thiết bị
Hình 1.1 Nền tảng Android
Trang 12Về kiến trúc của hệ điều hành Android, bao gồm các tầng kiến trúc sau:
Tầng Applications: Là tầng chứa các ứng dụng Danh bạ, Gọi điện, Trình
duyệt, Nghe nhạc, … các ứng dụng này thường mua máy về chúng ta đã có sẵn rồi
Tầng Framework: Là tầng chứa các API để làm việc với hệ điều hành như
lấy thông tin danh bạ, quản lý các Activity (Activity là gì thì giờ chúng ta chưa cần quan tâm, các bài sau sẽ giải thích kĩ), quản lý địa điểm, quản lý các View (cũng chưa cần quan tâm)
Tầng Libraries: Chứa các thư viện, API gần như là cốt lõi của Android, bao
gồm bộ quản lý bề mặt cảm ứng (Surface Manager), OpenGL (phục vụ cho việc dựng đồ họa phức tạp), …
Tầng Android Runtime: Chứa các thư viện lõi của Android và máy ảo
Dalvik Virtual Machine (từ Android 4 trở lên chúng ta có thêm máy ảo ART)
Tầng Kernel: Là nhân lõi của hệ điều hành, chứa các tập lệnh, driver giao
tiếp giữa phần cứng và phần mềm của Android
1.2.1.2 Các ngôn ngữ lập trình Android phổ biến ngày nay
Mặc dù Android hỗ trợ nhiều ngôn ngữ lập trình khác nhau, nhưng nhữngngôn ngữ phổ biến nhất cho lập trình Android được sử dụng để phát triển là:
Ngôn ngữ Java: Java là ngôn ngữ lập trình Android đầu tiên được hỗ trợ
trên nền tảng Android Với sự ổn định và thư viện phong phú, Java vẫn làlựa chọn phổ biến cho nhiều nhà phát triển Android
Ngôn ngữ Kotlin: Kotlin, được Google chính thức hỗ trợ vào năm 2017,
nhanh chóng trở thành ngôn ngữ chính thay thế Java Kotlin được ưachuộng vì cú pháp ngắn gọn, an toàn và hiện đại hơn
Ngôn ngữ C++: C++ được sử dụng trong Android thông qua Android
NDK (Native Development Kit) Ngôn ngữ này chủ yếu được sử dụng đểviết các phần mềm yêu cầu hiệu suất cao, như các game hoặc ứng dụng
đồ họa phức tạp
Ngôn ngữ Python: Python không phổ biến như Java hay Kotlin trong lập
trình Android, nhưng vẫn có thể sử dụng thông qua các công cụ và thưviện như Kivy hoặc BeeWare
Trang 13 Ngôn ngữ Dart: Dart, được sử dụng với framework Flutter, là một ngôn
ngữ lập trình mới nổi cho phát triển ứng dụng Android Flutter cho phéptạo ra các ứng dụng đẹp mắt và hiệu suất cao trên cả Android và iOS
1.2.2 Tổng quan về Flutter framework
1.2.2.1 Giới thiệu về Flutter framework
Kotlin là một ngôn ngữ lập trình hiện đại, tĩnh (statically typed), được phát
triển bởi JetBrains và chính thức công bố vào năm 2011 Kotlin được thiết kế để tương thích hoàn toàn với Java và Java Virtual Machine (JVM), đồng thời cung cấp
cú pháp gọn gàng, dễ đọc và nhiều tính năng hữu ích Vào năm 2017, Google công
bố Kotlin là ngôn ngữ chính thức để phát triển ứng dụng Android, bên cạnh Java
Hình 1.2 Ngôn ngữ Kotlin
1.2.2.2 Tại sao nên sử dụng Kotlin
Tương thích với Java: Kotlin có thể làm việc cùng với Java mà không gặp
vấn đề gì, cho phép các lập trình viên sử dụng cả hai ngôn ngữ trong cùng một dự
án Điều này giúp dễ dàng chuyển đổi từ Java sang Kotlin mà không cần phải viếtlại toàn bộ mã nguồn
Cú pháp ngắn gọn và dễ đọc: Kotlin cung cấp cú pháp ngắn gọn, giúp giảm
thiểu lượng mã nguồn cần viết và tăng tính đọc được của mã Điều này giúp lậptrình viên dễ dàng duy trì và quản lý mã nguồn
Null Safety: Kotlin được thiết kế để giảm thiểu các lỗi liên quan đến giá trị
null, một vấn đề phổ biến trong Java Bằng cách cung cấp hệ thống loại không chấp
Trang 14nhận giá trị null (nullable types), Kotlin giúp lập trình viên tránh được lỗiNullPointerException.
Hỗ trợ các tính năng hiện đại: Kotlin hỗ trợ nhiều tính năng lập trình hiện
đại như lambda expressions, higher-order functions, extension functions, vàcoroutines (được sử dụng để xử lý lập trình bất đồng bộ một cách hiệu quả)
Cộng đồng và hỗ trợ: Kotlin có một cộng đồng lập trình viên năng động và
tài liệu phong phú, giúp dễ dàng tìm kiếm hỗ trợ và học hỏi từ các nguồn tàinguyên trực tuyến
1.2.2.3 Những điểm cần lưu ý khi sử dụng Kotlin
Những điểm yếu của Kotlin:
Hiệu suất biên dịch chậm hơn: Kotlin có thể có thời gian biên dịch chậm
hơn so với Java, đặc biệt là trong các dự án lớn Tuy nhiên, JetBrains vàcộng đồng đang liên tục cải thiện hiệu suất biên dịch
Kích thước tệp biên dịch lớn hơn: Do tích hợp nhiều tính năng và thư
viện, tệp biên dịch Kotlin có thể lớn hơn so với Java Điều này có thể ảnhhưởng đến kích thước cuối cùng của ứng dụng
Khó làm quen với người mới: Mặc dù Kotlin dễ học đối với lập trình viên
Java, những người mới bắt đầu lập trình hoặc không quen với các tínhnăng hiện đại của ngôn ngữ lập trình có thể cần thời gian để làm quen
Thiếu tài liệu và ví dụ so với Java: Mặc dù đang ngày càng phổ biến,
Kotlin vẫn chưa có nhiều tài liệu và ví dụ thực tế như Java Điều này cóthể gây khó khăn cho lập trình viên khi tìm kiếm giải pháp cho các vấn đề
Các dịch vụ và tính năng chính của Firebase:
Trang 15 Realtime Database: Một cơ sở dữ liệu NoSQL cho phép lưu trữ và đồng
bộ dữ liệu giữa người dùng trong thời gian thực Dữ liệu được lưu trữ
dưới dạng JSON và có thể được truy cập từ cả ứng dụng di động và web.
Firestore (Cloud Firestore): Một cơ sở dữ liệu NoSQL linh hoạt và có
khả năng mở rộng cao, cũng hỗ trợ đồng bộ dữ liệu thời gian thực.Firestore cung cấp các truy vấn phức tạp và tích hợp tốt với các sản phẩmkhác của Firebase
Authentication: Dịch vụ xác thực người dùng hỗ trợ nhiều phương thứcđăng nhập khác nhau như email/mật khẩu, số điện thoại, và các dịch vụbên thứ ba như Google, Facebook, Twitter
Cloud Storage: Lưu trữ và quản lý các tệp lớn như ảnh, video, và các nội
dung đa phương tiện khác Cloud Storage cung cấp khả năng mở rộng,bảo mật và tính sẵn sàng cao
Cloud Functions: Cho phép chạy mã backend tùy chỉnh trong môi trường
đám mây mà không cần quản lý server Cloud Functions có thể được kíchhoạt bởi nhiều sự kiện khác nhau như thay đổi trong Firestore, xác thựcngười dùng, hoặc từ các yêu cầu HTTP
Firebase Hosting: Cung cấp dịch vụ hosting cho các trang web tĩnh và
nội dung động với hiệu suất cao và bảo mật Firebase Hosting tích hợp tốtvới các dịch vụ khác của Firebase như Cloud Functions và CloudFirestore
Analytics: Cung cấp công cụ phân tích chi tiết về cách người dùng tương
tác với ứng dụng Firebase Analytics giúp theo dõi các sự kiện, hành vingười dùng và các thông tin quan trọng khác
Cloud Messaging (FCM): Dịch vụ gửi thông báo đẩy (push notifications)miễn phí cho các ứng dụng iOS, Android và web FCM hỗ trợ gửi thôngbáo theo nhiều tiêu chí khác nhau và theo dõi hiệu quả của chúng
Remote Config: Cho phép thay đổi cấu hình và hành vi của ứng dụng từ
xa mà không cần cập nhật lại ứng dụng Remote Config giúp điều chỉnh
và cá nhân hóa trải nghiệm người dùng một cách nhanh chóng
Firebase Performance Monitoring: Công cụ giám sát hiệu suất ứng dụng,giúp theo dõi và phân tích các vấn đề liên quan đến hiệu suất để cải thiện
trải nghiệm người dùng
Trang 16Hình 1.3 Các dịch vụ của Firebase
Trang 17CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG
2.1.2 Yêu cầu phi chức năng
Hiệu suất: Hệ thống cần phải đáp ứng được số lượng lớn người dùng
đồng thời mà không làm giảm hiệu suất
Bảo mật: Dữ liệu của người dùng cần được bảo vệ khỏi các cuộc tấn công
và rò rỉ thông tin
Tính sẵn sàng: Hệ thống cần phải hoạt động liên tục, 24/7, để đáp ứng
nhu cầu của người dùng
Dễ sử dụng: Giao diện người dùng cần phải thân thiện và dễ sử dụng.
Tính mở rộng: Hệ thống cần được thiết kế để có thể mở rộng khi nhu cầu
người dùng tăng
2.2 Biểu đồ Use case
2.2.1 Biểu đồ Use case Tổng quát
Ta thấy hệ thống có tác nhân là: Người dùng cùng với các chức năng chính
Trang 18Hình 2.1 Biểu đồ Use case Tổng quát
2.2.2 Phân rã biểu đồ Use case
2.2.2.1 Phân rã biểu đồ Use case Quản lý thông tin cá nhân
Trang 19Use case Quản lý thông tin cá nhân được thực hiện bởi Người dùng và có thểphân rã thành hai Use case là: Xem thông tin cá nhân, Đổi avatar.
Hình 2.2 Phân rã biểu đồ Use case Quản lý thông tin cá nhân
2.2.2.2 Phân rã biểu đồ Use case Tương tác video
Use case Tương tác video được thực hiện bởi Người dùng và có thể phân rãthành hai Use case là: Thích video và Bình luận video
Hình 2.3 Phân rã biểu đồ Use case Tương tác video