LỜI MỞ ĐẦU
Trong giai đoạn phát triển Công nghệ Thông tin như ngày hôm nay thì việc đọc
sách là vấn đề được nhiều người quan tâm. Trong trường Đại học thì việc đọc sách lại
là việc làm quan trọng hơn, vì vậy việc xây dựng một thư viện trực tuyến rất cần thiết.
Một số chức năng cơ bản của một website thư viện cần phải có như: tra cứu sách, tìm
kiếm sách, mượn trước sách…Tuy nhiên việc tìm kiếm một cuốn sách nào đó chưa thể
đáp ứng được sách đó có phù hợp với người dùng đó muốn tìm hay không. Với những
vấn đề nêu trên đã thúc đẩy tôi đến với đề tài “Xây dựng website thư viện cho trường
Đại học Trà Vinh kết hợp hệ thống khuyến nghị cho người dùng” để hướng cho các
bạn sinh viên tại trường Đại học Trà Vinh có thể chọn được sách thích hợp cho mình
nhất.
Trong khóa luận này tôi đã có sử dụng một hệ thống thông minh dùng các kỹ
thuật khai thác dữ liệu tạo ra một dữ liệu tri thức để áp dụng vào website. Đây là một
hệ thống được sử dụng rỗng rãi trên những website thương mại điện tử và các website
khác, các nhà phát triển ứng dụng web sử dụng nó để gợi ý cho khách hàng những gì
họ có thể lựa chọn sẽ thích hợp nhất. Đây cũng là một chiến lược kinh doanh của các
doanh nghiệp có áp dụng thương mại điện tử.
Sau quá trình thực hiện khóa luận thì tôi đã xây dựng thành công webite thư
viện kết hợp với hệ thống khuyến nghị người dùng. Với sự thành công này nếu hệ
thống được áp dụng vào thực tế thì nó sẽ giúp các bạn sinh viên chọn được sách phù
hợp với mình.
GVHD: ThS Nguyễn Bảo Ân SVTH: Thạch Va Rết
LỜI CẢM ƠN
Trước tiên em xin gởi lời cảm ơn đến Ban Giám Hiệu trường, thầy cô, gia đình
và bạn bè đã tạo điều kiện để em hoàn thành khóa luận này.
Cảm ơn thầy Nguyễn Bảo Ân, thầy là người trực tiếp hướng dẫn, đưa ý tưởng,
hướng giải quyết trong quá trình làm khóa luận tốt nghiệp. Ngoài ra, thầy còn cung
cấp cho em những kiến thức mà em chưa được học trên lớp cũng như cung cấp những
tài liệu cần thiết trong quá trình thực hiện khóa luận.
Cảm ơn quý thầy cô trong bộ môn Công nghệ Thông tin đã tận tình chỉ dạy
trong suốt thời gian qua. Những kiến thức mà các thầy cô truyền đạt cho em sẽ là nền
Giảng viên hướng dẫn
Nguyễn Bảo Ân
GVHD: ThS Nguyễn Bảo Ân SVTH: Thạch Va Rết
NHẬN XÉT
(Của giảng viên phản biện trong đồ án, khoá luận của sinh viên)
Giảng viên phản biện
Nguyễn Thái Sơn
GVHD: ThS Nguyễn Bảo Ân SVTH: Thạch Va Rết
MỤC LỤC
4.4. Hậu xử lý 86
4.5. Khuyến nghị 86
Chương 5: CÀI ĐẶT VÀ KẾT QUẢ 91
5.1. Cài đặt 91
5.1.1. Yêu c u h th ngầ ệ ố 91
5.1.2. H ng d n c i tướ ẫ à đặ 91
5.2. Kết quả thử nghiệm 94
5.2.1. Các ch c n ng c a th vi nứ ă ủ ư ệ 94
5.2.2. K t qu khuy n nghế ả ế ị 100
Chương 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 102
6.1. Kết luận 102
6.1.1. K t qu t cế ảđạ đượ 102
6.1.2. H n chạ ế 102
6.2. Hướng phát triển 103
DANH MỤC TÀI LIỆU THAM KHẢO 104
GVHD: ThS Nguyễn Bảo Ân SVTH: Thạch Va Rết
DANH MỤC CÁC BẢNG
Bảng 2.1: Quá trình phát triển của ASP.NET 5
Bảng 2.2: So sánh giữa ASP.NET Webform và ASP.NET MVC 9
Bảng 2.3: Các loại Action Result 12
Bảng 2.4: Bảng minh họa khai thác luật kết hợp 20
Bảng 3.1: Bảng “Sach” 31
Bảng 3.2: Bảng “TheLoai” 31
Bảng 3.3: Bảng “User” 31
Bảng 3.4: Bảng “TinHoatDong” 32
Bảng 3.5: Bảng “OrderLine” 32
Bảng 3.6: Bảng “LienHe” 32
Bảng 3.7: Bảng “NewMinning” 32
Bảng 3.8: Use case đăng nhập 36
Bảng 3.9: Use case đăng ký thành viên 39
Hình 3.9: Lớp đặt sách 27
Hình 3.10: Lớp liên hệ 28
Hình 3.11: Lớp tin hoạt động 28
Hình 3.12: Sơ đồ lớp nghiệp vụ 29
Hình 3.13: Sơ đồ cơ sở dữ liệu quan hệ 30
Hình 4.1: Kiến trúc tổng quan của hệ thống khuyến nghị 84
Hình 4.2: Mô tả quá trình khai thác dữ liệu trong hệ thống khuyến nghị 85
Hình 4.3: Ví dụ về dữ liệu chứa các luật 87
Hình 4.4: Dữ liệu sau khi đã chọn 87
Hình 4.5: Sơ đồ hành động 88
Hình 4.6: Sơ đồ tuần tự 88
Hình 4.7: Kết xuất dữ liệu 89
Hình 4.8: Kết quả khyến nghị 90
Hình 5.1: Tạo mới một thư mục ảo (Virtual Directory) 92
Hình 5.2: Chọn thư mục chứa website 92
Hình 5.3: Cấu hình thư mục ảo 93
GVHD: ThS Nguyễn Bảo Ân SVTH: Thạch Va Rết
Hình 5.4: Cấu hình Extension Mapping 93
Hình 5.5: Nhập thông tin đăng nhập 94
Hình 5.6: Đăng nhập thành công 94
Hình 5.7: Giao diện trang chủ 95
Hình 5.8: Đăng ký thành viên 96
Hình 5.9: Chức năng liên hệ 97
Hình 5.10: Gửi liên hệ thành công 97
Hình 5.11: Giao diện mượn trước sách 98
Hình 5.12: Giao diện tìm kiếm sách 98
Hình 5.13: Giao diện hiển thị kết quả tìm kiếm 99
Hình 5.14: Giao diện quản lý sách 99
Hình 5.15: Minh họa dữ liệu sau khi khai thác 100
Hình 5.16: Kết quả khuyến nghị 101
những quyển sách thích hợp.
GVHD: ThS Nguyễn Bảo Ân 1 SVTH: Thạch Va Rết
Chương 2: CƠ SỞ LÝ THUYẾT
2.1. Tìm hiểu mô hình MVC (Model – View - Controller)
2.1.1. Xuất xứ
Vào đầu những năm 70 của thế kỷ 20, tại phòng thí nghiệm Xerox PARC ở
Palo Alto. Với sự ra đời của giao diện đồ họa (Graphical User Interface) và lập trình
hướng đối tượng (Object Oriented Programming) cho phép các lập trình viên làm việc
với các thành phần đồ họa như nhưng đối tượng đồ họa có thuộc tính và phương thức
riêng của nó. Tiếp đến các nhà nghiên cứu đã cho ra một kiến trúc mới đó là mô hình
MVC(Model – View - Controller) [2].
MVC được phát minh tại Xerox vào những năm 70 bởi TrygveReenskaug. Các
giấy tờ quan trọng được công bố trên MVC là “A Cookbook for Using the Model-
View-Conntroller User Interface Paradigm in Smalltalk - 80” bởi Glenn Krasner và
Stephen Pope xuất bản trong tháng 8/tháng 9 năm 1988.
2.1.2. Kiến trúc của mô hình MVC
Kiến trúc của MVC có 3 thành phần cơ bản là: Models, Views, Controllers.
Mỗi thành phần có những nhiệm vụ khác nhau. Models có trách nhiệm với toàn bộ dữ
liệu cũng như các trạng thái của một đối tượng đồ họa. Views là thể hiện của một đối
tượng đồ họa, dùng để trình diễn cho những đối tượng dữ liêu ở thành phần Models.
Thành phần cuối cùng là Controllers điều khiển việc tượng tác giữa các đối tượng đồ
họa với người sử dụng cũng như đối với các đối tượng đồ họa khác.
Khi người dùng hoặc những đối tượng khác cần thay đổi trạng thái của đối
tượng đồ họa thì nó tác động thông qua thành phần Controller của đối tượng đồ họa.
Sau đó Controller sẽ tác động đến thành phần Model để lấy dữ liệu. Một khi có sự thay
đổi nào trên Model thì nó sẽ phát thông điệp đến thành phần Controller và View để có
sự thay đổi thích hợp. Khi nhận được thông điệp từ Model thì View sẽ cập nhật lại thể
hiện của mình để đảm bảo rằng nó luôn là thể hiện trực quan chính xác của Model.
Còn Controller sau khi nhận được thông điệp của Model nó sẽ có nhưng tương tác
phản hồi lại cho người sử dụng hoặc các đối tượng khác.
* Lịch sử phát triển của ASP.NET
Để hiểu sâu hơn về nền tảng ASP.NET MVC, trước tiên chúng ta cần xem lại
lịch sử phát triển của ASP.NET theo từng năm. Quá trình phát triển của nền tảng
ASP.NET được liệt kê ở bảng sau đây [11]:
GVHD: ThS Nguyễn Bảo Ân 4 SVTH: Thạch Va Rết
ActionView incoming request
ActionRecord
ActionController
Mô hình MVC
View
Controller
Model
Thời kỳ Công nghệ Điểm mạnh Điểm yếu
Thời kỳ đầu Common Gateway
Interface (CGI)
Đơn giản
Linh hoạt
Tùy chọn duy
nhất trong thời
gian này
Chạy ngoài Web
Server,cần nhiều
tài nguyên (Cấp
phát các tiến trình
riêng lẻ trên HĐH
cho mỗi yêu cầu)
Cấp thấp
Thời kỳ tiếp theo Microsoft Internet
Database
connector
2010 ASP.NET MVC
2.0
2011 ASP.NET MVC
3.0
Bảng 2.1: Quá trình phát triển của ASP.NET
* ASP.NET truyền thống
ASP.NET là 1 bước nhảy vọt khi lần đầu tiên xuất hiện vào đầu năm 2002 [2]. Hình
dưới đây sẽ minh họa công nghệ ASP.NET Webform trong lần xuất hiện mới đây.
GVHD: ThS Nguyễn Bảo Ân 5 SVTH: Thạch Va Rết
Hình 2.3: Kiến trúc của ASP.NET Webform
Với ASP.NET Webform, Microsoft đã che giấu đi cả 2 HTTP (không trạng
thái) và HTML (không thân thiện với những nhà phát triển ứng dụng Web) bằng cách
dùng mô hình giao diện như một đối tượng điều khiển (control) có cấu trúc hoạt động
phía Server.
Mỗi đối tượng điều khiển (control) lưu trữ trạng thái qua các yêu cầu (request)
(sử dụng tính năng viewstate), tự động tạo ra mã HTML khi cần thiết và tự động kết
nối với các sự kiện phía Client (khi click chuột) với mã hồi đáp phía Server. Tóm lại,
Webform là môt lớp trừu tượng lớn nhằm chuyển giao diện có xử lý sự kiện thông qua
Web.
2.1.5. Nhược điểm của ASP.NET
- ViewState (trạng thái hiển thị): Sau khi lưu trữ các trạng thái qua các yêu cầu
(request) qua lại giữa client và server thường tạo ra một khối dữ liệu lớn. Điều đó làm
cho những người truy cập vào trang web phải chờ đợi trong một thời gian dài khi họ
click vào một button hoặt di chuyển đến trang nào đó. Để giải quyết được tình trạng
này các nhà lập trình thường sử dụng Ajax.
- Page life cycle (chu kỳ sống của trang web): Kĩ thuật này kết nối sự kiện từ
phía client với mã xử lý sự kiện này ở phía server là một phần của page life cycle, điều
này có thể gặp rắc rối và mỏng manh. Chỉ một số nhà lập trình viên chuyên nghiệp
GVHD: ThS Nguyễn Bảo Ân 6 SVTH: Thạch Va Rết
mới có thể thành công trong việc xử lý hệ thống đối tượng điều khiển (control) mà
- Hỗ trợ tốt mô hình phát triển kiểm thử (TDD – Test Driven Development) cài
đặt các kiểm thử đơn vị (unit tests) tự động, xác định và kiểm tra lại các yêu cầu trước
khi bắt tay vào viết code.
- Dễ phối hợp giữa người lập trình và người thiết kế giao diện.
- Sử dụng lại những tính năng tốt của ASP.NET.
2.1.8. So sánh giữa ASP.NET và ASP.NET MVC
ASP.NET Webform mang tới một trang web mà giao diện có thể lưu trữ các
trạng thái, sử dụng viewstate và postback để tạo ra hiệu ứng của việc có trạng thái.
Điều này thích hợp với việc kéo và thả các control của Window Form, nghĩa là chúng
ta đặt các đối tượng có giao diện lên trang và mã xử lý vào trình xử lý sự kiện của
chúng.
MVC cung cấp một cách tiếp cận đơn giản, mạnh mẽ và hiện đại cho việc viết
các ứng dụng web với mã có trật tự mà dễ dàng để kiểm thử và bảo trì sau này, là giảm
đi sự phức tạp khó chịu và các giới hạn không đáng có.
Điều đặc biệt của ASP.NET MVC có mã nguồn mở, chúng ta có thể dễ dàng tải
mã nguồn gốc của ASP.NET MVC và có thể sửa đổi và tạo ra phiên bản riêng của
mình. Những điểm khác nhau giữa ASP.NET sẽ được liệt kê sau đây [2]:
GVHD: ThS Nguyễn Bảo Ân 8 SVTH: Thạch Va Rết
Tính năng ASP.NET ASP.NET MVC
Kiến trúc chương
trình
Kiến trúcWebformBusiness
Database
Phân chia chương trình thành
Controllers, Models, Views
Cú pháp Sử dụng cú pháp của
Webform, tất các sự kiện và
control do server quản lý
Các sự kiện được điều khiển
bởi controllers, các control
Cấu trúc địa chỉ rõ ràng
theodạngControllers/Action/ID
Sử dụng Routing để quản lý
URL
Bảng 2.2: So sánh giữa ASP.NET Webform và ASP.NET MVC
2.1.9. Tìm hiểu về định tuyến URL
ASP.NET MVC Framework có trang bị một bộ máy ánh xạ URL rất tuyệt vời.
Bộ máy này cung cấp các phương thức rất linh hoạt trong việc ánh xạ URL cho các
controllers [2]. Chúng ta có thể dễ dàng định ra các quy luật ánh xạ và cài đặt
ASP.NET theo những quy luật đó, xác định phải thực thi controllers nào mới phù hợp.
Nền tảng ASP.NET MVC có khả năng phân tích URL chuyển các thông số trong URL
thành các tham số gọi hàm trong các phương thức của controllers.
* Đường đi mặc định từ ASP.NET MVC URL đến các lớp Controllers.
Trình duyệt (browser) yêu cầu một địa chỉ từ controllers action trong ASP.NET
MVC được gọi là định tuyến URL (URL Routing). URL routing này sẽ chỉ định yêu
GVHD: ThS Nguyễn Bảo Ân 9 SVTH: Thạch Va Rết
cầu (request) đến một action nào đó trong controllers. URL routing sử dụng một bảng
định tuyến để điều khiển các yêu cầu. Bảng định tuyến này được tạo ra khi ứng dụng
được chạy lần đầu tiên. Bảng định tuyến này được thiết lập trong tập tin
“Global.asax”.
Khi ứng dụng được chạy lần đầu tiên thì phương thức Application_Start() được
gọi. Đồng thời phương thức này lại gọi một phương thức khác là
RegisterRoutes(RouteTable.Routes).
Định tuyến mặc định chia mỗi yêu cầu thành 3 đoạn, mỗi đoạn nằm cách nhau
bởi dấu “/”. Phân đoạn thứ nhất chứa controllers, phân đoạn thứ hai chứa Action
Method của controllers đó, phân đoạn cuối cùng là tham số đầu vào của Action.
Ví dụ, ta có địa chỉ như sau: /QLSach/Edit/1
Ta phân tích như sau:
Controller: QLSach
Action: Edit
Tên Action
Result
Mục đích Ví dụ
ViewResult Hiển thị một View mới
hoặc trang mặc định
Return View();
Return View(“ViewName”, ModelObject);
PartialViewRe Trả về một View mới Return PartialView();
GVHD: ThS Nguyễn Bảo Ân 11 SVTH: Thạch Va Rết
sult hay hay một View có
dạng UserControll
ReturnPartialView(“PartialViewName”,Mo
delObject);
RedirectToRout
eResult
Trả về một Action
Method mới
ReturnRedirectToAction(“OrderAction”,”S
omeController”);
Return RedirectToRoute(“RouteName”);
RedirectResult Chuyển đến một địa
chỉ khác
Return Redirect(“”);
ContentResult Trả về dữ liệu dạng văn
bản
ReturnContent(rssString,”application/rss+x
ml”);
FileResult Truyền dữ liệu nhị
phân trực tiếp đến trình
duyệt
các mẫu tiềm ẩn, chưa biết những hữu ích từ các CSDL lớn [1].
KTDL là tiến trình khái quát các sự kiện rời rạc trong dữ liệu thành các tri thức
mang tính khái quát, tính quy luật hỗ trợ tích cực cho các tiến trình ra quyết định.
Các tên gọi khác
+ Khám phá tri thức trong các cơ sở dữ liệu (Knowledge discovery in
databases).
+ Trích rút tri thức (Knowledge extraction).
+ Phân tích mẫu/dữ liệu (Data/pattern analysis).
Quá trình khám phá trí thức
Hình 2.5: Mô hình khám phá tri thức
Bước đầu tiên của quá trình khai thác dữ liệu là thu thập những dữ liệu thô chưa
qua xử lý hoặc dữ liệu bán cấu trúc như HTML…Sau khi thu thập đầy đủ dữ liệu ta
thực hiện quá trình lọc trích và biến đổi dữ liệu, quá trình đó được gọi là quá trình tiền
xử lý. Bước tiếp theo là quá trình lựa chọn những dữ liệu tri thức mang tính chất quan
trọng nhất. Những tri thức mà được chọn phải phù hợp với phương diện mà chúng ta
cần khai thác.
Bước tiếp theo là chọn thuật toán khai phá dữ liệu thích hợp và thực hiện việc
khai phá dữ liệu để tìm được các mẫu (pattern) có ý nghĩa dưới dạng biểu diễn tương
ứng với các ý nghĩa đó (thường được biểu diễn dưới dạng các luật xếp loại, cây quyết
định, luật sản xuất, biểu thức hồi quy, …).
GVHD: ThS Nguyễn Bảo Ân 13 SVTH: Thạch Va Rết
Dựa vào các mẫu chúng ta đã xác định được chúng ta thực hiện việc thống kê.
Sau đó tìm ra mối quan hệ giữa những tri thức mà chúng ta đã khám phá được.
Quá trình khai phá tri thức trong kinh doanh
Hình 2.6: Quá trình khai phá tri thức trong kinh doanh
2.2.2. Bài toán khai thác tập thường xuyên
Khái niệm: là tiến trình khám phá các tập giá trị thuộc tính xuất hiện phổ biến
trong các đối tượng dữ liệu [1].
Dưới đây là hai thuật toán nổi tiếng nhất trong các thuật toán đặc trưng của khai
thác tập thường xuyên:
}/ i thuộc [1,n]
Cho k=1, ungvien
k
=I, luachon
k
={}
Khi [(k<=n) || (ungvien
k
!={})]{
Với mọi U thuộc ungvien
k
Nếu S(U[i]>S
min
thì luachon
k
+=U[i])
Với mọi X,Y thuộc luachon
k
{
Ta có W=X hợp Y và |W| =k+1
Nếu mọi Z con W và |Z| =k
Và mọi Z cũng là con luachon
k
thì ungvien
(k+1)
+=W
}
k++
}
Để hiểu thêm về giải thuật tôi có ví dụ như sau :
={A,B,C,D,E} , S(ungvien)={5,6,5,6,2}
luachon
1
={A:5,B:6,C:5,D:6}
Xét AB đều có A, B thuộc luachon
1
ungvien
2
+=AB
Xét AC đều có A, C thuộc luachon
1
ungvien
2
+=AC
………
Xét CD đều có C,D thuộc luachon
1
ungvien
2
+=CD
ungvien
2
={AB,AC,AD,BC,CD}
GVHD: ThS Nguyễn Bảo Ân 15 SVTH: Thạch Va Rết