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

đồ án 2 xây dựng website bán hàng và áp dụng thuật toán hamming distance để gợi ý sản phẩm

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.97 MB, 84 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 TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN </b>

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

<small>Cuối cùng, em xin chân thành cảm ơn gia đình và bạn bè, đã ln tạo điều kiện, quan tâm, giúp đỡ, động viên em trong suốt q trình hồn thành đồ án.</small>

<i><small>Thành phố Hồ Chí Minh, ngày 27 tháng 12 năm 2023 </small></i>

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

<b>MỤC LỤC </b>

CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI ... 1

1.1. Lý do chọn đề tài ... 1

1.2. Mục tiêu của đề tài ... 2

1.3. Giới hạn và phạm vi của đề tài ... 2

1.4. Kết quả dự kiến đạt được ... 2

CHƯƠNG 2: KIẾN THỨC NỀN TẢNG ... 3

2.1. Kiến thức về Hamming Distance ... 3

2.1.1. Giới thiệu về thuật toán Hamming Distance ... 3

2.1.2. Hamming Distance trong Laravel ... 6

2.2. Ngôn ngữ lập trình PHP và Framework Laravel ... 7

2.2.1. Ngôn ngữ PHP ... 7

2.2.2. Framework Laravel ... 8

2.3. Mơ hình MVC ...11

2.4. Hệ quản trị cơ sở dữ liệu MySQL ...12

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG ...13

CHƯƠNG 4: GIAO DIỆN PHẦN MỀM ...67

4.1. Giao diện quản trị ...67

4.1.1. Giao diện đăng nhập ...67

4.1.2. Giao diện quản lý danh mục sản phẩm ...67

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

4.1.3. Giao diện quản lý sản phẩm ...68

4.1.4. Giao diện thêm sản phẩm ...68

4.1.5. Giao diện cập nhật sản phẩm ...69

4.1.6. Giao diện quản lý đơn hàng ...69

4.1.7. Giao diện quản lý khách hàng ...70

4.1.8. Giao diện quản lý bài viết ...70

4.2. Giao diện người dùng ...71

4.2.1. Giao diện đăng nhập ...71

4.2.2. Giao diện đăng ký ...71

4.2.3. Giao diện trang chủ ...72

4.2.4. Giao diện xem chi tiết sản phẩm ...72

4.2.5. Giao diện giỏ hàng ...73

4.2.6. Giao diện đặt hàng ...73

4.2.7. Giao diện xem chi tiết đơn hàng ...74

4.2.8. Giao diện đánh giá sản phẩm ...74

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

<i>Hình 3.4. Use Case của tác nhân KHACHHANG ...16 </i>

<i>Hình 3.5. Use Case Quản lý danh mục sản phẩm ...19 </i>

<i>Hình 3.6. Use Case Quản lý sản phẩm ...22 </i>

<i>Hình 3.7. Use Case Quản lý đơn hàng ...24 </i>

<i>Hình 3.8. Use Case Quản lý bài viết ...27 </i>

<i>Hình 3.9. Use Case Quản lý khách hàng ...29 </i>

<i>Hình 3.10. Use Case Quản lý tài khoản ...31 </i>

<i>Hình 3.11. Use Case Quản lý kho ...33 </i>

<i>Hình 3.12. Biểu đồ hoạt động đăng nhập ...36 </i>

<i>Hình 3.13. Biểu đồ hoạt động đăng ký ...37 </i>

<i>Hình 3.14. Biểu đồ hoạt động xem danh sách sản phẩm ...38 </i>

<i>Hình 3.15. Biểu đồ hoạt động thêm sản phẩm ...39 </i>

<i>Hình 3.16. Biểu đồ hoạt động cập nhật sản phẩm ...40 </i>

<i>Hình 3.17. Biểu đồ hoạt động xóa sản phẩm ...41 </i>

<i>Hình 3.18. Biểu đồ hoạt động gợi ý sản phẩm ...42 </i>

<i>Hình 3.19. Biểu đồ hoạt động thêm sản phẩm vào giỏ hàng ...43 </i>

<i>Hình 3.20. Biểu đồ hoạt động cập nhật sản phẩm vào giỏ hàng ...44 </i>

<i>Hình 3.21. Biểu đồ hoạt động xóa sản phẩm trong giỏ hàng ...45 </i>

<i>Hình 3.24. Biểu đồ hoạt động thêm khách hàng ...46 </i>

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

<i>Hình 3.25. Biểu đồ hoạt động cập nhật khách hàng ...47 </i>

<i>Hình 3 26. Biểu đồ hoạt động xóa khách hàng ...48 </i>

<i>Hình 3.27. Biểu đồ hoạt động cập nhật trạng thái đơn hàng ...49 </i>

<i>Hình 3.28. Biểu đồ tuần tự đăng nhập ...50 </i>

<i>Hình 3.29. Biểu đồ tuần tự đăng ký ...51 </i>

<i>Hình 3.30. Biểu đồ tuần tự xem danh sách sản phẩm ...51 </i>

<i>Hình 3.31. Biểu đồ tuần tự thêm sản phẩm ...52 </i>

<i>Hình 3.32. Biểu đồ tuần tự cập nhật sản phẩm ...53 </i>

<i>Hình 3.33. Biểu đồ tuần tự xóa sản phẩm ...54 </i>

<i>Hình 3.34. Biểu đồ tuần tự tìm kiếm sản phẩm...55 </i>

<i>Hình 4.1. Giao diện đăng nhập (quản trị) ...67 </i>

<i>Hình 4.2. Giao diện quản lý danh mục sản phẩm ...67 </i>

<i>Hình 4.3. Giao diện quản lý sản phẩm ...68 </i>

<i>Hình 4.4. Giao diện thêm sản phẩm ...68 </i>

<i>Hình 4.5. Giao diện cập nhật sản phẩm ...69 </i>

<i>Hình 4.6. Giao diện quản lý đơn hàng ...69 </i>

<i>Hình 4.7. Giao diện quản lý khách hàng ...70 </i>

<i>Hình 4.8. Giao diện quản lý bài viết ...70 </i>

<i>Hình 4.9. Giao diện đăng nhập (người dùng) ...71 </i>

<i>Hình 4.10. Giao diện đăng ký ...71 </i>

<i>Hình 4 11. Giao diện trang chủ ...72 </i>

<i>Hình 4.12. Giao diện xem chi tiết sản phẩm ...72 </i>

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

<i>Hình 4.13. Giao diện giỏ hàng...73 </i>

<i>Hình 4.14. Giao diện đặt hàng...73 </i>

<i>Hình 4.15. Giao diện xem chi tiết đơn hàng ...74 </i>

<i>Hình 4.16. Giao diện đánh giá sản phẩm ...74 </i>

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

<b>CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI 1.1. Lý do chọn đề tài </b>

Một trong những lý do quan trọng nhất là xu hướng ngày càng gia tăng của thị trường thương mại điện tử. Với sự phát triển mạnh mẽ của công nghệ, người tiêu dùng ngày càng chuyển sang mua sắm trực tuyến để tiết kiệm thời gian và có trải nghiệm mua sắm thuận tiện hơn. Do đó, xây dựng một website bán hàng đáp ứng được nhu cầu ngày càng cao của khách hàng là một ưu tiên quan trọng.

Trong bối cảnh này, việc áp dụng thuật toán Hamming distance để gợi ý sản phẩm trở nên hết sức quan trọng và có ý nghĩa. Thuật tốn này, ban đầu được phát triển trong lĩnh vực toán học và khoa học máy tính, nay được chú ý vì khả năng tìm kiếm dựa trên đặc tính tương đồng. Việc áp dụng Hamming distance vào hệ thống gợi ý sản phẩm giúp tối ưu hóa trải nghiệm người dùng bằng cách đề xuất những sản phẩm có đặc điểm tương tự với những sản phẩm mà khách hàng quan tâm.

Bên cạnh đó, sự cạnh tranh cao trong thị trường thương mại điện tử đặt ra thách thức về việc phải cung cấp trải nghiệm mua sắm cá nhân hóa và khác biệt. Việc sử dụng Hamming distance không chỉ là một cách tiếp cận tiên tiến mà cịn mang lại lợi ích lớn về khả năng tùy chỉnh và hiệu suất gợi ý.

Cuối cùng, dự án này không chỉ là một cơ hội để áp dụng kiến thức chuyên sâu về lập trình và thuật tốn mà cịn mang lại giá trị thực tế cao, cung cấp một hệ thống mua sắm trực tuyến hiện đại và thông minh. Sự kết hợp giữa xây dựng website bán hàng và áp dụng thuật toán Hamming distance hứa hẹn mang lại sự đổi mới và nâng cao chất lượng trong lĩnh vực thương mại điện tử ngày nay.

Tóm lại, em chọn đề tài "Xây dựng website bán hàng và áp dụng thuật toán Hamming distance để gợi ý sản phẩm" ở đây là xây dựng website bán mỹ phẩm không chỉ mang lại nhiều lợi ích thực tế trong lĩnh vực quản lý bán hàng và tìm kiếm sản phẩm mà cịn mở ra cơ hội để em có thể học hỏi và sáng tạo.

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

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

<small>• </small> Trình bày được các vấn đề liên quan đến ngôn ngữ PHP, cơ sở dữ liệu

<i>MySQL, mơ hình MVC... </i>

<small>• </small> Tìm hiểu và vận dụng thuật toán Hamming Distance để gợi ý, lựa chọn các

<i>sản phẩm theo nhu cầu của khách hàng </i>

<small>• </small> <i>Khảo sát thực trạng quản lý bán hàng của các cửa hàng hiện nay </i>

<small>• </small> Phân tích hệ thống chương trình bao gồm các giao diện, các chức năng

<i>nhằm đáp ứng nhu cầu người dùng </i>

<small>• </small> <i>Triển khai và cài đặt chương trình </i>

<b>1.3. Giới hạn và phạm vi của đề tài </b>

<small>• </small> Xây dựng chương trình dựa vào ngơn ngữ lập trình PHP với Framework Laravel và cơ sở dữ liệu MySQL

<small>• </small> Chương trình tập chung chức năng nghiệp vụ từ khảo sát thực trạng

<b>1.4. Kết quả dự kiến đạt được </b>

<small>• </small> Tìm hiểu nhu cầu, nghiệp vụ của quản trị

<small>• </small> Hiểu về ngơn ngữ lập trình PHP và áp dụng cho xây dựng website

<small>• </small> Hồn thành website bán hàng áp dụng thuật tốn Hamming Distance để gợi ý với các tính năng như:

<small>• </small> Admin: thực hiện các chức năng như quản trị hệ thống, quản lý người dùng, quản lý sản phẩm, quản lý danh mục, quản lý kho, quản lý đơn hàng...

<small>• </small> Nhân viên: có thể thực hiện các chức năng như cập nhật thông tin cá nhân, đăng ký, đăng nhập, và thực hiện một số chức năng theo dõi và cập nhật kho.

<small>• </small> Hoàn thành báo cáo chi tiết đồ án tốt nghiệp.

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

<b>CHƯƠNG 2: KIẾN THỨC NỀN TẢNG 2.1. Kiến thức về Hamming Distance </b>

<i>2.1.1. Giới thiệu về thuật toán Hamming Distance </i>

<i>❖ Nguồn gốc Hamming Distance: </i>

Trong những năm của thập niên kỷ 1940, Hamming làm việc tại Bell Labs trên máy tính Bell Model V, một máy điện cơ (electromechanical) dùng rơ-le (relay-based), với tốc độ rất chậm, mấy giây đồng hồ một chu kỳ máy. Nhập liệu được cho vào máy bằng những cái thẻ đục lỗ (punch cards), và hầu như máy luôn luôn gây lỗi trong khi đọc. Trong những ngày làm việc trong tuần, những mã đặc biệt được dùng để tìm ra lỗi và mỗi khi tìm được, nó nhấp nháy đèn báo hiệu, báo cho người điều khiển biết để họ sửa, điều chỉnh máy lại. Trong thời gian ngoài giờ làm việc hoặc trong những ngày cuối tuần, khi người điều khiển máy khơng có mặt, mỗi khi có lỗi xảy ra, máy tính tự động bỏ qua chương trình đang chạy và chuyển sang cơng việc khác.

Hamming thường làm việc trong những ngày cuối tuần và ông càng ngày càng trở nên bực tức mỗi khi ơng phải khởi động lại các chương trình ứng dụng từ đầu, do chất lượng kém, không đáng tin cậy (unreliability) của bộ máy đọc các thẻ đục lỗ. Mấy năm tiếp theo đó, ơng dồn tâm lực vào việc xây dựng hằng loạt các thuật tốn có hiệu quả cao để giải quyết vấn đề sửa lỗi. Năm 1950, ông đã công bố một phương pháp mà hiện nay được biết là Mã Hamming. Một số chương trình ứng dụng hiện thời vẫn cịn sử dụng mã này của ông.

<small> </small><i>Hamming Distance là cái tên được đặt theo tên của Richard Hamming. </i>

❖ Hamming Distance là gì?

<i>Hamming Distance là thước đo để so sánh hai chuỗi dữ liệu nhị phân. Khi so </i>

sánh hai chuỗi nhị phân có độ dài bằng nhau, khoảng cách Hamming là số vị trí bit trong đó hai bit khác nhau.

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

❖ Ví dụ về thuật tốn: Giả sử có hai chuỗi bit:

<small>• </small> Chuỗi A: 0 1 1 1 1

<small>• </small> Chuỗi B: 0 0 1 1 0 Ta thấy:

<small>• </small> Tại vị trí 1: Bit của A là 0, Bit của B là 0 (giống nhau).

<small>• </small> Tại vị trí 2: Bit của A là 1, Bit của B là 0 (khác nhau).

<small>• </small> Tại vị trí 3: Bit của A là 1, Bit của B là 1 (giống nhau).

<small>• </small> Tại vị trí 4: Bit của A là 1, Bit của B là 1 (giống nhau).

<small>• </small> Tại vị trí 5: Bit của A là 1, Bit của B là 0 (khác nhau).

<small> </small>Số bit khác nhau là 2, kết luận Hamming Distance giữa chuỗi A và B là 2. ❖ Mục đích của Hamming Distance:

Hamming Distance được sử dụng trong kỹ thuật viễn thơng để tính số lượng các bit trong một từ nhị phân (binary word) bị đổi ngược, như một hình thức để ước tính số lỗi xảy ra trong q trình truyền thơng, và vì thế, đơi khi, nó cịn được gọi là khoảng cách tín hiệu (signal distance). Việc phân tích trọng số Hamming của các bit còn được sử dụng trong một số ngành, bao gồm lý thuyết tin học, lý thuyết mã hóa, và mật mã học.

Tuy vậy, khi so sánh các dãy ký tự có chiều dài khác nhau, hay các dãy ký tự có xu hướng khơng chỉ bị thay thế khơng thơi, mà cịn bị ảnh hưởng bởi dữ liệu bị lồng thêm vào, hoặc bị xóa đi, phương pháp đo lường phức tạp hơn, như khoảng cách Levenshtein (Levenshtein distance) là phương pháp có tác dụng và thích hợp.

❖ Kiểm soát lỗi hiệu quả với Hamming Distance:

<small>• </small> <i>Hamming Distance trong kiểm sốt lỗi: </i>

Các khái niệm trung tâm trong mã hóa để kiểm sốt lỗi là ý tưởng về Hamming Distance. Hamming Distance giữa hai từ (có cùng kích thước) là số lượng khác biệt

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

giữa các bit tương ứng. Chúng ta biểu thị khoảng cách Hamming giữa hai từ x và y là d(x, y).

Hamming Distance có thể dễ dàng tìm được nếu chúng ta áp dụng phép toán XOR trên hai từ và đếm số 1 trong kết quả. Lưu ý khoảng cách Hamming là giá trị lớn hơn 0. Khoảng cách Hamming d(000, 011) là 2 vì 000 ⊕ 011 là 011 (hai số 1). Khoảng cách Hamming d(10101, 11110) là 3 vì 10101 ⊕ 11110 là 01011 (ba số 1).

<small>• </small> <i>Hamming Distance tối thiểu: </i>

Hamming Distance tối thiểu là khoảng cách Hamming nhỏ nhất giữa tất cả các cặp có thể. Chúng tơi sử dụng "dmin" để xác định khoảng cách Hamming tối thiểu trong sơ đồ mã hóa. Để tìm giá trị này, chúng tơi tìm khoảng cách Hamming giữa tất cả các từ và chọn giá trị nhỏ nhất.

<small>• </small> <i>Khoảng cách và lỗi Hamming: </i>

Khi một từ mã bị hỏng trong quá trình truyền, khoảng cách Hamming giữa các từ mã được gửi và nhận là số bit bị ảnh hưởng bởi lỗi. Nói cách khác, khoảng cách Hamming giữa từ mã nhận được và từ mã gửi đi là số bit bị hỏng trong q trình truyền.

Ví dụ: nếu từ mã 00000 được gửi và 01101 được nhận thì có 3 bit bị lỗi và khoảng cách Hamming giữa hai bit là d(00000, 01101) =3.

<small>• </small> <i>Khoảng cách tối thiểu để phát hiện lỗi: </i>

Để tìm khoảng cách Hamming tối thiểu trong một mã nếu chúng ta muốn có thể phát hiện tối đa S lỗi. Nếu S lỗi xảy ra trong quá trình truyền, khoảng cách Hamming giữa từ mã đã gửi và từ mã nhận được là S. Nếu mã phát hiện tối đa S lỗi, khoảng cách tối thiểu giữa các mã hợp lệ phải là s + 1, sao cho mã nhận được từ mã không khớp với từ mã hợp lệ.

<small>• </small> <i>Khoảng cách tối thiểu để sửa lỗi: </i>

Việc sửa lỗi phức tạp hơn việc phát hiện lỗi và cần có một quyết định. Khi từ mã nhận được không phải là từ mã hợp lệ, người nhận cần quyết

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

định từ mã hợp lệ nào thực sự được gửi. Quyết định này dựa trên khái niệm lãnh thổ, một khu vực độc quyền bao quanh từ mã. Mỗi từ mã hợp lệ có lãnh thổ riêng. Sử dụng phương pháp hình học để xác định từng lãnh thổ. Chúng ta giả định rằng mỗi từ mã hợp lệ có một lãnh thổ hình trịn có bán kính t và từ mã hợp lệ nằm ở trung tâm.

Ví dụ: giả sử một từ mã x bị hỏng t bit hoặc ít hơn. Khi đó từ mã bị hỏng này nằm ở bên trong hoặc trên chu vi của vòng tròn này. Nếu người nhận nhận được một từ mã thuộc lãnh thổ này, nó sẽ quyết định rằng từ mã ban đầu là từ mã ở giữa. Lưu ý rằng chúng tôi giả định rằng chỉ có tối đa t lỗi xảy ra; nếu khơng thì quyết định đó là sai. Hình dưới đây cho thấy cách giải thích hình học này. Một số văn bản sử dụng hình cầu để hiển thị khoảng cách giữa tất cả các mã khối hợp lệ.

<i>Hình 2.1. Ví dụ trong Hamming Distance </i>

<i>2.1.2. Hamming Distance trong Laravel </i>

❖ Hàm Hamming Distance trong PHP

<i>gmp_hamdist(GMP|int|string $num1, GMP|int|string $num2): int </i>

Trong đó:

<small>• </small> <i>$num1, $num2: thuộc kiểu dữ liệu: đối tượng GMP (GMP – GNU </i>

Multiple Precision object), số nguyên (Int), chuỗi số (Numeric String).

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

<small>• </small> <i>Kết quả trả về Hamming Distance giữa 2 phần tử $num1 và $num2 (là </i>

một số nguyên không âm).

❖ Tại sao và lúc nào cần Hamming Distance trong dự án Laravel

Trong ngữ cảnh xây dựng website Laravel, việc sử dụng phân tích các chuỗi bit có thể được áp dụng trong một số tình huống:

<small>• </small> Quản lý quyền và phân quyền: Sử dụng các chuỗi bit để biểu diễn quyền và phân quyền người dùng. Mỗi bit có thể đại diện cho một quyền cụ thể (ví dụ: quyền xem, quyền chỉnh sửa, quyền xóa, quyền tạo…).

<small>• </small> Xử lý dữ liệu nhị phân: Có thể sử dụng các chuỗi bit để biểu diễn trạng thái hoặc thuộc tính của một đối tượng.

<small>• </small> Tùy chỉnh cấu hình hệ thống: Sử dụng chuỗi bit để tùy chọn cấu hình hệ thống, chẳng hạn như kích hoạt hay tắt tính năng. Mỗi bit đại diện cho một tùy chọn cụ thể.

<small>• </small> Tìm kiếm và phân loại dữ liệu: Sử dụng Hamming Distance để đo lường sự tương đồng giữa các mẫu dữ liệu, bổ trợ cho các chức năng tìm kiếm và phân loại.

<small>• </small> Kiểm tra và bảo mật: Sử dụng thuật toán này để kiểm tra sự tương đồng giữa các chuỗi bit, như trong q trình xác thực người dùng hoặc kiểm tra tính tồn vẹn của dữ liệu.

<b>2.2. Ngơn ngữ lập trình PHP và Framework Laravel </b>

<i>2.2.1. Ngơn ngữ PHP </i>

PHP(viết tắt là Hypertext Preprocessor) là một ngơn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho các mục đích tổng qt. Nó rất thích hợp với web và có thể nhúng vào trang HTML.

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

Do được tối ưu hóa cho các ứng dụng web, cú pháp giống C và Java và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP có rất nhiều các CMS mã nguồn mở như: WordPress, OpenCart… cùng với đó là các framework như: Laravel, CodeIgniter...

PHP khơng phải là ngơn ngữ script phía server duy nhất có sẵn - vẫn cịn nhiều ngơn ngữ khác nữa. Tuy nhiên, nó lợi thế hơn các đối thủ cạnh tranh nếu chạy trang web WordPress. WordPress được xây dựng dựa trên việc sử dụng PHP. Vì vậy, sử dụng ngơn ngữ này giúp cải thiện đáng kể số lượng tùy chỉnh trên trang web, như có thể sử dụng nó để sửa đổi plugins hay theme có sẵn. Ngồi ra, cịn một số lý do khác khiến PHP là ngôn ngữ script tuyệt vời để sử dụng:

<small>• </small> Dễ học: Có thể học dễ dàng vì có tài liệu tuyệt vời về các chức năng ví dụ.

<small>• </small> Được sử dụng rộng rãi, phổ biến: Nó được sử dụng để tạo ra các loại nền tảng như thương mại điện tử, blogs, phương tiện truyền thơng xã...

<small>• </small> Chi phí thấp: Nó là nguồn mở để có thể sử dụng miễn phí.

<small>• </small> Cộng đồng lớn: Nếu gặp phải những khó khăn nào đó, sẽ khơng phải là điều lo lắng vì có rất nhiều blog PHP trên Internet.

<small>• </small> Tích hợp với cơ sở dữ liệu: Ví dụ như MySQL, Oracle...

<i>2.2.2. Framework Laravel </i>

Framework chính là một thư viện với các tài nguyên có sẵn cho từng lĩnh vực để lập trình viên sử dụng thay vì phải tự thiết kế. Với Framework, lập trình viên chỉ cần tìm hiểu và khai thác những tài ngun đó, gắn kết chúng lại với nhau và hoàn chỉnh sản phẩm của mình.

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

<i>Hình 2.2. Một số loại framework </i>

<i>PHP Framework là một bộ mã nguồn mở được xây dựng, phát triển và đóng </i>

gói bởi các chuyên gia lập trình PHP, sử dụng ngơn ngữ PHP xây dựng các lớp nghiệp vụ chuyên biệt.

<i>Laravel là một PHP framework mã nguồn mở miễn phí, phát triển bởi Taylor </i>

Otwell và có mục tiêu hỗ trợ phát triển các ứng dụng web theo kiếm trúc view-controller (MVC). Những tính năng nổi bật của Laravel làm cho Laravel Framework khác biệt so với các Web Framework khác:

<small>model-• </small> Tính mơ đun:

Tính mơ đun là khả năng một thành phần ứng dụng web có thể tách rời và kết hợp lại. Có thể phân chia logic nghiệp vụ thành các mo-đun khác nhau, tất cả đều hoạt động cùng nhau để làm cho ứng dụng web hoạt động.

Sử dụng cấu trúc mơ-đun có thể thiết kế và phát triển ứng dụng doanh nghiệp quy mô lớn một cách dễ dàng. Laravel cung cấp các hướng dẫn rất đơn giản để tạo các mơ-đun hoặc package trong Laravel.

<small>• </small> Tính năng xác thực:

Xác thực là một phần không thể thiếu của bất kỳ website hiện đại nào. Viết các thực trong các Framework khác có thể mất rất nhiều thời gian. Nhưng với Laravel thì ngược lại, chỉ cần chạy một lệnh đơn giản, đã có thể tạo một hệ thống xác thực đầy đủ chức năng.

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

<small>• </small> Tính năng Caching:

Caching(bộ nhớ đệm) là một kỹ thuật để lưu trữ dữ liệu trong một vị trí lưu trữ tạm thời có thể lấy ra nhanh chóng khi cần, chủ yếu được sử dụng để làm tăng hiệu suất của website.

Laravel gần nhưng lưu tất cả dữ liệu từ View đến routes. Điều này giúp Laravel giảm thời gian xử lý và tăng hiệu suất rất nhiều.

<small>• </small> Tính năng Routing:

Định tuyến(Routing) trong Laravel rất dễ hiểu, có thể sử dụng để tạo một ứng dụng tĩnh dễ dàng. Có thể nhóm các routes, đặt tên cho chúng, áp dụng các bộ lọc cho chúng và liên kết mơ hình dữ liệu với chúng. Các routes có thể sử dụng để tạo các URL thân thiện với cơng cụ tìm kiếm.

<small>• </small> Restful Controllers:

Restful Controllers của Laravel cho phép tách logic nghiệp vụ sau khi phục vụ các request GET hoặc POST. Có thể tạo resource controller có thể được sử dụng để tạo CRUD đơn giản. Sau đó, có thể liên kết resource controller để định tuyến phục vụ tất cả các routes CRUD tự động.

<small>• </small> Database Query Builder:

Database Query Builder của Laravel cung cấp một cách thuận tiện để tạo các truy cấp cơ sở dữ liệu. Nó đi kèm với vơ số chức năng của trình trợ giúp có thể để lọc dữ liệu.

Có thể thực hiện các truy vấn phức tạp một cách dễ dàng bằng join trong Laravel. Cú pháp Query Builder rất dễ hiểu và làm cho việc viết các truy vấn cơ sở dữ liệu trở nên nhẹ nhàng hơn rất nhiều.

<small>• </small> Tính năng bảo mật rất tốt:

Laravel cung cấp cách tạo các ứng dụng web an toàn. Lưu trữ tất cả các mật khẩu dưới dạng hash, thay vì mật khẩu text đơn giản(sử dụng BCrytp để băm(hash) mật khẩu).

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

Laravel cung cấp bảo mật để chống lại các cuộc tấn công truy vấn cơ sở dữ liệu. An toàn khi xử lý với dữ liệu mà người dùng cung cấp.

<small>• </small> Controller: Giữ nhiệm vụ nhận điều hướng các yêu cầu từ người dùng và gọi đúng những phương thức xử lý chúng.

<small>• </small> Model: Là thành phần chứa tất cả các nghiệp vụ logic, phương thức xử lý, truy xuất database, đối tượng mô tả dữ liệu như các Class, hàm xử lý…

<small>• </small> View: Đảm nhận việc hiển thị thông tin, tương tác với người dùng, nơi chứa tất cả các đối tượng GUI như textbox, images…

Mơ hình MVC có một số các ưu điểm như:

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

<small>• </small> Mơ hình này quy hoạch các class/function vào các thành phần riêng biệt Controller – Model – View, việc đó làm q trình phát triển - quản lý - vận hành - bảo trì web diễn ra thuận lợi hơn, tạo ra được các chức năng chuyên biệt hóa đồng thời kiểm sốt được luồng xử lý.

<b>2.4. Hệ quản trị cơ sở dữ liệu MySQL </b>

MySQL là hệ quản trị cơ sở dữ liệu sử dụng mã nguồn mở phổ biến nhất thế giới và được các chuyên gia lập trình rất ưa chuộng trong quá trình phát triển web, phát triển ứng dụng của mình. Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên Internet. MySQL có một số đặc điểm:

<small>• </small> Hệ quản trị cơ sở dữ liệu MySQL chính là một trong những phần mềm quản trị CSDL dạng server based, hệ gần giống với SQL server.

<small>• </small> MySQL là phần mềm quản lý dữ liệu thông qua CSDL. Và mỗi một CSDL đều có bảng quan hệ chứa dữ liệu riêng biệt.

<small>• </small> MySQL có cơ chế quản lý sử dụng riêng giúp cho mỗi người sử dụng đều có thể quản lý cùng lúc một hay nhiều CSDL khác nhau. Và mỗi người dùng đều có 1 username và password để truy nhập và truy xuất đến CSDL.

<small>• </small> MySQL tương thích tốt với môi trường PHP, giúp hệ thống hoạt động mạnh mẽ.

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

<b>CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 3.1. Phân tích hệ thống </b>

<i>- QUANLY: Là người quản trị hệ thống, đăng nhập hệ thống với tất cả các </i>

quyền quản lý danh mục sản phẩm, quản lý sản phẩm, quản lý đơn hàng, quản lý tài khoản, quản lý kho, quản lý bài viết.

<i>-</i>KHACHHANG: Là người mua hàng của cửa hàng, có thể thực hiện các chức năng đăng ký, đăng nhập, mua hàng, đánh giá sản phẩm,…

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

• Use Case tổng qt

<i>Hình 3.2. Use Case tổng quát </i>

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

• Use Case hệ thống

<i>Hình 3.3. Use Case hệ thống </i>

<i>✓ Đăng nhập: </i>

<i>- Mô tả: Cho phép nhân viên và quản lý truy cập phần mềm. </i>

- Đầu vào: Người dùng nhập vào thông tin tên tài khoản và mật khẩu, sau

<i>đó chọn đăng nhập. </i>

- Thực hiện: Kiểm tra tên đăng nhập và mật khẩu có trùng khớp với thông

<i>tin trong cơ sở dữ liệu. Kiểm tra quyền người dùng. </i>

- Đầu ra: Nếu không đúng thơng tin thì thơng báo tài khoản khơng hợp lệ. Ngược lại, tùy theo quyền người dùng, hiển thị danh sách chức năng theo quyền người dùng trên hệ thống.

<i>✓ Đăng xuất: </i>

<i>- Mô tả: Cho phép người dùng thoát khỏi hệ thống. - Đầu vào: Người dùng chọn đăng xuất. </i>

<i>- Thực hiện: Hủy lưu thông tin đăng nhập. </i>

- Đầu ra: Hiển thị trang chủ.

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

<i>✓ Đăng ký: </i>

- Mô tả: Khách hàng truy cập website có thể đăng ký thành viên, xem các

<i>sản phẩm và chi tiết sản phẩm, tìm kiếm các sản phẩm mong muốn. </i>

- Đầu vào: Khi khách hàng truy cập, nhập các thông tin để tạo tài khoản và

<i>chọn đăng ký. </i>

- Thực hiện: Hệ thống kiểm tra các trường thông tin bắt buộc.

- Đầu ra: Nếu thiếu trường thông tin bắt buộc thì yêu cầu khách hàng bổ sung, ngược lại lưu tài khoản khách hàng đã đăng ký và hiển thị giao diện đăng nhập.

• Use Case của tác nhân KHACHHANG:

<i>Hình 3.4. Use Case của tác nhân KHACHHANG </i>

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

<i>✓ Xem chi tiết sản phẩm: </i>

- Mô tả: Khách hàng muốn xem chi tiết một sản phẩm.

- Đầu vào: UseCase sử dụng khi khách hàng chọn một sản phẩm. - Thực hiện: hệ thống lấy thông tin chi tiết của sản phẩm theo mã. - Đầu ra: Hiển thị form chi tiết sản phẩm.

<i>✓ Xem chi tiết bài viết: </i>

- Mô tả: Khách hàng muốn xem chi tiết một bài viết.

- Đầu vào: UseCase sử dụng khi khách hàng chọn một bài viết. - Thực hiện: hệ thống lấy thông tin chi tiết của bài viết theo mã. - Đầu ra: Hiển thị form chi tiết bài viết.

✓ Thêm sản phẩm vào giỏ hàng:

- Mô tả: Các khách hàng muốn thêm sản phẩm vào giỏ hàng.

- Đầu vào: UseCase sử dụng khi khách hàng chọn thêm một sản phẩm vào giỏ hàng.

-Thực hiện:

<small>• </small> Ca sử dụng bắt đầu khi khách hàng chọn thêm sản phẩm.

<small>• </small> Hệ thống kiểm tra số lượng sản phẩm: Nếu còn hàng sẽ thêm sản phẩm vào giỏ hàng. Ngược lại, hệ thống thông báo không đủ số lượng sản phẩm và hủy thao tác.

- Đầu ra: Cập nhật giỏ hàng của khách hàng. ✓ Cập nhật số lượng sản phẩm trong giỏ:

- Mô tả: Các khách hàng muốn cập nhật sản phẩm vào giỏ hàng.

- Đầu vào: UseCase sử dụng khi khách hàng nhập tăng/giảm số lượng sản phẩm trong giỏ.

- Thực hiện:

<small>• </small> Ca sử dụng bắt đầu khi khách hàng nhập tăng/giảm số lượng sản phẩm trong giỏ hàng.

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

<small>• </small> Hệ thống kiểm tra số lượng sản phẩm: Nếu còn hàng sẽ cập nhật số lượng sản phẩm vào giỏ hàng. Ngược lại, hệ thống thông báo không đủ số lượng sản phẩm và hủy thao tác.

- Đầu ra: Cập nhật giỏ hàng của khách hàng. ✓ Xóa sản phẩm trong giỏ hàng:

- Mô tả: Các khách hàng muốn xóa sản phẩm khỏi giỏ hàng.

- Đầu vào: UseCase sử dụng khi khách hàng chọn xóa sản phẩm trong giỏ hàng.

- Thực hiện: Hệ thống xóa sản phẩm khỏi giỏ hàng. - Đầu ra: Cập nhật giỏ hàng của khách hàng.

<i>✓ Đặt hàng: </i>

- Mô tả: Các khách hàng muốn đặt mua sản phẩm của cửa hàng. - Đầu vào: UseCase sử dụng khi khách hàng chọn đặt hàng. - Thực hiện:

<small>• </small> Khách hàng chọn thanh toán các sản phẩm trong giỏ hàng.

<small>• </small> Hệ thống hiển thị form thanh tốn.

<small>• </small> Khách hàng nhập các thơng tin cần thiết, và chọn đặt hàng.

<small>• </small> Hệ thống kiểm tra các trường thông tin: Nếu đầy đủ, thực hiện lưu thông tin đơn hàng và chi tiết giao dịch. Ngược lại, yêu cầu khách hàng bổ sung thông tin.

- Đầu ra: Lưu thông tin đơn hàng của khách hàng và trả ra giao diện chi tiết đơn hàng.

<i>✓ Xem chi tiết đơn hàng: </i>

- Mô tả: Khách hàng muốn xem chi tiết một đơn hàng.

- Đầu vào: UseCase sử dụng khi khách hàng chọn một đơn hàng. - Thực hiện: hệ thống lấy thông tin chi tiết của đơn hàng theo mã. - Đầu ra: Hiển thị form chi tiết đơn hàng.

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

<i>✓ Đánh giá sản phẩm: </i>

<i>- Mô tả: Khách hàng đánh giá sản phẩm sau khi mua hàng. </i>

- Đầu vào: Khi khách hàng đăng nhập hệ thống thành công và chọn đánh giá sản phẩm.

- Thực hiện:

<small>• </small> Khách hàng chọn đơn hàng muốn đánh giá.

<small>• </small> Khách hàng đánh giá sản phẩm có trong đơn hàng, và chọn lưu.

<small>• </small> Hệ thống kiểm tra các trường dữ liệu: Nếu đầy đủ và đúng định dạng thì lưu đánh giá vào cơ sở dữ liệu và thông báo cập nhật đánh giá của khách hàng thành cơng. Nếu khơng thì u cầu khách hàng bổ sung thông tin.

- Đầu ra: Các đánh giá về sản phẩm được cập nhật vào cơ sở dữ liệu.

• Use Case Quản lý danh mục sản phẩm

<i>Hình 3.5. Use Case Quản lý danh mục sản phẩm </i>

- Mô tả: Quản lý và nhân viên thực hiện quản lý danh mục sản phẩm của hệ thống.

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

- Đầu vào: Use Case sử dụng bắt đầu khi người dùng đăng nhập thành công hệ thống.

- Thực hiện:

<small>• </small> Người dùng truy cập vào hệ thống và chọn Quản lý danh mục sản phẩm.

<small>• </small> Kiểm tra quyền truy cập.

<small>• </small> Hệ thống lấy dữ liệu danh sách, hiển thị giao diện danh sách Danh mục sản phẩm.

<small>• </small> Hệ thống hiển thị chức năng người dùng có thể thực hiện: thêm, sửa, xóa danh mục:

<small>o </small> Nếu chọn “Thêm” thì sự kiện con “Thêm thơng tin danh mục” được thực hiện.

<small>o </small> Nếu chọn “Sửa” thì sự kiện con “Sửa thơng tin danh mục” được thực hiện.

<small>o </small> Nếu chọn “Xóa” thì sự kiện con “Xóa thơng tin danh mục” được thực hiện.

- Dịng sự kiện phụ:

<small>• </small> Thêm thơng tin danh mục:

<small>o </small> Hệ thống hiển thị form thêm thông tin Danh mục.

<small>o </small> Người dùng nhập thông tin.

<small>o </small> Nhấn nút thêm thông tin: Nếu thêm mới thành cơng thì thực hiện bước tiếp theo. Nếu sai thực hiện dòng sự kiện rẽ nhánh A1.

<small>o </small> Hiển thị thông báo thêm thành công.

<small>o </small> Hệ thống lưu thông tin danh mục vào cơ sở dữ liệu.

<small>• </small> Sửa thơng tin danh mục:

<small>o </small> Hệ thống hiển thị form sửa thông tin Danh mục.

<small>o </small> Người dùng nhập thông tin muốn sửa.

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

<small>o </small> Nhấn nút sửa thông tin: Nếu cập nhật thành cơng thì thực hiện bước tiếp theo. Nếu sai thực hiện dòng sự kiện rẽ nhánh A1.

<small>o </small> Hiển thị thông báo cập nhật thành công.

<small>o </small> Hệ thống cập nhật thông tin danh mục vào cơ sở dữ liệu.

<small>• </small> Xóa thơng tin danh mục:

<small>o </small> Người dùng chọn danh mục muốn xóa.

<small>o </small> Chọn xóa danh mục.

<small>o </small> Hệ thống kiểm tra ràng buộc:

<small>o </small> Nếu thỏa mãn thực hiện xóa danh mục.

<small>o </small> Nếu khơng thông báo vi phạm ràng buộc.

<small>o </small> Hệ thống cập nhật danh mục nếu xóa thành cơng. - Ca sử dụng kết thúc.

- Dòng sự kiện rẽ nhánh A1:

<small>• </small> Hệ thống thơng báo việc nhập dữ liệu khơng hợp lệ.

<small>• </small> Người dùng nhập lại thơng tin.

<small>• </small> Quay lại bước 3 của dịng sự kiện chính, hoặc hủy bỏ thao tác, khi đó ca sử dụng kết thúc.

- Đầu ra: Các thông tin danh mục hợp lệ được cập nhật trong cơ sở dữ liệu, hiển thị các thông báo phù hợp.

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

• Use Case Quản lý sản phẩm

<i>Hình 3.6. Use Case Quản lý sản phẩm </i>

- Mô tả: Quản lý và nhân viên quản lý các sản phẩm còn lại trong kho.

- Đầu vào: Use Case sử dụng bắt đầu khi người dùng đăng nhập thành cơng hệ thống.

- Thực hiện:

<small>• </small> Người dùng truy cập vào hệ thống và chọn Quản lý sản phẩm.

<small>• </small> Kiểm tra quyền truy cập.

<small>• </small> Hệ thống lấy dữ liệu danh sách, hiển thị giao diện danh sách Sản phẩm.

<small>• </small> Hệ thống hiển thị chức năng người dùng có thể thực hiện: thêm, sửa, xóa, tìm kiếm sản phẩm:

<small>o </small> Nếu chọn “Thêm” thì sự kiện con “Thêm thơng tin sản phẩm” được thực hiện.

<small>o </small> Nếu chọn “Sửa” thì sự kiện con “Sửa thơng tin sản phẩm” được thực hiện.

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

<small>o </small> Nếu chọn “Xóa” thì sự kiện con “Xóa thơng tin sản phẩm” được thực hiện.

<small>o </small> Nếu chọn “Tìm kiếm” thì sự kiện con “Tìm kiếm sản phẩm” được thực hiện.

- Dịng sự kiện phụ:

<small>• </small> Thêm thơng tin sản phẩm:

<small>o </small> Hệ thống hiển thị form thêm thông tin sản phẩm.

<small>o </small> Người dùng nhập thông tin.

<small>o </small> Nhấn nút thêm thông tin: Nếu thêm mới thành cơng thì thực hiện bước tiếp theo. Nếu sai thực hiện dòng sự kiện rẽ nhánh A1.

<small>o </small> Hiển thị thông báo thêm thành công.

<small>o </small> Hệ thống lưu thông tin sản phẩm vào cơ sở dữ liệu.

<small>• </small> Sửa thơng tin sản phẩm:

<small>o </small> Hệ thống hiển thị form sửa thông tin sản phẩm.

<small>o </small> Người dùng nhập thông tin muốn sửa.

<small>o </small> Nhấn nút sửa thông tin: Nếu cập nhật thành cơng thì thực hiện bước tiếp theo. Nếu sai thực hiện dòng sự kiện rẽ nhánh A1.

<small>o </small> Hiển thị thông báo cập nhật thành công.

<small>o </small> Hệ thống cập nhật thông tin sản phẩm vào cơ sở dữ liệu.

<small>• </small> Xóa thơng tin sản phẩm:

<small>o </small> Người dùng chọn sản phẩm muốn xóa.

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

<small>• </small> Hệ thống thơng báo việc nhập dữ liệu khơng hợp lệ.

<small>• </small> Người dùng nhập lại thơng tin.

<small>• </small> Quay lại bước 3 của dịng sự kiện chính, hoặc hủy bỏ thao tác, khi đó ca sử dụng kết thúc.

- Đầu ra: Các thông tin sản phẩm hợp lệ được cập nhật trong cơ sở dữ liệu, hiển thị các thông báo phù hợp.

• Use Case Quản lý đơn hàng

<i>Hình 3.7. Use Case Quản lý đơn hàng </i>

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

- Mô tả: Quản lý và nhân viên thực hiện quản lý đơn hàng của các sản phẩm trong kho.

- Đầu vào: Use Case sử dụng bắt đầu khi người dùng đăng nhập thành công hệ thống.

- Thực hiện:

<small>• </small> Người dùng truy cập vào hệ thống và chọn Quản lý đơn hàng.

<small>• </small> Kiểm tra quyền truy cập.

<small>• </small> Hệ thống lấy dữ liệu danh sách, hiển thị giao diện danh sách Đơn hàng

<small>• </small> Hệ thống hiển thị chức năng quản lý có thể thực hiện: tạo, tìm kiếm và xem chi tiết đơn hàng:

<small>o </small> Nếu chọn “Tạo” thì sự kiện con “Thêm đơn hàng” được thực hiện.

<small>o </small> Nếu chọn “Tìm kiếm” thì sự kiện con “Tìm kiếm đơn hàng” được thực hiện.

<small>o </small> Nếu chọn “Xem chi tiết” thì sự kiện con “Xem chi tiết đơn hàng” được thực hiện.

- Dòng sự kiện phụ:

<small>• </small> Thêm đơn hàng:

<small>o </small> Hệ thống hiển thị form thêm thông tin Đơn hàng.

<small>o </small> Người dùng nhập thông tin.

<small>o </small> Nhấn nút thêm thơng tin: Nếu thêm mới thành cơng thì thực hiện bước tiếp theo. Nếu sai thực hiện dòng sự kiện rẽ nhánh A1.

<small>o </small> Hiển thị thông báo thêm thành công.

<small>o </small> Hệ thống lưu thông tin đơn hàng vào cơ sở dữ liệu.

<small>• </small> Tìm kiếm đơn hàng:

<small>o </small> Nhập thông tin hoặc mã đơn muốn tìm kiếm.

<small>o </small> Nhấn nút tìm kiếm.

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

<small>o </small> Hệ thống lấy dữ liệu từ khóa nhập trùng với cơ sở dữ liệu, hiển thị trên màn hình.

<small>• </small> Xem chi tiết đơn hàng:

<small>o </small> Người dùng chọn đơn hàng muốn xem.

<small>o </small> Chọn xem chi tiết.

<small>o </small> Hệ thống lấy thông tin chi tiết của đơn hàng hiển thị. - Ca sử dụng kết thúc.

- Dòng sự kiện rẽ nhánh A1:

<small>• </small> Hệ thống thơng báo việc nhập dữ liệu khơng hợp lệ.

<small>• </small> Quản lý nhập lại thơng tin.

<small>• </small> Quay lại bước 3 của dịng sự kiện chính, hoặc hủy bỏ thao tác, khi đó ca sử dụng kết thúc.

- Đầu ra: Các thông tin đơn hàng hợp lệ được cập nhật trong cơ sở dữ liệu, hiển thị các thông báo phù hợp.

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

• Use Case Quản lý bài viết

<i>Hình 3.8. Use Case Quản lý bài viết </i>

- Mô tả: Quản lý thực hiện quản lý các bài viết trên hệ thống như bài viết quảng cáo về sản phẩm, các ưu đãi của cửa hàng…

- Đầu vào: Use Case sử dụng bắt đầu khi quản lý đăng nhập thành cơng hệ thống.

- Thực hiện:

<small>• </small> Người dùng truy cập vào hệ thống và chọn Quản lý bài viết.

<small>• </small> Kiểm tra quyền truy cập.

<small>• </small> Hệ thống lấy dữ liệu danh sách, hiển thị giao diện danh sách Bài viết.

<small>• </small> Hệ thống hiển thị chức năng người dùng có thể thực hiện: thêm, sửa, xóa, tìm kiếm bài viết:

<small>o </small> Nếu chọn “Thêm” thì sự kiện con “Thêm thơng tin bài viết” được thực hiện.

<small>o </small> Nếu chọn “Sửa” thì sự kiện con “Sửa thơng tin bài viết” thực hiện.

<small>o </small> Nếu chọn “Xóa” thì sự kiện con “Xóa thơng tin bài viết” thực hiện.

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

<small>o </small> Nếu chọn “Tìm kiếm” thì sự kiện con “Tìm kiếm bài viết” thực hiện. - Dịng sự kiện phụ:

<small>• </small> Thêm thơng tin bài viết:

<small>o </small> Hệ thống hiển thị form thêm thông tin Bài viết.

<small>o </small> Người dùng nhập thông tin.

<small>o </small> Nhấn nút thêm thông tin: Nếu thêm mới thành cơng thì thực hiện bước tiếp theo. Nếu sai thực hiện dòng sự kiện rẽ nhánh A1.

<small>o </small> Hiển thị thông báo thêm thành công.

<small>o </small> Hệ thống lưu thông tin bài viết vào cơ sở dữ liệu.

<small>• </small> Sửa thơng tin bài viết:

<small>o </small> Hệ thống hiển thị form sửa thông tin Bài viết.

<small>o </small> Người dùng nhập thông tin muốn sửa.

<small>o </small> Nhấn nút sửa thông tin: Nếu cập nhật thành công thì thực hiện bước tiếp theo. Nếu sai thực hiện dòng sự kiện rẽ nhánh A1.

<small>o </small> Hiển thị thông báo cập nhật thành công.

<small>o </small> Hệ thống cập nhật thông tin bài viết vào cơ sở dữ liệu.

<small>• </small> Xóa thơng tin bài viết:

<small>o </small> Người dùng chọn bài viết muốn xóa.

<small>o </small> Chọn xóa bài viết.

<small>o </small> Hệ thống kiểm tra ràng buộc:

<small>o </small> Nếu thỏa mãn thực hiện xóa bài viết.

<small>o </small> Nếu không thông báo vi phạm ràng buộc.

<small>o </small> Hệ thống cập nhật bài viết nếu xóa thành cơng.

<small>• </small> Tìm kiếm bài viết:

<small>o </small> Người dùng nhập từ khóa muốn tìm kiếm.

<small>o </small> Chọn xóa tìm kiếm.

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

<small>o </small> Hệ thống lấy dữ liệu từ khóa nhập trùng với cơ sở dữ liệu, hiển thị trên màn hình.

- Ca sử dụng kết thúc.

- Dòng sự kiện rẽ nhánh A1:

<small>• </small> Hệ thống thơng báo việc nhập dữ liệu khơng hợp lệ.

<small>• </small> Người dùng nhập lại thơng tin.

<small>• </small> Quay lại bước 3 của dịng sự kiện chính, hoặc hủy bỏ thao tác, khi đó ca sử dụng kết thúc.

- Đầu ra: Các thông tin bài viết hợp lệ được cập nhật trong cơ sở dữ liệu, hiển thị các thông báo phù hợp.

• Use Case Quản lý khách hàng

<i>Hình 3.9. Use Case Quản lý khách hàng </i>

- Mơ tả: Quản lý thông tin các khách hàng mua hàng.

- Đầu vào: Use Case sử dụng bắt đầu khi quản lý đăng nhập thành công hệ thống.

- Thực hiện:

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

<small>• </small> Người dùng truy cập vào hệ thống và chọn Quản lý khách hàng.

<small>• </small> Kiểm tra quyền truy cập.

<small>• </small> Hệ thống lấy dữ liệu danh sách, hiển thị giao diện danh sách Nhân viên sản phẩm.

<small>• </small> Hệ thống hiển thị chức năng người dùng có thể thực hiện: tìm kiếm, sửa, xóa khách hàng:

<small>o </small> Nếu chọn “Tìm kiếm” thì sự kiện con “Tìm kiếm khách hàng” được thực hiện.

<small>o </small> Nếu chọn “Sửa” thì sự kiện con “Sửa thông tin khách hàng” được thực hiện.

<small>o </small> Nếu chọn “Xóa” thì sự kiện con “Xóa thơng tin khách hàng” được thực hiện.

<small>• </small> Sửa thông tin khách hàng:

<small>o </small> Hệ thống hiển thị form sửa thông tin khách hàng.

<small>o </small> Người dùng nhập thông tin muốn sửa.

<small>o </small> Nhấn nút sửa thơng tin: Nếu cập nhật thành cơng thì thực hiện bước tiếp theo. Nếu sai thực hiện dòng sự kiện rẽ nhánh A1.

<small>o </small> Hiển thị thông báo cập nhật thành công.

<small>o </small> Hệ thống cập nhật thơng tin khách hàng vào cơ sở dữ liệu.

<small>• </small> Xóa thơng tin khách hàng:

<small>o </small> Người dùng chọn khách hàng muốn xóa.

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

<small>o </small> Chọn xóa khách hàng.

<small>o </small> Hệ thống kiểm tra ràng buộc:

<small>o </small> Nếu thỏa mãn thực hiện xóa khách hàng.

<small>o </small> Nếu khơng thơng báo vi phạm ràng buộc.

<small>o </small> Hệ thống cập nhật khách hàng nếu xóa thành cơng. - Ca sử dụng kết thúc.

- Dịng sự kiện rẽ nhánh A1:

<small>• </small> Hệ thống thông báo việc nhập dữ liệu không hợp lệ.

<small>• </small> Người dùng nhập lại thơng tin.

<small>• </small> Quay lại bước 3 của dịng sự kiện chính, hoặc hủy bỏ thao tác, khi đó ca sử dụng kết thúc.

- Đầu ra: Các thông tin khách hàng hợp lệ được cập nhật trong cơ sở dữ liệu, hiển thị các thơng báo phù hợp.

• Use Case Quản lý tài khoản

<i>Hình 3.10. Use Case Quản lý tài khoản </i>

- Mô tả: Quản lý thực hiện quản lý thông tin các tài khoản đăng nhập hệ thống.

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

- Đầu vào: Use Case sử dụng bắt đầu khi quản lý đăng nhập thành cơng hệ thống.

- Thực hiện:

<small>• </small> Người dùng truy cập vào hệ thống và chọn Quản lý tài khoản.

<small>• </small> Kiểm tra quyền truy cập.

<small>• </small> Hệ thống lấy dữ liệu danh sách, hiển thị giao diện danh sách Tài khoản.

<small>• </small> Hệ thống hiển thị chức năng người dùng có thể thực hiện: thêm, sửa, xóa, tìm kiếm tài khoản:

<small>o </small> Nếu chọn “Thêm” thì sự kiện con “Thêm tài khoản” được thực hiện.

<small>o </small> Nếu chọn “Sửa” thì sự kiện con “Sửa tài khoản” được thực hiện.

<small>o </small> Nếu chọn “Xóa” thì sự kiện con “Xóa tài khoản” được thực hiện. - Dịng sự kiện phụ:

<small>• </small> Thêm thông tin tài khoản:

<small>o </small> Hệ thống hiển thị form thêm thông tin tài khoản.

<small>o </small> Người dùng nhập thông tin.

<small>o </small> Nhấn nút thêm thông tin: Nếu thêm mới thành cơng thì thực hiện bước tiếp theo. Nếu sai thực hiện dòng sự kiện rẽ nhánh A1.

<small>o </small> Hiển thị thông báo thêm thành công.

<small>o </small> Hệ thống lưu thông tin tài khoản vào cơ sở dữ liệu.

<small>• </small> Sửa thơng tin tài khoản:

<small>o </small> Hệ thống hiển thị form sửa thông tin tài khoản.

<small>o </small> Người dùng nhập thông tin muốn sửa.

<small>o </small> Nhấn nút sửa thông tin: Nếu cập nhật thành cơng thì thực hiện bước tiếp theo. Nếu sai thực hiện dòng sự kiện rẽ nhánh A1.

<small>o </small> Hiển thị thông báo cập nhật thành công.

<small>o </small> Hệ thống cập nhật thông tin tài khoản vào cơ sở dữ liệu.

<small>• </small> Xóa thơng tin tài khoản:

</div>

×