Tải bản đầy đủ (.pdf) (69 trang)

Đồ án xây dựng website chia sẻ tài liệu học tập

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.73 MB, 69 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

BÁO CÁO ĐỒ ÁN 2
XÂY DỰNG WEBSITE
CHIA SẺ TÀI LIỆU HỌC TẬP
Giảng viên hướng dẫn :

ThS. Trần Thị Hồng Yến

Sinh viên thực hiện

:

Trần Lương Nguyên - 19521922

Lớp

:

SE122.N11

TP HCM, tháng 12 năm 2022


ĐỀ CƯƠNG CHI TIẾT
Tên đề tài: Xây dựng website chia sẻ tài liệu học tập
Cán bộ hướng dẫn: Ths. Trần Thị Hồng Yến
Thời gian thực hiện: Từ ngày: 05/09/2022 đến ngày 31/12/2022
Sinh viên thực hiện: Trần Lương Nguyên - 19521922
Nội dung đề tài:


1. Giới thiệu bài toán
Thế kỷ XXI là thời đại của sự hội nhập, sự phát triển của tri thức, của khoa
học kỹ thuật, địi hỏi phải có những thanh niên trẻ có trình độ và năng lực
sáng tạo, có khả năng tiếp thu và vận dụng những kiến thức mới, nhanh chóng
thích nghi với sự vận động của xã hội. Để làm được điều đó mỗi thanh niên
cần phải tích luỹ kiến thức, kinh nghiệm, chuẩn bị cho mình một nền tảng
kiến thức vững chắc ngay từ khi đang cịn trên ghế nhà trường. Từ đó cống
hiến trí tuệ, sức lực của mình vào sự phát triển đất nước.
Đối với học sinh, sinh viên trong các trường học nhu cầu sử dụng thông tin
để phục vụ cho quá trình học tập, nghiên cứu khoa học của họ luôn cần phải
đảm bảo về chất lượng, đầy đủ về chủng loại thì hoạt động học tập, nghiên
cứu mới đạt được kết quả tốt nhất.
Do đó em quyết định lựa chọn đề tài “Xây dựng website chia sẻ tài liệu học
tập”, cung cấp một địa chỉ đáng tin cậy để học sinh, sinh viên có thể tìm
kiếm, tra cứu tài liệu phục vụ cho nhu cầu học tập và nghiên cứu.
2. Mục tiêu

-

Xây dựng được website chia sẻ tài liệu học tập với nội dung phong phú,
giao diện thân thiện, bố cục được sắp xếp hợp lí thân thiện với người dùng

-

Xây dựng website quản trị cho nhân viên với các chức năng quản lý thông
tin đa dạng và tiện dụng.


3. Phạm vi đề tài
Đề tài tập trung xây dựng website phục vụ nhu cầu tìm kiếm, tra cứu tài

liệu phục vụ cho học tập và làm việc.
➢ Phạm vi môi trường:
− Triển khai sản phẩm đề tài trên môi trường web.
➢ Phạm vi chức năng:
− Đăng kí, đăng nhập, xác thực và quản lí thơng tin tài khoản.
− Quản lí danh mục tài liệu.
− Tìm kiếm, tra cứu tài liệu.
− Đăng tải, chia sẻ tài liệu.
− Kiểm duyệt nội dung tài liệu.
− Lưu trữ bài viết
− Đánh giá, nhận xét tài liệu.
− Báo cáo, thống kê.
4. Đối tượng sử dụng:
-

Người dùng có nhu cầu tìm kiếm, tra cứu và chia sẻ tài liệu.

-

Nhân viên quản lí, kiểm duyệt nội dung.

-

Nhân viên quản trị viên của website.

5. Phương pháp thực hiện:
-

Tìm hiểu .Net MVC, MS SQL, Bootstrap, Redis, Elasticsearch, MinIO.


-

Khảo sát thực trạng các website đang có trên thị trường, từ đó phân tích,
xác định các u cầu cụ thể của đề tài.

-

Phân tích thiết kế hệ thống và xây dựng website.

-

Tìm hiểu về thiết kế UX/UI và tiến hành thiết kế giao diện cho website.

-

Xây dựng website cho người dùng và các nhân viên.

-

Tiến hành triển khai và kiểm thử.

6. Công nghệ dự kiến sử dụng:
-

Back-end: ASP.Net MVC, Entity Framework, Redis, Elasticsearch.

-

Front-ent: HTML, CSS, Bootstrap.


-

Database: MS SQL, MinIO, Cloudinary.


7. Kết quả mong đợi
-

Nắm bắt và ứng dụng được các cơng nghệ đã tìm hiểu để xây dựng hồn
thiện sản phẩm đề tài.

-

Hiểu rõ nghiệp vụ, chức năng của một website chia sẻ tài liệu học tập.

-

Ứng dụng được các kiến thức đã học về phân tích và thiết kế hệ thống
phần mềm vào việc xây dựng và triển khai website sản phẩm đề tài.

-

Có thể mở rộng thêm các chức năng mới cho website sản phẩm đề tài để
đáp ứng nhu cầu mới trong tương lai.

Kế hoạch thực hiện:
Tuần
Tuần 1
(05/09 – 11/09)


Cơng việc
Tìm hiểu đề tài, xác định các chức năng của hệ thống.

Tuần 2

Tìm hiểu, nghiên cứu công nghệ áp dụng trong sản

(12/09 – 18/09)

phẩm đồ án.

Tuần 3, 4

Phân tích hệ thống, thiết kế cơ sở dữ liệu và giao diện

(19/09 – 02/10)

người dùng.

Tuần 5

Xây dựng chức năng đăng kí, đăng nhập, xác thực tài

(03/10 – 09/10)

khoản.

Tuần 6
(10/10 – 16/10)


Xây dựng chức năng quản lí tài khoản.

Tuần 7
(17/10 – 23/10)
Xây dựng chức năng quản lí danh mục.
Tuần 8
(24/10 – 30/10)


Tuần 9
(31/10 – 06/11)
Xây dựng chức năng đăng tải, chỉnh sửa bài viết.
Tuần 10
(07/11 – 13/11)
Tuần 11
(14/11 – 20/11)
Xây dựng chức năng đăng tải, quản lý tài liệu.
Tuần 12
(21/11 – 27/11)
Tuần 13
(28/11 – 04/12)
Xây dựng chức năng tìm kiếm tài liệu.
Tuần 14
(05/12 – 11/12)
Tuần 15
(12/12 – 18/12)
Tuần 16
(19/12 – 25/12)
Tuần 17
(26/12 – 31/12)


Xây dựng chức năng lưu trữ bài viết.

Xây dựng chức năng thống kê, báo cáo.

Kiểm thử và viết tài liệu báo cáo.

Xác nhận của CBHD

TP. HCM, ngày 7 tháng 9 năm 2022

(Ký tên và ghi rõ họ tên)

Sinh viên
(Ký tên và ghi rõ họ tên)

Trần Thị Hồng Yến

Trần Lương Nguyên


LỜI CẢM ƠN
Em xin gửi lời cảm ơn tới cô Trần Thị Hồng Yến, người đã trực tiếp tận tình
hướng dẫn em trong suốt quá trình thực hiện đồ án. Em vơ cùng biết ơn sự tận tình chỉ
dẫn của cơ trong q trình nhóm thực hiện đề tài này. Bước đầu tiếp cận các cơng nghệ
mới, em cịn nhiều thiếu sót về mặt kiến thức cũng như kinh nghiệm thực tiễn nên khơng
tránh khỏi nhiều sai sót. Những nhận xét, góp ý chân tình của cơ chính là cơ sở để em
có thể cải tiến và hồn thiện đề tài này một cách tốt nhất. Nếu khơng có những lời chỉ
bảo tận tình của cơ thì đồ án này của em rất khó để thực hiện. Một lần nữa, em chân
thành cảm ơn cô.

Đề tài được em thực hiện trong khoảng thời gian 4 tháng, lần đầu tiếp cận các
công nghệ mới, bước đầu đi vào thực tế nên em còn nhiều hạn chế về kiến thức cũng
như kinh nghiệm thực tiễn. Do vậy, chắc chắn không thể tránh khỏi những sai sót, em
rất mong nhận được những sự chỉ bảo, ý kiến đóng góp q báu của cơ và các bạn học
cùng lớp để em có thể bổ sung, cải tiến sản phẩm cũng như nâng cao kiến thức, hồn
thiện bản thân và tích lũy thêm cho bản thân nhiều kinh nghiệm, phục vụ tốt hơn cho
công việc thực tế sau này.
Em xin chân thành cảm ơn!
Thành phố Hồ Chí Minh, ngày 20 tháng 12 năm 2022
Sinh viên thực hiện


DANH MỤC HÌNH ẢNH
Hình 4.1 Sơ đồ Use case tổng quát của hệ thống ......................................................... 12
Hình 4.2 Phân rã sơ đồ use case ................................................................................... 13
Hình 4.3 Mơ tả CSDL của hệ thốngBảng..................................................................... 31
Hình 4.4 Giao diện trang chủ ....................................................................................... 38
Hình 4.5 Giao diện menu trang chủ.............................................................................. 39
Hình 4.6 Giao diện bài viết trang chi tiết thể loại ........................................................ 40
Hình 4.7 Giao diện tài liệu trang chi tiết thể loại ......................................................... 41
Hình 4.8 Giao diện trang chi tiết bài viết ..................................................................... 42
Hình 4.9 Giao diện trang đăng nhập ............................................................................. 43
Hình 4.10 Giao diện trang đăng ký .............................................................................. 44
Hình 4.11 Giao diện trang quản lý tài khoản................................................................ 45
Hình 4.12 Giao diện trang đăng tải bài viết.................................................................. 46
Hình 4.13 Giao diện trang đăng tải tài liệu .................................................................. 47
Hình 4.14 Giao diện trang quản lý bài viết đã đăng ..................................................... 48
Hình 4.15 Giao diện trang quản lý tài liệu đã đăng ...................................................... 49
Hình 4.16 Giao diện trang quản lý thư mục lưu trữ ..................................................... 50
Hình 4.17 Giao diện trang chi tiết thư mục lưu trữ ...................................................... 50

Hình 4.18 Giao diện trang quản lý thể loại .................................................................. 51
Hình 4.19 Giao diện trang quản lý người dùng ............................................................ 52
Hình 4.20 Giao diện trang quản lý nhân viên kiểm duyệt ............................................ 53
Hình 4.21 Giao diện trang quản lý kiểm duyệt bài viết ............................................... 54
Hình 4.22 Giao diện trang xử lý báo cáo...................................................................... 55
Hình 4.23 Giao diện trang báo cáo ............................................................................... 56


DANH MỤC BẢNG
Bảng 3.1.1 Mô tả chức năng của ứng dụng .................................................................... 8
Bảng 3.2.1 Mô tả thành phần kiến trúc hệ thống.......................................................... 10
Bảng 4.1.1 Mô tả use case đăng ký .............................................................................. 14
Bảng 4.1.2 Mô tả usecase Đăng nhập........................................................................... 14
Bảng 4.1.3 Mô tả use case quên mật khẩu ................................................................... 15
Bảng 4.1.4 Mô tả use case cập nhật mật khẩu .............................................................. 16
Bảng 4.1.5 Mô tả use case chỉnh sửa thông tin cá nhân ............................................... 16
Bảng 4.1.6 Mơ tả use case tìm kiếm bài viết, tài liệu ................................................... 17
Bảng 4.1.7 Mô tả use case đăng tải bài viết ................................................................. 17
Bảng 4.1.8 Mô tả usecase chỉnh sửa bài viết đã đăng tải ............................................. 18
Bảng 4.1.9 Mơ tả use case xóa bài viết đã đăng ........................................................... 19
Bảng 4.1.10 Mô tả use case đăng tải tài liệu ................................................................ 19
Bảng 4.1.11 Mơ tả use case xóa tài liệu ....................................................................... 20
Bảng 4.1.12 Mô tả use case nhận xét ........................................................................... 21
Bảng 4.1.13 Mơ tả use case u thích bài viết ............................................................. 21
Bảng 4.1.14 Mô tả usecase báo cáo bài viết vi phạm ................................................... 22
Bảng 4.1.15 Mô tả use case lưu bài viết u thích ....................................................... 22
Bảng 4.1.16 Mơ tả use case xóa bài viết đã lưu ........................................................... 23
Bảng 4.1.17 Mô tả use case thêm thư mục lưu trữ ....................................................... 23
Bảng 4.1.18 Mô tả use case đổi tên thư mục lưu trữ .................................................... 24
Bảng 4.1.19 Mơ tả use case xóa thư mục lưu trữ ......................................................... 25

Bảng 4.1.20 Mô tả use case tải tài liệu ......................................................................... 25
Bảng 4.1.21 Mô tả use case thêm thể loại .................................................................... 26
Bảng 4.1.22 Mô tả use case chỉnh sửa thông tin thể loại ............................................. 27
Bảng 4.1.23 Mơ tả use case xóa thể loại ...................................................................... 27
Bảng 4.1.24 Mô tả use case kiểm duyệt bài viết .......................................................... 28
Bảng 4.1.25 Mô tả use case phân quyền người dùng ................................................... 29
Bảng 4.1.26 Mô tả use case báo cáo ............................................................................. 29
Bảng 4.2.1 Bảng lưu trữ thông tin thể loại ................................................................... 32


Bảng 4.2.2 Bảng lưu trữ thông tin bài viết .................................................................. 33
Bảng 4.2.3 Bảng lưu trữ thông tin tài liệu .................................................................... 33
Bảng 4.2.4 Bảng lưu trữ thông tin người dùng............................................................. 34
Bảng 4.2.5 Bảng lưu trữ thơng tin hình ảnh ................................................................. 34
Bảng 4.2.6 Bảng lưu trữ thơng tin bình luận ................................................................ 35
Bảng 4.2.7 Bảng lưu trữ thơng tin u thích bài viết ................................................... 35
Bảng 4.2.8 Bảng lưu thông tin thư mục lưu trữ ........................................................... 35
Bảng 4.2.9 Bảng lưu trữ thông tin bài viết lưu trữ ....................................................... 36
Bảng 4.2.10 Bảng lưu trữ thông tin kiểm duyệt ........................................................... 36
Bảng 4.2.12 Bảng lưu trữ thông tin phân loại kiểm duyệt ........................................... 36
Bảng 4.2.12 Bảng lưu trữ thơng tin tiêu chí kiểm duyệt .............................................. 37
Bảng 4.2.13 Bảng lưu trữ thông tin thông báo ............................................................. 37


Chương 1 - TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu về đề tài
1.1.1 Tài liệu có giá trị to lớn trong mọi mặt đời sống
Giá trị của tài liệu là khả năng đáp ứng mọi nhu cầu sử dụng thông tin tài liệu của
con người đối với các mặt hoạt động xã hội. Trong xã hội có rất nhiều lĩnh vực hoạt
động, do vậy giá trị của tài liệu cũng đa dạng và được tổ hợp thành các nhóm khác nhau.

Học tập và giảng dạy là một trong những lĩnh vực cần số lượng lớn tài liệu. Đối với lĩnh
vực này tài liệu đóng vai trị rất quan trọng, bằng cách hỗ trợ học tập, chúng có thể làm
tăng đáng kể thành tích của học sinh, sinh viên. Những tài liệu này hỗ trợ quá trình học
tập bằng cách cho phép học sinh khám phá kiến thức một cách độc lập cũng như luyện
tập các dạng đã làm. Tài liệu học tập, bất kể loại nào, thì tất cả đều đóng một vai trị
nhất định đối với việc học của học sinh, sinh viên.
1.1.2 Lý do chọn đề tài
Hiện nay trên thị trường có rất nhiều website chia sẻ tài liệu kể cả miễn phí lẫn tính
phí như “cuuduongthancong.com”, “123docz.net”, “tailieu.vn”,… nhưng hầu hết các
website trên đều chỉ tập trung vào chia sẻ tài liệu mà chưa cho phép người dùng đăng
tải các bài viết chia sẻ kiến thức, kinh nghiệm của mình. Các website này cũng chưa
cung cấp cho người dùng các công cụ lưu trữ và quản lý hệ thống bài viết mà họ yêu
thích. Do vậy em quyết định lựa chọn đề tài “Xây dựng website chia sẻ tài liệu học tập”.
Bên cạnh việc cung cấp các chức năng cơ bản như các website hiện có, đề tài cũng cấp
thêm cho người dùng các chức năng đăng tải bài viết, lưu trữ là quản lý hệ thống bài
viết yêu thích.
1.2 Đối tượng nghiên cứu
Đồ án này hướng đến nghiên cứu các đối tượng sau:
❖ Các công nghệ:
− .NET MVC
− Entity framework
− MS SQL
1


− Redis
− MinIO
− Elastic Search
− Cloudinary
− Bootstrap

❖ Đối tượng trong phạm vi đề tài hướng đến:
− Người dùng có nhu cầu tìm kiếm, tra cứu và chia sẻ tài liệu.
− Nhân viên quản lí, kiểm duyệt nội dung.
− Nhân viên quản trị viên của website.
1.3 Phạm vi nghiên cứu
Đề tài tập trung vào nghiên cứu về ứng dụng website chia sẻ tài liệu học tập, phục
vụ người dùng có nhu cầu tìm kiếm, chia sẻ tài liệu học tập.
1.4 Phương pháp nghiên cứu
Em đã sử dụng các phương pháp nghiên cứu:
-

Phương pháp đọc tài liệu.

-

Phương pháp phân tích các ứng dụng hiện có.

1.5 Nhiệm vụ của đề tài
Đề tài “Website chia sẻ tài liệu học tập” là một ứng dụng chạy trên nền web đáp ứng
các yêu cầu sau:
-

Cung cấp đầy đủ các tính năng tìm kiếm, chia sẻ, lưu trữ tài liệu cho nhiều đối
tượng khác nhau.

-

Cung cấp đầy đủ các tính năng phục vụ việc kiểm sốt, quản lí tài nguyên và
hoạt động của website.


1.6 Mục tiêu của đề tài
-

Tìm hiểu cách xây dựng ứng dụng web.

-

Tìm hiểu về kiến trúc hệ thống, những công nghệ liên quan.

-

Xây dựng thành công ứng dụng website chia sẻ học tập.

2


Chương 2 - CƠ SỞ LÝ THUYẾT
2.1 Tổng quan về ASP.NET MVC
2.1.1 Giới thiệu
MVC là viết tắt của Model-View-Controller. Trong ASP.NET, MVC là một dạng
mơ hình kiến trúc phân cách một ứng dụng web thành ba thành phần: Model, View và
Controller.
2.1.2 Cấu trúc ASP.NET MVC
Models: Model là thành phần chứa các phương thức xử lý logic, kết nối và truy xuất
database, mô tả dữ liệu, ….
Views: View là thành phần hiển thị thông tin, tương tác với người dùng.
Controller: Controller là thành phần điều hướng, là chất kết dính giữa model và
view, có nhiệm vụ nhận những requests từ người dùng, tương tác với model để lấy thông
tin và gửi cho view để hiển thị lại cho người dùng.
2.1.3 Ưu điểm của ASP.NET MVC

− Thích hợp cho các ứng dụng lớn có tính chất phức tạp bằng cách chia ứng dụng
thành ba thành phần model, view, controller.
− Loại bỏ view state hoặc server-based form. Điều này khiến lập trình viên tốn
nhiều thời gian hơn nhưng sẻ quản lý tốt ứng dụng của mình.
− Sử dụng mẫu Front Controller, mẫu này giúp quản lý các requests chỉ thông qua
một Controller do đó việc định tuyến sẽ dễ dàng hơn.
− Hổ trợ tốt cho việc test từng phần.
− Hỗ trợ tốt cho các ứng dụng có nhiều lập trình viên và thiết kế mà vẫn quản lý
được tính năng của ứng dụng.
2.2 Tổng quan về Microsoft SQL Server
2.2.1 Giới thiệu
Microsoft SQL Server là một phần mềm được phát triển bởi Microsoft và nó được
sử dụng để có thể dễ dàng lưu trữ cho những dữ liệu dựa theo tiêu chuẩn RDBMS.

3


2.2.2 Các thành phần cơ bản trong SQL Server
Các thành cơ bản trong SQL Server gồm có: Reporting Services, Database Engine,
Integration Services, Notification Services, Full Text Search Service, … Tất cả kết hợp
với nhau tạo thành một giải pháp hoàn chỉnh giúp cho việc phân tích và lưu trữ dữ liệu
trở nên dễ dàng hơn.
− Database Engine: Đây là một engine có khả năng chứa dữ liệu ở các quy mơ
dưới dạng support và table. Ngồi ra, nó cịn có khả năng tự điều chỉnh, ví dụ:
trả lại tài nguyên cho hệ điều hành khi một user log off và sử dụng thêm các tài
nguyên của máy khi cần.
− Integration Services: Là tập hợp các đối tượng lập trình và các công cụ đồ họa
cho việc sao chép, di chuyển và chuyển đổi dữ liệu. Khi các lập trình viên làm
việc trong một cơng ty lớn thì dữ liệu được lưu trữ ở nhiều nơi khác nhau như
được chứa trong: Oracle, SQL Server, DB2, Microsoft Access, … và chắc chắn

sẽ có nhu cầu di chuyển dữ liệu giữa các server này. Ngồi ra, các lập trình viên
cịn muốn định dạng dữ liệu trước khi lưu vào database. Chắc chắn Integration
Services sẽ giúp họ giải quyết được công việc này dễ dàng.
− Analysis Services: Đây là một dịch vụ phân tích dữ liệu của Microsoft. Dữ liệu
khi được lưu trữ vào trong database mà người dùng không thể lấy được những
thông tin bổ ích thì coi như khơng có ý nghĩa gì. Chính vì thế, cơng cụ này ra đời
giúp người dùng trong việc phân tích dữ liệu một cách hiệu quả và dễ dàng bằng
cách dùng kỹ thuật khai thác dữ liệu – datamining và khái niệm hình khối nhiều
chiều – multi dimendion cubes.
− Notification Services: Dịch vụ thông báo này là nền tảng cho sự phát triển và
triển khai các ứng dụng soạn và gửi thơng báo. Ngồi ra, dịch vụ này cịn có chức
năng gửi thơng báo theo lịch đến hàng ngàn người dăng ký sử dụng trên nhiều
loại thiết bị khác nhau.
− Reporting Services: Là một công cụ tạo, quản lý và triển khai báo cáo bao gồm:
server và client. Ngồi ra, nó cịn là nền tảng cho việc phát triển và xây dựng các
ứng dụng báo cáo.

4


− Full Text Search Service: Là một thành phần đặc biệt trong việc truy vấn và
đánh chỉ mục dữ liệu văn bản không cấu trúc được lưu trữ trong các cơ sở dữ
liệu SQL Server.
− Service Broker: Là một môi trường lập trình cho việc tạo ra các ứng dụng trong
việc nhảy qua các Instance.
2.2.3 Ưu điểm của SQL Server
− Người dùng có thể sử dụng nhiều phiên bản MS SQL khác nhau trên cùng 1 máy.
− Người dùng có thể phát triển và duy trì riêng biệt các mơi trường thử nghiệm
khác nhau.
− Xây dựng và duy trì các loại máy chủ dự phòng.

− Hạn chế tối đa các vấn đề rủi ro trên cơ sở dữ liệu.
2.3 Tổng quan về Redis
2.3.1 Giới thiệu
Redis được xem là một cơ sở dữ liệu nằm trong bộ nhớ, chính vì vậy dữ liệu đều
được lưu trữ nằm trên bộ nhớ (RAM) của máy chủ. Điều này giúp cho việc đọc cũng
như truy xuất dữ liệu được nhanh chóng hơn mà khơng cần phải chờ cho đến khi ổ cứng
truyền thống phải tìm kiếm và phải đọc ghi nhiều lần. Bởi vì là một NoSQL database
vậy nên redis sẽ cho phép người dùng có thể tạo được các cấu trúc dữ liệu đơn giản và
nhanh gọn hơn bao giờ hết
2.3.2 Các kiểu dữ liệu trong Redis
Khác với RDMS như MySQL, hay PostgreSQL, Redis khơng có table. Redis lưu trữ
data dưới dạng key-value. Redis hỗ trợ rất nhiều kiểu dữ liệu khác nhau như:
− STRING, INTEGER, FLOAT: Redis có thể làm việc với cả string, từng phần
của string, cũng như tăng/giảm giá trị của integer, float.
− LIST: List là một danh sách của string, sắp xếp theo thứ tự insert. Redis có thể
thêm một phần tử vào đầu hoặc cuối list. List phù hợp cho các bài toán cần thao
tác với các phần tử gần đầu và cuối vì việc truy xuất này là cực nhanh, cho dù
insert cả triệu phần tử. Tuy nhiên nhược điểm là việc truy cập vào các phần tử ở
giữa list rất chậm.
5


− SET: tập hợp các string (không được sắp xếp). Redis hỗ trợ các thao tác thêm,
đọc, xóa từng phần tử, kiểm tra sự xuất hiện của phần tử trong tập hợp. Ngồi ra
Redis cịn hỗ trợ các phép tốn tập hợp, gồm intersect/union/difference.
− HASH: Redis lưu trữ hash table của các cặp key-value, trong đó key được sắp
xếp ngẫu nhiên, không theo thứ tự nào cả. Redis hỗ trợ các thao tác thêm, đọc,
xóa từng phần tử, cũng như đọc tất cả giá trị.
− SORTED SET (ZSET): Là 1 danh sách, trong đó mỗi phần tử là map của 1
string (member) và 1 floating-point number (score), danh sách được sắp xếp theo

score này. Các phần tử của zset được sắp xếp theo thứ tự từ score nhỏ tới lớn.
2.3.3 Ưu điểm của Redis
− Toàn bộ dữ liệu Redis nằm trong bộ nhớ chính của máy chủ nên hiệu suất rất
nhanh.
− Redis có nhiều cấu trúc dữ liệu khác nhau nên đáp ứng được nhu cầu ứng dụng
của người dùng.
− Redis đơn giản hóa code của lập trình viên bằng cách cho phép họ viết ít dịng
code hơn để lưu trữ, truy cập và sử dụng dữ liệu trong các ứng dụng của mình.
− Redis sử dụng kiến trúc primary replica và hỗ trợ sao chép không đồng bộ, dữ
liệu có thể được sao chép sang nhiều máy chủ khác nhau. Điều này giúp hiệu
suất đọc được cải thiện và phục hồi nhanh hơn khi máy chủ chính gặp sự cố
ngừng hoạt động.
− Redis là dự án mã nguồn mở đã có cộng đồng lớn tin dùng. Khơng có giới hạn
về nhà cung cấp hoặc cơng nghệ vì Redis được có tính tiêu chuẩn mở, hỗ trợ các
định dạng dữ liệu mở và có tập hợp máy khách phong phú.
2.4 Tổng quan về Elasticsearch
2.4.1 Giới thiệu
Elasticsearch là một công cụ tìm kiếm dựa vào nền tảng Apache Lucene. Cơng cụ này
cung cấp một bộ máy tìm kiếm có dạng phân tán với đầy đủ công cụ với một giao diện
web HTTP có hỗ trợ cho các dữ liệu JSON.

6


2.4.2 Những khái niệm cơ bản trong Elasticsearch
− Node: Là một instance (server) đơn lẻ duy nhất đang chạy của Elasticsearch. Nơi
lưu trữ dữ liệu, tham gia thực hiện đánh index của cluster và thực hiện tìm kiếm.
− Cluster: Là tập hợp của một hoặc nhiều nodes hoạt động cùng nhau, có khả năng
tìm kiếm và lập chỉ mục trên tất cả các nodes cho toàn bộ dữ liệu. Chức năng
chính của Cluster là quyết định xem shards nào được phân bổ cho node nào và

khi nào thì di chuyển các node để cân bằng lại Cluster.
− Document: Nó là đơn vị dữ liệu cơ bản trong Elasticsearch - đối tượng JSON
với một số dữ liệu cụ thể. Mỗi document thuộc một type và nằm trong một chỉ
mục. Mỗi document được liên kết với một định danh duy nhất được gọi là UID
− Type: Được sử dụng làm danh mục của chỉ mục, cho phép lưu trữ các loại dữ
liệu khác nhau trong cùng một chỉ mục.
− Index: Nó là một tập hợp các loại document khác nhau và các thuộc tính của
chúng
− Shard: Các index được chia theo chiều ngang thành các shard, mỗi shard chứa
tất cả các thuộc tính của document nhưng chứa ít đối tượng JSON hơn index. Sự
phân tách ngang làm cho shard là một node độc lập, có thể được lưu trữ trong
bất kỳ node nào.
2.4.3 Ưu điểm của Elasticsearch
− Hỗ trợ tìm kiếm dữ liệu mạnh mẽ, nhanh chóng dựa trên Apache Lucene.
− Mang lại khả năng phân tích dữ liệu vơ cùng hiệu quả.
− Có khả năng mở rộng dựa theo chiều ngang rất tuyệt vời.
− Cơng cụ này có khả năng hỗ trợ tìm kiếm, nếu như từ khóa tìm kiếm bị lỗi chính
tả hoặc khơng đúng cú pháp thì vẫn có khả năng Elasticsearch trả về với kết quả
cực tốt.
− Elasticsearch có thể hỗ trợ Structured Query DSL cung cấp cho nhu cầu đặc tả
những câu truy vấn phức tạp hơn một cách rõ ràng và cụ thể bằng JSON.
− Elasticsearch hỗ trợ cho nhiều Elasticsearc client như PhP, Java, Ruby,
Javascript, Python, .NET, ....

7


Chương 3 - PHÂN TÍCH THIẾT KẾ HỆ THỐNG
3.1 Mơ tả yêu cầu
3.1.1 Yêu cầu chức năng

“Website chia sẻ tài liệu học tập” được thiết kế nhằm giúp mọi người có được nơi
để tìm kiếm, chia sẻ tài liệu và kiến thức của bản thân. Để đáp ứng được các vấn đề trên
em đã xác định được một số chức năng chính như sau:
Bảng 3.1.1 Mơ tả chức năng của ứng dụng
Nhóm chức năng

Chức năng

Mơ tả
Người dùng có thể đăng kí tài khoản để sử

Đăng kí tài khoản

dụng các dịch vụ của website bằng email cá
nhân của mình. Hệ thơng tiếp nhận yêu cầu
đăng kí và gửi email xác nhận.
Người dùng sau khi đăng kí và xác nhận

Đăng nhập

email xác thực có thể sử dụng tài khoản này
để đăng nhập và sử dụng các dịch vụ mà
website cung cấp.
Trong trường hợp người dùng quên mật khẩu

Người dùng

tài khoản đăng nhập. Họ có thể gửi yêu cầu
Quên mật khẩu


“quên mật khẩu” lên hệ thống. Hệ thống tiếp
nhận yêu cầu, gửi email xác nhận và cho phép
người dùng tạo mới mật khẩu khi email đã
được người dùng xác nhận.

Chỉnh sửa thông
tin tài khoản
Quản lý bài viết

Người dùng có thể cập nhật thơng tin cá nhân
cũng như mật khẩu tài khoản của mình.
Người dùng có thể chia sẻ bài viết và quản lý
bài viết mà mình đã đăng tải.

8


Quản lý tài liệu
Tìm kiếm tài bài
viết, tài liệu

Người dùng có thể chia sẻ các tài liệu và quản
lý tài liệu mà mình đã đăng tải.
Người dùng có thể tìm kiếm bài viết, tài liệu
có trong hệ thống.
Người dùng sau khi xem các bài viết có thể

Nhận xét bài viết

chia sẻ cảm nhận, ý kiến của bản thân về nội

dung bài viết.

Lưu trữ bài viết
yêu thích
Tải tài liệu
Quản lý thư mục
lưu trữ
Báo cáo bài viết

Quản lý thể loại

Người dùng có thể lưu trữ các bài viết mà
mình u thích.
Người dùng có thể tải các tài liệu mà cộng
đồng đã chia sẻ về máy tính cá nhân của mình
Người dùng có thể quản lý hệ thống thư mục
lưu trữ bài viết u thích của mình
Người dùng có thể báo cáo các bài viết vi
phạm bản quyền, có nội dung độc hại, ….
Nhân viên quản lí có thể các thực hiện các
chức năng thêm, sửa, xóa thể loại.

Phân quyền người Nhân viên quản lý có thể thực hiện phân
Quản lí

dùng

quyền cho các tài khoản đã đăng ký.
Hệ thống cung cấp các biểu đồ, số liệu trực


Thống kê

quan giúp các nhân viên quản lý dễ dàng nắm
bắt được tình trạng hoạt động của website.

Kiểm duyệt

Kiểm duyệt bài
viết

Nhân viên kiểm duyệt có thể kiểm duyệt nội
dung của các bài viết đã đăng.

9


3.1.2 Yêu cầu phi chức năng
Tính bảo mật: Phải đảm bảo an toàn dữ liệu người dùng, ngăn chặn các tấn cơng

-

từ bên ngồi, kiểm sốt vận hành hệ thống, giảm thiểu tối đa mức độ rủi ro, rị rỉ
thơng tin như các chức năng xác thực người dùng (đăng nhập, đăng ký, quên mật
khẩu).
Tính tiện dụng: Phần mềm dễ sử dụng, tiện lợi trong việc tìm kiếm và chia sẻ

-

tài liệu.
Tính hiệu quả: Đảm bảo tốc độ xử lý ổn định, có thể lưu một lượng lớn dữ liệu,


-

tránh xảy ra lỗi ngoại lệ.
Tính tương thích: Ứng dụng có thể chạy ổn định và tương thích với nhiều nền

-

tảng hệ điều hành khác nhau.
3.2 Kiến trúc hệ thống
Bảng 3.2.1 Mô tả thành phần kiến trúc hệ thống
STT

Thành phần

Ý nghĩa, ghi chú
Là thành phần dùng để cung cấp dữ liệu, thực hiện kết nối,

1

Model

truy vấn dữ liệu và thao tác với dữ liệu trong database,
tương tác với dữ liệu hay hệ quản trị cơ sở dữ liệu.

2

Controller

3


View

Đảm nhiệm việc tiếp nhận các request từ các client, tiến
hành xử lí và trả về kết quả cho client.
Đảm nhiệm việc hiển thị giao diện hệ thống để người
dùng thao tác với website
Đảm nhiệm việc tiếp nhận yêu cầu xử lý từ Controller và

4

Service

chuyển tiếp các yêu cầu này đến các service của bên thứ
3.

10


Mối quan hệ giữa các thành phần:
-

Model giúp cho Controllers có thể thực hiện kết nối, trích lọc, chèn, chỉnh sửa
dữ liệu trong database, tương tác với file system, network

-

Controller tiếp nhận, điều hướng các yêu cầu từ người dùng, giúp lấy dữ liệu
đúng với những thông tin cần thiết nhờ vào các nghiệp vụ lớp Model cung cấp
và hiển thị các dữ liệu đó ra cho người dùng.


-

Service nhận yêu cầu sử dụng dịch vụ từ Controller và trả về kết quả để
Controller xử lý

-

View tiếp nhận dữ liệu từ Controller và hiển thị giao diện để người dùng tương
tác với các chức năng của website

Ngoài các thành phần chính nêu trên, hệ thống cũng sử dụng các thành phần khác
như Redis, MinIO, Elasticsearch nhằm tăng hiệu năng xử lý của hệ thống.

11


Chương 4 - HIỆN THỰC HỆ THỐNG
4.1 Sơ đồ Use case

Hình 4.1 Sơ đồ Use case tổng quát của hệ thống
12


Hình 4.2 Phân rã sơ đồ use case

13


4.1.1 Đăng kí

Bảng 4.1.1 Mơ tả use case đăng ký
Tên chức năng

Đăng ký

Tóm tắt

Chức năng đăng ký tài khoản để sử dụng hệ thống.

Dịng sự kiện chính

1. Người dùng nhấn vào “Đăng ký”.
2. Hệ thống hiện thị from đăng ký của người dùng.
3. Người dung điền thông tin đăng ký tài khoản.
4. Chọn đăng ký.

Dòng sự kiện khác

1. Người dùng điền thông tin ko hợp lệ, hệ thống yêu cầu
người dùng nhập lại.
2. Trở về from đăng ký.

Các yêu cầu đặc biệt

Email chưa được đăng kí

Trạng thái hệ thống trước Actor: Khách hàng
khi thực hiện use case

Điều kiện: Người dùng đã điền đầy đủ thông tin trên hệ thống,

Email người dùng chưa được đăng kí.

Trạng thái hệ thống sau

Hiển thị from đăng nhập trên hệ thống.

khi thực hiện use case
Điểm mở rộng

Khơng có

4.1.2 Đăng nhập
Bảng 4.1.2 Mơ tả usecase Đăng nhập
Tên chức năng

Đăng nhập

Tóm tắt

Chức năng đăng nhập vào hệ thống.

Dịng sự kiện chính

1. Hệ thống hiển thị form đăng nhập.
2. Người dùng nhập email, mật khẩu và nhấn “Đăng nhập”.
3. Hệ thống kiểm tra thông tin đăng nhập
4. Hệ thống hiển thị trang chủ.

Dịng sự kiện khác


2.1. Thơng tin đăng nhập sai:
Hệ thống hiển thị thông báo tài khoản đăng nhập không hợp
lệ.
14


Các u cầu đặc biệt

Khơng có

Trạng thái hệ thống trước Actor: tất cả các actor
khi thực thiện use case

Điều kiện: khơng có

Trạng thái hệ thống sau Người dùng đăng nhập thành cơng vào hệ thống, có thể sử
khi thực hiện use case

dụng các quyền mà hệ thống cho phép

Điểm mở rộng

Khơng có

4.1.3 Qn mật khẩu
Bảng 4.1.3 Mơ tả use case quên mật khẩu
Tên chức năng

Quên mật khẩu


Tóm tắt

Đặt lại mật khẩu cho tài khoản

Dịng sự kiện chính

1. Người dùng chọn “Quên mật khẩu”
2. Người dùng nhập Email đăng ký tài khoản.
3. Hệ thống gửi email liên kết tạo mới mật khẩu vào địa chỉ
email người dùng đã đăng kí.
4. Người dùng truy cập vào liên kết tạo mới mật khẩu.
5. Người dùng nhập mật khẩu mới và nhấn lưu.
6. Hệ thống kiểm tra tính hợp lệ và cập nhật mật khẩu mới.
7. Chuyển đến trang chủ của hệ thống.

Dòng sự kiện khác

2.1. Email không hợp lệ
Hệ thống thông báo email không hợp lệ
6.1 Mật khẩu không hợp lệ
Hệ thống thông báo mật khẩu không hợp lệ

Các yêu cầu đặc biệt

Không có

Trạng thái hệ thống trước Actor: tất cả các actor
khi thực thiện use case
Trạng thái hệ thống sau Mật khẩu tài khoản người dùng được thay đổi
khi thực hiện use case

Điểm mở rộng

Khơng có

15


4.1.4 Cập nhật mật khẩu
Bảng 4.1.4 Mô tả use case cập nhật mật khẩu
Tên chức năng

Cập nhật mật khẩu

Tóm tắt

Cập nhật mật khẩu tài khoản của người dùng

Dòng sự kiện chính

1. Người dùng nhấn vào phần thơng tin tài khoản
2. Người dùng nhập thông tin mới và chọn cập nhật
3. Hệ thống cập nhật lại mật khẩu tài khoản.

Dòng sự kiện khác

2.1. Mật khẩu hiện tại không đúng
Hệ thống hiển thị thông báo sai mật khẩu.

Các yêu cầu đặc biệt


Không có

Trạng thái hệ thống trước Actor: khách hàng đã đăng kí tài khoản
khi thực thiện use case

Điều kiện: người dùng đã đăng nhập hệ thống

Trạng thái hệ thống sau Mật khẩu của người dùng được thay đổi.
khi thực hiện use case
Điểm mở rộng

Khơng có

4.1.5 Cập nhật thơng tin cá nhân
Bảng 4.1.5 Mô tả use case chỉnh sửa thông tin cá nhân
Tên chức năng

Cập nhật thơng tin cá nhân

Tóm tắt

Người dùng cập nhật thơng tin cá nhân của tài khoản.

Dịng sự kiện chính

1. Người dùng chọn phần thơng tin tài khoản.
2. Người dùng nhập thông tin cá nhân và chọn cập nhật.
3. Hệ thống cập nhật lại thông tin cá nhân của tài khoản.

Dịng sự kiện khác


Khơng có

Các u cầu đặc biệt

Khơng có

Trạng thái hệ thống trước Actor: khách hàng đã đăng kí tài khoản.
khi thực thiện use case

Điều kiện: người dùng đã đăng nhập hệ thống.

Trạng thái hệ thống sau Thông tin cá nhân của người dùng được cập nhật.
khi thực hiện use case
Điểm mở rộng

Khơng có

16


×