PostgreSQL sở hữu một hệ tính năng đa dạng giúp hỗ trợ các nhà phát triển xây dựng app, các nhà quản trị bảo vệ toàn vẹn dữ liệu, và tạo ra một môi trường chịu lỗi tolerant giúp bạn quản
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Trang 2LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại khoa Công nghệ phần mềm trường Đại họcCông nghệ Thông tin – ĐHQG TP.HCM, em đã được trang bị các kiến thức cơ bản cùngcác kỹ năng thực tế để có thể hoàn thành Đồ án 1 của nhóm
Để hoàn thành đồ án này, với lòng biết ơn sâu sắc em xin gửi lời cảm ơn chân thành đến:
Ban Giám hiệu trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM vì đã tạođiều kiện thuận lợi để sinh viên tìm kiếm, nghiên cứu thông tin với hệ thống thư việnhiện đại, đa dạng các loại sách và tài liệu
Gần gũi hơn là những lời tốt đẹp nhất xin gửi đến đến cô Nguyễn Thị Thanh Trúc
đã tận tình giúp đỡ, định hướng cách tư duy và hướng làm việc khoa học Đó là nhữnggóp ý hết sức quý báu không chỉ trong quá trình thực hiện luận văn mà còn là hành trangtiếp bước cho em trong quá trình học tập và làm việc sau này
Sau cùng, xin chúc quý Thầy Cô trong khoa Công nghệ Phần mềm nói riêng cũngnhư các giáo viên tại trường Công nghệ thông tin nói chung thật dồi dào sức khỏe, niềmtin để tiếp tục thực hiện sứ mệnh cao đẹp của mình
Trang 43.3.10 Use case thanh toán 22
Trang 510.1 Giới thiệu Fashion-MNIST 37
10.3.1 Tải dữ liệu với Python (yêu cầu NumPy) 39
10.3.3 Tải dữ liệu với các thư viện Machine Learning khác 40
Trang 61 Giới thiệu chung
Những lợi ích khi doanh nghiệp sở hữu một ứng dụng thương mại điện tử:
+ Tăng lợi nhuận
+ Tiết kiệm chi phí vì không cần phải bỏ ra một khoản tiền lớn để thuê mặt bằng, thuê và đào tạo đội ngũ nhân viên, mà vẫn thu được lợi nhuận cao nếu như bạn biết kết hợp với một số chiến lược Marketing online
+ Gia tăng khả năng tương tác với khách hàng
+ Nâng cao khả năng cạnh tranh với đối thủ
+ Quảng bá thương hiệu
Chuyển đổi từ ứng dụng có giao diện cũ sang một ứng dụng thương mại điện tử chuyên nghiệp đang là xu hướng thu hút rất nhiều doanh nghiệp hiện nay Ở các ứng dụng
thương mại lớn, doanh nghiệp sẽ thiết lập cấu trúc ứng dụng rất rõ ràng và khoa học để người mua dễ dàng tìm thấy sản phẩm phù hợp một cách nhanh nhất Cấu trúc đó được tích hợp các bộ lọc tìm kiếm để phân luồng rõ ràng các cấp độ như lọc theo giá cả, theo
độ phổ biến, chất liệu sản phẩm, kích cỡ, Nhờ vậy mà trải nghiệm mua sắm của khách hàng sẽ trở nên đơn giản hơn
Các đặc điểm nổi bật của một ứng dụng thương mại điện tử:
+ Thao tác thuận tiện, nhanh chóng
+ Cung cấp thông tin nhanh – chính xác – đầy đủ nhất
Trang 7+ Hình thức thanh toán đa dạng
1.2 Giải quyết bài toán
Xây dựng một ứng dụng thương mại điện tử có đầy đủ các tính năng cơ bản cùng với giao diện thân thiện với người dùng Ứng dụng bao gồm hai đối tượng sử dụng chính: khách hàng, chủ cửa hàng(hoặc nhân viên) với mỗi đối tượng sẽ có những chức năng riêng biệt
Các chức năng phục vụ đối tượng khách hàng:
+ Quản lý tài khoản
+ Quản lý giỏ hàng
+ Thanh toán
+ Thử quần áo
+ Gợi ý sản phẩm
Các chức năng phục vụ đối tượng chủ cửa hàng ( hoặc nhân viên):
+ Quản lý tài khoản
+ Quản lý sản phẩm
+ Quản lý đơn hàng
+ Quản lý Banners
+ Quản lý khách hàng
Trang 8- PostgreSQL : hệ thống cơ sở dữ liệu quan hệ đối tượng mã nguồn mở
- Flutter : xây dựng phần mềm để viết mã và tạo ứng dụng
- iTextSharp v5.5.13: Framework hỗ trợ xuất file đuôi pdf
- StarUML: Phần mềm đặc tả hệ thống bằng sơ đồ UML
Quy trình xử
lý hàng hóa
Nhập kho
Nhà cung cấp chở hàng đếnPhân loại sắp xếpCập nhật trình trạng trên WebserviceBán hàng Khách hàng đặt hàng trên ứng dụng
Hệ thông chuyển hàng về khoĐóng gói Nhân viên lấy hàng và đóng gói
Cập nhật trình trạng hàng vào khoVận chuyển Lấy hàng và giao cho khách
Chuyển biên lai về kho
Hậu mãi
Giải đáp thắc mắc
Xử lý hàng không người nhận
Xử lý hàng hóa bị trả lại
Trang 92.3 Mô tả chi tiết
2.3.1 Flutter – Dart
Từ góc độ software stack, Flutter bao gồm các lớp sau:
1 Lớp thấp nhất là lớp runtime được xây dựng trong C++, cần giao tiếp HĐH theo một số cách hạn chế – đến Open GL, API truy cập, tệp và mạng IO, v.v …Phía trên cùng của lớp này là API chuyển sang mã Dart
2 Một lớp liên kết chủ yếu là cho thiết lập ban đầu
3 Một lớp render là một mô hình view điển hình với các đối tượng tồn tại
lâu Lớp này xử lý những thứ như bố cục, vẽ, chỉnh sửa văn bản, cử chỉ, v.v
4 Một lớp widget bao gồm các thứ có thời gian tồn tại ngắn mô tả giao diện người dùng sẽ trông như thế nào trong một framework duy nhất Flutter áp dụng mô hình lập trình reactive trong đó UI được xây dựng lại mỗi khi trạng thái thay đổi
5 Một lớp thể hiện thẩm mỹ thiết kế cụ thể, ví dụ Thiết kế Vật liệu cho Android
Một số khía cạnh của Dart khiến nó phù hợp với Flutter là:
1 Nó có một garbage collector thế hệ rất nhanh Điều này rất hữu ích vì Flutter tuân theo mô hình lập trình reactive trong đó các đối tượng UI được tạo và hủy nhanh chóng
2 Trình biên dịch trước thời hạn của Dart cho phép biên dịch trực tiếp mã Điều này cho phép khởi động nhanh và đạt hiệu suất phù hợp
3 Dart tập trung vào trải nghiệm tốt cho lập trình viên
Trang 104 Dart có thuật toán tree shaking – chỉ các phần của framework Flutter đã được
sử dụng mới được đưa vào ứng dụng cuối cùng
Một nguyên tắc sáng lập của Flutter là bất cứ điều gì mà phần cứng có thể làm, bạn cũng
có thể làm trong Flutter Mặc dù luôn có khả năng đào sâu vào các thư viện cụ thể của nền tảng, với bộ sưu tập các gói Flutter ngày càng phát triển, hầu hết các lập trình viên sẽ tìm thấy những gì họ cần trên https://pub.dartlang.org/flutter
2.3.2 PostgreSQL
PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ-đối tượng (object-relational
database management system) có mục đích chung, hệ thống cơ sở dữ liệu mã nguồn mở tiên tiến nhất hiện nay
PostgreSQL sở hữu một hệ tính năng đa dạng giúp hỗ trợ các nhà phát triển xây dựng
app, các nhà quản trị bảo vệ toàn vẹn dữ liệu, và tạo ra một môi trường chịu lỗi tolerant giúp bạn quản lý dữ liệu bất kể tập dữ liệu lớn hay nhỏ
fault-Các hệ tính năng được sử dụng trong đồ án của PostgreSQL:
- Cấu trúc: Date/Time, Array, Phạm vi, UUID
- Document: JSON/JSONB, XML, Key-value (Hstore)
- Lập danh mục: Expressions, Partial
- Giao tác, Giao tác dạng nest (thông qua lưu điểm)
Trang 11- Trình wrapper dữ liệu ngoài: kết nối với các cơ sở dữ liệu với giao diện SQL
Các yếu tố giúp PostgreSQL nổi bật
- PostgreSQL là hệ thống quản lý cơ sở dữ liệu đầu tiên triển khai tính năng kiểm
soát đồng thời nhiều phiên bản (MVCC) trước cả Oracle
- PostgreSQL cho phép thêm vào các tính năng tùy chỉnh được phát triển bằng các ngôn ngữ chương trình khác nhau như C/C , Java,
3 Use Case
3.1 Bảng yêu cầu nghiệp vụ
1 Quản lý tài khoản
- Đăng nhập, đăng kí
- Sửa thông tin cá nhân
2 Quản lý sản phẩm
- Thêm, xoá, sửa thông tin chi tiết sản phẩm
- Phân loại sản phẩm theo danh mục
3 Quản lý đơn hàng - Thống kê tất cả các đơn hàng
4 Quản lý giỏ hàng - Thêm, xoá sản phẩm trong giỏ hàng
6 Quản lý banner khuyến mãi
- Thêm, xoá, sửa các banner khuyến mãi hiển thị trên trang chủ
7 Quản lý khách hàng - Xem danh sách khách hàng
8 Thử quần áo - Người dùng có thể thử quần áo ngay trên app
bằng cách chọn người mẫu có sẵn hoặc tự tải hình
Trang 12của mình lên và mặc thử trước khi đưa ra quyết định mua sắm
- Ứng dụng tự động hiển thị các sản phẩm nổi bật cho người dùng
Bảng 1: Danh sách yêu cầu
Trang 133.2 Sơ đồ use case tổng quát
STT Tên Actor Ý nghĩa
1 Chủ shop Chủ cửa hàng quản lý trang ứng dụng
2 Khách hàng Khách hàng của cửa hàng
Bảng 2: Danh sách người dùng
Hình 1: Sơ đồ usecase tổng quát
Trang 14- Sơ đồ usecase chi tiết dành cho đối tượng chủ shop (hoặc nhân viên)
Hình 2: Usecase chi tiết của đối tượng chủ shop(nhân viên)
Trang 15- Sơ đồ usecase chi tiết dành cho đối tượng khách hàng
Hình 3: Usecase chi tiết của đối tượng khách hàng
Trang 163.3 Sơ đồ use case phân rã
3.3.1 Usecase đăng nhập khách hàng
Tên chức năng Đăng nhập khách hàng
Mô tả chức năng Khách hàng đăng nhập vào website để đặt hàng với các thông tin tài
khoản của Mục tiêu chức
năng
Giúp khách hàng quản lý thông tin tài khoản
Bài toán giải
quyết
Lưu lại thông tin khách hàng cho những lần đăng nhập sau
Điều kiện Đã đăng kí tài khoản trên website
Not doing Không có.
3.3.2 Usecase quản lý đăng nhập admin
Trang 17Tên chức năng Đăng nhập admin
Mô tả chức năng Admin đăng nhập vào website để sử dụng các chức năng chính của website
quản lý bán hàng Mục tiêu chức
năng Phân quyền sử dụng cho tài khoản admin
Bài toán giải
quyết Bảo mật dữ liệu và đảm bảo tính an toàn cho toàn bộ hệ thống website Điều kiện Không có
Not doing Không có.
3.3.3 Usecase quản lý đơn hàng
Tên chức năng Quản lý đơn hàng
Mô tả chức năng Quản lý đơn hàng gồm có các tính năng chính như sau:
- Thống kê tất cả các đơn hàng.
- Duyệt đơn hàng Mục tiêu chức
năng
Giúp admin quản lý tất cả các đơn đặt hàng trên website
Bài toán giải quyết Quản lý, cập nhật thông tin các đơn đặt hàng nhanh
chóng.
Điều kiện Không có.
Not doing Không có.
Trang 183.3.4 Usecase quản lý danh mục sản phẩm
Tên chức năng Quản lý danh mục sản phẩm
Mô tả chức năng Quản lý danh mục sản phẩm gồm có các tính năng chính như sau:
- Thêm, xoá thông danh mục sản phẩm
Trang 193.3.5 Usecase quản lý sản phẩm
Tên chức năng Quản lý sản phẩm
Mô tả chức năng Quản lý sản phẩm gồm có các tính năng chính như sau:
- Thêm, xoá, sửa thông tin chi tiết sản phẩm
- Phân loại sản phẩm theo danh mục.
Mục tiêu chức
năng
Giúp admin quản lý các sản phẩm trên website
Bài toán giải quyết Quản lý, cập nhật thông tin sản phẩm chính xác, nhanh
chóng.
Điều kiện Không có.
Not doing Không có.
3.3.6 Usecase quản lý banner
Trang 20Tên chức năng Quản lý banner
Mô tả chức năng Quản lý banner khuyến mãi gồm có các tính năng chính như sau:
- Thêm banner khuyến mãi
- Gỡ banner Mục tiêu chức
năng
Admin có thể chỉnh sửa banner trên trang web.
Bài toán giải quyết Quản lý hình ảnh, thông tin banner trên website dễ dàng
Điều kiện Không có.
Not doing Không có.
3.3.7 Usecase quản lý khách hàng
Tên chức năng Quản lý khách hàng
Mô tả chức năng Quản lý khách hàng gồm có các tính năng chính như sau:
- Chỉnh sửa thông tin khách hàng
- Xóa khách hàng Mục tiêu chức
năng
Admin có thể quản lý thông tin khách hàng trên trang web.
Bài toán giải quyết Quản lý thông tin đặt hàng, địa chỉ giao hàng của khách trên website một
cách dễ dàng Điều kiện Dĩ nhiên là phải có khách hàng rồi
Not doing Không có.
Trang 213.3.8 Usecase thử sản phẩm
Tên chức năng Thử sản phẩm
Mô tả chức năng Thử sản phẩm gồm có các tính năng chính như sau:
- Thử các sản phẩm khách hang muốn thử bằng công nghệ AI và Computer Vision
Mục tiêu chức
năng
Giúp khách hàng có thể lựa chọn được sản phẩm phù hợp
Bài toán giải quyết Giải quyết được vấn đề khó khan trong việc mua quần áo online, người
dung không cần phải tới tận shop để thử Điều kiện Dĩ nhiên là phải có khách hàng rồi
Not doing Không có.
Trang 223.3.9 Usecase quản lí giỏ hàng
Tên chức năng Quản lí giỏ hàng
Mô tả chức năng Quản lí giỏ hàng gồm có các tính năng chính như sau:
- Hiển thị danh sách hang có trong giỏ
- Nhập mã khuyến mãi
- Tiến hành đặt hàng
Mục tiêu chức
năng
Giúp khách hang có thể quản lí được giỏ hàng của mình
Bài toán giải quyết Giải quyết được vấn đề đặt hàng online của khách hàng, giúp khách hàng
có thể kiểm tra được sản phẩm lại lần nữa trước khi thanh toán Điều kiện Dĩ nhiên là phải có khách hàng rồi
Not doing Không có.
Trang 233.3.10 Use case thanh toán
Tên chức năng Quản lí thanh toán
Mô tả chức năng Quản lí thanh toán gồm có các tính năng chính như sau:
- Hiển thị thông tin đặt hàng
Trang 24Mục tiêu chức
năng
Giúp khách hàng có thể quản lí thanh toán của sản phẩm
Bài toán giải quyết Giải quyết được vấn đề thanh toán online khi mua hàng trên mạng
Điều kiện Dĩ nhiên là phải có khách hàng rồi
Not doing Không có.
4 Thiết kế cơ sở dữ liệu
STT Tên bảng dữ liệu Diễn giải
1 User Chứa thông tin tài khoản của user và token
Dùng để phân quyền người dùng
3 Permission
4 Role_Permission
7 Collection Quản lý danh sách collection
8 Product_Collection Quản lý quan hệ giữa product và collection
9 ProductDetail Chứa thông tin chi tiết sản phẩm
11 Order Danh sách sản phẩm khách hàng đặt mua
13 Image Quản lý danh sách image của từng sản phẩm
14 Color Quản lý danh sách color của từng sản phẩm
15 OrderDetail Chứa thông tin chi tiết sản phẩm khách hàng order
Bảng 3: Bảng diễn giải các tables trong cơ sở dữ liệu
Trang 255 Relationship Diagram
6.Class Diagram
Trang 277 Sequence Diagram
7.1 Đặt hàng và thanh toán
Trang 287.2 Quản lý sản phẩm
Trang 297.3 Quản lý danh mục sản phẩm
Trang 307.4 Quản lý banner
Trang 317.5 Quản lý khách hàng
Trang 327.6 Thử đồ
Trang 338 Activity Diagram
8.1 Đăng nhập
8.2 Đặt hàng và thanh toán
Trang 348.3 Quản lý mặt hàng
8.4 Quản lý banner
Trang 358.5 Quản lý khách hàng
8.6 Thử sản phẩm
Trang 369 Thiết kế giao diện
9.1 Trang chủ
9.2 Màn hình sản phẩm và chi tiết sản phẩm
Trang 379.4 Màn hình giỏ hàng và thanh toán
9.11 Màn hình quản lý khách hàng
Trang 3810 Tổng quan Machine Learning Fashion-MNIST cho việc thử đồ
10.1 Giới thiệu Fashion-MNIST
- Fashion-MNIST là một tập dữ liệu về các hình ảnh bài viết của Zalando — bao gồm một tập gồm 60.000 mẫu và một tập kiểm tra 10.000 mẫu Mỗi mẫu là một hình ảnh 28x28 grayscale, được liên kết với một nhãn từ 10 lớp Dư định Fashion-MNIST sẽ đóng vai trò thay thế trực tiếp cho tập dữ liệu MNIST ban đầu cho các thuật toán máy học Nó
có cùng kích thước hình ảnh và cấu trúc của các phần đào tạo và thử nghiệm
- Dưới đây là một ví dụ về giao diện của dữ liệu (mỗi lớp có ba hàng):
Trang 3910.2 Tại sao Fashion-MNIST được tạo ra
10.2.1 Nguồn gốcTập dữ liệu MNIST ban đầu chứa rất nhiều chữ số viết tay Các thành viên của
cộng đồng AI / ML / Khoa học Dữ liệu yêu thích tập dữ liệu này và sử dụng nó như một
điểm chuẩn để xác thực các thuật toán Trên thực tế, MNIST thường là tập dữ liệu đầu tiên mà các nhà nghiên cứu thử
10.2.2 Lấy dữ liệu:
- Nhiều thư viện ML đã bao gồm Fashion-MNIST data/API
- Có thể sử dụng các liên kết trực tiếp để tải xuống tập dữ liệu Dữ liệu được lưu trữ ở định dạng giống như dữ liệu MNIST gốc
Trang 40Ngoài ra, Có thể sao chép GitHub repository này; tập dữ liệu xuất hiện trong data / fashion
Có chứa một số tập lệnh cho benchmark and visualization (hình ảnh hóa)
git clone git@github.com:zalandoresearch/fashion-mnist.git
10.3 Chi tiết sử dụng10.3.1 Tải dữ liệu với Python (yêu cầu NumPy)
Sử dụng utils / mnist_reader trong repo này:
10.3.2 Tải dữ liệu với TensorflowĐảm bảo rằng bạn đã tải xuống dữ liệu và đặt nó vào data / fashion Nếu không,
Tensorflow sẽ tải xuống và sử dụng MNIST gốc
Trang 41Tensorflow hỗ trợ truyền url nguồn tới read_data_sets
data = input_data.read_data_sets('data/fashion', website.eu-central-1.amazonaws.com/')
source_url='http://fashion-mnist.s3-10.3.3 Tải dữ liệu với các thư viện Machine Learning khácCho đến nay, các thư viện sau đây đã bao gồm Fashion-MNIST dưới dạng tập dữ liệu tíchhợp sẵn Do đó, bạn không cần phải tự tải xuống Fashion-MNIST Chỉ cần làm theo API của họ và bạn đã sẵn sàng
Có thể thực hiện các pull request đối với các gói học máy mã nguồn mở khác, cải thiện khả năng hỗ trợ của chúng đối với tập dữ liệu Fashion-MNIST
10.3.4 Tải dữ liệu với ngôn ngữ khác
Là một trong những bộ dữ liệu phổ biến nhất của cộng đồng Machine Learning, MNIST
đã truyền cảm hứng cho mọi người triển khai trình tải bằng nhiều ngôn ngữ khác nhau
Có thể sử dụng các bộ tải này với bộ dữ liệu Fashion-MNIST
Trang 4211 Tasksheet
Đồ
án 1 Ứng dụng bán quần áo trên
điện thoại Date of Preparation
Activity Plan Prepared by Nguyễn Thành Đạt
Start Date
Planned Completed Date
Tên thành viên Tình trạng
1 Sequence Diagram March 1st,
2020
March 15 th 2021 Nguyễn
Thành Đạt
Hoàn thành