1. Trang chủ
  2. » Luận Văn - Báo Cáo

xây dựng website bán cây sử dụng asp net core mvc

75 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Website Bán Cây Sử Dụng ASP.NET Core MVC
Tác giả Nguyễn Quang Linh
Người hướng dẫn ThS. Đặng Phước Hải Trang
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Kỹ Thuật Máy Tính
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2014
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 75
Dung lượng 7,17 MB

Cấu trúc

  • CHƯƠNG 1 MỞ ĐẦU (18)
    • 1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI (0)
    • 1.2 MỤC TIÊU CỦA ĐỀ TÀI (7)
    • 1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU (7)
    • 1.4 GIỚI HẠN ĐỀ TÀI (7)
    • 1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN (7)
  • CHƯƠNG 2 CƠ SỞ LÝ THUYẾT (20)
    • 2.1 ASP.NET CORE MVC (7)
      • 2.1.1 Giới thiệu về ASP.NET Core (7)
      • 2.1.2 Mô hình MVC (7)
    • 2.2 SQL SERVER (7)
    • 2.3 BẢO MẬT (8)
      • 2.3.1 Hash password (8)
      • 2.3.2 Ngăn chặn XSRF/CSRF (8)
      • 2.3.3 Ngăn chặn tấn công chuyển hướng mở (8)
      • 2.3.4 Ngăn chặn XSS (8)
      • 2.3.5 Ngăn chặn SQL Injection (8)
  • CHƯƠNG 3 THIẾT KẾ PHẨN MỀM (28)
    • 3.1 KHẢO SÁT (8)
      • 3.1.1 Khảo sát hiện trạng (8)
      • 3.1.2 Xác định yêu cầu (8)
    • 3.2 MÔ HÌNH HÓA YÊU CẦU (8)
      • 3.2.1 Lược đồ use case (8)
      • 3.2.2 Use case quản lí giỏ hàng (8)
      • 3.2.3 Use case đặt hàng (8)
      • 3.2.4 Use case xem lịch sử mua hàng (0)
      • 3.2.5 Use case quản lí tài khoản (8)
      • 3.2.6 Use case quản lí danh mục (8)
      • 3.2.7 Use case quản lí tin tức (8)
      • 3.2.8 Use case quản lí sản phẩm (8)
      • 3.2.9 Use case quản lí đơn hàng (8)
      • 3.2.10 Use case quản lí đánh giá (8)
    • 3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) (8)
      • 3.3.1 Lưu đồ thuật toán đăng kí (8)
      • 3.3.2 Lưu đồ thuật toán đăng nhập (8)
      • 3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng (8)
      • 3.3.4 Lưu đồ thuật toán mua hàng (8)
      • 3.3.5 Lưu đồ thuật toán hủy đơn (8)
      • 3.3.6 Lưu đồ thuật toán đánh giá sản phẩm (8)
      • 3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản (8)
    • 3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU (0)
      • 3.4.1 Cơ sở dữ liệu (8)
      • 3.4.2 Chi tiết các bảng (9)
  • CHƯƠNG 4 THIẾT KẾ GIAO DIỆN (59)
    • 4.1 GIAO DIỆN TRANG CHỦ (9)
    • 4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP (9)
    • 4.3 GIAO DIỆN GIỚI THIỆU CHUNG (9)
    • 4.4 GIAO DIỆN KIẾN THỨC (0)
    • 4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC (0)
    • 4.6 GIAO DIỆN LIÊN HỆ (9)
    • 4.7 GIAO DIỆN SẢN PHẨM (9)
    • 4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM (0)
    • 4.9 GIAO DIỆN GIỎ HÀNG (9)
    • 4.10 GIAO DIỆN MUA HÀNG (9)
    • 4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG (69)
    • 4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM (9)
    • 4.13 GIAO DIỆN QUẢN LÍ TIN TỨC (9)
    • 4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG (9)
    • 4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY (9)
  • CHƯƠNG 5 KẾT LUẬN (72)
    • 5.1 KẾT QUẢ ĐẠT ĐƯỢC (0)
      • 5.1.1 Kết quả đạt được (9)
      • 5.1.2 Ưu điểm (9)
      • 5.1.3 Nhược điểm (9)
    • 5.2 HƯỚNG PHÁT TRIỂN (9)
  • TÀI LIỆU THAM KHẢO ................................................................................ 56 (73)

Nội dung

Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada… Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài “Xây dựng website bán cây sử dụng ASP.NET Co

CƠ SỞ LÝ THUYẾT

ASP.NET CORE MVC

2.1.1 Giới thiệu về asp.net core

SQL SERVER

ĐH SƯ PHẠM KỸ THUẬT TP HCM

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự do – Hạnh phúc

BẢO MẬT

2.3.3 Ngăn chặn tấn công chuyển hướng mở

Chương 3 Thiết kế phần mềm

3.1.2 Xác định yêu cầu

3.2 Mô hình hóa yêu cầu

3.2.2 Use case quản lí giỏ hàng

3.2.4 Use case xem lịch sử đơn hàng

3.2.5 Use case quản lí tài khoản

3.2.6 Use case quản lí danh mục

3.2.7 Use case quản lí tin tức

3.2.8 Use case quản lí sản phẩm

3.2.9 Use case quản lí đơn hàng

3.2.10 Use case quản lí đánh giá

3.3 Lưu đồ thuật toán (flow chart)

3.3.1 Lưu đồ thuật toán đăng kí

3.3.2 Lưu đồ thuật toán đăng nhập

3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 3.3.4 Lưu đồ thuật toán mua hàng

3.3.5 Lưu đồ thuật toán hủy đơn

3.3.6 Lưu đồ thuật toán đánh giá sản phẩm

3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 3.4 Thiết kế cơ sở dữ liệu

3.4.1 Cơ sở dữ liệu iv

Chương 4 Thiết kế giao diện

4.2 Giao diện đăng kí và đăng nhập

4.3 Giao diện giới thiệu chung

4.5 Giao diện chi tiết kiến thức

4.8 Giao diện chi tiết sản phẩm

4.11 Giao diện xem lịch sử mua hàng 4.12 Giao diện quản lí sản phẩm

4.13 Giao diện quản lí tin tức

4.14 Giao diện quản lí đơn hàng

4.15 Giao diện chức năng thanh toán vnpay Chương 5 Kết luận

MỤC LỤC LỜI CẢM ƠN I ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP II MỤC LỤC V DANH MỤC HÌNH VIII DANH MỤC BẢNG X CÁC TỪ VIẾT TẮT XII

1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1

1.2 MỤC TIÊU CỦA ĐỀ TÀI 1

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2

1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN 2

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3

2.1.1 Giới thiệu về ASP.NET Core 3

2.3.3 Ngăn chặn tấn công chuyển hướng mở 7

CHƯƠNG 3 THIẾT KẾ PHẨN MỀM 11 vi

3.1.2 Xác định yêu cầu 13

3.2 MÔ HÌNH HÓA YÊU CẦU 15

3.2.2 Use case quản lí giỏ hàng 17

3.2.4 Use case xem lịch sử mua hàng 19

3.2.5 Use case quản lí tài khoản 20

3.2.6 Use case quản lí danh mục 21

3.2.7 Use case quản lí tin tức 22

3.2.8 Use case quản lí sản phẩm 23

3.2.9 Use case quản lí đơn hàng 24

3.2.10 Use case quản lí đánh giá 25

3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) 26

3.3.1 Lưu đồ thuật toán đăng kí 26

3.3.2 Lưu đồ thuật toán đăng nhập 27

3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28

3.3.4 Lưu đồ thuật toán mua hàng 29

3.3.5 Lưu đồ thuật toán hủy đơn 30

3.3.6 Lưu đồ thuật toán đánh giá sản phẩm 31

3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32

3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU 33

CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 42

4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP 43 vii

4.3 GIAO DIỆN GIỚI THIỆU CHUNG 44

4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC 46

4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM 49

4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG 52

4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM 53

4.13 GIAO DIỆN QUẢN LÍ TIN TỨC 53

4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG 54

4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY 54

TÀI LIỆU THAM KHẢO 56 viii

Hình 2 2: Các lựa chọn tăng cường độ mạnh mật khẩu 5

Hình 2 3: Cách sử dụng form trong FormTagHelper 6

Hình 2 4: Cách sử dụng phương thức Html.BeginForm 6

Hình 2 5: Cách thêm @Html.AntiForgeryToken() 6

Hình 2 10: Cách mã hóa trong Razor 9

Hình 2 11: Gọi phương thức mã hóa trong controller 9

Hình 2 12: Ví dụ mã hóa trong controller 9

Hình 2 13: Truy vấn sql ban đầu 10

Hình 2 14: Truy vấn sql sau khi bị tấn công 10

Hình 3 1: Giao diện website Locat 12

Hình 3 2: Giao diện website cây xinh 12

Hình 3 4: Use case tổng quát 15

Hình 3 5: Use case quản lí giỏ hàng 17

Hình 3 6: Use case đặt hàng 18

Hình 3 7: Use case xem lịch sử mua hàng 19

Hình 3 8: Use case quản lí tài khoản 20

Hình 3 9: Use case quản lí danh mục 21

Hình 3 10: Use case quản lí tin tức 22

Hình 3 11: Use case quản lí sản phẩm 23

Hình 3 12: Use case quản lí đơn hàng 24

Hình 3 13: Use case quản lí đánh giá 25

Hình 3 14: Lưu đồ thuật toán đăng kí 26

Hình 3 15: Lưu đồ thuật toán đăng nhập 27 ix

Hình 3 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28

Hình 3 17: Lưu đồ thuật toán mua hàng 29

Hình 3 18: Lưu đồ thuật toán hủy đơn hàng 30

Hình 3 19: Lưu đồ thuật toán đánh giá sản phẩm 31

Hình 3 20: Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32

Hình 3 21: Cơ sở dữ liệu 33

Hình 4 1: Giao diện trang chủ 42

Hình 4 2: Giao diện đăng kí 43

Hình 4 3: Giao diện đăng nhập 43

Hình 4 4: Giao diện giới thiệu chung 44

Hình 4 5: Giao diện kiến thức 45

Hình 4 6: Giao diện chi tiết kiến thức 46

Hình 4 7: Giao diện liên hệ 47

Hình 4 8: Giao diện sản phẩm 48

Hình 4 9: Giao diện chi tiết sản phẩm 49

Hình 4 10: Giao diện giỏ hàng 50

Hình 4 11: Giao diện mua hàng 51

Hình 4 12: Giao diện xem lịch sử mua hàng 52

Hình 4 13: Giao diện quản lí sản phẩm 53

Hình 4 14: Giao diện quản lí tin tức 53

Hình 4 15: Giao diện quản lí đơn hàng 54

Hình 4 16: Giao diện chức năng thanh toán VnPay 54 x

Bảng 3 1: Mô tả use case tổng quát 15

Bảng 3 2: Mô tả use case quản lí giỏ hàng 17

Bảng 3 3: Mô tả use case đặt hàng 18

Bảng 3 4: Mô tả use case xem lịch sử mua hàng 19

Bảng 3 5: Mô tả use case quản lí tài khoản 20

Bảng 3 6: Mô tả use case quản lí danh mục 21

Bảng 3 7: Mô tả use case quản lí tin tức 22

Bảng 3 8: Mô tả use case quản lí sản phẩm 23

Bảng 3 9: Mô tả use case quản lí đơn hàng 24

Bảng 3 10: Mô tả use case quản lí đánh giá 25

Bảng 3 11: Chi tiết dữ liệu bảng AspNetRoleClaims 33

Bảng 3 12: Chi tiết dữ liệu bảng AspNetRoles 33

Bảng 3 13: Chi tiết dữ liệu bảng AspNetUserClaims 34

Bảng 3 14: Chi tiết dữ liệu bảng AspNetUserLogins 34

Bảng 3 15: Chi tiết dữ liệu bảng AspNetUserRoles 34

Bảng 3 16: Chi tiết dữ liệu bảng AspNetUsers 34

Bảng 3 17: Chi tiết dữ liệu bảng AspNetUserTokens 35

Bảng 3 18: Chi tiết dữ liệu bảng BlogCategories 35

Bảng 3 19: Chi tiết dữ liệu bảng Blogs 36

Bảng 3 20: Chi tiết dữ liệu bảng BlogTranslations 36

Bảng 3 21: Chi tiết dữ liệu bảng Categories 36

Bảng 3 22: Chi tiết dữ liệu bảng CategoryNews 36

Bảng 3 23: Chi tiết dữ liệu bảng CategoryNewTranslations 37

Bảng 3 24: Chi tiết dữ liệu bảng CategoryTranslations 37

Bảng 3 25: Chi tiết dữ liệu bảng Contacts 37

Bảng 3 26: Chi tiết dữ liệu bảng Customers 38

Bảng 3 27: Chi tiết dữ liệu bảng FeebackImages 38

Bảng 3 28: Chi tiết dữ liệu bảng Feedbacks 38 xi

Bảng 3 29: Chi tiết dữ liệu bảng Languages 39

Bảng 3 30: Chi tiết dữ liệu bảng Orders 39

Bảng 3 31: Chi tiết dữ liệu bảng ProductCategories 39

Bảng 3 32: Chi tiết dữ liệu bảng ProductColors 40

Bảng 3 33: Chi tiết dữ liệu bảng ProductImgs 40

Bảng 3 34: Chi tiết dữ liệu bảng ProductOrders 40

Bảng 3 35: Chi tiết dữ liệu bảng Products 41

Bảng 3 36: Chi tiết dữ liệu bảng ProductTranslations 41

Bảng 3 37: Chi tiết dữ liệu bảng ShopFeedbacks 41 xii

RDBMS: Relational Database Management System SQL: Structured Query Language

XSRF/CSRF: Cross-Site Request Forgery

1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Trong những năm gần đây, thế giới nói chung và Việt Nam nói riêng đã phải trải qua thời kì đại dịch của COVID – 19 với vô vàn khó khăn, trắc trở Trong thời gian dịch bệnh, ngành thương mại, dịch vụ truyền thống bị suy giảm đáng kể do ban hành các lệnh phong tỏa Nhưng đây lại là cơ hội mạnh mẽ cho sự phát triển vượt bậc của thương mại điện tử bởi sự tiện lợi mang lại cho người tiêu dùng như mua hàng từ xa, tra cứu, so sánh giá cả Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada…

Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài

“Xây dựng website bán cây sử dụng ASP.NET Core MVC” để người tiêu dùng có thể thuận tiện trao đổi mua bán sản phẩm, đẩy mạnh nên thương mại nước nhà Để thực hiện đề tài này, tôi đã thực hiện việc khảo sát và nghiên cứu hiện trạng các website bán cây hiện nay như “Cây để bàn | cây văn phòng Locat” [1],

“Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam” [2], “9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất” [3]…Nhìn chung các website khá đầy đủ các chức năng tuy nhiên vẫn còn một vài thiếu sót như việc hiển thị đánh giá của sản phẩm, chức năng thanh toán online, cần tối ưu thời gian mua bán cho khách hàng…

1.2 MỤC TIÊU CỦA ĐỀ TÀI

Mục tiêu của đề tài bao gồm:

- Hiểu và có khả năng xây dựng website sử dụng ASP.NET Core MVC kết nối cơ sở dữ liệu SQL – Server và các công nghệ liên quan

- Xây dựng một website bán cây với các tính năng sau: hiển thị tin tức, thông tin sản phẩm, chức năng mua hàng, thanh toán online, quản lí danh sách khách hàng, quản lí danh sách sản phẩm, quản lí danh sách tin tức, quản lí danh sách đơn hàng, quản lí danh sách đánh giá, đa ngôn ngữ

- Tìm hiểu và ngăn chặn các lỗ hổng trong xây dựng website

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng của nghiên cứu của đề tài:

- Người dùng cuối: Nghiên cứu trải nghiệm mua sắm trực bao gồm cả việc tìm kiếm, xem sản phẩm, thêm vào giỏ hàng, thanh toán và quản lý đơn hàng

- Quản trị viên: Nghiên cứu về cách quản lý sản phẩm, đơn hàng, khách hàng…từ giao diện quản trị

Phạm vi nghiên cứu của đề tài:

- ASP.NET Core MVC 5.0 là nền tảng xây dựng website lớn của Microsoft

- SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Microsoft

- Ngôn ngữ lập trình C#, Javascript

- Các framework hỗ trợ: Entity Framework, Identity Framework…

- Chưa xác thực email, số điện thoại

- Chưa liên kết với đơn vị vận chuyển để tính phí vận chuyển, giúp khách hàng xem chi tiết vị trí đơn hàng

- Chưa cho khách hàng gửi video đánh giá sản phẩm

1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN Đề tài đề cao khả năng lập trình thông qua việc học hỏi, tiếp thu công nghệ kỹ thuật để xây dựng website thương mại, hiểu và nắm rõ các tính năng cần có trong một website

Bên cạnh ý nghĩa khoa học, đề tài mong muốn mang đến một môi trường công bằng, cạnh tranh và an toàn cho người tiêu dùng Người mua có thể tìm được sản phẩm mình cần và mua với giá có thể trải qua chọn lọc, người bán có thể giới thiệu sản phẩm tới nhiều người hơn Qua đó, thúc đẩy sự phát triển của thương mại điện tử nước ta

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT

2.1.1 Giới thiệu về ASP.NET Core

ASP.NET Core là một framework mã nguồn mở , đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet hiện đại, hỗ trợ đám mây ASP.NET Core là một thiết kế lại của ASP.NET 4.x, bao gồm những thay đổi về kiến trúc dẫn đến một khung mô-đun gọn gàng hơn, nhiều mô-đun hơn.[4]

ASP.NET Core MVC là một framework phong phú để xây dựng các ứng dụng web và API bằng cách sử dụng mẫu thiết kế Model-View-Controller.[5]

Mẫu kiến trúc MVC tách ứng dụng thành ba nhóm thành phần chính:

- Model: Đại diện cho dữ liệu và logic xử lý dữ liệu Model thường bao gồm các lớp đối tượng (object classes) để biểu diễn dữ liệu và các logic xử lý dữ liệu như truy xuất cơ sở dữ liệu

- View: Đại diện cho giao diện người dùng View là nơi hiển thị dữ liệu cho người dùng và tương tác với họ thông qua các trình duyệt web

- Controller: Đại diện cho bộ điều khiển của ứng dụng Controller xử lý các yêu cầu từ người dùng, nếu cần tương tác với Model để lấy dữ liệu thì chuyển dữ liệu đó đến View để hiển thị cho người dùng còn không thì chuyển trực tiếp tới View để hiển thị cho người dùng

Mô hình MVC trong ASP.NET Core giúp tách biệt giao diện, logic xử lý dữ liệu, quy trình điều khiển, giúp cho việc phát triển và bảo trì trở nên dễ dàng hơn Đồng thời cũng tạo điều kiện cho việc tái sử dụng code và phân chia rõ ràng công việc cho FrontEnd Developer và BackEnd Developer

Microsoft SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) Các ứng dụng và công cụ kết nối với phiên bản hoặc cơ sở dữ liệu SQL Server và giao tiếp bằng Transact-SQL (T-SQL).[6]

Các thành phần và công nghệ của SQL Server bao gồm:

- Database Engine: cơ sở dữ liệu là dịch vụ cốt lõi để lưu trữ, xử lý và bảo mật dữ liệu

- Machine Learning Services: hỗ trợ tích hợp học máy

- Integration Services: là nền tảng giúp xây dựng các giải pháp tích hợp dữ liệu hiệu suất cao, bao gồm các gói cung cấp khả năng xử lý trích xuất, chuyển đổi và tải (ETL) cho kho dữ liệu

- Analysis Services: là nền tảng dữ liệu phân tích

- Reporting Services: cung cấp chức năng báo cáo

- Replication: là tập hợp các công nghệ nhằm sao chép và phân phối dữ liệu sau đó đồng bộ hóa để duy trì tính nhất quán

- Data Quality Services: cung cấp các giải pháp làm sạch dữ liệu

- Master Data Services: là giải pháp SQL Server để quản lý dữ liệu chính

Hass Password là kĩ thuật biến đổi mật khẩu thành một chuỗi dữ liệu khác giúp ngăn chặn việc kẻ tấn công dễ dàng đánh cắp Việc hash password được coi

5 là một phần quan trọng của việc bảo vệ hệ thống Dưới đây là các tác dụng của việc hash password:

- Bảo vệ hệ thống: khi mật khẩu được lưu trữ dưới dạng chuỗi hash, ngay cả khi bị đánh cắp thì mật khẩu gốc cũng không dễ dàng bị lộ ra ngoài

- Khi hash password các mật khẩu gốc giống nhau thì chuỗi hash được tạo sẽ khác nhau

- Bảo vệ quyền riêng tư của người dùng: việc hash password giúp ngăn ngừa việc xâm nhập và đánh cắp trái phép tài khoản người dùng

- Tuân thủ quy định bảo mật

THIẾT KẾ PHẨN MỀM

KHẢO SÁT

3.1.2 Xác định yêu cầu

MÔ HÌNH HÓA YÊU CẦU

3.2.2 Use case quản lí giỏ hàng

3.2.4 Use case xem lịch sử đơn hàng

3.2.5 Use case quản lí tài khoản

3.2.6 Use case quản lí danh mục

3.2.7 Use case quản lí tin tức

3.2.8 Use case quản lí sản phẩm

3.2.9 Use case quản lí đơn hàng

3.2.10 Use case quản lí đánh giá

THIẾT KẾ CƠ SỞ DỮ LIỆU

2.3.3 Ngăn chặn tấn công chuyển hướng mở

Chương 3 Thiết kế phần mềm

3.1.2 Xác định yêu cầu

3.2 Mô hình hóa yêu cầu

3.2.2 Use case quản lí giỏ hàng

3.2.4 Use case xem lịch sử đơn hàng

3.2.5 Use case quản lí tài khoản

3.2.6 Use case quản lí danh mục

3.2.7 Use case quản lí tin tức

3.2.8 Use case quản lí sản phẩm

3.2.9 Use case quản lí đơn hàng

3.2.10 Use case quản lí đánh giá

3.3 Lưu đồ thuật toán (flow chart)

3.3.1 Lưu đồ thuật toán đăng kí

3.3.2 Lưu đồ thuật toán đăng nhập

3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 3.3.4 Lưu đồ thuật toán mua hàng

3.3.5 Lưu đồ thuật toán hủy đơn

3.3.6 Lưu đồ thuật toán đánh giá sản phẩm

3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 3.4 Thiết kế cơ sở dữ liệu

3.4.1 Cơ sở dữ liệu iv

Chương 4 Thiết kế giao diện

4.2 Giao diện đăng kí và đăng nhập

4.3 Giao diện giới thiệu chung

4.5 Giao diện chi tiết kiến thức

4.8 Giao diện chi tiết sản phẩm

4.11 Giao diện xem lịch sử mua hàng 4.12 Giao diện quản lí sản phẩm

4.13 Giao diện quản lí tin tức

4.14 Giao diện quản lí đơn hàng

4.15 Giao diện chức năng thanh toán vnpay Chương 5 Kết luận

MỤC LỤC LỜI CẢM ƠN I ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP II MỤC LỤC V DANH MỤC HÌNH VIII DANH MỤC BẢNG X CÁC TỪ VIẾT TẮT XII

1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1

1.2 MỤC TIÊU CỦA ĐỀ TÀI 1

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2

1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN 2

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3

2.1.1 Giới thiệu về ASP.NET Core 3

2.3.3 Ngăn chặn tấn công chuyển hướng mở 7

CHƯƠNG 3 THIẾT KẾ PHẨN MỀM 11 vi

3.1.2 Xác định yêu cầu 13

3.2 MÔ HÌNH HÓA YÊU CẦU 15

3.2.2 Use case quản lí giỏ hàng 17

3.2.4 Use case xem lịch sử mua hàng 19

3.2.5 Use case quản lí tài khoản 20

3.2.6 Use case quản lí danh mục 21

3.2.7 Use case quản lí tin tức 22

3.2.8 Use case quản lí sản phẩm 23

3.2.9 Use case quản lí đơn hàng 24

3.2.10 Use case quản lí đánh giá 25

3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) 26

3.3.1 Lưu đồ thuật toán đăng kí 26

3.3.2 Lưu đồ thuật toán đăng nhập 27

3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28

3.3.4 Lưu đồ thuật toán mua hàng 29

3.3.5 Lưu đồ thuật toán hủy đơn 30

3.3.6 Lưu đồ thuật toán đánh giá sản phẩm 31

3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32

3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU 33

CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 42

4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP 43 vii

4.3 GIAO DIỆN GIỚI THIỆU CHUNG 44

4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC 46

4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM 49

4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG 52

4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM 53

4.13 GIAO DIỆN QUẢN LÍ TIN TỨC 53

4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG 54

4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY 54

TÀI LIỆU THAM KHẢO 56 viii

Hình 2 2: Các lựa chọn tăng cường độ mạnh mật khẩu 5

Hình 2 3: Cách sử dụng form trong FormTagHelper 6

Hình 2 4: Cách sử dụng phương thức Html.BeginForm 6

Hình 2 5: Cách thêm @Html.AntiForgeryToken() 6

Hình 2 10: Cách mã hóa trong Razor 9

Hình 2 11: Gọi phương thức mã hóa trong controller 9

Hình 2 12: Ví dụ mã hóa trong controller 9

Hình 2 13: Truy vấn sql ban đầu 10

Hình 2 14: Truy vấn sql sau khi bị tấn công 10

Hình 3 1: Giao diện website Locat 12

Hình 3 2: Giao diện website cây xinh 12

Hình 3 4: Use case tổng quát 15

Hình 3 5: Use case quản lí giỏ hàng 17

Hình 3 6: Use case đặt hàng 18

Hình 3 7: Use case xem lịch sử mua hàng 19

Hình 3 8: Use case quản lí tài khoản 20

Hình 3 9: Use case quản lí danh mục 21

Hình 3 10: Use case quản lí tin tức 22

Hình 3 11: Use case quản lí sản phẩm 23

Hình 3 12: Use case quản lí đơn hàng 24

Hình 3 13: Use case quản lí đánh giá 25

Hình 3 14: Lưu đồ thuật toán đăng kí 26

Hình 3 15: Lưu đồ thuật toán đăng nhập 27 ix

Hình 3 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28

Hình 3 17: Lưu đồ thuật toán mua hàng 29

Hình 3 18: Lưu đồ thuật toán hủy đơn hàng 30

Hình 3 19: Lưu đồ thuật toán đánh giá sản phẩm 31

Hình 3 20: Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32

Hình 3 21: Cơ sở dữ liệu 33

Hình 4 1: Giao diện trang chủ 42

Hình 4 2: Giao diện đăng kí 43

Hình 4 3: Giao diện đăng nhập 43

Hình 4 4: Giao diện giới thiệu chung 44

Hình 4 5: Giao diện kiến thức 45

Hình 4 6: Giao diện chi tiết kiến thức 46

Hình 4 7: Giao diện liên hệ 47

Hình 4 8: Giao diện sản phẩm 48

Hình 4 9: Giao diện chi tiết sản phẩm 49

Hình 4 10: Giao diện giỏ hàng 50

Hình 4 11: Giao diện mua hàng 51

Hình 4 12: Giao diện xem lịch sử mua hàng 52

Hình 4 13: Giao diện quản lí sản phẩm 53

Hình 4 14: Giao diện quản lí tin tức 53

Hình 4 15: Giao diện quản lí đơn hàng 54

Hình 4 16: Giao diện chức năng thanh toán VnPay 54 x

Bảng 3 1: Mô tả use case tổng quát 15

Bảng 3 2: Mô tả use case quản lí giỏ hàng 17

Bảng 3 3: Mô tả use case đặt hàng 18

Bảng 3 4: Mô tả use case xem lịch sử mua hàng 19

Bảng 3 5: Mô tả use case quản lí tài khoản 20

Bảng 3 6: Mô tả use case quản lí danh mục 21

Bảng 3 7: Mô tả use case quản lí tin tức 22

Bảng 3 8: Mô tả use case quản lí sản phẩm 23

Bảng 3 9: Mô tả use case quản lí đơn hàng 24

Bảng 3 10: Mô tả use case quản lí đánh giá 25

Bảng 3 11: Chi tiết dữ liệu bảng AspNetRoleClaims 33

Bảng 3 12: Chi tiết dữ liệu bảng AspNetRoles 33

Bảng 3 13: Chi tiết dữ liệu bảng AspNetUserClaims 34

Bảng 3 14: Chi tiết dữ liệu bảng AspNetUserLogins 34

Bảng 3 15: Chi tiết dữ liệu bảng AspNetUserRoles 34

Bảng 3 16: Chi tiết dữ liệu bảng AspNetUsers 34

Bảng 3 17: Chi tiết dữ liệu bảng AspNetUserTokens 35

Bảng 3 18: Chi tiết dữ liệu bảng BlogCategories 35

Bảng 3 19: Chi tiết dữ liệu bảng Blogs 36

Bảng 3 20: Chi tiết dữ liệu bảng BlogTranslations 36

Bảng 3 21: Chi tiết dữ liệu bảng Categories 36

Bảng 3 22: Chi tiết dữ liệu bảng CategoryNews 36

Bảng 3 23: Chi tiết dữ liệu bảng CategoryNewTranslations 37

Bảng 3 24: Chi tiết dữ liệu bảng CategoryTranslations 37

Bảng 3 25: Chi tiết dữ liệu bảng Contacts 37

Bảng 3 26: Chi tiết dữ liệu bảng Customers 38

Bảng 3 27: Chi tiết dữ liệu bảng FeebackImages 38

Bảng 3 28: Chi tiết dữ liệu bảng Feedbacks 38 xi

Bảng 3 29: Chi tiết dữ liệu bảng Languages 39

Bảng 3 30: Chi tiết dữ liệu bảng Orders 39

Bảng 3 31: Chi tiết dữ liệu bảng ProductCategories 39

Bảng 3 32: Chi tiết dữ liệu bảng ProductColors 40

Bảng 3 33: Chi tiết dữ liệu bảng ProductImgs 40

Bảng 3 34: Chi tiết dữ liệu bảng ProductOrders 40

Bảng 3 35: Chi tiết dữ liệu bảng Products 41

Bảng 3 36: Chi tiết dữ liệu bảng ProductTranslations 41

Bảng 3 37: Chi tiết dữ liệu bảng ShopFeedbacks 41 xii

RDBMS: Relational Database Management System SQL: Structured Query Language

XSRF/CSRF: Cross-Site Request Forgery

1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Trong những năm gần đây, thế giới nói chung và Việt Nam nói riêng đã phải trải qua thời kì đại dịch của COVID – 19 với vô vàn khó khăn, trắc trở Trong thời gian dịch bệnh, ngành thương mại, dịch vụ truyền thống bị suy giảm đáng kể do ban hành các lệnh phong tỏa Nhưng đây lại là cơ hội mạnh mẽ cho sự phát triển vượt bậc của thương mại điện tử bởi sự tiện lợi mang lại cho người tiêu dùng như mua hàng từ xa, tra cứu, so sánh giá cả Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada…

Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài

“Xây dựng website bán cây sử dụng ASP.NET Core MVC” để người tiêu dùng có thể thuận tiện trao đổi mua bán sản phẩm, đẩy mạnh nên thương mại nước nhà Để thực hiện đề tài này, tôi đã thực hiện việc khảo sát và nghiên cứu hiện trạng các website bán cây hiện nay như “Cây để bàn | cây văn phòng Locat” [1],

“Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam” [2], “9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất” [3]…Nhìn chung các website khá đầy đủ các chức năng tuy nhiên vẫn còn một vài thiếu sót như việc hiển thị đánh giá của sản phẩm, chức năng thanh toán online, cần tối ưu thời gian mua bán cho khách hàng…

1.2 MỤC TIÊU CỦA ĐỀ TÀI

Mục tiêu của đề tài bao gồm:

- Hiểu và có khả năng xây dựng website sử dụng ASP.NET Core MVC kết nối cơ sở dữ liệu SQL – Server và các công nghệ liên quan

- Xây dựng một website bán cây với các tính năng sau: hiển thị tin tức, thông tin sản phẩm, chức năng mua hàng, thanh toán online, quản lí danh sách khách hàng, quản lí danh sách sản phẩm, quản lí danh sách tin tức, quản lí danh sách đơn hàng, quản lí danh sách đánh giá, đa ngôn ngữ

- Tìm hiểu và ngăn chặn các lỗ hổng trong xây dựng website

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng của nghiên cứu của đề tài:

- Người dùng cuối: Nghiên cứu trải nghiệm mua sắm trực bao gồm cả việc tìm kiếm, xem sản phẩm, thêm vào giỏ hàng, thanh toán và quản lý đơn hàng

- Quản trị viên: Nghiên cứu về cách quản lý sản phẩm, đơn hàng, khách hàng…từ giao diện quản trị

Phạm vi nghiên cứu của đề tài:

- ASP.NET Core MVC 5.0 là nền tảng xây dựng website lớn của Microsoft

- SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Microsoft

- Ngôn ngữ lập trình C#, Javascript

- Các framework hỗ trợ: Entity Framework, Identity Framework…

- Chưa xác thực email, số điện thoại

- Chưa liên kết với đơn vị vận chuyển để tính phí vận chuyển, giúp khách hàng xem chi tiết vị trí đơn hàng

- Chưa cho khách hàng gửi video đánh giá sản phẩm

1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN Đề tài đề cao khả năng lập trình thông qua việc học hỏi, tiếp thu công nghệ kỹ thuật để xây dựng website thương mại, hiểu và nắm rõ các tính năng cần có trong một website

Bên cạnh ý nghĩa khoa học, đề tài mong muốn mang đến một môi trường công bằng, cạnh tranh và an toàn cho người tiêu dùng Người mua có thể tìm được sản phẩm mình cần và mua với giá có thể trải qua chọn lọc, người bán có thể giới thiệu sản phẩm tới nhiều người hơn Qua đó, thúc đẩy sự phát triển của thương mại điện tử nước ta

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT

2.1.1 Giới thiệu về ASP.NET Core

ASP.NET Core là một framework mã nguồn mở , đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet hiện đại, hỗ trợ đám mây ASP.NET Core là một thiết kế lại của ASP.NET 4.x, bao gồm những thay đổi về kiến trúc dẫn đến một khung mô-đun gọn gàng hơn, nhiều mô-đun hơn.[4]

ASP.NET Core MVC là một framework phong phú để xây dựng các ứng dụng web và API bằng cách sử dụng mẫu thiết kế Model-View-Controller.[5]

Mẫu kiến trúc MVC tách ứng dụng thành ba nhóm thành phần chính:

- Model: Đại diện cho dữ liệu và logic xử lý dữ liệu Model thường bao gồm các lớp đối tượng (object classes) để biểu diễn dữ liệu và các logic xử lý dữ liệu như truy xuất cơ sở dữ liệu

- View: Đại diện cho giao diện người dùng View là nơi hiển thị dữ liệu cho người dùng và tương tác với họ thông qua các trình duyệt web

- Controller: Đại diện cho bộ điều khiển của ứng dụng Controller xử lý các yêu cầu từ người dùng, nếu cần tương tác với Model để lấy dữ liệu thì chuyển dữ liệu đó đến View để hiển thị cho người dùng còn không thì chuyển trực tiếp tới View để hiển thị cho người dùng

Mô hình MVC trong ASP.NET Core giúp tách biệt giao diện, logic xử lý dữ liệu, quy trình điều khiển, giúp cho việc phát triển và bảo trì trở nên dễ dàng hơn Đồng thời cũng tạo điều kiện cho việc tái sử dụng code và phân chia rõ ràng công việc cho FrontEnd Developer và BackEnd Developer

Microsoft SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) Các ứng dụng và công cụ kết nối với phiên bản hoặc cơ sở dữ liệu SQL Server và giao tiếp bằng Transact-SQL (T-SQL).[6]

Các thành phần và công nghệ của SQL Server bao gồm:

- Database Engine: cơ sở dữ liệu là dịch vụ cốt lõi để lưu trữ, xử lý và bảo mật dữ liệu

- Machine Learning Services: hỗ trợ tích hợp học máy

- Integration Services: là nền tảng giúp xây dựng các giải pháp tích hợp dữ liệu hiệu suất cao, bao gồm các gói cung cấp khả năng xử lý trích xuất, chuyển đổi và tải (ETL) cho kho dữ liệu

- Analysis Services: là nền tảng dữ liệu phân tích

- Reporting Services: cung cấp chức năng báo cáo

- Replication: là tập hợp các công nghệ nhằm sao chép và phân phối dữ liệu sau đó đồng bộ hóa để duy trì tính nhất quán

- Data Quality Services: cung cấp các giải pháp làm sạch dữ liệu

- Master Data Services: là giải pháp SQL Server để quản lý dữ liệu chính

Hass Password là kĩ thuật biến đổi mật khẩu thành một chuỗi dữ liệu khác giúp ngăn chặn việc kẻ tấn công dễ dàng đánh cắp Việc hash password được coi

5 là một phần quan trọng của việc bảo vệ hệ thống Dưới đây là các tác dụng của việc hash password:

- Bảo vệ hệ thống: khi mật khẩu được lưu trữ dưới dạng chuỗi hash, ngay cả khi bị đánh cắp thì mật khẩu gốc cũng không dễ dàng bị lộ ra ngoài

- Khi hash password các mật khẩu gốc giống nhau thì chuỗi hash được tạo sẽ khác nhau

- Bảo vệ quyền riêng tư của người dùng: việc hash password giúp ngăn ngừa việc xâm nhập và đánh cắp trái phép tài khoản người dùng

- Tuân thủ quy định bảo mật

THIẾT KẾ GIAO DIỆN

GIAO DIỆN GIỚI THIỆU CHUNG

4.5 Giao diện chi tiết kiến thức

4.8 Giao diện chi tiết sản phẩm

4.11 Giao diện xem lịch sử mua hàng 4.12 Giao diện quản lí sản phẩm

4.13 Giao diện quản lí tin tức

4.14 Giao diện quản lí đơn hàng

4.15 Giao diện chức năng thanh toán vnpay Chương 5 Kết luận

MỤC LỤC LỜI CẢM ƠN I ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP II MỤC LỤC V DANH MỤC HÌNH VIII DANH MỤC BẢNG X CÁC TỪ VIẾT TẮT XII

1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1

1.2 MỤC TIÊU CỦA ĐỀ TÀI 1

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2

1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN 2

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3

2.1.1 Giới thiệu về ASP.NET Core 3

2.3.3 Ngăn chặn tấn công chuyển hướng mở 7

CHƯƠNG 3 THIẾT KẾ PHẨN MỀM 11 vi

3.1.2 Xác định yêu cầu 13

3.2 MÔ HÌNH HÓA YÊU CẦU 15

3.2.2 Use case quản lí giỏ hàng 17

3.2.4 Use case xem lịch sử mua hàng 19

3.2.5 Use case quản lí tài khoản 20

3.2.6 Use case quản lí danh mục 21

3.2.7 Use case quản lí tin tức 22

3.2.8 Use case quản lí sản phẩm 23

3.2.9 Use case quản lí đơn hàng 24

3.2.10 Use case quản lí đánh giá 25

3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) 26

3.3.1 Lưu đồ thuật toán đăng kí 26

3.3.2 Lưu đồ thuật toán đăng nhập 27

3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28

3.3.4 Lưu đồ thuật toán mua hàng 29

3.3.5 Lưu đồ thuật toán hủy đơn 30

3.3.6 Lưu đồ thuật toán đánh giá sản phẩm 31

3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32

3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU 33

CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 42

4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP 43 vii

4.3 GIAO DIỆN GIỚI THIỆU CHUNG 44

4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC 46

4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM 49

4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG 52

4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM 53

4.13 GIAO DIỆN QUẢN LÍ TIN TỨC 53

4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG 54

4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY 54

TÀI LIỆU THAM KHẢO 56 viii

Hình 2 2: Các lựa chọn tăng cường độ mạnh mật khẩu 5

Hình 2 3: Cách sử dụng form trong FormTagHelper 6

Hình 2 4: Cách sử dụng phương thức Html.BeginForm 6

Hình 2 5: Cách thêm @Html.AntiForgeryToken() 6

Hình 2 10: Cách mã hóa trong Razor 9

Hình 2 11: Gọi phương thức mã hóa trong controller 9

Hình 2 12: Ví dụ mã hóa trong controller 9

Hình 2 13: Truy vấn sql ban đầu 10

Hình 2 14: Truy vấn sql sau khi bị tấn công 10

Hình 3 1: Giao diện website Locat 12

Hình 3 2: Giao diện website cây xinh 12

Hình 3 4: Use case tổng quát 15

Hình 3 5: Use case quản lí giỏ hàng 17

Hình 3 6: Use case đặt hàng 18

Hình 3 7: Use case xem lịch sử mua hàng 19

Hình 3 8: Use case quản lí tài khoản 20

Hình 3 9: Use case quản lí danh mục 21

Hình 3 10: Use case quản lí tin tức 22

Hình 3 11: Use case quản lí sản phẩm 23

Hình 3 12: Use case quản lí đơn hàng 24

Hình 3 13: Use case quản lí đánh giá 25

Hình 3 14: Lưu đồ thuật toán đăng kí 26

Hình 3 15: Lưu đồ thuật toán đăng nhập 27 ix

Hình 3 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28

Hình 3 17: Lưu đồ thuật toán mua hàng 29

Hình 3 18: Lưu đồ thuật toán hủy đơn hàng 30

Hình 3 19: Lưu đồ thuật toán đánh giá sản phẩm 31

Hình 3 20: Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32

Hình 3 21: Cơ sở dữ liệu 33

Hình 4 1: Giao diện trang chủ 42

Hình 4 2: Giao diện đăng kí 43

Hình 4 3: Giao diện đăng nhập 43

Hình 4 4: Giao diện giới thiệu chung 44

Hình 4 5: Giao diện kiến thức 45

Hình 4 6: Giao diện chi tiết kiến thức 46

Hình 4 7: Giao diện liên hệ 47

Hình 4 8: Giao diện sản phẩm 48

Hình 4 9: Giao diện chi tiết sản phẩm 49

Hình 4 10: Giao diện giỏ hàng 50

Hình 4 11: Giao diện mua hàng 51

Hình 4 12: Giao diện xem lịch sử mua hàng 52

Hình 4 13: Giao diện quản lí sản phẩm 53

Hình 4 14: Giao diện quản lí tin tức 53

Hình 4 15: Giao diện quản lí đơn hàng 54

Hình 4 16: Giao diện chức năng thanh toán VnPay 54 x

Bảng 3 1: Mô tả use case tổng quát 15

Bảng 3 2: Mô tả use case quản lí giỏ hàng 17

Bảng 3 3: Mô tả use case đặt hàng 18

Bảng 3 4: Mô tả use case xem lịch sử mua hàng 19

Bảng 3 5: Mô tả use case quản lí tài khoản 20

Bảng 3 6: Mô tả use case quản lí danh mục 21

Bảng 3 7: Mô tả use case quản lí tin tức 22

Bảng 3 8: Mô tả use case quản lí sản phẩm 23

Bảng 3 9: Mô tả use case quản lí đơn hàng 24

Bảng 3 10: Mô tả use case quản lí đánh giá 25

Bảng 3 11: Chi tiết dữ liệu bảng AspNetRoleClaims 33

Bảng 3 12: Chi tiết dữ liệu bảng AspNetRoles 33

Bảng 3 13: Chi tiết dữ liệu bảng AspNetUserClaims 34

Bảng 3 14: Chi tiết dữ liệu bảng AspNetUserLogins 34

Bảng 3 15: Chi tiết dữ liệu bảng AspNetUserRoles 34

Bảng 3 16: Chi tiết dữ liệu bảng AspNetUsers 34

Bảng 3 17: Chi tiết dữ liệu bảng AspNetUserTokens 35

Bảng 3 18: Chi tiết dữ liệu bảng BlogCategories 35

Bảng 3 19: Chi tiết dữ liệu bảng Blogs 36

Bảng 3 20: Chi tiết dữ liệu bảng BlogTranslations 36

Bảng 3 21: Chi tiết dữ liệu bảng Categories 36

Bảng 3 22: Chi tiết dữ liệu bảng CategoryNews 36

Bảng 3 23: Chi tiết dữ liệu bảng CategoryNewTranslations 37

Bảng 3 24: Chi tiết dữ liệu bảng CategoryTranslations 37

Bảng 3 25: Chi tiết dữ liệu bảng Contacts 37

Bảng 3 26: Chi tiết dữ liệu bảng Customers 38

Bảng 3 27: Chi tiết dữ liệu bảng FeebackImages 38

Bảng 3 28: Chi tiết dữ liệu bảng Feedbacks 38 xi

Bảng 3 29: Chi tiết dữ liệu bảng Languages 39

Bảng 3 30: Chi tiết dữ liệu bảng Orders 39

Bảng 3 31: Chi tiết dữ liệu bảng ProductCategories 39

Bảng 3 32: Chi tiết dữ liệu bảng ProductColors 40

Bảng 3 33: Chi tiết dữ liệu bảng ProductImgs 40

Bảng 3 34: Chi tiết dữ liệu bảng ProductOrders 40

Bảng 3 35: Chi tiết dữ liệu bảng Products 41

Bảng 3 36: Chi tiết dữ liệu bảng ProductTranslations 41

Bảng 3 37: Chi tiết dữ liệu bảng ShopFeedbacks 41 xii

RDBMS: Relational Database Management System SQL: Structured Query Language

XSRF/CSRF: Cross-Site Request Forgery

1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Trong những năm gần đây, thế giới nói chung và Việt Nam nói riêng đã phải trải qua thời kì đại dịch của COVID – 19 với vô vàn khó khăn, trắc trở Trong thời gian dịch bệnh, ngành thương mại, dịch vụ truyền thống bị suy giảm đáng kể do ban hành các lệnh phong tỏa Nhưng đây lại là cơ hội mạnh mẽ cho sự phát triển vượt bậc của thương mại điện tử bởi sự tiện lợi mang lại cho người tiêu dùng như mua hàng từ xa, tra cứu, so sánh giá cả Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada…

Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài

“Xây dựng website bán cây sử dụng ASP.NET Core MVC” để người tiêu dùng có thể thuận tiện trao đổi mua bán sản phẩm, đẩy mạnh nên thương mại nước nhà Để thực hiện đề tài này, tôi đã thực hiện việc khảo sát và nghiên cứu hiện trạng các website bán cây hiện nay như “Cây để bàn | cây văn phòng Locat” [1],

“Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam” [2], “9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất” [3]…Nhìn chung các website khá đầy đủ các chức năng tuy nhiên vẫn còn một vài thiếu sót như việc hiển thị đánh giá của sản phẩm, chức năng thanh toán online, cần tối ưu thời gian mua bán cho khách hàng…

1.2 MỤC TIÊU CỦA ĐỀ TÀI

Mục tiêu của đề tài bao gồm:

- Hiểu và có khả năng xây dựng website sử dụng ASP.NET Core MVC kết nối cơ sở dữ liệu SQL – Server và các công nghệ liên quan

- Xây dựng một website bán cây với các tính năng sau: hiển thị tin tức, thông tin sản phẩm, chức năng mua hàng, thanh toán online, quản lí danh sách khách hàng, quản lí danh sách sản phẩm, quản lí danh sách tin tức, quản lí danh sách đơn hàng, quản lí danh sách đánh giá, đa ngôn ngữ

- Tìm hiểu và ngăn chặn các lỗ hổng trong xây dựng website

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng của nghiên cứu của đề tài:

- Người dùng cuối: Nghiên cứu trải nghiệm mua sắm trực bao gồm cả việc tìm kiếm, xem sản phẩm, thêm vào giỏ hàng, thanh toán và quản lý đơn hàng

- Quản trị viên: Nghiên cứu về cách quản lý sản phẩm, đơn hàng, khách hàng…từ giao diện quản trị

Phạm vi nghiên cứu của đề tài:

- ASP.NET Core MVC 5.0 là nền tảng xây dựng website lớn của Microsoft

- SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Microsoft

- Ngôn ngữ lập trình C#, Javascript

- Các framework hỗ trợ: Entity Framework, Identity Framework…

- Chưa xác thực email, số điện thoại

- Chưa liên kết với đơn vị vận chuyển để tính phí vận chuyển, giúp khách hàng xem chi tiết vị trí đơn hàng

- Chưa cho khách hàng gửi video đánh giá sản phẩm

1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN Đề tài đề cao khả năng lập trình thông qua việc học hỏi, tiếp thu công nghệ kỹ thuật để xây dựng website thương mại, hiểu và nắm rõ các tính năng cần có trong một website

Bên cạnh ý nghĩa khoa học, đề tài mong muốn mang đến một môi trường công bằng, cạnh tranh và an toàn cho người tiêu dùng Người mua có thể tìm được sản phẩm mình cần và mua với giá có thể trải qua chọn lọc, người bán có thể giới thiệu sản phẩm tới nhiều người hơn Qua đó, thúc đẩy sự phát triển của thương mại điện tử nước ta

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT

2.1.1 Giới thiệu về ASP.NET Core

ASP.NET Core là một framework mã nguồn mở , đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet hiện đại, hỗ trợ đám mây ASP.NET Core là một thiết kế lại của ASP.NET 4.x, bao gồm những thay đổi về kiến trúc dẫn đến một khung mô-đun gọn gàng hơn, nhiều mô-đun hơn.[4]

ASP.NET Core MVC là một framework phong phú để xây dựng các ứng dụng web và API bằng cách sử dụng mẫu thiết kế Model-View-Controller.[5]

Mẫu kiến trúc MVC tách ứng dụng thành ba nhóm thành phần chính:

- Model: Đại diện cho dữ liệu và logic xử lý dữ liệu Model thường bao gồm các lớp đối tượng (object classes) để biểu diễn dữ liệu và các logic xử lý dữ liệu như truy xuất cơ sở dữ liệu

- View: Đại diện cho giao diện người dùng View là nơi hiển thị dữ liệu cho người dùng và tương tác với họ thông qua các trình duyệt web

- Controller: Đại diện cho bộ điều khiển của ứng dụng Controller xử lý các yêu cầu từ người dùng, nếu cần tương tác với Model để lấy dữ liệu thì chuyển dữ liệu đó đến View để hiển thị cho người dùng còn không thì chuyển trực tiếp tới View để hiển thị cho người dùng

Mô hình MVC trong ASP.NET Core giúp tách biệt giao diện, logic xử lý dữ liệu, quy trình điều khiển, giúp cho việc phát triển và bảo trì trở nên dễ dàng hơn Đồng thời cũng tạo điều kiện cho việc tái sử dụng code và phân chia rõ ràng công việc cho FrontEnd Developer và BackEnd Developer

Microsoft SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) Các ứng dụng và công cụ kết nối với phiên bản hoặc cơ sở dữ liệu SQL Server và giao tiếp bằng Transact-SQL (T-SQL).[6]

Các thành phần và công nghệ của SQL Server bao gồm:

- Database Engine: cơ sở dữ liệu là dịch vụ cốt lõi để lưu trữ, xử lý và bảo mật dữ liệu

- Machine Learning Services: hỗ trợ tích hợp học máy

- Integration Services: là nền tảng giúp xây dựng các giải pháp tích hợp dữ liệu hiệu suất cao, bao gồm các gói cung cấp khả năng xử lý trích xuất, chuyển đổi và tải (ETL) cho kho dữ liệu

- Analysis Services: là nền tảng dữ liệu phân tích

- Reporting Services: cung cấp chức năng báo cáo

- Replication: là tập hợp các công nghệ nhằm sao chép và phân phối dữ liệu sau đó đồng bộ hóa để duy trì tính nhất quán

- Data Quality Services: cung cấp các giải pháp làm sạch dữ liệu

- Master Data Services: là giải pháp SQL Server để quản lý dữ liệu chính

Hass Password là kĩ thuật biến đổi mật khẩu thành một chuỗi dữ liệu khác giúp ngăn chặn việc kẻ tấn công dễ dàng đánh cắp Việc hash password được coi

5 là một phần quan trọng của việc bảo vệ hệ thống Dưới đây là các tác dụng của việc hash password:

- Bảo vệ hệ thống: khi mật khẩu được lưu trữ dưới dạng chuỗi hash, ngay cả khi bị đánh cắp thì mật khẩu gốc cũng không dễ dàng bị lộ ra ngoài

- Khi hash password các mật khẩu gốc giống nhau thì chuỗi hash được tạo sẽ khác nhau

- Bảo vệ quyền riêng tư của người dùng: việc hash password giúp ngăn ngừa việc xâm nhập và đánh cắp trái phép tài khoản người dùng

- Tuân thủ quy định bảo mật

GIAO DIỆN SẢN PHẨM

4.8 Giao diện chi tiết sản phẩm

4.11 Giao diện xem lịch sử mua hàng 4.12 Giao diện quản lí sản phẩm

4.13 Giao diện quản lí tin tức

4.14 Giao diện quản lí đơn hàng

4.15 Giao diện chức năng thanh toán vnpay Chương 5 Kết luận

MỤC LỤC LỜI CẢM ƠN I ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP II MỤC LỤC V DANH MỤC HÌNH VIII DANH MỤC BẢNG X CÁC TỪ VIẾT TẮT XII

1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1

1.2 MỤC TIÊU CỦA ĐỀ TÀI 1

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2

1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN 2

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3

2.1.1 Giới thiệu về ASP.NET Core 3

2.3.3 Ngăn chặn tấn công chuyển hướng mở 7

CHƯƠNG 3 THIẾT KẾ PHẨN MỀM 11 vi

3.1.2 Xác định yêu cầu 13

3.2 MÔ HÌNH HÓA YÊU CẦU 15

3.2.2 Use case quản lí giỏ hàng 17

3.2.4 Use case xem lịch sử mua hàng 19

3.2.5 Use case quản lí tài khoản 20

3.2.6 Use case quản lí danh mục 21

3.2.7 Use case quản lí tin tức 22

3.2.8 Use case quản lí sản phẩm 23

3.2.9 Use case quản lí đơn hàng 24

3.2.10 Use case quản lí đánh giá 25

3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) 26

3.3.1 Lưu đồ thuật toán đăng kí 26

3.3.2 Lưu đồ thuật toán đăng nhập 27

3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28

3.3.4 Lưu đồ thuật toán mua hàng 29

3.3.5 Lưu đồ thuật toán hủy đơn 30

3.3.6 Lưu đồ thuật toán đánh giá sản phẩm 31

3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32

3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU 33

CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 42

4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP 43 vii

4.3 GIAO DIỆN GIỚI THIỆU CHUNG 44

4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC 46

4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM 49

4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG 52

4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM 53

4.13 GIAO DIỆN QUẢN LÍ TIN TỨC 53

4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG 54

4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY 54

TÀI LIỆU THAM KHẢO 56 viii

Hình 2 2: Các lựa chọn tăng cường độ mạnh mật khẩu 5

Hình 2 3: Cách sử dụng form trong FormTagHelper 6

Hình 2 4: Cách sử dụng phương thức Html.BeginForm 6

Hình 2 5: Cách thêm @Html.AntiForgeryToken() 6

Hình 2 10: Cách mã hóa trong Razor 9

Hình 2 11: Gọi phương thức mã hóa trong controller 9

Hình 2 12: Ví dụ mã hóa trong controller 9

Hình 2 13: Truy vấn sql ban đầu 10

Hình 2 14: Truy vấn sql sau khi bị tấn công 10

Hình 3 1: Giao diện website Locat 12

Hình 3 2: Giao diện website cây xinh 12

Hình 3 4: Use case tổng quát 15

Hình 3 5: Use case quản lí giỏ hàng 17

Hình 3 6: Use case đặt hàng 18

Hình 3 7: Use case xem lịch sử mua hàng 19

Hình 3 8: Use case quản lí tài khoản 20

Hình 3 9: Use case quản lí danh mục 21

Hình 3 10: Use case quản lí tin tức 22

Hình 3 11: Use case quản lí sản phẩm 23

Hình 3 12: Use case quản lí đơn hàng 24

Hình 3 13: Use case quản lí đánh giá 25

Hình 3 14: Lưu đồ thuật toán đăng kí 26

Hình 3 15: Lưu đồ thuật toán đăng nhập 27 ix

Hình 3 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28

Hình 3 17: Lưu đồ thuật toán mua hàng 29

Hình 3 18: Lưu đồ thuật toán hủy đơn hàng 30

Hình 3 19: Lưu đồ thuật toán đánh giá sản phẩm 31

Hình 3 20: Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32

Hình 3 21: Cơ sở dữ liệu 33

Hình 4 1: Giao diện trang chủ 42

Hình 4 2: Giao diện đăng kí 43

Hình 4 3: Giao diện đăng nhập 43

Hình 4 4: Giao diện giới thiệu chung 44

Hình 4 5: Giao diện kiến thức 45

Hình 4 6: Giao diện chi tiết kiến thức 46

Hình 4 7: Giao diện liên hệ 47

Hình 4 8: Giao diện sản phẩm 48

Hình 4 9: Giao diện chi tiết sản phẩm 49

Hình 4 10: Giao diện giỏ hàng 50

Hình 4 11: Giao diện mua hàng 51

Hình 4 12: Giao diện xem lịch sử mua hàng 52

Hình 4 13: Giao diện quản lí sản phẩm 53

Hình 4 14: Giao diện quản lí tin tức 53

Hình 4 15: Giao diện quản lí đơn hàng 54

Hình 4 16: Giao diện chức năng thanh toán VnPay 54 x

Bảng 3 1: Mô tả use case tổng quát 15

Bảng 3 2: Mô tả use case quản lí giỏ hàng 17

Bảng 3 3: Mô tả use case đặt hàng 18

Bảng 3 4: Mô tả use case xem lịch sử mua hàng 19

Bảng 3 5: Mô tả use case quản lí tài khoản 20

Bảng 3 6: Mô tả use case quản lí danh mục 21

Bảng 3 7: Mô tả use case quản lí tin tức 22

Bảng 3 8: Mô tả use case quản lí sản phẩm 23

Bảng 3 9: Mô tả use case quản lí đơn hàng 24

Bảng 3 10: Mô tả use case quản lí đánh giá 25

Bảng 3 11: Chi tiết dữ liệu bảng AspNetRoleClaims 33

Bảng 3 12: Chi tiết dữ liệu bảng AspNetRoles 33

Bảng 3 13: Chi tiết dữ liệu bảng AspNetUserClaims 34

Bảng 3 14: Chi tiết dữ liệu bảng AspNetUserLogins 34

Bảng 3 15: Chi tiết dữ liệu bảng AspNetUserRoles 34

Bảng 3 16: Chi tiết dữ liệu bảng AspNetUsers 34

Bảng 3 17: Chi tiết dữ liệu bảng AspNetUserTokens 35

Bảng 3 18: Chi tiết dữ liệu bảng BlogCategories 35

Bảng 3 19: Chi tiết dữ liệu bảng Blogs 36

Bảng 3 20: Chi tiết dữ liệu bảng BlogTranslations 36

Bảng 3 21: Chi tiết dữ liệu bảng Categories 36

Bảng 3 22: Chi tiết dữ liệu bảng CategoryNews 36

Bảng 3 23: Chi tiết dữ liệu bảng CategoryNewTranslations 37

Bảng 3 24: Chi tiết dữ liệu bảng CategoryTranslations 37

Bảng 3 25: Chi tiết dữ liệu bảng Contacts 37

Bảng 3 26: Chi tiết dữ liệu bảng Customers 38

Bảng 3 27: Chi tiết dữ liệu bảng FeebackImages 38

Bảng 3 28: Chi tiết dữ liệu bảng Feedbacks 38 xi

Bảng 3 29: Chi tiết dữ liệu bảng Languages 39

Bảng 3 30: Chi tiết dữ liệu bảng Orders 39

Bảng 3 31: Chi tiết dữ liệu bảng ProductCategories 39

Bảng 3 32: Chi tiết dữ liệu bảng ProductColors 40

Bảng 3 33: Chi tiết dữ liệu bảng ProductImgs 40

Bảng 3 34: Chi tiết dữ liệu bảng ProductOrders 40

Bảng 3 35: Chi tiết dữ liệu bảng Products 41

Bảng 3 36: Chi tiết dữ liệu bảng ProductTranslations 41

Bảng 3 37: Chi tiết dữ liệu bảng ShopFeedbacks 41 xii

RDBMS: Relational Database Management System SQL: Structured Query Language

XSRF/CSRF: Cross-Site Request Forgery

1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Trong những năm gần đây, thế giới nói chung và Việt Nam nói riêng đã phải trải qua thời kì đại dịch của COVID – 19 với vô vàn khó khăn, trắc trở Trong thời gian dịch bệnh, ngành thương mại, dịch vụ truyền thống bị suy giảm đáng kể do ban hành các lệnh phong tỏa Nhưng đây lại là cơ hội mạnh mẽ cho sự phát triển vượt bậc của thương mại điện tử bởi sự tiện lợi mang lại cho người tiêu dùng như mua hàng từ xa, tra cứu, so sánh giá cả Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada…

Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài

“Xây dựng website bán cây sử dụng ASP.NET Core MVC” để người tiêu dùng có thể thuận tiện trao đổi mua bán sản phẩm, đẩy mạnh nên thương mại nước nhà Để thực hiện đề tài này, tôi đã thực hiện việc khảo sát và nghiên cứu hiện trạng các website bán cây hiện nay như “Cây để bàn | cây văn phòng Locat” [1],

“Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam” [2], “9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất” [3]…Nhìn chung các website khá đầy đủ các chức năng tuy nhiên vẫn còn một vài thiếu sót như việc hiển thị đánh giá của sản phẩm, chức năng thanh toán online, cần tối ưu thời gian mua bán cho khách hàng…

1.2 MỤC TIÊU CỦA ĐỀ TÀI

Mục tiêu của đề tài bao gồm:

- Hiểu và có khả năng xây dựng website sử dụng ASP.NET Core MVC kết nối cơ sở dữ liệu SQL – Server và các công nghệ liên quan

- Xây dựng một website bán cây với các tính năng sau: hiển thị tin tức, thông tin sản phẩm, chức năng mua hàng, thanh toán online, quản lí danh sách khách hàng, quản lí danh sách sản phẩm, quản lí danh sách tin tức, quản lí danh sách đơn hàng, quản lí danh sách đánh giá, đa ngôn ngữ

- Tìm hiểu và ngăn chặn các lỗ hổng trong xây dựng website

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng của nghiên cứu của đề tài:

- Người dùng cuối: Nghiên cứu trải nghiệm mua sắm trực bao gồm cả việc tìm kiếm, xem sản phẩm, thêm vào giỏ hàng, thanh toán và quản lý đơn hàng

- Quản trị viên: Nghiên cứu về cách quản lý sản phẩm, đơn hàng, khách hàng…từ giao diện quản trị

Phạm vi nghiên cứu của đề tài:

- ASP.NET Core MVC 5.0 là nền tảng xây dựng website lớn của Microsoft

- SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Microsoft

- Ngôn ngữ lập trình C#, Javascript

- Các framework hỗ trợ: Entity Framework, Identity Framework…

- Chưa xác thực email, số điện thoại

- Chưa liên kết với đơn vị vận chuyển để tính phí vận chuyển, giúp khách hàng xem chi tiết vị trí đơn hàng

- Chưa cho khách hàng gửi video đánh giá sản phẩm

1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN Đề tài đề cao khả năng lập trình thông qua việc học hỏi, tiếp thu công nghệ kỹ thuật để xây dựng website thương mại, hiểu và nắm rõ các tính năng cần có trong một website

Bên cạnh ý nghĩa khoa học, đề tài mong muốn mang đến một môi trường công bằng, cạnh tranh và an toàn cho người tiêu dùng Người mua có thể tìm được sản phẩm mình cần và mua với giá có thể trải qua chọn lọc, người bán có thể giới thiệu sản phẩm tới nhiều người hơn Qua đó, thúc đẩy sự phát triển của thương mại điện tử nước ta

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT

2.1.1 Giới thiệu về ASP.NET Core

ASP.NET Core là một framework mã nguồn mở , đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet hiện đại, hỗ trợ đám mây ASP.NET Core là một thiết kế lại của ASP.NET 4.x, bao gồm những thay đổi về kiến trúc dẫn đến một khung mô-đun gọn gàng hơn, nhiều mô-đun hơn.[4]

ASP.NET Core MVC là một framework phong phú để xây dựng các ứng dụng web và API bằng cách sử dụng mẫu thiết kế Model-View-Controller.[5]

Mẫu kiến trúc MVC tách ứng dụng thành ba nhóm thành phần chính:

- Model: Đại diện cho dữ liệu và logic xử lý dữ liệu Model thường bao gồm các lớp đối tượng (object classes) để biểu diễn dữ liệu và các logic xử lý dữ liệu như truy xuất cơ sở dữ liệu

- View: Đại diện cho giao diện người dùng View là nơi hiển thị dữ liệu cho người dùng và tương tác với họ thông qua các trình duyệt web

- Controller: Đại diện cho bộ điều khiển của ứng dụng Controller xử lý các yêu cầu từ người dùng, nếu cần tương tác với Model để lấy dữ liệu thì chuyển dữ liệu đó đến View để hiển thị cho người dùng còn không thì chuyển trực tiếp tới View để hiển thị cho người dùng

Mô hình MVC trong ASP.NET Core giúp tách biệt giao diện, logic xử lý dữ liệu, quy trình điều khiển, giúp cho việc phát triển và bảo trì trở nên dễ dàng hơn Đồng thời cũng tạo điều kiện cho việc tái sử dụng code và phân chia rõ ràng công việc cho FrontEnd Developer và BackEnd Developer

Microsoft SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) Các ứng dụng và công cụ kết nối với phiên bản hoặc cơ sở dữ liệu SQL Server và giao tiếp bằng Transact-SQL (T-SQL).[6]

Các thành phần và công nghệ của SQL Server bao gồm:

- Database Engine: cơ sở dữ liệu là dịch vụ cốt lõi để lưu trữ, xử lý và bảo mật dữ liệu

- Machine Learning Services: hỗ trợ tích hợp học máy

- Integration Services: là nền tảng giúp xây dựng các giải pháp tích hợp dữ liệu hiệu suất cao, bao gồm các gói cung cấp khả năng xử lý trích xuất, chuyển đổi và tải (ETL) cho kho dữ liệu

- Analysis Services: là nền tảng dữ liệu phân tích

- Reporting Services: cung cấp chức năng báo cáo

- Replication: là tập hợp các công nghệ nhằm sao chép và phân phối dữ liệu sau đó đồng bộ hóa để duy trì tính nhất quán

- Data Quality Services: cung cấp các giải pháp làm sạch dữ liệu

- Master Data Services: là giải pháp SQL Server để quản lý dữ liệu chính

Hass Password là kĩ thuật biến đổi mật khẩu thành một chuỗi dữ liệu khác giúp ngăn chặn việc kẻ tấn công dễ dàng đánh cắp Việc hash password được coi

5 là một phần quan trọng của việc bảo vệ hệ thống Dưới đây là các tác dụng của việc hash password:

- Bảo vệ hệ thống: khi mật khẩu được lưu trữ dưới dạng chuỗi hash, ngay cả khi bị đánh cắp thì mật khẩu gốc cũng không dễ dàng bị lộ ra ngoài

- Khi hash password các mật khẩu gốc giống nhau thì chuỗi hash được tạo sẽ khác nhau

- Bảo vệ quyền riêng tư của người dùng: việc hash password giúp ngăn ngừa việc xâm nhập và đánh cắp trái phép tài khoản người dùng

- Tuân thủ quy định bảo mật

GIAO DIỆN MUA HÀNG

4.11 Giao diện xem lịch sử mua hàng 4.12 Giao diện quản lí sản phẩm

4.13 Giao diện quản lí tin tức

4.14 Giao diện quản lí đơn hàng

4.15 Giao diện chức năng thanh toán vnpay Chương 5 Kết luận

MỤC LỤC LỜI CẢM ƠN I ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP II MỤC LỤC V DANH MỤC HÌNH VIII DANH MỤC BẢNG X CÁC TỪ VIẾT TẮT XII

1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1

1.2 MỤC TIÊU CỦA ĐỀ TÀI 1

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2

1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN 2

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3

2.1.1 Giới thiệu về ASP.NET Core 3

2.3.3 Ngăn chặn tấn công chuyển hướng mở 7

CHƯƠNG 3 THIẾT KẾ PHẨN MỀM 11 vi

3.1.2 Xác định yêu cầu 13

3.2 MÔ HÌNH HÓA YÊU CẦU 15

3.2.2 Use case quản lí giỏ hàng 17

3.2.4 Use case xem lịch sử mua hàng 19

3.2.5 Use case quản lí tài khoản 20

3.2.6 Use case quản lí danh mục 21

3.2.7 Use case quản lí tin tức 22

3.2.8 Use case quản lí sản phẩm 23

3.2.9 Use case quản lí đơn hàng 24

3.2.10 Use case quản lí đánh giá 25

3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) 26

3.3.1 Lưu đồ thuật toán đăng kí 26

3.3.2 Lưu đồ thuật toán đăng nhập 27

3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28

3.3.4 Lưu đồ thuật toán mua hàng 29

3.3.5 Lưu đồ thuật toán hủy đơn 30

3.3.6 Lưu đồ thuật toán đánh giá sản phẩm 31

3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32

3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU 33

CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 42

4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP 43 vii

4.3 GIAO DIỆN GIỚI THIỆU CHUNG 44

4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC 46

4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM 49

4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG 52

4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM 53

4.13 GIAO DIỆN QUẢN LÍ TIN TỨC 53

4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG 54

4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY 54

TÀI LIỆU THAM KHẢO 56 viii

Hình 2 2: Các lựa chọn tăng cường độ mạnh mật khẩu 5

Hình 2 3: Cách sử dụng form trong FormTagHelper 6

Hình 2 4: Cách sử dụng phương thức Html.BeginForm 6

Hình 2 5: Cách thêm @Html.AntiForgeryToken() 6

Hình 2 10: Cách mã hóa trong Razor 9

Hình 2 11: Gọi phương thức mã hóa trong controller 9

Hình 2 12: Ví dụ mã hóa trong controller 9

Hình 2 13: Truy vấn sql ban đầu 10

Hình 2 14: Truy vấn sql sau khi bị tấn công 10

Hình 3 1: Giao diện website Locat 12

Hình 3 2: Giao diện website cây xinh 12

Hình 3 4: Use case tổng quát 15

Hình 3 5: Use case quản lí giỏ hàng 17

Hình 3 6: Use case đặt hàng 18

Hình 3 7: Use case xem lịch sử mua hàng 19

Hình 3 8: Use case quản lí tài khoản 20

Hình 3 9: Use case quản lí danh mục 21

Hình 3 10: Use case quản lí tin tức 22

Hình 3 11: Use case quản lí sản phẩm 23

Hình 3 12: Use case quản lí đơn hàng 24

Hình 3 13: Use case quản lí đánh giá 25

Hình 3 14: Lưu đồ thuật toán đăng kí 26

Hình 3 15: Lưu đồ thuật toán đăng nhập 27 ix

Hình 3 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28

Hình 3 17: Lưu đồ thuật toán mua hàng 29

Hình 3 18: Lưu đồ thuật toán hủy đơn hàng 30

Hình 3 19: Lưu đồ thuật toán đánh giá sản phẩm 31

Hình 3 20: Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32

Hình 3 21: Cơ sở dữ liệu 33

Hình 4 1: Giao diện trang chủ 42

Hình 4 2: Giao diện đăng kí 43

Hình 4 3: Giao diện đăng nhập 43

Hình 4 4: Giao diện giới thiệu chung 44

Hình 4 5: Giao diện kiến thức 45

Hình 4 6: Giao diện chi tiết kiến thức 46

Hình 4 7: Giao diện liên hệ 47

Hình 4 8: Giao diện sản phẩm 48

Hình 4 9: Giao diện chi tiết sản phẩm 49

Hình 4 10: Giao diện giỏ hàng 50

Hình 4 11: Giao diện mua hàng 51

Hình 4 12: Giao diện xem lịch sử mua hàng 52

Hình 4 13: Giao diện quản lí sản phẩm 53

Hình 4 14: Giao diện quản lí tin tức 53

Hình 4 15: Giao diện quản lí đơn hàng 54

Hình 4 16: Giao diện chức năng thanh toán VnPay 54 x

Bảng 3 1: Mô tả use case tổng quát 15

Bảng 3 2: Mô tả use case quản lí giỏ hàng 17

Bảng 3 3: Mô tả use case đặt hàng 18

Bảng 3 4: Mô tả use case xem lịch sử mua hàng 19

Bảng 3 5: Mô tả use case quản lí tài khoản 20

Bảng 3 6: Mô tả use case quản lí danh mục 21

Bảng 3 7: Mô tả use case quản lí tin tức 22

Bảng 3 8: Mô tả use case quản lí sản phẩm 23

Bảng 3 9: Mô tả use case quản lí đơn hàng 24

Bảng 3 10: Mô tả use case quản lí đánh giá 25

Bảng 3 11: Chi tiết dữ liệu bảng AspNetRoleClaims 33

Bảng 3 12: Chi tiết dữ liệu bảng AspNetRoles 33

Bảng 3 13: Chi tiết dữ liệu bảng AspNetUserClaims 34

Bảng 3 14: Chi tiết dữ liệu bảng AspNetUserLogins 34

Bảng 3 15: Chi tiết dữ liệu bảng AspNetUserRoles 34

Bảng 3 16: Chi tiết dữ liệu bảng AspNetUsers 34

Bảng 3 17: Chi tiết dữ liệu bảng AspNetUserTokens 35

Bảng 3 18: Chi tiết dữ liệu bảng BlogCategories 35

Bảng 3 19: Chi tiết dữ liệu bảng Blogs 36

Bảng 3 20: Chi tiết dữ liệu bảng BlogTranslations 36

Bảng 3 21: Chi tiết dữ liệu bảng Categories 36

Bảng 3 22: Chi tiết dữ liệu bảng CategoryNews 36

Bảng 3 23: Chi tiết dữ liệu bảng CategoryNewTranslations 37

Bảng 3 24: Chi tiết dữ liệu bảng CategoryTranslations 37

Bảng 3 25: Chi tiết dữ liệu bảng Contacts 37

Bảng 3 26: Chi tiết dữ liệu bảng Customers 38

Bảng 3 27: Chi tiết dữ liệu bảng FeebackImages 38

Bảng 3 28: Chi tiết dữ liệu bảng Feedbacks 38 xi

Bảng 3 29: Chi tiết dữ liệu bảng Languages 39

Bảng 3 30: Chi tiết dữ liệu bảng Orders 39

Bảng 3 31: Chi tiết dữ liệu bảng ProductCategories 39

Bảng 3 32: Chi tiết dữ liệu bảng ProductColors 40

Bảng 3 33: Chi tiết dữ liệu bảng ProductImgs 40

Bảng 3 34: Chi tiết dữ liệu bảng ProductOrders 40

Bảng 3 35: Chi tiết dữ liệu bảng Products 41

Bảng 3 36: Chi tiết dữ liệu bảng ProductTranslations 41

Bảng 3 37: Chi tiết dữ liệu bảng ShopFeedbacks 41 xii

RDBMS: Relational Database Management System SQL: Structured Query Language

XSRF/CSRF: Cross-Site Request Forgery

1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Trong những năm gần đây, thế giới nói chung và Việt Nam nói riêng đã phải trải qua thời kì đại dịch của COVID – 19 với vô vàn khó khăn, trắc trở Trong thời gian dịch bệnh, ngành thương mại, dịch vụ truyền thống bị suy giảm đáng kể do ban hành các lệnh phong tỏa Nhưng đây lại là cơ hội mạnh mẽ cho sự phát triển vượt bậc của thương mại điện tử bởi sự tiện lợi mang lại cho người tiêu dùng như mua hàng từ xa, tra cứu, so sánh giá cả Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada…

Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài

“Xây dựng website bán cây sử dụng ASP.NET Core MVC” để người tiêu dùng có thể thuận tiện trao đổi mua bán sản phẩm, đẩy mạnh nên thương mại nước nhà Để thực hiện đề tài này, tôi đã thực hiện việc khảo sát và nghiên cứu hiện trạng các website bán cây hiện nay như “Cây để bàn | cây văn phòng Locat” [1],

“Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam” [2], “9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất” [3]…Nhìn chung các website khá đầy đủ các chức năng tuy nhiên vẫn còn một vài thiếu sót như việc hiển thị đánh giá của sản phẩm, chức năng thanh toán online, cần tối ưu thời gian mua bán cho khách hàng…

1.2 MỤC TIÊU CỦA ĐỀ TÀI

Mục tiêu của đề tài bao gồm:

- Hiểu và có khả năng xây dựng website sử dụng ASP.NET Core MVC kết nối cơ sở dữ liệu SQL – Server và các công nghệ liên quan

- Xây dựng một website bán cây với các tính năng sau: hiển thị tin tức, thông tin sản phẩm, chức năng mua hàng, thanh toán online, quản lí danh sách khách hàng, quản lí danh sách sản phẩm, quản lí danh sách tin tức, quản lí danh sách đơn hàng, quản lí danh sách đánh giá, đa ngôn ngữ

- Tìm hiểu và ngăn chặn các lỗ hổng trong xây dựng website

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng của nghiên cứu của đề tài:

- Người dùng cuối: Nghiên cứu trải nghiệm mua sắm trực bao gồm cả việc tìm kiếm, xem sản phẩm, thêm vào giỏ hàng, thanh toán và quản lý đơn hàng

- Quản trị viên: Nghiên cứu về cách quản lý sản phẩm, đơn hàng, khách hàng…từ giao diện quản trị

Phạm vi nghiên cứu của đề tài:

- ASP.NET Core MVC 5.0 là nền tảng xây dựng website lớn của Microsoft

- SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Microsoft

- Ngôn ngữ lập trình C#, Javascript

- Các framework hỗ trợ: Entity Framework, Identity Framework…

- Chưa xác thực email, số điện thoại

- Chưa liên kết với đơn vị vận chuyển để tính phí vận chuyển, giúp khách hàng xem chi tiết vị trí đơn hàng

- Chưa cho khách hàng gửi video đánh giá sản phẩm

1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN Đề tài đề cao khả năng lập trình thông qua việc học hỏi, tiếp thu công nghệ kỹ thuật để xây dựng website thương mại, hiểu và nắm rõ các tính năng cần có trong một website

Bên cạnh ý nghĩa khoa học, đề tài mong muốn mang đến một môi trường công bằng, cạnh tranh và an toàn cho người tiêu dùng Người mua có thể tìm được sản phẩm mình cần và mua với giá có thể trải qua chọn lọc, người bán có thể giới thiệu sản phẩm tới nhiều người hơn Qua đó, thúc đẩy sự phát triển của thương mại điện tử nước ta

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT

2.1.1 Giới thiệu về ASP.NET Core

ASP.NET Core là một framework mã nguồn mở , đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet hiện đại, hỗ trợ đám mây ASP.NET Core là một thiết kế lại của ASP.NET 4.x, bao gồm những thay đổi về kiến trúc dẫn đến một khung mô-đun gọn gàng hơn, nhiều mô-đun hơn.[4]

ASP.NET Core MVC là một framework phong phú để xây dựng các ứng dụng web và API bằng cách sử dụng mẫu thiết kế Model-View-Controller.[5]

Mẫu kiến trúc MVC tách ứng dụng thành ba nhóm thành phần chính:

- Model: Đại diện cho dữ liệu và logic xử lý dữ liệu Model thường bao gồm các lớp đối tượng (object classes) để biểu diễn dữ liệu và các logic xử lý dữ liệu như truy xuất cơ sở dữ liệu

- View: Đại diện cho giao diện người dùng View là nơi hiển thị dữ liệu cho người dùng và tương tác với họ thông qua các trình duyệt web

- Controller: Đại diện cho bộ điều khiển của ứng dụng Controller xử lý các yêu cầu từ người dùng, nếu cần tương tác với Model để lấy dữ liệu thì chuyển dữ liệu đó đến View để hiển thị cho người dùng còn không thì chuyển trực tiếp tới View để hiển thị cho người dùng

Mô hình MVC trong ASP.NET Core giúp tách biệt giao diện, logic xử lý dữ liệu, quy trình điều khiển, giúp cho việc phát triển và bảo trì trở nên dễ dàng hơn Đồng thời cũng tạo điều kiện cho việc tái sử dụng code và phân chia rõ ràng công việc cho FrontEnd Developer và BackEnd Developer

Microsoft SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) Các ứng dụng và công cụ kết nối với phiên bản hoặc cơ sở dữ liệu SQL Server và giao tiếp bằng Transact-SQL (T-SQL).[6]

Các thành phần và công nghệ của SQL Server bao gồm:

- Database Engine: cơ sở dữ liệu là dịch vụ cốt lõi để lưu trữ, xử lý và bảo mật dữ liệu

- Machine Learning Services: hỗ trợ tích hợp học máy

- Integration Services: là nền tảng giúp xây dựng các giải pháp tích hợp dữ liệu hiệu suất cao, bao gồm các gói cung cấp khả năng xử lý trích xuất, chuyển đổi và tải (ETL) cho kho dữ liệu

- Analysis Services: là nền tảng dữ liệu phân tích

- Reporting Services: cung cấp chức năng báo cáo

- Replication: là tập hợp các công nghệ nhằm sao chép và phân phối dữ liệu sau đó đồng bộ hóa để duy trì tính nhất quán

- Data Quality Services: cung cấp các giải pháp làm sạch dữ liệu

- Master Data Services: là giải pháp SQL Server để quản lý dữ liệu chính

Hass Password là kĩ thuật biến đổi mật khẩu thành một chuỗi dữ liệu khác giúp ngăn chặn việc kẻ tấn công dễ dàng đánh cắp Việc hash password được coi

5 là một phần quan trọng của việc bảo vệ hệ thống Dưới đây là các tác dụng của việc hash password:

- Bảo vệ hệ thống: khi mật khẩu được lưu trữ dưới dạng chuỗi hash, ngay cả khi bị đánh cắp thì mật khẩu gốc cũng không dễ dàng bị lộ ra ngoài

- Khi hash password các mật khẩu gốc giống nhau thì chuỗi hash được tạo sẽ khác nhau

- Bảo vệ quyền riêng tư của người dùng: việc hash password giúp ngăn ngừa việc xâm nhập và đánh cắp trái phép tài khoản người dùng

- Tuân thủ quy định bảo mật

GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY

MỤC LỤC LỜI CẢM ƠN I ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP II MỤC LỤC V DANH MỤC HÌNH VIII DANH MỤC BẢNG X CÁC TỪ VIẾT TẮT XII

1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1

1.2 MỤC TIÊU CỦA ĐỀ TÀI 1

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2

1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN 2

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3

2.1.1 Giới thiệu về ASP.NET Core 3

2.3.3 Ngăn chặn tấn công chuyển hướng mở 7

CHƯƠNG 3 THIẾT KẾ PHẨN MỀM 11 vi

3.1.2 Xác định yêu cầu 13

3.2 MÔ HÌNH HÓA YÊU CẦU 15

3.2.2 Use case quản lí giỏ hàng 17

3.2.4 Use case xem lịch sử mua hàng 19

3.2.5 Use case quản lí tài khoản 20

3.2.6 Use case quản lí danh mục 21

3.2.7 Use case quản lí tin tức 22

3.2.8 Use case quản lí sản phẩm 23

3.2.9 Use case quản lí đơn hàng 24

3.2.10 Use case quản lí đánh giá 25

3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) 26

3.3.1 Lưu đồ thuật toán đăng kí 26

3.3.2 Lưu đồ thuật toán đăng nhập 27

3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28

3.3.4 Lưu đồ thuật toán mua hàng 29

3.3.5 Lưu đồ thuật toán hủy đơn 30

3.3.6 Lưu đồ thuật toán đánh giá sản phẩm 31

3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32

3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU 33

CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 42

4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP 43 vii

4.3 GIAO DIỆN GIỚI THIỆU CHUNG 44

4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC 46

4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM 49

4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG 52

4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM 53

4.13 GIAO DIỆN QUẢN LÍ TIN TỨC 53

4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG 54

4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY 54

TÀI LIỆU THAM KHẢO 56 viii

Hình 2 2: Các lựa chọn tăng cường độ mạnh mật khẩu 5

Hình 2 3: Cách sử dụng form trong FormTagHelper 6

Hình 2 4: Cách sử dụng phương thức Html.BeginForm 6

Hình 2 5: Cách thêm @Html.AntiForgeryToken() 6

Hình 2 10: Cách mã hóa trong Razor 9

Hình 2 11: Gọi phương thức mã hóa trong controller 9

Hình 2 12: Ví dụ mã hóa trong controller 9

Hình 2 13: Truy vấn sql ban đầu 10

Hình 2 14: Truy vấn sql sau khi bị tấn công 10

Hình 3 1: Giao diện website Locat 12

Hình 3 2: Giao diện website cây xinh 12

Hình 3 4: Use case tổng quát 15

Hình 3 5: Use case quản lí giỏ hàng 17

Hình 3 6: Use case đặt hàng 18

Hình 3 7: Use case xem lịch sử mua hàng 19

Hình 3 8: Use case quản lí tài khoản 20

Hình 3 9: Use case quản lí danh mục 21

Hình 3 10: Use case quản lí tin tức 22

Hình 3 11: Use case quản lí sản phẩm 23

Hình 3 12: Use case quản lí đơn hàng 24

Hình 3 13: Use case quản lí đánh giá 25

Hình 3 14: Lưu đồ thuật toán đăng kí 26

Hình 3 15: Lưu đồ thuật toán đăng nhập 27 ix

Hình 3 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28

Hình 3 17: Lưu đồ thuật toán mua hàng 29

Hình 3 18: Lưu đồ thuật toán hủy đơn hàng 30

Hình 3 19: Lưu đồ thuật toán đánh giá sản phẩm 31

Hình 3 20: Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32

Hình 3 21: Cơ sở dữ liệu 33

Hình 4 1: Giao diện trang chủ 42

Hình 4 2: Giao diện đăng kí 43

Hình 4 3: Giao diện đăng nhập 43

Hình 4 4: Giao diện giới thiệu chung 44

Hình 4 5: Giao diện kiến thức 45

Hình 4 6: Giao diện chi tiết kiến thức 46

Hình 4 7: Giao diện liên hệ 47

Hình 4 8: Giao diện sản phẩm 48

Hình 4 9: Giao diện chi tiết sản phẩm 49

Hình 4 10: Giao diện giỏ hàng 50

Hình 4 11: Giao diện mua hàng 51

Hình 4 12: Giao diện xem lịch sử mua hàng 52

Hình 4 13: Giao diện quản lí sản phẩm 53

Hình 4 14: Giao diện quản lí tin tức 53

Hình 4 15: Giao diện quản lí đơn hàng 54

Hình 4 16: Giao diện chức năng thanh toán VnPay 54 x

Bảng 3 1: Mô tả use case tổng quát 15

Bảng 3 2: Mô tả use case quản lí giỏ hàng 17

Bảng 3 3: Mô tả use case đặt hàng 18

Bảng 3 4: Mô tả use case xem lịch sử mua hàng 19

Bảng 3 5: Mô tả use case quản lí tài khoản 20

Bảng 3 6: Mô tả use case quản lí danh mục 21

Bảng 3 7: Mô tả use case quản lí tin tức 22

Bảng 3 8: Mô tả use case quản lí sản phẩm 23

Bảng 3 9: Mô tả use case quản lí đơn hàng 24

Bảng 3 10: Mô tả use case quản lí đánh giá 25

Bảng 3 11: Chi tiết dữ liệu bảng AspNetRoleClaims 33

Bảng 3 12: Chi tiết dữ liệu bảng AspNetRoles 33

Bảng 3 13: Chi tiết dữ liệu bảng AspNetUserClaims 34

Bảng 3 14: Chi tiết dữ liệu bảng AspNetUserLogins 34

Bảng 3 15: Chi tiết dữ liệu bảng AspNetUserRoles 34

Bảng 3 16: Chi tiết dữ liệu bảng AspNetUsers 34

Bảng 3 17: Chi tiết dữ liệu bảng AspNetUserTokens 35

Bảng 3 18: Chi tiết dữ liệu bảng BlogCategories 35

Bảng 3 19: Chi tiết dữ liệu bảng Blogs 36

Bảng 3 20: Chi tiết dữ liệu bảng BlogTranslations 36

Bảng 3 21: Chi tiết dữ liệu bảng Categories 36

Bảng 3 22: Chi tiết dữ liệu bảng CategoryNews 36

Bảng 3 23: Chi tiết dữ liệu bảng CategoryNewTranslations 37

Bảng 3 24: Chi tiết dữ liệu bảng CategoryTranslations 37

Bảng 3 25: Chi tiết dữ liệu bảng Contacts 37

Bảng 3 26: Chi tiết dữ liệu bảng Customers 38

Bảng 3 27: Chi tiết dữ liệu bảng FeebackImages 38

Bảng 3 28: Chi tiết dữ liệu bảng Feedbacks 38 xi

Bảng 3 29: Chi tiết dữ liệu bảng Languages 39

Bảng 3 30: Chi tiết dữ liệu bảng Orders 39

Bảng 3 31: Chi tiết dữ liệu bảng ProductCategories 39

Bảng 3 32: Chi tiết dữ liệu bảng ProductColors 40

Bảng 3 33: Chi tiết dữ liệu bảng ProductImgs 40

Bảng 3 34: Chi tiết dữ liệu bảng ProductOrders 40

Bảng 3 35: Chi tiết dữ liệu bảng Products 41

Bảng 3 36: Chi tiết dữ liệu bảng ProductTranslations 41

Bảng 3 37: Chi tiết dữ liệu bảng ShopFeedbacks 41 xii

RDBMS: Relational Database Management System SQL: Structured Query Language

XSRF/CSRF: Cross-Site Request Forgery

1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Trong những năm gần đây, thế giới nói chung và Việt Nam nói riêng đã phải trải qua thời kì đại dịch của COVID – 19 với vô vàn khó khăn, trắc trở Trong thời gian dịch bệnh, ngành thương mại, dịch vụ truyền thống bị suy giảm đáng kể do ban hành các lệnh phong tỏa Nhưng đây lại là cơ hội mạnh mẽ cho sự phát triển vượt bậc của thương mại điện tử bởi sự tiện lợi mang lại cho người tiêu dùng như mua hàng từ xa, tra cứu, so sánh giá cả Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada…

Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài

“Xây dựng website bán cây sử dụng ASP.NET Core MVC” để người tiêu dùng có thể thuận tiện trao đổi mua bán sản phẩm, đẩy mạnh nên thương mại nước nhà Để thực hiện đề tài này, tôi đã thực hiện việc khảo sát và nghiên cứu hiện trạng các website bán cây hiện nay như “Cây để bàn | cây văn phòng Locat” [1],

“Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam” [2], “9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất” [3]…Nhìn chung các website khá đầy đủ các chức năng tuy nhiên vẫn còn một vài thiếu sót như việc hiển thị đánh giá của sản phẩm, chức năng thanh toán online, cần tối ưu thời gian mua bán cho khách hàng…

1.2 MỤC TIÊU CỦA ĐỀ TÀI

Mục tiêu của đề tài bao gồm:

- Hiểu và có khả năng xây dựng website sử dụng ASP.NET Core MVC kết nối cơ sở dữ liệu SQL – Server và các công nghệ liên quan

- Xây dựng một website bán cây với các tính năng sau: hiển thị tin tức, thông tin sản phẩm, chức năng mua hàng, thanh toán online, quản lí danh sách khách hàng, quản lí danh sách sản phẩm, quản lí danh sách tin tức, quản lí danh sách đơn hàng, quản lí danh sách đánh giá, đa ngôn ngữ

- Tìm hiểu và ngăn chặn các lỗ hổng trong xây dựng website

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng của nghiên cứu của đề tài:

- Người dùng cuối: Nghiên cứu trải nghiệm mua sắm trực bao gồm cả việc tìm kiếm, xem sản phẩm, thêm vào giỏ hàng, thanh toán và quản lý đơn hàng

- Quản trị viên: Nghiên cứu về cách quản lý sản phẩm, đơn hàng, khách hàng…từ giao diện quản trị

Phạm vi nghiên cứu của đề tài:

- ASP.NET Core MVC 5.0 là nền tảng xây dựng website lớn của Microsoft

- SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Microsoft

- Ngôn ngữ lập trình C#, Javascript

- Các framework hỗ trợ: Entity Framework, Identity Framework…

- Chưa xác thực email, số điện thoại

- Chưa liên kết với đơn vị vận chuyển để tính phí vận chuyển, giúp khách hàng xem chi tiết vị trí đơn hàng

- Chưa cho khách hàng gửi video đánh giá sản phẩm

1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN Đề tài đề cao khả năng lập trình thông qua việc học hỏi, tiếp thu công nghệ kỹ thuật để xây dựng website thương mại, hiểu và nắm rõ các tính năng cần có trong một website

Bên cạnh ý nghĩa khoa học, đề tài mong muốn mang đến một môi trường công bằng, cạnh tranh và an toàn cho người tiêu dùng Người mua có thể tìm được sản phẩm mình cần và mua với giá có thể trải qua chọn lọc, người bán có thể giới thiệu sản phẩm tới nhiều người hơn Qua đó, thúc đẩy sự phát triển của thương mại điện tử nước ta

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT

2.1.1 Giới thiệu về ASP.NET Core

ASP.NET Core là một framework mã nguồn mở , đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet hiện đại, hỗ trợ đám mây ASP.NET Core là một thiết kế lại của ASP.NET 4.x, bao gồm những thay đổi về kiến trúc dẫn đến một khung mô-đun gọn gàng hơn, nhiều mô-đun hơn.[4]

ASP.NET Core MVC là một framework phong phú để xây dựng các ứng dụng web và API bằng cách sử dụng mẫu thiết kế Model-View-Controller.[5]

Mẫu kiến trúc MVC tách ứng dụng thành ba nhóm thành phần chính:

- Model: Đại diện cho dữ liệu và logic xử lý dữ liệu Model thường bao gồm các lớp đối tượng (object classes) để biểu diễn dữ liệu và các logic xử lý dữ liệu như truy xuất cơ sở dữ liệu

- View: Đại diện cho giao diện người dùng View là nơi hiển thị dữ liệu cho người dùng và tương tác với họ thông qua các trình duyệt web

- Controller: Đại diện cho bộ điều khiển của ứng dụng Controller xử lý các yêu cầu từ người dùng, nếu cần tương tác với Model để lấy dữ liệu thì chuyển dữ liệu đó đến View để hiển thị cho người dùng còn không thì chuyển trực tiếp tới View để hiển thị cho người dùng

Mô hình MVC trong ASP.NET Core giúp tách biệt giao diện, logic xử lý dữ liệu, quy trình điều khiển, giúp cho việc phát triển và bảo trì trở nên dễ dàng hơn Đồng thời cũng tạo điều kiện cho việc tái sử dụng code và phân chia rõ ràng công việc cho FrontEnd Developer và BackEnd Developer

Microsoft SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) Các ứng dụng và công cụ kết nối với phiên bản hoặc cơ sở dữ liệu SQL Server và giao tiếp bằng Transact-SQL (T-SQL).[6]

Các thành phần và công nghệ của SQL Server bao gồm:

- Database Engine: cơ sở dữ liệu là dịch vụ cốt lõi để lưu trữ, xử lý và bảo mật dữ liệu

- Machine Learning Services: hỗ trợ tích hợp học máy

- Integration Services: là nền tảng giúp xây dựng các giải pháp tích hợp dữ liệu hiệu suất cao, bao gồm các gói cung cấp khả năng xử lý trích xuất, chuyển đổi và tải (ETL) cho kho dữ liệu

- Analysis Services: là nền tảng dữ liệu phân tích

- Reporting Services: cung cấp chức năng báo cáo

- Replication: là tập hợp các công nghệ nhằm sao chép và phân phối dữ liệu sau đó đồng bộ hóa để duy trì tính nhất quán

- Data Quality Services: cung cấp các giải pháp làm sạch dữ liệu

- Master Data Services: là giải pháp SQL Server để quản lý dữ liệu chính

Hass Password là kĩ thuật biến đổi mật khẩu thành một chuỗi dữ liệu khác giúp ngăn chặn việc kẻ tấn công dễ dàng đánh cắp Việc hash password được coi

5 là một phần quan trọng của việc bảo vệ hệ thống Dưới đây là các tác dụng của việc hash password:

- Bảo vệ hệ thống: khi mật khẩu được lưu trữ dưới dạng chuỗi hash, ngay cả khi bị đánh cắp thì mật khẩu gốc cũng không dễ dàng bị lộ ra ngoài

- Khi hash password các mật khẩu gốc giống nhau thì chuỗi hash được tạo sẽ khác nhau

- Bảo vệ quyền riêng tư của người dùng: việc hash password giúp ngăn ngừa việc xâm nhập và đánh cắp trái phép tài khoản người dùng

- Tuân thủ quy định bảo mật

KẾT LUẬN

HƯỚNG PHÁT TRIỂN

MỤC LỤC LỜI CẢM ƠN I ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP II MỤC LỤC V DANH MỤC HÌNH VIII DANH MỤC BẢNG X CÁC TỪ VIẾT TẮT XII

1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1

1.2 MỤC TIÊU CỦA ĐỀ TÀI 1

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2

1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN 2

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3

2.1.1 Giới thiệu về ASP.NET Core 3

2.3.3 Ngăn chặn tấn công chuyển hướng mở 7

CHƯƠNG 3 THIẾT KẾ PHẨN MỀM 11 vi

3.1.2 Xác định yêu cầu 13

3.2 MÔ HÌNH HÓA YÊU CẦU 15

3.2.2 Use case quản lí giỏ hàng 17

3.2.4 Use case xem lịch sử mua hàng 19

3.2.5 Use case quản lí tài khoản 20

3.2.6 Use case quản lí danh mục 21

3.2.7 Use case quản lí tin tức 22

3.2.8 Use case quản lí sản phẩm 23

3.2.9 Use case quản lí đơn hàng 24

3.2.10 Use case quản lí đánh giá 25

3.3 LƯU ĐỒ THUẬT TOÁN (FLOW CHART) 26

3.3.1 Lưu đồ thuật toán đăng kí 26

3.3.2 Lưu đồ thuật toán đăng nhập 27

3.3.3 Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28

3.3.4 Lưu đồ thuật toán mua hàng 29

3.3.5 Lưu đồ thuật toán hủy đơn 30

3.3.6 Lưu đồ thuật toán đánh giá sản phẩm 31

3.3.7 Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32

3.4 THIẾT KẾ CƠ SỞ DỮ LIỆU 33

CHƯƠNG 4 THIẾT KẾ GIAO DIỆN 42

4.2 GIAO DIỆN ĐĂNG KÍ VÀ ĐĂNG NHẬP 43 vii

4.3 GIAO DIỆN GIỚI THIỆU CHUNG 44

4.5 GIAO DIỆN CHI TIẾT KIẾN THỨC 46

4.8 GIAO DIỆN CHI TIẾT SẢN PHẨM 49

4.11 GIAO DIỆN XEM LỊCH SỬ MUA HÀNG 52

4.12 GIAO DIỆN QUẢN LÍ SẢN PHẨM 53

4.13 GIAO DIỆN QUẢN LÍ TIN TỨC 53

4.14 GIAO DIỆN QUẢN LÍ ĐƠN HÀNG 54

4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY 54

TÀI LIỆU THAM KHẢO 56 viii

Hình 2 2: Các lựa chọn tăng cường độ mạnh mật khẩu 5

Hình 2 3: Cách sử dụng form trong FormTagHelper 6

Hình 2 4: Cách sử dụng phương thức Html.BeginForm 6

Hình 2 5: Cách thêm @Html.AntiForgeryToken() 6

Hình 2 10: Cách mã hóa trong Razor 9

Hình 2 11: Gọi phương thức mã hóa trong controller 9

Hình 2 12: Ví dụ mã hóa trong controller 9

Hình 2 13: Truy vấn sql ban đầu 10

Hình 2 14: Truy vấn sql sau khi bị tấn công 10

Hình 3 1: Giao diện website Locat 12

Hình 3 2: Giao diện website cây xinh 12

Hình 3 4: Use case tổng quát 15

Hình 3 5: Use case quản lí giỏ hàng 17

Hình 3 6: Use case đặt hàng 18

Hình 3 7: Use case xem lịch sử mua hàng 19

Hình 3 8: Use case quản lí tài khoản 20

Hình 3 9: Use case quản lí danh mục 21

Hình 3 10: Use case quản lí tin tức 22

Hình 3 11: Use case quản lí sản phẩm 23

Hình 3 12: Use case quản lí đơn hàng 24

Hình 3 13: Use case quản lí đánh giá 25

Hình 3 14: Lưu đồ thuật toán đăng kí 26

Hình 3 15: Lưu đồ thuật toán đăng nhập 27 ix

Hình 3 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng 28

Hình 3 17: Lưu đồ thuật toán mua hàng 29

Hình 3 18: Lưu đồ thuật toán hủy đơn hàng 30

Hình 3 19: Lưu đồ thuật toán đánh giá sản phẩm 31

Hình 3 20: Lưu đồ thuật toán quản lí quyền truy cập tài khoản 32

Hình 3 21: Cơ sở dữ liệu 33

Hình 4 1: Giao diện trang chủ 42

Hình 4 2: Giao diện đăng kí 43

Hình 4 3: Giao diện đăng nhập 43

Hình 4 4: Giao diện giới thiệu chung 44

Hình 4 5: Giao diện kiến thức 45

Hình 4 6: Giao diện chi tiết kiến thức 46

Hình 4 7: Giao diện liên hệ 47

Hình 4 8: Giao diện sản phẩm 48

Hình 4 9: Giao diện chi tiết sản phẩm 49

Hình 4 10: Giao diện giỏ hàng 50

Hình 4 11: Giao diện mua hàng 51

Hình 4 12: Giao diện xem lịch sử mua hàng 52

Hình 4 13: Giao diện quản lí sản phẩm 53

Hình 4 14: Giao diện quản lí tin tức 53

Hình 4 15: Giao diện quản lí đơn hàng 54

Hình 4 16: Giao diện chức năng thanh toán VnPay 54 x

Bảng 3 1: Mô tả use case tổng quát 15

Bảng 3 2: Mô tả use case quản lí giỏ hàng 17

Bảng 3 3: Mô tả use case đặt hàng 18

Bảng 3 4: Mô tả use case xem lịch sử mua hàng 19

Bảng 3 5: Mô tả use case quản lí tài khoản 20

Bảng 3 6: Mô tả use case quản lí danh mục 21

Bảng 3 7: Mô tả use case quản lí tin tức 22

Bảng 3 8: Mô tả use case quản lí sản phẩm 23

Bảng 3 9: Mô tả use case quản lí đơn hàng 24

Bảng 3 10: Mô tả use case quản lí đánh giá 25

Bảng 3 11: Chi tiết dữ liệu bảng AspNetRoleClaims 33

Bảng 3 12: Chi tiết dữ liệu bảng AspNetRoles 33

Bảng 3 13: Chi tiết dữ liệu bảng AspNetUserClaims 34

Bảng 3 14: Chi tiết dữ liệu bảng AspNetUserLogins 34

Bảng 3 15: Chi tiết dữ liệu bảng AspNetUserRoles 34

Bảng 3 16: Chi tiết dữ liệu bảng AspNetUsers 34

Bảng 3 17: Chi tiết dữ liệu bảng AspNetUserTokens 35

Bảng 3 18: Chi tiết dữ liệu bảng BlogCategories 35

Bảng 3 19: Chi tiết dữ liệu bảng Blogs 36

Bảng 3 20: Chi tiết dữ liệu bảng BlogTranslations 36

Bảng 3 21: Chi tiết dữ liệu bảng Categories 36

Bảng 3 22: Chi tiết dữ liệu bảng CategoryNews 36

Bảng 3 23: Chi tiết dữ liệu bảng CategoryNewTranslations 37

Bảng 3 24: Chi tiết dữ liệu bảng CategoryTranslations 37

Bảng 3 25: Chi tiết dữ liệu bảng Contacts 37

Bảng 3 26: Chi tiết dữ liệu bảng Customers 38

Bảng 3 27: Chi tiết dữ liệu bảng FeebackImages 38

Bảng 3 28: Chi tiết dữ liệu bảng Feedbacks 38 xi

Bảng 3 29: Chi tiết dữ liệu bảng Languages 39

Bảng 3 30: Chi tiết dữ liệu bảng Orders 39

Bảng 3 31: Chi tiết dữ liệu bảng ProductCategories 39

Bảng 3 32: Chi tiết dữ liệu bảng ProductColors 40

Bảng 3 33: Chi tiết dữ liệu bảng ProductImgs 40

Bảng 3 34: Chi tiết dữ liệu bảng ProductOrders 40

Bảng 3 35: Chi tiết dữ liệu bảng Products 41

Bảng 3 36: Chi tiết dữ liệu bảng ProductTranslations 41

Bảng 3 37: Chi tiết dữ liệu bảng ShopFeedbacks 41 xii

RDBMS: Relational Database Management System SQL: Structured Query Language

XSRF/CSRF: Cross-Site Request Forgery

1.1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Trong những năm gần đây, thế giới nói chung và Việt Nam nói riêng đã phải trải qua thời kì đại dịch của COVID – 19 với vô vàn khó khăn, trắc trở Trong thời gian dịch bệnh, ngành thương mại, dịch vụ truyền thống bị suy giảm đáng kể do ban hành các lệnh phong tỏa Nhưng đây lại là cơ hội mạnh mẽ cho sự phát triển vượt bậc của thương mại điện tử bởi sự tiện lợi mang lại cho người tiêu dùng như mua hàng từ xa, tra cứu, so sánh giá cả Điển hình là các sàn thương mại điện tử lớn như Shopee, Tiki, Lazada…

Nắm bắt được xu hướng và tiềm năng phát triển, chúng tôi đã chọn đề tài

“Xây dựng website bán cây sử dụng ASP.NET Core MVC” để người tiêu dùng có thể thuận tiện trao đổi mua bán sản phẩm, đẩy mạnh nên thương mại nước nhà Để thực hiện đề tài này, tôi đã thực hiện việc khảo sát và nghiên cứu hiện trạng các website bán cây hiện nay như “Cây để bàn | cây văn phòng Locat” [1],

“Cây Xinh - Hệ Thống Bán Sỉ & Lẻ Cây Cảnh Hàng Đầu Việt Nam” [2], “9X GARDEN | #1 Shop Cây Cảnh Mini Không Cần Đất” [3]…Nhìn chung các website khá đầy đủ các chức năng tuy nhiên vẫn còn một vài thiếu sót như việc hiển thị đánh giá của sản phẩm, chức năng thanh toán online, cần tối ưu thời gian mua bán cho khách hàng…

1.2 MỤC TIÊU CỦA ĐỀ TÀI

Mục tiêu của đề tài bao gồm:

- Hiểu và có khả năng xây dựng website sử dụng ASP.NET Core MVC kết nối cơ sở dữ liệu SQL – Server và các công nghệ liên quan

- Xây dựng một website bán cây với các tính năng sau: hiển thị tin tức, thông tin sản phẩm, chức năng mua hàng, thanh toán online, quản lí danh sách khách hàng, quản lí danh sách sản phẩm, quản lí danh sách tin tức, quản lí danh sách đơn hàng, quản lí danh sách đánh giá, đa ngôn ngữ

- Tìm hiểu và ngăn chặn các lỗ hổng trong xây dựng website

1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng của nghiên cứu của đề tài:

- Người dùng cuối: Nghiên cứu trải nghiệm mua sắm trực bao gồm cả việc tìm kiếm, xem sản phẩm, thêm vào giỏ hàng, thanh toán và quản lý đơn hàng

- Quản trị viên: Nghiên cứu về cách quản lý sản phẩm, đơn hàng, khách hàng…từ giao diện quản trị

Phạm vi nghiên cứu của đề tài:

- ASP.NET Core MVC 5.0 là nền tảng xây dựng website lớn của Microsoft

- SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Microsoft

- Ngôn ngữ lập trình C#, Javascript

- Các framework hỗ trợ: Entity Framework, Identity Framework…

- Chưa xác thực email, số điện thoại

- Chưa liên kết với đơn vị vận chuyển để tính phí vận chuyển, giúp khách hàng xem chi tiết vị trí đơn hàng

- Chưa cho khách hàng gửi video đánh giá sản phẩm

1.5 Ý NGHĨA KHOA HỌC VÀ CƠ SỞ THỰC TIỄN Đề tài đề cao khả năng lập trình thông qua việc học hỏi, tiếp thu công nghệ kỹ thuật để xây dựng website thương mại, hiểu và nắm rõ các tính năng cần có trong một website

Bên cạnh ý nghĩa khoa học, đề tài mong muốn mang đến một môi trường công bằng, cạnh tranh và an toàn cho người tiêu dùng Người mua có thể tìm được sản phẩm mình cần và mua với giá có thể trải qua chọn lọc, người bán có thể giới thiệu sản phẩm tới nhiều người hơn Qua đó, thúc đẩy sự phát triển của thương mại điện tử nước ta

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT

2.1.1 Giới thiệu về ASP.NET Core

ASP.NET Core là một framework mã nguồn mở , đa nền tảng, hiệu suất cao để xây dựng các ứng dụng kết nối Internet hiện đại, hỗ trợ đám mây ASP.NET Core là một thiết kế lại của ASP.NET 4.x, bao gồm những thay đổi về kiến trúc dẫn đến một khung mô-đun gọn gàng hơn, nhiều mô-đun hơn.[4]

ASP.NET Core MVC là một framework phong phú để xây dựng các ứng dụng web và API bằng cách sử dụng mẫu thiết kế Model-View-Controller.[5]

Mẫu kiến trúc MVC tách ứng dụng thành ba nhóm thành phần chính:

- Model: Đại diện cho dữ liệu và logic xử lý dữ liệu Model thường bao gồm các lớp đối tượng (object classes) để biểu diễn dữ liệu và các logic xử lý dữ liệu như truy xuất cơ sở dữ liệu

- View: Đại diện cho giao diện người dùng View là nơi hiển thị dữ liệu cho người dùng và tương tác với họ thông qua các trình duyệt web

- Controller: Đại diện cho bộ điều khiển của ứng dụng Controller xử lý các yêu cầu từ người dùng, nếu cần tương tác với Model để lấy dữ liệu thì chuyển dữ liệu đó đến View để hiển thị cho người dùng còn không thì chuyển trực tiếp tới View để hiển thị cho người dùng

Mô hình MVC trong ASP.NET Core giúp tách biệt giao diện, logic xử lý dữ liệu, quy trình điều khiển, giúp cho việc phát triển và bảo trì trở nên dễ dàng hơn Đồng thời cũng tạo điều kiện cho việc tái sử dụng code và phân chia rõ ràng công việc cho FrontEnd Developer và BackEnd Developer

Microsoft SQL Server là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) Các ứng dụng và công cụ kết nối với phiên bản hoặc cơ sở dữ liệu SQL Server và giao tiếp bằng Transact-SQL (T-SQL).[6]

Các thành phần và công nghệ của SQL Server bao gồm:

- Database Engine: cơ sở dữ liệu là dịch vụ cốt lõi để lưu trữ, xử lý và bảo mật dữ liệu

- Machine Learning Services: hỗ trợ tích hợp học máy

- Integration Services: là nền tảng giúp xây dựng các giải pháp tích hợp dữ liệu hiệu suất cao, bao gồm các gói cung cấp khả năng xử lý trích xuất, chuyển đổi và tải (ETL) cho kho dữ liệu

- Analysis Services: là nền tảng dữ liệu phân tích

- Reporting Services: cung cấp chức năng báo cáo

- Replication: là tập hợp các công nghệ nhằm sao chép và phân phối dữ liệu sau đó đồng bộ hóa để duy trì tính nhất quán

- Data Quality Services: cung cấp các giải pháp làm sạch dữ liệu

- Master Data Services: là giải pháp SQL Server để quản lý dữ liệu chính

Hass Password là kĩ thuật biến đổi mật khẩu thành một chuỗi dữ liệu khác giúp ngăn chặn việc kẻ tấn công dễ dàng đánh cắp Việc hash password được coi

5 là một phần quan trọng của việc bảo vệ hệ thống Dưới đây là các tác dụng của việc hash password:

- Bảo vệ hệ thống: khi mật khẩu được lưu trữ dưới dạng chuỗi hash, ngay cả khi bị đánh cắp thì mật khẩu gốc cũng không dễ dàng bị lộ ra ngoài

- Khi hash password các mật khẩu gốc giống nhau thì chuỗi hash được tạo sẽ khác nhau

- Bảo vệ quyền riêng tư của người dùng: việc hash password giúp ngăn ngừa việc xâm nhập và đánh cắp trái phép tài khoản người dùng

- Tuân thủ quy định bảo mật

Ngày đăng: 07/06/2024, 16:41

HÌNH ẢNH LIÊN QUAN

Hình 3. 1: Giao diện website Locat - xây dựng website bán cây sử dụng asp net core mvc
Hình 3. 1: Giao diện website Locat (Trang 29)
Hình 3. 4: Use case tổng quát  Bảng 3. 1: Mô tả use case tổng quát - xây dựng website bán cây sử dụng asp net core mvc
Hình 3. 4: Use case tổng quát Bảng 3. 1: Mô tả use case tổng quát (Trang 32)
Hình 3. 6: Use case đặt hàng  Bảng 3. 3: Mô tả use case đặt hàng - xây dựng website bán cây sử dụng asp net core mvc
Hình 3. 6: Use case đặt hàng Bảng 3. 3: Mô tả use case đặt hàng (Trang 35)
Hình 3. 8: Use case quản lí tài khoản  Bảng 3. 5: Mô tả use case quản lí tài khoản - xây dựng website bán cây sử dụng asp net core mvc
Hình 3. 8: Use case quản lí tài khoản Bảng 3. 5: Mô tả use case quản lí tài khoản (Trang 37)
Hình 3. 9: Use case quản lí danh mục  Bảng 3. 6: Mô tả use case quản lí danh mục - xây dựng website bán cây sử dụng asp net core mvc
Hình 3. 9: Use case quản lí danh mục Bảng 3. 6: Mô tả use case quản lí danh mục (Trang 38)
Hình 3. 14: Lưu đồ thuật toán đăng kí - xây dựng website bán cây sử dụng asp net core mvc
Hình 3. 14: Lưu đồ thuật toán đăng kí (Trang 43)
Hình 3. 15: Lưu đồ thuật toán đăng nhập - xây dựng website bán cây sử dụng asp net core mvc
Hình 3. 15: Lưu đồ thuật toán đăng nhập (Trang 44)
Hình 3. 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng - xây dựng website bán cây sử dụng asp net core mvc
Hình 3. 16: Lưu đồ thuật toán thêm sản phẩm vào giỏ hàng (Trang 45)
Hình 3. 17: Lưu đồ thuật toán mua hàng - xây dựng website bán cây sử dụng asp net core mvc
Hình 3. 17: Lưu đồ thuật toán mua hàng (Trang 46)
Hình 3. 18: Lưu đồ thuật toán hủy đơn hàng - xây dựng website bán cây sử dụng asp net core mvc
Hình 3. 18: Lưu đồ thuật toán hủy đơn hàng (Trang 47)
Hình 3. 19: Lưu đồ thuật toán đánh giá sản phẩm - xây dựng website bán cây sử dụng asp net core mvc
Hình 3. 19: Lưu đồ thuật toán đánh giá sản phẩm (Trang 48)
Bảng 3. 12: Chi tiết dữ liệu bảng AspNetRoles - xây dựng website bán cây sử dụng asp net core mvc
Bảng 3. 12: Chi tiết dữ liệu bảng AspNetRoles (Trang 50)
Bảng 3. 17: Chi tiết dữ liệu bảng AspNetUserTokens - xây dựng website bán cây sử dụng asp net core mvc
Bảng 3. 17: Chi tiết dữ liệu bảng AspNetUserTokens (Trang 52)
Bảng 3. 27: Chi tiết dữ liệu bảng FeebackImages - xây dựng website bán cây sử dụng asp net core mvc
Bảng 3. 27: Chi tiết dữ liệu bảng FeebackImages (Trang 55)
Bảng 3. 31: Chi tiết dữ liệu bảng ProductCategories - xây dựng website bán cây sử dụng asp net core mvc
Bảng 3. 31: Chi tiết dữ liệu bảng ProductCategories (Trang 56)
Bảng 3. 36: Chi tiết dữ liệu bảng ProductTranslations - xây dựng website bán cây sử dụng asp net core mvc
Bảng 3. 36: Chi tiết dữ liệu bảng ProductTranslations (Trang 58)
Bảng 3. 37: Chi tiết dữ liệu bảng ShopFeedbacks - xây dựng website bán cây sử dụng asp net core mvc
Bảng 3. 37: Chi tiết dữ liệu bảng ShopFeedbacks (Trang 58)
Hình 4. 1: Giao diện trang chủ - xây dựng website bán cây sử dụng asp net core mvc
Hình 4. 1: Giao diện trang chủ (Trang 59)
Hình 4. 3: Giao diện đăng nhập - xây dựng website bán cây sử dụng asp net core mvc
Hình 4. 3: Giao diện đăng nhập (Trang 60)
Hình 4. 2:  Giao diện đăng kí - xây dựng website bán cây sử dụng asp net core mvc
Hình 4. 2: Giao diện đăng kí (Trang 60)
Hình 4. 4: Giao diện giới thiệu chung - xây dựng website bán cây sử dụng asp net core mvc
Hình 4. 4: Giao diện giới thiệu chung (Trang 61)
Hình 4. 5: Giao diện kiến thức - xây dựng website bán cây sử dụng asp net core mvc
Hình 4. 5: Giao diện kiến thức (Trang 62)
Hình 4. 6: Giao diện chi tiết kiến thức - xây dựng website bán cây sử dụng asp net core mvc
Hình 4. 6: Giao diện chi tiết kiến thức (Trang 63)
Hình 4. 8: Giao diện sản phẩm - xây dựng website bán cây sử dụng asp net core mvc
Hình 4. 8: Giao diện sản phẩm (Trang 65)
Hình 4. 9: Giao diện chi tiết sản phẩm - xây dựng website bán cây sử dụng asp net core mvc
Hình 4. 9: Giao diện chi tiết sản phẩm (Trang 66)
Hình 4. 12: Giao diện xem lịch sử mua hàng - xây dựng website bán cây sử dụng asp net core mvc
Hình 4. 12: Giao diện xem lịch sử mua hàng (Trang 69)
Hình 4. 13: Giao diện quản lí sản phẩm - xây dựng website bán cây sử dụng asp net core mvc
Hình 4. 13: Giao diện quản lí sản phẩm (Trang 70)
Hình 4. 16: Giao diện chức năng thanh toán VnPay - xây dựng website bán cây sử dụng asp net core mvc
Hình 4. 16: Giao diện chức năng thanh toán VnPay (Trang 71)
Hình 4. 15: Giao diện quản lí đơn hàng  4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY - xây dựng website bán cây sử dụng asp net core mvc
Hình 4. 15: Giao diện quản lí đơn hàng 4.15 GIAO DIỆN CHỨC NĂNG THANH TOÁN VNPAY (Trang 71)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w