Đồ án tốt nghiệp: Thiết kế website giới thiệu sách trực tuyến - SV Lê Đức Hiếu

Tải full đồ án tốt nghiệp ngành CNTT đề tài thiết kế website giới thiệu sách trực tuyến. Báo cáo chi tiết, code tham khảo sử dụng PHP Laravel.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Đồ Án Tốt Nghiệp

2025

79
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Tổng quan về Đồ án Thiết kế Website Giới thiệu Sách

Đồ án tốt nghiệp CNTT về thiết kế website giới thiệu sách là một dự án thực tiễn nhằm phục vụ cộng đồng yêu thích đọc sách. Trong bối cảnh công nghệ thông tin phát triển mạnh mẽ, việc xây dựng một nền tảng website sách trực tuyến không chỉ giúp bảo tồn văn hóa đọc mà còn kết nối những người có đam mê với nhau. Dự án này áp dụng các kiến thức lập trình web hiện đại, đặc biệt là framework Laravel và công nghệ PHP, để tạo ra một hệ thống quản lý sách hiệu quả. Website cho phép người dùng đăng sách, cho mượn, mượn sách, đánh giá và chia sẻ ý kiến về các tác phẩm văn học yêu thích. Mục tiêu chính là xây dựng một cộng đồng đọc sách trực tuyến gắn bó và hỗ trợ lẫn nhau, đặc biệt là các thành viên trong câu lạc bộ sách.

1.1. Ý nghĩa và mục tiêu của dự án

Dự án thiết kế website giới thiệu sách ra đời nhằm giải quyết vấn đề suy giảm văn hóa đọc sách ở Việt Nam. Bằng cách ứng dụng công nghệ thông tin, website tạo một không gian chia sẻ và trao đổi sách một cách tiện lợi. Mục tiêu là giúp những người yêu sách dễ dàng tìm kiếm, giới thiệu và thảo luận về các cuốn sách hay. Ngoài ra, hệ thống quản lý sách trực tuyến còn hỗ trợ việc quản lý thư viện cá nhân và tạo điều kiện cho trao đổi sách giữa các thành viên.

1.2. Đối tượng người dùng chính

Website giới thiệu sách hướng đến những đối tượng chủ yếu bao gồm: những người trong câu lạc bộ sách, những độc giả yêu thích, sinh viên và những người muốn trao đổi sách. Đây là nền tảng giao lưu sách lý tưởng cho những cộng đồng đọc sách hoạt động tích cực. Mặc dù thói quen đọc sách ở Việt Nam còn hạn chế, nhưng nhóm người đam mê đọc sách ngày càng tăng, tạo nhu cầu thực sự cho một hệ thống chia sẻ sách trực tuyến chuyên nghiệp.

II. Các Công Nghệ Chính được Sử dụng

Để xây dựng website sách hiệu quả, dự án sử dụng một loạt công nghệ tiên tiến trong lập trình web. Framework Laravel được chọn làm nền tảng chính vì tính linh hoạt và khả năng mở rộng cao. PHP là ngôn ngữ lập trình chính, cho phép xử lý logic phía máy chủ một cách mạnh mẽ. Cơ sở dữ liệu MySQL lưu trữ thông tin sách, người dùng và các giao dịch mượn sách. Công nghệ localhost được sử dụng để phát triển và kiểm thử ứng dụng trước khi triển khai. Ngoài ra, dự án còn tích hợp Full-Text Search để người dùng dễ dàng tìm kiếm sách theo tên, tác giả hoặc từ khóa. Các công cụ như PHPMyAdmin giúp quản lý cơ sở dữ liệu sách một cách trực quan.

2.1. Framework Laravel và PHP

Laravel là một framework PHP mạnh mẽ cung cấp cấu trúc rõ ràng cho phát triển ứng dụng web. Nó hỗ trợ mô hình MVC giúp tổ chức code một cách khoa học. PHP là ngôn ngữ phía máy chủ (Server-Side) cho phép xử lý dữ liệu động, kết nối cơ sở dữ liệu và tạo nội dung web tùy theo yêu cầu. Laravel cung cấp các công cụ hỗ trợ như authentication, validationmiddleware để xây dựng website sách an toàn.

2.2. Hệ thống cơ sở dữ liệu và tìm kiếm

MySQLhệ quản trị cơ sở dữ liệu được sử dụng để lưu trữ toàn bộ thông tin sách, người dùng, bình luận và giao dịch mượn sách. Full-Text Search được tích hợp để cho phép tìm kiếm sách nhanh chóng và chính xác theo tên, tác giả hoặc nội dung. Công nghệ Cronjob giúp tự động hóa các tác vụ định kỳ như nhắc nhở trả sách hoặc cập nhật thống kê.

III. Thiết kế Hệ thống Website Giới thiệu Sách

Thiết kế hệ thống website sách được xây dựng dựa trên phương pháp thiết kế hiện đại với biểu đồ ca sử dụng (Use Case Diagram) rõ ràng. Dự án sử dụng sơ đồ thực thể quan hệ (Entity-Relationship Diagram) để mô hình hóa cơ sở dữ liệu sách. Giao diện người dùng được thiết kế với HTMLCSS, tạo ra trải nghiệm người dùng (UX) thân thiện và dễ sử dụng. Biểu đồ trình tự (Sequence Diagram) giúp mô tả quá trình tương tác giữa người dùng và hệ thống. Hệ thống hỗ trợ các chức năng chính như đăng sách, tìm kiếm sách, mượn/trả sách, bình luận và đánh giá. Kiến trúc hệ thống website giới thiệu sách được thiết kế để dễ bảo trì, nâng cấp và mở rộng tính năng trong tương lai.

3.1. Biểu đồ thiết kế và kiến trúc hệ thống

Biểu đồ ca sử dụng xác định các actor (người dùng, quản trị viên) và các tương tác với hệ thống. Sơ đồ thực thể quan hệ giúp mô tả chi tiết cơ sở dữ liệu bao gồm các bảng: Users, Books, Borrowing, Reviews. Biểu đồ trình tự mô tả luồng hoạt động từ đăng nhập, tìm kiếm sách đến mượn sách. Kiến trúc MVC trong Laravel tách riêng Model (dữ liệu), View (giao diện) và Controller (logic xử lý).

3.2. Giao diện người dùng và chức năng chính

Giao diện website sách được thiết kế thân thiện với các trang chính: trang chủ, trang danh sách sách, trang chi tiết sách, trang cá nhân. Người dùng có thể tìm kiếm sách bằng Full-Text Search, mượn/trả sách, viết bình luậnđánh giá sách. Dashboard quản trị viên cho phép quản lý các sách, người dùng và giao dịch. Giao diện responsive đảm bảo website giới thiệu sách hoạt động tốt trên các thiết bị khác nhau.

IV. Hướng Phát triển và Kết luận

Dự án thiết kế website giới thiệu sách hiện tại đã hoàn thành các chức năng cơ bản, tuy nhiên vẫn còn nhiều hướng phát triển tiềm năng. Trong tương lai, website sách có thể tích hợp thanh toán trực tuyến để hỗ trợ mua bán sách, thêm chức năng đánh giá sách nâng cao với hệ thống rating sao. Tích hợp phân tích dữ liệu (Analytics) để hiểu rõ hành vi người dùng và tối ưu hóa gợi ý sách cá nhân hóa. Mobile app có thể được phát triển để tăng tính tiện lợi cho người dùng. Mặc dù còn nhiều hạn chế do kinh nghiệm chưa sâu, dự án này chứng minh khả năng ứng dụng công nghệ để giải quyết vấn đề thực tế trong xã hội. Hy vọng hệ thống website sách sẽ tiếp tục được hoàn thiện và phục vụ cộng đồng yêu sách Việt Nam.

4.1. Các hạn chế hiện tại và cách khắc phục

Website giới thiệu sách hiện tại còn một số hạn chế như chưa có hệ thống thanh toán, chức năng gợi ý sách cá nhân chưa tiên tiến, và hiệu suất tìm kiếm có thể được tối ưu hơn. Cách khắc phục bao gồm tích hợp cổng thanh toán, sử dụng thuật toán machine learning để gợi ý sách, và tối ưu Full-Text Search. Bảo mật dữ liệu cần được tăng cường bằng mã hóakiểm soát truy cập.

4.2. Kế hoạch nâng cấp và triển khai

Kế hoạch phát triển của website sách bao gồm: phát triển ứng dụng mobile, tích hợp mạng xã hội để chia sẻ sách, xây dựng cộng đồng đọc sách hoạt động với các cuộc thảo luận sách định kỳ. Cần đưa hệ thống website giới thiệu sách vào thử nghiệm thực tế với câu lạc bộ sách để thu thập feedback người dùng. Tiếp theo là triển khai trên máy chủ thực để phục vụ cộng đồng rộng lớn hơn.

28/12/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1 CƠ SỞ LÝ LUẬN VỀ WEBSITE PHP 1.1 Tìm hiểu về PHP. [1] PHP là chữ viết tắt của “Hypertext Preprocessor” Thực chất PHP là ngôn ngữ kịch bản nhúng trong HTML, PHP có thể được đặt rảo rác trong HTML. PHP là một ngôn ngữ lập trình được kết nối chặt chẽ với máy chủ, là một công nghệ phía máy chủ (Server-Sile) và không phụ thuộc vào môi trường (cross- palatfrom). Khác với ngôn ngữ lập trình, PHP được thiết kế để chỉ thực hiện điều gì đó sau khi một sự kiện xảy ra.2 Tìm hiểu về localhost  Localhost có nghĩa là một máy chủ được vận hành trên máy tính của bạn.

 Localhost bao gồm nhiều ứng dụng đi kèm với nhau và tất cả các ứng dụng đó sẽ kết hợp với nhau để tạo ra một môi trường có thể chạy mã nguồn WordPress trên máy tính của chính bạn bao gồm:  Phần mềm Webserver tên Apache  Phần mềm PHP để xử lý mã PHP  Phần mềm MySQL Server  Phần mềm PHPMyAdmin XHTML là một ngôn ngữ cho phép bạn viết một trang web, mình có thể cho chữ in đậm, nghiêng, chèn hình ảnh, âm thanh,… bằng cách gõ các kí hiệu đặc biệt (tiếng anh gọi là các tags, tiếng pháp gọi balises. PHP là một ngôn ngữ được lồng vào giữa những đoạn mã HTML.3 Khác nhau giữa HTML và PHP 2 [2] Client nghĩa là bạn đấy mà! Chính bạn là người đang âm thầm rón rén ngồi trước máy tính xin được xem trang web! Tất cả những người xem web được gọi là client. Server Chỉ có một server Đó là một máy tính khổng lồ nói mạng suất 24/24 với tốc độ cao, nó được đặt đâu đó trên thế giới, chạy liên tục một mình, không ai chạm vào, nó chỉ làm một nhiệm vụ là phân phối các trang web cho client xem. Trước hết, về HTML : Nhắc lại rằng một trang HTML có phần mở rộng là .html, ví dụ như exemple.html Tôi không đi vào chi tiết, chỉ giải thích hoạt động của nó bằng sơ đồ sau : 1: demande de la page: xin xem trang web 2: envoi de la page: gửi cho xem trang web Có hai bước : 1.

Client (tức bạn, khách viếng thăm) muốn xem một trang web. Bạn xin server « anh server ơi, làm ơn gửi cho em xem trang nghihe. Server trả lời bằng cách quăng trang web vô màn hình của bạn « nè ! Đây là cái trang web mà mầy vừa đòi xem đó ku » Bây giờ tới PHP : Nó chèn thêm một bước nữa giữa hai bước nói trên, trang PHP được phát sinh bởi server trước khi gửi đến client. Sơ đồ hóa như vầy : 3 1: demande de la page: xin xem trang web 2: génération de la page: phát sinh trang web 3: envoi de la page: gửi cho xem trang web Các bước hoạt động như sau : 1.

Client xin xỏ « anh server ơi, làm ơn gửi cho em xem trang nghihe. Ở đây, một bước rất quan trọng, server không gửi trang web tới client ngay lập tức, mà nó phát sinh ra trang web trước ! Như vậy client không thể nào đọc được trang php có gì trong đó (chỉ có server đọc được thôi), client chỉ đọc được những trang HTML thôi ! Việc của server rất đơn giản : nó biến đổi trang php thành trang html để client có thể đọc được ! 3. Cuối cùng, sau khi đã tạo xong trang HTML, giờ này nó chỉ có mã HTML bên trong thôi, rồi gửi tới client « nè ! Đây là trang web mà mầy đòi xem đó ! » 1.4 Tìm hiểu về laravel. Những tính năng nổi bật của laravel bao gồm cú pháp dễ hiểu – rõ ràng, hệ thống đóng gói modular và quản lý goi sphuj thuộc, nhiều cách khác nhau để truy cập vào cơ sở dữ liệu quan hệ, nhiều tiện ích khác nhau hỗ triwj triển khai vào bảo trì ứng dụng.

Laravel có 3 đặc tính nổi trội:  Đơn giản: các chức năng của Laravel rất dễ hiểu và thực hiện.  Ngắn gọn: hầu hết các chức năng của Laravel hoạt động liên tục với cấu hình rất nhỏ, dựa vào các quy tắc chuẩn để giảm bớt code-bloat 4  Trình bày hợp lý: hướng dẫn sử dụng Laravel rất đầy đủ và luôn cập nhật. Nhà lập trình, người tạo ra framework luôn cập nhật tài liệu trước khi cho ra một phiên bản mới, đảm bảo những người học lập trình luôn luôn có những tài liệu mới nhất. Điều gì khiến Laravel trở nên khác biệt:  Bundles:_ là dành cho Laravel cũng như PEAR là cho PHP.

Ngoài ra laravel đi kèm với công cụ command-line gọi là Artisan, giúp việc cài đặt các gói dễ dàng.  Eloquent ORM: là file thực thi PHP Active Record tiên tiến nhất hiện có.  Migrations:_ trog laravel, migrations được xây dựng trong framework, chúng có thể thực hiện thông quan Artisan command-line.  Unit-testing: laravel là 1 framework tuyệt vời để tích hợp PHP Unit.

 Redis: Laravel hỗ trợ Redis rất ngắn gọn. Vòng đời của Laravel  Code là phải có lỗi, không có lỗi thì gọi gì là Coder. Để tìm được lỗi một cách nhanh chóng, trước hết chúng ta cần nắm được luồng xử lý của sự kiện. Đối với Laravel cũng vậy, bạn cần hiểu được luồng trong Laravel.

 Vòng đời chuẩn là: o Yêu cầu HTTP từ Routed tới một Controller (routing nằm trong thư mục app/routes.php) o Controller sẽ thực hiện những action và gửi kết quả tới view (app/controllers) o View sẽ hiển thị những kiểu dữ liệu phù hợp và gửi lại HTTP Response (app/views) Chú ý: o Route có thể trả trực tiếp View hay Response, bỏ qua Controller o Filters (app/filters.php) có thể xảy ra trước hoặc sau route  Vòng đời của một yêu cầu được chia làm ba phần: Loading, start, running 1.5 Full-Text Search. [4] Full-text search, hoặc FTS là một kỹ thuật sử dụng bởi các công cụ tìm kiếm để tìm kết quả trong một cơ sở dữ liệu. Bạn có thể sử dụng nó để kết nối với các 5 kết quả tìm kiếm trên các trang web như cửa hàng, công cụ tìm kiếm, báo chí và nhiều hơn nữa. Cụ thể FTS lấy ra các tài liệu không khớp hoàn toàn với tiêu chí tìm kiếm.

Inverted Index Inverted Index là kĩ thuật index theo đơn vị term(thay vì index theo đơn vị row giống như mysql). Cụ thể hơn, Inverted Index là một cấu trúc dữ liệu, nhằm mục đích mapping giữa term, và các document chứa term đó. Ví dụ thế này cho dễ hiểu: Ta có 3 documments d1, d2, d3 như thế này: d1 = "có một con bò"; d2 = "có một đứa chăn trâu"; d3= "một con vịt"; Inverted Index của 3 documents đó sẽ được lưu dưới dạng như sau: "có" => {d1, d2} "một" => {d1, d2, d3} "con" => {d1, d3} "bò" => {d1} "đứa" => {d2} "chăn" => {d2} "trâu" => {d2} "vịt" => {d3} Xong, giờ thì nếu ta muốn tìm kiếm 1 cụm từ "một con bò", với câu query LIKE bình thường, nó sẽ match với d1, tìm thấy, xong tiếp lại match với d2, không thấy, match với d3, không thấy => kết quả d1. 6 Nhưng ta đã dùng Inverted Index, vậy nên công việc bây giờ chỉ là tìm kiếm document chứa 3 term {"một", "con", "bò"}.

Để làm việc này đơn giản là phép toán AND trong inverted index: {d1, d2, d3} AND {d1} AND {d1} = {d1} => Kết quả là d1. Ngoài ra, một điểm hay nữa chính là việc inverted index có khả năng flexible trong việc tìm kiếm, ví dụ giờ ta tìm cụm từ "bò con một", "con một bò",. thì kết quả vẫn là d1, trong khi LIKE sẽ không tìm thấy. Tokenize Cách index như trên hay thật, nhưng mà câu hỏi đặt ra là tách chuỗi làm sao để có được tập hợp index như vừa rồi? Để thực hiện việc này, có 2 kỹ thuật cơ bản giải quyết bài toán:  N-Gram  Morphological Analysis N-Gram N-gram là kĩ thuật tách một chuỗi thành các chuỗi con, thông qua việc chia đều chuỗi đã có thành các chuỗi con đều nhau, có độ dài là N.

Về cơ bản thì N thường nằm từ 1~3, với các tên gọi tương ứng là unigram(N = 1), bigram(N = 2), trigram(N = 3). Ví dụ đơn giản là chúng ta có chuỗi "Hello world!", được phân tích thành bigram: "Hello world!" => {"He", "ll", "o ", "wo", "rl", "d!"} Tách chuỗi như này đơn giản lắm, có thể dùng PHP mà mình đã từng làm để thống kê văn bản: public static function splitString($data, $numChar) { $content = self::processString($data->content); $result = []; 7 $length = mb_strlen($content, 'UTF-8'); $length = $length - ($length % $numChar); for ($i = 0; $i < $length; $i += $numChar) { $char = mb_substr($content, $i, $numChar, 'UTF-8'); $result[] = $char; } return $result; } Đầu vào $numChar là 1, 2, 3 tương ứng với unigram, bigram, trigram. Morphological Analysis Về cơ bản Morphological Analysis là một kĩ thuật phổ biến trong xử lý ngôn ngữ tự nhiên (Natural Language Processing). Tức là chúng ta sẽ tách chuỗi thành những từ có nghĩa.

"Hello world!" => {"Hello", "world", "!"} Để có được kết quả phân tích như trên, chúng ta cần phải có:  một bộ từ điển tốt (để phân biệt được từ nào là có ý nghĩa, và thứ tự các từ thế nào thì có ý nghĩa).  sử dụng các nghiên cứu sâu về xử lý ngôn ngữ tự nhiên. N-Gram hay MA Qua trình bày thì thấy MA tốt thật, kết quả tìm kiếm chính xác và gần gũi với chúng ta, còn N-Gram thì thấy có vẻ tệ. Nhưng để xây dựng MA thì cần một bộ từ điển tốt, để giúp cho máy tính có thể phân biệt được các từ có nghĩa, tức là từ điển chứa càng nhiều từ (terms) càng tốt.

Tuy nhiên ngôn ngữ thì mỗi ngôn ngữ lại có đặc trưng riêng, và không ngừng mở rộng, không ngừng thêm các từ mới. Việc chỉ sử dụng MA sẽ gây ra một tác dụng phụ là có rất nhiều từ không/chưa có trong từ điển, dẫn đến không thể index, và do đó sẽ không thể tiến hành tìm kiếm từ đó được. 8 Cách giải quyết tốt nhất là chúng ta sẽ kết hợp cả MA và N-gram. Cách kết hợp thế nào thì tùy trường hợp cụ thể.

Boolean Logic Boolean logic sử dụng trong Search Engine thường sẽ gồm 3 phép toán chính là AND, NOT và OR. Ta có một ví dụ giống ở trên: D1 = "This is first document" D2 = "This is second one" D3 = "one two" D4 = "This one is great" D5 = "This two is great!" "this" => {D1, D2, D4, D5} "is" => {D1, D2, D4, D5} "first" => {D1} "document" => {D1} "second" => {D2} "one" => {D2, D3, D4} "two" => {D3, D5} Bây giờ ta muốn tìm This one, chúng ta sẽ tách câu truy vấn đó thành 2 token This và one.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ