Tải bản đầy đủ (.docx) (92 trang)

đồ án phát triển ứng dụng di động quản lý cửa hàng bán sách

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 (4.84 MB, 92 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN</b>

<b>KHOA CƠNG NGHỆ PHẦN MỀM</b>

<b>ĐỒ ÁN 2</b>

<b>PHÁT TRIỂN ỨNG DỤNG DI ĐỘNGQUẢN LÝ CỬA HÀNG BÁN SÁCH</b>

<b>GV HƯỚNG DẪN: ThS. Trần Thị Hồng YếnSV THỰC HIỆN: Vũ Bảo Châu – 20521128</b>

<b>TP. HỒ CHÍ MINH, 2024</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LỜI CẢM ƠN</b>

Lời đầu tiên em xin chân thành cảm ơn sự hướng dẫn tận tình của cơ Trần ThịHồng Yến - giảng viên hướng dẫn môn Đồ án 2 đã tạo điều kiện cho em có cơ hộiđược thực hiện đồ án, hỗ trợ những thông tin cần thiết và giải đáp những thắc mắc chonhóm trong suốt q trình thực hiện đề tài.

Vì kiến thức của em vẫn cịn hạn hẹp nên khơng thể tránh khỏi những thiếu sóttrong q trình thực hiện đồ án. Vì vậy em ln mong đợi nhận được những ý kiếnđóng góp q báu từ phía giảng viên để qua đó có thể rút kinh nghiệm, tự sửa chữa,hồn thiện bản thân mình trên tinh thần nghiêm túc, tự giác học hỏi. Một lần nữa emxin chân thành cảm ơn cô.

<i>Trường Đại học Công nghệ Thông tin, tháng 01 năm 2024</i>

<b>Sinh viên thực hiện</b>

Vũ Bảo Châu

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

2.2.2. Tại sao Flutter chọn Dart?...16

2.3. Hệ quản trị cơ sở dữ liệu Firebase...16

2.3.1. Firebase là gì?...16

2.3.2. Ưu điểm của Firebase...17

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

3.2. Sơ đồ Use-case...21

3.2.1. Sơ đồ Use-case mức tổng quát...21

3.2.2. Sơ đồ Use-case Quản lý sản phẩm...21

3.2.3. Sơ đồ Use-case Quản lý khách hàng...22

3.2.4. Sơ đồ Use-case Quản lý đơn hàng...22

3.2.5. Sơ đồ Use-case Quản lý bình luận...22

3.2.6. Sơ đồ Use-case Nhập hàng...23

3.2.7. Sơ đồ Use-case Thống kê...23

3.2.8. Sơ đồ Use-case Báo cáo vi phạm...23

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Hình 3.3 Sơ đồ use-case mức tổng quát...21

Hình 3.4 Sơ đồ use-case Quản lý sản phẩm...21

Hình 3.5 Sơ đồ use-case Quản lý khách hàng...22

Hình 3.6 Sơ đồ use-case Quản lý đơn hàng...22

Hình 3.7 Sơ đồ use-case Quản lý bình luận...22

Hình 3.8 Sơ đồ use-case Nhập hàng...23

Hình 3.9 Sơ đồ use-case Thống kê...23

Hình 3.10 Sơ đồ use-case Báo cáo vi phạm...23

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

Hình 4.12 Màn hình Theo dõi đơn hàng...73

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Bảng 3.5 Đặc tả use-case Cập nhật thông tin sản phẩm...28

Bảng 3.6 Đặc tả use-case Cập nhật giá và khuyến mãi...29

Bảng 3.7 Đặc tả use-case Xem thông tin chi tiết sản phẩm...30

Bảng 3.8 Đặc tả use-case Xem tất cả khách hàng...31

Bảng 3.9 Đặc tả use-case Xem thông tin chi tiết khách hàng...32

Bảng 3.10 Đặc tả use-case Xem lịch sử mua hàng của khách hàng...33

Bảng 3.11 Đặc tả use-case Xem danh sách đơn hàng chưa duyệt...34

Bảng 3.12 Đặc tả use-case Theo dõi đơn hàng...35

Bảng 3.13 Đặc tả use-case Xem thông tin chi tiết đơn hàng...36

Bảng 3.14 Đặc tả use-case Cập nhật trạng thái đơn hàng...37

Bảng 3.15 Đặc tả use-case Xem các bình luận mới...38

Bảng 3.16 Đặc tả use-case Ẩn bình luận...39

Bảng 3.17 Đặc tả use-case Phản hồi bình luận...40

Bảng 3.18 Đặc tả use-case Thích bình luận...41

Bảng 3.19 Đặc tả use-case Xem các bình luận bị ẩn...42

Bảng 3.20 Đặc tả use-case Khơi phục bình luận...43

Bảng 3.21 Đặc tả use-case Nhập hàng...44

Bảng 3.22 Đặc tả use-case Xem lịch sử nhập hàng...45

Bảng 3.23 Đặc tả use-case Xem chi tiết đơn nhập...46

Bảng 3.24 Đặc tả use-case Xem thống kê tháng...47

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Bảng 3.25 Đặc tả use-case Xem doanh số...48

Bảng 3.26 Đặc tả use-case Xem báo cáo vi phạm...49

Bảng 3.27 Đặc tả use-case Bỏ qua báo cáo...50

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>TÓM TẮT ĐỒ ÁN</b>

Đề tài đồ án “Phát triển ứng dụng di động quản lý cửa hàng bán sách” được lênkế hoạch thực hiện trong vòng 6 tháng. Với mục tiêu là tìm hiểu đề tài, các công nghệliên quan để xây dựng được một ứng dụng hoàn chỉnh với các chức năng mục tiêu đềura.

Đồ án mang đến một ứng dụng di động bao gồm các tính năng cơ bản, mở ra mộtcách thức tiếp cận đến việc số hóa hoạt động cửa hàng bán sách cho các chủ cửa hàngkinh doanh nhỏ lẻ, giúp việc quản lý giờ đây trở nên dễ dàng hơn.

Ứng dụng được xây dựng trên nền tảng Android, sử dụng các công nghệ phổ biếnnhư Flutter và Firebase.

Báo cáo này gồm các phần:

<b>CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI: Xác định lí do, mục tiêu của đề tài, đối</b>

tượng, phạm vi nghiên cứu, phân tích đánh giá và đưa ra hướng giải quyết.

<b>CHƯƠNG 2. CƠ SỞ LÝ THUYẾT: Giới thiệu các công nghệ, kỹ thuật được</b>

sử dụng trong đồ án.

<b>CHƯƠNG 3. PHÂN TÍCH THIẾT KẾ: Phân tích u cầu, sơ đồ use case, mô</b>

tả sơ đồ use case và thiết kế cơ sở dữ liệu cho ứng dụng.

<b>CHƯƠNG 4. XÂY DỰNG ỨNG DỤNG: Xây dựng ứng dụng thông qua danh</b>

sách các màn hình và mơ tả chi tiết

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI</b>

<b>1.1.Lý do chọn đề tài</b>

Dưới sự số hóa, mọi hoạt động của con người giờ đây đều trở nên đơn giản và dễdàng hơn. Công nghệ thơng tin đã góp phần khơng nhỏ vào triệc cải thiện chất lượngcuộc sống của chúng ta, đáng kể đến nhất đó là lĩnh vực thương mại. Việc chuyển dịchtừ phương thức buôn bán cổ điển sang buôn bán online đã làm bùng nổ ngành côngnghiệp thương mại điện tử, việc trao đổi mua bán giờ đây có thể trở nên dễ dàng bất kểkhoảng cách địa lý.

Sự phát triển nhanh chóng của các sàn thương mại điện tử lớn như Taobao,Alibaba, Shoppe, Lazada, Tiki,… là một minh chứng rõ ràng cho sự ưu việt của côngnghệ thông tin trong lĩnh vực thương mại điện tử. Tuy nhiên, nó cũng là một trở ngạivà khó khăn đối với các cửa hàng kinh doanh theo phương thức truyền thống, khi cáchkinh doanh cổ điển trở nên lép vế hơn khi đặt cạnh các sàn thương mại điện tử.

Cùng với đó, công nghệ cũng là một công cụ mạnh mẽ hỗ trợ con người thựchiện các thao tác quản lý cơ bản đến phức tạp. Việc tính tốn, lưu trữ cũng như theodõi giờ đây trở nên dễ dàng, nhanh chóng, chính xác hơn khi có sự hỗ trợ của cơngnghệ thơng tin.

Nắm được điều đó, Ứng dụng cửa hàng bán sách online (được làm ở đồ án 1) vàỨng dụng di động quản lý cửa hàng bán sách online (đồ án hiện tại) được tạo ra nhằmmang lại một cách thức dễ dàng và hiệu quả cho những cửa hàng bán sách muốn sốhóa hoạt động của mình.

Ứng dụng di động quản lý cửa hàng bán sách online mang đến một cách thức

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>- Cập nhật, điều chỉnh danh sách sản phẩm trong cửa hàng.- Phê duyệt đơn hàng, theo dõi tình trạng đơn hàng.</b>

<b>- Quản lý thông tin khách hàng, lịch sử mua hàng của khách hàng.- Phê duyệt, ẩn đánh giá của khách hàng.</b>

<b>- Tương tác (like, phản hồi) đánh giá của khách hàng.</b>

<b>- Hỗ trợ thống kê doanh thu, doanh số của cửa hàng, số lượng đơn hàng.- Lưu trữ dữ liệu lịch sử các lần nhập hàng.</b>

<b>- Xử lý báo cáo vi phạm của khách hàng.1.3.Đối tượng hướng đến</b>

<b>Khách hàng: những người có nhu cầu mua sách online, sử dụng ứng dụng cửa</b>

hàng bán sách online.

<b>Quản trị viên: là chủ cửa hàng hoặc người nắm quyền quản lý cửa hàng, sử</b>

dụng ứng dụng quản lý để tương tác với khách hàng qua các thao tác quản lý khácnhau.

<b>1.4.Phạm vi ứng dụngNền tảng: Mobile (Android)</b>

<b>Chức năng tạo mới: Phát triển ứng dụng quản lý cho chủ cửa hàng gồm các</b>

chức năng:

<b>- Quản lý sản phẩm: Cho phép Quản trị viên xem được danh sách sản phẩm</b>

hiện có, thêm sản phẩm mới vào cửa hàng, cập nhật thông tin của sản phẩm,chỉnh sửa giá, mức giảm giá cho sản phẩm. Xem đánh giá, lượt mua của sảnphẩm bất kỳ.

<b>- Quản lý đơn hàng: Cho phép Quản trị viên xem danh sách đơn hàng theo</b>

từng trạng thái (chờ duyệt, đã xác nhận, đang chuẩn bị, đang vận chuyển, đãxong, đã hủy), cũng như thao tác phê duyệt đơn hàng, hủy đơn hàng, cậpnhật trạng thái của đơn hàng. Trích xuất thống kê nhanh về tỷ lệ hoàn thànhcủa đơn hàng theo tháng.

<b>- Quản lý đánh giá: Quản trị viên có thể tương tác với các đánh giá từ khách</b>

hàng (thích, phản hồi), hoặc ẩn đi những đánh giá không phù hợp với tiêuchuẩn cộng đồng, sai phạm,…

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>- Quản lý khách hàng: Quản trị viên xem được danh sách khách hàng của cửa</b>

hàng, thông tin chi tiết của từng người, danh sách đơn hàng hiện có củakhách hàng cũng như lịch sử mua hàng của người đó. Hỗ trợ thống kê nhanhvề tần suất mua hàng của khách hàng trong năm.

<b>- Nhập hàng: Cho phép chủ cửa hàng (quản trị viên) lưu trữ dữ liệu các lần</b>

nhập hàng vào hệ thống, xem lại lịch sử nhập hàng cũng như chi tiết của từnglần nhập.

<b>- Thống kê: Trực quan hóa báo cáo về doanh thu, đơn hàng cũng như doanh số</b>

của cửa hàng dưới dạng biểu đồ. Ngồi ra cịn có các thông tin phụ liên quankhác.

<b>- Báo cáo vi phạm: Quản trị viên xem danh sách các báo cáo vi phạm của</b>

người dùng về các bình luận, đánh giá về sản phẩm. Thực hiện xử lý vi phạmbằng cách ẩn những bình luận khơng phù hợp.

<b>- Thơng báo: Quản trị viên nhận được thông báo mỗi khi khách hàng tạo đơn</b>

hàng, nhận đơn hoặc hủy đơn.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>CHƯƠNG 2: CƠ SỞ LÝ THUYẾT</b>

<b>2.1.1. Tổng quan và lịch sử</b>

Flutter là một bộ công cụ phát triển phần mềm mã nguồn mở được tạo ra bởiGoogle – một trong những công ty cơng nghệ lớn nhất hành tinh. Nó được sử dụng vớimục đích phát triển các ứng dụng đa nền tảng cho Android, iOS, Linux, Windows,MacOS và web chỉ từ một nền tảng mã duy nhất.

Flutter được giới thiệu lần đầu tiên vào năm 2015 và đến tháng 5, 2017 phiên bảnổn định đầu tiên được ra mắt chính thức. Dù được ra mắt khá trễ nhưng Flutter đã vàđang phát triển mạnh mẽ, dần trở thành một đối thủ nặng ký đối với những công cụ hỗtrợ lập trình đa nền tảng khác như React Native (Facebook), Xamarin (Microsoft)…

Tính đến thời điểm hiện tại Flutter đang là một trong những cơng cụ hỗ trợ lậptrình đa nền tảng được sử dụng nhiều nhất. Một số ứng dựng nổi tiếng được viết bằngFlutter:

<i>Hình 2.1 Một số ứng dụng viêt bằng Flutter</i>

<b>2.1.2. Thành phần của Flutter</b>

Flutter gồm có hai tầng chính là Engine và Framework:

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b>- Tầng engine chứa một thư viện đồ hoạ giúp render giao diện người dùng và</b>

máy ảo Dart – môi trường để thực thi mã nguồn và biên dịch mã lệnh Dart.Đây cũng chính là nơi thực hiện việc kết nối với hệ thống.

<b>- Tầng framework được viết bằng mã lệnh Dart, cung cấp các lớp, chức năng</b>

và tiện ích (widget) được dùng để tạo ứng dụng Flutter. Lập trình viên sẽ sửdụng chủ yếu tầng này để lập trình.

<i>Hình 2.2 Thành phần của Flutter</i>

<b>2.1.3. Một số đặc điểm nổi bật</b>

<b>- Fast Development: Tíng năng Hot Reload hoạt động trong milliseconds để</b>

hiện thị giao diện tới bạn. Sử dụng tập hợp các widget có thể customizable đểxây dựng giao diện trong vài phút. Ngồi ra Hot Reload cịn giúp bạn thêm

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>2.1.4. Ưu và nhược điểm</b>

Ưu điểm:

<b>- Flutter là một bộ open-source SDK, tức là nó hồn tồn miễn phí và “mở”</b>

chính vì thế mà cộng đồng lập trình viên có thể cùng tham gia phát triển vàhồn thiện nó

<b>- Flutter cung cấp đầy đủ và đa dạng các tiện ích (widget) hỗ trợ nên lập trình</b>

viên ít khi cần sự hỗ trợ từ thư viện của bên thứ ba cung cấp.

<b>- Hỗ trợ hot reload: Tính năng này cho phép thay đổi xuất hiện trực tiếp trên</b>

ứng dụng mà khơng cần phải rebuild lại tồn bộ ứng dụng từ đó làm giảmthời gian của lập trình viên và khiến việc xây dựng ứng dụng trở nên dễ dànghơn

Nhược điểm:

<b>- Còn nhiều hạn chế khi phát triển các ứng dụng có các chức năng cần can</b>

thiệp sâu vào phần cứng của thiết bị.

<b>- Kích thước ứng dụng khá lớn do Flutter hỗ trợ đa nền tảng nên hiển nhiên số</b>

lượng file và mã nguồn cũng sẽ bị đội lên khá nhiều, tuy nhiên điều này đãđược Google cam kết sẽ cải thiện hơn trong tương lai.

<b>- Công nghệ cịn mới và vẫn chưa có q nhiều thư viện hỗ trợ, tuy nhiên thì</b>

cộng đồng lập trình viên sử dụng Flutter đang ngày càng nhiều, chính vì thếmà trong tương lai chắc chắn sẽ có thêm nhiều thư viện hỗ trợ tốt cho Flutter.

<b>2.2.Ngơn ngữ lập trình Dart2.2.1. Tổng quan</b>

<b>- Flutter sử dụng ngơn ngữ lập trình Dart. Ra đời từ năm 2011 và được phát</b>

triển bởi Google, Dart được sử dụng để xây dựng các ứng dụng web, server,máy tính để bàn và thiết bị di động.

<b>- Dart là ngơn ngữ lập trình đa mục đích ban đầu được phát triển bởi Google</b>

và sau đó được Ecma (ECMA-408) phê chuẩn làm tiêu chuẩn.

<b>- Dart là một ngôn ngữ hướng đối tượng, được xác định theo lớp, với cơ chế</b>

garbage-collected, sử dụng cú pháp kiểu C để dịch mã tùy ý sang JavaScript.Nó hỗ trợ interface, mixin, abstract, generic, static typing và type safe.

<b>2.2.2. Tại sao Flutter chọn Dart?</b>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>- Năng suất: Cú pháp Dart rõ ràng và súc tích, cơng cụ của nó đơn giản nhưng</b>

mạnh mẽ. Type-safe giúp bạn xác định sớm các lỗi tinh tế. Dart có các thưviện cốt lõi và một hệ sinh thái gồm hàng ngàn package.

<b>- Nhanh: Dart cung cấp tối ưu hóa việc biên dịch trước thời hạn để có được dự</b>

đốn hiệu suất cao và khởi động nhanh trên các thiết bị di động và web.

<b>- Tính di động: Dart biên dịch thành mã ARM và x86, để các ứng dụng di</b>

động của Dart có thể chạy tự nhiên trên iOS, Android và hơn thế nữa. Đốivới các ứng dụng web, chuyển mã từ Dart sang JavaScript.

<b>- Dễ học và sử dụng: Dart quen thuộc với nhiều nhà phát triển hiện có, nhờ</b>

vào cú pháp và định hướng đối tượng không gây ngạc nhiên của nó. Nếu bạnđã biết C++, C # hoặc Java, bạn có thể làm việc hiệu quả với Dart chỉ sau vàingày.

<b>2.3.Hệ quản trị cơ sở dữ liệu Firebase2.3.1. Firebase là gì?</b>

Firebase là một nền tảng phát triển ứng dụng di động và web dựa trên đám mây(cloud-based), được cung cấp bởi Google. Firebase cung cấp một tập hợp các dịch vụvà công cụ mạnh mẽ để phát triển ứng dụng di động và web nhanh chóng, hiệu quả vàdễ dàng. Với Firebase, người phát triển có thể tập trung vào việc xây dựng chức năngvà trải nghiệm người dùng mà không cần lo lắng về việc quản lý cơ sở hạ tầng phứctạp.

Firebase cung cấp một loạt các dịch vụ mạnh mẽ giúp phát triển và quản lý ứngdụng. Dưới đây là một số dịch vụ chính của Firebase:

Firebase Realtime Database: Đây là một cơ sở dữ liệu thời gian thực (real-time)dựa trên JSON, cho phép lưu trữ và đồng bộ dữ liệu trên các thiết bị người dùng một

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

Firebase Cloud Firestore: Đây là một cơ sở dữ liệu tài liệu (document-based) linhhoạt và mở rộng, được lưu trữ trên đám mây. Firestore cho phép lưu trữ và truy xuấtdữ liệu theo cấu trúc tài liệu, và hỗ trợ tính năng truy vấn mạnh mẽ để tìm kiếm, sắpxếp và lọc dữ liệu.

Firebase Storage: Đây là dịch vụ lưu trữ đám mây, cho phép người dùng lưu trữvà quản lý các tệp tin như hình ảnh, video và tệp tin khác trên hạ tầng đám mây củaFirebase. Firebase Storage cung cấp khả năng tải lên và tải xuống dữ liệu hiệu quả vàđáng tin cậy.

Firebase Cloud Messaging: Đây là dịch vụ gửi thông báo đẩy (push notification)tới các thiết bị di động. Firebase Cloud Messaging cho phép gửi thông báo trực tiếp tớiứng dụng di động trên các nền tảng Android, iOS và web, giúp tương tác với ngườidùng và thông báo tin tức, cập nhật và sự kiện quan trọng.

Firebase Hosting: Đây là dịch vụ lưu trữ và phân phối ứng dụng web tĩnh trên hạtầng đám mây của Firebase. Firebase Hosting cung cấp khả năng triển khai nhanhchóng và phân phối ứng dụng web cho người dùng trên toàn cầu, với SSL miễn phí vàCDN tích hợp.

Ngồi ra, Firebase cịn cung cấp nhiều dịch vụ khác như Firebase Analytics(phân tích ứng dụng), Firebase Performance Monitoring (theo dõi hiệu suất), FirebaseRemote Config (quản lý cấu hình từ xa), và Firebase Test Lab (kiểm thử ứng dụng diđộng). Tất cả các dịch vụ này đều được tích hợp chặt chẽ với nhau và mang đến mộtnền tảng toàn diện để xây dựng và quản lý ứng dụng di động và web.

<b>2.3.2. Ưu điểm của Firebase</b>

Firebase mang đến nhiều ưu điểm hấp dẫn cho việc phát triển ứng dụng. Dướiđây là một số ưu điểm quan trọng của Firebase:

Dễ sử dụng: Firebase cung cấp một giao diện đơn giản và dễ hiểu, cho phépngười phát triển dễ dàng tạo và quản lý các dịch vụ trong ứng dụng của mình.

Phát triển nhanh chóng: Firebase cung cấp một loạt các công cụ phát triển nhưlưu trữ cơ sở dữ liệu, xác thực người dùng, thông báo đẩy và phân tích, giúp giảm thờigian phát triển và tăng tốc độ triển khai ứng dụng.

Tích hợp tốt: Firebase tích hợp một cách dễ dàng với nhiều nền tảng phát triển vàngơn ngữ lập trình khác nhau như Android, iOS, web và Node.js. Điều này cho phép

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

người phát triển linh hoạt chọn lựa công nghệ và ngôn ngữ phù hợp cho dự án củamình.

Độ tin cậy cao: Firebase được đặt trên cơ sở hạ tầng đám mây của Google, vớikhả năng mở rộng linh hoạt và đáng tin cậy. Điều này giúp đảm bảo rằng ứng dụngcủa bạn có thể xử lý được lưu lượng lớn người dùng và hoạt động ổn định.

<b>2.3.2. Nhược điểm của Firebase</b>

Mặc dù Firebase có nhiều ưu điểm, nhưng cũng tồn tại một số nhược điểm cầnxem xét:

<b>- Giới hạn miễn phí: Firebase cung cấp một gói miễn phí với các giới hạn về</b>

lưu trữ, băng thông và các tài nguyên khác. Đối với các ứng dụng có quy mơlớn, việc sử dụng gói miễn phí có thể bị hạn chế, và bạn có thể phải nâng cấplên gói trả phí để đáp ứng nhu cầu của mình.

<b>- Khả năng tùy chỉnh hạn chế: Firebase cung cấp các dịch vụ tiêu chuẩn với</b>

các tính năng sẵn có, tuy nhiên, việc tùy chỉnh cao hơn hoặc thay đổi các tínhnăng có thể bị hạn chế. Điều này có thể gây khó khăn đối với những ứngdụng địi hỏi sự tùy biến cao hoặc u cầu tích hợp với các hệ thống sẵn có.

<b>- Phụ thuộc vào dịch vụ bên thứ ba: Một số tính năng của Firebase có thể phụ</b>

thuộc vào các dịch vụ bên thứ ba như Google Cloud Platform và GoogleAnalytics. Điều này có thể tạo ra sự ràng buộc và phụ thuộc vào các nhàcung cấp dịch vụ khác nhau, và khi có sự thay đổi từ phía nhà cung cấp, ứngdụng của bạn có thể bị ảnh hưởng.

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<b>CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ</b>

<b>3.1.Tổng quan về hệ thống3.1.1. Cơng nghệ sử dụng- Ngơn ngữ lập trình: Dart.- UI Framework: Flutter.- Database: Firebase.</b>

<b>- IDE: Visual Studio Code và Android Studio.- Kiến trúc ứng dụng: Bloc.</b>

<b>3.1.2. Kiến trúc hệ thống: Mơ hình Client – Sever</b>

<b>- Client: Đại diện cho ứng dụng di động mà người dùng sử dụng để tương tác</b>

với hệ thống. Client gửi yêu cầu đến server và nhận phản hồi từ server.

<b>- Server: Đại diện cho máy chủ chứa dữ liệu của ứng dụng (Ở đây là Firebase).</b>

Server nhận và xử lý các yêu cầu liên quan đến đọc/ghi/xác thực dữ liệu từClient và trả về kết quả tương ứng.

<i>Hình 3.1 Mơ ình Client-Server với Firebase</i>

<b>3.1.3. Kiến trúc ứng dụng: BloC</b>

BloC (Business Logic Component) là một mơ hình quản lý trạng thái và luồng dữliệu trong ứng dụng Flutter. Nó giúp tách biệt logic kinh doanh và giao diện ngườidùng, tạo ra một cách cấu trúc rõ ràng và dễ quản lý. Bloc xử lý các sự kiện và cập

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

nhật trạng thái tương ứng, đồng thời cập nhật giao diện người dùng dựa trên trạng tháimới.

<i>Hình 3.2 Kiến trúc Bloc</i>

Sử dụng thư viện BloC cho phép chúng ta tách ứng dụng thành ba lớp:

<b>- Data layer: </b>

<b>o Repository: Repository là lớp trung gian giữa data layer và business logic</b>

layer. Nó cung cấp một giao diện dễ sử dụng để business logic layer tươngtác với dữ liệu. Repository xử lý việc truy xuất dữ liệu, lưu trữ và lấy dữliệu từ các nguồn khác nhau.

<b>o Data Provider: Data Provider là lớp đảm nhiệm việc lấy dữ liệu từ các</b>

nguồn bên ngoài như API hay cơ sở dữ liệu. Nó giao tiếp với Repositoryđể lấy và lưu trữ dữ liệu.

<b>- Business logic layer: </b>

<b>o BloC: Bloc (Business Logic Component) là thành phần chính của</b>

business logic layer. Nó nhận các sự kiện từ UI layer và xử lý chúng, từđó cập nhật trạng thái tương ứng. Bloc chứa các quy tắc và logic kinhdoanh của ứng dụng.

<b>- UI layer: </b>

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<b>3.2.Sơ đồ Use-case</b>

<b>3.2.1. Sơ đồ Use-case mức tổng quát</b>

<i>Hình 3.3 Sơ đồ use-case mức tổng quát</i>

<b>3.2.2. Sơ đồ Use-case Quản lý sản phẩm</b>

<i>Hình 3.4 Sơ đồ use-case Quản lý sản phẩm</i>

<b>3.2.3. Sơ đồ Use-case Quản lý khách hàng</b>

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<i>Hình 3.5 Sơ đồ use-case Quản lý khách hàng</i>

<b>3.2.4. Sơ đồ Use-case Quản lý đơn hàng</b>

<i>Hình 3.6 Sơ đồ use-case Quản lý đơn hàng</i>

<b>3.2.5. Sơ đồ Use-case Quản lý bình luận</b>

<i>Hình 3.7 Sơ đồ use-case Quản lý bình luận</i>

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<b>3.2.6. Sơ đồ Use-case Nhập hàng</b>

<i>Hình 3.8 Sơ đồ use-case Nhập hàng</i>

<b>3.2.7. Sơ đồ Use-case Thống kê</b>

<i>Hình 3.9 Sơ đồ use-case Thống kê</i>

<b>3.2.8. Sơ đồ Use-case Báo cáo vi phạm</b>

<i>Hình 3.10 Sơ đồ use-case Báo cáo vi phạm</i>

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<b>3.2.9. Danh sách Use-case</b>

<i>Bảng 3.1 Danh sách use-case</i>

1 Đăng nhập Người dùng đăng nhập vào ứng dụng.

2 Quản lý sản phẩm Tạo sản phẩm mới, cập nhật/thay đổi thông tinsản phẩm, xem thông tin sản phẩm.

3 Quản lý khách hàng Xem thông tin khách hàng, lịch sử mua hàng củakhách hàng, các đơn hàng hiện tại của khách.4 Quản lý đơn hàng Phê duyệt, theo dõi đơn hàng, xem thông tin chi

tiết của đơn, cập nhật trạng thái đơn hàng, xemlịch sử .

5 Quản lý bình luận Xem bình luận/đánh giá của khách hàng, ẩn cácbình luận khơng phù hợp. Phản hồi bình luận củakhách hàng

6 Nhập hàng Tạo đơn nhập hàng mới. Xem lịch sử nhập hàng,chi tiết đơn nhập.

7 Thống kê Báo cáo hoạt động của cửa hàng trong tháng.8 Báo cáo vi phạm Báo cáo của khách hàng về bình luận xấu.

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<b>3.2.10.Đặc tả Use-caseUse-case “Đăng nhập” </b>

<i>Bảng 3.2 Đặc tả use-case Đăng nhập</i>

<b>Tên use-case</b> Đăng nhập.

<b>Mơ tả tóm tắt</b> Người dùng sử dụng email và mật khẩu đã đăng ký trongứng dụng để truy cập vào ứng dụng (Hoặc tài khoản google,facebook).

<b>Người dùng</b> Quản trị viên

<b>Sự kiện kích hoạt </b> Khi khởi động ứng dụng.

<b>Điều kiện tiên quyết Email và mật khẩu phải hợp lệ.</b>

Thiết bị người dùng phải được kết nối internet.

<b>Điều kiện kết quả</b> Người dùng đăng nhập thành cơng và ứng dụng điều hướngđến màn hình trang chủ.

<b>Kịch bản chính- Người dùng khởi động ứng dụng.</b>

<b>- Người dùng nhập email, mật khẩu và bấm nút Đăng nhập.- Hệ thống thực hiện xác thực tài khoản thành cơng và điều</b>

hướng đến màn hình Trang chủ.

<b>Kịch bản thay thế- Tài khoản không phải là Admin</b>

+ Hiển thị thông báo, yêu cầu đăng xuất.

<b>- Hệ thống xác thực tài khoản không thành công.- Người dùng nhập sai tài khoản, mật khẩu.</b>

+ Thông báo cho người dùng, đăng nhập thất bại.

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<b>Use-case “Xem tất cả sản phẩm”</b>

<i>Bảng 3.3 Đặc tả use-case Xem tất cả sản phẩm</i>

<b>Tên use-case</b> Xem tất cả sản phẩm

<b>Mơ tả tóm tắt</b> Quản lý xem danh sách tất cả sản phẩm có trong hệ thống

<b>Người dùng</b> Quản trị viên

<b>Sự kiện kích hoạt </b> Người dùng bấm vào button Quản lý sản phẩm trong mànhình Dashboard.

<b>Điều kiện tiên quyết Thiết bị người dùng phải được kết nối internet.</b>

<b>Điều kiện kết quả</b> Ứng dụng chuyển hướng đến màn hình Quản lý sản phẩm vàhiển thị danh sách tất cả sản phẩm.

<b>Kịch bản chính- Người dùng khởi động ứng dụng.- Người dùng thực hiện UC1.</b>

<b>- Ứng dụng chuyển thành màn hình Dashboard.- Người dùng bấm vào nút Quản lý sản phẩm.</b>

<b>- Ứng dụng chuyển sang màn hình Quản lý sản phẩm và</b>

hiển thị danh sách tất cả sản phẩm trong hệ thống.

<b>Kịch bản thay thế</b> Không

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>Use-case “Thêm sản phẩm”</b>

<i>Bảng 3.4 Đặc tả use-case Thêm sản phẩm</i>

<b>Tên use-case</b> Thêm sản phẩm

<b>Mô tả tóm tắt</b> Tạo sản phẩm mới trong hệ thống

<b>Người dùng</b> Quản trị viên

<b>Sự kiện kích hoạt </b> Người dùng bấm vào button Thêm trong màn hình Quản lýsản phẩm

<b>Điều kiện tiên quyết Thiết bị người dùng phải được kết nối internetĐiều kiện kết quả</b> Sản phẩm mới được thêm thành cơng.

Ứng dụng trở về màn hình Quản lý sản phẩm với danh sáchsản phẩm được cập nhật thêm sản phẩm mới.

<b>Kịch bản chính- Người dùng thực hiện UC2</b>

<b>- Người dùng bấm nút Thêm sản phẩm- Nhập các thông tin cần thiết</b>

Thông tin người dùng cung cấp không đầy đủ.

<b>- Hiển thị thông báo lỗi yêu cầu cung cấp đầy đủ thông</b>

tin sản phẩm.

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

<b>Use-case “Cập nhật thông tin sản phẩm”</b>

<i>Bảng 3.5 Đặc tả use-case Cập nhật thông tin sản phẩm</i>

<b>Tên use-case</b> Cập nhật thông tin sản phẩm

<b>Mô tả tóm tắt</b> Người quản lý cập nhật thơng tin của sản phẩm

<b>Người dùng</b> Quản trị viên

<b>Sự kiện kích hoạt </b> Người dùng bấm vào button Cập nhật trong phần Thơng tinchung trong màn hình Chi tiết sản phẩm

<b>Điều kiện tiên quyết Thiết bị người dùng phải được kết nối internetĐiều kiện kết quả</b> Thông tin sản phẩm được cập nhật thành công.

Thông tin người dùng cung cấp không đầy đủ.

<b>- Hiển thị thông báo lỗi yêu cầu cung cấp đầy đủ thông</b>

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

<b>Use-case “Cập nhật giá và khuyến mãi”</b>

<i>Bảng 3.6 Đặc tả use-case Cập nhật giá và khuyến mãi</i>

<b>Tên use-case</b> Cập nhật giá và khuyến mãi

<b>Mô tả tóm tắt</b> Người quản lý cập nhật giá và khuyến mãi của sản phẩm

<b>Người dùng</b> Quản trị viên

<b>Sự kiện kích hoạt </b> Người dùng bấm vào button Cập nhật trong phần Thơng tinkhác trong màn hình Chi tiết sản phẩm

<b>Điều kiện tiên quyết Thiết bị người dùng phải được kết nối internetĐiều kiện kết quả</b> Thông tin sản phẩm được cập nhật thành cơng

<b>Kịch bản chính- Người dùng bấm nút Cập nhật trong phần Thông tin khác- Ứng dụng hiển thị Dialog cập nhật giá và khuyến mãi.- Điền các thông tin mới cần thiết</b>

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

<b>Use-case “Xem thông tin chi tiết sản phẩm”</b>

<i>Bảng 3.7 Đặc tả use-case Xem thông tin chi tiết sản phẩm</i>

<b>Tên use-case</b> Xem thơng tin chi tiết sản phẩm

<b>Mơ tả tóm tắt</b> Xem thông tin chi tiết của sẩn phẩm

<b>Người dùng</b> Quản trị viên

<b>Sự kiện kích hoạt </b> Người dùng bấm chọn sản phẩm ở màn hình Quản lý sảnphẩm

<b>Điều kiện tiên quyết Thiết bị người dùng phải được kết nối internet</b>

<b>Điều kiện kết quả</b> Ứng dụng chuyển hướng đến màn hình Chi tiết sản phẩm.Màn hình hiển thị thơng tin chi tiết của sản phẩm

<b>Kịch bản chính- Người dùng thực hiện UC2- Người dùng bấm chọn sản phẩm</b>

<b>- Ứng dụng chuyển sang màn hình Chi tiết sản phẩm và</b>

hiển thị thông tin chi tiết của sản phẩm được chọn.

<b>Kịch bản thay thế</b> Không

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

<b>Use-case “Xem tất cả khách hàng”</b>

<i>Bảng 3.8 Đặc tả use-case Xem tất cả khách hàng</i>

<b>Tên use-case</b> Xem tất cả khách hàng

<b>Mơ tả tóm tắt</b> Xem danh sách tất cả khách hàng trong hệ thống

<b>Người dùng</b> Quản trị viên

<b>Sự kiện kích hoạt </b> Người dùng bấm nút Quản lý khách hàng trên màn hìnhDashboard.

<b>Điều kiện tiên quyết Thiết bị người dùng phải được kết nối internet.</b>

Người dùng đã đăng nhập trước đó.

<b>Điều kiện kết quả</b> Ứng dụng chuyển hướng đến màn hình Quản lý khách hàng.Màn hình hiển thị danh sách Khách hàng.

<b>Kịch bản chính- Người dùng bấm nút Quản lý khách hàng</b>

<b>- Ứng dụng chuyển sang màn hình Quản lý khách hàng,</b>

hiển thị danh sách tất cả khách hàng trong hệ thống

<b>Kịch bản thay thế</b> Không

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

<b>Use-case “Xem thông tin chi tiết khách hàng”</b>

<i>Bảng 3.9 Đặc tả use-case Xem thông tin chi tiết khách hàng</i>

<b>Tên use-case</b> Xem thông tin chi tiết của khách hàng

<b>Mơ tả tóm tắt</b> Hiển thị thông tin chi tiết của khách hàng cụ thể

<b>Người dùng</b> Quản trị viên

<b>Sự kiện kích hoạt </b> Người dùng bấm chọn khách hàng trong màn hình Quản lýkhách hàng

<b>Điều kiện tiên quyết Thiết bị người dùng phải được kết nối internet</b>

<b>Điều kiện kết quả</b> Màn hình hiển thị thơng tin chi tiết của khách hàng đượcchọn

<b>Kịch bản chính- Người dùng thực hiện UC6.</b>

<b>- Người dùng bấm chọn khách hàng.</b>

<b>- Ứng dụng chuyển sang màn hình Thơng tin chi tiết khách</b>

hàng, hiển thị thông tin của khách hàng tương ứng.

<b>Kịch bản thay thế</b> Không

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

<b>Use-case “Xem lịch sử mua hàng của khách hàng”</b>

<i>Bảng 3.10 Đặc tả use-case Xem lịch sử mua hàng của khách hàng</i>

<b>Tên use-case</b> Xem lịch sử mua hàng của khách hàng

<b>Mơ tả tóm tắt</b> Hiển thị lịch sử mua hàng của khách hàng

<b>Người dùng</b> Quản trị viên

<b>Sự kiện kích hoạt </b> Người dùng bấm nút Lịch sử mua hàng trong màn hìnhthơng tin chi tiết khách hàng

<b>Điều kiện tiên quyết Thiết bị người dùng phải được kết nối internet.</b>

<b>Điều kiện kết quả</b> Màn hình hiển thị danh sách các đơn hàng đã xong củakhách hàng tương ứng

<b>Kịch bản chính- Người dùng thực hiện UC7</b>

<b>- Người dùng bấm nút Xem lịch sử mua hàng.</b>

<b>- Ứng dụng chuyển sang màn hình Lịch sử mua hàng và</b>

hiển thị thơng tin tương ứng của khách hàng.

<b>Kịch bản thay thế</b> Không

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

<b>Use-case “Xem danh sách đơn hàng chưa duyệt”</b>

<i>Bảng 3.11 Đặc tả use-case Xem danh sách đơn hàng chưa duyệt</i>

<b>Tên use-case</b> Xem danh sách đơn hàng chưa duyệt

<b>Mơ tả tóm tắt</b> Hiển thị danh sách các đơn đang chờ duyệt

<b>Người dùng</b> Quản trị viên

<b>Sự kiện kích hoạt </b> Người dùng bấm nút Quản lý đơn hàng

<b>Điều kiện tiên quyết Thiết bị người dùng phải được kết nối internet.</b>

Người dùng đã đăng nhập trước đó.

<b>Điều kiện kết quả</b> Màn hình hiển thị danh sách các đơn hàng chưa được duyệt

<b>Kịch bản chính- Người dùng bấm nút Quản lý đơn hàng trên màn hình</b>

<b>- Ứng dụng chuyển sang màn hình Quản lý đơn hàng - Màn hình hiển thị danh sách các đơn hàng đang chờ duyệtKịch bản thay thế</b> Không

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

<b>Use-case “Theo dõi đơn hàng”</b>

<i>Bảng 3.12 Đặc tả use-case Theo dõi đơn hàng</i>

<b>Tên use-case</b> Theo dõi đơn hàng

<b>Mơ tả tóm tắt</b> Hiển thị danh sách đơn hàng theo từng trạng thái của đơn(Đang chuẩn bị - Chuẩn bị xong (hoặc Chờ lấy) – Đang vậnchuyển – Hoàn thành – Đã hủy)

<b>Người dùng</b> Quản trị viên

<b>Sự kiện kích hoạt </b> Người dùng bấm nút Theo dõi đơn hàng trong màn hìnhQuản lý đơn hàng.

<b>Điều kiện tiên quyết Thiết bị người dùng phải được kết nối internet</b>

<b>Điều kiện kết quả</b> Màn hình hiển thị danh sách các đơn hàng theo trạng tháitương ứng

<b>Kịch bản chính- Người dùng thực hiện UC9</b>

<b>- Người dùng chọn trạng thái muốn xem trong màn hình</b>

Quản lý đơn hàng (Đang chuẩn bị, Chờ lấy hàng, Đangvận chuyển).

<b>- Ứng dụng chuyển sang màn hình Theo dõi đơn hàng với</b>

tab trạng thái tương ứng.

<b>- Màn hình hiển thị danh sách đơn hàng của trạng thái đó.Kịch bản thay thế</b> Khơng

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

<b>Use-case “Xem thông tin chi tiết đơn hàng”</b>

<i>Bảng 3.13 Đặc tả use-case Xem thông tin chi tiết đơn hàng</i>

<b>Tên use-case</b> Xem thơng tin chi tiết đơn hàng

<b>Mơ tả tóm tắt</b> Hiển thị thông tin chi tiết của đơn hàng

<b>Người dùng</b> Quản trị viên

<b>Sự kiện kích hoạt </b> Người dùng bấm chọn đơn hàng bất kỳ trong màn hìnhQuản lý đơn hàng, Theo dõi đơn hàng, Thông tin chi tiếtkhách hàng,…

<b>Điều kiện tiên quyết Thiết bị người dùng phải được kết nối internet.</b>

<b>Điều kiện kết quả</b> Màn hình hiển thị thơng tin chi tiết của đơn hàng tương ứng.

<b>Kịch bản chính- Người dùng chọn đơn hàng muốn xem</b>

<b>- Ứng dụng chuyển sang màn hình Chi tiết đơn hàng và</b>

hiển thị thơng tin của đơn hàng tương ứng.

<b>Kịch bản thay thế</b> Không

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

<b>Use-case “Cập nhật trạng thái đơn hàng”</b>

<i>Bảng 3.14 Đặc tả use-case Cập nhật trạng thái đơn hàng</i>

<b>Tên use-case</b> Cập nhật trạng thái đơn hàng

<b>Mơ tả tóm tắt</b> Người dùng thay đổi trạng thái đơn hàng bằng cách Xácnhận đơn hàng, Xác nhận đã chuẩn bị xong, Xác nhận giaocho bên vận chuyển.

<b>Người dùng</b> Quản trị viên

<b>Sự kiện kích hoạt </b> Người dùng bấm nút Xác nhận tương ứng với mỗi trạng tháiđơn hàng

<b>Điều kiện tiên quyết Thiết bị người dùng phải được kết nối internetĐiều kiện kết quả</b> Trạng thái của đơn hàng được cập nhật

<b>Kịch bản chính- Người dùng thực hiện UC11 </b>

<b>- Người dùng bấm nút Xác nhận theo từng trạng thái- Trạng thái đơn hàng được cập nhật</b>

<b>Kịch bản thay thế</b> Không

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

<b>Use-case “Xem các bình luận mới</b>

<i>Bảng 3.15 Đặc tả use-case Xem các bình luận mới</i>

<b>Tên use-case</b> Xem các bình luận mới

<b>Mơ tả tóm tắt</b> Hiển thị các bình luận mới nhất của khách hàng về sản phẩm

<b>Người dùng</b> Quản trị viên

<b>Sự kiện kích hoạt </b> Người dùng bấm nút Quản lý bình luận

<b>Điều kiện tiên quyết Thiết bị người dùng phải được kết nối internet.</b>

<b>Điều kiện kết quả</b> Màn hình hiển thị các bình luận mới nhất trong hệ thống

<b>Kịch bản chính- Người dùng bấm nút Quản lý bình luận trên màn hình</b>

<b>- Ứng dụng chuyển sang màn hình Quản lý bình luận và</b>

hiển thị danh sách bình luận mới nhất trong hệ thống

<b>Kịch bản thay thế</b> Không.

</div>

×