1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài tập lớn môn lập trình hướng Đối tượng chủ Đề xây dựng website Đọc truyện

22 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Website Đọc Truyện
Tác giả Bùi Thị Trang, Phạm Văn Sơn, Trần Đức Tài, Ngô Văn Hoàng
Người hướng dẫn Nguyễn Mạnh Sơn
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành Lập Trình Hướng Đối Tượng
Thể loại Báo cáo
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 22
Dung lượng 2,14 MB

Nội dung

Tuy nhiên, sự phát triển nhanh chóng của số lượng truyện và người dùng dẫn đến các thách thức như:  Làm thế nào để quản lý hàng trăm, thậm chí hàng ngàn truyện, danh mục và bình luận?.

Trang 1

HỌC VI N CÔNG NGH Ệ Ệ BƯU CHÍNH VIỄ N THÔNG

MÔN : L ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Hà Nội, tháng 11 năm 2024

Trang 2

1

MỤC L C Ụ

L i cờ ảm ơn 2

Phân công nhiệm vụ 3

1 GIỚI THIỆU DỰ ÁN 4

1.1 Mục tiêu dự án 4

1.2 Đề xuất giải pháp 4

1.3.Mục tiêu học tập 5

2 KỸ THUẬT CÔNG NGHỆ SỬ DỤNG 6

2.1 Spring Boot 6

2.2 Java 7

2.3 Hibernate (Java Persistence API - JPA) 7

2.4 Thymeleaf 7

2.5 Maven 7

2.6 Validation API 7

2.7 Spring MVC 8

2.8 H2 Database 8

3 KIẾN TRÚC HỆ THỐNG 8

3.1 Tổng quan kiến trúc 8

3.2 Phân tích từng thành phần 9

3.2.1.Entity Classes (Model): 9

3.2.2.REST API Endpoints (Controller): 9

4 PHÂN TÍCH CHỨC NĂNG CHI TIẾT 9

4.1 Chức năng Quản trị Blog (Admin) 10

Xem danh sách truyện 10

Xóa truy n 11 ệ 4.2 Chức năng Người dùng (User) 13

Đăng ký tài khoản 13

Thích ho c b thích truy nặ ỏ ệ 15

5. KẾT QU Ả CÀI ĐẶT 17

5.2 Hình nh giao di nả ệ 17

5.3 Đánh giá hiệu quả hoạt động 20

6 HƯỚNG PHÁT TRIỂN VÀ CẢI TIẾN 20

7 TÀI LI U THAM KH OỆ Ả 21

Trang 3

IT Chính nhờ những bài giảng và chia sẻ tâm huyết của thầy mà chúng em có được nền tảng vững chắc và tự tin hơn trong hành trình tiếp theo Chúng em cũng xin cảm ơn thầy đã dành thời gian để giải đáp các thắc mắc, cung cấp tài liệu tham khảo và định hướng tư duy OOP đúng đắn cho chúng em

Trong quá trình làm báo cáo, do kiến thức của chúng em còn hạn chế, nên không tránh khỏi những thiếu sót Chúng em rất mong nhận được sự góp ý của Thầy cũng như các bạn để giúp chúng em khắc phục những khuyết điểm và phát triển hơn trong tương lai

Cuối cùng,chúng em xin chúc thầy thật nhiều sức khỏe,thành công hơn nữa với các lứa D23,D24 trong hành trình chinh phục những môn lập trình nền tảng cũng như chinh phục đỉnh cao của ICPC

Xin chân thành cảm ơn !!!

-Nhóm sinh viên 14.01

Trang 4

3

Phân công nhiệm vụ

Trang 5

1 GIỚI THIỆU DỰ ÁN

1.1 Mục tiêu dự án

Trong thời đại công nghệ số, blog truyện là một nền tảng phổ biến để các tác giả chia sẻ truyện và tương tác với độc giả Tuy nhiên, sự phát triển nhanh chóng của số lượng truyện và người dùng dẫn đến các thách thức như:

 Làm thế nào để quản lý hàng trăm, thậm chí hàng ngàn truyện, danh mục và bình luận?

 Làm sao để độc giả dễ dàng tìm kiếm truyện yêu thích hoặc khám phá các thể loại mới?

 Cần có công cụ để quản trị viên theo dõi, thống kê và quản lý toàn bộ hệ thống một cách hiệu quả

Vì vậy, một hệ thống quản lý blog truyện hiện đại không chỉ cần xử lý các thao tác cơ bản (đăng tải, xóa truyện) mà còn phải đảm bảo hiệu suất, bảo mật và trải nghiệm người dùng tốt

1.2 Đề xuất giải pháp

Hệ thống quản lý blog truyện được xây dựng dựa trên Java, sử dụng Spring Boot để phát triển backend và MySQL làm cơ sở dữ liệu Các tính năng chính bao gồm:

1. Quản lý Blog Truyện:

o Đăng tải, chỉnh sửa, xóa và tìm kiếm truyện

o Phân loại truyện

o Danh mục và quản lý thông tin truyện

2. Quản lý Người dùng:

Trang 6

5

Hỗ trợ đăng ký, đăng nhập

o Theo dõi truyện yêu thích và bình luận

o Quản lý thông tin cá nhân

3. Quản lý Danh mục:

o Thêm, chỉnh sửa, xóa danh mục truyện

o Thống kê mức độ phổ biến của từng danh mục

4. Thống kê và Báo cáo:

o Thống kê truyện được yêu thích nhất, danh mục phổ biến và người dùng tích cực

1.3.Mục tiêu học tập

Trong quá trình thực hiện bài tập lớn , nhóm chúng em đặt ra những mục tiêu học tập cụ thể như sau:

1. Hiểu rõ hơn về lập trình hướng đối tượng:

o Nắm vững các nguyên lý cơ bản của OOP như tính kế thừa, tính đa hình, tính đóng gói và trừu tượng hóa

o Áp dụng các nguyên lý này vào việc thiết kế và triển khai hệ thống phần mềm thực tế

3. Tăng cường kỹ năng làm việc nhóm:

o Phân chia công việc, phối hợp chặt chẽ giữa các thành viên trong nhóm để đảm bảo tiến độ và chất lượng của bài tập lớn

o Học cách sử dụng các công cụ quản lý dự án như GitHub để quản lý mã nguồn và hợp tác hiệu quả

Trang 7

4. Sử dụng thành thạo các công cụ và công nghệ liên quan:

o Thực hành lập trình với Java, sử dụng Spring Boot để xây dựng ứng dụng web và MySQL để quản lý cơ sở dữ liệu

o Làm quen với cách tổ chức mã nguồn, xử lý lỗi và tối ưu hóa hệ thống

5. Phát triển tư duy giải quyết vấn đề:

Đối mặt v i các thách thứớ c th c tế trong quá trình triển khai dự án, từ đó rèn ựluy n kh ệ ả năng phân tích vấn đề, tìm ki m và áp d ng gi i pháp phù h p ế ụ ả ợ

 Spring Boot Starter Security: Đảm b o b o m t cho ng d ng b ng cách ả ả ậ ứ ụ ằcung cấp các chức năng authentication (xác thực) và authorization (ủy quy n) ề

 Spring Boot Starter Thymeleaf: Tích hợp Thymeleaf để xây d ng giao ự

diện người dùng (UI) động và d dàng liên k t vễ ế ới dữ liệ ừ u t backend

 Spring Boot Starter Validation: Hỗ trợ xác thực dữ liệu đầu vào của các API thông qua các annotation như @NotNull, @Size, @Email, v.v

 Spring Boot Starter Web: Hỗ trợ xây d ng các API RESTful và ng d ng ự ứ ụweb MVC (Model-View-Controller)

Trang 8

7

2.2 Java

 S d ng ử ụ Java 17, m t phiên b n LTS (Long-Term Support) c a Java, cung c p ộ ả ủ ấ

hiệu năng tốt hơn, cú pháp hiện đại, và c i ti n v b o mả ế ề ả ật

2.3 Hibernate (Java Persistence API - JPA)

Hibernate là công cụ ORM chính được sử ụ d ng thông qua Spring Data JPA Các tính năng bao gồm:

 Ánh xạ đối tượng Java với các bảng trong cơ sở ữ liệ d u

 Quản lý truy v n t ấ ự động (Query Generation)

 Hỗ trợ các chức năng CRUD (Create, Read, Update, Delete) và các truy

 @NotNull: Xác nh n rậ ằng trường d ữ liệu không được null

 @Size: Đảm bảo độ dài của chuỗi nằm trong khoảng quy định

 @Email: Kiểm tra định d ng email h p l ạ ợ ệ

Trang 9

2.7 Spring MVC

S dử ụng Spring MVC để ổ chức cấ t u trúc dự án theo mô hình Model-ViewController:

- Model: Đại di n cho các d u t ệ ữ liệ ừ cơ sở ữ liệ d u (thông qua các entity)

 View: Được xây dựng bằng Thymeleaf

 Controller: X lý logic và liên k t gi a model và view ử ế ữ

2.8 H2 Database

Trong quá trình phát triển hoặc kiểm thử ự, d án có th s d ng ể ử ụ H2 Database như một cơ sở dữ liệu nhúng Điều này giúp giảm độ phức tạp khi không c n kầ ết nố ới cơ sở ữ liệi v d u thật

3 KIẾN TRÚC HỆ THỐNG

3.1 Tổng quan kiến trúc

Hệ thống áp dụng kiến trúc MVC (Model-View-Controller):

 Model: Định nghĩa các thực thể chính (Blog, Category, User, Comment)

 View: Hiển thị giao diện cho người dùng cuối thông qua các template

HTML/Thymeleaf

 Controller: Quản lý luồng dữ liệu giữa Model và View, xử lý các yêu cầu từ người dùng

Trang 10

9

3.2 Phân tích từng thành phần

3.2.1.Entity Classes (Model):

o Blog: Lưu thông tin truyện, bao gồm tiêu đề, nội dung, hình ảnh, danh mục liên quan

o Category: Quản lý danh mục thể loại như hành động, lãng mạn, viễn tưởng

o User: Thông tin tài khoản người dùng và vai trò (Admin, User)

o Comment: Lưu các bình luận của người dùng về truyện

3.2.2.REST API Endpoints (Controller):

Mỗi Controller chịu trách nhiệm xử lý một nhóm chức năng cụ thể, như:

o BlogController: Quản lý các truyện do người dùng tạo

o UserAdminController: Quản lý danh sách người dùng

o StatisticController: Thống kê dữ liệu

4 PHÂN TÍCH CHỨC NĂNG CHI TIẾT

Trang 11

4.1 Chức năng Quản trị Blog (Admin)

Xem danh sách truyện

Mô tả: Cho phép Admin quản lý và theo dõi danh sách các truyện hiện có trong hệ thống

Dữ liệu được hiển thị dưới dạng bảng và có hỗ trợ phân trang để dễ dàng quản lý số lượng lớn truyện

 Endpoint: GET /admin/blogs

3 Kết quả bao gồm thông tin:

o Tiêu đề truyện (title)

o Tác giả (authorName)

o Danh mục (categoryName)

o Trạng thái (published, draft)

4 Trả kết quả về giao diện adminBlogs.html và gửi kèm dữ liệu cần thiết (danh sách truyện, tổng số trang, số trang hiện tại)

Trang 12

11

VÍ DỤ :

Xóa truyện

Mô tả: Admin có quyền xóa các truyện không còn cần thiết Khi xóa, hệ thống cũng đảm

bảo xóa sạch dữ liệu liên quan như danh sách yêu thích hoặc thông tin phụ khác

 Endpoint: GET /admin/blogs/delete/{blogId}

Quy trình xử lý:

1 Nhận blogId từ URL (ví dụ: )

2 Gọi blogService.delete(blogId) để xử lý:

o Xóa truyện khỏi bảng blogs

o Gỡ bỏ truyện ra khỏi bảng liên kết user_favorites

o Xóa hình ảnh liên quan đến truyện (nếu có)

3 Sau khi xóa thành công:

o Hiển thị thông báo "Xóa truyện thành công" qua flashMessage

Trang 13

Chuyển hướng về danh sách truyện /admin/blogs

Ví dụ thực tế: Trước và sau khi xóa :

Trang 14

13

4.2 Ch ức năng Ngườ i dùng (User)

Đăng ký tài khoản

Mô tả: Người dùng tạo tài khoản mới để tham gia sử dụng các tính năng như đọc truyện,

thích truyện, hoặc đăng bài viết

 Endpoint: POST /registration

Quy trình xử lý:

1 Người dùng nhập thông tin trong form đăng ký, bao gồm:

o Tên đăng nhậ (username) p

o Mật kh u ẩ (password) và xác nh n m t khậ ậ ẩu (confirmPassword)

o Email (optional)

2 Hệ thống nh n yêu cậ ầu đăng ký và thực ện các bước kiểhi m tra:

o Kiểm tra lỗi nhập liệu:

 Tên tài khoản không được rỗng

 Mật khẩu và xác nh n m t kh u phậ ậ ẩ ải khớp

Trang 15

o Kiểm tra tài kho ản đã tồn tạ : i

 Nếu tên tài khoản đã tồ ại trong bản t ng users, hi n th l i: ể ị ỗ

"Tên tài khoản đã tồn tại"

3 Nếu tất cả thông tin h p l : ợ ệ

o Mã hóa m t kh u b ng thuậ ẩ ằ ật toán BCrypt

o Lưu thông tin tài khoản mới vào bảng users

4 Trả ề v thông báo "T o tài kho n thành công" và chuyạ ả ển hướng đến trang đăng nhập /login

Trang 16

15

Thích ho c b thích truy ặ ỏ ện

Mô tả: Người dùng có thể thêm hoặc xóa truyện khỏi danh sách yêu thích cá nhân

 Endpoint:

o Thích truyện: GET /blog/like/{blogId}

o B ỏ thích truyện: GET /blog/unlike/{blogId}

Quy trình xử lý:

1. Thích truyện (/blog/like/{blogId} ):

 Nhận blogId t URL (ví dừ ụ: /blog/like/123 )

 Kiểm tra xem người dùng đã thích truyện này chưa bằng cách tìm trong bảng user_favorites

 Nếu chưa thích:

 Thêm m t b n ghi m i vào b ng user_favorites v i thông tin: ộ ả ớ ả ớ

 C p nhậ ật số lượt thích trong b ng blogs (likes = likes + 1 ả )

 Gửi thông báo "Bạn đã thích truyện này"

2. Bỏ thích truyện (/blog/unlike/{blogId} ):

 Nhận blogId t URL (ví dừ ụ: /blog/unlike/123 )

 Xóa bản ghi tương ứng khỏi bảng user_favorites

 C p nhậ ật số lượt thích trong b ng blogs (likes = likes - 1 ả )

 Gửi thông báo "Bạn đã bỏthích truyện này"

Ví dụ thực tế:

o Người dùng john_doe thích truyện có ID = 123:

 Yêu cầu: GET /blog/like/123

 Kết quả:

Trang 17

Truyện được thêm vào danh sách yêu thích của john_doe

 Tổng lượt thích của truyện tăng thêm 1

 Thông báo: "Bạn đã thích truyện này"

Trang 18

17

5 KẾT QU Ả CÀI ĐẶT

5.1 Minh h a (demo b ng thuy t trình ) ọ ằ ế

5.2 Hình nh giao di n ả ệ

Trang 20

19

Trang 21

5.3 Đánh giá hiệu quả hoạt động

Hệ thống quản lý blog truyện sau khi triển khai đã đáp ứng các yêu cầu đặt ra:

o Khả năng quản lý: Hỗ trợ quản trị viên dễ dàng theo dõi, chỉnh sửa và thống kê

dữ liệu truyện

o Tương tác người dùng: Độc giả có thể thích, bình luận và khám phá nội dung

mới nhanh chóng

o Hiệu suất: Hệ thống xử lý hàng trăm yêu cầu đồng thời nhờ sử dụng Spring Boot

và các chiến lược tối ưu hóa truy vấn SQL

Một số chỉ số hiệu suất đáng chú ý:

o Thời gian phản hồi trung bình: ~300ms

o Thời gian tải trang: ~1 giây cho các trang có nhiều dữ liệu (danh sách truyện,

danh mục)

6 HƯỚNG PHÁT TRIỂN VÀ CẢI TIẾN

Hệ thống hiện tại có thể mở rộng thêm các tính năng nhằm đáp ứng nhu cầu người dùng tốt hơn:

1. Cải thiện giao diện người dùng (UI/UX):

o Sử dụng React hoặc Angular để phát triển giao diện tương tác cao

o Tích hợp Dark Mode để phù hợp với thị hiếu hiện đại

2. Hỗ trợ đa nền tảng:

o Xây dựng API RESTful hoàn chỉnh để tạo ứng dụng di động

o Đảm bảo tương thích với cả Android và iOS

3. Hệ thống gợi ý thông minh:

o Sử dụng thuật toán Recommendation System (Collaborative Filtering hoặc Content Based) để gợi ý truyện dựa trên sở thích người dùng.-

Trang 22

21

4. Tăng cường bảo mật:

o Sử dụng mã hóa mật khẩu mạnh hơn (PBKDF2 hoặc Argon2)

o Tích hợp reCAPTCHA để chống spam

5. Tích hợp phân tích dữ liệu (Analytics):

o Tạo dashboard để quản trị viên dễ dàng theo dõi các xu hướng truyện, người dùng và danh mục phổ biến

6. Tính năng mới cho người dùng:

o Hệ thống thông báo: Cập nhật khi có chương mới hoặc bình luận

o Chế độ lưu offline: Cho phép tải xuống truyện và đọc khi không có mạng

o Hệ thống đánh giá: Thêm sao hoặc nhận xét truyện

7 TÀI LI U THAM KH O Ệ Ả

Spring Boot Documentation

Java SE Documentation

Thymeleaf Official Documentation

Apache Maven Documentation

Validation with Spring Boot

Spring MVC Framework Documentation

Guide to Using H2 Database with Spring Boot

Tutorial : Java Backend Tech28

Backend Github code

Ngày đăng: 15/02/2025, 22:09

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN