Việc kinh doanh, mua bán thông qua Internet hiện nay ngày càng phổ biến. Đồng thời, các website không ngừng đưa ra nhiều cách thức để giữ được mối quan hệ với khách hàng cũng như ngày càng hoàn thiện chất lượng website của mình. Có nhiều phương án để thực hiện như thăm dò ý kiến khách hàng, cho khách hàng để lại ý kiến hay xây dựng một hệ thống tìm kiếm thật hoàn hảo giúp khách hàng dễ dàng tìm được những món hàng thật vừa ý. Thời gian gần đây, một cách thức khá mới mẻ vừa mới xuất hiện đó là hệ thống khuyến nghị cho người dùng. Khi khách hàng chọn một sản phẩm bất kỳ, hệ thống sẽ tự động tìm ra những sản phẩm khác phù hợp để khuyến nghị cho khách hàng có thể mua cùng lúc với sản phẩm vừa chọn. Lúc đó, hệ thống này đóng vai trò như một nhân viên tư vấn cho khách hàng, để khách hàng dễ dàng hơn trong quá trình chọn hàng. Chính những điều này sẽ làm khách hàng hài lòng hơn khi mua hàng ở website của mình.Thấy được lợi ích của mô hình hệ thống như trên. Tôi quyết định tìm hiểu và xây dựng hệ thống khuyến nghị áp dụng vào khóa luận tốt nghiệp của mình với đề tài là: “Xây dựng website bán hàng kết hợp hệ thống khuyến nghị cho người dùng” dựa trên nền tảng sử dụng công nghệ ASP.NET MVC.
Trang 1TRƯỜNG ĐẠI HỌC TRÀ VINH KHOA KỸ THUẬT VÀ CÔNG NGHỆ
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG WEBSITE BÁN HÀNG KẾT HỢP HỆ THỐNG KHUYẾN NGHỊ
CHO NGƯỜI DÙNG
Giảng viên hướng dẫn: ThS NGUYỄN BẢO ÂN
Sinh viên thực hiện: NGUYỄN THỊ MỸ ĐỊNH
Mã số sinh viên: 110108176
Lớp: DA08TTD
Khoá: 2008 - 2012
Trang 2TRƯỜNG ĐẠI HỌC TRÀ VINH KHOA KỸ THUẬT VÀ CÔNG NGHỆ
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG WEBSITE BÁN HÀNG KẾT HỢP HỆ THỐNG KHUYẾN NGHỊ
CHO NGƯỜI DÙNG
Giảng viên hướng dẫn: ThS NGUYỄN BẢO ÂN
Sinh viên thực hiện: NGUYỄN THỊ MỸ ĐỊNH
Mã số sinh viên: 110108176
Lớp: DA08TTD
Khoá: 2008 - 2012
Trà Vinh, tháng 8 năm 2012
Trang 4LỜI MỞ ĐẦU
Việc kinh doanh, mua bán thông qua Internet hiện nay ngày càng phổ biến Đồngthời, các website không ngừng đưa ra nhiều cách thức để giữ được mối quan hệ vớikhách hàng cũng như ngày càng hoàn thiện chất lượng website của mình Có nhiềuphương án để thực hiện như thăm dò ý kiến khách hàng, cho khách hàng để lại ý kiếnhay xây dựng một hệ thống tìm kiếm thật hoàn hảo giúp khách hàng dễ dàng tìm đượcnhững món hàng thật vừa ý Thời gian gần đây, một cách thức khá mới mẻ vừa mớixuất hiện đó là hệ thống khuyến nghị cho người dùng Khi khách hàng chọn một sảnphẩm bất kỳ, hệ thống sẽ tự động tìm ra những sản phẩm khác phù hợp để khuyến nghịcho khách hàng có thể mua cùng lúc với sản phẩm vừa chọn Lúc đó, hệ thống nàyđóng vai trò như một nhân viên tư vấn cho khách hàng, để khách hàng dễ dàng hơntrong quá trình chọn hàng Chính những điều này sẽ làm khách hàng hài lòng hơn khimua hàng ở website của mình
Thấy được lợi ích của mô hình hệ thống như trên Tôi quyết định tìm hiểu và xâydựng hệ thống khuyến nghị áp dụng vào khóa luận tốt nghiệp của mình với đề tài là:
“Xây dựng website bán hàng kết hợp hệ thống khuyến nghị cho người dùng” dựa trênnền tảng sử dụng công nghệ ASP.NET MVC
Có nhiều cách thức để xây dựng hệ thống này Ở đây chúng tôi sử dụng lịch sửmua hàng của khách hàng để làm tài nguyên đầu vào cho quá trình khai thác Bằngcách khai thác các luật kết hợp tiềm ẩn trong các hóa đơn mua hàng của khách, chúngtôi thực hiện trích lọc những sản phẩm có độ tin cậy phù hợp và sao lưu những sảnphẩm này vào cơ sở dữ liệu làm tài nguyên cho quá trình khuyến nghị sau này
Sau quá trình nghiên cứu và phát triển, tôi đã xây dựng thành công một hệ thốngwebsite giới thiệu, quảng bá sản phẩm và cho phép khách hàng đặt hàng online Hơnnữa, tôi cũng đã xây dựng thành công hệ thống khuyến nghị cho người dùng, đảm bảoyêu cầu đặt ra với kết quả chấp nhận được
Trang 5LỜI CẢM ƠN
Trước tiên, em muốn gửi lời cảm ơn sâu sắc nhất đến thầy ThS Nguyễn Bảo Ân đãtận tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm khóa luậntốt nghiệp Trong thời gian làm việc với thầy, em không ngừng tiếp thu thêm nhiềukiến thức bổ ích mà còn học tập được tinh thần làm việc, thái độ nghiên cứu khoa họcnghiêm túc, hiệu quả Đây là những điều rất cần thiết cho em trong quá trình học tập
và công tác sau này
Em xin chân thành cảm ơn các thầy, cô giáo trong và ngoài trường đã truyền đạtcho em kiến thức để em tích lũy kiến thức thực hiện khóa luận tốt nghiệp và làm vốnkiến thức, hành trang cho em xây dựng sự nghiệp sau này
Tôi xin gửi lời cảm ơn đến những người bạn thân thương đã luôn nhiệt tình giúp đỡtôi trong suốt quá trình thực hiện khóa luận
Đặc biệt, em xin chân thành cảm ơn những người thân trong gia đình, con cảm ơn
Mẹ, người đã luôn quan tâm động viên con trong những lúc khó khăn nhất và luôn tạođiều kiện tốt nhất cho con trong suốt thời gian qua để con có điều kiện thuận lợi nhấthoàn thành tốt khóa luận tốt nghiệp
Trong quá trình thực hiện khóa luận tốt nghiệp em đã vận dụng những kiến thứcmình học, tìm hiểu, nghiên cứu để tìm ra những phương pháp hiệu quả nhằm hoànthành tốt đồ án Tuy nhiên, do thời gian thực hiện khóa luận có giới hạn nên còn nhiềumặt còn hạn chế, mong quý thầy cô góp ý để khóa luận ngày càng hoàn thiện hơn
Em xin chân thành cảm ơn!
Sinh viên
Nguyễn Thị Mỹ Định
Trang 6NHẬN XÉT
(Của giảng viên hướng dẫn trong đồ án, khoá luận của sinh viên)
Giảng viên hướng dẫn
(ký và ghi rõ họ tên)
Nguyễn Bảo Ân
Trang 7NHẬ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
(ký và ghi rõ họ tên)
Trang 8MỤC LỤC
Chương 1 ĐẶT VẤN ĐỀ 1
1.1 Phân tích tình hình phát triển các hệ thống website hiện nay 1
1.2 Bài toán đặt ra 2
1.3 Mục tiêu của đề tài 2
1.4 Các bước thực hiện 3
Chương 2 CƠ SỞ LÝ THUYẾT 4
2.1 Mô hình MVC 4
2.1.1 Tổng quan về mô hình MVC 4
2.1.2 Các thành phần trong mô hình MVC và nhiệm vụ, chức năng của từng thành phần 4
2.1.3 Tìm hiểu sơ lược về mô hình ba lớp và cách làm việc của mô hình ba lớp 5
2.1.4 Những điểm giống nhau và khác nhau giữa mô hình ba lớp và mô hình MVC 6
2.1.5 Ưu điểm, nhược điểm của mô hình MVC 7
2.1.5.1 Ưu điểm 7
2.1.5.2 Nhược điểm 8
2.2 Hiện thực hóa mô hình MVC trên ASP.NET 9
2.2.1 Tổng quan về ASP.NET 9
2.2.1.1 Một vài điểm về ASP.NET 9
2.2.1.2 Nhược điểm của ASP.NET truyền thống 9
2.2.2 Sơ lược về ASP.NET MVC 10
2.2.3 Một vài đặc tính trong ASP.NET MVC 11
2.2.3.1 Khả năng ánh xạ các URL vào trong class Controllers của ASP.NET MVC 11
2.2.3.2 Cơ chế ánh xạ theo bảng định tuyến URL (URL Routing) 11
2.2.3.3 Khả năng test không hạn chế – Test Driven Developer 12
2.2.3.4 Dễ nâng cấp, mở rộng và phát triển ứng dụng 13
2.2.3.5 Kế thừa những tính năng của ASP.NET WebForm 13
2.2.4 Sự khác biệt giữa ASP.MVC và ASP.NET WebForm 13
2.2.5 Những kết luận về mô hình ASP.NET và ASP.NET MVC 15
2.3 Khai thác dữ liệu và hệ thống khuyến nghị 16
Trang 92.3.1 Nghiên cứu tổng quan về khai thác dữ liệu 16
2.3.1.1 Sơ lược về khai thác dữ liệu 16
2.3.1.2 Các kỹ thuật chủ yếu của KTDL 17
2.3.1.3 Các khái niệm cơ bản trong KTDL 17
2.3.1.4 Bài toán khai thác tập phổ biến bằng thuật giải Apriori 19
2.3.1.5 Bài toán khai thác luật kết hợp (Asociation Rules) 22
2.3.2 Hệ thống khuyến nghị 24
2.3.2.1 Tổng quan về các hệ thống khuyến nghị hiện nay 24
2.3.2.2 Hệ thống khuyến nghị dựa trên luật kết hợp 24
Chương 3 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG WEBSITE BÁN HÀNG 26 3.1 Đặc tả yêu cầu 26
3.2 Phân tích use case 26
3.2.1 Xác định actor 26
3.2.1.1 Khách hàng 26
3.2.1.2 Người quản lý 27
3.2.2 Xác định use case 27
3.3 Phân tích lĩnh vực 33
3.4 Hiện thực hóa các use case 42
3.4.1 Hiện thực hóa use case đăng nhập 43
3.4.2 Hiện thực hóa use case đăng xuất 47
3.4.3 Hiện thực hóa use case khách hàng đăng ký thành viên 49
3.4.4 Hiện thực hóa use case kích hoạt tài khoản 53
3.4.5 Hiện thực hóa use case người dùng cập nhật thông tin tài khoản 55
3.4.6 Hiện thực hóa use case khách hàng lựa chọn hình thức xem hàng 61
3.4.7 Hiện thực hóa use case khách hàng quản lý giỏ hàng 64
3.4.8 Hiện thực hóa use case tìm kiếm 68
3.4.9 Hiện thực hóa use case khách hàng xem tin tức 71
3.4.10 Hiện thực hóa use case quản lý nhóm sản phẩm 73
3.4.11 Hiện thực hóa use case quản lý thuộc tính sản phẩm 77
3.4.12 Hiện thực hóa use case quản lý loại sản phẩm 80
3.4.13 Hiện thực hóa use case quản lý sản phẩm 85
Trang 103.4.15 Hiện thực hóa use case quản lý đơn đặt hàng 99
3.4.16 Hiện thực hóa use case quản lý tin tức 103
Chương 4 NGHIÊN CỨU VÀ XÂY DỰNG HỆ THỐNG KHUYẾN NGHỊ CHO NGƯỜI DÙNG 109
4.1 Kiến trúc tổng thể 109
4.2 Tiền xử lý 110
4.3 Khai thác 112
4.4 Hậu xử lý để tạo tri thức khuyến nghị 113
Chương 5 CÀI ĐẶT THỬ NGHIỆM 115
5.1 Cài đặt 115
5.2 Thử nghiệm 115
5.2.1 Kết quả thử nghiệm trong phần quản trị hệ thống 115
5.2.1.1 Giao diện trang chủ 115
5.2.1.2 Giao diện hiển thị sản phẩm theo nhóm sản phẩm 118
5.2.1.3 Giao diện hiển thị sản phẩm theo loại sản phẩm 119
5.2.1.4 Giao diện hiển thị chi tiết sản phẩm 120
5.2.1.5 Giao diện giỏ hàng 120
5.2.1.6 Giao diện đăng ký thành viên 122
5.2.1.7 Giao diện quản lý hệ thống 123
5.2.1.8 Giao diện quản lý nhóm hàng 125
5.2.1.9 Giao diện quản lý loại sản phẩm 126
5.2.1.10 Giao diện quản lý thuộc tính sản phẩm 126
5.2.1.11 Giao diện quản lý sản phẩm 127
5.2.1.12 Giao diện quản lý người dùng 129
5.2.2 Kết quả thử nghiệm hệ thống khuyến nghị 130
5.2.2.1 Kết quả thử nghiệm hệ thống khuyến nghị dựa trên từng lần mua hàng của khách hàng 131
5.2.2.2 Kết quả thử nghiệm hệ thống khuyến nghị dựa trên toàn bộ lịch sử mua hàng của khách hàng 132
Chương 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 136
6.1 Kết luận 136
6.2 Hướng phát triển 136
Trang 11DANH MỤC BẢNG Bảng 2.1 So sánh sự khác nhau giữa ASP.NET WebForm và ASP.NET MVC [6]
15
Bảng 2.2 Dữ liệu cho mẫu cho thuật toán Apriori 20
Bảng 2.3 Dữ liệu L 1 20
Bảng 2.4 Dữ liệu C 1 20
Bảng 2.5 Bảng dữ liệu C 2 21
Bảng 2.6 Bảng dữ liệu L 2 21
Bảng 2.7 Bảng dữ liệu C 3 22
Bảng 2.8 Bảng dữ liệu thường xuyên 22
Bảng 2.9 Kết quả khai thác luật kết hợp 23
Bảng 3.1 Thực thể nhóm sản phẩm - TypeOfProduct 35
Bảng 3.2 Thực thể loại sản phẩm – Category 36
Bảng 3.3 Thực thể thuộc tính của loại sản phẩm – DescriptionOfCategory 36
Bảng 3.4 Thực thể thuộc tính sản phẩm – Property 36
Bảng 3.5 Thực thể Khuyến mãi - Promotion 37
Bảng 3.6 Thực thể Sản phẩm – Product 37
Bảng 3.7 Thực thể thông tin chi tiết thuộc tính của sản phẩm – Description 38
Bảng 3.8 Thực thể thông tin nhập hàng - AddQuantity 38
Bảng 3.9 Thực thể quyền đăng nhập - Role 38
Bảng 3.10 Thực thể Khách hàng/ User - Customer 39
Bảng 3.11 Thực thể hóa đơn - Bill 40
Bảng 3.12 Thực thể chi tiết hóa đơn - BillDetail 40
Bảng 3.13 Thực thể tin tức - News 40
Bảng 4.1 Bảng dữ liệu mẫu cho quá trình khai thác 111
Bảng 4.2 Thực hiện gom nhóm các đơn đặt hàng của một khách hàng lại gần nhau 112
Bảng 4.3 Dữ liệu sau bước tiền xử lý 112
Bảng 4.4 Dữ liệu sau khi khai thác 114
Trang 12DANH MỤC HÌNH
Hình 2.1 Các thành phần trong mô hình MVC 4
Hình 2.2 Sơ đồ làm việc của mô hình MVC 5
Hình 2.3: Sơ đồ làm việc của mô hình ba lớp 6
Hình 2.4 Cơ chế ánh xạ địa chỉ tự phát sinh trong file Global.ascx 12
Hình 2.5 Các quá trình KTDL 17
Hình 2.6 Mô hình tổng quát của hệ thống khuyến nghị 24
Hình 3.1 Mô hình use case tổng quát 28
Hình 3.2 Use case đăng nhập 28
Hình 3.3 Use case quản lý giỏ hàng 29
Hình 3.4 Use case quản lý nhóm hàng 30
Hình 3.5 Use case quản lý thuộc tính 30
Hình 3.6 Use case quản lý loại hàng 31
Hình 3.7 Use case quản lý sản phẩm 31
Hình 3.8 Use case quản lý khách hàng /User 32
Hình 3.9 Use case quản lý hóa đơn 32
Hình 3.10 Use case quản lý tin tức 33
Hình 3.11 Sơ đồ lớp tổng quát 35
Hình 3.12 Lược đồ CSDL 41
Hình 3.13 Mô hình hoạt động của hệ thống 42
Hình 3.14 Sơ đồ lớp đăng nhập 43
Hình 3.15 Sơ đồ hoạt động của use case đăng nhập 44
Hình 3.16 Sơ đồ tuần tự của use case đăng nhập 45
Hình 3.17 Giao diện đăng nhập 46
Hình 3.18 Giao diện hỗ trợ người dùng lấy mật khẩu mới 46
Hình 3.19 Mật khẩu mới được gởi đến email của người dùng 46
Hình 3.20 Sơ đồ lớp của use case đăng xuất 47
Hình 3.21 Sơ đồ hoạt động của use case đăng xuất 48
Hình 3.22 Sơ đồ tuần tự của use case đăng xuất 49
Hình 3.23 Đường dẫn chỉ đến địa chỉ đăng xuất 49
Hình 3.24 Sơ đồ lớp của use case khách hàng đăng ký thành viên 50
Hình 3.25 Sơ đồ hoạt động của use case khách hàng đăng ký thành viên 50
Trang 13Hình 3.26 Sơ đồ tuần tự của use case khách hàng đăng ký thành viên 51
Hình 3.27 Giao diện đăng ký thành viên 52
Hình 3.28 Mã kích hoạt tài khoản được gởi đến email của người dùng 53
Hình 3.29 Sơ đồ lớp của use case kích hoạt tài khoản 53
Hình 3.30 Sơ đồ hoạt động của use case kích hoạt tài khoản 54
Hình 3.31 Sơ đồ tuần tự của use case kích hoạt tài khoản 54
Hình 3.32 Link liên kết đến địa chỉ kích hoạt tài khoản 55
Hình 3.33 Giao diện kích hoạt tài khoản 55
Hình 3.34 Sơ đồ lớp của use case người dùng cập nhật thông tin tài khoản 56
Hình 3.35 Sơ đồ hoạt động của use case người dùng cập nhật thông tin tài khoản 57
Hình 3.36 Sơ đồ tuần tự của use case người dùng cập nhật thông tin tài khoản 58 Hình 3.37 Địa chỉ liên kết xem thông tin tài khoản 58
Hình 3.38 Thông tin khách hàng 59
Hình 3.39 Người dùng đổi thông tin mật khẩu 59
Hình 3.40 Thông tin chi tiết của thành viên quản trị 60
Hình 3.41 Thành viên quản trị cập nhật thông tin cá nhân 60
Hình 3.42 Sơ đồ lớp của use case khách hàng lựa chọn hình thức xem hàng 61
Hình 3.43 Sơ đồ hoạt động của use case khách hàng lựa chọn hình thức xem hàng 61
Hình 3.44 Sơ đồ tuần tự của use case khách hàng lựa chọn hình thức xem hàng62 Hình 3.45 Giao diện hiển thị sản phẩm (theo nhóm sản phẩm) 62
Hình 3.46 Giao diện hiển thị sản phẩm (theo loại sản phẩm) 63
Hình 3.47 Giao diện hiển thị sản phẩm (theo nhóm khuyến mãi) 63
Hình 3.48 Sơ đồ lớp của use case quản lý giỏ hàng 64
Hình 3.49 Sơ đồ hoạt động của use case quản lý giỏ hàng 65
Hình 3.50 Sơ đồ tuần tự của use case quản lý giỏ hàng 66
Hình 3.51 Thiết kế giao diện giỏ hàng 67
Hình 3.52 Khách hàng chọn mua thêm 3 sản phẩm có mã số “147” 67
Hình 3.53 Thông tin giỏ hàng được cập nhật lại 68
Hình 3.54 Sơ đồ lớp của use case tìm kiếm 68
Trang 14Hình 3.56 Sơ đồ tuần tự của use case tìm kiếm 69
Hình 3.57 Tìm kiếm theo tên sản phẩm 70
Hình 3.58 Kết quả tìm kiếm theo tên sản phẩm 70
Hình 3.59 Giao diện tìm kiếm nâng cao và kết quả tìm kiếm 70
Hình 3.60 Sơ đồ lớp của use case khách hàng xem tin tức 71
Hình 3.61 Sơ đồ hoạt động của use case khách hàng xem tin tức 71
Hình 3.62 Sơ đồ tuần tự của use case khách hàng xem tin tức 72
Hình 3.63 Giao diện chi tiết tin tức 72
Hình 3.64 Sơ đồ lớp của use case quản lý nhóm sản phẩm 73
Hình 3.65 Sơ đồ hoạt động của use case quản lý nhóm sản phẩm 74
Hình 3.66 Sơ đồ tuần tự của use case quản lý nhóm sản phẩm 75
Hình 3.67 Giao diện thêm mới nhóm sản phẩm 76
Hình 3.68 Giao diện cập nhật thông tin nhóm sản phẩm 76
Hình 3.69 Giao diện xóa nhóm sản phẩm 77
Hình 3.70 Sơ đồ lớp của use case quản lý thuộc tính sản phẩm 77
Hình 3.71 Sơ đồ hoạt động của use case quản lý thuộc tính sản phẩm 78
Hình 3.72 Sơ đồ tuần tự của use case quản lý thuộc tính sản phẩm 79
Hình 3.73 Giao diện thêm mới thuộc tính 80
Hình 3.74 Giao diện cập nhật thông tin thuộc tính 80
Hình 3.75 Giao diện xóa thông tin thuộc tính 80
Hình 3.76 Sơ đồ lớp quản lý loại sản phẩm 81
Hình 3.77 Sơ đồ hoạt động của use case quản lý loại sản phẩm 81
Hình 3.78 Sơ đồ tuần tự của use case quản lý loại sản phẩm 82
Hình 3.79 Thiết kế giao diện thêm mới loại sản phẩm 83
Hình 3.80 Thiết kế giao diện cập nhật loại sản phẩm 84
Hình 3.81 Giao diện xóa một loại sản phẩm 84
Hình 3.82 Sơ đồ lớp của use case quản lý sản phẩm 85
Hình 3.83 Sơ đồ hoạt động của use case quản lý sản phẩm 86
Hình 3.84 Sơ đồ tuần tự của use case quản lý sản phẩm 87
Hình 3.85 Chọn một loại sản phẩm cho sản phẩm cần tạo 88
Hình 3.86 Giao diện thêm mới sản phẩm 89
Hình 3.87 Giao diện cập nhật thông tin sản phẩm 90
Trang 15Hình 3.88 Giao diện xem chi tiết sản phẩm (quản lý) 91
Hình 3.89 Giao diện xóa sản phẩm 92
Hình 3.90 Sơ đồ lớp của use case quản lý khách hàng/User 93
Hình 3.91 Sơ đồ hoạt động của use case quản lý khách hàng/User 94
Hình 3.92 Sơ đồ tuần tự của use case quản lý khách hàng/User 95
Hình 3.93 Giao diện thêm mới người dùng quản trị 96
Hình 3.94 Một số thông tin của thành viên sẽ được gán giá trị mặc định tương ứng 96
Hình 3.95 Giao diện cập nhật thông tin tài khoản 97
Hình 3.96 Giao diện thông tin chi tiết thành viên 98
Hình 3.97 Giao diện xóa thành viên ra khỏi hệ thống 98
Hình 3.98 Sơ đồ lớp của use case quản lý đơn đặt hàng 99
Hình 3.99 Sơ đồ hoạt động của use case quản lý đơn đặt hàng 100
Hình 3.100 Sơ đồ tuần tự của use case quản lý đơn đặt hàng 101
Hình 3.101 Giao diện thông tin đơn đặt hàng 102
Hình 3.102 Giao diện cập nhật tình trạng đơn đặt hàng 102
Hình 3.103 Giao diện xóa đơn đặt hàng 103
Hình 3.104 Sơ đồ lớp của use case quản lý tin tức 103
Hình 3.105 Sơ đồ hoạt động của use case quản lý tin tức 104
Hình 3.106 Sơ đồ tuần tự use case quản lý tin tức 105
Hình 3.107 Giao diện trang thêm mới tin tức 106
Hình 3.108 Giao diện trang cập nhật tin tức 107
Hình 3.109 Giao diện xóa tin tức 108
Hình 4.1 Kiến trúc tổng thể xây dựng hệ thống khuyến nghị 109
Hình 4.2 Dữ liệu sau khi tiền xử lý - Dữ liệu đầu vào để tiến hành khai thác 113
Hình 5.1 Giao diện trang chủ 117
Hình 5.2 Giao diện hiển thị sản phẩm theo nhóm hàng 118
Hình 5.3 Giao diện hiển thị sản phẩm theo loại sản phẩm 119
Hình 5.4 Giao diện hiển thị chi tiết sản phẩm 120
Hình 5.5 Thông tin giỏ hàng 120
Hình 5.6 Biểu tượng liên kết đến giỏ hàng 121
Trang 16Hình 5.8 Kết quả thử nghiệm giao diện đăng nhập 122
Hình 5.9 Giao diện đăng ký thành viên 122
Hình 5.10 Giao diện kích hoạt tài khoản 123
Hình 5.11 Giao diện quản lý hệ thống 124
Hình 5.12 Giao diện quản lý nhóm hàng 125
Hình 5.13 Giao diện quản lý loại sản phẩm 126
Hình 5.14 Giao diện quản lý thuộc tính sản phẩm 126
Hình 5.15 Giao diện quản lý sản phẩm 127
Hình 5.16 Chọn xem sản phẩm theo loại sản phẩm 128
Hình 5.17 Giao diện danh sách sản phẩm theo loại sản phẩm 128
Hình 5.18 Giao diện quản lý người dùng 129
Hình 5.19 Giao diện quản lý người dùng (thành viên quản trị website) 129
Hình 5.20 Giao diện quản lý khai thác dữ liệu 130
Hình 5.21 Kết quả khai thác được theo từng lần mua hàng 131
Hình 5.22 Kết quả thử nghiệm hệ thống khuyến nghị theo từng đơn hàng 132
Hình 5.23 Kết quả khai thác theo toàn bộ lịch sử mua hàng 132
Hình 5.24 Kết quả khuyến nghị dựa trên toàn bộ lịch sử mua hàng của khách hàng 133
Hình 5.25 Giỏ hàng có sản phẩm nằm trong danh sách khuyến nghị 134
Trang 17KÍ HIỆU CÁC CỤM TỪ VIẾT TẮT
Trang 18Chương 1 ĐẶT VẤN ĐỀ
1.1 Phân tích tình hình phát triển các hệ thống website hiện nay
Ngày nay, cùng với sự tiến bộ của khoa học kỹ thuật, công nghệ thông tin hiệnđang phát triển mạnh mẽ với tốc độ ngày càng tăng cao do nhu cầu trao đổi thông tin
và tiếp thu các tri thức mới của con người Song song đó, công nghệ thông tin đượccon người vận dụng không ngừng vào mọi lĩnh vực của đời sống nhằm phục vụ nhucầu cho mình như giáo dục, kinh doanh, giao thông, các hệ thống ngân hàng, … vàthương mại điện tử là một trong những lĩnh vực được quan tâm và ứng dụng nhiềunhất Thương mại điện tử qua Internet/web giúp người tiêu dùng và doanh nghiệpgiảm đáng kể thời gian và chi phí giao dịch [6] Ở Việt Nam, hình thức bán hàng trựctuyến còn khá mới mẻ như: vatgia.com, sieuthinhanh.com, enbac.com, … vì vậy đây
là thị trường đầy tiềm năng
Để tận dụng triệt để thị trường kinh doanh này ngày càng nhiều các doanh nghiệpcông ty, cửa hàng thành lập website với mục đích quảng bá sản phẩm và mở rộngphạm vi kinh doanh, mua bán hàng hóa thông qua Internet Trong bối cảnh ngày càng
có nhiều website ra đời, để không ngừng cạnh tranh với nhau ngoài việc cung cấpthông tin quảng bá sản phẩm thì việc không ngừng cải tạo nâng cấp chất lượng website
là một điều hết sức cần thiết Với yêu cầu trên, website bán hàng trực tuyến không chỉđơn thuần là việc quảng bá sản phẩm, mua bán hàng hóa trực tuyến nữa mà nó đòi hỏicần có nhiều yếu tố khác như sự dễ dàng, lưu loát trong các nghiệp vụ mua hàng Mộtđiều cũng khá quan trọng và thường được quan tâm là tạo được sự hài lòng và chú ýcho khách hàng khi mua hàng tại website…
Để cải thiện được điều đó và để giữ được mối quan hệ với khách hàng cũng nhưngày càng hoàn thiện chất lượng, các website không ngừng đưa ra nhiều cách thức cảithiện như thăm dò ý kiến khách hàng, cho khách hàng để lại comment, … hay xâydựng một hệ thống tìm kiếm thật hoàn hảo giúp khách hàng dễ dàng tìm được nhữngmón hàng thật vừa ý Thời gian gần đây, một cách thức khá mới mẻ vừa mới xuất hiện
đó là hệ thống khuyến nghị người dùng Khi khách hàng chọn một sản phẩm bất kỳ, hệthống website sẽ tự động tìm ra những sản phẩm khác phù hợp với sản phẩm vừa chọn
và khuyến nghị trở lại cho khách hàng Với cách thức làm việc như thế việc tìm hiểuthông tin và mua hàng của khách hàng có thể có nhiều điều rất bất ngờ và thú vị, nhờ
đó làm tăng thêm mức độ hài lòng của khách hàng Tuy hệ thống này còn tương đối
Trang 19mới nhưng hiệu quả của nó mang lại rất đáng kể Hiện nay, hình thức khuyến nghị nàyđang được nhiều hệ thống mua bán trực tuyến áp dụng và rất hiệu quả như Amazon,eBay, …
1.2 Bài toán đặt ra
Với mục đích tìm hiểu kỹ thuật và xây dựng website bán hàng trực tuyến có vậndụng hệ thống khuyến nghị cho người dùng, em quyết định xây dựng một hệ thốngwebsite bán hàng được trình bày như sau:
Đến với website, khi một người nào đó có nhu cầu mua hàng, xem hàng người đó
sẽ tìm kiếm, lựa chọn tùy thích những sản phẩm thấy vừa ý Trong quá trình này, hệthống sẽ liên tục cập nhật và đưa ra những sản phẩm khuyến nghị cho khách hàngxuyên suốt quá trình chọn lựa, xem và mua hàng Để có thể mua hàng khách hàng cầnphải có tài khoản bằng cách cung cấp các thông tin như tên đăng nhập, mật khẩu vàcác thông tin cá nhân khác như số điện thoại, địa chỉ, email…
Ngoài ra, khách hàng có thể đọc tin tức tại website
Người dùng có thể được giải đáp thắc mắc thông qua mục hỗ trợ trực tuyến củawebsite
Trong các quá trình khách hàng tìm hiểu về thông tin của một sản phẩm nào đó, hệthống sẽ căn cứ vào sản phẩm đó đưa ra những sản phẩm khác (sản phẩm khuyếnnghị) phù hợp với sản phẩm vừa chọn cho khách hàng có thể chọn xem tiếp các sảnphẩm đó
1.3 Mục tiêu của đề tài
- Xây dựng thành công website “Bán hàng” bao gồm các chức năng:
+ Xem thông tin sản phẩm theo nhiều cách như theo loại sản phẩm, theo nhómhàng, …
+ Khách hàng có thể tìm kiếm sản phẩm theo tên sản phẩm, giá cả, loại sảnphẩm
+ Xem tin tức theo từng lĩnh vực hàng hóa được đăng trên website
+ Cho phép khách hàng mua sản phẩm và thanh toán ở mức độ thanh toán ảo.+ Cho phép khách hàng đăng ký thành viên và lấy mã kích hoạt tài khoản thông
Trang 20+ Admin phải quản lý được người dùng, sản phẩm, thông tin các tin tức liênquan
- Xây dựng thành công hệ thống khuyến nghị cho người dùng
+ Khuyến nghị trên cơ sở tận dụng toàn bộ lịch sử mua hàng của từng kháchhàng
+ Khuyến nghị trên cơ sở tận dụng lịch sử mua hàng theo từng hóa đơn
1.4 Các bước thực hiện
- Tìm hiểu các hoạt động trong một website bán hàng trực tuyến
- Tìm hiểu về lĩnh vực khai thác dữ liệu (Data Mining) và hệ thống khuyến nghị.
- Phân tích và thiết kế hệ thống thông tin.
- Nghiên cứu việc sử dụng SQL Server 2008 để xây dựng cơ sở dữ liệu.
- Tìm hiểu, nghiên cứu việc xây dựng web theo mô hình MVC.
- Nghiên cứu công cụ thiết kế và lập trình web là Visual Studio 2010 và viết bằng
ngôn ngữ C#
Trang 21Chương 2 CƠ SỞ LÝ THUYẾT
Vì vậy, để khắc phục những khó khăn trên người ta đưa ra mô hình MVC (Models
- Views - Controllers) với ba tầng hoạt động riêng biệt, mỗi tầng giữ một nhiệm vụnhưng luôn có mối liên hệ mật thiết hỗ trợ lẫn nhau
Nói tóm lại, đây là một phương pháp chia nhỏ một ứng dụng thành ba thành phần
để cài đặt, mỗi thành phần đóng một vai trò khác nhau và ảnh hưởng lẫn nhau, đó làModels, Views, và Controllers
2.1.2 Các thành phần trong mô hình MVC và nhiệm vụ, chức năng của từng thành phần
Hình 2.1 Các thành phần trong mô hình MVC
Trong kiến trúc này, hệ thống được chia thành 3 tầng tương ứng đúng với tên gọicủa nó (Models – Views – Controllers) Ở đó nhiệm vụ cụ thể của các tầng được phânchia rõ ràng và luôn hỗ trợ cho nhau
Trang 22Models (Mô hình) trong ứng dụng MVC là những thành phần có nhiệm vụ lưu trữ
thông tin, trạng thái của các đối tượng, thông thường nó là một lớp được ánh xạ từ một
bảng trong CSDL Đây là một đối tượng hoặc một tập hợp các đối tượng biểu diễn cho
phần dữ liệu của chương trình Nó được giao nhiệm vụ cung cấp dữ liệu cho CSDL vàlưu dữ liệu vào các kho chứa dữ liệu [8] Dữ liệu vào từ người dùng sẽ thông quaViews đến Controllers và được kiểm tra ở Models trước khi lưu vào CSDL Việc truyxuất, xác nhận và lưu dữ liệu cũng là một phần nhiệm vụ của Models
Views (Khung nhìn) là phần giao diện với người dùng Nó bao gồm việc hiển thị dữ
liệu ra màn hình, cung cấp các menu, nút bấm, hộp đối thoại, chọn lựa …, để ngườidùng có thể thêm, xóa, sửa, tìm kiếm và làm các thao tác khác đối với dữ liệu trong hệthống Thông thường, các thông tin cần hiển thị được lấy từ thành phần Models
Controllers (Bộ điều khiển) chịu trách nhiệm xử lý các tác động về mặt giao diện,
các thao tác đối với Models và cuối cùng là chọn một view thích hợp để hiển thị ramàn hình Trong kiến trúc MVC, Views chỉ có tác dụng hiển thị giao diện mà thôi, còn
điều khiển dòng nhập xuất của người dùng vẫn do Controllers đảm trách.
Theo mô hình này, dữ liệu/yêu cầu của người dùng sẽ được nhận bởi Views sau đóViews sẽ chuyển đến cho Controllers cập nhật vào Models, tiếp theo dữ liệu trongModels sẽ được đưa lại cho Views mà không thông qua Controllers, do vậy luồng xử
lý này có hình tam giác như hình sau:
Hình 2.2 Sơ đồ làm việc của mô hình MVC
2.1.3 Tìm hiểu sơ lược về mô hình ba lớp và cách làm việc của mô hình ba lớp
Mô hình ba lớp là mô hình được cấu thành từ 3 thành phần: Presentation Layers, Business Logic Layers, và Data Layers Các lớp này sẽ giao tiếp với nhau
thông qua các dịch vụ (services) mà mỗi lớp cung cấp để tạo nên ứng dụng Trong môhình này, lớp này cũng không cần biết bên trong lớp kia làm những gì mà chỉ cần biếtlớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi
Trang 23Thành phần đầu tiên trong mô hình này là Presentation Layers, lớp này làm nhiệm
vụ giao tiếp với người dùng cuối để thu thập dữ liệu và hiển thị kết quả/dữ liệu thôngqua các thành phần trong giao diện người sử dụng Lớp này sẽ sử dụng các dịch vụ doBusiness Logic cung cấp
Thành phần thứ hai là Business Logic Layer Đây là lớp giữ nhiệm vụ thực hiện
các nghiệp vụ chính của hệ thống Nó sử dụng các dịch vụ do Data Layer cung cấp, vàcung cấp các dịch vụ cho Presentation Layer Lớp này cũng có thể sử dụng các dịch vụcủa các nhà cung cấp thứ ba để thực hiện công việc của mình
Thành phần thứ ba là Data Layer giữ nhiệm vụ thực hiện các nghiệp vụ liên quan
đến lưu trữ và truy xuất dữ liệu của ứng dụng
Đối với những ứng dụng được tổ chức thiết kế theo mô hình ba lớp thì yêu cầu từngười dùng sẽ được thông qua lớp Presentation Layer Sau đó, yêu cầu sẽ được chuyểnđến lớp hai - Business Logic Layer Tại đây, nó sẽ xem xét các yêu cầu, kiểm tra tínhđúng đắn và thực hiện các thao tác cần thiết để lấy được dữ liệu phù hợp để cung cấplên cho lớp Presentation Layer hiển thị ra cho người dùng Quá trình đó được biểu diễnnhư hình sau:
Hình 2.3: Sơ đồ làm việc của mô hình ba lớp
2.1.4 Những điểm giống nhau và khác nhau giữa mô hình ba lớp và mô hình MVC
Trang 24Từ những tìm hiểu trên ta có thể thấy được một số điểm tương đối giống nhau giữa
mô hình MVC và mô hình ba lớp
Ta thấy rằng, mỗi thành phần trong mỗi mô hình đều được phân công và giữ mộtnhiệm vụ cụ thể và những thành phần này không chịu sự ảnh hưởng hay hạn chế bởithành phần kia Tuy vậy, những thành phần này luôn có mối quan hệ mật thiết vớinhau và sẵn sàng hỗ trợ cho nhau khi cần thiết
Từ những phân tích trên ta cũng thấy được rằng đối với mô hình ba lớp dữ liệu/yêucầu đi từ Presentation Layer đến Business Logic Layer Tại đây Business Logic Layer
sẽ truy vấn và lấy kết quả về từ Data Layer Quy trình hoạt động này đều thông qualớp 2 – Business Logic Layer Ta có thể ví cách thức hoạt động của mô hình này hoạtđộng tương tự như một hệ thống hỏi đáp tự động mà người hỏi là lớp 1 – PresentationLayer và hệ thống tư vấn là lớp 2 – lớp Business Logic và lớp Data đóng vai trò là kho
dữ liệu Khi người hỏi gởi câu hỏi đến hệ thống sẽ tìm câu trả lời thích hợp trong kho
dữ liệu và cuối cùng là hệ thống sẽ phản hồi kết quả về cho người hỏi Quá trình thựchiện cứ lặp đi lặp lại theo vòng lặp như thế Dòng dữ liệu sẽ đi theo một con đường haichiều nhưng thông qua một trạm trung chuyển
Khác với cách hoạt động của mô hình ba lớp, cách hoạt động của mô hình MVCtương đối đơn giản Dữ liệu/yêu cầu của người dùng sẽ được lấy thông qua Views vàtruyền đến Controllers; tại đây Controllers sẽ xem xét tùy theo yêu cầu như thế nào sẽchuyển yêu cầu đến Models thích hợp Models bắt đầu lựa chọn, trích lọc dữ liệu phùhợp với yêu cầu Cuối cùng nó gửi kết quả trực tiếp đến cho người dùng thông quaViews mà không phải trả lại kết quả cho Controllers
2.1.5 Ưu điểm, nhược điểm của mô hình MVC
2.1.5.1 Ưu điểm
Do các nhiệm vụ được phân vạch rõ ràng nên ứng dụng được xây dựng dựa trên
mô hình MVC có thể dễ dàng kiểm tra lỗi Biết được lỗi do dữ liệu không hợp lệ tatiến hành kiểm tra trên Models Trường hợp sai do trình điều khiển có vấn đề ta tiếnhành kiểm tra trên Controllers Nếu lỗi do có vấn đề về giao diện ta kiểm tra trên
Trang 25Views mà không cần phải xem và kiểm tra lại toàn bộ module như đa số các ngôn ngữlập trình khác.
Khi đó, việc xây dựng hay phát triển phần mềm cũng trở nên dễ dàng và mang tínhchuyên nghiệp hơn Chúng ta có thể chia cho nhiều nhóm được đào tạo nhiều kỹ năngkhác nhau, từ thiết kế mỹ thuật, lập trình đến tổ chức cơ sở dữ liệu Điều này giúp pháttriển ứng dụng nhanh, đơn giản, dễ nâng cấp, …
Với việc phân chia hệ thống thành ba tầng riêng biệt có nhiệm vụ khác nhau, việcthêm chức năng cho hệ thống sẽ dễ dàng hơn là phân chia theo cách khác
Từ những ưu điểm trên cho thấy việc bảo trì cũng trở nên đơn giản và dễ dàng hơn.Với các lớp được phân chia theo như đã nói, thì các thành phần của một hệ thống dễđược thay đổi, nhưng sự thay đổi có thể được cô lập trong từng lớp hoặc chỉ ảnhhưởng đến lớp ngay gần kề của nó, chứ không phát tán náo loạn trong cả chương trình
So với mô hình ba lớp ta thấy quy trình hoạt động của mô hình MVC tương đốiđơn giản và ngắn gọn hơn
Từ đó, ta có thể nói phương pháp MVC là sự phân đoạn rõ ràng giữa Models,Views, Controllers bên trong ứng dụng Một cấu trúc giúp cho việc kiểm tra ứng dụngcủa lập trình viên dễ dàng hơn
2.1.5.2 Nhược điểm
Tuy mang nhiều ưu điểm nhưng mô hình này cũng mang trong nó nhược điểm Đối với dự án nhỏ việc áp dụng mô hình MVC gây cồng kềnh, tốn thời gian trongquá trình phát triển Vì không gian dự án không quá lớn, lúc đó ta còn dễ dàng kiểmsoát được chương trình nên không cần thiết tổ chức xây dựng từng thành phần theoMVC Hơn nữa, việc tốn thời gian trung chuyển dữ liệu của các tầng trong các dự ánnhỏ là không cần thiết Nó chỉ phù hợp đối với các dự án lớn khi khối lượng dữ liệu và
số lượng công việc quá lớn
Vì vậy, tùy theo mức độ rộng của dự án mà ta nên lựa chọn những mô hình phùhợp để xây dựng và phát triển ứng dụng
Trang 262.2 Hiện thực hóa mô hình MVC trên ASP.NET
2.2.1 Tổng quan về ASP.NET
2.2.1.1 Một vài điểm về ASP.NET
ASP.NET đã là một bước nhảy vọt khi lần đầu tiên xuất hiện Nó nhằm thu hẹpkhoảng cách giữa phát triển Window Form hướng đối tượng (có trạng thái) vàphát triển web hướng HTML (không có trạng thái)
Microsoft đã cố gắng che dấu HTTP (không trạng thái) và HTML (vào thời điểm
đó không thân thiện với nhiều nhân viên phát triển lập trình) bằng cách dùng mô hìnhgiao diện như một đối tượng control có cấu trúc hoạt động phía server [7]
Mỗi control lưu giữ trạng thái qua các 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 (ví
dụ như click) với mã hồi đáp phía server Kết quả WebForm là một lớp trừu tượng lớnnhằm chuyển giao diện có xử lý sự kiện thông qua Web [7]
2.2.1.2 Nhược điểm của ASP.NET truyền thống
ASP.NET truyền thống đã từng là một ý tưởng hay nhưng thực tế cũng tồn tạinhiều vấn đề rắc rối Qua nhiều năm, sử dụng WebForm cho thấy có một số nhượcđiểm:
ViewState: kỹ thuật lưu giữ trạng thái qua các request (ViewState) thường mang lạikết quả là những khối dữ liệu lớn được chuyển qua lại giữa client và server Nó có thểđạt hàng trăm kilobytes trong nhiều dữ liệu thực và nó được chuyển qua lại với mỗilần request Điều đó làm những người truy cập vào trang web phải chờ một thời giandài khi họ chọn một button hoặc cố gắng di chuyển đến trang kế tiếp [7] Chính vì vậyAjax là một trong các giải pháp được đưa ra để giải quyết vấn đề này
Page life cycle: kỹ thuật kết nối sự kiện phía client với mã xử lý sự kiện phía server
là một phần của page life cycle Chỉ có một số ít lập trình viên thành công trong việc
xử lý hệ thống control trong thời gian thực mà không bị lỗi ViewState hoặc hiểu đượcrằng một số trình xử lý sự kiện không được kích hoạt hay phải kích hoạt rất khó khăn
[7]
Limited control over HTML: Server control tự tạo mã HTML tương tứng nhưngkhông phải là mã HTML mà ta mong muốn Mã HTML của chúng thường không tuântheo tiêu chuẩn web hoặc không sử dụng tốt CSS Hơn nữa, các server control còn tạo
Trang 27ra các giá trị ID phức tạp và không đoán trước được, điều đó làm khó khăn trong việc
sử dụng JavaScript [7]
Ý thức sai về sự tách biệt các thành phần: Mô hình code - behind của ASP.NETcung cấp một giải pháp cho phép ứng dụng đưa mã ra khỏi các dòng HTML vào thànhmột lớp code – behind riêng biệt, điều này đã được ca ngợi là đã làm tách biệt giữagiao diện với mã xử lý Nhưng thực tế người lập trình lại thường xuyên pha trộn mã xử
lý giao diện (xử lý control phía server) với mã xử lý chương trình (xử lý CSDL) trongcùng những lớp code behind khổng lồ [7] Nếu không có sự tách biệt rõ ràng giữa cácthành phần kết quả cuối cùng là rất khó để tiếp cận với mã lập trình gây khó khăn choquá trình nâng cấp và phát triển
Untestable: Khi những người thiết kế của ASP.NET lần đầu tiên giới thiệu nền tảngnày họ có thể đã không lường trước được là việc test tự động sẽ trở thành một côngđoạn chính của việc phát triển phần mềm ngày nay Cấu trúc mà họ đã thiết kế hoàntoàn không thích hợp với việc test tự động [7]
Vì vậy, ASP.NET không ngừng bổ sung thêm các tính năng Phiên bản 2.0 thêmnhiều component chuẩn có thể giảm khá nhiều code mà lập trình viên cần phải tự viết.AJAX release năm 2007 đã là phản hồi của Microsoft với phong trào Web 2.0/Ajax
Nó hỗ trợ tương tác phía client, điều đó làm cho công việc của nhân viên phát triểnweb đơn giản hơn Tiếp sau đó là phiên bản 3.5 Đây là một bản nâng cấp nhỏ hơn Nó
hỗ trợ thêm một số tính năng và control mới Tính năng ASP.NET Dynamic Data tạo
ra các trang cho phép chỉnh sửa/liệt kê cơ sở dữ liệu một cách tự động [7]
2.2.2 Sơ lược về ASP.NET MVC
ASP.NET MVC là một framework phát triển ứng dụng web mới của Microsoft
Nó kết hợp giữa tính hiệu quả và nhỏ gọn của mô hình MVC, những ý tưởng và côngnghệ hiện đại nhất, cùng với những thành phần tốt nhất của nền tảng ASP.NET hiệnthời Là một lựa chọn khác bên cạnh nền tảng WebForm khi phát triển một ứng dụngweb sử dụng ASP.NET [7]
Trang 282.2.3 Một vài đặc tính trong ASP.NET MVC
2.2.3.1 Khả năng ánh xạ các URL vào trong class Controllers của ASP.NET MVC
Hầu hết các web framework, như ASP, PHP, JSP, ASP.NET WebForms , đềuánh xạ các URL vào một file template được lưu trên đĩa Ví dụ URL "/Products.aspx"hay "/Products.php" được chuyển đến file template Products.aspx hay Products.phptrên đĩa cứng để xử lý Khi một ứng dụng web nhận được HTTP Request đến webserver, thì web framework sẽ chạy một đoạn code cụ thể tương ứng với nội dung củafile template Lúc này, đoạn code này đóng vai trò xử lý yêu cầu do phía client gửiđến Thông thường thì đoạn code này sẽ sinh ra HTML và đáp ứng lại phía client Đối với MVC Framework lại hoạt động theo một cách khác hoàn toàn Thay vì ánh
xạ các URL vào các file template lưu trên đĩa, nó sẽ đưa thẳng vào các class Nhữngclass được ánh xạ tới được gọi là “Controllers” Các controller chịu trách nhiệm xử lýnhững yêu cầu được gửi đến (request)
2.2.3.2 Cơ chế ánh xạ theo bảng định tuyến URL (URL Routing)
Browser yêu cầu một địa chỉ từ cotroller action trong ASP.NET MVC Frameworkđược gọi là định tuyến URL (URL Routing) URL Routing sẽ chỉ định request (yêucầu) đến controller action Nó sử dụng một bảng định tuyến để điều khiển các yêu cầu(request) Bảng định tuyến được tạo khi ứng dụng được chạy lần đầu tiên Bảng nàyđược thiết lập trong file Global.asax
Framework này có một bộ máy ánh xạ URL thật sự mạnh mẽ [6] Bộ máy này cungcấp phương pháp rất linh hoạt trong việc ánh xạ URL sang cho Controllers Classes.Chúng ta có thể dễ dàng định ra các quy luật, cài đặt đường đi để ASP.NET dựa vàocác quy luật đường đi đó, xác định xem phải thực thi Controllers nào Ngoài ra nó còn
có khả năng phân tích URL, chuyển các thông số trong URL thành các tham số tronglời gọi hàm của Controller Ví dụ, ta có một URL là: “/Product/Details/5” lúc này tựđộng hệ thống sẽ biết tách tham số “5” ra khỏi URL để thực thi trong controller
“Product” với action là “Details”
Trang 29Hình 2.4 Cơ chế ánh xạ địa chỉ tự phát sinh trong file Global.ascx
Cơ chế ánh xạ các URL được thực hiện theo quy luật sau
{controller}/{action}/{id}
Trong đó:
controller là địa chỉ của lớp controller được chỉ định đi tới
action là phương thức (method) cần truy xuất trong controller
id là từ khóa cung cấp cho action để truy vấn.
Ví dụ: Giả sử project của chúng ta có một controller có tên là Product bao gồm cácphương thức như : thêm mới sản phẩm (Insert), chỉnh sửa cập nhật thông tin sản phẩm(Edit), …
Bây giờ, chúng ta muốn chỉnh sửa thông tin của một sản phẩm có mã sản phẩm là “5”thì ta sẽ cung cấp địa chỉ truy vấn như sau:
/Product/Edit/5Trong ASP.NET MVC, các project được định nghĩa sẵn một số quy luật về đường
đi để người dùng không phải hiệu chỉnh thêm điều gì khi bắt đầu làm quen vớiframework mới Chúng ta có thể bắt đầu viết mã và sử dụng phương pháp ánh xạ URLmặc định được định nghĩa trong file Global.asax - ASP.NET Application class.Phương pháp mặc định này làm nhiệm vụ ánh xạ một phần URL từ HTTP Request
Do ứng dụng hoạt động theo cơ chế ánh xạ URL mạnh mẽ nên cho phép xây dựngứng dụng với những URL không cần cs mở rộng
2.2.3.3 Khả năng test không hạn chế – Test Driven Developer
Trong ASP.NET MVC có sự tách rõ ràng các mối liên quan, vì vậy mở rộng khảnăng test TDD ( Test Driven Developer) Chúng ta có thể test unit trong ứng dụng mà
Trang 30không cần phải chạy Controllers cùng với tiến trình của ASP.NET và có thể dùng bất
kỳ một unit testing framework như NUnit, MBUnit, MS Test… để test ứng dụng [6]
2.2.3.4 Dễ nâng cấp, mở rộng và phát triển ứng dụng
Trong ASP.NET MVC mọi thứ được thiết kế riêng rẽ theo từng Controllers,Models và Views nên ta có thể dễ dàng thay thế/ tùy biến các lớp (ví dụ có thể lựachọn engine view riêng routing policy, parameter serialization, …) [6]
2.2.3.5 Kế thừa những tính năng của ASP.NET WebForm
Bên cạnh đó, ASP.NET MVC Framework cũng hỗ trợ file ASP.NET như ASPX ASCX và Master đánh dấu các tập tin này như một “view template” (có thể dễ dàng
sử dụng các tính năng của ASP.net như lồng các trang Master, <%=%> snippets, mô tảserver controls, template, data-binding, localization…) Tuy nhiên sẽ không cònpostback và interactive back server và thay vào đó là interactive end-user với mộtcontroller class (không còn viewstate, page lifecycle) [6]
ASP.NET MVC Framework cũng hỗ trợ đầy đủ các tính năng bảo mật củaASP.NET như: Form/ Windows authenticate, URL authorization, membership/roles,output và data caching, section/ profile state, configuration system, providerarchitecture, …[6]
Vì vậy, không quá khó khăn khi người lập trình ASP.NET làm quen ASP.NETMVC
2.2.4 Sự khác biệt giữa ASP.MVC và ASP.NET WebForm
ASP.NET WebForm sử dụng ViewState để quản lý, các trang ASP.NET đều cólifecycle, postback và dùng các web controls, các event để thực hiện các hành độngcho UI (User Interface) khi có sự tương tác với người dùng nên hầu hết ASP.NETWebForm xử lý chậm Đối với ASP.NET MVC chia ra làm 3 phần: Models, Views,Controllers Mọi tương tác của người dùng với Views sẽ được thực hiện hành độngtrong Controllers, không còn postback, lifecycel và events nữa [6]
Việc kiểm tra (test), gỡ lỗi (debug) với ASP.NET WebForm đều phải chạy tất cảcác tiến trình của ASP.NET và sự thay đổi ID của bất kỳ Controls nào cũng ảnh hưởngđến ứng dụng Đối với MVC thì việc đó có thể sử dụng các unit test có thể thẩm định
Trang 31rất dễ dàng các Controllers thực hiện như thế nào mà không cần thay đổi các thànhphần liên quan.
Sau đây là bảng so sánh các tính năng của ASP.NET WebForm với ASP.NETMVC
Kiến trúc chương trình Kiến trúc mô hình
WebForm –> Bussiness –>
Database
Kiến trúc sử dụng việc phân chia chương trình thành: Models, Views, Controllers
Cú pháp chương trình Sử dụng cú pháp của
WebForm, tất cả các sựkiện và controls do serverquản lý
Các sự kiện được điều khiểnbởi controllers, các controlskhông do server quản lý
Truy cập dữ liệu Sử dụng hầu hết các công
nghệ truy cập dữ liệu trongứng dụng
Phần lớn dùng LINQ và SQLclass để tạo mô hình truy cậpđối tượng
bao gồm các lớp truy cập
dữ liệu, sự hiển thị, điềukhiển các controls
Debug có thể sử dụng cácunit test để kiểm tra các
controllers
Tốc độ phân tải Tốc độ phân tải chậm khi
trong trang có quá nhiềucác controls vì ViewStatequá lớn
Phân tải nhanh hơn do khôngphải quản lý ViewState đểquản lý các controls trongtrang
Tương tác với
JavaScript
Tương tác với JavaScriptkhó khăn vì các controlsđược điều khiển bởi server
Tương tác với JavaScript dễdàng vì các đối tượng không
do server quản lýURL address Cấu trúc địa chỉ URL có
dạng:
<filename>.aspx?&<cáctham số>
Cấu trúc địa chỉ rành mạchtheo dạng
controllers/action/id
Trang 322.2.5 Những kết luận về mô hình ASP.NET và ASP.NET MVC
Với những điểm yếu và giới hạn của ASP.NET WebForm truyền thống và làm thếnào mà ASP.NET MVC vượt qua những vấn đề này nhưng điều đó không có nghĩa làWebForm đã chết mà chỉ là: Microsoft muốn mọi người hiểu rằng có hai nền tảngsong song nhau, hỗ trợ cho nhau, và cả hai đều là đối tượng cho việc phát triển hiệntại Nói chung, việc chọn lựa giữa hai mô hình còn tùy vào hoàn cảnh
WebForm mang tới một trang web mà giao diện có thể lưu giữ trạng thái và cuốicùng thêm vào một lớp trừu tượng tinh vi nằm trên HTTP và HTML, sử dụngViewState và postback để tạo ra hiệu ứng của việc có trạng thái Điều này thích hợpvới phong cách phát triển kéo và thả của Window Form, tức là đặ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
Bên cạnh đó, MVC hòa vào bản chất không trạng thái của HTTP, nó cung cấp mộtcá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 để test và bảo trì sau này, giải phóng những phức tạp khó chịu vàcác giới hạn không đáng có
Có những tình huống mà WebForm khá tốt thậm chí còn tốt hơn MVC Ví dụ nhưđối với các ứng dụng nhỏ, nội bộ mà trực tiếp kết nối thẳng vào các bảng CSDL hoặcdẫn người sử dụng thông qua các wizard Vì thế sẽ không cần phải lo lắng về băngthông do ViewState, không dính dáng tới vấn đề tối ưu hóa hệ thống tìm kiếm vàkhông bị làm phiền về việc test và bảo trì lâu dài Sự tiện lợi của cách phát triển kiểukéo thả của WebForm làm mờ đi các điểm yếu của nó
Nhưng mặt khác, nếu viết một ứng dụng trên Internet hoặc các ứng dụng nội bộ lớnhơn ta sẽ hướng tới tốc độ download nhanh và tương thích trình duyệt chéo Hơn nữa
hệ thống xây dựng với chất lượng cao hơn, mã kiến trúc tốt thích hợp cho việc test tựđộng, trong trường hợp đó MVC sẽ mang lại những ưu điểm quan trọng
2.3 Khai thác dữ liệu và hệ thống khuyến nghị
2.3.1 Nghiên cứu tổng quan về khai thác dữ liệu
2.3.1.1 Sơ lược về khai thác dữ liệu
Trong hoạt động diễn ra giao dịch, thông tin thường được lưu trữ trong CSDL tạonên một kho dữ liệu khổng lồ và vô cùng phong phú Tuy nhiên, các kho dữ liệuthường lớn nhưng lại nghèo thông tin Để giải quyết vấn đề khai thác những giá trị
Trang 33thông tin tiềm ẩn dưới kho dữ liệu ngành AI (Artificial Intelligence) cho ra đời mộtkhái niệm nghiên cứu mới là KTDL (Data Mining)
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ứcmang 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 [4]
“Nguồn dữ liệu phục vụ cho KTDL có thể là các CSDL lớn hay các kho dữ liệu cóhoặc không có cấu trúc” [4] Tuy nhiên, “KTDL chỉ thật sự phát huy tác dụng trên cácCSDL lớn, nơi mà khả năng diễn dịch và trực giác của con người cũng như các kỹthuật truyền thống không thể thực hiện nổi hoặc nếu thực hiện được thì hiệu quả khôngcao” [4]
Có thể chia KTDL thành hai dạng chính: KTDL theo hướng kiểm tra và KTDLtheo hướng khám phá
Các thời kỳ phát triển của khoa học:
Trước 1600, nghiên cứu khoa học chủ yếu thiên về thực nghiệm
Từ 1600 – 1950, nghiên cứu chủ yếu thiên về cơ sở lý thuyết
Từ 1950 – 1990, nghiên cứu chủ yếu thiên về tính toán
Từ 1900 đến nay, nghiên cứu bắt đầu tập trung chủ yếu KTDL sẵn có
Quá trình KTDL gồm các bước sau:
Làm sạch dữ liệu (Data Cleaning)
Tích hợp dữ liệu (Data Integration)
Chọn dữ liệu (Data Selection)
Chuyển đổi dữ liệu (Task-relevant Data)
Khai phá dữ liệu (Data Mining)
Đánh giá mẫu (Pattern Evaluation)
Trình diễn dữ liệu (Knowledge Presentation)
Trang 34Data Integration
Selection
Data Cleaning
2.3.1.2 Các kỹ thuật chủ yếu của KTDL
Các kỹ thuật chủ yếu để khai phá dữ liệu bao gồm một số kỹ thuật sau:
Khai thác tập thường xuyên (Frequent Pattern Mining)
Khai thác luật kết hợp (Association Rule Mining)
Phân lớp dữ liệu (Classification)
Gom cụm dữ liệu (Clusterring)
2.3.1.3 Các khái niệm cơ bản trong KTDL
Cho cơ sở dữ liệu gồm các giao dịch T là tập các giao dịch t 1 , t 2 , …, t n
T = {t 1 , t 2 , …, t n }
T gọi là cơ sở dữ liệu giao dịch (Transaction Database)
Mỗi giao dịch ti bao gồm tập các đối tượng I (gọi là itemset)
I = {i 1 , i 2 , …, i m }
Một itemset gồm k items gọi là k-itemset
Sự kết hợp (Association): các phần tử cùng xuất hiện với nhau trong một hay
nhiều giao dịch Thể hiện mối liên hệ giữa các phần tử/các tập phần tử
Trang 35 Luật kết hợp: qui tắc kết hợp có điều kiện giữa các tập phần tử Thể hiện mối liên
hệ (có điều kiện) giữa các tập phần tử
Luật kết hợp là luật có dạng X => Y với X, Y I và X Y={} với ý nghĩa là khi X
có mặt thì Y cũng có mặt (trong một xác suất nào đó).
Ví dụ: Cho A và B là các tập phần tử, luật kết hợp giữa A và B là A B B xuất hiện
trong điều kiện A xuất hiện.
Độ tin cậy (confidence)
Độ tin cậy (Confidence) của luật kết hợp X =>Y là xác suất xảy ra Y khi đã biết X.
Ví dụ: độ tin cậy của luật kết hợp {Apple} =>Banana} là 80% có nghĩa là 80% kháchhàng mua Apple cũng mua Banana
Ngưỡng tin cậy tối thiểu (Minimum confidence threshold - minconf): Giá trịconfidence nhỏ nhất được chỉ định bởi người dùng
Tập thường xuyên (tập phổ biến): Tập thường xuyên là các tập các mục mà số
lần xuất hiện (support) của nó trong CSDL lớn hơn ngưỡng tối thiểu (minsupp) [9].
Khai phá luật kết hợp: Khai phá luật kết hợp được xem như là một trong những
đóng góp quan trọng nhất từ cộng đồng cơ sở dữ liệu trong việc khám phá tri thức.Hai giải thuật điển hình dùng để khám phá các tập thường xuyên là giải thuật
Trang 36 Giải thuật Apriori: khám phá các mẫu thường xuyên với tập dự tuyển [11].
Giải thuật FP Growth: khám phá các mẫu thường xuyên với FP-tree [11]
2.3.1.4 Bài toán khai thác tập phổ biến bằng thuật giải Apriori
Bài toán khai thác tập thường xuyên (tập phổ biến) là bài toán rất quan trọng tronglĩnh vực KTDL nhằm vạch ra tính chất ẩn, quan trọng của tập dữ liệu
Bên cạnh đó, bài toán khai thác tập phổ biến là nền tảng cho nhiều nhiệm vụ KTDLkhác như phân tích luật kết hợp, mẫu tuần tự, phân tích dữ liệu không gian, …
Quy trình thực hiện của thuật giải Apriori để tìm ra các tập thường xuyên trãi qua 5bước:
Bước 1: Duyệt toàn bộ transaction database để có được support S của 1-itemset, so
sánh S với minsup, để có được 1-itemset (L 1)
Bước 2: Sử dụng L k-1 nối (join) L k-1 để sinh ra Candidate k-itemsets (C) Loại bỏ các
itemsets không phải là frequent itemsets thu được k-itemset mới.
Bước 3: Duyệt transaction database để có được support của mỗi thành phần trong
C, so sánh S với minsup để thu được frequent k –itemset (L k)
Bước 4: Lặp lại từ bước 2 cho đến khi itemsets (C) trống (không tìm thấy frequent
itemsets)
Bước 5: Với mỗi frequent itemset I, sinh tất cả các tập con s không rỗng của I.
Trang 37Giả sử ta có cơ sở dữ liệu giao dịch bán hàng gồm 5 giao dịch như sau:
Tid List Of Items
1 Beer, Diaper, Baby Power, Bread, Umbrella
4 Diaper, Beer, Detergent
5 Beer, Milk, Coca-cola
Bảng 2.2 Dữ liệu cho mẫu cho thuật toán Apriori
Trang 39Bước 4:
Items support
Beer, Diaper, Baby Powder 0
Diaper, Milk, Baby Powder 0
Beer, Milk, Baby Powder 0
Bảng 2.7 Bảng dữ liệu C 3
Bước 5: Với mỗi itemset ta có dữ liệu như sau
itemsets Support(A,B) Support(A)
Bảng 2.8 Bảng dữ liệu thường xuyên
2.3.1.5 Bài toán khai thác luật kết hợp (Asociation Rules)
Mục đích của luật kết hợp là tìm ra sự kết hợp (association) hay tương quan
(correlation) giữa các items Những luật kết hợp này có dạng X -> Y.
Để thu được các luật kết hợp, ta thường áp dụng 2 tiêu chí: minimum support
(minsup) và minimum confidence (minconf).
Minimum support và minimum confidence gọi là các giá trị ngưỡng (threshold) và
phải xác định trước khi sinh các luật kết hợp.
C3: minsup = 40%
L3 = Emty (Stop)
Trang 40Tiếp tục khai thác các frequent itemset ở bài toán trên, ta tìm những itemsets thỏađiều kiện minsup và minconf.
Với hai giá trị ngưỡng đặt ra là: minsup = 40% và minconf = 70%
itemsets Support(A,B) Support(A) Confidence
Bảng 2.9 Kết quả khai thác luật kết hợp
Kết quả ta có các luật kết hợp sau:
R1: Beer => Diaper (support =60%, confidence = 75%)
R2: Diaper => Beer (support =60%, confidence = 75%)
R3: Milk => Beer (support =40%, confidence = 100%)
R4: Baby Powder => Diaper (support =40%, confidence = 100%)
2.3.2 Hệ thống khuyến nghị
2.3.2.1 Tổng quan về các hệ thống khuyến nghị hiện nay
Hệ thống khuyến nghị là một trong nhiều giải pháp được vạch ra để đáp ứng ngàycàng tốt hơn nhu cầu của người sử dụng
Có rất nhiều cách thức để xây dựng hệ thống này Bằng nhiều thuật toán ta có thểtận dụng các mối quan hệ giữa các nguồn dữ liệu có sẵn, dữ liệu lịch sử để tiến hànhkhai thác, trích xuất dưới dạng ontology hay trích xuất ra các dạng lưu trữ khác theo