Tải bản đầy đủ (.pdf) (48 trang)

Đồ án xây dựng website quản lý bán đĩa than

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (9.07 MB, 48 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

--□&□–

BÁO CÁO ĐỒ ÁN 2
ĐỀ TÀI:
XÂY DỰNG WEBSITE QUẢN LÝ BÁN ĐĨA THAN

Giảng viên hướng dẫn : Trần Thị Hồng Yến
Sinh viên thực hiện :
Hà Văn Dương - 19520480

TP. HỒ CHÍ MINH, THÁNG 06 NĂM 2023


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

--□&□–

BÁO CÁO ĐỒ ÁN 2
ĐỀ TÀI:
XÂY DỰNG WEBSITE QUẢN LÝ BÁN ĐĨA THAN

Giảng viên hướng dẫn: Trần Thị Hồng Yến
Sinh viên thực hiện :
Hà Văn Dương - 19520480


TP. HỒ CHÍ MINH, THÁNG 06 NĂM 2023


LỜI CẢM ƠN
Lời đầu tiên, Em xin cảm ơn Giảng viên Trần Thị Hồng Yến đã tạo điều kiện
tốt nhất và cung cấp những kiến thức cần thiết để hoàn thành môn Đồ Án 2.
Em cũng xin gửi lời cảm ơn sâu sắc đến Giảng viên Trần Thị Hồng Yến, người
đã hỗ trợ, hướng dẫn nhóm và tạo điều kiện tốt nhất để nhóm hồn thành đề tài nghiên
cứu này. Với sự hỗ trợ nhiệt tình của cơ, cuối cùng nhóm em cũng đã hồn thiện
những kiến thức cần thiết thông qua việc nghiên cứu và học hỏi những kiến thức mới.
Em sẽ cố gắng ngày càng hồn thiện mình hơn trong tương lai và tiếp tục học tập
chăm chỉ để đạt được kết quả tốt nhất.
Em xin gửi lời cảm ơn đến gia đình, tất cả thầy cơ trong khoa, bạn bè, tập thể
lớp PMCL2019 là những người luôn sẵn sàng sẻ chia và giúp đỡ trong học tập và cuộc
sống. Mong rằng, chúng ta sẽ mãi mãi gắn bó với nhau.
Trong q trình làm Đồ án này em khơng tránh khỏi được những sai sót, em
kính mong nhận được sự chỉ dẫn và góp ý của quý thầy cơ để hồn thiện và phát triển
đồ án hơn Khóa luận tốt nghiệp trong tương lai.
Cuối cùng, xin kính chúc các thầy cô giảng viên bộ môn Công nghệ Phần mềm
và cơ Thái Thuỵ Hàn Uyển ln có sức khỏe dồi dào, cuộc sống hạnh phúc, tiếp tục
hoàn thành sứ mệnh cao cả là truyền thụ tri thức cho thế hệ mai sau.
Em xin chân thành cảm ơn. Xin chúc những điều tốt đẹp nhất sẽ luôn đồng
hành cùng mọi người.

Thành phố Hồ Chí Minh, tháng 06 năm 2022

Hà Văn Dương


NHẬN XÉT

(Của giáo viên hướng dẫn)
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................

.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................


LỜI MỞ ĐẦU
LỜI CẢM ƠN
NHẬN XÉT
(Của giáo viên hướng dẫn)
CHƯƠNG I: GIỚI THIỆU CHUNG
1.1. Tổng quan đề tài
1.2. Lý do chọn đề tài
1.3. Đối tượng sử dụng
1.4. Phạm vi nghiên cứu
1.4.1. Phạm vi môi trường:
1.4.2. Phạm vi thiết kế
1.4.3. Phạm vi chức năng
1.5. Yêu cầu
1.6. Công cụ áp dụng
1.7. Nền tảng công nghệ
1.8. Kế hoạch thực hiện
CHƯƠNG II: CƠ SỞ LÝ THUYẾT & CÔNG NGHỆ
2.1. Dart
2.2. Flutter

2.3. Firebase Firestore
CHƯƠNG III: THIẾT KẾ HỆ THỐNG
3.1. Kiến trúc hệ thống: Mơ hình Client – Server
3.1.1. Sơ đồ tổng quan và giới thiệu
3.1.2. Chi tiết các thành phần trong hệ thống
3.2. Yêu cầu chức năng
3.2.1. Sơ đồ Usecase
3.2.2. Danh sách tác nhân
3.2.3. Danh sách Use Case
3.2.4. Mô tả chi tiết Use Case
CHƯƠNG IV: THIẾT KẾ CƠ SỞ DỮ LIỆU
4.1. Bảng User
4.2. Bảng Product
4.2. Bảng Brand
4.3. Bảng Cart
4.5. Bảng Policy
4.6. Bảng Banner
CHƯƠNG V: THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG
5.1. Screen Flow
5.2. Danh sách màn hình
5.3. Mơ tả chi tiết màn hình
5.3.1. Trang đích (chưa đăng nhập)
5.3.2. Trang đăng nhập
5.3.3. Trang đăng ký
5.3.4. Màn hình tạo mật khẩu mới

2
4
5
5

8
8
8
9
9
9
9
10
10
11
11
11
12
12
14
16
19
19
19
20
21
21
21
22
23
37
38
38
39
39

39
39
40
41
41
42
42
45
46
47


5.3.5. Trang danh mục
5.3.6. Trang giỏ hàng
5.3.7. Trang thanh toán
5.3.8. Trang đơn hàng của tôi
5.3.9. Trang đánh giá sản phẩm
5.3.10. Trang hồ sơ cá nhân
5.3.11. Trang chi tiết sản phẩm
5.3.12. Trang sản phẩm yêu thích
5.3.13. Trang giới thiệu doanh nghiệp
5.3.14. Trang phương thức liên lạc
CHƯƠNG VII. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
6.1. Kết quả
6.2. Hạn chế
6.3. Hướng phát triển
6.4. Kết luận
CHƯƠNG VIII. TÀI LIỆU THAM KHẢO

48

49
50
51
52
52
54
56
57
58
59
59
59
59
59
60


CHƯƠNG I: GIỚI THIỆU CHUNG
1.1. Tổng quan đề tài
-

Tên trang web: The Nuon.

-

Chủ đề chính: Website quản lý và bán đĩa than.

-

Nền tảng phát triển: Webapp.


-

Kiến trúc phát triển: Client – Server

1.2. Lý do chọn đề tài
Trang web quản lý và bán đĩa than là một nền tảng tuyệt vời để người dùng
khám phá, tìm kiếm và mua sắm đĩa than. Với sự phát triển của công nghệ và sự yêu
thích với âm nhạc cổ điển, đĩa than đã trở thành một biểu tượng văn hóa và thu hút sự
quan tâm từ những người yêu nhạc. Trang web này sẽ cung cấp một danh mục đa dạng
của các đĩa than, bao gồm nhiều thể loại âm nhạc khác nhau, từ nhạc rock, pop, jazz,
blues đến các thể loại hiếm và độc. Khách hàng sẽ có thể dễ dàng tìm kiếm và khám
phá những bản ghi âm phù hợp với sở thích của mình.
Mỗi bản ghi âm sẽ được cung cấp thông tin chi tiết về nghệ sĩ, album, và mô tả
về nội dung âm nhạc. Điều này giúp khách hàng hiểu rõ hơn về sản phẩm trước khi
quyết định mua. Ngoài ra giao diện thân thiện và dễ sử dụng sẽ giúp khách hàng duyệt
qua các sản phẩm dễ dàng và thêm vào giỏ hàng. Q trình thanh tốn sẽ được đơn
giản hóa và linh hoạt, với nhiều phương thức thanh toán khác nhau để thuận tiện cho
người dùng.
Tổng quan, trang web quản lý và bán đĩa than là một nền tảng trực tuyến tuyệt
vời để khách hàng tìm kiếm và mua sắm các bản ghi âm độc đáo và chất lượng. Với
sự kết hợp giữa niềm đam mê âm nhạc và tiện ích mua sắm trực tuyến, trang web này
sẽ mang đến trải nghiệm tuyệt vời cho những người yêu thích đĩa than.


Định hướng ứng dụng của nhóm
Nhóm sẽ xây dựng một ứng dụng mua sắm trực tuyến không những đáp ứng
được đầy đủ các yêu cầu cơ bản của một ứng dụng mua sắm mà còn khắc phục được
các vấn đề còn tồn đọng của những đối thủ cạnh tranh.


Vấn đề ở các ứng dụng của đối thủ

Giải pháp

Giao diện người dùng kém thân thiện

Cải thiện UI/UX ở trang màn hình chi
tiết sản phẩm và giỏ hàng.

Khách hàng khơng có nguồn thơng tin

Xây dựng tính năng đánh giá sản phẩm

để kiểm chứng sản phẩm

sau khi mua hàng và xem đánh giá sản
phẩm tại trang Chi tiết sản phẩm

Khách hàng khó khăn trong việc tìm

Xây dựng hệ tìm kiếm bằng văn bản và

kiếm và lọc sản phẩm

hình ảnh

1.3. Đối tượng sử dụng
-

Người dùng có mong muốn mua sắm trực tuyến.


-

Quản trị viên kiểm sốt đơn hàng và những thơng tin liên quan đến sản phẩm,
người dùng.

-

Chủ doanh nghiệp.

1.4. Phạm vi nghiên cứu
1.4.1. Phạm vi môi trường:
Ứng dụng web.
1.4.2. Phạm vi thiết kế
-

Đối với mặt UI/UX:
+ Trang web phải đạt chuẩn WCAG2.0


+ Trang web phải ít nhất đạt chuẩn về design dựa trên chuẩn design được
Figma hoặc Google khuyến nghị
+ Cho phép khách hàng thực hiện các hành động một cách dễ dàng mà khơng
cần có sự hướng dẫn nào

1.4.3. Phạm vi chức năng
-

Đối với ứng dụng:
+ Cho phép phía nhân viên quản lý thơng tin sản phẩm (thêm, xóa, sửa).

+ Cho phép khách hàng thêm sản phẩm mong muốn vào giỏ hàng với số lượng

có thể linh hoạt điều chỉnh.
+ Cho phép khách hàng thực hiện q trình thanh tốn với nhiều phương thức
khác nhau.
+ Cho phép khách hàng tiếp cận với các thông tin về sản phẩm dưới dạng văn
bản.
+ Cho phép khách hàng tiếp cận với các thông báo về q trình giao dịch,
thơng báo về đơn đặt hàng.
+ Cho phép khách hàng thực hiện một chức năng cơ bản như đăng xuất, đăng
nhập, đăng ký, quên mật khẩu, chỉnh sửa hồ sơ cá nhân (chỉnh sửa ảnh đại diện và
thông tin cá nhân), thay đổi mật khẩu, thiết lập phương thức thanh toán mặc định.
1.5. Yêu cầu
- Tính thân thiện: Ứng dụng phải dễ sử dụng, UI/UX thân thiện với người
dùng.
- Tính đúng đắn: Ứng dụng chạy khơng lỗi.
- Tính thích nghi: Ứng dụng có thể chạy tốt trên nhiều trình duyệt, nhiều thiết
bị cấu hình phần cứng khác nhau và thiết kế kiến trúc thiết bị khác nhau.
- Tính tiến hóa: Ứng dụng phải dễ dàng được phát triển thêm tính năng
mà khơng gây ảnh hưởng đến những tính năng đã phát triển trước đó.
- Tính bảo trì: Ứng dụng có thể thay đổi, chỉnh sửa các chức năng mà
không gây ảnh hưởng đến các chức năng khác.
- Tính tương tác: Ứng dụng tạo ra mơi trường tương tác giữa hệ thống và


người dùng.
1.6. Công cụ áp dụng
-

Công cụ phát triển: Visual Studio Code.


-

Cơng cụ dùng để phân tích, thiết kế: Canva, Figma, Adobe Photoshop.

-

Công cụ quản lý dự án: Github.

-

Công cụ soạn thảo báo cáo: Microsoft Word.

1.7. Nền tảng công nghệ
-

Front-end: Dart, Flutter

-

Back-end: Dart, Flutter

-

Database: Firebase Firestore.

1.8. Kế hoạch thực hiện
Thời gian thực hiện dự án bắt đầu từ ngày 05/03/2023 đến ngày 30/06/2023,
được chia thành 2 giai đoạn:
Giai đoạn 1: Chuẩn bị (05/03/2023 - 19/03/2023):

-

Nghiên cứu đề tài.

-

Tìm hiểu thị trường, đối thủ cạnh tranh.

-

Thiết kế chức năng, các yêu cầu của dự án.

-

Xác định công nghệ, thiết kế cơ sở dữ liệu.

-

Phân chia công việc.

-

Chuẩn bị bài báo cáo.

-

Thiết kế giao diện

Giai đoạn 2: Phát triển (20/03/2023 - 30/06/2023):
-


Khởi tạo dự án.

-

Hiện thực hoá các chức năng của hệ thống.

-

Kiểm thử.

-

Fix bugs.


CHƯƠNG II: CƠ SỞ LÝ THUYẾT & CƠNG NGHỆ
2.1. Dart

Hình 2-1: Dart Language

Dart là một ngôn ngữ được tối ưu hóa cho việc phát triển ứng dụng nhanh
chóng trên mọi nền tảng. Mục tiêu của Dart là cung cấp ngôn ngữ lập trình hiệu quả
nhất cho phát triển đa nền tảng, kết hợp với một nền tảng thực thi linh hoạt cho các
framework ứng dụng.
Các ngôn ngữ được xác định bởi phạm vi kỹ thuật của chúng - những lựa chọn
được thực hiện trong quá trình phát triển để hình thành các khả năng và điểm mạnh
của ngôn ngữ. Dart được thiết kế cho một phạm vi kỹ thuật đặc biệt phù hợp với phát
triển phía client, ưu tiên cả quá trình phát triển (tải lại nhanh trạng thái trong vòng một



giây) và trải nghiệm sản xuất chất lượng cao trên nhiều mục tiêu biên dịch khác nhau
(web, di động và desktop).
Dart cũng là nền tảng cơ bản của Flutter. Dart cung cấp ngôn ngữ và runtime để
xây dựng ứng dụng Flutter, nhưng Dart cũng hỗ trợ nhiều nhiệm vụ lập trình viên cốt
lõi như định dạng, phân tích và kiểm thử mã.
Ưu điểm:
-

Tính đa nền tảng: Dart cho phép phát triển ứng dụng trên nhiều nền tảng
khác nhau như web, di động và desktop. Điều này giúp giảm thời gian
và công sức trong việc phát triển ứng dụng đa nền tảng.

-

Tốc độ và hiệu suất cao: Dart được thiết kế để tối ưu hóa việc chạy các
ứng dụng, đảm bảo tốc độ và hiệu suất cao. Điều này đặc biệt quan trọng
trong việc phát triển các ứng dụng đòi hỏi khả năng xử lý nhanh và phản
hồi chính xác.

-

Hot Reload: Dart hỗ trợ tính năng Hot Reload, cho phép nhà phát triển
xem kết quả ngay lập tức sau khi thay đổi mã nguồn, mà không cần khởi
động lại ứng dụng. Điều này giúp tăng năng suất và tiết kiệm thời gian
trong q trình phát triển.

-

Hỗ trợ cơng cụ mạnh mẽ: Dart đi kèm với các công cụ hỗ trợ mạnh mẽ

như Dart SDK, Flutter framework và các trình biên dịch (compilers).
Các công cụ này giúp giảm độ phức tạp trong q trình phát triển và
cung cấp mơi trường phát triển ổn định và dễ sử dụng.

Nhược điểm:
-

Học phí ban đầu: Nếu bạn là một lập trình viên mới bắt đầu với Dart, có
thể mất một khoảng thời gian để làm quen với ngơn ngữ và cú pháp của
nó. Điều này có thể tạo ra một rào cản ban đầu cho việc sử dụng Dart.

-

Hạn chế cộng đồng: Mặc dù cộng đồng Dart đang phát triển, nhưng nó
vẫn chưa được rộng rãi như một số ngơn ngữ lập trình khác. Điều này có
thể ảnh hưởng đến việc tìm kiếm tài liệu và hỗ trợ từ cộng đồng.


-

Hạn chế thư viện: Một số thư viện và công cụ hỗ trợ cho Dart có thể hạn
chế so với các ngơn ngữ khác. Điều này có thể khiến việc tìm kiếm và
sử dụng các thư viện phổ biến trở nên khó khăn hơn.

-

Sự cạnh tranh: Dart phải đối mặt với sự cạnh tranh từ các ngôn ngữ khác
như JavaScript, Python, hoặc Swift. Mặc dù Dart có những ưu điểm
riêng, nhưng việc chinh phục thị trường và cạnh tranh với các ngơn ngữ
đã được sử dụng rộng rãi có thể là một thách thức.


2.2. Flutter

Hình 2.2: Framework Flutter
Flutter là một framework phát triển ứng dụng di động đa nền tảng
(cross-platform) được phát triển bởi Google. Nó cho phép bạn xây dựng ứng dụng
đồng thời cho nhiều nền tảng như Android, iOS, web và desktop từ cùng một mã
nguồn duy nhất. Flutter sử dụng ngơn ngữ lập trình Dart để phát triển ứng dụng.
Với Flutter, bạn có thể xây dựng giao diện người dùng đẹp mắt và tương tác
mượt mà, với khả năng tùy chỉnh cao. Nó cung cấp một tập hợp các thành phần giao
diện được gọi là "Widgets" để xây dựng giao diện người dùng. Flutter sử dụng một
công nghệ gọi là "Skia" để vẽ giao diện người dùng trực tiếp trên các thiết bị, giúp đạt
hiệu suất cao và trải nghiệm mượt mà.


Flutter cũng hỗ trợ tính năng Hot Reload, cho phép bạn xem kết quả ngay lập
tức sau khi thay đổi mã nguồn mà không cần khởi động lại ứng dụng. Điều này giúp
tăng năng suất và tiết kiệm thời gian trong quá trình phát triển.
Với cộng đồng hỗ trợ mạnh mẽ và sự phát triển liên tục từ Google, Flutter đang
ngày càng trở thành một lựa chọn phổ biến cho việc phát triển ứng dụng đa nền tảng.
Ưu điểm:
-

Phát triển đa nền tảng: Flutter cho phép phát triển ứng dụng cho nhiều
nền tảng như Android, iOS, web và desktop từ một mã nguồn duy nhất.
Điều này giúp tiết kiệm thời gian và công sức trong việc phát triển ứng
dụng đa nền tảng.

-


Giao diện người dùng nhanh và linh hoạt: Flutter sử dụng một hệ thống
giao diện người dùng riêng gọi là "Widget" để xây dựng giao diện.
Widget cho phép xây dựng giao diện nhanh chóng và linh hoạt, và cung
cấp khả năng tùy chỉnh cao.

-

Tính năng Hot Reload: Flutter hỗ trợ tính năng Hot Reload, cho phép
nhà phát triển xem kết quả ngay lập tức sau khi thay đổi mã nguồn, mà
không cần khởi động lại ứng dụng. Điều này giúp tăng năng suất và tiết
kiệm thời gian trong quá trình phát triển.

-

Hiệu suất cao: Flutter sử dụng Dart làm ngơn ngữ lập trình, được tối ưu
hóa để chạy nhanh và đạt hiệu suất cao. Flutter cũng sử dụng một công
nghệ gọi là "Skia" để vẽ giao diện người dùng trực tiếp trên các thiết bị,
giúp đạt hiệu suất cao và trải nghiệm mượt mà.

-

Cộng đồng hỗ trợ mạnh mẽ: Flutter có một cộng đồng đơng đảo và nhiệt
tình, cung cấp tài liệu phong phú, các thư viện mở rộng và hỗ trợ từ
cộng đồng. Điều này giúp nhà phát triển có nguồn tài nguyên và giải
pháp khi gặp phải vấn đề trong quá trình phát triển.

Nhược điểm:
-

Phát triển đa nền tảng: Flutter cho phép phát triển ứng dụng cho nhiều

nền tảng như Android, iOS, web và desktop từ một mã nguồn duy nhất.


Điều này giúp tiết kiệm thời gian và công sức trong việc phát triển ứng
dụng đa nền tảng.
-

Giao diện người dùng nhanh và linh hoạt: Flutter sử dụng một hệ thống
giao diện người dùng riêng gọi là "Widget" để xây dựng giao diện.
Widget cho phép xây dựng giao diện nhanh chóng và linh hoạt, và cung
cấp khả năng tùy chỉnh cao.

-

Tính năng Hot Reload: Flutter hỗ trợ tính năng Hot Reload, cho phép
nhà phát triển xem kết quả ngay lập tức sau khi thay đổi mã nguồn, mà
không cần khởi động lại ứng dụng. Điều này giúp tăng năng suất và tiết
kiệm thời gian trong quá trình phát triển.

-

Hiệu suất cao: Flutter sử dụng Dart làm ngơn ngữ lập trình, được tối ưu
hóa để chạy nhanh và đạt hiệu suất cao. Flutter cũng sử dụng một công
nghệ gọi là "Skia" để vẽ giao diện người dùng trực tiếp trên các thiết bị,
giúp đạt hiệu suất cao và trải nghiệm mượt mà.

-

Cộng đồng hỗ trợ mạnh mẽ: Flutter có một cộng đồng đơng đảo và nhiệt
tình, cung cấp tài liệu phong phú, các thư viện mở rộng và hỗ trợ từ

cộng đồng. Điều này giúp nhà phát triển có nguồn tài nguyên và giải
pháp khi gặp phải vấn đề trong quá trình phát triển.

2.3. Firebase Firestore


Hình 2-3: Cơ sở dữ liệu Firebase Firestore

Flutter là một framework phát triển ứng dụng di động mã nguồn mở được phát
triển bởi Google. Nó cho phép lập trình viên xây dựng các ứng dụng di động tương
thích trên nhiều nền tảng như Android, iOS, web và desktop từ một mã nguồn duy
nhất. Flutter sử dụng ngơn ngữ lập trình Dart để phát triển ứng dụng và cung cấp một
bộ công cụ mạnh mẽ để xây dựng giao diện người dùng đẹp mắt và tương tác.
Flutter sử dụng một hệ thống giao diện người dùng riêng gọi là "Widget" để
xây dựng giao diện. Widget trong Flutter là các khối xây dựng giao diện tái sử dụng
có thể nhúng vào nhau để tạo thành giao diện người dùng hoàn chỉnh. Flutter cung cấp
các Widget cơ bản như Text, Button, Container và cả các Widget phức tạp như
ListView, GridView, AppBar và nhiều Widget khác.
Một trong những đặc điểm nổi bật của Flutter là tính năng Hot Reload, cho
phép nhà phát triển xem kết quả ngay lập tức sau khi thay đổi mã nguồn, mà không
cần khởi động lại ứng dụng. Điều này giúp tăng năng suất và tiết kiệm thời gian trong
quá trình phát triển ứng dụng.
Với tính linh hoạt, hiệu suất cao và khả năng phát triển đa nền tảng, Flutter đã
thu hút được sự quan tâm và sử dụng rộng rãi trong việc phát triển ứng dụng di động
hiện nay.
Ưu điểm:
-

Dễ sử dụng: Firebase cung cấp một giao diện người dùng thân thiện và
tài liệu phong phú, giúp nhà phát triển dễ dàng tiếp cận và sử dụng các

dịch vụ của nền tảng.

-

Tích hợp mạnh mẽ: Firebase tích hợp tốt với các dịch vụ của Google và
cung cấp các thư viện phát triển và SDK cho nhiều ngôn ngữ lập trình
khác nhau. Điều này giúp tạo ra các tính năng mạnh mẽ và linh hoạt
trong ứng dụng.


-

Cơ sở dữ liệu thời gian thực: Firebase Real-time Database và Cloud
Firestore cung cấp khả năng đồng bộ dữ liệu thời gian thực giữa các
thiết bị và ứng dụng một cách nhanh chóng và tự động.

-

Quản lý người dùng và xác thực: Firebase cung cấp dịch vụ xác thực
mạnh mẽ cho phép đăng nhập và quản lý người dùng thông qua nhiều
phương thức như email, số điện thoại và tài khoản xã hội.

-

Đám mây và mở rộng: Firebase là một dịch vụ đám mây, giúp giảm
thiểu công sức và chi phí cần thiết để quản lý hạ tầng phía máy chủ. Nó
cũng có khả năng mở rộng linh hoạt để đáp ứng nhu cầu của ứng dụng.

Nhược điểm:
-


Giới hạn của phiên bản miễn phí: Firebase có một phiên bản miễn phí
với giới hạn tài ngun. Điều này có thể gây hạn chế đối với các ứng
dụng lớn hoặc có lượng truy cập cao.

-

Phụ thuộc vào dịch vụ bên thứ ba: Một số tính năng và dịch vụ phụ
thuộc vào các nhà cung cấp bên thứ ba, do đó, nếu có sự cố hoặc thay
đổi từ phía nhà cung cấp, có thể ảnh hưởng đến hoạt động của ứng dụng.

-

Khả năng tùy chỉnh hạn chế: Mặc dù Firebase cung cấp nhiều tính năng
sẵn có, nhưng có thể hạn chế trong việc tùy chỉnh hoặc mở rộng các tính
năng đặc biệt cho ứng dụng phức tạp.

-

Chi phí: Một số dịch vụ và tính năng của Firebase có thể u cầu các kế
hoạch trả phí khi sử dụng với quy mơ lớn hoặc yêu cầu sự mở rộng.


​CHƯƠNG III: THIẾT KẾ HỆ THỐNG
3.1. Kiến trúc hệ thống: Mơ hình Client – Server
3.1.1. Sơ đồ tổng quan và giới thiệu
Tổng quan kiến trúc được tổ chức theo mô hình Client-Server và được tách
thành ba lớp phân bố ở cả hai phía.

Về phía Client sẽ có lớp Presentation đại diện cho việc tương tác với người

dùng thông qua giao diện (ở đây là web). Đây là lớp tương tác trực tiếp với người
dùng, nhận vào các input của người dùng và thể hiện output từ các lớp khác.
Cịn phía Server sẽ có hai lớp:
● BLL (Business Logic Layer): đây là lớp xử lý logic nghiệp vụ, nhận các input
từ GUI, xử lý và trả kết quả về cho GUI để hiển thị
● DAL (Data Access Layer): đây là lớp truy xuất trực tiếp đến cơ sở dữ liệu, các


thao tác kiểm tra, quản lý và thay đổi dữ liệu đều được thực hiện ở lớp này
3.1.2. Chi tiết các thành phần trong hệ thống
Thành phần
CLIENT

User Interface

Diễn giải
Giao diện người dùng (web e-commerce)

HTTPClient

Gửi HTTP Request đến SERVER thông qua API
do server cung cấp

APIs

Module định nghĩa các API cho các Routers sử
dụng

Routers


Router dùng để điều hướng request tương ứng với
API đến các Controllers để xử lý và nhận lại kết
quả từ controllers, phản hồi lại cho API tương ứng
mà HTTPClient gọi từ phía Client

SERVER

Controllers

Models

Các Controllers tiếp nhận requests được điều phối
từ các Routers và xử lý chúng thông qua việc truy
xuất dữ liệu đã được xử lý từ các Models

Các Models tiếp nhận yêu cầu truy xuất dữ liệu
của các Controllers. Sau đó, truy xuất trực tiếp
xuống Database để lấy dữ liệu thô (raw data) rồi
xử lý thành bộ dữ liệu phù hợp với yêu cầu của
Controller tương ứng.

Database

Cơ sở dữ liệu, nơi lưu trữ thông tin


3.2. Yêu cầu chức năng
3.2.1. Sơ đồ Usecase

Hình 3.2.1. Sơ đồ usecase


3.2.2. Danh sách tác nhân
STT

Tên tác nhân

Mô tả


1

Admin

Administrator của hệ thống

2

Owner

Chủ cửa hàng

3

Guest

Khách

4

User


Người dùng đã xác thực

3.2.3. Danh sách Use Case
STT

Tác nhân

Tên Use-case

UC1

Guess/User

Xem sản phẩm

UC2

Guess

Đăng ký tài khoản

UC3

User

Authentication

Mô tả


Đăng nhập, Đăng xuất,
Đổi mật khẩu

UC4

User

Thêm sản phẩm vào giỏ

UC5

User

Quản lý giỏ hàng cá nhân

UC6

User

Đặt hàng

UC7

User

Thay đổi thông tin người

CRUD

dùng

UC8

User

Kiểm tra trạng thái đơn
hàng

UC9

Owner/Admin

Quản lý người dùng

RUD

UC10

Owner/Admin

Quản lý sản phẩm

CRUD

UC11

Owner/Admin

Quản lý đơn hàng

CRUD


UC12

Owner/Admin

Quản lý hãng

CRUD

UC13

Owner/Admin

Quản lý chính sách

CRUD

UC14

Owner/Admin

Quản lý Banner

CRUD


UC15

Owner/Admin


Thống kê đơn hàng

UC16

Owner

Tạo Admin

UC17

All

Tìm kiếm sản phẩm

3.2.4. Mơ tả chi tiết Use Case
Use-case “Xem sản phẩm”
3.2.4.1.

Use case

Xem sản phẩm

Actor

Guess/User

Pre-condition

Không


Basic flow

1.

Truy xuất đến trang “Sản phẩm”.

2.

Hệ thống sẽ chuyển hướng đến trang sản phẩm

3.

Người dùng chọn một trong các sản phẩm.

4.

Hệ thống sẽ xử lý yêu cầu.

5.

Hệ thống trả lại thông tin sản phẩm

Alternative flow

Không

Post-condition

Hệ thống đã sẵn sàng cho hoạt động tiếp theo.


Extend point

Không

3.2.4.2.

Use-case “Đăng ký tài khoản”

Use case

Đăng ký tài khoản - Đăng nhập

Actor

Guest

Pre-condition

Không


Basic flow

1.

Người dùng nhấn vào biểu tượng “Đăng nhập”

2.

Hệ thống trả lại trang “Đăng nhập”


3.

Chọn option “Đăng ký tài khoản”.

4.

Hệ thống trả lại trang “Đăng ký”.

5.

Người dùng nhập thông tin “Mail”, “Mật khẩu”, “Xác nhận

mật khẩu”
6.

Hệ thống kiếm tra xem “Mail” có tồn tại trong hệ thống

chưa, “Mật khẩu” với “Xác nhận mật khẩu” có giống nhau khơng
7.

Hệ thống trả lại trang “Thông tin người dùng”

8.

Người dùng chọn ảnh đại diện, nhập thông tin “Tên người

dùng”, “Tuổi”, “Số điện thoại”, “Địa chỉ”.
9.


Hệ thống xác nhận các trường người dùng đã điền

10.

Xác nhận người dùng đã đăng ký, hệ thống trả lại “Trang

chủ”.
Alternative flow

Nếu “Mail” đã tồn tại, “Mật khẩu” với “Xác nhận mật khẩu” không
giống nhau, thông tin người dùng không được điền => Thông báo
đăng ký thất bại

Post-condition

Hệ thống đã sẵn sàng cho hoạt động tiếp theo.

Extend point

Không

3.2.4.3.1.

Use-case “Authentication - Đăng nhập”

Use case

Authentication

Actor


User

Pre-condition

Tác nhân đã có tài khoản được xác thực


Basic flow

1.

Người dùng nhấn vào biểu tượng “Đăng nhập”

2.

Hệ thống trả lại trang “Đăng nhập”

3.

Người dùng nhập thông tin “Mail”, và “Mật khẩu”.

4.

Hệ thống kiếm tra xem “Mail” và “Mật khẩu” có tồn tại

trong hệ thống chưa.

Alternative flow


5.

Hệ thống thơng báo người dùng đăng nhập thành công.

6.

Hệ thống trả lại trang “Trang chủ”

Nếu “Mail” và “Mật khẩu” không giống => Thông báo đăng nhập
thất bại

Post-condition

Hệ thống đã sẵn sàng cho hoạt động tiếp theo.

Extend point

Không

3.2.4.3.2.

Use-case “Authentication - Đổi mật khẩu”

Use case

Authentication - Đổi mật khẩu

Actor

User


Pre-condition

Tác nhân đã có tài khoản được xác thực

Basic flow

1.

Người dùng nhấn vào ảnh đại diện người dùng => Nhấn

“Đổi mật khẩu”.
2.

Hệ thống trả lại trang “Đổi mật khẩu”

3.

Người dùng nhập thông tin “Mật khẩu cũ”, “Mật khẩu

mới”, và “Xác nhận mật khẩu mới”.
4.

Hệ thống kiếm tra xem “Mật khẩu cũ” có chính xác, “Mật

khẩu mới” và “Xác nhận mật khẩu mới” có giống nhau.

Alternative flow

5.


Hệ thống thông báo người dùng đổi mật khẩu thành công.

6.

Hệ thống trả lại trang “Trang chủ”

Nếu “Mật khẩu cũ” không chính xác, “Mật khẩu mới” và “Xác
nhận mật khẩu mới” không giống => Thông báo đăng nhập thất bại


Post-condition

None

Extend point

Không

3.2.4.3.3.

Use-case “Authentication - Đăng xuất”

Use case

Authentication - Đăng xuất

Actor

User


Pre-condition

Tác nhân phải được xác thực

Basic flow

1.

Người dùng nhấn vào ảnh đại diện người dùng => Nhấn

“Đăng xuất”.
2.

Hệ thống xác nhận yêu cầu của người dùng và trả lại trang

“Trang chủ” ở trạng thái của Guest

Alternative flow

Không

Post-condition

Hệ thống đã sẵn sàng cho hoạt động tiếp theo.

Extend point

Không


3.2.4.4.

Use-case “Thêm sản phẩm vào giỏ”

Use case

Thêm sản phẩm vào giỏ

Actor

User

Pre-condition

Tác nhân phải được xác thực


×