1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo phát triển Ứng dụng trên nền tảng di dộng Đề tài xây dựng Ứng dụng bán Đồ Ăn nhanh

47 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng Ứng Dụng Bán Đồ Ăn Nhanh
Tác giả Nguyễn Thị Bích Tuệ, Nguyễn Đình Huy, Trần Văn Hùng, Trần Công Minh
Người hướng dẫn Ts Nguyễn Mạnh Thắng
Trường học Học viện Kỹ thuật Mật mã
Chuyên ngành Công nghệ thông tin
Thể loại báo cáo
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 47
Dung lượng 2,33 MB

Cấu trúc

  • CHƯƠNG I TỔNG QUÁT (8)
    • 1. MÔ TẢ BÀI TOÁN (8)
    • 2. MÔ TẢ CHỨC NĂNG (8)
  • CHƯƠNG II KHẢO SÁT VẤN ĐỀ VÀ MÔ HÌNH TRIỂN KHAI (10)
    • 2.1. KHẢO SÁT VẤN ĐỀ VÀ MÔ HÌNH TRIỂN KHAI (10)
    • 2.2. CÔNG NGHỆ SỬ DỤNG (11)
      • 2.2.1 ANDROID STUDIO (11)
      • 2.2.2 FLUTTER (12)
      • 2.2.3 DART (12)
      • 2.2.4 ANDROID (13)
      • 2.2.5 IOS (14)
    • 2.3. PHÂN TÍCH HỆ THỐNG (15)
      • 2.3.1 SƠ ĐỒ USE CASE TỔNG QUÁT (15)
      • 2.3.2 BIỂU ĐỒ TUẦN TỰ (21)
    • 2.4 THIẾT KẾ CƠ SỞ DỮ LIỆU (23)
      • 2.4.1 CƠ SỞ DỮ LIỆU (23)
      • 2.4.2 MÔ TẢ CƠ SỞ DỮ LIỆU (23)
    • 2.5 CƠ CHẾ AN TOÀN HỆ THỐNG (26)
      • 2.5.1 TRÊN ỨNG DỤNG DI ĐỘNG (26)
      • 2.5.2 TRÊN HỆ THỐNG BACKEND BẰNG LARAVEL (34)
  • CHƯƠNG III TRIỂN KHAI THỰC NGHIỆM (36)
    • 3.1 GIAO DIỆN HỆ THỐNG (36)
    • 3.2 GIAO DIỆN HỆ THỐNG QUẢN LÍ PHÍA BACKEND (43)
  • KẾT LUẬN (11)
  • TÀI LIỆU THAM KHẢO (47)

Nội dung

Nhà hàng và các chuỗi cung cấp sản phẩm ẩm thực hiện có thểtiếp cận và phục vụ một lượng lớn người dùng và khách hàng thông qua việc kếthợp với công nghệ di động, điều này cũng làm t

TỔNG QUÁT

MÔ TẢ BÀI TOÁN

Ứng dụng di động này cho phép người dùng trên hệ điều hành IOS và Android dễ dàng đặt món ăn và giao hàng từ các nhà hàng yêu thích của họ một cách nhanh chóng và tiện lợi.

Phần mềm cung cấp nhiều chức năng hữu ích, bao gồm danh mục sản phẩm và chi tiết sản phẩm, cho phép người dùng dễ dàng thêm sản phẩm vào giỏ hàng và tạo đơn đặt hàng Người dùng có thể theo dõi trạng thái đơn hàng, thực hiện thanh toán, cũng như đăng nhập hoặc đăng ký tài khoản Nếu quên mật khẩu, người dùng có thể dễ dàng khôi phục Phần mềm cũng cho phép xem thông tin tài khoản và xác định vị trí người dùng thông qua Google Map Ngoài ra, nhà hàng có thể thêm, sửa hoặc xóa sản phẩm trong hệ thống.

MÔ TẢ CHỨC NĂNG

Bảng 1 : Bảng chức năng hệ thống

STT CHỨC NĂNG MÔ TẢ

(Xem , sửa ,xóa , đặt hàng)

Hiển thị tất cả các sản phẩm mà khách hàng đã thêm thông qua chức năng "Thêm vào giỏ hàng" Khách hàng có thể dễ dàng chỉnh sửa số lượng hoặc xóa sản phẩm trong giỏ hàng.

2 Thêm vào giỏ hàng Chức năng thêm sản phẩm vào giỏ hàng Sản phẩm được add sẽ được hiển thị trong “Giỏ Hàng”

Trong giao diện giỏ hàng, sau khi lựa chọn sản phẩm, khách hàng có thể nhấn nút để bắt đầu tạo đơn đặt hàng Khách hàng cần cập nhật và xác nhận thông tin đơn hàng, bao gồm địa chỉ giao hàng và giá trị đơn hàng, trước khi tiến hành thanh toán.

Thanh toán cung cấp nhiều phương thức cho người dùng, bao gồm chuyển khoản và tiền mặt Sau khi hoàn tất giao dịch, khách hàng sẽ nhận được hóa đơn thể hiện số tiền đã thanh toán.

5 Trạng thái đơn hàng Sau khi đơn hàng được thanh toán thành công, trạng thái đơn hàng sẽ được hiển thị trong mục Trạng thái đơn hàng

6 Đăng nhập Khách hàng sử dụng tài khoản đã đăng ký để đăng nhập vào ứng dụng

7 Đăng ký Khách hàng đăng ký thông tin cá nhân vào ứng dụng Thông tin sẽ được lưu vào cơ sở dữ liệu của ứng dụng

8 Quên mật khẩu Khôi phục tài khoản của khách hàng dựa trên tên đăng nhập và số điện thoại đã đăng ký.

Trang cá nhân của khách hàng chứa thông tin cá nhân, voucher và hội viên, chỉ khả dụng sau khi đăng ký Khách hàng có thể cập nhật thông tin và có tùy chọn xóa tài khoản khỏi hệ thống.

10 Thêm/ xóa/ cập nhật sản phẩm

Thêm / xóa / cập nhật sản phẩm trong hệ thống.

11 Duyệt đơn hàng Kiểm tra và kiểm soát các đơn hàng tình trạng của các đơn hàng được đặt cho hệ thống.

KHẢO SÁT VẤN ĐỀ VÀ MÔ HÌNH TRIỂN KHAI

KHẢO SÁT VẤN ĐỀ VÀ MÔ HÌNH TRIỂN KHAI

Việc mua sắm trực tuyến và đặt đồ ăn qua mạng đã trở thành một phần thiết yếu trong cuộc sống hàng ngày của nhiều người trên toàn cầu, đặc biệt là trong thời kỳ đại dịch COVID-19 Nhiều xu hướng và tình trạng chung đã xuất hiện, phản ánh sự thay đổi trong thói quen tiêu dùng và nhu cầu của người dùng.

Thị trường mua sắm trực tuyến đang trải qua sự tăng trưởng mạnh mẽ nhờ vào nhu cầu gia tăng của người tiêu dùng và sự phát triển phổ biến của các nền tảng thương mại điện tử Doanh số bán hàng trực tuyến không ngừng tăng lên, phản ánh xu hướng tiêu dùng hiện đại.

Việc đặt hàng và giao hàng qua mạng mang lại sự tiện ích và nhanh chóng cho khách hàng, với nhiều doanh nghiệp và nền tảng hiện nay tập trung vào việc cải thiện dịch vụ giao hàng nhằm nâng cao trải nghiệm người dùng.

Quản lý an toàn và vệ sinh là yếu tố quan trọng, với việc kiểm soát chặt chẽ các thông tin liên quan nhằm đảm bảo an toàn cho người sử dụng Điều này không chỉ tạo ra sự tin tưởng mà còn góp phần nâng cao chất lượng dịch vụ.

+ Sự đón nhận của buôn bán qua mạng: Người dùng đón nhận phương thức buôn bán này vô cùng mạnh mẽ, và phản hồi cũng rất tích cực

Công nghệ 4.0 đang phát triển mạnh mẽ, mang lại nhiều tiện ích và lợi ích kinh tế cho cả người bán và khách hàng Sự kết hợp của các công nghệ tiên tiến giúp cải thiện trải nghiệm mua sắm và tối ưu hóa quy trình kinh doanh.

Agile là một phương pháp phát triển phần mềm linh hoạt, tập trung vào việc tạo ra sản phẩm chất lượng cao và đáp ứng hiệu quả nhu cầu của khách hàng.

- Linh Hoạt và Tương Tác

• Trong Agile, linh hoạt đề cập đến khả năng thay đổi yêu cầu dự án trong quá trình phát triển.

Tương tác thường xuyên giữa các thành viên trong nhóm phát triển và khách hàng là yếu tố quan trọng để đảm bảo sự hiểu biết chung và khả năng thích ứng nhanh chóng với yêu cầu Để quản lý hiệu quả, việc chia dự án thành các sprint giúp tăng cường tính linh hoạt và khả năng phản hồi trong quá trình phát triển.

• Sprint là một giai đoạn phát triển ngắn hạn, thường kéo dài từ 1 đến 4 tuần, giúp quản lý tiến độ và đảm bảo sự thích ứng nhanh chóng.

• Việc phân chia dự án thành Sprint cho phép tạo ra sản phẩm có thể sử dụng được từng bước và thu được phản hồi sớm.

-Ưu Tiên Hóa Giá Trị

• Agile giúp đảm bảo rằng các tính năng quan trọng nhất và mang lại giá trị cao nhất cho khách hàng được ưu tiên và phát triển trước.

• Sự ưu tiên hóa giá trị đảm bảo rằng sản phẩm cuối cùng đáp ứng nhu cầu chính của khách hàng.

• Tích hợp liên tục và kiểm thử thường xuyên trong Agile giúp phát hiện và sửa lỗi sớm hơn trong quá trình phát triển.

• Điều này đảm bảo rằng sản phẩm luôn ổn định và có chất lượng cao.

- Ứng Dụng Agile trong xây dựng ứng dụng bán đồ ăn nhanh

• Áp dụng Agile vào việc xây dựng ứng dụng bán đồ ăn nhanh cho phép thích nghi với sự biến đổi nhanh chóng trong ngành bán đồ ăn nhanh.

Sự linh hoạt và khả năng thay đổi yêu cầu là yếu tố quan trọng giúp trang web đáp ứng hiệu quả nhu cầu của thị trường và khách hàng.

• Agile là một phương pháp phát triển phần mềm mạnh mẽ cho việc xây dựng ứng dụng bán đồ ăn nhanh.

Sự thích nghi, tương tác và ưu tiên hóa giá trị là những yếu tố quan trọng giúp sản phẩm cuối cùng đáp ứng tốt nhất nhu cầu của khách hàng và thị trường.

CÔNG NGHỆ SỬ DỤNG

Android Studio là một IDE (Môi trường Phát triển Tích hợp) dành riêng cho các nhà phát triển ứng dụng Android, ra mắt vào ngày 16 tháng 5 năm 2013 tại hội nghị Google I/O Phần mềm này được phát hành miễn phí theo giấy phép Apache License 2.0 và cung cấp quyền truy cập vào Android SDK, hỗ trợ tối đa cho quá trình phát triển ứng dụng.

Android SDK là bộ công cụ phát triển phần mềm toàn diện dành cho việc phát triển ứng dụng, bao gồm trình gỡ lỗi, thư viện, trình giả lập thiết bị cầm tay dựa trên QEMU, tài liệu, mã mẫu và hướng dẫn Bộ công cụ này hỗ trợ các nền tảng Linux, Mac OS X từ phiên bản 10.5.8 trở lên và Windows 7 trở lên.

Flutter là một công cụ phát triển phần mềm mã nguồn mở do Google phát triển, cho phép tạo ra ứng dụng đa nền tảng trên nhiều hệ điều hành như iOS, Android và Linux từ một cơ sở mã nguồn duy nhất.

- Flutter có hai thành phần chính là:

+ Software Development Kit (SDK): Tích hợp các công cụ có khả năng phát triển ứng dụng bao gồm các công cụ giúp biên dịch mã

+ UI Library based on widgets (Framework): Tổng hợp các thành phần giao diện người dùng (UI) có thể tái sử dụng (Text input, button slider, )

- Các đặc điểm nổi bật của Flutter:

+ Flutter sử dụng ngôn ngữ DART một ngôn ngữ nhanh, hướng đối tượng với nhiều tính năng hữu ích

Flutter hỗ trợ kết xuất trên cả nền tảng Android và iOS với cơ chế riêng biệt Hầu hết các thành phần giao diện người dùng đều sẵn có và tuân thủ các nguyên tắc của Material Design.

+ Flutter có thư viện đẹp và giải quyết được bài toán tập hợp các layout, platform và widget ở giao diện người dùng

Dart là ngôn ngữ lập trình đa mục đích được phát triển bởi Google và được Ecma phê chuẩn theo tiêu chuẩn ECMA-408 Ngôn ngữ này phục vụ cho việc xây dựng ứng dụng web, server, máy tính để bàn và thiết bị di động Dart là ngôn ngữ hướng đối tượng, có cấu trúc theo lớp và cơ chế thu gom rác, sử dụng cú pháp kiểu C để chuyển đổi mã sang JavaScript Đặc biệt, Dart là ngôn ngữ mã nguồn mở được phát triển trên GitHub.

+ Năng suất: Cú pháp rõ ràng và súc tích, công cụ đơn giản nhưng mạnh mẽ.

Dart tối ưu hóa biên dịch trước thời hạn, giúp nâng cao hiệu suất và rút ngắn thời gian khởi động trên các thiết bị di động và web.

Dart biên dịch thành mã ARM và x86, cho phép các ứng dụng di động chạy mượt mà trên iOS, Android và nhiều nền tảng khác Đối với ứng dụng web, Dart được chuyển đổi sang JavaScript để đảm bảo tính tương thích và hiệu suất.

+ Dễ gần: Cấu trúc của của Dart khá giống với C++ và Java lên khá dễ làm quen nếu đã biết nhũng ngôn ngữ trên.

Dart là ngôn ngữ lập trình lý tưởng cho lập trình Reactive, nhờ vào khả năng quản lý các đối tượng ngắn hạn như widget UI thông qua phân bổ đối tượng nhanh và garbage collection (GC) Ngoài ra, Dart còn hỗ trợ lập trình không đồng bộ với các tính năng ngôn ngữ và API, sử dụng các đối tượng Future và Stream.

Android là hệ điều hành mã nguồn mở dựa trên nền tảng Linux, được thiết kế cho các thiết bị di động như điện thoại thông minh và máy tính bảng Với mã nguồn mở, lập trình viên có thể dễ dàng điều chỉnh và phân phối hệ điều hành này, góp phần quan trọng vào sự phát triển vượt bậc của Android như một nền tảng hàng đầu cho điện thoại thông minh trên toàn cầu.

- Kiến trúc của Android: được thiết kế dựa trên một kiến trúc linh hoạt và mở rộng để hỗ trợ nhiều thiết bị di động khác nhau.

+Linux Kernel: Đây là một loại nhân xử lý, nó có khả năng cung cấp độ trừu tượng cho các phần cứng

Các thư viện nguồn và thư viện Android chủ yếu hoạt động trên lớp nhân Linux, và tất cả đều dựa vào Java để phục vụ cho hệ điều hành Android.

Android Runtime cung cấp một thành phần quan trọng, đó là Dalvik Virtual Machine, một loại Java Virtual Machine được thiết kế đặc biệt bởi các chuyên gia nhằm tối ưu hóa cho hệ điều hành Android.

The Application Framework offers higher-level services for applications in the form of Java layers, allowing developers to interact directly with the Android Framework.

+ Application: Đây là nơi các lập trình viên thường xuyên làm việc cùng để có thể triển khai cho ứng dụng

Android đã trải qua nhiều cập nhật kể từ khi phát hành lần đầu, nhằm vá các lỗ hổng và bổ sung tính năng mới Các phiên bản đầu tiên 1.0 (9/2008) và 1.1 (2/2009) không có tên gọi chính thức Từ phiên bản tiếp theo, mỗi bản nâng cấp được đặt tên theo các món ăn hấp dẫn, theo thứ tự bảng chữ cái từ "C" đến "I" Hiện tại, các phiên bản chính của Android bao gồm:

iOS là hệ điều hành di động của Apple, được sử dụng trên các thiết bị như iPhone, iPod Touch và các mẫu iPad trước khi iPadOS ra mắt vào năm 2019 Đây là hệ điều hành phổ biến thứ hai trên thế giới, chỉ sau Android của Google.

Cocoa Touch Layer là lớp chính của hệ thống iOS, chứa các framework thiết yếu cho việc phát triển ứng dụng Các framework quan trọng trong lớp này bao gồm UIKit, dùng để xây dựng giao diện người dùng; MapKit, hỗ trợ bản đồ và định vị; và Core Data, giúp quản lý dữ liệu hiệu quả.

PHÂN TÍCH HỆ THỐNG

2.3.1 SƠ ĐỒ USE CASE TỔNG QUÁT :

2.3.1.1 Sơ đồ Use case tổng quát:

Hình 1: Sơ đồ usecase tổng quát 2.3.1.2 Đặc tả chức năng trong sơ đồ usecase:

- Bảng 2: Đặc tả usecase Đăng nhập

2 Mô tả ngắn Đăng nhập vào hệ thống

3 Tác nhân Người dùng (Khách hàng , quản lý)

4 Điều kiện kích hoạt Người dùng truy cập vào trang đăng nhập của ứng dụng

5 Tiền điều kiện : Người dùng có thể đăng nhập vào ứng dụng

1 Người dùng nhập thông tin đăng 2 Hệ thống kiểm tra thông tin được nhập gồm tên đăng nhập và mật khẩu , sau đó nhấn nút đăng nhập gửi tới , nếu đăng nhập thành công chuyển người dùng đến trang chủ

6.2 Luồng sự kiện thay thế:

Nếu thông tin đăng nhập không đúng , hệ thống sẽ thông báo “tài khoản hoặc mật khẩu không chính xác”

6.3 Luồng ngoại lệ / luồng phụ:

7 Hậu điều kiện Quay về trang chủ

- Bảng 3: Đặc tả usecase Đăng ký

2 Mô tả ngắn Đăng ký một tài khoản vào hệ thống với vai trò là khách hàng

3 Tác nhân Khách hàng

4 Điều kiện kích hoạt Khách hàng truy cập vào trang đăng ký của ứng dụng

5 Tiền điều kiện Người dùng có thể đăng nhập vào ứng dụng

1 Người dùng nhập các thông tin bao gồm tên đăng nhập , mật khẩu và các thông tin trong form , sau đó nhấn nút đăng ký.

2 Hệ thống kiểm tra thông tin được gửi tới, nếu đăng ký thành công, hệ thống sẽ gửi thông báo và người dùng có thể đăng nhập vào ứng dụng

6.2 Luồng sự kiện thay thế

+ Nếu tên đăng nhập bị trùng hệ thống sẽ thông báo tên tài khoản đã tồn tại

+ Nếu form đăng ký chưa được điền đầy đủ thông tin hệ thống sẽ thông báo

“Vui lòng điền đầy đủ thông tin”.

+Nếu mật khẩu không đáp ứng được độ mạnh , hệ thống sẽ thông báo “Mật khẩu yếu”

6.3 Luồng ngoại lệ / luồng phụ

7 Hậu điều kiện Quay về trang đăng ký

- Bảng 4: Đặc tả use case Quên Mật khẩu

1 Tên UC QUÊN MẬT KHẨU

2 Mô tả ngắn Chức năng giúp người dùng tìm lại mật khẩu dựa vào tên đăng nhập

3 Tác nhân Khách hàng

4 Điều kiện kích hoạt Người dùng truy cập vào trang quên mật khẩu

5 Tiền điều kiện Người dùng có thể mở ứng dụng

1 Người dùng sẽ nhập thông tin về tên đăng nhập vào form, và ấn gửi

3 Một form yêu cầu nhập mã xác nhận sẽ hiện lên và yêu cầu người dùng nhập mã xác nhận (được gửi qua số điện thoại , email )

2 Sẽ kiểm tra thông tin tên đăng nhập được gửi tới Nếu tên đăng nhập tồn tại Hệ thống sẽ lấy email/ số điện thoại của tài khoản này và gửi mã xác nhận cho người dùng

4 Hệ thống kiểm tra thông tin của mã xác nhận được gửi tới Nếu khớp sẽ gửi mật khẩu mới cho người dùng. (Một chuỗi ký tự mạnh)

6.2 Luồng sự kiệu thay thế

+ Nếu tên đăng nhập không tồn tại hệ thống sẽ gửi thông báo “Không tồn tại”

+ Nếu mã xác nhận được gửi tới không đúng sẽ gửi thông báo “Mã xác nhận không hợp lệ”

6.3 Luồng ngoại lệ / luồng phụ

+ Nếu người dùng cố tình nhập tên đăng nhập quá 5 lần sẽ tiến hành khóa chức năng tạm thời

+ Mã xác nhận sẽ bị hủy trong các trường hợp sau:

 Xác nhận đã thành công

 Quá thời gian xác nhận

 Người dùng yêu cầu gửi mã xác nhận mới

7 Hậu điều kiện Quay về trang đăng nhập

- Bảng 5 : Đặc tả usecase Tạo đơn hàng

1 Tên UC TẠO ĐƠN HÀNG

2 Mô tả ngắn Tạo đơn đặt hàng

3 Tác nhân Khách hàng

4 Điều kiện kích hoạt Người dùng bấm vào nút đặt hàng

5 Tiền điều kiện Trong giỏ hàng có sản phẩm

1 Người dùng gửi yêu cầu tạo đơn đặt hàng

3 Khách hàng ấn xác nhận đơn hàng

Hệ thống sẽ kiểm tra giỏ hàng của khách hàng; nếu có sản phẩm, nó sẽ tạo đơn hàng và cập nhật thông tin của khách hàng vào đơn Sau khi hoàn tất cập nhật, thông tin đơn hàng sẽ được gửi đến khách hàng để xác nhận.

4 Nhận được thông tin xác nhận. Chuyển đến trang thanh toán

6.2 Luồng sự kiện thay thế:

+ Nếu trong giỏ hàng trống, gửi thông báo “Giỏ hàng trống”

+ Nếu khách hàng không ấn xác nhận đơn hàng , đơn hàng sẽ bị hủy sau 5 phút

6.3 Luồng ngoại lệ / luồng phụ

7 Hậu điều kiện Chuyển đến trang thanh toán

- Bảng 6: Đặc tả usecase Thanh toán

2 Mô tả ngắn Thực hiện thanh toán đơn hàng

3 Tác nhân Khách hàng

4 Điều kiện kích hoạt Xác nhận đơn hàng thành công

5 Tiền điều kiện Xác nhận đơn hàng thành công

1 Thực hiện lựa chọn phương thức thanh toán:

+ Thanh toán tiền mặt, sẽ chuyển người dùng đến trang cảm ơn vì đã đặt hàng và thông báo đặt hàng thành công “Vui lòng chờ!”

+ Thanh toán chuyển khoản sẽ hiện thông tin chuyển khoản cho khách hàng và chờ khách hàng thành toán

2 Sau khi nhận thông báo chuyển khoản thành công từ ngân hàng Sẽ chuyển người dùng về ứng dụng

6.2 Luồng sự kiệu thay thế:

+ Nếu chuyển khoản thất bại thì người dùng sẽ được thông báo “Thanh toán thất bại “

6.3 Luồng ngoại lệ / luồng phụ

7 Hậu điều kiện Chuyển người dùng về trang kiểm tra đơn đặt hàng

- Bảng 7: Đặc tả usecase quản lý giỏ hàng

1 Tên UC QUẢN LÝ GIỎ HÀNG

2 Mô tả ngắn Quản lý toàn bộ sản phẩm người dùng thêm vào

3 Tác nhân Khách hàng

4 Điều kiện kích hoạt Có sản phẩm trong giỏ hàng

5 Tiền điều kiện Khách hàng có đăng nhập vào ứng dụng

1 Người dùng thêm một sản phẩm vào trong giỏ hàng

2 Ở trong giỏ hàng người dùng có thể thêm / sửa / xóa sản phẩm

6.2 Luồng sự kiệu thay thế :

6.3 Luồng ngoại lệ / luồng phụ

- Bảng 8: Đặc tả usecase Duyệt đơn hàng

1 Tên UC DUYỆT ĐƠN HÀNG

2 Mô tả ngắn Kiểm soát toàn bộ đơn hàng tới

4 Điều kiện kích hoạt Có thể đăng nhập vào ứng dụng bằng tài khoản quản lý

5 Tiền điều kiện Có khách hàng sử dụng chức năng tạo đơn hàng

1 Quản lý truy cập vào trang quản lý đơn hàng Quản lý có thể kiểm soát các đơn hàng tới Khi một đơn hàng tới cần sự xác nhận của quản lý

Nếu quản lý xác nhận "Yes", đơn hàng sẽ được cập nhật trạng thái thành công Trạng thái này sẽ được gửi đến khách hàng và hiển thị trong trang quản lý đơn hàng của quản lý.

6.2 Luồng sự kiện thay thế:

+ Nếu quản lý xác nhận “No” thì hệ thống sẽ gửi lại cho quản lý một form điền lý do hủy đơn để gửi lại cho khách hàng

6.3 Luồng ngoại lệ / luồng phụ :

7 Hậu điều kiện Quay lại trang quản lý

- Bảng 9 : Đặc tả use case thêm sản phẩm

1 Tên UC THÊM SẢN PHẨM

2 Mô tả ngắn Thêm sản phẩm mới cho nhà hàng

4 Điều kiện kích hoạt Có thể đăng nhập vào ứng dụng bằng tài khoản quản lý

5 Tiền điều kiện Truy cập vào page thêm sản phẩm

1 Người dùng điền thông tin sản phẩm mới vào trong form và ấn “Add”

3 Thông báo thêm sản phẩm thành công

2.Hệ thống nhận thông tin được gửi tới Nếu sản phẩm chưa tồn tại trong CSDL sẽ thêm sản phẩm mới vào menu.

6.2 Luồng sự kiện thay thế:

+ Nếu có sản phẩm trùng tên, gửi thông báo “Sản phẩm đã tồn tại”.

+ Nếu người dùng không điền đầy đủ thông tin vào form, gửi thông báo “Vui lòng điền toàn bộ thông tin”.

6.3 Luồng ngoại lệ / luồng phụ

7 Hậu điều kiện Chuyển về trang quản lý sản phẩm

- Biểu đồ tuần tự chức năng Đăng nhập:

Hình 2: Biểu đồ tuần tự chức năng đăng nhập

- Biểu đồ tuần tự chức năng Đăng ký:

Hình 3: Biểu đồ tuần tự chức năng Đăng ký

- Biểu đồ tuần tự Đặt hàng:

Hình 4: Biểu đồ tuần tự đặt hàng

THIẾT KẾ CƠ SỞ DỮ LIỆU

2.4.2 MÔ TẢ CƠ SỞ DỮ LIỆU :

3 Password Mật khẩu đăng nhập

4 Ten Tên mà admin muốn dùng

5 HinhAnh Hình ảnh của admin

Bảng 11 : Bảng Chi tiết đơn hàng

1 ID Id thông tin đơn hàng chi tiết

2 IDDonHang Id đơn hàng đối chiếu với bảng Đơn Hàng

3 IDSanPham Id sảm phẩm đối chiếu với bảng Sản Phẩm

4 SoLuong Số lượng sản phẩm được đặt

5 ThanhTien Giá trị của đơn hàng

6 Thue Phần trăm thuế được áp dụng cho đơn hàng

1 IDSanPham ID của sản phẩm

3 Price Giá của món ăn

4 DanhGia Đánh giá của món ăn ( trên thang điểm 5)

5 NguonGoc Thông tin về nguồn gốc của món ăn

6 PhanLoai Phân loại món ăn

Bảng 13 : Bảng Danh mục sản phẩm

1 IdLoai ID của danh mục sản phẩm

2 TênPhanLoai Tên danh mục sản phẩm

3 MôTả Mô tả chung về tất cả món ăn trong danh mục sản phẩm

2 IDKhachHang Id của khách hàng đặt đơn hàng

4 Note Ghi chú cho đơn hàng

5 TrangThaiDonHang Trạng thái của đơn hàng

Trạng thái thanh toán đơn hàng

7 DiaChiGiaoHang Địa chỉ giao hàng

Bảng 15: Bảng khách hàng

1 IDKhachHang Id của khách hàng

2 Name Tên khách hàng

3 Phone Số điện thoại của khách hàng

4 Location Địa chỉ nhà khách hàng

5 Password Mật khẩu đăng nhập của khách hàng

CƠ CHẾ AN TOÀN HỆ THỐNG

2.5.1 TRÊN ỨNG DỤNG DI ĐỘNG : a) Triển khai SSL cho ứng dụng :

SSL (Secure Sockets Layer) là giao thức bảo mật thiết lập kết nối an toàn giữa máy khách và máy chủ trên Internet Được phát triển để bảo vệ dữ liệu truyền tải giữa hai máy tính, công nghệ SSL được áp dụng rộng rãi trong các ứng dụng truyền thông trực tuyến như trang web, email, và truyền file SSL tạo ra kênh kết nối mã hóa, ngăn chặn bên thứ ba đọc hoặc thay đổi dữ liệu trong quá trình truyền.

HTTPS là phiên bản bảo mật của HTTP, cho phép các website được cài đặt chứng chỉ SSL/TLS thiết lập kết nối an toàn với máy chủ.

- Cơ chế hoạt động của SSL :

Giao thức SSL hoạt động dưới các giao thức ứng dụng như HTTP và SMTP, đồng thời nằm trên giao thức mạng TCP/IP, cho phép SSL hoạt động độc lập với các giao thức mạng SSL sử dụng phương pháp mã hóa khóa công khai kết hợp với thuật toán RSA để đảm bảo an toàn thông tin.

 Client và server nhận dạng lẫn nhau

 Sử dụng chứng thực số để chứng thực tính toàn vẹn

 Mã hóa toàn bộ thông tin để đảm bảo tính bí mật

Các máy chủ bảo mật thường có chuỗi HTTPS và hình chiếc khóa trong URL thay vì HTTP như bình thường

Quá trình bắt đầu một phiên làm việc với máy chủ web được bảo mật bằng SSL được gọi là "quá trình bắt tay" Quá trình này bao gồm các bước thiết lập kết nối an toàn giữa máy khách và máy chủ.

 Trình duyệt và server quyết định cấp độ và cách thức mã hóa đúng cho phiên làm việc

 Trình duyệt và server tạo và chia sẻ chìa khóa dùng để mã hóa

 Trình duyệt yêu cầu và nhận chứng thực số từ server (không bắt buộc)

 Server yêu cầu và nhận chứng thực số từ trình duyệt (không bắt buộc )

Sau khi quá trình bắt tay hoàn tất, giao dịch sẽ được hoàn thành Trong suốt phiên làm việc, mọi dữ liệu truyền giữa trình duyệt và server đều được mã hóa, đảm bảo an toàn và bảo mật cho thông tin.

- Triển khai SSL cho hệ thống : Cài đặt với mỗi trường local sử dụng tổ hợp XAMPP (tại C:\xampp\) :

Bước 1 : Trong thư mục C:\xampp\apache\conf (Thư mục có chưa file openssl.cnf), tạo 2 file:

+ cert.conf : thay thế {your domain} bằng domain của hệ thống (appapi.com)

[ req ] default_bits = 2048 default_keyfile = server-key.pem distinguished_name = subject req_extensions = req_ext x509_extensions = x509_ext string_mask = utf8only

In the context of configuring location and contact details, the country is identified as Vietnam (VN), with Ho Chi Minh City specified as the locality The organization is represented by a placeholder name, "Example, CNS," while the common name is denoted as "{your domain}" For communication purposes, the default email address is set to "test@example.com."

[ x509_ext ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment subjectAltName = @alternate_names nsComment = "OpenSSL Generated Certificate"

[ req_ext ] subjectKeyIdentifier = hash basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment subjectAltName = @alternate_names nsComment = "OpenSSL Generated Certificate"

+ make_SSL.bat : Tạo và chạy file :

@echo off set /p domain="Enter Domain: " set OPENSSL_CONF=openssl.cnf if not exist \%domain% mkdir \%domain%

\bin\openssl req -config cert.conf -new -sha256 -newkey rsa:2048 - nodes -keyout %domain%\server.key -x509 -days 365 -out %domain%\ server.crt echo. echo - echo The certificate was provided. echo. pause

Sau đó cập nhật httpd.conf một Vitrual Host :

SSLCertificateFile "conf/{your domain}/server.crt"

SSLCertificateKeyFile "conf/{your domain}/server.key"

Note : Khởi động lại Apache Để domain name có thể truy cập thông qua trình duyệt cần khai báo domain trong file /hosts của hệ thống

+ Bước 2 : Khai báo chứng chỉ trên Windows :

Open file {your domain}/server.crt > Click "Install Certificatr " > Next ,trong cửa sổ mở ra:

Chọn "Trusted Root Certification Authorities" > OK > Next > Finish

Chờ một lúc sẽ có 1 cửa sổ "Sercurity Warning" > Yes

- Kết quá cuối cùng : b) Ngăn chặn Spam Request :

Khi người dùng gửi nhiều yêu cầu liên tiếp đến server qua API, server cần phải xử lý tất cả các yêu cầu đó, bao gồm cả việc xác thực tài khoản diễn ra sau đó.

Hệ thống áp dụng thiết lập Rate Limit để quản lý lưu lượng truy cập Khi người dùng gửi quá nhiều yêu cầu đến server trong vòng 1 phút, API sẽ trả về thông báo lỗi với mã 429, yêu cầu người dùng chờ một khoảng thời gian trước khi gửi yêu cầu tiếp theo Dưới đây là đoạn JSON thể hiện mã lỗi 429 khi vượt quá số lượng yêu cầu cho phép Người dùng có thể điều chỉnh số lượng yêu cầu tối đa trong file app/Http/Kernel.php.

'throttle:60,1', // sốO lượng request trên một phút 'bindings',

\Illuminate\Routing\Middleware\ SubstituteBindings::class,

], c) Sử dụng xác thực hai lớp (2FA) :

Chức năng đăng nhập sử dụng xác thực hai lớp nhằm đảm bảo an toàn cho người dùng Xác thực này kết hợp giữa tên đăng nhập, mật khẩu và mã xác thực OTP (One-Time Password) được gửi qua điện thoại hoặc email Trong quá trình đăng nhập, sau khi người dùng nhập username và password, hệ thống sẽ yêu cầu nhập mã xác nhận (OTP) đã được gửi đến người dùng qua email hoặc số điện thoại.

2.5.2 TRÊN HỆ THỐNG BACKEND BẰNG LARAVEL : a) Cập nhập bản vá cho Framework :

Các ứng dụng web thường được phát triển bằng các framework như Struts và ZK Tuy nhiên, các thư viện trong những phiên bản cũ của các framework này có nhiều lỗ hổng về an toàn thông tin đã được công khai, cho phép kẻ tấn công khai thác và tấn công hệ thống, ví dụ như lỗ hổng Struts2 Remote Command Execution.

Để đảm bảo an toàn cho hệ thống, cần thực hiện việc cập nhật liên tục các thư viện mới nhất và bản vá bảo mật cho các thư viện, framework đang sử dụng Bên cạnh đó, việc kiểm soát các truy vấn cơ sở dữ liệu cũng rất quan trọng nhằm ngăn chặn các cuộc tấn công SQL Injection.

Khi lập trình viên truy vấn cơ sở dữ liệu bằng cách kết hợp chuỗi đầu vào từ người dùng, họ có nguy cơ gặp phải lỗi SQL Injection Kẻ tấn công có thể lợi dụng những lỗ hổng này để xem, thêm, sửa, hoặc xóa dữ liệu trong cơ sở dữ liệu, từ đó chiếm đoạt thông tin hệ thống như hồ sơ người dùng, mật khẩu và tài khoản.

 Hệ thống luôn validate mọi tham số đầu vào trước khi request để phòng các lỗi bảo mật của Request Injection nói chung và SQL Injection nói riêng

 Như ở dưới đây là validate cho thông tin email cho chức năng tìm lại emali người dùng , với 3 tiêu chí được validate đó là

“Not Null” , “Phải có định dạng email ” và “Phải tồn tại email này trong hệ thống ”

Eloquent ORM và Query Builder của Laravel sử dụng tham số PDO ràng buộc để chống SQL Injection, yêu cầu Eloquent ORM phải thông qua model để ánh xạ dữ liệu Tham số ràng buộc giúp ngăn chặn việc truy cập dữ liệu thông qua các câu lệnh đầu vào không hợp lệ, đồng thời mã hóa dữ liệu nhạy cảm để bảo vệ thông tin người dùng.

Nguy cơ từ việc hệ thống bị tấn công là rất lớn, khi kẻ tấn công có thể truy cập vào cơ sở dữ liệu và lấy cắp thông tin nhạy cảm Nếu dữ liệu không được mã hóa hoặc mã hóa không an toàn, các thông tin quan trọng như tài khoản, mật khẩu, thẻ ngân hàng và thông tin tài chính sẽ bị lộ, gây ra hậu quả nghiêm trọng cho người dùng.

Để bảo vệ dữ liệu nhạy cảm trong cơ sở dữ liệu (CSDL), cần mã hóa chúng bằng các hàm mã hóa một chiều có thêm salt Salt phải đảm bảo tính ngẫu nhiên và được sinh riêng cho từng người dùng, sau đó lưu trữ trong CSDL Đồng thời, việc kiểm soát quyền truy cập ứng dụng cũng rất quan trọng để bảo vệ thông tin.

TRIỂN KHAI THỰC NGHIỆM

GIAO DIỆN HỆ THỐNG

Hình 6: Giao diện đăng nhập

 Địa chỉ Email: Ô nhập văn bản cho người dùng nhập địa chỉ email của họ.

 Mật khẩu: Ô nhập mật khẩu để người dùng nhập thông tin bảo mật.

 Nút Đăng Nhập: Nút hoặc nút gói "Đăng Nhập" để xác nhận thông tin và truy cập vào hệ thống.

 Liên kết Quên Mật khẩu: Liên kết dẫn đến trang khôi phục mật khẩu cho những người dùng quên mật khẩu của mình.

 Liên kết Đăng ký: liên kết dẫn đến trang Đăng ký trong trường hợp người đó chưa có tài khoản.

Hình 7: Giao diện đăng ký

 Tên người dùng: Ô nhập văn bản cho người dùng nhập tên đăng nhập mong muốn.

 Số điện thoại: Ô nhập văn bản cho người dùng nhập số điện thoại của họ.

 Địa chỉ Email: Ô nhập văn bản cho người dùng nhập địa chỉ email của họ.

 Mật khẩu: Ô nhập mật khẩu để người dùng tạo mật khẩu đăng nhập.

 Xác nhận Mật khẩu: Ô nhập mật khẩu lần nữa để đảm bảo việc nhập mật khẩu chính xác.

 Nút Đăng Ký: Nút hoặc nút gói "Đăng Ký" để tạo tài khoản mới.

 Liên kết Đăng Nhập: Liên kết dẫn đến trang đăng nhập cho những người dùng đã có tài khoản.

Giao diện trang chủ của ứng dụng là nơi người dùng có thể dễ dàng đặt hàng theo sở thích cá nhân Trang chủ được thiết kế với nhiều khối thông tin riêng biệt, cung cấp các thông tin cơ bản về các món ăn, giúp người dùng nhanh chóng lựa chọn món ăn phù hợp.

Khi người dùng nhấn vào món ăn ưng ý, giao diện chi tiết sản phẩm sẽ hiện ra để tham khảo Ở dưới cùng của giao diện, thông tin giá sản phẩm và nút thêm vào giỏ hàng sẽ xuất hiện, giúp người dùng dễ dàng chuẩn bị cho việc thanh toán.

Hình 10: Giao diện giỏ hàng

Giao diện giỏ hàng được thiết kế đơn giản và dễ sử dụng, hiển thị thông tin cơ bản về giá và số lượng từng món ăn đã được thêm vào Tổng số tiền cần thanh toán cho các món ăn sẽ được hiển thị ở dưới cùng, cùng với nút "mua ngay" để hoàn tất đơn hàng Ngoài ra, giao diện cũng bao gồm thông tin địa chỉ của người đặt hàng, với bản đồ để kiểm tra vị trí cụ thể và các thông tin cơ bản khác mà người dùng có thể tự nhập và lưu lại để thuận tiện cho quá trình giao nhận hàng.

Giao diện trang cá nhân là nơi lưu trữ toàn bộ thông tin của người dùng, bao gồm tên, số điện thoại và địa chỉ mà người dùng đã cung cấp cho ứng dụng.

Hình 11: Giao diện trang địa chỉ

Hình 12: Giao diện trang cá nhân

Giao diện trang đặt hàng cho phép người dùng nhập thông tin chi tiết về đơn hàng, bao gồm địa chỉ giao hàng, tên người đặt và phương thức thanh toán Sau khi kiểm tra và xác nhận thông tin, người dùng có thể hoàn tất quá trình đặt hàng một cách dễ dàng.

Hình 13: Giao diện trang thông tin đặt hàng

- Giao diện thông báo đặt hàng thành công: Giao diện thông báo việc đặt hàng đã thành công

Hình 14: Thông báo đặt hàng thành công

- Giao diện thông tin đơn hàng: Hiển thị tiến độ của đơn hàng

- Giao diện đánh giá sản phẩm: - Giao diện cảm ơn:

Hình 17: Hoàn thành Hình 16: Đang giao

Ngày đăng: 13/11/2024, 21:10

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w