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

đồ án 1 xây dựng ứng dụng di động kinh doanh thiết bị điện tử

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 (2.41 MB, 99 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Í MINH</b>

<b>TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TINKHOA CƠNG NGHỆ PHẦN MỀM</b>

<b>ĐÀO XUÂN HUY – 21520913TRẦN THANH HIỀN – 21520230</b>

<b>BÁO CÁO ĐỒ ÁN 1</b>

<b>XÂY DỰNG ỨNG DỤNG DI ĐỘNG KINH DOANH THIẾT BỊ ĐIỆN TỬ</b>

<b>GIẢNG VIÊN HƯỚNG DẪNTHS. TRẦN THỊ HỒNG YẾN</b>

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

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

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

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 Đạihọc Công nghệ Thông tin – ĐHQG TP.HCM, chúng em đã được trang bị các kiếnthức cơ bản cùng các kỹ năng thực tế để có thể hồn thành Đồ án 1 của mình.

Để hồn thành đồ án này, với lịng biết ơn sâu sắc chúng em xin gửi lời cảmơn chân thành đến cơ Trần Thị Hồng Yến vì đã tận tình giúp đỡ, định hướng cách tưduy và hướng làm việc khoa học. Bước đầu tiếp cận các cơng nghệ mới, nhóm cịnnhiều thiếu sót về mặt kiến thức cũng như kinh nghiệm thực tiễn nên khơng tránhkhỏi nhiều sai sót. Những nhận xét, góp ý chân tình của cơ là hết sức q báu khơngchỉ trong q trình thực hiện đồ án mà cịn là hành trang tiếp bước cho nhóm trongquá trình học tập và làm việc sau này.

Trong suốt thời gian thực hiện, nhóm đã tự tìm hiểu các công nghệ mới và kếthợp với những kiến thức nền tảng trong quá trình học tập, nghiên cứu và vận dụngđể thực hiện đề tài này. Với quỹ thời gian có hạn cũng như kinh nghiệm xây dựngsản phẩm cịn thiếu, sản phẩm đồ án cuối cùng có thể sẽ mắc phải một số sai sót vàchúng em rất mong sẽ nhận được những góp ý của cơ để bổ sung, cải tiến sản phẩmcũng như nâng cao kiến thức để xây dựng các sản phẩm tiếp theo sẽ chỉn chu vàhồn thiện hơn, và tích luỹ thêm cho mình những kinh nghiệm quý giá để đáp ứngtốt cho những công việc thực tế trong tương lai.

Sau cùng, xin chúc cô cũng như các giáo viên tại trường Công nghệ Thơng tinnói chung thật dồi dào sức khỏe, niềm tin để tiếp tục truyền đạt kiến thức cho cácbạn sinh viên.

Sinh viên

<b>Đào Xuân HuyTrần Thanh Hiền</b>

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

<b>NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN</b>

<b>ThS. Trần Thị Hồng Yến</b>

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

1.4. Đối tượng nghiên cứu...2

1.5. Phương pháp nghiên cứu...2

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

3.2. Xác định chức năng, yêu cầu...10

3.2.1. Yêu cầu chức năng...10

3.2.1.1. Yêu cầu lưu trữ...10

3.2.1.2. Yêu cầu hiển thị...11

3.2.2. Yêu cầu phi chức năng...13

3.3.1.2. Mô tả các thành phần trong kiến trúc hệ thống...16

3.3.2. Sơ đồ Use case...17

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

3.3.2.1. Sơ đồ Use case tổng quát...17

3.3.2.2. Sơ đồ Use case chi tiết...18

3.3.2.3. Danh sách Actor...20

3.3.2.4. Danh sách Usecase...20

3.3.3. Đặc tả Use case...23

3.3.3.1. Đặc tả use case Đăng nhập...23

3.3.3.2. Đặc tả use case Đăng ký...24

3.3.3.3. Đặc tả use case Xem thông tin cá nhân...26

3.3.3.4. Đặc tả use case Chỉnh sửa thông tin cá nhân...26

3.3.3.5. Đặc tả use case Xem địa chỉ giao hàng...27

3.3.3.6. Đặc tả use case Thêm địa chỉ giao hàng...28

3.3.3.7. Đặc tả use case Sửa địa chỉ giao hàng...29

3.3.3.8. Đặc tả use case Xem sản phẩm...30

3.3.3.9. Đặc tả use case Tìm kiếm sản phẩm...31

3.3.3.10. Đặc tả use case Lọc sản phẩm...32

3.3.3.11. Đặc tả use case Xem danh mục sản phẩm...32

3.3.3.12. Đặc tả use case Tìm kiếm danh mục sản phẩm...33

3.3.3.13. Đặc tả use case Xem sản phẩm trong danh sách yêu thích...34

3.3.3.14. Đặc tả use case Thêm sản phẩm vào danh sách u thích...35

3.3.3.15. Đặc tả use case Xóa sản phẩm khỏi danh sách yêu thích...35

3.3.3.16. Đặc tả use case Xem sản phẩm trong giỏ hàng...36

3.3.3.17. Đặc tả use case Thêm sản phẩm vào giỏ hàng...37

3.3.3.18. Đặc tả use case Xóa sản phẩm khỏi giỏ hàng...38

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

3.3.3.20. Đặc tả use case Xem tổng số lượng sản phẩm trong giỏ hàng...39

3.3.3.21. Đặc tả use case Xem tổng giá trị sản phẩm trong giỏ hàng...40

3.3.3.22. Đặc tả use case Đặt hàng...40

3.3.3.23. Đặc tả use case Xem sản phẩm trong đơn hàng...41

3.3.3.24. Đặc tả use case Thanh toán...42

3.3.3.25. Đặc tả use case Đánh giá sản phẩm...43

3.3.3.26. Đặc tả use case Xem lịch sử đặt hàng...44

3.3.3.27. Đặc tả use case Xem tình trạng đơn hàng...45

3.3.3.28. Đặc tả use case Xem phương thức thanh tốn...46

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

4.6. Màn hình Chi tiết loại sản phẩm...62

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

YHình 3. 1 Sơ đồ kiến trúc hệ thống...15

Hình 3. 2 Sơ đồ Use case User tổng quát...17

Hình 3. 3 Sơ đồ Use case chi tiết quản lý tài khoản...18

Hình 3. 4 Sơ đồ Use case chi tiết quản lý danh mục u thích...18

Hình 3. 5 Sơ đồ Use case chi tiết cho quản lý giỏ hàng...19

Hình 3. 6 Sơ đồ Use case chi tiết cho quản lý đơn hàng...20

Hình 4. 10 Code thiết kế màn hình Danh mục sản phẩm...61

Hình 4. 11 Màn hình Chi tiết loại sản phẩm...62

Hình 4. 12 Code thiết kế màn hình Chi tiết loại sản phẩm...63

Hình 4. 13 Màn hình Chi tiết sản phẩm...64

Hình 4. 14 Thiết kế màn hình chi tiết sản phẩm...65

Hình 4. 15 Màn hình Thơng báo...66

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

Hình 4. 26 Code thiết kế màn hình Tài khoản...77

Hình 4. 27 Màn hình Chỉnh sửa tài khoản...78

Hình 4. 28 Code thiết kế màn hình Chỉnh sửa tài khoản...79

Hình 4. 29 Màn hình Lịch sử đặt hàng...79

Hình 4. 30 Code thiết kế màn hình Lịch sử đặt hàng...81

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

<b>DANH MỤC BẢNG</b>

Bảng 3. 1 Bảng mô tả các thành phần trong kiến trúc hệ thống...16

Bảng 3. 2 Danh sách các Actor...20

Bảng 3. 3 Bảng danh sách các Use case...20

Bảng 3. 4 Bảng đặc tả Use case Đăng nhập...23

Bảng 3. 5 Bảng đặc tả Use case Đăng ký...24

Bảng 3. 6 Bảng đặc tả Use case xem thông tin cá nhân...26

Bảng 3. 7 Bảng đặc tả Use case Chỉnh sửa thông tin cá nhân...26

Bảng 3. 8 Bảng đặc tả Use case Xem địa chỉ giao hàng...27

Bảng 3. 9 Bảng đặc tả Use case Thêm địa chỉ giao hàng...28

Bảng 3. 10 Bảng đặc tả Use case sửa địa chỉ giao hàng...29

Bảng 3. 11 Bảng đặc tả Use case xem sản phẩm...30

Bảng 3. 12 Bảng đặc tả Use case tìm kiếm sản phẩm...31

Bảng 3. 13 Bảng đặc tả Use case Lọc sản phẩm...32

Bảng 3. 14 Bảng đặc tả Use case xem danh mục sản phẩm...32

Bảng 3. 15 Bảng đặc tả Use case tìm kiếm danh mục sản phẩm...33

Bảng 3. 16 Bảng đặc tả Use case xem sản phẩm trong danh sách yêu thích...34

Bảng 3. 17 Bảng đặc tả Use case thêm sản phẩm vào danh sách yêu thích...35

Bảng 3. 18 Bảng đặc tả Use case xóa sản phẩm khỏi danh sách yêu thích...35

Bảng 3. 19 Bảng đặc tả Use case xem sản phẩm trong giỏ hàng...36

Bảng 3. 20 Bảng đặc tả Use case thêm sản phẩm vào giỏ hàng...37

Bảng 3. 21 Bảng đặc tả Use case xóa sản phẩm khỏi giỏ hàng...38

Bảng 3. 22 Bảng đặc tả Use case xóa sản phẩm khỏi giỏ hàng...38

Bảng 3. 23 Bảng đặc tả Use case xem tổng số lượng sản phẩm trong giỏ hàng...39

Bảng 3. 24 Bảng đặc tả Use case xem tổng giá trị sản phẩm trong giỏ hàng...40

Bảng 3. 25 Bảng đặc tả Use case đặt hàng...41

Bảng 3. 26 Bảng đặc tả Use case xem sản phẩm trong đơn hàng...42

Bảng 3. 27 Bảng đặc tả Use case thanh toán...42

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

Bảng 3. 29 Bảng đặc tả Use case xem lịch sử đặt hàng...44

Bảng 3. 30 Bảng đặc tả Use case xem tình trạng đơn hàng...45

Bảng 3. 31 Bảng đặc tả Use case xem phương thức thanh toán...46

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

<b>CHƯƠNG 1.Giới thiệu đề tài</b>

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

Thiết bị điện tử đang đóng vai trị vơ cùng quan trọng trong cuộc sống hiệnđại, ảnh hưởng đến nhiều khía cạnh của chúng ta từ cơng việc, giáo dục, giao tiếpđến giải trí và nhu cầu hàng ngày. Chính vì sự phổ biến và tiến bộ liên tục của cácthiết bị điện tử đã mở ra nhiều cơ hội mới trong lĩnh vực kinh doanh và giải trí. Thịtrường thiết bị điện tử được xem là một trong những thị trường lớn và phát triểnnhanh nhất thế giới.

Bên cạnh đó, mua sắm trực tuyến đang trở thành một phần không thể thiếutrong cuộc sống hàng ngày của mọi người. Khách hàng ngày càng tìm kiếm sự tiệnlợi và trải nghiệm mua sắm tốt hơn qua điện thoại di động của họ. Việc xây dựngứng dụng mua bán thiết bị điện tử cũng mang lại cơ hội tối ưu hóa trải nghiệmngười dùng thơng qua việc tích hợp các tính năng tiện ích như tìm kiếm sản phẩm,đánh giá, bình luận, và thanh tốn trực tuyến. Ngồi ra, chúng ta cịn có thể sử dụngdữ liệu thu thập từ người dùng để tùy chỉnh và đề xuất các sản phẩm phù hợp với sởthích và nhu cầu của họ, tạo nên một trải nghiệm mua sắm cá nhân và hấp dẫn.

Chính vì những lợi ích đáng kể và đáp ứng phần lớn nhu cầu mua hàng onlinetrong cuộc sống, chúng em quyết định chọn thực hiện đề tài “Xây dựng ứng dụng diđộng bán thiết bị điện tử”. Cửa hàng có thể đưa các sản phẩm lên ứng dụng củamình và quản lý chúng, khách hàng có thể thỏa thích chọn lựa mẫu mã và tiến hànhđặt mua hàng mà không cần đến cửa hàng. Đồng thời, cửa hàng cịn có thể thơngqua ứng dụng để quảng bá tốt hơn về các sản phẩm mà mình bán ra.

<b>1.2.Mục tiêu đề tài</b>

<b>- Tạo trải nghiệm mua sắm thuận tiện và dễ dàng: Ứng dụng tối ưu giao</b>

diện người dùng và trải nghiệm mua sắm để người dùng có thể dễ dàng tìmkiếm, xem thơng tin sản phẩm và thực hiện thanh toán một cách thuận tiện

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

<b>- Theo dõi và đánh giá hiệu quả: Thiết lập các hệ thống theo dõi hiệu quả</b>

của ứng dụng dành cho quản trị viên, bao gồm số lượt tải xuống, doanh sốbán hàng, đánh giá và phản hồi từ khách hàng, để đánh giá và cải thiện quytrình kinh doanh và trải nghiệm người dùng.

- Tìm hiểu công nghệ xây dựng ứng dụng di động gồm: Figma, Flutter,Nodejs, MongoDB.

- Khảo sát phần mềm bán hàng trên thị trường, đặc biệt là các phần mềm bánthiết bị điện tử, từ đó tiến hành phân tích, xác định yêu cầu, tính năng cụ thểcho đề tài.

- Phân tích, thiết kế hệ thống ứng dụng.- Thiết kế:

 Thiết kế đối tượng. Thiết kế dữ liệu. Thiết kế giao diện.- Cài đặt.

- Triển khai và kiểm thử.- Hoàn thiện sản phẩm.

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

- Chức năng giỏ hàng, mua hàng, theo dõi đơn hàng, lịch sử mua hàng.- Chức năng thanh toán kết hợp các cổng thanh toán điện tử.

<b>1.7.Công nghệ sử dụng</b>

- Công cụ thiết kế UI/UX: Figma.- Xây dựng ứng dụng: Android, IOS.- Front-end:

 Ngôn ngữ sử dụng: Dart.  Thư viện sử dụng: Flutter.- Back-end:

 Ngôn ngữ sử dụng: Javascript.  Thư viện sử dụng: Nodejs.- Database: MongoDB.

- Source Control: Github.

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

<b>CHƯƠNG 2.Tìm hiểu cơ sở lý thuyết</b>

<b>2.1.Tổng quan về flutter</b>

<b>2.1.1. Giới thiệu</b>

<b>- Flutter là một nền tảng UI mã nguồn mở và miễn phí, do Google tạo ra và</b>

ra mắt vào tháng 5 năm 2017. Flutter giúp người dùng xây dựng các ứngdụng gốc cho di động, có giao diện đẹp và chất lượng cao, chỉ với mộtcodebase duy nhất cho iOS và Android.

<b>- Flutter bao gồm hai thành phần chính là:</b>

 Một SDK (Bộ cơng cụ phát triển phần mềm): Bao gồm các công cụ hỗtrợ người dùng trong q trình phát triển ứng dụng. Nó cũng có cáccông cụ biên dịch code thành code gốc cho iOS và Android.

 Một Framework (Thư viện UI dựa trên widget): Bao gồm các thànhphần giao diện người dùng có thể sử dụng lại như slider, button, ...giúp người dùng tùy biến theo ý muốn.

<b>2.1.2. Ưu điểm</b>

<b>- Hot Reload và Hot Restart, cho phép bạn xem ngay lập tức các thay đổi</b>

trong mã nguồn mà không cần khởi động lại ứng dụng.

<b>- Hiệu năng gốc, cho phép ứng dụng chạy mượt mà và nhanh chóng trên</b>

các thiết bị di động, web, máy tính để bàn và nhúng.

<b>- Giao diện đẹp, cho phép bạn tùy biến và sử dụng lại các widget, hiệu</b>

ứng, hoạt hình và ứng dụng Flutter.

<i>Hình 2. 1 Flutter</i>

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

<b>2.1.3. Nhược điểm</b>

<b>- Bộ nhớ sử dụng cao, do Flutter sử dụng bộ render UI riêng, không dựa</b>

trên UI có sẵn của nền tảng gốc.

<b>- Ngơn ngữ Dart khó học, do Dart là một ngơn ngữ mới và khác biệt với</b>

các ngôn ngữ phổ biến khác như Java, Kotlin, Swift, JavaScript.

<b>2.2.Tổng quan về Bloc – State management2.2.1. Giới thiệu</b>

<b>-</b> Bloc là một thư viện dùng để điều khiển các State trong các ứng dụngFlutter. Bloc dựa trên RxDart, sử dụng “event” làm Input và “state” làmOutput.

<b>-</b> Đặc điểm của State Management này là có thể phân chia các Bloc thànhcác Component riêng biệt, mỗi Component chỉ đảm nhiệm một BusinessLogic, nhờ vậy sẽ không gây xung đột, rối loạn với các Code Logic khác.

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

<b>- Bloc khơng sử dụng UI có sẵn của framework native, mà tự render UI</b>

riêng, dẫn đến tốn nhiều bộ nhớ và khơng thể tận dụng các tính năng củaOS.

<b>2.3.Tổng quan về Nodejs2.3.1. Giới thiệu</b>

<b>- NodeJs là một môi trường chạy JavaScript mã nguồn mở và đa nền tảng,</b>

cho phép bạn thực thi mã JavaScript bên ngồi trình duyệt web.

<b>- NodeJs hoạt động trên nền tảng V8 JavaScript engine, một công nghệ</b>

của Google để biên dịch và tối ưu hóa mã JavaScript.

<b>- Hiệu suất khi xử lý các tác vụ máy tính nặng bị giảm, do NodeJs được</b>

viết bằng C++ và JavaScript nên phải thông qua một trình biên dịch củaNodeJs.

<b>- API đơi lúc khơng ổn định, do NodeJs là một nền tảng mới và đang liên</b>

tục cập nhật, nên có thể có những thay đổi khơng tương thích với các

<i>Hình 2. 3 NodeJS</i>

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

phiên bản trước. Bạn cần theo dõi và cập nhật API thường xuyên đểtránh gặp lỗi.

<b>2.4.Tổng quan về MongoDB2.4.1. Giới thiệu</b>

<b>- MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL mã nguồn mở đa nền</b>

tảng viết bằng C++. Bản ghi trong MongoDB được lưu trữ dạng một dữliệu văn bản (Document), là một cấu trúc dữ liệu bao gồm các cặp giá trịvà trường tương tự như các đối tượng JSON.

<b>- MongoDB có nhiều tính năng nổi bật, như:</b>

 Mơ hình dữ liệu tài liệu, cho phép bạn lưu trữ dữ liệu dưới dạng cáctài liệu có cấu trúc động, không cần định nghĩa sơ đồ trước.

 Giao diện truy vấn đa dạng, cho phép bạn thực hiện các thao tác trêndữ liệu như tìm kiếm, lọc, sắp xếp, nhóm, phân tích,… bằng cách sửdụng một API truy vấn thống nhất và hỗ trợ nhiều ngôn ngữ lậptrình.

<b>2.4.2. Ưu điểm</b>

<b>- MongoDB cho phép bạn lưu trữ các loại dữ liệu khác nhau với cấu trúc</b>

linh hoạt, không cần định nghĩa lược đồ trước.

<b>- MongoDB có khả năng mở rộng cao, có thể phân tán dữ liệu trên nhiều</b>

nút để tăng dung lượng lưu trữ và khả năng chịu tải.

<i>Hình 2. 4 MongoDB</i>

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

<b>2.4.3. Nhược điểm</b>

<b>- MongoDB khơng phù hợp cho các ứng dụng có yêu cầu độ chính xác</b>

cao, ví dụ như ngân hàng, bảo hiểm,... do khơng có ràng buộc và giaodịch.

<b>- MongoDB sử dụng nhiều bộ nhớ RAM để lưu trữ và truy xuất dữ liệu,</b>

do đó có thể gặp khó khăn khi hoạt động với các hệ thống có bộ nhớ hạnchế.

<b>2.5.Tổng quan về ExpressJS2.5.1. Giới thiệu</b>

<b>- Expressjs là một framework được xây dựng trên nền tảng của Nodejs. Nó</b>

cung cấp các tính năng mạnh mẽ để phát triển web hoặc mobile.Expressjs hỗ trợ các method HTTP và midleware tạo ra API vô cùngmạnh mẽ và dễ sử dụng.

<b>- Tổng hợp một số chức năng chính của Expressjs như sau:</b>

 Thiết lập các lớp trung gian để trả về các HTTP request.

 Define router cho phép sử dụng với các hành động khác nhau dựatrên phương thức HTTP và URL.

 Cho phép trả về các trang HTML dựa vào các tham số.

<b>2.5.2. Ưu điểm</b>

- Đơn giản và dễ sử dụng: ExpressJS có cú pháp đơn giản và dễ hiểu, giúplập trình viên dễ dàng nắm bắt và triển khai các tính năng.

<i>Hình 2. 5 ExpressJS</i>

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

- Hỗ trợ middleware: ExpressJS hỗ trợ middleware, cho phép bạn thêmcác chức năng trung gian vào quy trình xử lý yêu cầu và phản hồi.Middleware giúp xác thực người dùng, ghi log, xử lý lỗi, nén dữ liệu vàthực hiện nhiều tác vụ khác một cách linh hoạt.

- Hỗ trợ mơ hình MVC: ExpressJS hỗ trợ phát triển ứng dụng theo mơhình MVC (Model-View-Controller), giúp tách biệt logic và giao diện,tăng tính bảo mật và khả năng tái sử dụng code.

<b>2.5.3. Nhược điểm</b>

- Thiếu cấu trúc: Do ExpressJS không áp đặt một cấu trúc nghiêm ngặt,việc tổ chức dự án và quản lý mã nguồn có thể trở nên khó khăn, đặc biệtkhi ứng dụng phát triển lớn và phức tạp.

- Khả năng mở rộng: Khi ứng dụng phát triển lớn và phức tạp, việc quảnlý mã nguồn và mở rộng có thể trở nên khó khăn với ExpressJS.

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

<b>CHƯƠNG 3.Phân tích thiết kế hệ thống</b>

<b>3.1.Khảo sát hiện trạng</b>

Thực tế hiện nay, Việt Nam đã có nhiều ứng dụng mua sắm trên thiết bị di độngquen thuộc có thể kể đến như: Shopee, Lazada, Tiki, Sendo,… Các ứng dụng nàyđều có sự tương đồng về chức năng nhưng ngồi ra cũng có một số khuyết điểmnhư có những chức năng không cần thiết, giao diện chưa thân thiện với ngườidùng,... có thể cải tiến để hướng đến sự đơn giản, tiện lợi và thân thiện hơn chongười dùng.

<b>3.2.Xác định chức năng, yêu cầu3.2.1. Yêu cầu chức năng</b>

<b>3.2.1.1.Yêu cầu lưu trữ- Thông tin đăng nhập</b>

+ Hệ thống cần bảo đảm tính bảo mật trong việc lưu trữ các thơng tinriêng tư về địa chỉ giao hàng, thông tin cá nhân, đơn hàng của từngngười dùng. Vì vậy để có thể truy cập và sử dụng ứng dụng, cần phảicó số email để đăng nhập vào ứng dụng.

+ Các thông tin đăng nhập cần lưu trữ gồm: Email.

<b>- Thông tin đăng ký</b>

+ Hệ thống cần đảm bảo tính bảo mật trong việc lưu trữ thơng tinriêng tư của người dùng. Vì vậy để đăng ký ứng dụng cần phải có sốđiện thoại, email và username.

+ Các thông tin đăng ký cần lưu trữ: Email, Số điện thoại vàusername.

<b>- Thông tin người dùng</b>

+ Các thông tin của người dùng cần lưu trữ bao gồm: mã ID,username, số điện thoại, email, ảnh đại diện, giới tính, ngày sinh, cácsản phẩm yêu thích và vai trị.

<b>- Thơng tin sản phẩm</b>

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

+ Các thông tin sản phẩm cần lưu trữ bao gồm: mã ID, tên sản phẩm,giá thường ngày, giá giảm giá, số lượng, màu sắc, hình ảnh, mơ tảsản phẩm, thương hiệu, danh mục sản phẩm, tổng số lượng đánh giá,trung bình đánh giá,

<b>- Thơng tin danh mục sản phẩm</b>

+ Các thông tin danh mục sản phẩm cần lưu trữ bao gồm: mã ID, têndanh mục, số lượng thương hiệu, số lượng sản phẩm, ảnh bìa.

<b>- Thơng tin mã giảm giá</b>

+ Các thông tin mã giảm giá cần lưu trữ bao gồm: mã ID, mã code,tiêu đề, giá trị giảm giá, ảnh bìa.

<b>- Thơng tin địa chỉ giao hàng</b>

+ Các thông tin địa chỉ giao hàng cần lưu trữ bao gồm: mã ID, mãngười dùng, tên người nhận, số điện thoại người nhận, địa chỉ chitiết, quận, thành phố, quốc gia.

<b>- Thông tin đánh giá sản phẩm</b>

+ Các thông tin đánh giá sản phẩm cần lưu trữ bao gồm: mã ID, nộidung, số sao đánh giá, mã sản phẩm, mã người dùng.

<b>- Thông tin giỏ hàng</b>

+ Các thông tin giỏ hàng cần lưu trữ bao gồm: mã ID, mã ngườidùng, các sản phẩm, tổng số lượng sản phẩm, tổng giá trị.

<b>- Thông tin đơn hàng</b>

+ Các thông tin đơn hàng cần lưu trữ bao gồm: mã ID, mã ngườidùng, sản phẩm trong đơn hàng, tổng số lượng sản phẩm, tổng giá trịđơn hàng, tổng giá trị sau giảm giá, địa chỉ giao hàng, phí giao hàng,phương thức thanh toán, trạng thái đơn hàng.

<b>3.2.1.2.Yêu cầu hiển thị</b>

<b>- Hiển thị sản phẩm theo từng danh mục</b>

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

+ Chức năng hiển thị sản phẩm theo từng danh mục được thực hiệnkhi người dùng có nhu cầu tìm kiếm sản phẩm theo danh mục mongmuốn.

+ Chức năng này sẽ lọc sản phẩm theo từng danh mục, hỗ trợ ngườidùng xem sản phẩm theo danh mục mong muốn một cách trực quan.+ Kết quả hiển thị sản phẩm ứng với danh mục mà người dùng chọn.

<b>- Hiển thị danh mục yêu thích</b>

+ Chức năng hiển thị danh mục yêu thích được thực hiện khi ngườidùng có nhu cầu theo dõi các sản phẩm đã yêu thích.

+ Chức năng này hỗ trợ người dùng xem trực tiếp các sản phẩmđược yêu thích và thay đổi sản phẩm trong danh mục yêu thích mộtcách trực quan.

+ Kết quả hiển thị danh mục yêu thích ứng với sản phẩm người dùngthêm vào danh mục u thích hoặc xóa khỏi danh mục u thích.

+ Kết quả hiển thị giỏ hàng ứng với các sản phẩm người dùng thêmvào giỏ hàng hoặc xóa sản phẩm khỏi giỏ hàng.

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

<b>- Hiển thị địa chỉ giao hàng</b>

+ Chức năng hiển thị địa chỉ giao hàng được thực hiện khi ngườidùng có nhu cầu quản lý các địa chỉ giao hàng trong tài khoản.

+ Chức năng này hỗ trợ người dùng xem trực tiếp các địa chỉ giaohàng hiện có ở trong tài khoản.

+ Kết quả hiển thị địa chỉ giao hàng tương ứng với các địa chỉ giaohàng người dùng đã thêm vào.

<b>- Hiển thị thông tin cá nhân</b>

+ Chức năng hiển thị thơng tin cá nhân được thực hiện khi ngườidùng có nhu cầu quản lý thông tin cá nhân.

+ Chức năng này hỗ trợ người dùng xem trực tiếp các thông tin cánhân trong tài khoản một cách trực quan.

+ Kết quả hiển thị thông tin cá nhân tương ứng với thông tin ngườidùng đã đăng ký hoặc chỉnh sửa trong tài khoản.

<b>3.2.2. Yêu cầu phi chức năng3.2.2.1.Tính khả dụng</b>

<b>- Hệ điều hành phải từ Android 5.0 trở lên đối với các thiết bị Android</b>

và IOS 13.0 trở lên đối với các thiết bị IOS.

<b>- Thiết bị phải có kết nối Internet3.2.2.2.Tính ổn định</b>

<b>- Ứng dụng hoạt động liên tục 24/7, hạn chế tối đa các sự cố.</b>

<b>- Thực hiện xử lý sự cố chặt chẽ để giảm thiểu ảnh hưởng đến trải</b>

nghiệm người dùng. Gửi thông báo cho người dùng khi có sự cố vàcung cấp thơng tin chi tiết để người dùng hiểu tình trạng.

<b>- Phát triển một quy trình phục hồi dữ liệu linh hoạt để khơi phục dữ</b>

liệu nhanh chóng sau sự cố.

<b>- Theo dõi các bản vá bảo mật và cập nhật hệ thống định kỳ.</b>

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

<b>- Mọi tương tác người dùng đều được xử lý một cách mượt mà và</b>

không gây sự cố.

<b>3.2.2.3.Hiệu suất</b>

<b>- Hệ thống cho phép thao tác và hiển thị kết quả nhanh chóng.</b>

<b>- Truy vấn cơ sở dữ liệu và hiển thị kết quả không quá 10 giây (u</b>

cầu kết nối Internet)

<b>3.2.2.4.Tính bảo mật</b>

<b>- Các thơng tin đăng nhập như mật khẩu phải được mã hóa.</b>

<b>- Ứng dụng phải có cơ chế đảm bảo tính tồn vẹn của cơ sở dữ liệu.- Phải đảm bảo bảo mật dữ liệu người dùng, tránh sự tấn công của bên</b>

<b>- Đảm bảo người dùng khơng có quyền chỉnh sửa thơng tin của người</b>

dùng khác hay truy cập vào những dữ liệu khơng thuộc quyền sở hữucủa mình.

<b>3.2.2.5.Ràng buộc thiết kế</b>

<b>- Ứng dụng phải cung cấp giao diện linh hoạt dựa trên hệ điều hành</b>

Android và IOS.

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

<b>3.3.Thiết kế hệ thống3.3.1. Kiến trúc hệ thống</b>

<b>3.3.1.1.Sơ đồ kiến trúc hệ thống</b>

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

<b>3.3.1.2.Mô tả các thành phần trong kiến trúc hệ thống</b>

Widget <sup>Hiển thị thành phần giao diện người </sup>dùng

Bloc <sup>Xử lý logic kinh doanh và quản lý </sup><sub>trạng thái của ứng dụng.</sub>

Use cases

Chứa các use case sử dụng các đối tượng entities để thực hiện logic kinh doanh cụ thể.

Entities <sup>Chứa đối tượng cốt lõi của ứng dụng, </sup>như các đối tượng có liên quan đến dữliệu và logic kinh doanh.

Thành phần trung gian giữa Domain Layer và Data Layer, thực hiện lưu trữvà truy cập dữ liệu.

Cấu trúc dữ liệu phản ánh cách dữ liệu được lưu trữ hoặc truyền vào ứng dụng từ nguồn bên ngoài như API hoặc cơ sở dữ liệu.

Raw Data <sup>Dữ liệu gốc khi được trả về khi gọi </sup><sub>API.</sub>API <sup>Nơi thực hiện kết nối giữa Frontend </sup>

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

<b>3.3.2. Sơ đồ Use case</b>

<b>3.3.2.1.Sơ đồ Use case tổng quát</b>

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

<b>3.3.2.2.Sơ đồ Use case chi tiết</b>

<i>Hình 3. 2 Sơ đồ Use case User tổng quát</i>

<i>Hình 3. 3 Sơ đồ Use case chi tiết quản lý tàikhoản </i>

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

<i>Hình 3. 4 Sơ đồ Use case chi tiết quản lý danh mục yêuthích </i>

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

<i>Hình 3. 5 Sơ đồ Use case chi tiết cho quản lý giỏ hàng</i>

<i>Hình 3. 6 Sơ đồ Use case chi tiết cho quản lý đơn hàng</i>

<i>Bảng 3. 2 Danh sách các Actor</i>

<i>Bảng 3. 3 Bảng danh sách các Use case</i>

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

đăng kýUC0

Tạo một tài khoản mới để sử dụng ứng dụng.

3 <sup>Xem thông tin cá nhân</sup> <sup>User</sup>

Xem chi tiết các thông tin cá nhân của người dùng hiện tại.UC0

4 <sup>Chỉnh sửa thông tin cá nhân User</sup>

Cập nhật thông tin cá nhân của người dùng hiện tại.

5 <sup>Xem địa chỉ giao hàng</sup> <sup>User</sup>

Xem các địa chỉ giao hàng đang có trong tài khoản hiện tại.

6 <sup>Thêm địa chỉ giao hàng</sup> <sup>User</sup>

Thêm địa chỉ giao hàng vào danh sách địa chỉ của tài khoản hiện tại.

7 <sup>Sửa địa chỉ giao hàng</sup> <sup>User</sup>

Cập nhật địa chỉ giao hàng của tài khoản hiện tại.

2 <sup>Tìm kiếm danh mục sản </sup>phẩm <sup>User</sup>

Tìm kiếm danh mục sản phẩm dựa theo tên danh mục.

3 <sup>Xem sản phẩm trong danh </sup>sách yêu thích <sup>User</sup>

Xem các sản phẩm trong danh sách yêu thích của tài khoản hiện tại.

Thêm sản phẩm vào danh

Thêm sản phẩm vào danh sách yêu thích của tài khoản hiện tại.UC1

5 <sup>Xóa sản phẩm khỏi danh </sup>sách u thích <sup>User</sup>

Xóa sản phẩm khỏi danh mục yêu thích của tài khoản hiện tại.UC1 Xem sản phẩm trong giỏ <sup>Xem các sản phẩm ở trong giỏ </sup>

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

1 <sup>Xem tổng giá trị của các sản</sup>phẩm <sup>User</sup>

Xem tổng giá trị của các sả phẩm trong giỏ hàng của tài khoản hiện tại.

Đặt hàng dựa trên sản phẩm đã chọn của tài khoản hiện tạiUC2

3 <sup>Xem sản phẩm trong đơn </sup>hàng <sup>User</sup>

Xem các sản phẩm ở trong đơn hàng của tài khoản hiện tạiUC2

Đánh giá các sản phẩm sau khi thanh tốn thành cơng trong tài khoản hiện tại

<b>Tên Use Case</b> Đăng nhập

<b>Mô tả</b> <sup>Cho phép người dùng đăng nhập vào ứng dụng để sử dụng </sup>

dịch vụ từ ứng dụng.

<b>Primary Actor</b> User

<b>Secondary Actor Khơng cóPriority</b> Quan trọng

<b>Trigger</b> Người dùng muốn đăng nhập vào ứng dụng.

<b>Tiền điều kiện<sup>- Người dùng đã có tài khoản trong ứng dụng.</sup>- Thiết bị có kết nối internet.</b>

<i>Bảng 3. 4 Bảng đặc tả Use case Đăng nhập</i>

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

dụng và sử dụng dịch vụ.

<b>- Nếu thất bại, thông báo đến người dùng và tiến hành</b>

đăng nhập lại.

<b>Diễn biến chính</b>

1. Người dùng truy cập vào ứng dụng.

2. Người dùng nhập đầy đủ thông tin gồm Email và mậtkhẩu.

2. Người dùng nhập tài khoản Google.

4a. Google xác thực thông tin đăng nhập thành công.

2b. Người dùng chọn phương thức đăng nhập bằng tài khoản Facebook.

1. Hệ thống chuyển sang màn hình đăng nhập tài khoảnFacebook.

2. Người dùng nhập tài khoản Facebook.

4b. Facebook xác thực thông tin đăng nhập thành công.

<b>Ngoại lệ</b> 4c. Hệ thống xác thực thông tin đăng nhập không thành công và hiển thị thông báo.

1. Người dùng nhập lại thông tin tài khoản.2. Quay lại bước 3.

<b>3.3.3.2.Đặc tả use case Đăng ký</b>

<i>Bảng 3. 5 Bảng đặc tả Use case Đăng ký</i>

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

<b>Tên Use Case</b> Đăng ký

<b>Mô tả</b> <sup>Cho phép người dùng đăng ký tài khoản để truy cập vào ứng </sup>

<b>Primary Actor</b> User

<b>Secondary Actor Khơng cóPriority</b> Quan trọng

<b>Trigger</b> Người dùng muốn đăng ký tài khoản.

<b>Tiền điều kiện</b> Thiết bị có kết nối internet.

<b>Hậu điều kiện</b>

<b>- Nếu thành cơng, người dùng có thể đăng nhập vào ứng</b>

dụng và sử dụng dịch vụ.

<b>- Nếu thất bại, thông báo đến người dùng và tiến hành</b>

đăng ký lại.

<b>Diễn biến chính</b>

7. Người dùng truy cập vào ứng dụng.

8. Người dùng nhập đầy đủ thông tin gồm Email, số điệnthoại và mật khẩu.

9. Người dùng chọn đăng ký.

10. Hệ thống xác thực thông tin đăng ký thành công.

11. Hệ thống cho phép người dùng đăng nhập và truy cậpvào ứng dụng.

12. Hệ thống ghi nhận hoạt động đăng ký thành công.

<b>Diễn biến phụ</b> 2a. Người dùng chọn phương thức đăng ký bằng tài khoản Google.

1. Hệ thống chuyển sang màn hình đăng ký bằng tàikhoản Google.

2. Người dùng nhập tài khoản Google.

4a. Google xác thực thông tin đăng ký thành công.

2b. Người dùng chọn phương thức đăng ký bằng tài khoản Facebook.

1. Hệ thống chuyển sang màn hình đăng ký bằng tài

</div>

×