TỔNG QUAN
Khảo sát hiện trạng
1.1.1 Nhu cầu thực tế đề tài
Hiện nay, quá trình số hóa của các cửa hàng ngày càng tăng cao cùng với việc đại dịch Covid diễn ra tạo nên một sự thay đổi lớn về vấn đề mua sắm của người dân Từ đó nhu cầu về mua sắm thông qua các trang web cửa hàng và sàn thương mại điện tử tăng cao kéo theo việc Các thành phố lớn phát triển hạ tầng chưa đồng đều, chưa xem trong hạ tầng bãi đỗ Từ đó, ta thấy cơ sở hạ tầng và nhu cầu không thỏa mãn, dẫn đến việc khó khăn khi tìm kiếm bãi đỗ xe Do đó, em quyết định xây dựng phần mềm Tìm kiếm bãi đỗ xe.
1.1.2 Khảo sát một số ứng dụng hiện có
Shopee là một nền tảng thương mại điện tử hàng đầu tại Đông Nam Á, được thành lập vào năm 2015 Nó kết nối người mua và người bán từ nhiều quốc gia trong khu vực, cung cấp một loạt sản phẩm và dịch vụ đa dạng Shopee có giao diện dễ sử dụng, hệ thống thanh toán an toàn và các chương trình khuyến mãi hấp dẫn.Nền tảng này còn có Shopee Mall, nơi người dùng mua hàng chính hãng, và dịch vụ giao hàng nhanh chóng Shopee đã trở thành một trong những nền tảng thương mại điện tử phổ biến nhất tại Đông Nam Á.
Lazada là một trong những nền tảng thương mại điện tử hàng đầu tại Đông Nam Á Với hàng ngàn người bán và người mua tham gia, Lazada cung cấp một trải nghiệm mua sắm trực tuyến thuận tiện và đa dạng Với các danh mục sản phẩm đa dạng như điện tử, thời trang và đồ gia dụng, Lazada đáp ứng nhu cầu mua sắm của người dùng Giao diện dễ sử dụng và các ưu đãi hấp dẫn giúp Lazada trở thành lựa chọn phổ biến cho người tiêu dùng tại Đông Nam Á. a Chức năng chính
Mục tiêu
- Người dùng có thể thao tác cơ bản như tạo tài khoản, mua đặt hàng.
- Chủ hệ thống có thể phát triển dễ dàng với chi phí thấp.
- Có thể mở rộng dễ dàng
- Người có nhu cầu mua các sản phẩm OCOP
Đối với người mua o Quản lý tài khoản (đăng nhập, đăng ký,) o Tìm kiếm sản phẩm. o Chọn lựa sản phẩm. o Đặt mua. o Quản lý hóa đơn thanh toán. o Quản lý địa chỉ giao hàng. o Thanh toán tiện lợi
1.2.2.2 Yêu cầu phi chức năng
Yêu cầu về giao diện:
- Giao diện thân thiện, bố cục hợp lý, dễ sử dụng
- Giao diện thống nhất, đồng bộ, không gây bất ngờ cho người sử dụng
- Màu sắc, vị trí, hiển thị của các component có tính đồng bộ
Yêu cầu về độ tin cậy, bảo mật:
- Có sử dụng phân quyền cho từng loại người dùng
- Dữ liệu tài khoản người dùng được bảo mật
- Dữ liệu không bị xóa hoàn toàn, có thể khôi phục lại.
Yêu cầu về độ tương thích: o Đối với web
Yêu cầu về khả năng phát triển:
- Dễ dàng nâng cấp tính năng đã có nhờ vào sự hệ thống hóa trong khâu xử lý
- Dễ dàng mở rộng khi có nhu cầu phát triển
Yêu cầu về tính hiệu quả:
- Hệ thống quản lý dữ liệu một cách logic
- Hiệu năng ổn định tránh gây khó chịu cho người dùng.
- Có khả năng chịu tải tốt.
- Khả năng mở rộng tùy chỉnh phụ thuộc theo tình hình tài chính của chủ sở hữu.
CƠ SỞ LÝ THUYẾT, TỔNG QUAN CÔNG NGHỆ
PHÂN TÍCH THIẾT KẾ ỨNG DỤNG
Use case
Hình 3.1 Sơ đồ use case
1 Người dùng Người sử dụng chính của app.
Bảng 3.1 Bảng danh sách các actors
3.1.3 Danh sách các Use case
Usecase chính Phân rã Use-case Ý nghĩa/Ghi chú
Quản lý tài khoản Đăng nhập Người dùng đăng nhập vào hệ thống bằng tài khoản Đăng ký Người dùng đăng ký một tài khoản mới
Cập nhật thông tin Cập nhật thông tin cá nhân, thay đổi mật khẩu Lưu trữ địa chỉ Cập nhật thông tin địa chỉ giao hàng
Tìm kiếm sản phẩm Tìm kiếm sản phẩm theo tên, danh mục Xem thông tin sản phẩm Xem chi tiết thông tin của sản phẩm Thêm sản phẩm vào danh sách mua
Thêm sản phẩm vào danh sách các sản phẩm sẽ thanh toán Đặt hàng Tiến hành đặt hàng theo địa chỉ và phương thức nhận hàng, thanh toán Xem lịch sử mua hàng Xem những hóa đơn đã thanh toán
Bảng 3.2 Danh sách các use case
3.1.4.1 Đặc tả Use case Quản lý tài khoản a Đặc tả Use case Đăng nhập Use case: Đăng nhập
Tác nhân chính: Người dùng
− Người dùng muốn vào hệ thống để thực hiện các tính năng thì phải thông qua đăng nhập Điều kiện tiên quyết:
Sự kiện kích hoạt: Không có Điều kiện thực hiện: Không có
− Hiển thị màn hình đăng nhập.
− Nhập username, password sau đó bấm “Login” Hoặc chọn “Sign in with Google” (đối với chủ xe người dùng app) thì chuyển sang luồng A1.
− Nếu thông tin chính xác thì chuyển sang màn hình chính.
− Nếu đăng nhập thất bại thì sẽ thông báo thất bại và phải nhập lại thông tin để tiếp tục đăng nhập.
− Chuyển sang màn hình chính.
Bảng 3.3 Đặc tả Use case Đăng nhập b Đặc tả Usecase Đăng ký tài khoản Use case: Đăng ký tài khoản
Tác nhân chính: Người dùng
− Đăng ký tài khoản để người dùng có thể có tài khoản để đăng nhập vào hệ thống Bên cạnh đó còn cách Đăng nhập không cần đăng ký tài khoản đó là đăng nhập bằng tài khoản Google Điều kiện tiên quyết:
− Hệ thống đang ở trạng thái hoạt động.
Sự kiện kích hoạt: Bấm nút “Sign up ” ở màn hình đăng nhập Điều kiện thực hiện: Không có
− Hiển thị màn hình đăng ký
− Nhập đầy đủ thông tin cấn thiết, sau đó bấm “Sign up”
− Nếu thành công chuyển sang màn hình chính.
− Nếu không thành công hiển thị thông báo.
Bảng 3.4 Đặc tả Usecase Đăng ký tài khoản c Đặc tả Use case Cập nhật thông tin Use case: Cập nhật thông tin
Tác nhân chính: Người dùng
− Người dùng muốn thay đổi thông tin cá nhân hoặc mật khẩu thì sử dụng use case này Điều kiện tiên quyết:
− Hệ thống đang ở trạng thái hoạt động.
− Người dùng phải đăng nhập vào hệ thống Điều kiện thực hiện: Không có
− Hiển thị menu để chọn các chức năng.
− Chọn “Profile” trên menu Chuyển sang luồng sự kiện A1
− Hiển thị màn hình thay đổi thông tin cá nhân
− Hệ thống thông báo kết quả
Bảng 3.5 Đặc tả Use case Cập nhật thông tin d Đặc tả Use case Lưu trữ địa chỉ Use case: Quản lý danh sách xe
Tác nhân chính: Chủ xe
− Người dùng muốn sử dụng lại địa chỉ đã nhập trước đó Điều kiện tiên quyết:
− Hệ thống đang ở trạng thái hoạt động.
− Phải đăng nhập vào hệ thống.
− Người dùng ở thao tác thanh toán
Sự kiện kích hoạt: Bấm vào “Bắt đầu thanh toán” Điều kiện thực hiện: Người dùng phải có sản phẩm trong giỏ hàng Luồng sự kiện chính:
− Hệ thống hiển thị các địa chỉ trước đó.
− Người dùng chọn vào 1 địa chỉ có sẵn, chuyển sang luồng A1
− Người dùng nhập thêm địa chỉ chuyển sang luồng A2
− Hệ thống báo sử dụng địa chỉ cũ
− Nhập các thông tin cần thiết
− Hệ thống thông báo kết quả.
Bảng 3.6 Đặc tả Use case lưu trữ địa chỉ
3.1.4.2 Đặc tả Use case Mua hàng a Đặc tả Use case Tìm kiếm sản phẩm Use case: Tìm kiếm bãi đỗ
Tác nhân chính: Người dùng
Mô tả ngắn gọn: Điều kiện tiên quyết:
− Hệ thống đang ở trạng thái hoạt động.
− Đăng nhập vào hệ thống
Sự kiện kích hoạt: Không có Điều kiện thực hiện: Không có
− Tìm kiếm tên bãi đỗ trên thanh tìm kiếm hoặc bộ lọc có sẵn.
− Hiển thị danh sách các sản phẩm theo yêu cầu.
− Chọn một sản phẩm để xem chi tiết.
Bảng 3.7 Đặc tả Use case mua hàng b Đặc tả Use case Xem thông tin sản phẩm Use case: Chỉ đường đến bãi đỗ
Tác nhân chính: Người dùng
− Người dùng muốn xem chi tiết thông tin sản phẩm Điều kiện tiên quyết:
− Hệ thống đang ở trạng thái hoạt động.
− Người dùng đã đăng nhập vào hệ thống.
Sự kiện kích hoạt: Người dùng bấm vào hình ảnh của các sản phẩm đã được hiển thị trước đó. Điều kiện thực hiện: Không có
− Hiển thị chi tiết thông tin của sản phẩm.
Bảng 3.8 Đặc tả Use case Xem thông tin sản phẩm c Đặc tả Use case Thêm sản phẩm vào danh sách mua Use case: Đặt chỗ
Tác nhân chính: Người dùng
− Người dùng muốn thêm sản phẩm vào danh sách và thanh toán sau. Điều kiện tiên quyết:
− Hệ thống đang ở trạng thái hoạt động.
− Phải đăng nhập vào hệ thống
Sự kiện kích hoạt: Bấm vào “Thêm vào giỏ” ở phần xem thông tin sản phẩm Điều kiện thực hiện: Không có
− Hiển thị màn hình thông tin chi tiết sản phẩm
− Người dùng chọn số lượng
− Sản phẩm được thêm vào giỏ sẽ được cập nhật và báo cho người dùng.
Bảng 3.9 Đặc tả Use case Thêm sản phẩm vào giỏ hàng d Đặc tả User case Đặt hàngUse case: Gia hạn thời gian giữ xe
− Người dùng thanh toán các sản phẩm đã chọn Điều kiện tiên quyết:
− Hệ thống đang ở trạng thái hoạt động.
− Phải đăng nhập vào hệ thống
Sự kiện kích hoạt: Bấm vào “Giỏ hàng” để vào trang thanh toán Điều kiện thực hiện: Đã đặt lịch trước đó
− Hiển thị màn hình lựa chọn địa chỉ giao hàng
− Nhập địa chỉ giao hàng
− Hiển thị màn hình chọn phương thức giao hàng
− Nhập phương thức giao hàng
− Hiển thị tổng hóa đơn
− Người dùng bấm thanh toán
− Hiển thị màn hình nhập thông tin thanh toán
− Xác thực thanh toán và hiển thị kết quả
Bảng 3.12 Đặc tả Use case Đặt hàng
3.1.4.3 Đặc tả Use case Xem lịch sử mua hàng
Use case: Xem lịch sử đặt chỗ
Tác nhân chính: Người dùng
− Người dùng muốn xem lại các hóa đơn đã thanh toán Điều kiện tiên quyết:
− Hệ thống đang ở trạng thái hoạt động.
− Người dùng đã đăng nhập vào hệ thống
Sự kiện kích hoạt: Người dùng nhấp vào “History” ở menu Điều kiện thực hiện: Người dùng đã đặt chỗ
− Hệ thống hiển thị màn hình xem các hóa đơn đã thanh toán
Bảng 3.10 Đặc tả Use case Xem lịch sử mua hàng
Activity diagram
3.2.1 Lược đồ hoạt động đăng nhập
Hình 3.2 Lược đồ hoạt động đăng nhập
3.2.2 Lượt đồ hoạt động đăng ký
Hình 3.3 Lược đồ hoạt động đăng ký
3.2.3 Lược đồ quản lý địa chỉ
3.2.4 Lược đồ hoạt động tìm kiếm sản phẩm
Hình 3.5 Lược đồ hoạt động tìm kiếm sản phẩm
3.2.5 Lược đồ hoạt động xem chi tiết sản phẩm
Hình 3.6 Lược đồ hoạt động xem chi tiết sản phẩm
3.2.6 Lược đồ hoạt động thêm sản phẩm vào giỏ hàng
Hình 3.7 Lược đồ hoạt động thêm sản phẩm vào giỏ hàng
3.2.7 Lược đồ hoạt động đặt hàng
Hình 3.8 Lược đồ hoạt động đặt hàng
Thiết kế cơ sở dữ liệu
Hình 3.9 Lược đồ quan hệ ERD
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1 user_id text PK Mã người dùng
2 email text Địa chỉ email
3 first_name text Tên người dùng
4 last_name text Họ người dùng
5 password text Tên tài khoản người dùng
6 username text Mật khẩu tài khoản
Bảng 3.11 Mô tả chi tiết bảng User
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1 id int PK Mã sản phẩm
2 available_quantity int Số lượng tồn kho
3 delivery_time int Thời gian giao hàng
4 image_local_path text Đường dẫn lưu trữ hình ảnh
5 imageurl text Đường dẫn hình ảnh sản phẩm
6 name text Tên sản phẩm
8 publication_date text Ngày đăng bán
10 seller_id int Mã cửa hàng
12 verification_status boolean Tình trạng kiểm duyệt
13 classification_id int Mã phân loại ngành hàng
14 origin_id int Mã phân loại xuất xứ
15 price_id int Mã khoảng giá
16 brand_id int Mã thương thiệu
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1 id text PK Mã xuất xứ
2 type text FK Tên nơi xuất xứ
Bảng 3.12 Mô tả chi tiết bảng ParkingLot
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1 id text PK Mã ngành hàng
2 type text FK Tên ngành hàng
Bảng 3.13 Mô tả chi tiết bảng Block
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1 id text PK Mã khoảng giá
2 type text FK Tên gọi khoảng giá
Bảng 3.14 Mô tả chi tiết bảng ParkingSlot
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1 id text PK Mã thương hiệu
2 type text FK Tên thương hiệu
Bảng 3.15 Mô tả chi tiết bảng ParkingReservation
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1 id id PK Mã hình ảnh thương hiệu
2 image_local_path text FK Đường dẫn lưu trữ hình ảnh
3 imageurl text Đường dẫn hình ảnh thương hiệu
5 brand_id int Mã thương hiệu
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1 id text PK Mã hình ảnh ngành hàng
2 image_local_path text FK Đường dẫn lưu trữ hình ảnh
3 imageurl text Đường dẫn hình ảnh ngành hàng
5 classification_id int Mã ngành hàng
6 origin_id int Mã xuất xứ
Bảng 3.17 Mô tả chi tiết bảng Vehicle
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1 id int PK Mã hình ảnh quảng cáo
2 image_local_path text FK Đường dẫn lưu trữ hình ảnh
3 imageurl text Đường dẫn hình ảnh quảng cáo
4 url text Đường dẫn truy cập
Bảng 3.18 Mô tả chi tiết bảng TimeFrame
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1 id int PK Mã sắp xếp
2 type text FK Tên loại sắp xếp
Bảng 3.19 Mô tả chi tiết bảng Favorite
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1 id int PK Mã ngân hàng
2 account_number text FK Tài khoản
3 bank_name text Tên ngân hàng
4 customer_id int Mã người dùng
5 first_name text Tên tài khoản
6 last_name text Họ tài khoản
7 routing_number text Số tài khoản
8 seller_id int Mã cửa hàng
9 address_id int Mã địa chỉ
10 contact_id int Mã liên hệ
Bảng 3.20 Mô tả chi tiết bảng Favorite
1 id int PK Mã liên hệ
2 email text Địa chỉ email
3 mobile text Số điện thoại
4 office text Địa chỉ văn phòng
5 other text Thông tin khác
Bảng 3.21 Mô tả chi tiết bảng Favorite
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1 id int PK Mã địa chỉ
3 first_line text Địa chỉ 1
4 second_line text Địa chỉ 2
6 zip_code text Mã vùng
Bảng 3.22 Mô tả chi tiết bảng Favorite
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
1 id int PK Mã yêu thích
2 customer_id int Mã người dùng
3 delivery_status int Tình trạng
5 track_package_link text Đường dẫn theo dõi
6 address_id int Mã địa chỉ
7 product_id int Mã sản phẩm
Bảng 3.23 Mô tả chi tiết bảng Favorite
3.4 Phân tích thiết kế kiến trúc hệ thống
STT Thực thể Diễn tả
1 Client Giao diện người dùng
3 Search Service Service xử lý các câu lệnh tìm kiếm của người dùng
4 Data Service Service chính chứa các dữ liệu của hệ thống
Service Service quản lý việc xác thực người dùng
6 Payment Service Service xử lý các dịch vụ thanh toán
7 Seller Service Service quản lý các cửa hàng
(MySQL) Cụm cơ sở dữ liệu
9 Redis Cụm lưu trữ cache
Grafana Service theo dõi hiệu năng hệ thống
*Các service thành phần trong cụm Business services có thể scale theo chiều ngang.
CÀI ĐẶT VÀ THỬ NGHIỆM
Môi trường cài đặt
Các thư viện, framework liên quan
− State management: Redux, Redux Toolkit
− Back-end: Java (Spring Framework)
Kiểm thử phần mềm
Em có tiến hành kiểm thử phần mềm sau mỗi lần build một chức năng, tăng tính đúng đắn và tốc độ sửa lỗi chương trình Ứng dụng đã chạy thử nghiệm trên các thiết bị ở nhiều độ phân giải khác nhau (responsive) và nhiều trình duyệt.
- Manual testing: whitebox, blackbox theory
Hướng dẫn cài đặt
Bước 1: Cài đặt Docker từ https://www.docker.com/
Bước 2: Cài đặt Kubernetes và Kind từ https://kind.sigs.k8s.io/
Bước 3: Tải và giải nén source code từ Google Drive
Bước 4: Khởi chạy file script “start-all.sh”