87
CHƯƠNG 5. MÔ TẢ THIẾT KẾ PHẦN MỀM 1. Thiết kế kiến trúc
1.1. Kiến trúc hệ thống
Hệ thống bao gồm 3 thành phần:
− Front-end: chứa các GUI cho phép người dùng tương tác với phần mềm quản lý kinh doanh sách trực tuyến và ứng dụng mobile dành cho người dùng
− Back-end: chứa các Models, Controller, nhận request từ phía front-end, thông qua Middlewares để thực hiện các truy xuất dữ liệu đến Database và trả về response cho front-end.
89
Hình 17 Kiến trúc hệ thống
1.2. Mô tả các thành phần trong hệ thống
STT Thành phần Diễn giải
1 ReactJS, Flutter Hiển thị các giao diện giúp người dùng tương tác với phần mềm. Gửi request tới back-end, nhận các response và thực hiện các tính toán, thông báo lại cho các hành động của người dùng
2 NodeJS Xây dựng Web API, chứa các models và controller, nhận request từ phía front-end và thực hiện các truy vấn tới cơ sở dữ liệu, sau khi hoàn thành gửi response về cho front- end
3 MongoDB Nơi lưu trữ tất cả dữ liệu quản lý hệ thống kinh doanh sách trực tuyến
90
2. Sơ đồ lớp chi tiết
91
2.1. Danh sách các lớp đối tượng
STT Tên lớp/quan hệ Loại Ý nghĩa/Ghi chú
1 User Lớp Lớp thể hiển dữ liệu về tài khoản người dùng phần mềm 2 UserClaim Lớp Lớp thể hiển thông tin chi tiết của tài khoản
3 Book Lớp Lớp thể hiển dữ liệu của sách
4 Category Lớp Lớp thể hiển dữ liệu của các danh mục sách 5 Comment Lớp Lớp thể hiển dữ liệu về các bình luận đánh giá 6 Cart Lớp Lớp thể hiển dữ liệu về giỏ hàng
7 CartDetail Lớp Lớp thể hiển chi tiết dữ liệu của sách trong giỏ hàng 8 Order Lớp Lớp thể hiển dữ liệu các đơn đặt hàng
9 OrderDetail Lớp Lớp thể hiển chi tiết dữ liệu trong các đơn đặt hàng 10 BookReceipt Lớp Lớp thể hiển chi tiết dữ liệu của phiếu nhập sách 11 ReceiptDetail Lớp Lớp thể hiển chi tiết dữ liệu của sách trong phiếu nhập 12 Feedback Lớp Lớp thể hiển dữ liệu về các phản hồi của người dùng 13 Discount Lớp Lớp thể hiển dữ liệu về các mã khuyến mãi
Bảng 18 Sơ đồ lớp - Danh sách các lớp đối tượng
2.2. Mô tả chi tiết từng lớp đối tượng User User
92
STT Tên thuộc tính Loại Ràng buộc Ý nghĩa/Ghi chú
1 Id String Require
Length = 24
Mã định danh
2 Email String Required Email của người
dùng
3 Password String Required Mật khẩu (đã hash)
4 Role String Required Quyền
5 UserClaim UserClaim Thông tin chi tiết
của người dùng
6 IsLocked Boolean Trạng thái tài
khoản của một người dùng
• Danh sách phương thức
STT Tên phương thức Tham số Kiểu trả về Ý nghĩa/Ghi chú
1 Login String, String Bool Đăng nhập
2 Create User User Tạo tài khoản
3 Update User Bool Cập nhật thông tin
Userclaim
• Danh sách thuộc tính
93
1 DisplayName String Required Tên hiển thị của người dùng
2 AvatarUrl String Url hình đại hiện
người dùng
3 PhoneNumber String Required Số điện thoại người dùng
4 Address String Required Địa chỉ người dùng
5 Favorite Array Danh sách sách
yêu thích của người dùng
6 AddressBook Array Danh sách địa chỉ
đặt sách
Book
• Danh sách thuộc tính
STT Tên thuộc tính Loại Ràng buộc Ý nghĩa/Ghi chú
1 Id String Require
Length = 24
Mã định danh
2 CategoryId String Mã danh mục
3 Name String Required Tên cuốn sách
94
5 IsAvailable Bool Required Trạng thái của sách
(được bán/ không được bán)
6 Price Number Required Giá sách
7 Quantity Number Required Số lượng sách
trong kho
8 Description String Mô tả chi tiết cuốn
sách
9 Comments Array Danh sách bình
luận đánh giá của sách
10 AvgRate Number Điểm đánh giá
trung bình của sách
11 DiscountRatio Number Mức giảm giá của
cuốn sách
12 Author String Tác giả của cuốn
sách • Danh sách phương thức
STT Tên phương thức Tham số Kiểu trả về Ý nghĩa/Ghi chú
1 Upload Book Book Đăng bán sản
phẩm
95 • Danh sách thuộc tính
STT Tên thuộc tính Loại Ràng buộc Ý nghĩa/Ghi chú
1 Id String Require
Length = 24
Mã định danh
2 CategoryName String Required Tên danh mục
3 ThumbnailImageUrl String URL hình ảnh đại
diện cho danh mục • Danh sách phương thức
STT Tên phương thức Tham số Kiểu trả về Ý nghĩa/Ghi chú
1 Create Category Category Tạo danh mục mới
2 Update Category Category Chỉnh sửa danh
mục
3 Delete Category Bool Xoá danh mục
Comment
• Danh sách thuộc tính
STT Tên thuộc tính Loại Ràng buộc Ý nghĩa/Ghi chú
1 Id String Require
Length = 24
Mã định danh
2 UserId String Required Mã người dùng đã
96
3 BookId String Required Mã cuốn sách được
bình luận
4 IsCustomer Bool Required Kiểm tra là bình
luận của người dùng hay không
5 Rate Number Required Số sao mà người
dùng đánh giá cho sách
6 Review String Required Nội dung mà người
dùng bình luận
7 CommentDate DateTime Required Thời gian bình
luận • Danh sách phương thức
STT Tên phương thức Tham số Kiểu trả về Ý nghĩa/Ghi chú
1 Create Comment Comment Đăng comment
mới
2 Update Comment Comment Chỉnh sửa
comment
3 Delete Comment Bool Xoá Comment
Cart
• Danh sách thuộc tính
97
1 Id String Require
Length = 24
Mã định danh
2 UserId String Required Mã người dùng của
giỏ hàng
3 CartDetails Array Danh sách chi tiết
giỏ hàng
CartDetail
• Danh sách thuộc tính
STT Tên thuộc tính Loại Ràng buộc Ý nghĩa/Ghi chú
1 BookId String Require
Length = 24
Mã sách
2 Quantity Number Required Số lượng sách
• Danh sách phương thức
STT Tên phương thức Tham số Kiểu trả về Ý nghĩa/Ghi chú
1 Create CardDetail CardDetail Thêm một chi tiết giỏ hàng mới 2 Update CardDetail CardDetail Chỉnh sửa chi tiết
giỏ hàng
3 Delete CardDetail Bool Xoá chi tiết giỏ
hàng
98 • Danh sách thuộc tính
STT Tên thuộc tính Loại Ràng buộc Ý nghĩa/Ghi chú
1 Id String Require
Length = 24
Mã định danh
2 UserId String Required
Length = 24
Mã người mua
3 DiscountPrice Number Số tiền được giảm
4 TotalPrice Number Tổng tiền của hoá
đơn
5 PurchaseDate DateTime Required Ngày mua hàng
6 InvoiceDetails Array Danh sách chi tiết
hoá đơn
7 PaidStatus Number Trạng thái thanh
toán của đơn
8 ShippingStatus Number Trạng thái giao
hàng của đơn • Danh sách phương thức
STT Tên phương thức Tham số Kiểu trả về Ý nghĩa/Ghi chú
1 Create Invoice Invoice Tạo một hoá đơn
99
OrderDetail
• Danh sách thuộc tính
STT Tên thuộc tính Loại Ràng buộc Ý nghĩa/Ghi chú
1 BookId String Require
Length = 24
Mã sách
2 Quantity Number Required Số lượng sách
3 SellPrice Number Required Giá bán sách
BookReceipt
• Danh sách thuộc tính
STT Tên thuộc tính Loại Ràng buộc Ý nghĩa/Ghi chú
1 Id String Require
Length = 24
Mã định danh
2 ReceiptDate DateTime Required Ngày nhập sách
3 TotalPrice Number Required Tổng giá nhập
4 ReceiptDetails Array Danh sách chi tiết
nhập sách • Danh sách phương thức
100
1 Create BookReceipt BookReceipt Tạo một phiếu
nhập sách
ReceiptDetail
• Danh sách thuộc tính
STT Tên thuộc tính Loại Ràng buộc Ý nghĩa/Ghi chú
1 BookId String Require
Length = 24
Mã sách
2 Quantity Number Required Số lượng sách nhập
3 Price Number Required Giá nhập sách
Feedback
• Danh sách thuộc tính
STT Tên thuộc tính Loại Ràng buộc Ý nghĩa/Ghi chú
1 Email String Email người gửi
phản hồi
2 Content String Nội dung phản hồi
3 Date DateTime Ngày gửi phản hồi
• Danh sách phương thức
STT Tên phương thức Tham số Kiểu trả về Ý nghĩa/Ghi chú
101
Discount
• Danh sách thuộc tính
STT Tên thuộc tính Loại Ràng buộc Ý nghĩa/Ghi chú
1 Id String Require
Length = 24
Mã định danh
2 Code String Required Mã giảm giá
3 Ratio Number Required Tỉ lệ giảm giá
4 MaxDiscount Number Required Giá giảm tối đa
5 ExpiredDate DateTime Required Ngày hết hạn
• Danh sách phương thức
STT Tên phương thức Tham số Kiểu trả về Ý nghĩa/Ghi chú
1 Create Discount Discount Tạo một mã giảm
giá
2 Delete DiscountId Boolean Xoá một mã giảm
giá 3 Update DiscountId, Discount Boolean Cập nhật một mã giảm giá Recommend • Danh sách thuộc tính
102
STT Tên thuộc tính Loại Ràng buộc Ý nghĩa/Ghi chú
1 BookId String Require
Length = 24
Mã sách
2 Type Number Required Loại đề xuất (0 –
hot, 1 – new) • Danh sách phương thức
STT Tên phương thức Tham số Kiểu trả về Ý nghĩa/Ghi chú
1 Create Recommend Recommend Tạo một đề xuất
2 Update BookId, Type Recommend Xoá một đề xuất
3. Activity Diagrams 3.1. Đăng ký bán sách 3.1. Đăng ký bán sách
103
Hình 19 Sơ đồ hoạt động - Đăng ký bán sách
104
Hình 20 Sơ đồ hoạt động - Sửa thông tin sách
105
Hình 21 Sơ đồ hoạt động - Quản lý tài khoản
106
Hình 22 Sơ đồ hoạt động - Nhập sách
107
Hình 23 Sơ đồ hoạt động - Xem lịch sử nhập xuất sách
108
Hình 24 Sơ đồ hoạt động - Quản lý đơn hàng
109
Hình 25 Sơ đồ hoạt động - Xem báo cáo doanh số
110
Hình 26 Sơ đồ hoạt động - Tương tác với khách hàng
111
Hình 27 Sơ đồ hoạt động - Đăng ký tài khoản
112
Hình 28 Sơ đồ hoạt động - Đăng nhập
113
Hình 29 Sơ đồ hoạt động - Sửa thông tin tài khoản
114
Hình 30 Sơ đồ hoạt động - Tra cứu sách
115
Hình 31 Sơ đồ hoạt động - Đánh giá bình luận sách
116
Hình 32 Sơ đồ hoạt động - Thêm vào giỏ hàng
117
Hình 33 Sơ đồ hoạt động - Thanh toán sách trong giỏ hàng
118
Hình 34 Sơ đồ hoạt động - Thêm sách vào danh sách yêu thích
119
Hình 35 Sơ đồ hoạt động - Nhắn tin với Chatbot
120
Hình 36 Sơ đồ hoạt động - Gửi phản hồi
4. Thiết kế giao diện 4.1. Giao diện Admin 4.1. Giao diện Admin
121
Hình 37 Giao diện Admin - Menu
122
Hình 38 Giao diện Admin - Màn hình đăng nhập
123
Hình 39 Giao diện Admin – Quản lý các cài đặt khác – Màn hình chính
124
4.1.4. Màn hình quản lý order – Danh sách order
Hình 41 Giao diện Admin - Quản lý order
4.1.5. Màn hình quản lý phản hồi
Hình 42 Giao diện Admin - Màn hình quản lý phản hồi
4.1.6. Màn hình quản lý sách 4.1.6.1. Màn hình chính
125
Hình 43 Giao diện Admin - Quản lý sách - Màn hình chính
126
Hình 44 Giao diện Admin - Quản lý sách - Danh sách Category
127
Hình 45 Giao diện Admin - Quản lý sách - Chỉnh sửa Category
128
Hình 46 Giao diện Admin - Quản lý sách - Chỉnh sửa sách
129
130
Hình 48 Giao diện Admin - Quản lý sách - Nhập sách - Thêm sách mới
131
Hình 49 Giao diện Admin - Quản lý sách - Thêm Category
132
Hình 50 Giao diện Admin - Quản lý sách - Thêm sách
133
4.1.7.1. Màn hình chính
Hình 51 Giao diện Admin - Quản lý tài khoản - Màn hình chính
134
Hình 52 Giao diện Admin - Quản lý tài khoản - Thêm User
135
Hình 53 Giao diện Admin - Quản lý tài khoản - Chính sửa User
4.1.8. Màn hình báo cáo 4.1.8.1. Báo cáo doanh thu
136
Hình 54 Giao diện Admin - Màn hình báo cáo - Báo cáo doanh thu
137
Hình 55 Giao diện Admin - Màn hình báo cáo - Báo cáo nhập sách
4.1.8.3. Báo cáo xuất sách
Hình 56 Giao diện Admin - Màn hình báo cáo - Báo cáo xuất sách
4.2. Giao diện khách hàng 4.2.1. Màn hình đăng nhập 4.2.1. Màn hình đăng nhập
138
Hình 57 Giao diện khách hàng - Đăng nhập
139
Hình 58 Giao diện khách hàng - Đăng ký
140
Hình 59 Giao diện khách hàng - Trang chủ
141
Hình 60 Giao diện khách hàng - Tìm kiếm sách
142
Hình 61 Giao diện khách hàng - Sách yêu thích
143
Hình 62 Giao diện khách hàng - Danh sách order
144
Hình 63 Giao diện khách hàng - Chi tiết sách
145
Hình 64 Giao diện người dùng - Chatbot
146
Hình 65 Giao diện khách hàng - Tài khoản
147
Hình 66 Giao diện khách hàng - Màn hình phản hồi
148
149
CHƯƠNG 6. YÊU CẦU HỆ THỐNG VÀ TRIỂN KHAI 1. Yêu cầu hệ thống
Cấu hình yêu cầu để chạy hệ thống: - Ứng dụng cho Client (Android):
+ Gradle : 6.7
+ minSdkVersion: 16 + targetSdkVersion: 30
- Ứng dụng cho Admin: hoạt động tốt trên mọi trình duyệt web
2. Triển khai
2.1. Công nghệ sử dụng
Môi trường phát triển: Web Application, Mobile Application Ngôn ngữ lập trình: Javascript, Dart
Database: MongoDB Front-end: ReactJS, Flutter Back-end: NodeJS
2.2. Các tool hỗ trợ
Tool phát triển dự án: Visual Studio Code, Postman Tool quản lý phiên bản: Git & Github
150
CHƯƠNG 7. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 1. Kết quả đạt được
• Thông qua việc nghiên cứu đồng thời kết hợp các công nghệ, nhóm đã phát triển được một hệ thống kinh doanh sách trực tuyến hoàn chỉnh với một app mobile dành cho khách hàng và một web app quản lý.
• Phần mềm đáp ứng được tương đối đầy đủ và khá tốt các chức năng cần có của hệ thống kinh doanh sách trực tuyến với giao diện trực quan, khá dễ sử dụng.
• Những kết quả mà nhóm đã đạt được thông qua quá trình nghiên cứu và phát triển dự án này:
o Các thành viên của nhóm thực hiện đã phối hợp tốt với nhau, chia sẻ công việc hợp lý để cùng đi đến thành công chung của dự án
o Hiểu và sử dụng được NodeJS – một công nghệ rất phổ biến hiện nay cùng những thư viện JS trong việc xây dựng hệ thống back-end
o Tìm hiểu được dịch vụ lưu trữ dữ liệu Mongo Atlas, giúp cho việc lưu trữ và truy xuất dữ liệu được nhanh chóng và hiệu quả
o Biết được cách vận hành của hệ thống Client – Server, quản lý các API, biết cách sử dụng phần mềm Postman để kiểm thử các API
2. Thuận lợi và khó khăn
• Thuận lợi:
o Các công nghệ mới được phát triển dựa trên các ngôn ngữ lập trình mà nhóm đã