TỔNG QUAN VỀ ĐỀ TÀI
Tính cấp bách của đề tài
Việt Nam đang trên đà phát triển mạnh mẽ, đặc biệt là Thành phố Hồ Chí Minh, nơi có sự bùng nổ trong thương mại điện tử Nhu cầu mua sắm online ngày càng tăng, đặc biệt trong giới trẻ Do đó, chúng tôi quyết định thiết kế một website thương mại điện tử chuyên bán giầy, nhằm đáp ứng nhu cầu mua sắm từ xa của người tiêu dùng.
Mục đích của đề tài
Đề tài xây dựng website thương mại điện tử bán giày tập trung vào các mục tiêu nghiên cứu quan trọng mà sinh viên cần đạt được, bao gồm việc xác định nhu cầu thị trường, thiết kế giao diện thân thiện với người dùng, tối ưu hóa trải nghiệm mua sắm trực tuyến, và áp dụng các chiến lược marketing hiệu quả để thu hút khách hàng.
Bài toán đầu tiên yêu cầu sinh viên nghiên cứu chuyên môn và khả năng ứng dụng của công nghệ như Spring Boot, Spring Security, Data JPA, Bootstrap 4 và MySQL Ngoài việc sử dụng công nghệ đã chọn, nhóm cần tìm hiểu các thư viện, module mã nguồn và mẫu thiết kế để cải thiện quá trình xây dựng website và nâng cao trải nghiệm người dùng Đồng thời, nhóm cũng cần nắm vững quy trình lưu trữ để triển khai sản phẩm trên internet.
Vấn đề thứ hai trong đề tài là việc áp dụng kiến thức đã học để phát triển một sản phẩm cụ thể, đó là website bán giày Sản phẩm này cần là một ứng dụng web đáp ứng các yêu cầu cơ bản cho việc mua bán sản phẩm, đồng thời có khả năng nâng cấp để phát triển thêm nhiều tính năng trong tương lai.
Phạm vi nghiên cứu
Trang web hướng đến người dùng (phần lớn là giới trẻ) muốn mua giày trực tuyến tại nhà
Phương pháp nghiên cứu
Tìm hiểu và nắm vững lý thuyết cũng như công nghệ của Spring Boot, Spring Security, Data JPA, Bootstrap 4 và MySQL thông qua các tài liệu trực tuyến và khóa học trên internet là cách hiệu quả để nâng cao kỹ năng lập trình.
- Tham khảo kỹ năng việc làm tại các trang tuyển dụng như kingshoes, trivela,…
Kingshoes là một trang thương mại điện tử chuyên cung cấp giày và các phụ kiện liên quan, bao gồm dây giày và bộ kit tự vệ sinh Đặc biệt, Kingshoes còn cung cấp dịch vụ "SPA GIÀY" cho những ai bận rộn và không có thời gian chăm sóc giày của mình.
Link website: https://kingshoes.vn/
- Phân loại giày rõ ràng
Trivela là một website chuyên bán giày và các sản phẩm thể thao, tương tự như Kingshoes, nhưng với sự đa dạng hơn về mặt hàng Ngoài giày, Trivela còn cung cấp quần áo, kính mắt, balo và phụ kiện thể thao, đáp ứng nhu cầu của những người yêu thích hoạt động thể thao.
Link website: https://trivela.vn/
- Phân loại giày rõ ràng
Kết quả mong đợi đạt được
Xây dựng một trang web kết nối việc làm cho ngành công nghệ thông tin, sử dụng công nghệ Spring Boot và Data JPA, kết hợp với Bootstrap để tạo giao diện hấp dẫn Các sản phẩm Frontend được triển khai trên Vercel và sản phẩm Backend được lưu trữ trên Heroku, đảm bảo hiệu suất và khả năng mở rộng cho người dùng.
1.5.1 Phía khách chưa có tài khoản
1.5.2 Phía khách đã có tài khoản
- Kiểm tra lịch sử mua hàng
Xem danh sách người dùng
- Xem thống kê, số liệu
CƠ SỞ LÝ THUYẾT
Tổng quan về công nghệ
2.1.1 Tổng quan về ngôn ngữ lập trình Java
Java là một ngôn ngữ lập trình hướng đối tượng phổ biến, thường được sử dụng trong phát triển phần mềm, thiết kế trang web, lập trình game và xây dựng ứng dụng cho thiết bị di động.
Java, được sáng lập bởi James Gosling và nhóm của ông tại Sun Microsystems vào năm 1991, ban đầu được phát triển để viết phần mềm cho các sản phẩm gia dụng với tên gọi là Oak Java chính thức được phát hành vào năm 1994 và đã được Oracle mua lại từ Sun Microsystems vào năm 2010.
Java được thiết kế với nguyên tắc “Viết một lần, thực thi khắp nơi” (WORA), cho phép các chương trình viết bằng Java chạy trên nhiều nền tảng khác nhau Điều này chỉ khả thi khi có môi trường thực thi phù hợp hỗ trợ nền tảng đó.
2.1.2 Tổng quan về hệ quản trị cơ sở dữ liệu mysql
MySQL is a relational database management system (RDBMS) that utilizes SQL (Transact-SQL) for data exchange between the client and the SQL Server An RDBMS encompasses databases, a database engine, and applications designed to manage data and various components within the RDBMS.
MySQL is optimized to operate in Very Large Database Environments, handling data sizes up to terabytes while supporting thousands of concurrent users Additionally, SQL Server seamlessly integrates with other servers, including Microsoft Internet Information Server (IIS), E-Commerce Server, and Proxy Server, enhancing its functionality and performance.
2.1.3 Các thư viện – Framework hỗ trợ
Apache Tomcat là một Java Servlet được phát triển bởi Apache Software Foundation (ASF) Tomcat thi hành các ứng dụng Java Servlet và JavaServer Pages (JSP) từ Sun
Microsystems, và cung cấp một máy chủ HTTP cho ngôn ngữ Java thuần túy để thực thi các chương trình lệnh viết bằng ngôn ngữ Java
Spring Boot là một phần quan trọng của hệ sinh thái Spring framework, giúp đơn giản hóa quá trình khởi tạo dự án với Spring Nhờ vào Spring Boot, người phát triển có thể tập trung vào việc xây dựng các tính năng kinh doanh cho ứng dụng mà không phải lo lắng về cấu hình phức tạp Dưới đây là một số ưu điểm nổi bật của Spring Boot.
Tạo ứng dụng Spring độc lập, đóng gói dưới dạng một file JAR (standalone application)
- Tối ưu công đoạn cấu hình cho ứng dụng Spring, không yêu cầu XML, config…
- Nhúng trực tiếp các ứng dụng server (Tomcat, Jetty…) do đó không cần phải triển khai file WAR
[2] Spring Data là một module của Srinng Framework Mục đích của Spring Data là giảm thiểu việc thực hiện quá nhiều bước để có thể implement được JPA
Spring Data JPA is a component of Spring Data that supports Hibernate 5, OpenJPA 2.4, and EclipseLink 2.6.1 Unlike Hibernate, Spring Data JPA is not a JPA provider; rather, Hibernate serves as a JPA provider by implementing the JPA specification.
Spring Data Commonds là một phần của Spring data nó cung cấp nền tảng chia sẻ
Nó bao gồm các repository interfaces cũng như các metadata model cho persit java class
Java Database Connectivity (JDBC) là một API dành cho ngôn ngữ lập trình Java, giúp truy cập và tương tác với Cơ Sở Dữ Liệu (CSDL) JDBC cung cấp các phương thức để thực hiện truy vấn và cập nhật CSDL một cách gián tiếp qua Java Phiên bản Java 2, Standard Edition 1.4 (J2SE) bao gồm JDBC 3.0, mở rộng khả năng truy cập CSDL trong môi trường máy ảo Java.
Apache Maven is a project management tool that enables developers to manage versions, dependencies (libraries used in the project), and build processes, while also automating the download of Javadoc and source files.
Mục tiêu chính của Maven là cung cấp cho nhà phát triển những điều sau:
- Cung cấp một mô hình toàn diện cho các dự án, giúp nó có thể tái sử dụng, bảo trì và dễ hiểu hơn
- Cung cấp các plugins hoặc công cụ tương tác với mô hình khai báo này
Maven cấu trúc dự án thông qua nội dung được khai báo trong tập tin pom.xml, được gọi là mô hình đối tượng dự án (POM), là đơn vị cơ bản của hệ thống Maven.
Bootstrap là một framework front-end miễn phí, giúp quá trình phát triển web trở nên nhanh chóng và dễ dàng Nó bao gồm các mẫu thiết kế dựa trên HTML và CSS, như typography, forms, buttons, tables, navigation, modals, và image carousels, cùng với các plugin JavaScript tùy chọn Ngoài ra, Bootstrap còn cho phép người dùng tạo ra các thiết kế responsive một cách đơn giản.
Apache Tiles là một framework mã nguồn mở do Apache phát triển, nhằm đơn giản hóa quá trình phát triển ứng dụng web, đặc biệt trong mô hình MVC Ý tưởng của Apache Tiles giống như việc xếp các viên ngói để tạo nên một mái nhà, trong đó mỗi trang web được cấu thành từ các "viên ngói" là các file JSP (JSP fragment) Framework này cho phép bạn định nghĩa khuôn mẫu (Template) để kết hợp các thành phần JSP lại với nhau, tạo nên một trang web hoàn chỉnh.
2.1.3.8 JavaServer Pages Standard Tag Library (JSTL)
JavaServer Pages Standard Tag Library (JSTL) là một tập hợp các thẻ JSP hữu ích, mà gói các tính năng lõi phổ biến tới các ứng dụng JSP
JSTL hỗ trợ các tác vụ phổ biến và có cấu trúc như lặp và điều kiện, thao tác với tài liệu XML, hỗ trợ đa ngôn ngữ và các thẻ SQL Nó cũng cung cấp một framework để tích hợp các Custom Tags với thẻ JSTL.
2.1.3.9 API của Giao Hàng Nhanh
Công ty giao nhận đầu tiên tại Việt Nam được thành lập vào năm 2012, nhằm đáp ứng nhu cầu vận chuyển chuyên nghiệp cho các đối tác thương mại điện tử trên toàn quốc.
Giao hàng nhanh không chỉ cung cấp dịch vụ giao hàng mà còn hỗ trợ các nhà phát triển trong việc tích hợp dịch vụ vào các trang thương mại điện tử Các nhà phát triển có thể tận dụng API của giao hàng nhanh để dễ dàng tạo hóa đơn, tính phí giao hàng và ước lượng thời gian giao hàng đến tay người tiêu dùng.
CÁC YÊU CẦU VỀ MÔ HÌNH
Mô hình hóa yêu cầu
3.1.1 Sơ đồ cơ cấu tổ chức
Hình 3.1 Sơ đồ cơ cấu tổ chức
3.1.2 Yêu cầu chức năng của hệ thống
- Xem thông tin sản phẩm
2 Customer - Có các chức năng cơ bản của người xem
- Xem lịch sử đơn hàng
- Đánh giá chất lượng sản phẩm qua mail
- Xem tất cả các sản phẩm đã mua
3 Admin - Đăng nhập, đăng xuất
- Quản lý loại sản phẩm
- Quản lý thông tin sản phẩm
Bảng 3.1 Yêu cầu chức năng của hệ thống
Sơ đồ Usecase tổng quát
Hình 3.2 Sơ đồ Use case tổng quát
Usecase chi tiết
3.3.1 Use Case đăng nhập, đăng xuất
Hình 3.3 Use Case đăng nhập Bảng 3.2 Đặc tả Use Case đăng nhập
Description Cho phép actor đăng nhập vào hệ thống
Pre-condition Actor đã có tài khoản tạo sẵn
Post-condition Nếu đăng nhập thành công – truy cập vào Website
Trigger Actor nhấn [Đăng nhập]
2 Hiển thị màn hình đăng nhập
3 Actor nhập tên đăng nhập và mật khẩu
4 Nhấn nút [Đăng nhập] hoặc nhấn Enter
Exception flow Nếu thất bại – thông báo lỗi
Bảng 3.3 Đặc tả Use Case đăng xuất
Description Cho phép actor đăng xuất khỏi tài khoản hệ thống
Pre-condition Đăng nhập vào thành công vào hệ thống
Post-condition Đăng xuất tài khoản – quay lại trang Đăng nhập
Trigger Actor nhấn [Đăng xuất]
Basic flow Nhấn [Đăng xuất]
Hình 3.4 Use Case đăng ký
Bảng 3.4 Đặc tả Use Case đăng ký
Description Cho phép actor tạo tài khoản thành viên
Pre-condition Actor phải điền đầy đủ thông tin và đúng định dạng
Post-condition Tài khoản thành viên mới được tạo
Trigger Actor nhấn [Đăng ký]
1 Nhập thông tin tài khoản
3 Thông báo kết quả đăng ký
Exception Nhập thông tin không đúng định dạng – thông báo lỗi Đăng ký không thành công – thông báo lỗi
3.3.3 Use Case quản lý sản phẩm
Hình 3.5 Use Case quản lý sản phẩm
Bảng 3.5 Đặc tả Use Case quản lý sản phẩm
Name Quản lý sản phẩm
Description Cho phép actor thêm, sửa, xóa sản phẩm
Post-condition Hiển thị danh sách thông tin sản phẩm
Trigger Actor chọn [Quản lý]/ [Sản phẩm]
3 Danh sách được load và hiển thị danh sách sản phẩm
Exception Không có dữ liệu
3.3.4 Use Case quản lý danh mục
Hình 3.6 Use Case quản lý danh mục
Bảng 3.10 Đặc tả Use Case quản lý loại sản phẩm Name Quản lý loại sản phẩm
Description Cho phép actor thêm, sửa, xóa loại sản phẩm
Post-condition Hiển thị danh sách loại sản phẩm
Trigger Actor chọn [Quản lý]/ [Loại sản phẩm]
3 Danh sách được load và hiển thị danh sách loại sản phẩm
Exception Không có dữ liệu
3.3.5 Use Case quản lý tin tức
Hình 3.7 Use Case quản lý tin tức
Bảng 3.10 Đặc tả Use Case quản lý tin tức Name Quản lý loại sản phẩm
Description Cho phép actor thêm, sửa, xóa loại tin tức
Post-condition Hiển thị danh sách tin tức
Trigger Actor chọn [Quản lý]/ [Tin tức]
3 Danh sách được load và hiển thị danh sách tin tức
Exception Không có dữ liệu
3.3.6 Use Case quản lý hóa đơn
Hình 3.8 Use Case quản lý hóa đơn Bảng 3.4 Đặc tả Use Case quản lý giỏ hàng
Name Quản lý giỏ hàng
Description Cho phép actor quản lý giỏ hàng, sau khi thêm sản phẩm vào giỏ hàng
Pre-condition Actor phải thêm sản phẩm vào giỏ hàng
Post-condition Hiển thị sản phẩm trong giỏ hàng
Trigger Actor chọn biểu tượng [Giỏ hàng]
2 Giỏ hàng được load – hiển thị giỏ hàng
Exception Không có sản phẩm trong giỏ hàng – báo rỗng
Hình 3.9 Use Case thanh toán Bảng 3.5 Đặc tả Use Case thanh toán
Description Cho phép actỏ thanh toán đơn hàng
Giỏ hàng có sản phẩm
Post-condition Đơn hàng được xác nhận và sẽ giao hàng
2 Đơn hàng chuyển vào trạng thái “Đang giao”
3.3.8 Use Case quản lý thông tin cá nhân của tài khoản
Use Case quản lý thông tin cá nhân của tài khoản là một phần quan trọng trong hệ thống, cho phép người dùng dễ dàng cập nhật và quản lý thông tin cá nhân của mình Bảng 3.6 cung cấp đặc tả chi tiết về quy trình này, giúp người dùng hiểu rõ hơn về các chức năng và tính năng liên quan Việc quản lý thông tin cá nhân không chỉ nâng cao trải nghiệm người dùng mà còn đảm bảo tính bảo mật và chính xác của dữ liệu.
Description Cho phép actor xem thông tin cá nhân tài khoản
Post-condition Thông tin cá nhân của actor sẽ được load
Trigger Nhấn [Thông tin tài khoản]
1 Nhấn [Thông tin tài khoản]
2 Load thông tin tài khoản
3.3.9 Use Case tìm kiếm sản phẩm
Hình 3.11 Use Case tìm kiếm sản phẩm Bảng 3.7 Đặc tả Use Case tìm kiếm sản phẩm
Name Tìm kiếm sản phẩm
Description Cho phép actor tìm kiếm sản phẩm
Pre-condition Actor phải nhập thông tin sản phẩm
Post-condition Thông tin sản phẩm sẽ xuất hiện (nếu có)
Trigger Actor nhập thông tin sản phẩm cần tìm vào ô tìm kiếm
1 Nhập sản phẩm cần tìm
2 Nhấn [Tìm kiếm] hoặc Enter
3 Load sản phẩm cần tìm (nếu có)
3.3.10.Use Case quản lý thống kê
Hình 3.12 Use Case quản lí thống kê Bảng 3.8 Đặc tả Use Case quản lý thông kê
Name Quản lý thống kê
Description Cho phép actor quản lý thống kê doanh thu: theo loại, theo khách hàng, theo năm, theo quý, theo tháng
Post-condition Hiển thị danh sách thống kê
Trigger Actor chọn [Thống kê]
2 Danh sách được load và hiển thị các thống kê
Exception Không có dữ liệu
3.3.11.Use Case quản lý người dùng
Hình 3.13 Use Case quản lí người dùng Bảng 3.9 Đặc tả Use Case quản lý người dùng
Name Quản lý người dùng
Description Cho phép actor quản lý thông tin tài khoản của người dùng Bao gồm Admin và Customer
Post-condition Hiển thị danh sách thống kê
Trigger Actor chọn [Quản lý người dùng]
1 Chọn [Quản lý người dùng]
2 Danh sách được load và hiển thị các thông tin tài khoản của người dùng
Exception Không có dữ liệu
3.3.12.Use Case xem lịch sử đơn hàng
Hình 3.14 Use Case xem lịch sử đơn hàng Bảng 3.10 Đặc tả Use Case xem lịch sử đơn hàng
Name Xem lịch sử đơn hàng
Description Cho phép actor xem lịch sử đơn hàng của mình
Post-condition Hiển thị danh sách các đơn hàng đã thanh toán
Trigger Actor chọn [Lịch sử đơn hàng]
1 Chọn [Lịch sử đơn hàng]
2 Danh sách được load và hiển thị thông tin các đơn hàng đã thanh toán
Exception Không có dữ liệu
3.3.13.Use Case xem tất cả sản phẩm đã mua
Hình 3.15 minh họa Use Case cho việc xem tất cả sản phẩm đã mua, trong khi Bảng 3.11 cung cấp đặc tả chi tiết cho Use Case này Tên của Use Case là "Xem tất cả sản phẩm đã mua".
Description Cho phép actor xem tất cả sản phẩm đã mua
Post-condition Hiển thị danh sách các sản phẩm đã mua
Trigger Actor chọn [Sản phẩm đã mua]
1 Chọn [Sản phẩm đã mua]
2 Danh sách được load và hiển thị thông tin các sản phẩm đã mua
Exception Không có dữ liệu
Biểu đồ hoạt động
3.4.1 Biểu đồ hoạt động đăng nhập, đăng xuất
Hình 3.16 Biểu đồ hoạt động chức năng đăng nhập
Bước 1: Người dùng gửi yêu cầu đăng nhập vào hệ thống bằng cách click vào nút “Đăng nhập” Bước 2: Màn hình hiển thị giao diện đăng nhập
Bước 3: Người dùng nhập vào tài khoản và mật khẩu
Bước 4: Hệ thống kiểm tra tính hợp lệ của dữ liệu đầu vào:
Dữ liệu hợp lệ Chuyển sang Bước 5
Dữ liệu không hợp lệ Chuyển sang bước 3
Bảng 3.2 Các trường hợp dữ liệu không hợp lệ
Dữ liệu không hợp lệ Thông báo hệ thống
Tài khoản chứa khoảng trắng Tài khoản không được chứa khoảng trắng
Mật khẩu chứa khoảng trắng Mật khẩu không được chứa khoảng trắng
Tài khoản chứa kí tự đặc biệt Tài khoản không được chứa kí tự đặc biệt
Tài khoản ít hơn 3 kí tự Tài khoản tối thiểu 3 kí tự
Tài khoản nhiều hơn 50 kí tự Tài khoản tối đa 50 kí tự
Mật khẩu ít hơn 6 kí tự Mật khẩu tối thiểu 6 kí tự
Mật khẩu nhiều hơn 30 kí tự Mật khẩu tối đa 30 kí tự
Bước 5: Hệ thống kiểm tra thông tin đăng nhập trong CSDL:
Nếu dữ liệu tồn tại trong CSDL Chuyển sang Bước 6
Nếu dữ liệu không tồn tại trong CSDL thông báo “Sai tên tài khoản hoặc mật khẩu” và trở lại Bước 3
Bước 6: Cấp quyền đăng nhập cho người dùng
Hình 3.17 Biểu đồ hoạt động chức năng đăng xuất
Bước 1: Người dùng gửi yêu cầu đăng xuất khỏi hệ thống bằng cách click vào nút “Đăng xuất”
Bước 2: Hệ thống yêu cầu người dùng xác nhận đăng xuất
Bước 3: Người dùng xác nhận đăng xuất
Bước 4: Hệ thống thực hiện đăng xuất tài khoản người dùng ra khỏi hệ thống và thông báo “Đăng xuất thành công”
3.4.2 Biểu đồ hoạt động tìm kiếm sản phẩm
Hình 3.18 Biểu đồ hoạt động tìm kiếm sản phẩm
Bước 1: Người dùng nhập từ khóa tìm kiếm
Bước 2: Hệ thống lấy ra danh sách sản phẩm và đối chiếu với từ khóa người dùng nhập vào và đưa ra kết quả
Bước 3: Hiển thị kết quả ra màn hình
3.4.3 Biểu đồ hoạt động xem chi tiết sản phẩm
Hình 3.19 Biểu đồ hoạt động xem chi tiết sản phẩm
Bước 1: Người dùng chọn sản phẩm cần xem chi tiết
Bước 2: Hệ thống lấy dữ liệu và trả về kết quả
Bước 3: Hiển thị kết quả lên màn hình
3.4.4 Biểu đồ hoạt động đặt hàng
Hình 3.20 Biểu đồ hoạt động đặt hàng
Bước 1: Người dùng muốn đặt hàng thì click vào nút “Đặt hàng”
Bước 2: Nhập các thông tin cần thiết như họ tên, số điện thoại, địa chỉ,…
Bước 3: Hệ thống kiểm tra thông tin nhập vào
Nếu hợp lệ chuyển sang bước 4
Nếu không hợp lệ chuyển về bước 2 và đưa ra thông báo
Dữ liệu không hợp lệ Thông báo hệ thống
Các ô dữ liệu để trống Vui lòng không bỏ trống ô này
Bước 4: Hệ thống tạo đơn hàng và lưu vào cơ sở dữ liệu
Bước 5: Hiển thị kết quả trên màn hình với thông báo “Bạn đã đặt hàng thành công Chúng tôi sẽ liên hệ trong 24 giờ để xác nhận đơn hàng.”
3.4.5 Biểu đồ hoạt động đánh giá sản phẩm
Hình 3.21 Biểu đồ hoạt động đánh giá sản phẩm
Use case cho phép người dùng truy cập vào website để viết bình luận đánh giá về chất lượng sản phẩm
- Dòng sự kiện khác: Không có
- Yêu cầu đặc biệt: Không có
- Tiền điều kiện: không có
- Hậu điều kiện: Nếu use case thành công thì người dùng sẽ có quyền sử dụng hệ thống để viết bình luận, đánh giá
Sau khi truy cập vào website, người dùng sẽ thấy phần đánh giá của khách hàng, nơi mà những nhận xét về chất lượng sản phẩm và dịch vụ của website được hiển thị.
Sequence Diagram
Hình 3.22 Sequence Diagram Đăng ký
Hình 3.23 Sequence Diagram Đăng nhập
Hình 3.24 Sequence Diagram Đăng xuất
Hình 3.25 Sequence Diagram Cập nhật thông tin
Hình 3.26 Sequence Diagram Thêm Category
Hình 3.27 Sequence Diagram Cập nhật Category
Hình 3.28 Sequence Diagram Xóa Category
Hình 3.29 Sequence Diagram Thêm Product
Hình 3.30 Sequence Diagram Cập nhật Product
Hình 3.31 Sequence Diagram Xóa Product
Hình 3.32 Sequence Diagram Thêm Brand
Hình 3.33 Sequence Diagram Cập nhật Brand
Hình 3.33 Sequence Diagram Xóa Brand
Hình 3.34 Sequence Diagram Thêm Post
Hình 3.35 Sequence Diagram Cập Nhật Post
Hình 3.36 Sequence Diagram Xóa Post
Hình 3.37 Sequence Diagram Thêm Promotion
Hình 3.38 Sequence Diagram Cập Nhật Promotion
Hình 3.39 Sequence Diagram Xóa Promotion
Hình 3.40 Sequence Diagram Thêm Rate
Hình 3.41 Sequence Diagram Xóa Rate
Hình 3.42 Sequence Diagram Thêm Comment
Hình 3.43 Sequence Diagram Cập nhật Comment
Hình 3.44 Sequence Diagram Xóa Comment
Hình 3.45 Sequence Diagram Tìm kiếm
PHÂN TÍCH HỆ THỐNG VÀ THIẾT KẾ
Thiết kế cơ sở dữ liệu
4.1.1 Sơ đồ thiết kế cơ sở dữ liệu
Hình 4.1 Sơ đồ thiết kế cơ sở dữ liệu
4.1.2 Đặc tả sơ đồ thiết kế cơ sở dữ liệu
Bảng 4.1 Bảng users STT Thuộc tính Kiểu dữ liệu Khóa Ràng buộc Mô tả
1 Id Nvarchar(255) PK Not null Mã người dùng
2 City Nvarchar(100) Not null Tỉnh/Thành phố
3 District Nvachar(100) Not null Quận/ Huyện
4 Ward Nvarchar(100) Not null Phường/ Xã
5 Address Nvarchar(255) Not null Địa chỉ nhà
6 Avatar Nvarchar(255) Not null Ảnh đại diện
7 Created_at Datetime Not null Ngày tạo
8 Email Nvarchar(255) Not null Địa chỉ email
9 Full_name Nvarchar(255) Not null Họ tên
10 Modified_at Datetime Not null Ngày chỉnh sửa
11 Password Nvarchar(255) Not null Mật khẩu
12 Phone Nvarchar(11) Not null Số điện thoại
13 Roles Json Not null Vai trò
14 Status Tinyint Not null Trạng thái
Bảng 4.2 Bảng orders STT Thuộc tính Kiểu dữ liệu Khóa Ràng buộc Mô tả
1 Id Bigint PK Not null Mã đơn hàng
2 Created_at Datetime Not null Ngày tạo đơn
3 Modified_at Datetime Not null Ngày sửa đơn
4 Note Nvarchar(255) Not null Ghi chú
5 Price Bigint Not null Giá thành
6 Promotion Json Not null Mã giảm giá
7 Quantity Int Not null Số lượng
8 City Nvarchar(100) Not null Tỉnh/ Thành phố
9 District Nvarchar(100) Not null Quận/ Huyện
10 Ward Nvarchar(100) Not null Phường/ Xã
8 Receiver_addres s Nvarchar(255) Not null Địa chỉ người nhận
9 Reciever_name Nvarchar(255) Not null Tên người nhận
10 Reciever_phone Nvarchar(11) Not null Số điện thoại người nhận
11 Size Int Not null Cỡ giày
12 Status Int Not null Trạng thái đơn hàng
13 Total_price Bigint Not null Tổng đơn giá
14 Buyer Bigint FK Not null Người mua
15 Created_by Bigint FK Not null
16 Modified_by Bigint FK Not null Người chỉnh sửa
17 Product_id Nvarchar(255) FK Not null Sản phẩm
18 Payment Int Not null Phương thức thanh toán
Bảng 4.3 Bảng statistic STT Thuộc tính Kiểu dữ liệu Khóa Ràng buộc Mô tả
1 Id Bigint PK Not null Mã số liệu
2 Created_at Datetime Not null Ngày tạo
3 Profit Bigint Not null Lợi nhuận
4 Quantity Int Not null Số lượng
7 Order_id Bigint FK Not null Đơn đặt hàng
Bảng 4.4 Bảng category STT Thuộc tính Kiểu dữ liệu Khóa Ràng buộc Mô tả
1 Id Bigint PK Not null Mã loại sản phẩm
2 Created_at Datetime Not null Ngày tạo
3 Modified_at Datetime Not null Ngày chỉnh sửa
4 Name Nvarchar(155) Not null Tên danh mục
6 Status Tinyint Not null Trạng thái
Bảng 4.5 Bảng products STT Thuộc tính Kiểu dữ liệu Khóa Ràng buộc Mô tả
1 Id Nvarchar(255) PK Not null Mã sản phẩm
2 Created_at Datetime Not null Ngày tạo
3 Description Text Not null Môt tả
4 Image_feedback Json Not null Hỉnh ảnh phản hồi
5 Images Json Not null Ảnh sản phẩm
6 Modified_at Datetime Not null Ngày chỉnh sửa
7 Name Nvarchar(255) Not null Tên sản phẩm
8 Price Bigint Not null Giá sản phẩm
9 Sale_price Bigint Not null Giá giảm
10 Slug Nvarchar(255) Not null Giảm giá
11 Status Int Not null Trạng thái
12 Total_sold Bigint Not null Tổng bán được
13 Product_view Int Not Null Lượt xem
14 Brand_id Bigint FK Not null Mã nhãn hàng
Bảng 4.6 Bảng promotions STT Thuộc tính Kiểu dữ liệu Khóa Ràng buộc Mô tả
1 Id Bigint PK Not null Mã promotion
2 Coupon_code Nvarchar(255) Not null Mã khuyến mãi
3 Created_at Datetime Not null Ngày tạo
4 Discount_type Int Not null Loại giảm giá
5 Disount_value Bigint Not null Giá giảm
6 Exprired_at Datetime Not null Ngày hết hạn
7 Is_active Tinyint Not null Bật/tắt mã
8 Is_public Tinyint Not null Chế độ mã
9 Maximum_disco unt_value Bigint Not null Giá giảm tối đa
10 Name Nvarchar(255) Not null Tên mã
13 Product_view Int Not Null Lượt xem
Bảng 4.7 Bảng product_size STT Thuộc tính Kiểu dữ liệu Khóa Ràng buộc Mô tả
1 Product_id Nvarchar(255) PK Not null Mã sản phẩm
2 Size Int PK Not null Kích cỡ
3 Quantity Int Not null Số lượng
Bảng 4.8 Bảng product_category STT Thuộc tính Kiểu dữ liệu Khóa Ràng buộc Mô tả
1 Product_id Nvarchar(255) Not null Mã sản phẩm
2 Category_id Bigtin Not null Mã danh mục
Bảng 4.9 Bảng product_category STT Thuộc tính Kiểu dữ liệu Khóa Ràng buộc Mô tả
1 Id Bigint PK Not null Mã bài viết
2 Content Text Not null Nội dung
3 Created_at Datetime Not null Ngày tạo
4 Description Text Not null Mô tả
5 Modified_at Datetime Not null Ngày sửa
6 Published_at Dateime Not null
8 Status Int Not null Trạng thái
10 Title Nvarchar(255) Not null Tiêu đề
11 Created_by Bigint FK Not null Người viết
12 Modified_by Bigint FK Not null Người sửa
Bảng 4.10 Bảng images STT Thuộc tính Kiểu dữ liệu Khóa Ràng buộc Mô tả
1 Id Nvarchar(255) PK Not null Mã hình ảnh
2 Created_at Datetime Not null Ngày tạo
3 Link Nvarchar(255) Unique Not null
4 Name Nvarchar(255) Not null Tên ảnh
5 Size Bigint Not null Kích cỡ ảnh
7 Created_by Bigint FK Not null Người tạo
Bảng 4.11 Bảng images STT Thuộc tính Kiểu dữ liệu Khóa Ràng buộc Mô tả
1 Id Bigint PK Not null Mã bình luận
2 Content Text Not null Nội dung
3 Created_at Dateime Not null Ngày bình luận
4 Post_id Bigint FK Mã bài đăng
5 Product_id Nvarchar(255) FK Mã sản phẩm
6 User_id Bigint FK Not null Người đăng
Bảng 4.12 Bảng brand STT Thuộc tính Kiểu dữ liệu Khóa Ràng buộc Mô tả
1 Id Bigint PK Not null Mã hãng
2 Created_at Datetime Not null Ngày tạo
3 Description Nvarchar(255) Not null Mô tả
4 Modified_at Datetime Not null Ngày sửa
5 Status Tinyint Not null Trạng thái
TRIỂN KHAI PHẦN MỀM
Các bước cài đặt
Clone project từ Github: https://github.com/Jake-Pham/shoes.git
Cài đặt môi trường, setting các tham số môi trường: jre, jdk 11 hoặc phiên bản 1.8 đối với Intelij
Import project vào eclipse và Update Project Maven để tải các dependency cần thiết cho project
Thay đổi các key, token key trong file: application.dev.properties, VNPay.java
Chạy các câu lệnh sql trong file data để thực hiện tạo database, table và insert data
Admin: admin@gmail.com admin@123
User: user@gmail.com user@123
Giao diện người dùng
Hình 5.1 Giao diện trang chủ
Hình 5 2: Giao diện trang đăng ký
5.2.3 Giao diện trang đăng nhập
Hình 5.3: Giao diện trang đăng nhập
5.2.4 Giao diện trang chi tiết sản phẩm
Hình 5.4: Giao diện trang chi tiết sản phẩm
Hình 5.5: Giao diện trang đặt hàng
5.2.6 Giao diện trang tin tức
Hình 5.6 Giao diện trang tin tức
5.2.7 Giao diện trang chính sách
Hình 5.7: Giao diện trang chính sách
5.2.8 Giao diện trang liên hệ
Hình 5.8 Giao diện trang liên hệ
5.2.9 Giao diện thông tin tài khoản
Hình 5.9: Giao diện trang thông tin tài khoản
Giao diện trang quản trị
5.3.1 Giao diện trang quản lý tài khoản
Hình 5.10: Giao diện trang quản lý tài khoản
5.3.2 Giao diện trang quản lý tài khoản
Hình 5.11: Giao diện trang quản lý tài khoản
5.3.3 Giao diện trang quản lý sản phẩm
Hình 5.12: Giao diện trang quản lý sản phẩm
5.3.4 Giao diện trang quản lý bài viết
Hình 5.13: Giao diện trang quản lý bài viết
5.3.5 Giao diện trang quản lý đơn hàng
Hình 5.14: Giao diện trang quản lý đơn hàng
Hình 5.15: Giao diện trang quản lý chi tiết đơn hàng
Kết quả thực hiện kiểm thử
- Giả định: username = ” admin@gmail.com” pass =” admin@123”
- Mục đích: kiểm thử chức năng đăng ký tài khoản
- Pre-conditions: thực hiện được chức năng đăng ký tài khoản
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Không nhập dữ liệụ 1 hoặc nhiều trường bắt buộc, bấm button đăng ký
Hiển thị thông báo lỗi không được để trống các trường tên tài khoản, mật khẩu, địa chỉ, email
Hiển thị thông báo lỗi không được để trống các trường tên tài khoản, mật khẩu, địa chỉ, email
2 Nhập tên tài khoản đã có
Hiển thị thông báo lỗi tên người dùng đã có hãy chọn một tên khác
Hiển thị thông báo lỗi tên người dùng đã có hãy chọn một tên khác
Nhập đúng các trường nhưng mật khẩu nhỏ hơn 6 kí tự
Hiển thị thông báo lỗi mật khẩu phải lớn hơn 6 kí tự
Hiển thị thông báo lỗi mật khẩu phải lớn hơn
Nhập đúng các trường nhưng sai đại chỉ email
Hiển thị thông báo lỗi sai địa chỉ email
Hiển thị thông báo lỗi sai địa chỉ email Pass
5 Nhập đầy đủ dữ liệu các trường
Hiển thị thông báo bạn đã đăng ký thành công
Hiển thị thông báo bạn đã đăng ký thành công Pass
- Mục đích: kiểm thử chức năng đăng nhập vào hệ thống
- Pre-conditions: thực hiện được chức năng đăng nhập vào hệ thống
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Không nhập dữ liệu cho các trường bấm button login
Hiển thị thông báo lỗi không được để trống các trường tên đăng nhập và mật khẩu
Hiển thị thông báo lỗi vui lòng điền vào trường tên tài khoản hoặc mật khẩu
2 Nhập sai tên đăng nhập hoặc mật khẩu
Hiển thị thông báo lỗi nhập sai tên đăng nhập hoặc mật khẩu
Hiển thị thông báo lỗi nhập sai tên đăng nhập hoặc mật khẩu
3 Nhập đúng tên đăng nhập và mật khẩu
Thực hiện chyển trang với quyền tương ứng
Thực hiện chyển trang với quyền tương ứng
5.4.3 Kiểm thử thêm sản phẩm
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử các chức năng trong lớp sản phẩm và xem có đúng với mô tả tài liệu
+ Thực hiện được chức năng thêm sản phẩm vào bảng
+ Khi người dùng điền không đầy đủ thông tin sẻ trả về
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Không nhập dữ liệu tất cả các trường và kích nút thêm mới
Hiển thị thông báo lỗi
“bạn chưa nhập dữ liệu”
Hiển thị thông báo vui lòng điền vào trường này (tất cả các trường bị bỏ trống) pass
Không nhập dữ liệu cho 1 trong tất cả các trường và kích nút thêm mới
Hiển thị thông báo lỗi
“bạn chưa nhập dữ liệu”
Hiển thị thông báo vui lòng điền vào trường này (trường chưa nhập dữ liệu) pass
Nhập đầy đủ các trường thống tin sản phẩm
Xuất hiện thông báo thêm mới thành công
Nhập thành công chuyển qua danh sách sản phẩm hiển thị lên table pass
5.4.4 Kiểm thử cập nhật sản phẩm
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử cập nhật các thông tin sản phẩm
+ Cập nhật được dữ liệu đã nhập đồng thời cập nhật dữ liệu mới vào bảng
+ Cập nhật nhưng thay đổi dữ liệu thiếu sẽ in ra thông báo cho người dùng
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Cập nhật sửa dữ liệu sản phẩm nhưng thiếu thông tin 1 trong các trường
Cập nhật thất bại thông tin sản phẩm
Thông báo vui lòng điền vào trường này Pass
Cập nhật đầy đủ thông tin dữ liệu sản phẩm khi sửa
Hiển thị hiện thông báo “cập nhật thành công”
Hiển thị chi tiết thông tin sản phẩm đã sửa thành công
Cập nhật khi điền không đúng định dạng
Xuất hiện thông báo người dùng điền không đúng kiểu định dạng thông tin sản phẩm
Tự nhận định bắt buộc đúng kiểu định dạng(số hoặc chữ) Pass
5.4.5 Kiểm thử xóa sản phẩm
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử chức năng xóa sản phẩm
- Pre-conditions: xóa toàn bộ thông tin sản phẩm thành công
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Chọn dữ liệu trong danh sách sản phẩm và nhấn nút xóa
“xóa sản phẩm thành công”
Xóa thành công sản phẩm bị mất trên danh sách sản phẩm
5.4.6 Kiểm thử thêm loại sản phẩm
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử chức năng thêm loại sản phẩm
+ Thực hiện được chức năng thêm loại sản phẩm vào bảng + Khi người dùng điền không đầy đủ thông tin sẻ trả về
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Không nhập dữ liệu tất cả các trường và kích nút thêm mới
Hiển thị thông báo lỗi
“bạn chưa nhập dữ liệu”
Hiển thị thông báo vui lòng điền vào trường này (tất cả các trường bị bỏ trống)
Không nhập dữ liệu cho 1 trong tất cả các trường và kích nút thêm mới
Hiển thị thông báo lỗi
“bạn chưa nhập dữ liệu”
Hiển thị thông báo vui lòng điền vào trường này (trường chưa nhập dữ liệu)
Nhập đầy đủ các trường loại sản phẩm
Hiển thị thông báo thêm mới thành công
Nhập thành công chuyển qua danh sách loại sản phẩm hiển thị lên table
Nhập đầy đủ các trường nhưng trùng mã loại sản phẩm
Hiển thị thông báo trùng mã loại sản phẩm
Hiển thị thông báo thêm mới không thành công
5.4.7 Kiểm thử cập nhật loại sản phẩm
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử chức năng cập nhật loại sản phẩm
+ Cập nhật được dữ liệu đã nhập đồng thời cập nhật dữ liệu mới vào bảng
+ Cập nhật nhưng thay đổi dữ liệu thiếu sẽ in ra thông báo cho người dùng
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Cập nhật sửa dữ liệu loại sản phẩm nhưng thiếu thông tin 1 trong các trường
Cập nhật thất bại thông tin loại sản phẩm
Thông báo vui lòng điền vào trường này Pass
Cập nhật đầy đủ thông tin dữ liệu loại sản phẩm khi sửa
Hiển thị hiện thông báo
Hiển thị chi tiết thông tin loại sản phẩm đã sửa thành công
5.4.8 Kiểm thử xóa loại sản phẩm
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử chức năng xóa loại sản phẩm
- Pre-conditions: xóa toàn bộ thông tin loại sản phẩm thành công
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Chọn dữ liệu trong danh sách loại sản phẩm và nhấn nút xóa
Xuất hiện thông báo “xóa loại sản phẩm thành công”
Xóa thành công sản phẩm bị mất trên danh sách loại sản phẩm
5.4.9 Kiểm thử tìm kiếm sản phẩm
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử chức năng tìm kiếm sản phẩm
- Pre-conditions: tìm kiếm hiển thị ra thông tin sản phẩm
T Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Nhập sản phẩm cần tìm kiếm và xem thông tin sản phẩm
Xuất hiện sản phẩm cần tìm
Xuất hiện sản phẩm cần tìm Pass
Nhập sai sản phẩm hoặc chưa nhập sản phẩm cần tìm
“không tìm thấy sản phẩm cần tìm”
Không xuất hiện thông tin sản phẩm đó
5.4.10 Kiểm thử cập nhật thông tin đơn hàng
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử chức năng cập nhật thông tin đơn hàng
+ Cập nhật được dữ liệu đã nhập đồng thời cập nhật dữ liệu mới vào bảng
+ Cập nhật nhưng thay đổi dữ liệu thiếu sẽ in ra thông báo cho người dùng
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Cập nhật sửa dữ liệu thông tin đơn hàng nhưng thiếu thông tin 1 trong các trường
Cập nhật thất bại thông tin đơn hàng
Thông báo vui lòng điền vào trường này
Cập nhật đầy đủ thông tin dữ liệu đơn hàng
Hiển thị hiện thông báo
Hiển thị chi tiết thông tin đơn hàng đã sửa thành công
Cập nhật khi điền không đúng định dạng
Xuất hiện thông báo người dùng điền không đúng kiểu định dạng thông tin
Tự nhận định bắt buộc đúng kiểu định dạng(số hoặc chữ) Pass
5.4.11.Kiểm thử xóa đơn hàng
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử chức năng xóa thông tin đơn hàng
- Pre-conditions: xóa toàn bộ thông tin đơn hàng thành công
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Chọn dữ liệu trong danh sách đơn hàng và nhấn nút xóa
Xuất hiện thông báo “xóa đơn hàng thành công”
Xóa thành công thông tin đơn hàng bị mất trên danh sách đơn hàng
5.4.12.Kiểm thử xóa sản phẩm người dùng
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử chức năng xóa thông tin người dùng
- Pre-conditions: xóa toàn bộ thông tin người dùng thành công
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Chọn dữ liệu trong danh sách sản phẩm và nhấn nút xóa
Xuất hiện thông báo “xóa khách hàng thành công”
Xóa thành công sản phẩm bị mất trên danh sách khách hàng