− Phương pháp công nghệ: + Tìm hiểu xây dựng hệ thống gợi ý theo hướng Collaborative filtering Recommender + Tìm hiểu xây dựng hệ thống dự báo doanh thu + Xây dựng giao diện web app để
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO ĐỒ ÁN 2
ĐỀ TÀI:
ỨNG DỤNG SHOP BÁN QUẦN ÁO ONLINE
Sinh viên thực hiện: Nguyễn Duy Phúc
Hoàng Quốc Trọng
19522038
19522408
Thành phố Hồ Chí Minh, năm 2022
Trang 2ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO ĐỒ ÁN 2
ĐỀ TÀI:
ỨNG DỤNG SHOP BÁN QUẦN ÁO ONLINE
Sinh viên thực hiện: Nguyễn Duy Phúc
Hoàng Quốc Trọng
19522038
19522408
Thành phố Hồ Chí Minh, năm 2022
Trang 3Mục lục
DANH MỤC HÌNH ẢNH 1
DANH MỤC BẢNG 3
DANH MỤC TỪ VIẾT TẮT 5
LỜI CẢM ƠN 6
ĐỀ CƯƠNG CHI TIẾT 7
CHƯƠNG 1: GIỚI THIỆU CHUNG 12
1.1 T ỔNG QUAN ĐỀ TÀI 12
1.2 L Ý DO CHỌN ĐỀ TÀI 12
1.3 Đ ỐI TƯỢNG SỬ DỤNG 12
1.4 P HẠM VI NGHIÊN CỨU : 12
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 13
2.1 T ÌM HIỂU VỀ R EACTJS 13
2.1.1 Reactjs là gì? 13
2.1.2 Giới thiệu về JSX 13
2.1.3 Giới thiệu về Components 14
2.1.4 Ưu và Nhược 14
2.2 T ÌM HIỂU VỀ ASP.NET C ORE API 15
2.2.1 Giới thiệu 15
2.2.2 ASP.NET CORE là gì 15
2.2.3 ASP.NET Core API 15
2.2.4 Các dịch vụ RESTful 16
2.2.5 Tại sao phải sử dụng ASP.NET WEB API? 17
2.3 T ÌM HIỂU VỀ SQL S ERVER 18
2.3.1 Giới thiệu về Sql Server 18
2.3.2 Lịch sử hình thành 18
2.3.3 Các thành phần cơ bản trong SQL Server 19
2.3.4 Tại sao phải sử dụng SQL Server? 20
2.4 T ÌM HIỂU G ITHUB 21
2.4.1 Khái niệm 21
2.4.2 Git 22
2.4.3 Chức năng 22
2.4.4 Lợi ích 22
CHƯƠNG 3: MACHINE LEARNING: ML.NET 23
Trang 4Báo cáo đồ án 2 Ứng dụng shop bán hàng
3.1 K HÁI NIỆM ML.N ET 23
3.2 Q UY TRÌNH HOẠT ĐỘNG 24
3.3 G ỢI Ý SẢN PHẨM 25
3.3.1 Thuật toán Matrix Factorization 25
3.3.2 Ưu điểm 27
3.3.3 Nhược điểm 27
3.3.4 Model 28
3.4 D Ự BÁO DOANH THU 28
3.4.1 Thuật toán Singular Spectrum Analysis (SSA) 28
3.4.2 Model 29
CHƯƠNG 4: THIẾT KẾ HỆ THỐNG 29
4.1 K IẾN TRÚC HỆ THỐNG : M Ô HÌNH MVC 29
4.2 S Ơ ĐỒ LỚP 31
4.3 S Ơ ĐỒ U SE C ASE 32
4.3.1 Danh sách tác nhân 33
4.3.2 Danh sách Use Case 33
4.3.3 Mô tả chi tiết Use Case 34
4.4 S EQUENCE D IAGRAM 42
4.4.1 Đăng nhập 42
4.4.2 Đăng ký 43
4.4.3 Chỉnh sửa thông tin 44
4.4.4 Thêm sản phẩm 45
4.4.5 Chỉnh sửa sản phẩm 46
4.4.6 Tìm kiếm sản phẩm 47
4.4.7 Lập hóa đơn 48
CHƯƠNG 5: THIẾT KẾ CƠ SỞ DỮ LIỆU 49
5.1 S Ơ ĐỒ ERD 49
5.2 C HI TIẾT CÁC BẢNG 49
5.2.1 Tài khoản: 49
5.2.2 Sản phẩm : 50
5.2.3 Ảnh : 50
5.2.4 Phân loại: 50
5.2.5 Nhãn hiệu: 51
5.2.6 Loại : 51
5.2.7 Giỏ hàng: 51
5.2.8 Đơn hàng: 52
5.2.9 Chi tiết đơn hàng: 52
5.2.10 Đánh giá: 52
Trang 5CHƯƠNG 6: THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG 53
6.1 S CREEN F LOW 53
6.1.1 Người dùng Khách hàng 53
6.1.2 Người dùng Quản trị viên 53
6.2 M Ô TẢ CHI TIẾT TỪNG MÀN HÌNH 54
6.2.1 Dashboard: 54
6.2.2 Thêm thương hiệu: 55
6.2.3 Thêm màu: 56
6.2.4 Thêm sản phẩm: 57
6.2.5 Xem sản phẩm: 58
6.2.6 Sửa sản phẩm: 59
6.2.7 Thêm phân loại: 61
6.2.8 Xem phân loại: 62
6.2.9 Xem danh sách người dùng: 63
CHƯƠNG 7: CÀI ĐẶT VÀ KIỂM THỬ 63
7.1 M ÔI TRƯỜNG CÀI ĐẶT VÀ KIỂM THỬ : 63
7.2 K ẾT QUẢ KIỂM THỬ 64
CHƯƠNG 8: KẾT LUẬN 64
8.1 T ỔNG KẾT 64
8.2 K HÓ KHĂN 64
8.3 K ẾT QUẢ ĐẠT ĐƯỢC 65
8.4 H ẠN CHẾ CỦA ĐỒ ÁN 65
8.5 H ƯỚNG PHÁT TRIỂN 65
TÀI LIỆU THAM KHẢO 67
Trang 7DANH MỤC HÌNH ẢNH
Hình 2.1-1 Reactjs 13
Hình 2.2-1.NET Core API 15
Hình 2.3-1 SQL Server 18
Hình 2.4-1 Github 21
Hình 3.1-1 ML.Net 23
Hình 3.2-1 Quy trình hoạt động ML.Net 24
Hình 3.3-1 Kỹ thuật phân rã ma trận 26
Hình 3.3-2 Kỹ thuật phân rã ma trận 26
Hình 3.3-3 Kỹ thuật phân rã ma trận 27
Hình 3.3-4 Model gợi ý sản phẩm 28
Hình 3.4-1 Model dự báo doanh thu 29
Hình 4.1-1 Sơ đồ mô hình MVC 30
Hình 4.2-1 Sơ đồ lớp 31
Hình 4.3-1 Sơ đồ Use Case 32
Hình 4.4-1 Sequence diagram Đăng nhập 42
Hình 4.4-2 Sequence diagram Đăng ký 43
Hình 4.4-3 Sequence diagram Chỉnh sửa thông tin 44
Hình 4.4-4 Sequence diagram Thêm sản phẩm 45
Hình 4.4-5 Sequence diagram Chỉnh sửa sản phẩm 46
Hình 4.4-6 Sequence diagram Tìm kiếm sản phẩm 47
Hình 4.4-7 Sequence diagram Lập đơn hàng 48
Hình 5.1-1 Sơ đồ ERD 49
Hình 6.1-1 Screen Flow của Khách hàng 53
Hình 6.1-2 Screen Flow của Người dùng Quản lý 53
Hình 6.2-1 Màn hình Dashboard 54
Hình 6.2-2 Màn hình Thêm thương hiệu 55
Hình 6.2-3 Màn hình Thêm Màu 56
Hình 6.2-4 Màn hình Thêm sản phẩm 57
Hình 6.2-5 Màn hình Xem sản phẩm 58
Trang 8Báo cáo đồ án 2 Ứng dụng shop bán hàng
Hình 6.2-6 Màn hình Sửa sản phẩm 59
Hình 6.2-7 Màn hình Thêm phân loại 61
Hình 6.2-8 Màn hình Xem phân loại 62
Hình 6.2-9 Màn hình Xem danh sách người dùng 63
Trang 9
DANH MỤC BẢNG
Bảng 4.3-1 Danh sách tác nhân 33
Bảng 4.3-2 Danh sách use case 33
Bảng 4.3-3 Usecase Đăng nhập 34
Bảng 4.3-4 Usecase Đăng ký 34
Bảng 4.3-5 Usecase Quên mật khẩu 35
Bảng 4.3-6 Usecase Tìm kiếm sản phẩm 36
Bảng 4.3-7 Usecase Xem thông tin sản phẩm 36
Bảng 4.3-8 Usecase Đánh giá sản phẩm 37
Bảng 4.3-9 Usecase Thêm vào giỏ hàng 37
Bảng 4.3-10 Usecase xem giỏ hàng 38
Bảng 4.3-11 Usecase Tạo đơn hàng 39
Bảng 4.3-12 Usecase Xem thông tin đơn hàng 39
Bảng 4.3-13 Usecase Thống kê doanh thu 40
Bảng 4.3-14 Usecase Quản lý sản phẩm 40
Bảng 5.2-1 Table account 49
Bảng 5.2-2 Table Product 50
Bảng 5.2-3 Table Image 50
Bảng 5.2-4 Table Category 50
Bảng 5.2-5 Table Nhãn hiệu 51
Bảng 5.2-6 Table Variant 51
Bảng 5.2-7 Table Cart 51
Bảng 5.2-8 Table Order 52
Bảng 5.2-9 Table Order Detail 52
Bảng 5.2-10 Table Comment 52
Bảng 6.2-1 Chi tiết Màn hình Dashboard 54
Bảng 6.2-2 Chi tiết Màn hình Thêm thương hiệu 55
Bảng 6.2-3 Chi tiết Màn hình Thêm Màu 56
Bảng 6.2-4 Chi tiết Màn hình Thêm sản phẩm 57
Bảng 6.2-5 Chi tiết Màn hình Xem sản phẩm 58
Bảng 6.2-6 Chi tiết Màn hình Sửa sản phẩm 59
Trang 10Báo cáo đồ án 2 Ứng dụng shop bán hàng
Bảng 6.2-7 Chi tiết Màn hình Thêm phân loại 61
Bảng 6.2-8 Chi tiết Màn hình Xem phân loại 62
Bảng 6.2-9 Chi tiết Màn hình Xem danh sách người dùng 63
Bảng 7.2-1 Bảng kiểm thử 64
Trang 11DANH MỤC TỪ VIẾT TẮT
dụng
3 API Application Programming Interface Giao diện lập trình ứng
dụng
4 MVC Model-View-Controller Mô hình lập trình
5 AI Artificial Intelligence Trí tuệ nhân tạo
8 REST Representational State Transfer
9 URI Uniform Resource Identifier Mã định danh tài nguyên
Trang 12Báo cáo đồ án 2 Ứng dụng shop bán hàng
LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại khoa Công nghệ phần mềm trường Đại học Công
nghệ Thông tin – ĐHQG TP.HCM chúng em đã được trang bị các kiến thức cơ bản,
các kỹ năng thực tế để có thể lần đầu thực hiện Đồ án 2 của mình
Để hoàn thành Đồ án này, chúng em xin gửi lời cảm ơn chân thành đến:
Ban Giám hiệu trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM vì đã tạo điều
kiện về cơ sở vật chất với hệ thống thư viện hiện đại, đa dạng các loại sách, tài liệu
thuận lợi cho việc tìm kiếm, nghiên cứu thông tin
Chúng em xin gửi lời cảm ơn chân thành đến thầy Trần Anh Dũng đã tận tình giúp đỡ,
định hướng cách tư duy và cách làm việc khoa học Đó là những góp ý hết sức quý báu
không chỉ trong quá trình thực hiện luận văn này mà còn là hành trang tiếp bước cho
chúng em trong quá trình học tập và lập nghiệp sau này
Và cuối cùng, chúng em xin gửi lời cảm ơn đến gia đình, tất cả thầy cô trong khoa, bạn
bè, tập thể lớp PMCL2019.3 là những người luôn sẵn sàng sẻ chia và giúp đỡ trong
học tập và cuộc sống Mong rằng, chúng ta sẽ mãi mãi gắn bó với nhau
Trong quá trình làm Đồ án này chúng em không tránh khỏi được những sai sót,
chúng em kính mong nhận được sự chỉ dẫn và góp ý của quý thầy cô để hoàn thiện và
phát triển đồ án hơn trong Khóa luận tốt nghiệp trong tương lai
Chúng em xin chân thành cảm ơn Xin chúc những điều tốt đẹp nhất sẽ luôn đồng hành
cùng mọi người
Thành phố Hồ Chí Minh, 15 tháng 12 năm 2022
Sinh viên NGUYỄN DUY PHÚC HOÀNG QUỐC TRỌNG
Trang 13ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC
TP HCM, ngày 15 tháng 09 năm 2022
ĐỀ CƯƠNG CHI TIẾT
TÊN ĐỀ TÀI: Shop quần áo online tích hợp gợi ý sản phẩm và dự báo
Cán bộ hướng dẫn: ThS Trần Anh Dũng
Thời gian thực hiện: Từ ngày 12/09/2022 đến ngày 28/12/2022
Sinh viên thực hiện:
có 1 trang web thương mại điện tử có đầy đủ chức năng cần thiết của riêng họ
để tạo thêm sự tiện lợi cho các khách hàng cũng như cạnh tranh trong bối cảnh bây giờ
Trong đề tài này, chúng em không chỉ hứng thú với việc xây dựng 1 website chỉ để thực hiện các chức năng bán hàng chính mà còn xây dựng AI
để thực hiện thuật toán đề xuất quần áo cho khách hàng và thuật toán dự báo doanh thu cho chủ shop
2 Mục tiêu: bao gồm 3 mục tiêu chính:
1 Xây dựng Website bán quần áo
- Khách hàng: Có thể filter các loại quần áo, tìm kiếm sản phẩm phù hợp nhu cầu, thêm sản phẩm vào giỏ hàng, thanh toán,
- Chủ shop: Xem doanh thu, Thêm sửa xóa các sản phẩm bán hàng,
Trang 14Báo cáo đồ án 2 Ứng dụng shop bán hàng
2 Xây dựng hệ thống đề xuất cho khách hàng
- Đề xuất các sản phẩm liên quan dựa trên sở thích của người dùng hoặc độ ưa chuộng của sản phẩm
3 Xây dựng hệ thống dự báo cho chủ shop
- Dự báo doanh thu dựa trên thống kê lượng sản phẩm đã bán cho chủ shop
+ Xem chi tiết sản phẩm
+ Chọn mua sản phẩm và đưa vào giỏ hàng
+ Đánh giá sản phẩm sau khi mua
+ Thanh toán giỏ hàng
+ Được đề xuất sản phẩm dựa trên sự ưa thích của bản thân với các khách hàng khác có sự ưa thích tương tự
+ Đăng nhập, đăng ký và các chức năng authentication khác
− Đối với chủ shop:
+ Thêm xóa sửa sản phẩm
+ Xem doanh thu và được dự báo doanh thu
+ Xem tình trạng các đơn hàng
4 Đối tượng sử dụng:
− Những người có nhu cầu muốn mua các sản phẩm quần áo từ chủ shop
− Chủ shop muốn kinh doanh qua trang web thương mại điện tử
5 Phương pháp thực hiện:
− Phương pháp làm việc: Làm việc nhóm 2 thành viên thông qua cả 2 phương thức online và offline dưới sự hướng dẫn của giảng viên hướng dẫn
− Phương pháp nghiên cứu:
Trang 15+ Phân tích nhu cầu sử dụng của đối tượng người dùng
+ Nghiên cứu tài liệu các công nghệ liên quan
− Phương pháp công nghệ:
+ Tìm hiểu xây dựng hệ thống gợi ý theo hướng Collaborative filtering Recommender
+ Tìm hiểu xây dựng hệ thống dự báo doanh thu
+ Xây dựng giao diện web app để tương tác với người dùng
+ Quản lý source code thông qua Github
+ Sử dụng Trello, Google doc,… để quản lý tiến trình và tài liệu
7 Kết quả mong đợi:
− Tạo ra website phục vụ các chức năng cơ bản của một website thương mại điện tử
− Hoạt động ổn định, có thể xử lý thông tin nhanh chóng
− Đưa ra gợi ý dựa vào đánh giá của người dùng
− Dự đoán doanh thu của cửa hàng
8 Hướng phát triển của đề tài:
− Tính năng chuyển đổi gói ngôn ngữ
− Chèn quảng cáo
9 Kế hoạch làm việc:
Thời gian thực hiện từ ngày 05/09/2022 đến ngày kết thúc môn Đồ án 2
Trang 16Báo cáo đồ án 2 Ứng dụng shop bán hàng
1 05/09 – 11/09 - Phân tích và tìm hiểu bài toán
2 15/09 - Hoàn thành đề cương chi tiết
3 15/09 – 22/09 - Xây dựng mục tiêu
- Tìm hiểu các nền tảng công nghệ
4 23/09 – 27/09 - Tìm hiểu và phân tích các chức năng
- Tìm kiếm thêm data
5 28/09 – 01/10 - Xây dựng cơ sở dữ liệu
6 01/10 – 04/10 - Xây dựng kiến trúc hệ thống
7 05/10 – 30/10 - Thiết kế giao diện cho user khách hàng
- Xây dựng các chức năng cơ bản cho user khách hàng
8 31/10 - 13/11 - Thiết kế giao diện cho user quản lý
- Xây dựng các chức năng cơ bản cho user quản lý
9 14/11 – 27/11 - Tìm hiểu và thực hiện chức năng gợi ý cho khách hàng
10 28/11 - 11/12 - Tìm hiểu và thực hiện chức năng dự đoán doanh thu cho
quản lý
11 12/12 – 15/12 - Kiểm thử web
12 15/12 - 28/12 - Hoàn thiện báo cáo và chỉnh sửa bug trong web
10 Phân công công việc:
Công việc chung − Lập kế hoạch
− Tìm hiểu công nghệ
− Phân tích yêu cầu
− Lập trình giao diện
− Lập trình chức năng
− Kiểm thử
− Chuẩn bị tài liệu, viết báo cáo
Trang 17Công việc cá nhân − Xây dựng hệ thống
− Xây dựng database và liên kết với hệ thống
− Xây dựng giao diện
− Liên kết các chức năng Front end và backend
TP.Hồ Chí Minh, ngày 15 tháng 09 năm 2022
Trang 18- Mô hình phát triển: MVC
- Tích hợp Machine Learning: ML.Net
1.2 Lý do chọn đề tài
Trong thời buổi công nghệ hóa hiện nay, việc mua bán qua các trang thương mại điện
tử đang rất phổ biến tạo nên sự cạnh tranh khốc liệt giữa các cửa hàng kinh doanh bán quần áo Vì thế các shop quần áo đều cần thiết phải có 1 trang web thương mại điện tử
có đầy đủ chức năng cần thiết của riêng họ để tạo thêm sự tiện lợi cho các khách hàng cũng như cạnh tranh trong bối cảnh bây giờ
Trong đề tài này, chúng em không chỉ hứng thú với việc xây dựng 1 website chỉ để thực hiện các chức năng bán hàng chính mà còn xây dựng AI để thực hiện thuật toán
đề xuất quần áo cho khách hàng và thuật toán dự báo doanh thu cho chủ shop
1.3 Đối tượng sử dụng
− Những người có nhu cầu muốn mua các sản phẩm quần áo từ chủ shop
− Chủ shop muốn kinh doanh qua trang web thương mại điện tử
+ Xem chi tiết sản phẩm
+ Chọn mua sản phẩm và đưa vào giỏ hàng
Trang 19+ Đánh giá sản phẩm sau khi mua
+ Thanh toán giỏ hàng
+ Được đề xuất sản phẩm dựa trên sự ưa thích của bản thân với các khách hàng khác có sự ưa thích tương tự
+ Đăng nhập, đăng ký và các chức năng authentication khác
− Đối với chủ shop:
+ Thêm xóa sửa sản phẩm
+ Xem doanh thu và được dự báo doanh thu
+ Xem tình trạng các đơn hàng
Chương 2: CƠ SỞ LÝ THUYẾT
2.1.2 Giới thiệu về JSX
JSX là một dạng ngôn ngữ cho phép viết các mã HTML trong Javascript Đặc điểm:
Trang 20Báo cáo đồ án 2 Ứng dụng shop bán hàng
● Faster: Nhanh hơn JSX thực hiện tối ưu hóa trong khi biên dịch sang mã Javacsript Các mã này cho thời gian thực hiện nhanh hơn nhiều so với một mã tương đương viết trực tiếp bằng Javascript
● Safer: an toàn hơn Ngược với Javascript, JSX là kiểu statically-typed, nghĩa là
nó được biên dịch trước khi chạy, giống như Java, C++ Vì thế các lỗi sẽ được phát hiện ngay trong quá trình biên dịch Ngoài ra, nó cũng cung cấp tính năng
gỡ lỗi khi biên dịch rất tốt
● Easier: Dễ dàng hơn JSX kế thừa dựa trên Javascript, vì vậy rất dễ dàng để cho các lập trình viên Javascripts có thể sử dụng
2.1.3 Giới thiệu về Components
React được xây dựng xung quanh các component, chứ không dùng template như các framework khác Trong React, chúng ta xây dựng trang web sử dụng những thành phần (component) nhỏ Chúng ta có thể tái sử dụng một component ở nhiều nơi, với các trạng thái hoặc các thuộc tính khác nhau, trong một component lại có thể chứa thành phần khác Mỗi component trong React có một trạng thái riêng, có thể thay đổi, và React sẽ thực hiện cập nhật component dựa trên những thay đổi của trạng thái Mọi thứ React đều là component Chúng giúp bảo trì mã code khi làm việc với các dự án lớn Một react component đơn giản chỉ cần một method render Có rất nhiều methods khả dụng khác, nhưng render là method chủ đạo
Trang 212.2 Tìm hiểu về ASP.NET Core API
Hình 2.2-1.NET Core API
2.2.1 Giới thiệu
Khi nhắc đến NET, chúng ta thường nghĩ đến Mã Nguồn đóng, Only Window, Build with Visual Studio Nhưng sau khi cho ra mắt ASP.NET CORE 1, Microsoft đã thay đổi hoàn toàn suy nghĩ của chúng ta với các điểm sau:
• Open source Microsoft đã open source NET và public trên github để thu hút các lập trình viên cũng như tận dụng sức mạnh của cộng đồng
• Xây dựng cho Windows, Mac, hoặc Linux
• Visual Studio Code không còn gắn chặt với Visual studio, ASP.NET CORE bây giờ có thể viết với Visual studio code (free) trên cả Window, Linux và Mac
2.2.2 ASP.NET CORE là gì
ASP.NET Core là một nền tảng mã nguồn mở, cross-platform framework cho việc xây dựng và kết nối các ứng dụng web hiện đại chẳng hạn như ứng dụng web, Internet of Thing, Mobile Backend - Web API
ASP.NET Core cung cấp một kiến trúc để tối ưu hóa việc xây dựng các ứng dụng đám mây (microsoft azure) hoặc các ứng dụng độc lập Bạn có thế phát triển ứng dụng ASP.NET Core đa nền tảng (Window, Mac, Linux), với mã nguồn mở tại Github
2.2.3 ASP.NET Core API
ASP.NET Web API là một framework được cung cấp bởi Microsoft, giúp dễ dàng xây dựng API Web , tức là các dịch vụ dựa trên giao thức HTTP ASP.NET Web API là
Trang 22Báo cáo đồ án 2 Ứng dụng shop bán hàng
một nền tảng lý tưởng để xây dựng các dịch vụ Restful Các dịch vụ API Web này có thể được sử dụng bởi nhiều client khác nhau, chẳng hạn như:
Client-Server Constraint (Ràng buộc máy khách - máy chủ)
Ràng buộc này xác định rằng Máy khách gửi yêu cầu đến máy chủ và máy chủ sẽ gửi phản hồi lại cho máy khách Sự tách biệt mối quan tâm này hỗ trợ sự phát triển độc lập của cả logic phía máy khách và logic phía máy chủ
Stateless Constraint (Ràng buộc không trạng thái)
Ràng buộc không trạng thái xác định rằng giao tiếp giữa máy khách và máy chủ phải không trạng thái giữa các yêu cầu Điều đó có nghĩa là chúng ta không nên lưu trữ bất
kỳ thông tin nào về máy khách trên máy chủ Yêu cầu đến từ máy khách phải chứa tất
cả các thông tin cần thiết cho máy chủ để xử lý yêu cầu đó sẽ đảm bảo rằng mỗi yêu cầu đến từ máy khách sẽ được máy chủ xử lý độc lập
Cacheable Constraint (Ràng buộc có thể lưu)
Một số dữ liệu chủ được cung cấp bởi máy chủ như danh sách các quốc gia hoặc danh sách các thành phố hoặc danh sách của bộ phận trong công ty không thay đổi thường xuyên Ràng buộc có thể lưu trong bộ nhớ cho phép máy khách quyết định thời gian dữ liệu này tốt trong bao lâu để khách hàng không cần phải quay lại máy chủ nhiều lần cho cùng một dữ liệu
Trang 23Uniform Interface (Giao diện thống nhất)
Ràng buộc giao diện thống nhất định nghĩa một giao diện giữa máy khách và máy chủ
Để hiểu ràng buộc giao diện thống nhất, chúng ta cần hiểu tài nguyên là gì và các động
từ HTTP - GET, PUT, POST và DELETE Từ quan điểm API REST, các tài nguyên thường đại diện cho các thực thể dữ liệu như Sản phẩm, Sinh viên, Khách hàng, v.v Động từ HTTP như GET, POST, PUT và DELETE được gửi với mỗi yêu cầu từ máy khách cho API biết Làm gì với tài nguyên Mỗi tài nguyên trong API REST được xác định bởi một URI duy nhất (Mã định danh tài nguyên đồng nhất) Bảng sau đây cho thấy một số yêu cầu điển hình mà bạn thấy trong API
● /Students nếu động từ GET, nó sẽ lấy danh sách sinh viên
● /Students/1 nếu động từ là GET sẽ lấy thông tin về sinh viên có id là 1
● /Students nếu động từ là POST, nó sẽ tạo mới một sinh viên
● /Students/1 nếu động từ là PUT, nó sẽ cập nhật thông tin của sinh có id
là 1
● /Students/1 nếu động từ là DELETE, thì nó sẽ xóa một bản ghi trong đó
id là 1
Một khái niệm khác có liên quan đến Giao diện thống nhất là HATEOAS - HATEOAS
là viết tắt của Hypermedia as the Engine of Application State Điều này nói rằng trong mỗi yêu cầu có thể có một tập hợp các siêu liên kết sẽ cho bạn biết những hành động hoặc hoạt động khác mà bạn có thể thực hiện trên tài nguyên
2.2.5 Tại sao phải sử dụng ASP.NET WEB API?
Ngày nay, một ứng dụng web không đủ hoặc không đủ để tiếp cận tất cả khách hàng của mình Mọi người đang trở nên rất thông minh; họ đang sử dụng các loại thiết bị khác nhau như điện thoại di động, iPhone, máy tính bảng, v.v trong cuộc sống hàng ngày Các thiết bị này đang có rất nhiều ứng dụng giúp cuộc sống của họ trở nên dễ dàng Nói một cách đơn giản, chúng ta có thể nói rằng chúng ta đang hướng tới thế giới ứng dụng từ web
Trang 24Báo cáo đồ án 2 Ứng dụng shop bán hàng
Vì vậy, nếu chúng tôi muốn hiển thị dữ liệu của mình (dữ liệu doanh nghiệp) cho các trình duyệt cũng như cho tất cả các ứng dụng thiết bị hiện đại này một cách nhanh chóng, an toàn và đơn giản, thì chúng tôi nên có một API tương thích với tất cả các trình duyệt những thiết bị hiện đại này
ASP.NET Web API là một framework tuyệt vời để xây dựng các dịch vụ HTTP có thể được sử dụng bởi nhiều khách hàng bao gồm trình duyệt, điện thoại di động, iPhone và máy tính bảng
2.3 Tìm hiểu về SQL Server
Hình 2.3-1 SQL Server
2.3.1 Giới thiệu về Sql Server
SQL Server chính là một hệ quản trị dữ liệu quan hệ sử dụng câu lệnh SQL để trao đổi
dữ liệu giữa máy cài SQL Server và máy Client Một Relational Database Management System – RDBMS gồm có: databases, database engine và các chương trình ứng dụng dùng để quản lý các bộ phận trong RDBMS và những dữ liệu khác
2.3.2 Lịch sử hình thành
+ Lịch sử ra đời SQL server
Năm 1989, phiên bản đầu tiên của SQL Server 1.0 ra đời được dùng cho các hệ điều hành 16 bit và được phát triển cho tới ngày nay
Trang 25Cho tới khi SQL Server ra phiên bản 6.5 thì được thị trường chấp nhận rộng rãi Một đột phá cải tiến cho SQL Server 7.0 khi được Microsoft viết lại một engine hoàn toàn mới Đến khi SQL Server từ phiên bản 7.0 cải tiến lên 8.0 chủ yếu phát triển về tính năng thiết kế website.
+ Một vài ấn bản SQL Server
Enterprise: là một ấn bản chứa tất cả các đặc điểm nổi bật của SQL Server như: các công cụ cho tạo và quản lý phân cụm SQL Server, nhân bộ máy cơ sở dữ liệu và một số dịch vụ đi kèm Nó có thể đánh địa chỉ 12 terabytes và quản lý cơ sở dữ liệu lên tới 524 petabytes
Standard: Ấn bản này có thể chạy tốt trên hệ thống lên tới 4 CPU và 2 GB RAM rất thích hợp cho các dịch vụ thiết kế web vừa và nhỏ
Developer: Ấn bản này giới hạn số lượng người kết nối với server nhưng có đầy đủ các tính năng của Enterprise Edition Đây là phiên bản được sử dụng cho kiểm tra và phát triển ứng dụng phù hợp cho các cá nhân trong lĩnh vực web như: freelancer Việt Nam, website spa,…
Workgroup: ấn bản SQL Server này có các chức năng lõi cơ sở dữ liệu nhưng không đi kèm các dịch vụ Ở phiên bản 2012 không có ấn bản này
Express: Ấn bản này dễ dàng sử dụng và quản trị cơ sở dữ liệu đơn giản
2.3.3 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 Ngoà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
Trang 26Báo cáo đồ án 2 Ứng dụng shop bán hàng
+ 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 bạ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à bạn chắc chắn sẽ có nhu cầu di chuyển dữ liệu giữa các server này Ngoài ra, bạ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 bạn 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 rất hay của Microsoft Dữ
liệu khi được lưu trữ vào trong database mà bạn 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 bạn 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 – data mining và khái niệm hình khối nhiều chiều – multi dimensional 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 Ngoài ra, dịch vụ này còn có chức năng gửi thông báo theo dịch thời đến hàng ngàn người đă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 Ngoà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
+ 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.3.4 Tại sao phải sử dụng SQL Server?
SQL Server không phải là một hệ quản trị cơ sở dữ liệu độc lập mà nó chỉ là một thành phần với vai trò ngôn ngữ là công cụ giao tiếp giữa hệ cơ sở dữ liệu và người dùng Chính vì thế nó được sử dụng trong các dịch vụ thiết kế web đẹp với chức năng giao tiếp với người dùng với các vai trò sau:
Trang 27SQL là một ngôn ngữ đòi hỏi có tính tương tác cao: Người dùng có thể dễ dàng trao đổi với các tiện ích thông qua các câu lệnh của SQL đến cơ sở dữ liệu và nhận kết quả từ
cơ sở dữ liệu
SQL là một ngôn ngữ lập trình cơ sở dữ liệu: Các lập trình viên có thể xây dựng các chương trình ứng dụng giao tiếp với cơ sở dữ liệu bằng cách nhúng các câu lệnh SQL vào trong ngôn ngữ lập trình
SQL là một ngôn ngữ lập trình quản trị cơ sở dữ liệu: Người quản trị cơ sở dữ liệu có thể quản lý, định nghĩa và điều khiển truy cập cơ sở dữ liệu thông qua SQL
SQL là một ngôn ngữ lập trình cho các hệ thống chủ khách: SQL được sử dụng như là một công cụ giao tiếp với các trình ứng dụng trong hệ thống cơ sở dữ liệu khách chủ.SQL là ngôn ngữ truy cập dữ liệu trên Internet: SQL được sử dụng với vai trò tương tác với dữ liệu trong hầu hết các máy chủ web và máy chủ Internet
SQL là ngôn ngữ cơ sở dữ liệu phân tán: Với vai trò giao tiếp với các hệ thống trên mạng, gửi và nhận các yêu cầu truy xuất dữ liệu với nhau
Trang 28Báo cáo đồ án 2 Ứng dụng shop bán hàng
2.4.2 Git
- Là công cụ giúp quản lý source code tổ chức theo dạng dữ liệu phân tán
- Giúp đồng bộ source code của team lên 1 server
- Hỗ trợ các thao tác kiểm tra source code trong quá trình làm việc (diff, check modifications, show history, merge source, …)
2.4.3 Chức năng
GitHub được coi là một mạng xã hội dành cho lập trình viên lớn nhất và dễ dùng nhất với các tính năng cốt lõi như:
- Wiki, issue, thống kê, đổi tên project, project được đặt vào namespace là user
- Watch project: theo dõi hoạt động của project của người khác Xem quá trình người ta phát triển phần mềm thế nào, project phát triển ra sao
- Follow user: theo dõi hoạt động của người khác
Có 2 cách tiếp cận GitHub: Tạo project của riêng mình Contribute cho project có sẵn: fork project có sẵn của người khác, sửa đổi, sau đó đề nghị họ cập nhật sửa đổi của mình (tạo pull request)
2.4.4 Lợi ích
- Quản lý source code dễ dàng
- Tracking sự thay đổi qua các version
- Markdown
- Github giúp cải thiện kỹ năng code, thậm chí là tracking bug
- Github là một kho tài nguyên tuyệt vời
- Mở rộng mối quan hệ
Trang 29Chương 3: MACHINE LEARNING: ML.NET
3.1 Khái niệm ML.Net
Hình 3.1-1 ML.Net
ML.Net là thư viện máy học mã nguồn mở và đa nền tảng (Windows, Linux, macOS) của Microsoft Nó được coi là đủ mạnh để làm những gì mà một số thư viện khác có thể làm (chẳng hạn như scikit-learning được viết bằng Python) và làm những việc mà các thư viện khác không thể làm được ML.Net bắt đầu vào tháng 5 năm 2018 và hiện phiên bản ổn định là 1.7.1
ML.NET hỗ trợ các bài toán:
● Classification: Ví dụ các bài toán về phân loại cảm xúc khách hàng tích cực hay
tiêu cực từ các feedback của họ
● Clustering: Ví dụ các bài toán về gom cụm khách hàng, giả sử có N khách hàng
ta cần phải gom thành k cụm, các cụm này chứa các đặc trưng khác nhau của khách hàng
● Regression/ Predict continuous values: Ví dụ các bài toán về hồi quy như dự
đoán giá nhà, giá taxi … từ một tập dữ liệu giao dịch trong quá khứ, hãy dự đoán giá của nó là gì khi có một số sự kiện mới
● Anomaly Detection: Các bài toán về phát hiện bất thường, chẳng hạn như Phát
hiện các giao dịch gian lận trong ngân hàng
● Recommendations: Các bài toán về khuyến nghị, ví dụ như làm sao quảng cáo
được sản phẩm tới đúng khách hàng có nhu cầu, làm sao khi vào tiki thì nó gợi
ý được các cuốn sách mà người này quan tâm
Trang 30Báo cáo đồ án 2 Ứng dụng shop bán hàng
● Time series/ sequential data: các bài toán như dự báo thời tiết hay doanh số bán
sản phẩm
● Image classification: các bài toán về phân loại hình ảnh
● Object detection: Các bài toán về Phát hiện đối tượng
3.2 Quy trình hoạt động
Hình 3.2-1 Quy trình hoạt động ML.Net
Bước 1: ML.NET sẽ cung cấp các thư viện phù hợp để chúng ta có thể nạp dữ liệu và
tự động mô hình hóa dữ liệu này thành mô hình hướng đối tượng Ở bước 1, thông thường chúng ta sẽ thực hiện việc load dữ liệu, sau đó chúng ta cũng thực hiện việc chia
dữ liệu ban đầu thành 2 phần: Tập huấn luyện để huấn luyện mô hình (dùng cho bước 3), Tập kiểm tra để đánh giá mô hình (cho bước 4) Dữ liệu được lưu vào IDataView
Trang 31Bước 2: Bước này đại khái là chỉ định một quy trình hoạt động để trích xuất các đặc
trưng và áp dụng thuật toán học máy cho phù hợp Tùy vào mục đích bài toán máy học
mà ta dùng các giải thuật khác nhau, có thể dùng Binary classification, Multiclass classification, Regression… Đối tượng tạo ra ở bước này là IEstimator
Bước 3: Tiến hành train mô hình bằng cách gọi phương thức Fit() của IEstimator kết
quả của phương thức Fit() sẽ trả về một mô hình có kiểu ITransformer Dữ liệu train là lấy Tập huấn luyện ở bước 1
Bước 4: Sau khi training model chưa có sử dụng ngay (thông thường), vì thường
machine learning gặp vấn đề nó sẽ có kết quả dự đoán khác với thực tế Vấn đề là sự chênh lệch này có chấp nhận được hay không, có tiếp tục sử dụng và tiếp tục cải tiến mẫu mã hay không Khi mô hình huấn luyện xong, chúng ta cần đánh giá chất lượng của mô hình này
Bước 5: Sau khi đã đánh giá mô hình chất lượng ở bước 4 rồi thì lưu lại để lần sau
không phải chuẩn bị lại dữ liệu và train lại File mô hình được lưu mặc định có đuôi zip
Bước 6: Load mô hình đã được lưu ở bước 5 Sau khi tải nó sẽ mô hình hóa ngược lại
đối tượng Itransformer Ta gọi hàm Load() để tải mô hình
Bước 7: là gọi hàm CreatePredictionEngine().Predict() để sử dụng mô hình nhằm tìm
ra kết quả dự báo của chương trình
3.3 Gợi ý sản phẩm
3.3.1 Thuật toán Matrix Factorization
Matrix Factorization là một hướng tiếp cận khác của Collaborative Filtering, nghĩa là gợi ý bằng "kỹ thuật phân rã ma trận"
Kỹ thuật phân rã ma trận là phương pháp chia một ma trận lớn X thành hai ma trận có kích thước nhỏ hơn là W và H, sao cho ta có thể xây dựng lại X từ hai ma trận nhỏ hơn này càng chính xác càng tốt, nghĩa là X ~ WHT
Trang 32Báo cáo đồ án 2 Ứng dụng shop bán hàng
Hình 3.3-1 Kỹ thuật phân rã ma trận
Có thể hiểu rằng, ý tưởng chính của Matrix Factorization là đặt items và users vào trong cùng một không gian thuộc tính ẩn Trong đó, W ∈ R|U|∗K là một ma trận mà mỗi dòng u là một vector bao gồm K nhân tố tiềm ẩn (latent factors) mô tả user u và H
∈ R∣I∣∗K là một ma trận mà mỗi dòng i là một vector bao gồm K nhân tố tiềm ẩn mô tả cho item i
Áp dụng phương pháp này vào bài toán gợi ý, chúng ta có x là một vector của item product Mục tiêu của chúng ta là tìm một vector w tương ứng với mỗi user sao cho ratings đã biết của user đó cho item (y) xấp xỉ với: y ≈ xw
Mở rộng với Y là utility matrix, giả sử đã được điền hết giá trị, ta có:
Hình 3.3-2 Kỹ thuật phân rã ma trận
với M, N lần lượt là số users và số items Chúng ta sẽ cố gắng xấp xỉ utility matrix Y
∈ RM∗N bằng tích của hai ma trận con là X ∈ RM∗K và W ∈ RK∗N
Trong đó, K được chọn thường nhỏ hơn rất nhiều so với M và N, và cả hai ma trận X
và W đều phải có bậc (rank) không được vượt quá K
Trang 33Hình 3.3-3 Kỹ thuật phân rã ma trận
3.3.2 Ưu điểm
Giảm thời gian tính toán trong khi đào tạo: Thuật toán đào tạo của bạn sẽ nhanh hơn
và dễ dàng hơn để tìm hiểu các thông tin ở dạng nhỏ gọn
Giảm kích thước: Trong khi xử lý các bộ dữ liệu lớn, các kỹ thuật chuyển đổi khác nhau có thể dẫn đến các bộ dữ liệu được thiết kế theo tính năng khác nhau với số chiều lớn Trước tiên, có thể giảm kích thước của từng kỹ thuật và sau đó ghép các bộ
dữ liệu thành một bộ dữ liệu nhỏ hơn để đào tạo
Mô hình có thể giúp người dùng khám phá những sở thích mới: Hệ thống ML có thể không biết người dùng quan tâm đến một mặt hàng nhất định, nhưng mô hình vẫn có thể đề xuất mặt hàng đó vì những người dùng tương tự quan tâm đến mặt hàng đó
3.3.3 Nhược điểm
Ma trận không thể xử lý các mặt hàng mới, ví dụ: nếu một sản phẩm mới được thêm vào ma trận, nó có thể hạn chế tương tác của người dùng và do đó, sẽ hiếm khi xuất hiện dưới dạng đề xuất
Đầu ra của đề xuất có thể bị sai lệch, dựa trên mức độ phổ biến, nghĩa là nếu phần lớn tương tác của người dùng hướng tới một sản phẩm cụ thể, thì đề xuất sẽ chỉ tập trung vào sản phẩm phổ biến đó
Trang 34Báo cáo đồ án 2 Ứng dụng shop bán hàng
3.3.4 Model
Có ba cột: UserId, ProductId, Rating
Trong học máy, các cột được sử dụng để đưa ra dự đoán được gọi là Feature và cột có giá trị dự đoán được trả về được gọi là Label
Chúng ta muốn dự đoán xếp hạng sản phẩm, vậy cột Rating là Label Hai cột khác, userId, productId đều là các Feature được sử dụng để dự đoán Nhãn
Hình 3.3-4 Model gợi ý sản phẩm
3.4 Dự báo doanh thu
3.4.1 Thuật toán Singular Spectrum Analysis (SSA)
SSA hoạt động bằng cách phân tách chuỗi thời gian thành một tập hợp các thành phần chính Các thành phần này có thể được hiểu là các phần của tín hiệu tương ứng với xu hướng, nhiễu, tính thời vụ và nhiều yếu tố khác Sau đó, các thành phần này được xây dựng lại và sử dụng để dự báo các giá trị trong tương lai SSA đã tỏ ra rất thành công
và đã trở thành một công cụ tiêu chuẩn trong phân tích chuỗi thời gian khí hậu, khí tượng và địa vật lý;
Trang 353.4.2 Model
Hình 3.4-1 Model dự báo doanh thu
ModelInput chứa các cột sau:
● Date: Ngày quan sát
● Year: Năm quan sát được mã hóa
● Totals: Tổng doanh thu cho ngày hôm đó
Lớp ModelOutput chứa các cột sau:
● ForecastedSales: Các giá trị dự đoán cho khoảng thời gian dự báo
● LowerBoundSales: Các giá trị tối thiểu được dự đoán cho giai đoạn dự báo
● UpperBoundSales: Các giá trị tối đa được dự đoán cho khoảng thời gian dự báo
Chương 4: THIẾT KẾ HỆ THỐNG
4.1 Kiến trúc hệ thống: Mô hình MVC
Model: Lưu trữ tất cả dữ liệu của ứng dụng Bộ phận này là cầu nối giữa cơ sở dữ liệu quản lý cả nhân và trình bày giao diện người dùng Cho phép người dùng có thể nhập
và xuất đến các cơ sở dữ liệu lần lượt theo quyền của họ khi cần thiết và dữ liệu sẽ
được lưu dữ trên database
View: giao diện người dùng, nơi người dùng có thể lấy được thông tin dữ liệu của MVC thông qua các công thức truy vấn và ghi lại hoạt động của người dùng để tương tác với Controller
Controller: xử lý yêu cầu từ người dùng thông qua View Từ đó, Controller gửi dữ liệu hợp lý đến người dùng bằng các kết nối đến Model và trưng bày nó trên View cho người dùng
Trang 36Báo cáo đồ án 2 Ứng dụng shop bán hàng
Hình 4.1-1 Sơ đồ mô hình MVC