Công nghệ thông tin ngày càng phát triển, đóng góp một phần quan trọng cho kinh tế – văn hóa – xã hội, thúc đẩy mọi mặt của xã hội phát triển. Internet hiện nay cũng không còn là phương tiện quý hiếm mà đang ngày càng trở thành một công cụ đắc lực trợ giúp con người trong công cuộc chuyển đổi số. Hiện nay, nhu cầu mua sắm trực tuyến ngày càng tăng cao nhờ vào sự phát triển vượt bậc của công nghệ và mạng Internet. Thương mại điện tử không chỉ đóng vai trò quan trọng trong đời sống hàng ngày mà còn trở thành một lĩnh vực kinh doanh tiềm năng với thị trường ngày càng mở rộng. Người tiêu dùng ngày nay thường ưu tiên sự tiện lợi và nhanh chóng khi mua sắm, điều này thúc đẩy sự phát triển của các trang thương mại điện tử nói chung và các website bán sách nói riêng. Trước đây, việc mua sách thường yêu cầu người mua phải đến trực tiếp các cửa hàng để xem và lựa chọn sản phẩm, điều này tiêu tốn không ít thời gian và công sức, đặc biệt là với những người bận rộn. Tuy nhiên, với sự hỗ trợ của Internet, việc mua sắm trở nên thuận tiện hơn bao giờ hết. Chỉ cần một thiết bị kết nối mạng, người dùng có thể dễ dàng tìm kiếm, so sánh giá cả và đặt hàng các sản phẩm sách từ bất kỳ đâu. Từ những lý do trên, em quyết định chọn đề tài “Xây dựng website bán sách”. Đề tài này nhằm mục tiêu tạo ra một trang web hỗ trợ người dùng dễ dàng tìm kiếm, lựa chọn và đặt mua sách, đồng thời giúp người bán có kênh phân phối hiệu quả, tăng doanh thu và mở rộng thị trường.
Kết quả thực hiện
Mục tiêu của đồ án là đạt được hiểu biết sâu sắc về các nghiệp vụ người dùng thực hiện trên trang web thương mại điện tử Thông qua việc nghiên cứu và phân tích nhu cầu người dùng, đồ án sẽ xác định các yếu tố quan trọng cần tích hợp vào website, từ đó tối ưu hóa trải nghiệm người dùng và đảm bảo tính thân thiện cũng như hiệu quả.
Kết quả dự kiến của dự án bao gồm việc nắm vững Restful API và các tính năng cơ bản của framework Spring Boot, kết hợp với AngularJS, nhằm tạo ra sự mượt mà cho website Mục tiêu của đồ án là áp dụng kiến thức đã học để xây dựng một website thương mại điện tử mạnh mẽ và linh hoạt.
Kết quả dự kiến của đồ án là triển khai thành công website trên nhiều môi trường, chủ yếu sử dụng framework Spring Boot và AngularJS Đồ án nhằm tạo ra một sản phẩm ổn định với giao diện thân thiện và tích hợp các tính năng mạnh mẽ, đáp ứng đầy đủ nhu cầu của người sử dụng.
Kết cấu của báo cáo
Để những đóng góp của đồ án đạt hiệu quả tối ưu nhất, đồ án sẽ được triển khai và diễn giải theo 4 chương theo mô tả dưới đây:
Chương 1: Cơ sở lí thuyết
Chương này sẽ cung cấp cái nhìn tổng quan về ngôn ngữ lập trình JavaScript và Java, cùng với các framework Spring và AngularJS Chúng ta sẽ khám phá những ưu điểm nổi bật khi sử dụng các framework này, cũng như khái quát về Restful API trong Spring Framework.
Chương 2: Phân tích yêu cầu và Thiết kế hệ thống
Chương này sẽ trình bày các chức năng của website, bao gồm các usecase cụ thể, kịch bản chi tiết cho từng usecase, và biểu đồ tuần tự minh họa cho các chức năng của website.
Thiết kế hệ thống sẽ đi sâu vào phân tích biểu đồ hoạt động cho từng chức năng và thiết cơ sở dữ liệu của hệ thống
Chương 3: Cài đặt và thử nghiệm hệ thống
Chương 3 sẽ trình bày chi tiết về kiến trúc hệ thống và môi trường triển khai, đồng thời giới thiệu giao diện của hệ thống cùng với các màn hình tương ứng cho từng chức năng.
Chương 4: Kết luận và hướng phát triển
Chương cuối sẽ đưa ra nhận xét về những điều đã làm được và cần cải thiện cho hệ thống và đưa ra hướng phát triển trong tương lai.
CƠ SỞ LÝ THUYẾT
Sping framework
Angular là một framework mã nguồn mở cho phát triển ứng dụng web, được xây dựng bằng TypeScript Với mô hình thành phần, Angular cung cấp cấu trúc rõ ràng và khả năng tái sử dụng mã nguồn hiệu quả Framework này tích hợp nhiều tính năng nổi bật như ràng buộc dữ liệu, quản lý thư viện, và hệ thống điều hướng thân thiện Ngoài ra, công cụ Angular CLI hỗ trợ lập trình viên trong việc khởi tạo và quản lý dự án một cách nhanh chóng.
Angular không chỉ giúp xây dựng giao diện người dùng mà còn cho phép mở rộng để tích hợp hiệu quả với các API RESTful và dịch vụ backend.
Angular hỗ trợ chuyển đổi mã TypeScript sang JavaScript một cách tối ưu trước khi trình duyệt tải trang, điều này giúp nâng cao hiệu suất và giảm thiểu thời gian tải ứng dụng.
Angular có Router Module, cho phép điều hướng giữa các thành phần mà không cần tải lại toàn bộ trang
1.3 Ngôn ngữ lập trình java
Java là một ngôn ngữ lập trình thuần hướng đối tượng, được ứng dụng trong phát triển phần mềm cho desktop, mobile, trang web và game Ban đầu, Java được thiết kế cho lập trình nhúng và phát triển phần mềm cho sản phẩm gia dụng Hiện nay, Java đã trở thành một công cụ phổ biến trên mọi nền tảng, đặc biệt trong các lĩnh vực yêu cầu bảo mật cao như ngân hàng và chính phủ.
Java là một ngôn ngữ lập trình đa nền tảng, cho phép các ứng dụng chạy mượt mà trên nhiều hệ điều hành khác nhau như Windows, macOS, Linux, Windows Server và cả thiết bị di động.
Kết chương
4 Kết cấu của báo cáo Để những đóng góp của đồ án đạt hiệu quả tối ưu nhất, đồ án sẽ được triển khai và diễn giải theo 4 chương theo mô tả dưới đây:
Chương 1: Cơ sở lí thuyết
Chương này sẽ cung cấp cái nhìn tổng quan về ngôn ngữ lập trình JavaScript và Java, đồng thời giới thiệu về Spring Framework và AngularJS Bài viết sẽ nêu rõ các ưu điểm của việc sử dụng những framework này, cũng như khái quát về RESTful API trong Spring Framework.
PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ HỆ THỐNG
Tổng quan về nghiệp vụ
Hệ thống có 3 tác nhân chính là người dùng đã đăng nhập tài khoản, người dùng chưa đăng ký tài khoản(vãng lai), quản trị viên
Người dùng vãng lai là những người truy cập hệ thống mà chưa thực hiện đăng nhập hoặc đăng ký Khi họ hoàn tất quá trình đăng ký và đăng nhập thành công, họ sẽ trở thành người dùng chính thức của hệ thống Trong thời gian là người dùng vãng lai, họ chỉ có thể xem sản phẩm và thực hiện đăng ký tài khoản.
Tác nhân thứ 2: Người dùng hệ thống khác với người dùng vãng lai ở chỗ có thể đặt hàng, quản tài khoản, quản lý giỏ hàng,….
Quản trị viên đóng vai trò quan trọng trong việc quản lý toàn bộ hệ thống, bao gồm các chức năng như quản lý danh mục, sản phẩm, đơn hàng và tài khoản.
Phân tích yêu cầu chức năng
Hình 1: Biểu đồ usecase tổng quát của hệ thống
Use case name Đăng ký tài khoản
Description Usecase cho phép Người dùng đăng ký tài khoản tại website
Pre-condition Người dùng chưa có tài khoản trên hệ thống
Post condition Đăng ký thành công
1 Người dùng chọn chức năng đăng ký
2 Hệ thống hiển thị form đăng ký
3 Người dùng nhập thông tin đăng ký
5 Hệ thống kiểm tra tính hợp lệ và đầy đủ của các trường Người dùng nhập
6 Hệ thống kiểm tra email tồn tại hay không
7 Hệ thống chuyển đến trang xác thực tài khoản
5a Hệ thống thông báo lỗi: “vui lòng điền đầy đủ thông tin” nếu nhập thiếu một trong các trường trên”
6a Hệ thống thông báo lỗi: “Email đã được sử dụng”
Bảng 1: Đặc tả usecase đăng ký
Use case name Đăng nhập
Description Usecase cho phép người dùng, quản trị viên đăng nhập vào hệ thống để sử dụng các chức năng cần thiết Actor Người dùng, quản trị viên
Pre-condition Người dùng đã có tài khoản trên hệ thống
Post condition Đăng nhập thành công
Flow 1 Người dùng, quản trị viên chọn chức năng đăng nhập
2 Hệ thống hiển thị form đăng nhập
3 Người dùng, quản trị viên, nhân viên nhập Email và Mật khẩu
4 Người dùng, quản trị viên, nhân viên nhấn nút Đăng nhập
5 Hệ thống kiểm tra email và mật khẩu có chính xác hay không
6 Hệ thống chuyển đến trang phù hợp với loại tài khoản Exception 5a Hệ thống thông báo lỗi: “Đăng nhập thất bại”
Bảng 2: Đặc tả usecase đăng nhập
Use case name Đặt hàng
Description Usecase cho phép người dùng đặt hàng
Pre-condition Người dùng đã đăng nhập thành công
Post condition Đặt hàng thành công
1 Người dùng chọn chức năng đặt hàng
2 Hệ thống hiển thị form đặt hàng
3 Người dùng nhập đầy đủ các thông tin cần thiết
4 Người dùng nhấn nút Xác nhận đặt hàng
5 Hệ thống kiểm tra tín hợp lệ của các thông tin
6 Hệ thống xác nhận đặt hàng thành công
5a Hệ thống thông báo lỗi “Vui lòng điền đầy đủ thông tin” nếu nhập thiếu một trong các trường trên
6a Hệ thống thông báo lỗi “Số lượng sản phẩm không đủ” nếu nhập thiếu một trong các trường trên
Bảng 3: Đặc tả usecase đặt hàng
Description Usecase cho phép người dùng bình luận sản phẩm
Pre-condition Người dùng đã đăng nhập
Post condition Bình luận thành công
1 Khách hang chọn 1 sản phẩm bất kì nào đó
2 Hệ thống hiển thị chi tiết sản phẩm và khung bình luận
3 Khách hàng nhập bình luận của mình
4 Khách hàng nhấn nút gửi
5 Hệ thống hiển thị bình luận của khách hàng vừa nhập Exception
Bảng 4: Đặc tả usecase bình luận
Use case name Thêm giỏ hàng
Description Usecase cho phép khách hàng thêm sản phẩm vào giỏ hàng
Người dùng cần đăng nhập và chọn một sản phẩm trước khi nhấn nút thêm vào giỏ hàng Sau khi thực hiện thao tác này, giỏ hàng sẽ được cập nhật thành công với sản phẩm đã chọn.
1 Khách hàng chọn một sản phẩm bất kì nào đó
2 Hệ thống h iển thị chi tiếtsản phẩm và nút thêm giỏ hàng
3 Khách hàng nhấn nút thêm giỏ hàng
4 Hệ thống thêm sản phẩm vừa chọn vào giỏ hàng
Bảng 5: Đặc tả usecase thêm giỏ hàng
Use case name Quản lý đơn hàng đã đặt của người dùng
Description Usecase cho phép người dùng xem, hủy đơn hàng
Pre-condition Người dùng sau khi đăng nhập thành công và truy cập vào trang quản lý đơn hàng Post condition Hệ thống cập nhật đơn hàng.
1 Người dùng chọn 1 đơn hàng đã đặt bất kỳ
2 Người dùng chọn chức năng hủy đơn
3 Hệ thống hủy đơn vừa chọn
Exception 3a Hệ thống thông báo lỗi: “Đơn hàng không thể hủy”
Bảng 6: Đặc tả usecase quản lý đơn hàng của người dùng
Use case name Quản lý đơn hàng của quản trị viên
Description Usecase cho phép quản trị viên cập nhật trạng thái đơn hàng
Pre-condition Quản trị viên sau khi đăng nhập thành công và truy cập vào trang quản lý đơn hàng Post condition Hệ thống cập nhật tin đăng.
1 Quản trị viên chọn chức năng cập nhật trạng thái
2 Hệ thống hiển thị trạng thái có thể cập nhật
3 Quản trị viên chọn xác nhận cập nhật
Bảng 7: Đặc tả usecase quản lý đơn hàng của quản trị viên
Use case name Quản lý danh mục
Description Usecase cho phép quản trị viên thêm, sửa, xóa danh mục
Sau khi quản trị viên đăng nhập thành công và truy cập vào trang quản lý danh mục, hệ thống sẽ cập nhật danh sách danh mục một cách tự động.
1 Quản trị viên chọn chức năng cập nhật hoặc tạo mới
2 Hệ thống hiển thị form cập nhật hoặc tạo mới danh mục
3 Quản trị viên nhập đầy đủ thông tin danh mục
4 Quản trị viên nhấn nút thêm mới hoặc cập nhật danh mục
5 Hệ thống kiểm tra tính hợp lệ của danh mục
6 Hệ thống chuyển về trang hiển thị danh sách danh mục
7 Quản trị viên chọn chức năng xóa
8 Hệ thống xóa danh mục vừa chọn Exception
5a Hệ thống thông báo lỗi: “Không được bỏ trống trường dữ liệu”
8a Hệ thống thông báo lỗi: “Không thể xóa danh mục này”Bảng 8: Đặc tả usecase quản lý danh mục
Use case name Quản lý khách hàng
Description Usecase cho phép quản trị viên thêm, xóa, sửa khách hàng
Sau khi quản trị viên đăng nhập thành công và truy cập vào trang quản lý khách hàng, hệ thống sẽ tự động cập nhật danh sách khách hàng.
1 Quản trị viên chọn chức năng tạo mới người dùng
2 Hệ thống hiển thị form tạo mới người dùng
3 Quản trị viên nhập đầy đủ thông tin của người dùng
4 Quản trị viên nhấn nút thêm mới người dùng
5 Hệ thống kiểm tra email đã tồn tại hay chưa
6 Hệ thống chuyển về trang hiển thị danh sách người dùng
7 Quản trị viên chọn chức năng xóa người dùng
8 Hệ thống xóa người dùng khỏi hệ thống Exception 5a Hệ thống thông báo lỗi: “Email đã được sử dụng”
Bảng 9: Đặc tả usecase quản lý tài khoản
Use case name Quản lý đánh giá
Description Usecase cho phép quản trị viên xóa đánh giá
Sau khi quản trị viên đăng nhập thành công và truy cập vào trang quản lý đánh giá, hệ thống sẽ cập nhật danh sách đánh giá sản phẩm.
Flow 7 Quản trị viên chọn chức năng xóa đánh giá
8 Hệ thống xóa đánh giá vừa chọn
Bảng 10: Đặc tả usecase quản lý đánh giá
Use case name Quản lý sản phẩm
Description Usecase cho phép quản trị viên thêm, sửa, xóa sản phẩm
Sau khi quản trị viên đăng nhập thành công và truy cập vào trang quản lý sản phẩm, hệ thống sẽ tự động cập nhật danh sách sản phẩm.
1 Quản trị viên chọn chức năng cập nhật hoặc tạo mới
2 Hệ thống hiển thị form cập nhật hoặc tạo mới sản phẩm
3 Quản trị viên nhập đầy đủ thông tin của sản phẩm
4 Quản trị viên nhấn nút thêm mới hoặc cập nhật sản phẩm
5 Hệ thống kiểm tra tính hợp lệ của sản phẩm
6 Hệ thống chuyển về trang hiển thị danh sách sản phẩm
7 Quản trị viên chọn chức năng xóa
8 Hệ thống xóa sản phẩm vừa chọn Exception 5a Hệ thống thông báo lỗi: “Không được bỏ trống trường dữ liệu” xóa”
Bảng 11: Đặc tả usecase quản lý sản phẩm
Phân tích yêu cầu phi chức năng
2.3.1 Yêu cầu bảo mật Đối với những yêu cầu về bảo mật, đồ án sẽ tập trung vào hai hình thức chính đó là bảo mật theo sự phân quyền và bảo mật qua việc mã hóa mật khẩu khi người dùng đăng nhập.
Quản trị viên và người dùng sẽ có quyền truy cập vào các chức năng cơ bản tương ứng với vai trò của mình, đảm bảo rằng người dùng không thể sử dụng các chức năng của quản trị viên và ngược lại Tuy nhiên, trong một số trường hợp cụ thể, như quản lý thông tin tài khoản người dùng và thông tin đơn hàng, quản trị viên có thể truy cập các chức năng này để quản lý trang web hiệu quả và xử lý các yêu cầu của người dùng khi cần thiết.
An toàn bảo mật thông tin là yêu cầu quan trọng trên trang web này Người dùng cần thực hiện bước đăng nhập để bảo vệ thông tin cá nhân, ngăn chặn các cuộc tấn công mạng có thể đánh cắp dữ liệu hoặc xâm phạm trang web.
Trang web được thiết kế để phục vụ người sử dụng cơ bản, với các chức năng thiết yếu như xem sản phẩm, tìm kiếm, thêm sản phẩm vào giỏ hàng, quản lý giỏ hàng và đặt hàng Người dùng có thể dễ dàng truy cập và thực hiện các thao tác cần thiết Đối với quản trị viên, họ có trách nhiệm quản lý toàn bộ thông tin trên website, bao gồm quản lý tài khoản khách hàng, sản phẩm, danh mục, cũng như thống kê và đơn hàng.
Hệ thống sẽ được thiết kế dựa trên các yêu cầu về vận hành, bảo mật và chức năng đã được nêu Những chức năng cơ bản của hệ thống sẽ được trình bày chi tiết trong các phần tiếp theo của đồ án.
Trong hệ thống web hiện đại, thiết kế và phát triển cần chú trọng đến tính ổn định, khả năng mở rộng và hiệu quả xử lý Đồ án này áp dụng kiến trúc RESTful API để xây dựng backend với Spring Boot, kết hợp với JavaScript và framework Angular cho phát triển frontend, thay thế cho mô hình MVC truyền thống.
Hệ thống backend sẽ được thiết kế theo chuẩn RESTful API, đảm bảo tính phân tán và khả năng mở rộng, cho phép frontend và backend hoạt động độc lập, từ đó dễ dàng bảo trì và nâng cấp Để đáp ứng lượng truy cập lớn trên các trang web thương mại điện tử, hệ thống cần có khả năng chịu tải cao, xử lý nhanh chóng các request của khách hàng Việc tối ưu hóa tìm kiếm sản phẩm là rất quan trọng, đặc biệt khi người dùng yêu cầu tìm kiếm với nhiều tiêu chí phức tạp như lọc theo giá và danh mục sản phẩm Hệ thống sẽ xây dựng các chỉ mục tối ưu cho dữ liệu, giúp người dùng tìm kiếm nhanh chóng ngay cả khi khối lượng dữ liệu lớn.
Giao diện người dùng sẽ được xây dựng bằng html, css kết hợp với ngôn ngữ javascript dựa trên framework angular, một framework mạnh mẽ giúp tạo ra
Hệ thống cần đảm bảo khả năng chịu tải, xử lý hiệu quả các yêu cầu đồng thời từ nhiều người dùng.
Việc tối ưu hóa cơ sở dữ liệu sẽ được thực hiện để đảm bảo truy vấn nhanh chóng.
Spring Boot cung cấp các cơ chế quản lý kết nối, caching và xử lý bất đồng bộ, giúp tối ưu hóa hiệu suất ứng dụng khi phải xử lý lượng truy cập lớn.
AJAX và tương tác người dùng đóng vai trò quan trọng trong việc cải thiện trải nghiệm người dùng Tại phía frontend, các yêu cầu đến backend được thực hiện thông qua AJAX qua REST API, cho phép giao diện người dùng phản hồi nhanh chóng mà không cần tải lại toàn bộ trang Điều này mang lại sự mượt mà và hiệu quả cho người dùng.
Dự án này áp dụng kiến trúc RESTful API để đảm bảo tính linh hoạt và khả năng mở rộng, thay vì sử dụng mô hình MVC Hiệu suất backend được tối ưu hóa thông qua Spring Boot cùng với cơ sở dữ liệu được thiết kế hợp lý Để nâng cao trải nghiệm người dùng, dự án kết hợp Angular, AJAX và các kỹ thuật tải nội dung tiên tiến.
Phân tích biểu đồ lớp
Sau đây là chi tiết thông tin của các lớp
STT Tên lớp Mô tả
1 AppRole Lớp AppRole chứa tên các quyền trong hệ thống
2 Cart Chứa thông tin giỏ hàng của khách hàng
3 CartDetail Chứa danh sách sản phẩm trong giỏ hàng của khách hàng hàng
6 Notification Chứa các thông báo cho quản trị viên
7 Order Chứa danh sách đơn hàng của khách hàng
8 OrderDetail Chứa danh sách đơn hàng chi tiết
9 Product Chứa danh sách các sản phẩm sách
10 Rate Chứa danh sách nội dung bình luận của sản phẩm
11 User Chứa danh sách các tài khoản của hệ thống
Bảng 12: Mô tả các lớp trong hệ thống
Bảng thuộc tính lớp AppRole
Tên thuộc tính Ý nghĩa id Khóa chính name Tên quyền
Bảng 13: Bảng thuộc tính AppRole
Bảng thuộc tính lớp Category
Tên thuộc tính Ý nghĩa categoryId Khóa chính, tự động tăng khi thêm dữ liệu categoryName Tên danh mục
Bảng 14: Bảng thuộc tính lớp Category
Tên thuộc tính Ý nghĩa cartId Khóa chính, tự động tăng khi thêm dữ liệu
Amount Tổng tiền giỏ hàng address Địa chỉ phone Số điện thoại
Bảng 15: Bảng thuộc tính lớp Cart
Bảng thuộc tính lớp CartDetail
Tên thuộc tính Ý nghĩa cartDetailId Khóa chính, tự động tăng khi thêm dữ liệu quantity Số lượng price Giá tiền product Sản phẩm cart Giỏ hàng
Bảng 16: Bảng thuộc tính lớp CartDetail
Bảng thuộc tính lớp Favorite
Tên thuộc tính Ý nghĩa favoriteId Khóa chính, tự động tăng khi thêm dữ liệu user Tài khoản product Sản phẩm
Bảng 17: Bảng thuộc tính lớp Favorite
Tên thuộc tính Ý nghĩa id Khóa chính, tự động tăng khi thêm dữ liệu message Nội dung thông báo time Thời gian thông báo status Trạng thái thông báo
Bảng 18: Bảng thuộc tính lớp Notification
Bảng thuộc tính lớp Order
Các thuộc tính của đơn hàng bao gồm: ordersId là khóa chính và tự động tăng khi có dữ liệu mới; orderDate ghi lại ngày đặt hàng; amount thể hiện tổng tiền của đơn hàng; address là địa chỉ nhận hàng; phone là số điện thoại của người nhận; status cho biết trạng thái hiện tại của đơn hàng; và user là tài khoản khách hàng.
Bảng 19: Bảng thuộc tính lớp Order
Bảng thuộc tính lớp OrderDetail
Tên thuộc tính Ý nghĩa orderDetailId Khóa chính, tự động tăng khi thêm dữ liệu quantity Số lượng đặt price Giá tiền khi đặt product Sản phẩm order Đơn hàng
Bảng 20: Bảng thuộc tính lớp OrderDetail
Bảng thuộc tính lớp Product
The product attributes include a unique product ID that serves as the primary key and auto-increments with each data addition The product name identifies the item, while the quantity reflects the remaining stock The price indicates the cost of the product, and the discount shows any applicable reductions An image represents the product visually, accompanied by a description that provides further details The entered date marks when the product was created, and the status indicates its current condition Additionally, the sold attribute tracks the quantity sold, and the category classifies the product within a specific group.
Bảng 21: Bảng thuộc tính lớp Product
Bảng thuộc tính lớp Rate
Trong bài viết này, chúng ta sẽ khám phá các thuộc tính quan trọng trong cơ sở dữ liệu Đầu tiên, thuộc tính "id" được sử dụng làm khóa chính và tự động tăng khi có dữ liệu mới được thêm vào Tiếp theo, "rating" thể hiện đánh giá sao của người dùng, trong khi "comment" chứa nội dung bình luận của họ "rateDate" ghi lại ngày đánh giá, và cuối cùng, "orderDetail" cung cấp chi tiết về đơn hàng liên quan.
Bảng 22: Bảng thuộc tính lớp Rate
Bảng thuộc tính lớp User
The article outlines key attributes for user data management, including userId as the primary key that auto-increments with new entries, name for the user's full name, email for communication, password for account security, phone for contact information, address for location details, gender for personal identification, image for profile representation, registerDate for the account creation date, status to indicate account activity, token for login authentication, and roles to define user permissions.
Bảng 23: Bảng thuộc tính lớp User
Phân tích biểu đồ tuần tự
2.5.1 Biểu đồ tuần tự đăng ký
Hình 3: Sơ đồ tuần tự đăng ký tài khoản
2.5.2 Biểu đồ tuần tự đăng nhập
Hình 4: Sơ đồ tuần tự đăg nhập
2.5.3 Sơ đồ tuần tự đặt hàng
Hình 5: Sơ đồ tuần tự đặt hàng
2.5.4 Biểu đồ tuần tự thêm danh mục
2.5.6 Biểu đồ tuần tự xóa tài khoản
Hình 7: Biểu đồ tuần tự xóa tài khoản
2.5.8 Biểu đồ cập nhật trạng thái đơn hàng
Hình 8: Biểu đồ cập nhật trạng thái đơn hàng
2.5.9 Biểu đồ tuần tự thống kê doanh thu
2.5.10 Biểu đồ tuần tự tìm kiếm sản phẩm
Hình 10: Biểu đồ tuần tự tìm kiếm sản phẩm
2.5.11 Biểu đồ tuần tự xóa danh mục
Hình 11: Biểu đồ tuần tự xóa danh mục
2.5.12 Biểu đồ tuần tự hủy đơn hàng
Hình 12: Biểu đồ tuần tự hủy đơn hàng
Thiết kế hệ thống
Hình 13: Cơ sở dữ liệu hệ thống
Giải thích các mối quan hệ trong bảng
- Bảng app_roles với bảng users quan hệ n-n: 1 quyền có nhiều tài khoản, 1 tài khoản chỉ có nhiều quyền, bảng user_roles là bảng trung gian giữa 2 bảng
- Bảng favorite với bảng users quan hệ 1-n: 1 tài khoản có nhiều yêu thích, 1 yêu thích chỉ thuộc về 1 tài khoản
- Bảng users với bảng cart quan hệ 1-1: 1 tài khoản có 1 giỏ hàng, 1 giỏ hàng chỉ thuộc về 1 tài khoản
- Bảng carts với bảng cart_details quan hệ 1-n: 1 giỏ hàng có nhiều chi tiết, 1 chi tiết giỏ hàng chỉ thuộc về 1 giỏ hàng
- Bảng product với bảng favorite quan hệ 1-n: 1 sản phẩm có nhiều yêu thích, 1 yêu thích chỉ có 1 sản phẩm
- Bảng orders và bảng order_details quan hệ 1-n: 1 đơn hàng có nhiều chi tiết, 1 chi tiết đơn hàng chỉ thuộc về 1 đơn hàng
- Bảng category với bảng product quan hệ 1-n: 1 danh mục có nhiều sản phẩm, 1 sản phẩm chỉ thuộc 1 danh mục
- Bảng users và bảng rate quan hệ 1-n: 1 tài khoản có nhiều đánh giá, 1 đánh giá chỉ thuộc về 1 tài khoản
- Bảng product và bảng rate quan hệ 1-n: 1 sản phẩm có nhiều đánh giá, 1 đánh giá chỉ thuộc về 1 sản phẩm
- Bảng order_details và bảng rate quan hệ 1-n: 1 order_details có nhiều đánh giá,
1 đánh giá chỉ thuộc về 1 order_details
CÀI ĐẶT VÀ THỬ NGHIỆM HỆ THỐNG
Kiến trúc hệ thống và môi trường triển khai
Hệ thống được thiết kế theo kiến trúc Client-Server, sử dụng HTML, CSS và JavaScript cho phần frontend để phát triển giao diện người dùng, trong khi Spring Boot đảm nhận vai trò backend cung cấp các RESTful API Khi máy khách gửi yêu cầu HTTP đến máy chủ Spring Boot, máy chủ sẽ tiếp nhận và xử lý dữ liệu, sau đó trả kết quả về cho máy khách dưới dạng JSON hoặc các định dạng phù hợp khác Hệ thống hoạt động với một máy chủ backend duy nhất, có khả năng chấp nhận tất cả các yêu cầu hợp lệ từ máy khách, không phân biệt vị trí địa lý.
Server sẽ ghi dữ liệu vào database mysql và elasticsearch khi người dùng có yêu cầu thêm, sửa và xóa dữ liệu
Hình 14: kiến trúc tổng quát hệ thống
3.2.1 Môi trường triển khai ứng dụng
- Ngôn ngữ lập trình backend: java, framework spring boot
- Ngôn ngữ lập trình frontend: javascript, framework angular
- IDE: intellij, visual studio code
- Cơ sở dữ liệu: mysql chạy trên phpmyadmin và mysql workbench
Thử nghiệm và đánh giá
Trong phần Thử nghiệm và đánh giá, đồ án sẽ trình bày các giao diện dành cho người dùng chưa đăng nhập, người dùng đã đăng nhập và giao diện quản trị viên.
3.2.1 Giao diện cho người dùng chưa đăng nhập
Khi người dùng chưa đăng nhập, trang chủ sẽ hiển thị danh sách sản phẩm Khi nhấp vào một sản phẩm, màn hình chi tiết sẽ xuất hiện với các hình ảnh và giao diện khác nhau.
Hình 15: Giao diện trang chủ
Hình 16: Giao diện trang chi tiết sản phẩm
Hình 17: Giao diện thông tin bình luận
Hình 18: Giao diện tìm kiếm sản phẩm
Hình 19: Giao diện trang tin tức
Hình 20: Giao diện trang đăng nhập
Hình 21: Giao diện trang đăng ký tài khoản
3.2.2 Giao diện cho người dùng đã đăng nhập
Tại đây, người dùng có thể quản lý địa chỉ nhận hàng, đặt hàng, cập nhật mật khẩu, quản lý đơn hàng đã đặt
Hình 22: Giao diện quản lý địa chỉ
Hình 24: Giao diện đổi mật khẩu
Hình 25: Giao diện lịch đặt hàng
3.2.3 Giao diện cho quản trị viên
Quản trị viên có thể quản lý thêm sửa xóa danh mục, bài viết, quản lý tài khoản, sản phẩm, đơn hàng, doanh thu,….
Hình 26: Giao diện trang chủ admin
Hình 28: Giao diện quản lý tài khoản
Hình 29: Giao diện thêm tài khoản
Hình 30: Giao diện quản lý bài viết
Hình 31: Giao diện thêm bài viết
Hình 32: Giao diện quản lý danh mục
Hình 33: Giao diện quản lý sản phẩm
Hình 34: Giao diện quản lý banner
Hình 35: Giao diện quản lý đơn hàng
Hình 36: Giao diện quản lý nhập hàng
Hình 37: Giao diện quản lý khuyến mại