Tính cấp thiết của đề tài
Ngày nay, việc ứng dụng công nghệ thông tin và tin học hóa đã trở thành yếu tố quyết định trong hoạt động của chính phủ, tổ chức và doanh nghiệp Công nghệ thông tin đóng vai trò quan trọng, giúp tạo ra những bước đột phá mạnh mẽ trong mọi lĩnh vực.
Nhu cầu đọc và mua sách tại Việt Nam ngày càng tăng, nhưng cuộc sống bận rộn khiến nhiều người không có thời gian tìm kiếm sách phù hợp Do đó, việc xây dựng một website chuyên giới thiệu và review sách hay sẽ giúp tiết kiệm thời gian và giúp độc giả dễ dàng lựa chọn những quyển sách bổ ích cho bản thân.
Việc xem các bình luận và đánh giá của người dùng trên các trang sách thường gặp khó khăn do sự lộn xộn và thiếu phân loại rõ ràng Điều này khiến người dùng khó khăn trong việc tìm kiếm những cuốn sách phù hợp với nhu cầu của mình Hơn nữa, hiện nay có rất ít website chuyên cung cấp đánh giá sách với tính năng tự động phân loại các nhận xét, điều này hạn chế trải nghiệm của người dùng trong việc khám phá và chọn lựa sách Xuất phát từ thực tế này, tôi đã quyết định chọn đề tài: “XÂY DỰNG WEBSITE GIỚI THIỆU, ĐÁNH GIÁ SÁCH”.
Hệ thống "VỀ SÁCH" được phát triển bằng ngôn ngữ Ruby on Rails, tích hợp nhiều gem hỗ trợ, giúp tự động phân loại các đánh giá sách của người dùng theo nhiều tiêu chí khác nhau.
Mục tiêu và nhiệm vụ nghiên cứu
Mục tiêu
Website được sắp xếp bố cục một cách hợp lý thân thiện với người dùng, tạo điều kiện cho người đọc dễ định hướng trong website
SVTH: MAI VĂN NHẬT TIẾN 2
Website có hình thức đẹp phù hợp với chủ đề, có đầy đủ nội dung người dùng quan tâm, thân thiện và thích hợp với mọi lứa tuổi.
Nhiệm vụ
Để đạt được những mục tiêu trên thì nhiệm vụ đặt ra của đề tài là:
Khảo sát nhu cầu của mọi người về việc đọc sách và xem giới thiệu review về sách trước khi mua
Tìm hiểu các loại sách trên thị trường được nhiều người quan tâm
Quản lý thông tin sách
Xây dựng các chức năng như hiển thị sách mới và hot trên thị trường, cho phép người dùng đăng nhập để đánh giá và bình luận về sách, hiển thị đánh giá và phê bình từ người dùng khác, cùng thông tin về tác giả và thể loại Hệ thống cũng hỗ trợ người dùng tìm kiếm và đánh giá sách theo thang điểm, đề xuất thêm sách cho quản trị viên, đánh dấu sách yêu thích, và theo dõi các hoạt động của bản thân cũng như của người dùng khác trên trang cá nhân.
Tự động phân lớp những bình luận tích cực và tiêu cực của người dùng
Thống kê sách được yêu thích nhất và xem các loại sách được yêu thích
Liên kết với tài khoản gmail và facebook của người dùng.
Đối tƣợng và phạm vi nghiên cứu
Đối tƣợng nghiên cứu
Các công ty, doanh nghiệp về sách và các hiệu sách trên cả nước
Những người quan tâm và có sở thích về sách muốn tìm hiểu và xem những đánh giá khách quan về sách trước khi mua
Hướng đến người dùng ở mọi lứa tuổi.
Phạm vi nghiên cứu
Đề tài nghiên cứu xây dựng hệ thống giới thiệu, đánh giá sách trong một phạm vi nhỏ, trong một vài thể loại cụ thể
SVTH: MAI VĂN NHẬT TIẾN 3
Giới hạn về thời gian của dữ liệu trong vòng 3 năm gần đây.
Phương pháp nghiên cứu
Về mặt lý thuyết
Nghiên cứu các tài liệu về ngôn ngữ lập trình ruby on rails
Khảo sát nhu cầu thực tế, sử dụng các phương pháp phỏng vấn, điều tra, phân tích, thống kê
Tìm hiểu, tham khảo các ứng dụng sử dụng ngôn ngữ Ruby on Rails và các website giới thiệu về sách, nghiên cứu và ứng dụng vào đề tài
Tìm hiểu về khai phá dữ liệu và thuật toán Machine Learning
Tìm hiều về các gem hỗ trợ trong rails.
Về mặt lập trình
Sử dụng những kỹ thuật thiết kế website để đưa website giới thiệu về sách vào thực tiễn ngày nay
Nghiên cứu sử dụng các nền tảng Gem hổ trợ của rails và áp dụng vào đề tài
Nghiên cứu về thuật toán phân lớp văn bản K-nearest neighbor và các module hỗ trợ.
Phương tiện, công cụ triển khai
Xây dựng hệ thống trên hệ điều hành Ubuntu
Ngôn ngữ lập trình được sử dụng là Ruby viết trên nền tảng của rails
Trình soạn thảo biên dịch Sublime text
Công cụ lưu trữ mã nguồn: Git
Cơ sở dữ liệu: SQLite
Công cụ kiểm thử: Rspec, Rubocop
Kết quả dự kiến và hướng phát triển của đề tài
Kết quả dự kiến
Kết quả đạt đƣợc là một website có những yếu tố sau :
Hình ảnh đăng tải với chất lượng cao
CSDL bảo mật cao về quản lí thông tin thành viên
Hiển thị tất cả hình ảnh về thông tin sách được giới thiệu
Chức năng bình luận, đánh giá của khách hàng với sách
Thống kê lượt sách thường được yêu thích, bình luận và đánh giá về chất lượng của sách
Phân quyền truy cập đối với người quản trị hệ thống và người dùng
Hiển thị các hoạt động của người dùng lên trang chủ
Cho phép người dùng đề xuất thêm mới sách Đánh dấu sách theo sở thích
Chức năng cho phép người dùng tìm kiếm theo thể loại sách, tiêu đề, theo yêu thích của sách
Chức năng tự động phân loại nhận xét, đánh giá của người dùng dựa trên nội dung nhận xét.
Hướng phát triển của đề tài
Có thể áp dụng vào thực tế.
Bố cục của đề tài
Trong bài viết này, chúng tôi sẽ trình bày lý do lựa chọn đề tài, xác định khách thể và đối tượng nghiên cứu, đồng thời giới hạn phạm vi nghiên cứu Ngoài ra, chúng tôi cũng sẽ nêu rõ nhiệm vụ nghiên cứu và phương pháp được áp dụng trong quá trình thực hiện đề tài.
GIỚI THIỆU TỔNG QUAN
Lý thuyết tổng quan
Ruby được tạo ra bởi Yukihiro Matsumoto (hay cònđược gọi là Matz),người Nhật Bản, vào ngày 24 tháng 2, 1993 và đưa ra bản chính thức vào năm 1995
Ruby chịu ảnh hưởng lớn từ Perl, và khi hoàn thành ngôn ngữ này, Matz đã đùa rằng nên đặt tên cho nó giống như một loại đá quý Bạn của anh đã gợi ý cái tên Ruby, mà sau này Matz nhận ra rằng Ruby tượng trưng cho những người sinh tháng 7, trong khi Pearl tượng trưng cho tháng 6 Anh cho rằng tên Ruby rất phù hợp vì nó kế thừa và phát triển nhiều đặc tính từ Perl.
Hiện nay, có nhiều ngôn ngữ lập trình cho lập trình viên lựa chọn, nhưng việc chọn ngôn ngữ phù hợp có thể khó khăn, đặc biệt với lập trình viên mới Ruby là một lựa chọn tuyệt vời cho những người mới bắt đầu, vì đây là ngôn ngữ mã nguồn mở, hướng đối tượng thuần túy, trong đó mọi giá trị đều là đối tượng Ruby được thiết kế với mục tiêu đơn giản và hiệu suất cao, lấy cảm hứng từ các ngôn ngữ như Lisp, Perl và Smalltalk Ngoài việc hỗ trợ lập trình hướng đối tượng, Ruby còn cho phép lập trình theo kiểu thủ tục và chức năng.
1.1.1.3 Ruby có thể làm đƣợc những gì?
Ruby đã tạo nên những nét đặc biệt nhất của những ngôn ngữ lập trình Những nét chính đó là:
SVTH: MAI VĂN NHẬT TIẾN 7
Ruby là một ngôn ngữ lập trình mạnh mẽ, kết hợp hoàn hảo giữa sức mạnh của lập trình hướng đối tượng và tính tiện lợi của ngôn ngữ kịch bản như Perl Chương trình Ruby có cấu trúc nhỏ gọn và dễ đọc, giúp lập trình viên dễ dàng phát triển và bảo trì mã nguồn.
Cú pháp của ngôn ngữ này rất đơn giản, trực quan và dễ đọc, không có những trường hợp đặc biệt phức tạp cần ghi nhớ Các khái niệm như instance, số nguyên và lớp tương tự như trong các ngôn ngữ khác, giúp người học dễ dàng hình dung và dự đoán cách thực hiện các khái niệm mới từ những kiến thức cơ bản.
Ruby giúp lập trình viên giảm bớt gánh nặng khi làm việc với các trình biên dịch, cho phép họ tập trung vào việc khắc phục lỗi một cách thủ công nhờ vào tính chất vô hình và khả năng kiểm soát của ngôn ngữ này.
Ruby là một ngôn ngữ lập trình mã nguồn mở, cho phép người dùng và nhà phát triển sử dụng miễn phí mà không bị ràng buộc về hệ điều hành hay các vấn đề pháp lý Ngôn ngữ này có thể hoạt động trên nhiều nền tảng, bao gồm Unix, Linux và Microsoft Windows.
1.1.1.4 So sánh với các ngôn ngữ lập trình khác
Giống nhƣ Java, Ruby cũng có:
Bộ nhớđược quản lý thông qua bộ thu dọn rác (garbage collector)
Đối tượng là chủ đạo
Đều có những method public, private, protected
Không giống nhƣ Java, trong Ruby:
Không cần biên dịch code, ta có thể chạy trực tiếp
Sử dụng từ khóa “end” sau khi định nghĩa một cái gì đó, ví dụ như class, thay vì đặt dấu ngoặc quanh khối lệnh
SVTH: MAI VĂN NHẬT TIẾN 8
Sử dụng “require” thay vì “import” ở Java
Tất cả các biến thành viên là private Từ bên ngoài, ta có thể truy xuất mọi thứ qua các method
Mọi thứ đều là đối tượng, bao gồm cả số, ví dụ như 5 và 3.14
Tên biến chỉ là một cái nhãn, không một kiểu đi kèm với nó
Contructor luôn luôn có tên là “initialize” thay vì có tên của class
Trong Ruby, phép so sánh == và equal?() có cách xử lý khác nhau Sử dụng == để kiểm tra sự tương đương giữa các giá trị, tương tự như equal() trong Java Ngược lại, equal?() được dùng để xác định xem hai đối tượng có phải là cùng một thực thể hay không, tương đương với phép so sánh == trong Java.
Giống nhƣ C++, Ruby cũng có:
Đều có những method public, protected, privated
Cú pháp kế thừa(inheritance) chỉ có một kí tự (với Ruby là “