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

Luận văn tốt nghiệp Đại học ngành tin học Ứng dụng Đề tài xây dựng Ứng dụng quản lý và Đặt Đồ uống cho quán café với nodejs web apis và react native

180 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 quản lý và đặt đồ uống cho quán café với Nodejs web apis và React native
Tác giả Nguyễn Hữu Tấn
Người hướng dẫn ThS. Nguyễn Đức Khoa
Trường học Trường Đại học Cần Thơ, Trường Công nghệ thông tin & Truyền thông
Chuyên ngành Tin học Ứng dụng
Thể loại Luận văn tốt nghiệp
Năm xuất bản 2023
Thành phố Cần Thơ
Định dạng
Số trang 180
Dung lượng 5,47 MB

Cấu trúc

  • 1. Đặt vấn đề (24)
  • 2. Lịch sử giải quyết quấn đề (24)
  • 3. Mục tiêu đề tài (26)
  • 4. Đối tượng và phạm vi nghiên cứu (26)
  • 5. Nội dung nghiên cứu (27)
  • 6. Những đóng góp chính của đề tài (27)
  • 7. Bố cục quyển luận văn (28)
  • CHƯƠNG 1. CƠ SỞ LÝ THUYẾT (29)
    • 1. NodeJS (29)
    • 2. JSON (30)
    • 3. MySQL Workbench (31)
    • 4. React Native (32)
    • 5. Websocket (33)
  • CHƯƠNG 2. MÔ TẢ BÀI TOÁN (35)
    • 1. Giới thiệu (35)
    • 2. Đặc điểm người sử dụng (36)
    • 3. Các ràng buộc thực thi và thiết kế (37)
    • 4. Các giả định và phụ thuộc (37)
    • 5. Các yêu cầu giao tiếp bên ngoài (37)
    • 6. Sơ đồ phân rã chức năng (38)
    • 7. Sơ đồ usecase (39)
    • 8. Mô tả chức năng chính (43)
    • 9. Các yêu cầu phi chức năng (68)
  • CHƯƠNG 3. THIẾT KẾ VÀ CÀI ĐẶT GIẢI PHÁP (69)
    • 1. Tổng quan kiến trúc (69)
    • 2. Mô tả sự phân rã (70)
    • 3. Thiết kế cơ sở dữ liệu (70)
    • 4. Thiết kế theo chức năng (87)
  • CHƯƠNG 4. KIỂM THỬ VÀ ĐÁNH GIÁ (153)
    • 2. Chi tiết kế hoạch kiểm thử (153)
    • 3. Quản lý kiểm thử (154)
    • 4. Các trường hợp kiểm thử (158)
  • KẾT LUẬN (167)
    • 1. Kết quả đạt được (167)
    • 2. Hạn chế (167)
    • 3. Hướng phát triển (167)
  • TÀI LIỆU THAM KHẢO (169)
  • PHỤ LỤC (170)

Nội dung

Các thành phần giao diện chức năng thêm nguyên liệu cho đơn nhập .... Các thành phần giao diện chức năng tạo đơn đặt trên ứng dụng di động ..... Các thành phần giao diện chức năng thêm m

Lịch sử giải quyết quấn đề

- Đặc điểm: là phần mềm kinh doanh bán hàng cho nhiều ngành nghề nhưng cũng sở hữu một số tính năng cần thiết cho các quán cafe Ứng dụng hỗ trợ hiệu quả : order món dễ dàng, màn hình real-time tăng tốc độ phục vụ, theo dõi mọi hoạt động kinh doanh từ đơn hàng, doanh thu,…

- Nhược điểm: phần mềm KiotViet hoạt động trên trình duyệt web nên kết nối mạng không ổn định có thể khiến việc truy cập vào dữ liệu khó khăn hơn, ảnh hưởng đến hoạt động vận hành của nhà hàng

- Đặc điểm: là phần mềm ngoài được cài đặt trên máy POS hay laptop còn có dạng ứng dụng dành cho điện thoại và máy tính bảng Sapo FnB sở hữu một số giải pháp quản lý cơ bản:

 Thực hiện order nhanh chóng, chuyển thông tin order xuống bếp kiệp thời, thanh toán chính xác và đa dạng

 Cung cấp hệ thống báo cáo chi tiết

 Kiểm soát kho nguyên liệu hiệu quả, tránh thất thoát và gian lận

 Quản lý nhân viên chặt chẽ bằng cách phân quyền sử dụng và theo dõi lịch sử bán hàng,…

- Nhược điểm: ứng dụng chưa mở rộng thêm những giải pháp chuyên biệt cho các quán café Sapo FnB sử dụng nền tảng Android, cũng dã có phiên bản dành cho Windows mới cho ra mắt nhưng chưa tối ưu hoàn toàn.

Mục tiêu đề tài

Ứng dụng quản lí và đặt đồ uống được tạo ra để đáp ứng nhiều nhu cầu cho cả người chủ và nhân viên bằng cách học hỏi các chức năng của những website đã có trên thị trường như: tạo order, thanh toán bằng mã QR, quản lý kho, thống kê, chấm công,….nhưng với các thao tác và cách thực hiện dễ dàng và gần gũi hơn cho chủ và nhân viên thông qua giao diện thân thiện, dễ hiểu và dễ sử dụng Hơn thế nữa, ứng dụng còn tích hợp Ví nhân viên hỗ trợ tra cứu số lương mà nhân viên đã tích lũy được, cũng như là lịch sử rút tiền lương có in hóa đơn cho nhân viên nhằm tránh tình trạng sai sót, gian lận khi tính lương thủ công

Ngoài ra, ứng dụng có thể kiểm tra các lượt truy cập trái phép vào các chức năng không nằm trong quyền hạn của nhân viên và lưu vào cơ sở dữ liệu Qua đó người chủ có thể kiểm tra lại các lịch sử truy cập đó và đưa ra các hình phạt phù hợp với nhân viên.

Nội dung nghiên cứu

Nghiên cứu về nhu cầu quản lý một quán hoặc chuỗi quán Café của các người chủ ít thời gian dành cho quán hoặc muốn quản lý quán hiệu quả hơn Tìm hiểu quy trình và các chức năng hiện có của một số trang web đang hoạt động trên thị trường

Phân tích, thiết kế và tạo cơ sở dữ diệu trong MySQL Workbench Nghiên cứu và lựa chọn một số công nghệ hiện đại được sử dụng nhiều ngày nay, tìm hiểu một số công cụ cần thiết để hỗ trợ trong suốt quá trình phát triển ứng dụng, tìm hiểu về cách thức hoạt động của mô hình client – server, kiến trúc Restful Webservice và kiến trúc MVC

Nghiên cứu sử dụng websocket để thực hiện chức năng thời gian thực như thông báo tin nhắn

Sử dụng React Native nhằm phát triển ứng dụng nhanh chóng hơn, duy trì ít code hơn và ít bugs hơn mà mang lại trải nghiệm người dùng tốt

Lập trình và phát triển từng chức năng của ứng dụng, tìm hiểu về cách viết các testcase để tiến hành kiểm thử các chức năng nhằm phát hiện ra những lỗi, sai sót không mong đợi và khắc phục chúng.

Những đóng góp chính của đề tài

 Nâng cao kiến thức về phát triển hệ thống và phát tiển website và app di động

 Nắm bắt được kỹ năng thiết kế giao diện ứng dụng thân thiện với người sử dụng, tương thích với nhiều thiết bị

 Cải thiện khả năng tự học và tìm kiếm thông tin

 Cải thiện khả năng tự giải quyết vấn đề

 Hoàn thành đồ án luận văn.

Bố cục quyển luận văn

Tài liệu được chia thành 3 phần chính: phần giới thiệu, phần nội dung và phần kết luận Phần giới thiệu nêu lên vấn đề cần giải quyết và phạm vi của vấn đề Qua đó lên kế hoạch và phương pháp thực hiện Phần giới thiệu bao gồm những nội dung chính: đặt vấn đề, tóm tắt lịch sử giải quyết vấn đề, mục tiêu của đề tài, đối tượng, phạm vi và nội dung nghiên cứu, những đóng góp chính của đề tài, thiết kế và cài đặt giải pháp, kiểm thử và đánh giá Mô tả bài toán: mô tả chi tiết bài toán, phân tích đánh giá và đưa ra giải pháp tiếp cận, giải quyết vấn đề từ đó lựa chọn giải pháp tối ưu nhất Thiết kế và cài dặt giải pháp: mô tả tổng quan về hệ thống Kiểm thử và đánh giá: mô tả mục tiêu, kế hoạch, các trường hợp kiểm thử và kết quả kiểm thử, từ đó đưa ra đánh giá đối với các chức năng của hệ thống Phần kết luận: trình bày kết quả đạt được cũng như hướng phát triển chung của đề tài.

CƠ SỞ LÝ THUYẾT

NodeJS

NodeJS là một môi trường chạy mã nguồn mở và đa nền tảng, được sử dụng phổ biến trên các ứng dụng web NodeJS cho phép các nhà phát triển tạo ra các ứng dụng web mạnh mẽ và linh hoạt, bao gồm các tính năng như xử lý đa luồng, đồng bộ hóa và xử lý dữ liệu trên máy chủ Ngoài ra, NodeJS được xây dựng trên nền tảng JavaScript, cho phép các nhà phát triển sử dụng các ngôn ngữ lập trình phổ biến như HTML, CSS và JavaScript để phát triển các ứng dụng web

Do được phát triển, xây dựng trên JavaScript runtime của Chrome, NodeJS giúp các lập trình viên dễ dàng phát triển các ứng dụng web phức tạp hơn Với NodeJS, các lập trình viên có thể viết mã Back End bằng JavaScript, một ngôn ngữ phía client truyền thống, giúp tối ưu hóa thời gian phát triển ứng dụng

Với NodeJS, các nhà phát triển có thể sử dụng các thư viện mã nguồn mở, như Express, để phát triển các ứng dụng web đa nền tảng, hỗ trợ cho nhiều thao tác tương tác với người dùng

1.2 Ưu điểm Đặc điểm nổi bật của NodeJS:

- Cho phép viết JavaScript trên máy chủ và máy khách giúp tiết kiệm thời gian và công sức cho các nhà phát triển

- Xây dựng dựa trên công cụ V8 của Google Chrome: được hỗ trợ một số ứng dụng trong trình duyệt của Google như Gmail Do đó, Google đầu tư rất nhiều để đảm bảo nó mang lại hiệu suất cao, ứng dụng sẽ được thực thi nhanh chóng và ổn định

- Thư viện NPM cung cấp nhiều gói mã nguồn mở

- Thực thi bất đồng bộ: NodeJS sử dụng mô hình thực thi bất đồng bộ, cho phép xử lý đa luồng một cách hiệu quả hơn, giúp giảm thiểu thời gian chờ đợi và nâng cao hiệu suất ứng dụng

- Dễ dàng mở rộng: NodeJS có thể mở rộng dễ dàng với việc sử dụng các thư viện và framework như ExpressJS hay MeteorJS

- Xử lý dữ liệu với JSON: NodeJS hỗ trợ xử lý dữ liệu với định dạng JSON, đó là một cách tiêu chuẩn để truyền tải dữ liệu giữa các ứng dụng

- Phát triển ứng dụng real-time: NodeJS hỗ trợ phát triển các ứng dụng real- time, cho phép cập nhật dữ liệu một cách nhanh chóng và liên tục.

JSON

JSON là viết tắt của JavaScript Object Notation, là một kiểu định dạng dữ liệu tuân theo một quy luật nhất định mà hầu hết các ngôn ngữ lập trình hiện nay đều có thể đọc được JSON là một tiêu chuẩn mở để trao đổi dữ liệu trên web Định dạng JSON sử dụng các cặp key – value để dữ liệu sử dụng Nó hổ trợ các cấu trúc dữ liệu như đối tượng và mảng

Hình ảnh 1-1 Ví dụ JSON

- Mỗi trường thông tin trong json là 1 cặp key – value

- Object trong Json được thể hiện bằng dấu ngoặc nhọn {} Khái niệm Object trong Json cũng khá tương đồng với Object trong Javascript Tuy nhiên, Object trong Json vẫn có những giới hạn như:

 Key: phải luôn nằm trong dấu ngoặc kép, không được phép là biến số

 Value: Chỉ cho phép các kiểu dữ liệu cơ bản: numbers, String, Booleans, arrays, objects, null Không cho phép function, date, undefined

 Không cho phép dấy phẩy cuối cùng như Object trong Javascript.

MySQL Workbench

MySQL Workbench là một công cụ truy cập cơ sở dữ liệu được mô hình hóa và thiết kế trực quan sử dụng cho cơ sở dữ liệu quan hệ MySQL server MySQL Workbench giúp tạo ra các mô hình dữ liệu vật lý mới và hỗ trợ sửa đổi các cơ sở dữ liệu MySQL hiện có với các kỹ thuật đảo ngược / chuyển tiếp, các chức năng quản lý tùy chọn

- Sử dụng linh hoạt và dễ dàng

- Hệ quản trị đạt tiêu chuẩn

- Độ bảo mật an toàn

- Giới hạn: Theo thiết kế, MySQL không có ý định làm tất cả và nó đi kèm với các hạn chế về chức năng mà một vài ứng dụng có thể cần

- Độ tin cậy: Cách các chức năng cụ thể được xử lý với MySQL (ví dụ tài liệu tham khảo, các giao dịch, kiểm toán,…) làm cho nó kém tin cậy hơn so với một số hệ quản trị cơ sở dữ liệu quan hệ khác

- Dung lượng hạn chế: Nếu số bản ghi của bạn lớn dần lên thì việc truy xuất dữ liệu của bạn là khá khó khăn, khi đó chúng ta sẽ phải áp dụng nhiều biện pháp để tăng tốc độ truy xuất dữ liệu như là chia tải database này ra nhiều server, hoặc tạo cache MySQL.

React Native

React Native là một framework được tạo bởi Facebook, cho phép các lập trình viên sử dụng JavaScript để làm mobile apps trên cả Android và iOS với có trải nghiệm và hiệu năng như native React Native vượt trội ở chỗ chỉ cần viết một lần là có thể build ứng dụng cho cả iOS lẫn Android

Việc này giúp chúng ta có thể tiết kiệm được thời gian, công sức, tiền bạc Giúp tốc độ ra sản phẩm cũng như cập nhật ứng dụng nhanh chóng Có thể nói React Native là một cross-platform để xây dựng một ứng dụng di động hiệu quả

- Thời gian học ngắn hơn: khi viết mobile app trên cả 2 hệ sinh thái iOS và Android thì ít nhất chúng ta cần phải học Swift hoặc Objective C và Cocoa Pods dành cho iOS Ngược lại nếu muốn lập trình app Android thì cần học Java hoặc Kotlin và Android SDK Nhưng khi chọn lập trình trên React Native, phần lớn thời gian bạn chỉ cần học một bộ công cụ Có rất nhiều thức để bạn làm quen như: JavaScript, Node, React Native…nhưng chỉ có một bộ công cụ duy nhất để học

- Khả năng tái sử dụng code : tiết kiệm thời gian và chi phí hơn Tuy nhiên, sẽ luôn có vài UI code thông dụng có thể được chia sẻ chung với nhau cùng tất cả logic Tính năng “có thể chia sẻ code” có rất nhiều lợi điểm như: tận dụng nguồn nhân lực tốt hơn, duy trì ít code hơn, ít bugs hơn, các tính năng trong cả 2 platforms cũng tương tự nhau…

- Học 1 lần, viết ở mọi nơi: Khi team của Facebook tạo React Native, mục tiêu của họ là giúp các dev học 1 lần nhưng sử dụng được mọi platform Bởi vì tất cả code của Android và iOS sử dụng cùng bộ công cụ, nên ý tưởng có một team dev làm app cho cả hai platform là thực hiện được – một điều ít khi xảy ra khi có rất ít dev lập trình cả hai platform iOS và Android

- Cộng đồng lớn: React Native đang trở lên rất phổ biến, nhiều developer đang đóng góp để làm React Native tốt hơn Đặc biệt là nó được tạo ra và hỗ trợ bởi tập đoàn Facebook Cộng đồng rất lớn và đang phát triển mạnh mẽ Nhiều vấn đề đã và đang được giải quyết và bạn sẽ không cần phải tốn thời gian để nghiên cứu lại trong suốt quá trình học và làm việc với React Native

- Hot Reloading: Với React Native, phần lớn thời gian, bạn không cần phải tổng hợp lại app mỗi lần có thay đổi Bạn chỉ cần làm mới app trong simulator, emulator hoặc thiết bị Thậm chí còn có một tính năng là Live Reload để tự động refresh app mỗi lần phát hiện 1 thay đổi trong code

- Nguồn mở: React Native vẫn còn là công nghệ đang được sử dụng nhiều Tuy vẫn còn nhiều lỗi, nhưng nhìn chung, các lập trình viên vẫn có thể sử dụng React Native vào giai đoạn production ở hầu hết các mobile app.

Websocket

Websocket là giao thức hỗ trợ giao tiếp hai chiều giữa client và server để tạo một kết nối trao đổi dữ liệu Giao thức này không sử dụng HTTP mà thực hiện nó qua TCP Mặc dù được thiết kế để chuyên sử dụng cho các ứng dụng web, lập trình viên vẫn có thể đưa chúng vào bất kì loại ứng dụng nào

WebSocket cung cấp giao thức giao tiếp hai chiều mạnh mẽ Nó có độ trễ thấp và dễ xử lý lỗi Websocket thường được sử dụng cho những trường hợp yêu cầu real time như chat, hiển thị biểu đồ hay thông báo,…

Hình ảnh 2-2 Cách thức hoạt động của websocket

Bảng 1-1 Bảng sự kiện websocket

SỰ KIỆN EVENT HANDLER MÔ TẢ open onopen Khi một WebSocket chuyển sang trạng thái mở, “onopen” sẽ được gọi message onmessage Khi WebSocket nhận dữ liệu từ Server error onerror Có bất kỳ lỗi nào trong giao tiếp close onclose

Kết nối được đóng Những sự kiện được truyền cho “onclose” có ba tham số là

Bảng 2-2 Bảng phương thức websocket

PHƯƠNG THỨC MÔ TẢ send() send(data) gửi dữ liệu tới server Message data là string, ArrayBuffer, blob close() Đóng kết nối đang tồn tại.

MÔ TẢ BÀI TOÁN

Giới thiệu

Đề tài “ Xây dựng ứng dụng quản lý và đặt đồ uống cho quán Café với NodeJS Web APIs và React Native” được xây dựng nhằm đáp ứng nhu cầu quản lý quán Café cho cộng đồng các chủ cửa hàng Café với mong muốn đạt hiệu quả cao hơn trong công việc quản lý điều hành quán thông qua các chức năng thống kê theo dõi hoạt động của quán Còn đối với nhân viên quán, được sự hỗ trợ từ Mobile App giúp cho việc order nước trở nên nhanh chóng và gửi đơn order vào khu vực pha chế và thống kê,… kết hợp chức năng quét mã QR thanh toán cho khách hàng sẽ mang lại sự phục vụ nhanh chóng và chuyên nghiệp

Khi người chủ bắt đầu một ngày làm việc mới với Ứng dụng quản lý và đặt đồ uống thì cần phải tiến hành tạo một bản thống kê cho ngày đó để các hoạt động kinh doanh của quán trong ngày được lưu trữ vào Người chủ với vai trò Admin thì có toàn quyền với ứng quản lý quán Người chủ có thể giám sát các đơn mà nhân viên đã order, số lượng bàn đã có khách, nguyên liệu trong kho, gửi tin nhắn thông báo cho toàn nhân viên,… Bên cạnh đó, đôi khi sẽ có các truy cấp trái phép sai phân quyền, khi đó hệ thống sẽ lưu lại thông tin truy cập và đợi người chủ xử lý Đối với nhân viên có vài trò pha chế Chức năng của hệ thống là cho phép họ xem các đơn vừa được order và tiến hành pha chế Khi pha chế xong, nhân viên sẽ xác nhận Đơn đã được pha chế để nhân viên khác mang nước ra cho khách Bên cạnh đó, nhân viên pha chế có thể quản lí các nguyên liệu, tạo thêm nguyên liệu, sửa và xóa nguyên liệu trong quán Đối với nhân viên order thì chỉ có chức năng chính là đặt thức uống cho khách bằng Mobile App và đợi xác nhận pha chế xong từ nhân viên pha chế để mang nước cho khách

Về phần chức năng chung của các nhân viên là các chức năng liên quan đến đăng kí lịch làm việc, tương tác với nhau qua kênh chat realtime, thực hiện chấm công, ghi lại phí phát sinh và có Ví nhân viên - nơi lưu thông tin thu nhập và lịch sử rút tiền

Việc thanh toán đối với khách hàng được thực hiệnt theo hai phương thức : trả tiền mặt hoặc quét mã thanh toán Momo hoặc Vietcombank Khi chọn phương thức thanh toán bằng cách quét mã thì khi quét mã xong thiết bị của khách hàng sẽ truy cập vào ứng dụng tương ứng với mã QR và cho phép chủ nhân điền thông tin giao dịch Khi kết thúc giao dịch thì nhân viên xin chụp lại giao dịch để lưu vào thống kê.

Đặc điểm người sử dụng

Bảng 3-1 Bảng đặc điểm người sử dụng

Nhóm người sử dụng Đặc trưng Chức năng Vai trò Mức độ quan trọng

- Là người đã đăng nhập

- Chịu trách nhiệm quản lí hệ thống và có toàn quyền truy cập các tài nguyên của hệ thống

- Quản lí truy cập trái phép

- Quản lí đơn rút nhân viên

- Quản lí lịch làm việc

- Là người đã đăng nhập

- Người chiệu trách nhiệm pha chế đồ uống và xác nhận pha chế xong cho đơn

- Quản lí đơn pha chế

- Nhận thông báo và phản hồi

- Là người đã đăng nhập

- Chịu trách nhiệm tạo đơn đặt, gọi món và thanh toán cho khách

- Nhận thông báo và phản hồi

Các ràng buộc thực thi và thiết kế

3.1 Các ràng buộc thực thi:

- Thời gian xử lí các thao tác chức năng người dùng nhanh chóng

- Mạng Internet ổn định trong thời gian hoạt động của ứng dụng

- Đảm bảo số lượng lỗi nằm trong vùng có thể chấp nhận được

3.2 Các ràng buộc thiết kế:

- Thiết kế website theo mô hình MVC

- Thiết kế API cho website và mobile app

- Sử dụng NodeJS để xây dựng server

- Sử dụng React Native để xây dựng mobile app

- Sử dụng MySQL Workbench để làm database

- Giao diện thân thiện, dễ dàng sử dụng đối với người chủ và nhân viên.

Các giả định và phụ thuộc

- Phần cứng có thể bị hỏng khi đang hoạt dộng

- Đường truyền internet bị mất do mất điện hoặc chậm do bên cáp quang

- Máy chủ có thể bị nhiễm virus làm hỏng dữ liệu

- Máy chủ bị lỗi dừng hoạt động do có lỗi hệ thống

- Hoàn thành và bàn giao sản phẩm không đúng thời hạn.

Các yêu cầu giao tiếp bên ngoài

5.1 Giao diện người sử dụng

- Thiết kế giao diện người dùng thân thiện và tương thích với các thiết bị khác nhau

- Màu sắc chủ đạo là đỏ, đen và trắng, kết hợp hài hòa tạo sự tương quan, dễ nhìn cho người dùng

- Bố cục của ứng dụng được thiết kế đơn giản, rõ ràng

- Độ rộng màn hình từ 360px trở lên

- Tốc độ CPU lớn hơn 2 GHz

- Dung lượng RAM tối thiểu 1 GB

- Hệ điều hành Windows 7, Windows 10, Windows 11, Linux

- Sử dụng browser hiện đại.

Sơ đồ phân rã chức năng

Bảng 4-2 Sơ đồ phân rã chức năng Ứng dụng quản lý quán Cafe

Người quản trị Đăng xuất

Quản lý truy cập trái phép

Quản lý đơn rút nhân viên

Quản lý lịch làm việc

Nhân viên pha chế Đăng xuất

Quản lý đơn pha chế Đăng ký lịch

Nhận thông báo và phản hồi

Nhân viên order Đăng xuất

Thanh toán cho khách Đăng ký lịch

Nhận thông báo và phản hồi

Sơ đồ usecase

7.1 Sơ đồ usecase của admin

Hình ảnh 3-1 Sơ đồ usecase của admin

7.2 Sơ đồ usecase của bartender

Hình ảnh 4-2 Sơ đồ usecase của bartender

7.3 Sơ đồ usecase của waiter

Hình ảnh 5-3 Sơ đồ usecase của waiter trên website

7.3.2 Trên thiết bị di động

Hình ảnh 6-4 Sơ đồ usecase của waiter trên ứng dụng di động

Mô tả chức năng chính

Bảng 5-3 Mô tả usecae chức năng đăng nhập

Use Case: Chức năng đăng nhập ID: UC01

Actor chính: Người dùng chưa đăng nhập

Mức độ cần thiết: Bắt buộc

Phân loại: Trung bình Điều kiện tiên quyết: Người dùng phải truy cập trang ứng dụng

Mô tả: Cho phép người dùng đăng nhập vào hệ thống

Trigger: Có yêu cầu thực hiện các chức năng bên trong hệ thống

+ Association (kết hợp): Admin, bartender, waiter

1 Người dùng truy cập đường dẫn đăng nhập

2 Hệ thống hiển thị trang đăng nhập

3 Người dùng nhập username và mật khẩu vào form đăng nhập

4 Người dùng chọn nút “Đăng nhập”

5 Kiểm tra thông tin đăng nhập

Sub 1: Kiểm tra thông tin đăng nhập

6 Website chuyển hướng đến phân vùng tùy theo vai trò của người dùng

Các luồng sự kiện con:

Sub 1: Kiểm tra thông tin đăng nhập

1 Hệ thống kiểm tra username và mật khẩu là hợp lệ

2 Hệ thống gửi dữ liệu từ view cho controller xử lý

3 Controller nhận dữ liệu yêu cầu và kiểm tra tên người dùng và mật khẩu trong CSDL

4 Controller trả về dữ liệu của người dùng cho website

Luồng luân phiên/đặc biệt:

- Sub 1.1: Hệ thống kiểm tra thấy người dùng nhập username hoặc mật khẩu không hợp lệ, website đưa ra thông báo yêu cầu nhập lại và quay lại bước 3

Bảng 6-4 Mô tả usecae chức năng quản lý thống kê

Use Case: Quản lý thống kê ID: UC02

Actor chính: Admin Mức độ cần thiết: Bắt buộc

Phân loại: Phức tạp Điều kiện tiên quyết: Admin đã đăng nhập vào hệ thống

Mô tả: Cho phép admin quản lý thống kê

1 Thêm thống kê: Cho phép admin thêm thống kê trong ngày

2 Xem thông kê theo ngày: Cho phép admin xem thống kê theo ngày được chọn

3 Xem thống kê theo khoảng thời gian: Cho phép admin xem thống kê theo khoảng thời gian được chọn

4 Xem thống kê theo chi nhánh: Cho phép admin xem thống kê theo chi nhánh

5 In thống kê: Cho phép admin in thống kê ra khổ giấy A4

Trigger: Có yêu cầu thực hiện quản lý thống kê

+ Extend (mở rộng): Thêm thống kê, xem thống kê theo ngày, xem thống kê theo khoảng thời gian, xem thống kê theo chi nhánh, in thống kê

1 Admin bấm chọn vào “Thống kê” trên menu

2 Hệ thống gửi yêu cầu từ view lấy danh sách thống kê tới controller

3 Controller trả dữ liệu danh sách thống kê cho website tới view

4 Website hiển thị danh sách thống kê

5 Admin chọn các chức năng

Sub2: Xem thống kê theo ngày

Sub3: Xem thống kê theo khoảng thời gian

Sub4: Xem thống kê theo chi nhánh

Các luồng sự kiện con:

1 Admin nhấn nút tạo thống kê mới

2 Website hiển thị form tạo thống kê

3 Admin nhập tên thống kê

5 Website gửi yêu cầu tạo thống kê từ view đến controller

6 Controller nhận yêu cầu tạo thống kê mới và trả kết quả yêu cầu

7 Website hiển thị thống kê mới được tạo

Sub 2: Xem thống kê theo ngày

1 Admin nhấn nút detail của thống kê cần xem

2 Website gửi yêu cầu xem chi tiết thống kê từ view đến contrller

3 Controller nhận yêu cầu xem chi tiết thống kê và trả về kết quả yêu cầu

4 Website nhận yêu cầu và hiển thị trang thống kê chi tiết theo ngày

Sub 3: Xem thống kê theo khoảng thời gian

1 Admin chọn khoảng thời gian cần khảo sát

3 Website gửi yêu cầu xem thống kê theo khoảng thời gian từ view đến controller

4 Controller nhận yêu cầu xem thống kê theo khoảng thời gian và trả về kết quả yêu cầu

5 Website nhận yêu cầu và hiển thị trang thống kê chi tiết theo khoảng thời gian

Sub4: Xem thống kê theo chi nhánh

1 Admin bấm nút chi tiết của thống kê cần xem

2 Website hiển thị trang chi tiết thống kê

3 Admin chọn chi nhánh ở form liệt kê theo chi nhánh

5 Hệ thống gửi yêu cầu xem thống kê theo chi nhánh từ view đến controller

6 Controller tiếp nhận yêu cầu và trả về kết quả

7 Website hiển thị trang chi tiết thống kê theo chi nhánh

1 Admin nhấn nút chi tiết của thống kê cần in

2 Website chuyển sang trang chi tiết thống kê

3 Admin nhất nút xuất PDF

4 Website tạo ra bản PDF cho trang chi tiết thống kê

Luồng luân phiên/đặc biệt:

- Sub 1.4: Form tạo thống kê sẽ kiểm tra tên thống kê không hợp lệ, thông báo yêu cầu nhập tên thông báo lại và quay lại bước Sub1.3

Bảng 7-5 Mô tả usecae chức năng quản lý lịch

Use Case: Quản lý lịch ID: UC03

Actor chính: Admin Mức độ cần thiết: Bắt buộc

Phân loại: Trung bình Điều kiện tiên quyết: Admin đã đăng nhập vào hệ thống

Mô tả: Cho phép admin quản lý lịch

1 Tạo lịch: Cho phép admin tạo lịch cho tuần mới

2 Tạo chi tiết lịch: Cho phép admin tạo lịch cho từng ngày trong tuần

3 Xóa lịch: Cho phép admin xóa chi tiết lịch

Trigger: Có yêu cầu thực hiện quản lý lịch

+ Extend (mở rộng): Tạo lịch, tạo chi tiết lịch, xóa lịch

1 Admin bấm chọn vào “Lịch” trên menu

2 Hệ thống gửi yêu cầu từ view lấy danh sách thống kê tới controller

3 Controller trả dữ liệu danh sách thống kê cho website tới view

4 Website hiển thị danh sách lịch

5 Admin chọn các chức năng

Sub2: Tạo chi tiết lịch

Các luồng sự kiện con:

1 Admin nhấn nút tạo lịch

2 Website hiển thị form tạo lịch

3 Admin chọn ngày bắt đầu và ngày kết thúc

5 Website gửi yêu cầu tạo thống kê từ view đến controller

6 Controller nhận yêu cầu tạo thống kê mới và trả kết quả yêu cầu

7 Website hiển thị lịch mới được tạo

Sub 2: Tạo chi tiết lịch

1 Admin nhấn nút detail của lịch cần xem

2 Website gửi yêu cầu xem chi tiết lịch từ view đến contrller

3 Controller nhận yêu cầu xem chi tiết lịch và trả về kết quả yêu cầu

4 Admin nhấn nút tạo chi tiết lịch

5 Admin chọn ngày, ca và số giờ

1 Admin nhấn nút detail của lịch cần xem

2 Website gửi yêu cầu xem chi tiết lịch từ view đến controller

3 Controller nhận yêu cầu xem chi tiết lịch và trả về kết quả yêu cầu

4 Admin nhấn nút xóa lịch

Luồng luân phiên/đặc biệt:

- Sub 2.6: Form tạo lịch sẽ kiểm tra ca và giờ không hợp lệ và thông báo nhập lại và quay lạo bước Sub2.5

Bảng 8-6 Mô tả usecase chức năng đăng kí lịch

Use Case: Đăng ký lịch ID: UC04

Actor chính: Người dùng trong hệ thống

Mức độ cần thiết: Bắt buộc

Phân loại: Đơn giản Điều kiện tiên quyết: Người dùng đã đăng nhập vào hệ thống

Mô tả: Cho phép người dùng đăng ký lịch

Trigger: Có yêu cầu thực hiện đăng ký lịch

+ Association (kết hợp): Admin, bartender, waiter

1 Người dùng bấm chọn vào “Lịch” trên menu

2 Hệ thống gửi yêu cầu từ view lấy danh sách lịch tới controller

3 Controller trả dữ liệu danh sách lịch cho website tới view

4 Website hiển thị danh sách lịch

5 Người nhấn nút chi tiết lịch

6 Người dùng nhấn nút đăng ký lịch

Các luồng sự kiện con:

1 Website gửi yêu cầu đăng ký lịch từ view đến controller

2 Controller nhận yêu cầu đăng ký lịch và trả kết quả yêu cầu

3 Website hiển thị chi tiết lịch đã được đăng ký

Luồng luân phiên/đặc biệt:

Bảng 9-7 Mô tả usecase chức năng chấm công

Use Case: Chức năng chấm công ID: UC05

Actor chính: Người dùng chưa đã nhập Mức độ cần thiết: Bắt buộc

Phân loại: Trung bình Điều kiện tiên quyết: Người dùng đã đăng ký lịch và đã đăng nhập

Mô tả: Cho phép người dùng chấm công cho buổi làm

Trigger: Có yêu cầu thực hiện chức năng chấm công

+ Association (kết hợp): Admin, bartender, waiter

1 Người dùng nhấn chọn vào mục “Thêm” trên menu

2 Người dùng chọn chức năng chấm công

Sub1: Website hiển thị form chấm công

3 Người dùng thực hiện nhập ghi chú hoặc không

4 Người dùng nhấn nút chấm công

Sub2: Thực hiện chấm công

Các luồng sự kiện con:

Sub 1: Website hiển thị form chấm công

1 Hệ thống nhận yêu cầu mở form chấm công từ view

2 Hệ thống kiểm tra các session và cookie lưu thông tin nhân viên đã đăng nhập

3 Website hiển thị form chấm công với cái trường thông tin đã được truyền dữ liệu

Sub 2: Thực hiện chấm công

1 Hệ thống gửi dữ liệu có trong form chấm công từ view đến controller

2 Controller nhận dữ liệu yêu cầu và thực hiện thêm dữ liệu chấm công vào CSDL

Luồng luân phiên/đặc biệt:

- Sub 1.3: Hệ thống kiểm tra thấy người dùng không có lịch làm, tiến hành vô hiệu hóa chức năng chấm công và tiến đến bước 5

Bảng 10-8 Mô tả usecase chức năng quản lý bàn

Use Case: Quản lý bàn ID: UC06

Actor chính: Waiter Mức độ cần thiết: Bắt buộc

Phân loại: Trung bình Điều kiện tiên quyết: Waiter đã đăng nhập vào hệ thống

Mô tả: Cho phép waiter quản lý bàn

1 Tạo đơn đặt: cho phép waiter tạo đơn đặt cho bàn trống

2 Thanh toán đơn: cho phép waiter thanh toán đơn

Trigger: Có yêu cầu thực hiện quản lý bàn

+ Association (kết hợp): Admin, waiter

+ Extend (mở rộng): Tạo đơn đặt, thanh toán đơn

1 Waiter bấm chọn vào “Bàn” trên menu

2 Hệ thống gửi yêu cầu từ view lấy danh sách bàn tới controller

3 Controller trả dữ liệu danh sách bàn cho website tới view

4 Website hiển thị danh sách bàn

Các luồng sự kiện con:

1 Website hiển thị form tạo đơn khi bàn trống

2 Waiter nhập số người cho đơn

3 Waiter nhấn nút tạo đơn

4 Hệ thống nhận yêu cầu tạo đơn từ view gửi đến controller

5 Controller nhận yêu cầu và thực hiện tạo đơn

6 Website hiển thị danh sách đơn của bàn

7 Waiter chọn xem chi tiết đơn vừa tạo

8 Waiter nhấn nút thêm đồ uống

9 Waiter chọn thức uống, giá và số lượng

11 Waiter nhấn nút xác nhận đơn

1 Website hiển thị danh sách đơn đặt của bàn đã có khách

2 Waiter nhấn nút pay cho đơn cần thanh toán

3 Website hiển thị form thanh toán

4 Waiter nhấn nút xác nhận

Luồng luân phiên/đặc biệt:

- Sub 1.3: Form tạo đơn sẽ kiểm tra số người không hợp lệ và thông báo nhập lại và quay lại bước Sub1.2

- Sub1.10: Form chọn thức uống sẽ kiểm tra giá và số lượng không hợp lệ, thông báo nhập lại và quay lại bước Sub1.9

- Sub2.3: Khách cũng có thể chọn cách thanh toán bằng quét mã QR Mono hoặc

QR Vietcombank bằng cách nhấn vào nút chuyển khoản

8.7 Chức năng duyệt đơn pha chế

Bảng 11-9 Mô tả usecase chức năng duyệt đơn pha chế

Use Case: Chức năng duyệt đơn pha chế

Actor chính: Bartender Mức độ cần thiết: Bắt buộc

Phân loại: Đơn giản Điều kiện tiên quyết: Người dùng đã đăng nhập vào website

Mô tả: Cho phép bartender duyệt các đơn pha chế

Trigger: Có yêu cầu thực hiện các chức năng bên trong hệ thống

+ Association (kết hợp): Admin, bartender

1 Bartender chọn chức năng “Pha chế” trên menu

2 Hệ thống hiển thị trang danh sách chờ pha chế

3 Bartender nhấn nút xem chi tiết đơn pha chế

4 Hệ thống hiển thị chi tiết đơn pha chế

5 Bartender xác nhận pha chế xong khi đã hoàn tất pha chế

Sub1: Bartender xác nhận pha chế xong

Các luồng sự kiện con:

Sub1: Bartender xác nhận pha chế xong

1 Hệ thống nhận yêu cầu duyệt đơn pha chế từ view gửi đến controller

2 Controller nhận dữ liệu yêu cầu và thực hiện duyệt đơn

Luồng luân phiên/đặc biệt:

Bảng 12-10 Mô tả usecase chức năng quản lý đơn nhập

Use Case: Quản lý đơn nhập ID: UC08

Actor chính: Admin Mức độ cần thiết: Bắt buộc

Phân loại: Khó Điều kiện tiên quyết: Admin đã đăng nhập vào hệ thống

Mô tả: Cho phép admin quản lý đơn nhập

1 Tạo đơn nhập: cho phép admin tạo đơn nhập nguyên liệu

2 Thêm nguyên liệu cho đơn: cho phép admin thêm nguyên liệu vào đơn nhập

Trigger: Có yêu cầu thực hiện quản lý đơn nhập

+ Extend (mở rộng): Tạo đơn nhập, thêm nguyên liệu

1 Admin bấm chọn vào “Đơn nhập” trên menu

2 Hệ thống gửi yêu cầu từ view lấy danh sách đơn nhập tới controller

3 Controller trả dữ liệu danh sách đơn nhập tới view

4 Website hiển thị danh sách đơn nhập

Sub2: Thêm nguyên liệu cho đơn

Các luồng sự kiện con:

1 Admin nhấn vào nút tạo đơn nhập

2 Website hiển thị form tạo đơn nhập

3 Admin nhập tên đơn nhập

5 Hệ thống nhận yêu cầu tạo đơn nhập từ view gửi đến controller

6 Controller nhận yêu cầu và thực hiện tạo đơn nhập

7 Website hiển thị danh sách đơn nhập

Sub2: Thêm nguyên liệu cho đơn

1 Admin nhấn vào nút xem chi tiết đơn nhập

2 Website chuyển trang chi tiết đơn nhập

3 Admin nhấn nút thêm nguyên liệu

4 Website hiển thị form chọn nguyên liệu nhập

9 Hệ thống nhận được yêu cầu thêm nguyên liệu cho đơn nhập từ view và gửi qua controller

10 Controller tiếp nhận dữ liệu và thực hiện thêm nguyên liệu cho đơn nhập

11 Admin nhấn xác nhận đơn hàng khi đã nhận hàng thành công

Luồng luân phiên/đặc biệt:

- Sub1.4: Form tạo đơn sẽ kiểm tra tên đơn nhập không hợp lệ, thông báo nhập lại và quay lại bước Sub1.3

- Sub2.8: Form thêm nguyên liệu sẽ kiểm tra số lượng không hợp lệ, thông báo nhập lại và quay lại bước Sub2.7

Bảng 13-11 Mô tả usecase chức năng quản lý nguyên liệu

Use Case: Quản lý nguyên liệu ID: UC09

Actor chính: Bartender Mức độ cần thiết: Bắt buộc

Phân loại: Khó Điều kiện tiên quyết: Bartender đã đăng nhập vào hệ thống

Mô tả: Cho phép bartender quản lý nguyên liệu

1 Thêm giá nguyên liệu: cho phép bartender thêm giá cho nguyên liệu

2 Thêm nguyên liệu: cho phép bartender thêm nguyên liệu vào danh sách

3 Sửa nguyên liệu: cho phép bartender sửa thông tin nguyên liệu

Trigger: Có yêu cầu thực hiện quản lý nguyên liệu

+ Association (kết hợp): Admin, bartender

+ Extend (mở rộng): Thêm giá nguyên liệu, thêm nguyên liệu, sửa nguyên liệu + Generalization (tổng quát hóa):

1 Bartender bấm chọn vào “Nguyên liệu” trên menu

2 Hệ thống gửi yêu cầu từ view lấy danh sách nguyên liệu tới controller

3 Controller trả dữ liệu danh sách nguyên liệu tới view

4 Website hiển thị danh sách nguyên liệu

Sub1: Thêm giá nguyên liệu

Các luồng sự kiện con:

Sub1: Thêm giá nguyên liệu

1 Bartender nhấn vào nút quản lí giá

2 Website hiển thị form quản lí giá

3 Bartender nhập tên nguyên liệu vào form thêm giá nguyên liệu

4 Bartender nhập giá nguyên liệu

6 Bartender nhấn nút thêm giá

1 Bartender nhập tên nguyên liệu vào form thêm mới nguyên liệu

3 Bartender chọn đơn vị khối lượng

4 Bartender chọn giá vừa thêm

1 Bartender nhấn nút sửa nguyên liệu

2 Website hiển thị form chỉnh sửa thông tin nguyên liệu

3 Bartender chỉnh tên nguyên liệu

5 Bartender chỉnh đơn vị khối lượng

6 Bartender chỉnh giá nguyên liệu

7 Bartender nhấn nút xác nhận

Luồng luân phiên/đặc biệt:

- Sub 1.6: Form thêm giá nguyên liệu sẽ kiểm tra các trường dữ liệu không hợp lệ và thông báo nhập lại

- Sub2.5: Form thêm nguyên liệu sẽ kiểm tra tên và số lượng không hợp lệ và thông báo nhập lại

Bảng 14-12 Mô tả usecase chức năng quản lý ví

Use Case: Quản lý ví ID: UC010

Actor chính: Người dùng đã đăng nhập Mức độ cần thiết: Bắt buộc

Phân loại: Trung bình Điều kiện tiên quyết: Người dùng đã đăng nhập vào website

Mô tả: Cho phép người dùng tạo đơn rút tiền và in đơn rút

Trigger: Có yêu cầu thực hiện chức năng quản lý ví

+ Association (kết hợp): Admin, bartender, waiter

+ Extend (mở rộng): Tạo đơn rút, In đơn rút

1 Người dùng chọn nút “Thêm” trên menu

2 Người dùng chọn chức năng ví

3 Người dùng chọn chức năng

Sub1: Tạo đơn rút tiền

Sub2: In đơn đã rút

Các luồng sự kiện con:

Sub1: Tạo đơn rút tiền

1 Người dùng nhập số tiền cần rút vào form tạo đơn rút

2 Người dùng nhấn nút gửi

3 Hệ thống nhận yêu cầu tạo đơn rút tiền từ view gửi đến controller

4 Controller nhận dữ liệu yêu cầu và thực hiện tạo đơn rút

Sub2: In đơn đã rút

1 Người dùng nhấn vào nút in đơn với đơn cần in

2 Hệ thống nhận yêu cầu in đơn rút tiền từ view gửi đến controller

3 Controller nhận dữ liệu yêu cầu và thực hiện in đơn rút

4 Website hiển thi trang chi tiết đơn rút dạng PDF

Luồng luân phiên/đặc biệt:

- Sub1.2: Hệ thống kiểm tra số tiền nhập không hợp lệ, thông báo nhập lại và quay lại bước Sub1.1

8.11 Chức năng duyệt đơn rút

Bảng 15-13 Mô tả usecase chức năng duyệt đơn rút

Use Case: Chức năng duyệt đơn rút ID: UC011

Actor chính: Admin Mức độ cần thiết: Bắt buộc

Phân loại: Đơn giản Điều kiện tiên quyết: Admin đã đăng nhập vào website

Mô tả: Cho phép admin duyệt các đơn rút tiền

Trigger: Có yêu cầu thực hiện chức năng duyệt đơn rút tiền

1 Admin chọn nút “Thêm” trên menu

2 Admin chọn chức năng đơn rút

3 Admin chọn nút duyệt đơn cần duyệt

Các luồng sự kiện con:

1 Hệ thống nhận yêu cầu duyệt đơn rút tiền từ view gửi đến controller

2 Controller nhận dữ liệu yêu cầu và thực hiện duyệt đơn rút

Luồng luân phiên/đặc biệt:

Bảng 16-14 Mô tả usecase chức năng quản lý sản phẩm

Use Case: Quản lý sản phẩm ID: UC012

Actor chính: Admin Mức độ cần thiết: Bắt buộc

Phân loại: Khó Điều kiện tiên quyết: Admin đã đăng nhập vào hệ thống

Mô tả: Cho phép admin quản lý sản phẩm

1 Thêm cách pha chế: cho phép admin thêm cách pha chế cho sản phẩm

2 Thêm giá sản phẩm: cho phép admin thêm giá cho sản phẩm

3 Thêm sản phẩm: cho phép admin thêm sản phẩm vào danh sách

4 Sửa sản phẩm: cho phép admin sửa thông tin sản phẩm

5 Xóa sản phẩm: cho phép admin xóa sản phẩm khỏi danh sách

Trigger: Có yêu cầu thực hiện quản lý sản phẩm

+ Association (kết hợp): Admin, bartender

+ Extend (mở rộng): Thêm cách pha chế, thêm giá sản phẩm, thêm sản phẩm, sửa sản phẩm, xóa sản phẩm

1 Admin bấm chọn vào nút “Thêm”

2 Admin bấm chọn vào “Sản phẩm” trên menu

3 Hệ thống gửi yêu cầu từ view lấy danh sách sản phẩm tới controller

4 Controller trả dữ liệu danh sách sản phẩm tới view

5 Website hiển thị danh sách sản phẩm

Sub1: Thêm cách pha chế

Sub2: Thêm giá sản phẩm

Các luồng sự kiện con:

Sub1: Thêm cách pha chế

1 Admin nhấn vào nút cách pha chế

2 Website hiển thị form quản lí pha chế

3 Admin nhập tên cách pha chế vào form thêm cách pha chế

4 Admin nhập hướng dẫn pha chế

6 Hệ thống gửi yêu cầu tạo cách pha chế từ view gửi đến controller

7 Controller tiếp nhận yêu cầu và thực hiện thêm mới cách pha chế

Sub2: Thêm giá sản phẩm

1 Admin nhấn vào nút quản lí giá

2 Website hiển thị form quản lí giá

3 Admin nhập tên sản phẩm vào form thêm giá sản phẩm

7 Hệ thống gửi yêu cầu thêm giá sản phẩm từ view gửi đến controller

8 Controller tiếp nhận yêu cầu và thực hiện thêm mới giá sản phẩm

1 Admin nhập tên sản phẩm vào form thêm sản phẩm

3 Admin chọn loại sản phẩm

4 Admin chọn cách pha chế

5 Admin nhập mô tả sản phẩm

6 Admin chọn ảnh cho sản phẩm

8 Hệ thống gửi yêu cầu tạo mới sản phẩm từ view gửi đến controller

9 Controller tiếp nhận yêu cầu và thực hiện thêm sản phẩm

1 Admin nhấn nút sửa sản phẩm

2 Website hiển thị form chỉnh sửa thông tin sản phẩm

3 Admin chỉnh tên nguyên liệu

4 Admin chỉnh mô tả sản phẩm

5 Admin nhấn nút xác nhận

6 Hệ thống gửi yêu cầu sửa sản phẩm từ view gửi đến controller

7 Controller tiếp nhận yêu cầu và thực hiện sửa sản phẩm

1 Admin nhấn nút xóa sản phẩm

2 Website hiển thị form xác nhận xóa sản phẩm

4 Hệ thống gửi yêu cầu sửa xóa sản phẩm từ view gửi đến controller

5 Controller tiếp nhận yêu cầu và thực hiện xóa sản phẩm

Luồng luân phiên/đặc biệt:

- Sub 1.5: Form thêm cách pha chế sẽ kiểm tra tên pha chế và cách pha chế không hợp lệ và thông báo nhập lại

- Sub2.6: Form thêm giá sản phẩm sẽ kiểm tra tên và giá không hợp lệ và thông báo nhập lại

- Sub3.7: Form thêm sản phẩm sẽ kiểm tra tên sản phẩm không hợp lệ, thông báo nhập lại và quay lại bước Sub3.1

8.13 Chức năng xử phạt truy cập trái phép

Bảng 17-15 Mô tả usecase chức năng xử phạt truy cập trái phép

Use Case: Xử phạt truy cập trái phép ID: UC013

Actor chính: Admin Mức độ cần thiết: Bắt buộc

Phân loại: Trung bình Điều kiện tiên quyết: Admin đã đăng nhập vào website

Mô tả: Cho phép admin quản lí các truy cập trái phép

Trigger: Có yêu cầu thực hiện chức năng xử phạt truy cập trái phép

1 Admin chọn nút “Thêm” trên menu

2 Admin chọn chức năng truy cập trái phép

3 Website hiển thị trang truy cập trái phép

4 Admin chọn số lần truy cập trái phép ở form liệu kê theo số lần vi phạm

5 Admin nhấn nút liệu kê

6 Hệ thống gửi yêu cầu liệu kê theo số lần vi phạm từ view đến controller

7 Controller tiếp nhận yêu cầu và thực thi liệt kê Sau đó trả về kết quả

8 Website hiển thị trang liệt kê theo số lần vi phạm

10 Website hiển thị form hình thức phạt

11 Admin chọn hình thức phạt

12 Admin nhấn nút xác nhận

Sub2: Phạt trừ tiền lương 50000 VNĐ

Các luồng sự kiện con:

1 Hệ thống nhận được yêu cầu xử phạt khiển trách từ view gửi đến controller

2 Controller tiếp nhận yêu cầu và xác nhận đã xử phạt nhân viên Sau đó trả về kết quả

Sub2: Phạt trừ tiền lương 50000 VNĐ

1 Hệ thống nhận được yêu cầu xử phạt trừ tiền lương từ view gửi đến controller

2 Controller tiếp nhận yêu cầu, trừ tiền trong ví của nhân viên và xác nhận đã xử phạt nhân viên Sau đó trả về kết quả

1 Hệ thống nhận được yêu cầu xử phạt đuổi việc từ view gửi đến controller

2 Controller tiếp nhận yêu cầu, vô hiệu hóa tài khoản của nhân viên và xác nhận đã xử phạt nhân viên Sau đó trả về kết quả

Luồng luân phiên/đặc biệt:

8.14 Chức năng quản lý đơn đặt trên ứng dụng di động

Bảng 18-16 Mô tả usecase chức năng quản lý đơn đặt trên ứng dụng di động

Use Case: Quản lý đơn đặt ID: UC014

Actor chính: Waiter Mức độ cần thiết: Bắt buộc

Phân loại: Trung bình Điều kiện tiên quyết: Waiter đã quét mã QR truy cập vào ứng dụng

Mô tả: Cho phép waiter quản lý đơn đặt

1 Tạo đơn đặt: cho phép waiter tạo đơn đặt cho bàn trống

2 Thêm món cho đơn đặt: cho phép waiter thêm món vào đơn vừa tạo

3 Sửa đơn đặt: cho phép waiter sửa thông tin đơn đặt

Trigger: Có yêu cầu thực hiện quản lý đơn đặt

+ Extend (mở rộng): Tạo đơn đặt, thêm món cho đơn đặt, sửa đơn đặt

1 Waiter chọn nút đơn đặt ở thanh công cụ cạnh dưới màn hình

Sub2: Thêm món cho đơn đặt

Các luồng sự kiện con:

1 Waiter nhấn vào biểu tượng ly cà phê để tạo đơn đặt

2 App sẽ hiển thị form tạo đơn đặt

3 Waiter nhập số bàn, số người, chi nhánh

5 Hệ thống gửi request API tạo đơn đặt cho back-end

6 Back-end nhận dữ liệu yêu cầu và thực hiện thêm mới đơn đặt

Sub2: Thêm món cho đơn đặt

1 Waiter nhấn vào biểu tượng dấu cộng của đơn đặt

2 App hiển thị form thêm món

3 Waiter nhập mã thức uống, số lượng và giá vào form

4 Waiter nhấn nút Thêm món

5 Hệ thống gửi request API tạo chi tiết đơn đặt cho back-end

6 Back-end nhận dữ liệu yêu cầu và thực hiện thêm chi tiết đơn đặt

1 Waiter nhấn vào biểu tượng chữ i của đơn đặt

2 App hiển thị trang chi tiết đơn đặt

3 Wait nhấn nút xóa món cần xóa

4 Hệ thống gửi request API xóa chi tiết đơn đặt cho back-end

5 Back-end nhận dữ liệu yêu cầu và thực hiện xóa chi tiết đơn đặt

Luồng luân phiên/đặc biệt:

8.15 Chức năng quản lý bàn trên ứng dụng di động

Bảng 19-17 Mô tả usecase chức năng quản lý bàn trên ứng dụng di động

Use Case: Quản lý bàn ID: UC015

Actor chính: Waiter Mức độ cần thiết: Bắt buộc

Phân loại: Trung bình Điều kiện tiên quyết: Waiter đã quét mã QR truy cập vào ứng dụng

Mô tả: Cho phép waiter quản lý bàn

1 Gộp bàn: cho phép waiter gộp 2 bàn lại với nhau

2 Xác nhận thanh toán: cho phép waiter xác nhận bàn đã thanh toán

Trigger: Có yêu cầu thực hiện quản lý bàn

+ Extend (mở rộng): Gộp bàn, xác nhận thanh toán

1 Waiter chọn nút bàn ở thanh công cụ cạnh dưới màn hình

Sub2: Xác nhận thanh toán

Các luồng sự kiện con:

1 Waiter nhấn vào biểu tượng gộp bàn của bàn cần gộp

2 Waiter nhập lại mã đơn và số tiền của đơn tại bàn hiện tại

3 Waiter nhập id đơn của bàn sẽ gộp vào

5 Hệ thống gửi request API gộp bàn cho back-end

6 Back-end tiếp nhận dữ liệu, thực hiện gộp bàn và trả về kết quả

Sub2: Thêm món cho đơn đặt

1 Waiter nhấn vào biểu tượng check của đơn đặt

2 App hiển thị form xác nhận thanh toán

3 Waiter nhấn nút thanh toán bất kì dưới mỗi món

4 Hệ thống gửi request API thanh toán đơn đặt cho back-end

5 Back-end nhận dữ liệu yêu cầu và thực hiện thanh toán đơn đặt

Luồng luân phiên/đặc biệt:

8.16 Đăng ký lịch trên ứng dụng di động

Bảng 20-18 Mô tả usecase chức năng đăng ký lịch trên ứng dụng di động

Use Case: Đăng ký lịch ID: UC016

Actor chính: Waiter Mức độ cần thiết: Bắt buộc

Phân loại: Đơn giản Điều kiện tiên quyết: Waiter đã quét mã QR truy cập vào ứng dụng

Mô tả: Cho phép waiter đăng ký lịch

Trigger: Có yêu cầu thực hiện đăng kí lịch

1 Waiter chọn nút tôi ở thanh công cụ cạnh dưới màn hình

2 Waiter chọn chức năng lịch làm việc

3 App hiện trang lịch làm trong tuần

4 Waiter nhấn nút đăng ký lịch làm như mong muốn

5 Hệ thống gửi request API đăng ký lịch cho back-end

6 Back-end nhận dữ liệu yêu cầu và thực hiện xác nhận đăng ký lịch

Các luồng sự kiện con:

Luồng luân phiên/đặc biệt:

8.17 Xem chi tiết ví trên ứng dụng di động

Bảng 21-19 Mô tả usecase chức năng xem chi tiết ví trên ứng dụng di động

Use Case: Xem chi tiết ví ID: UC017

Actor chính: Waiter Mức độ cần thiết: Bắt buộc

Phân loại: Đơn giản Điều kiện tiên quyết: Waiter đã quét mã QR truy cập vào ứng dụng

Mô tả: Cho phép waiter xem chi tiết ví

Trigger: Có yêu cầu thực hiện xem ví

1 Waiter chọn nút tôi ở thanh công cụ cạnh dưới màn hình

2 Waiter chọn chức năng lương

3 Hệ thống gửi request API xem chi tiết ví cho back-end

4 Back-end nhận dữ liệu yêu cầu và trả kết quả

5 App hiển thị trang ví của tôi

Các luồng sự kiện con:

Luồng luân phiên/đặc biệt:

8.18 Hiển thị mã QR thanh toán trên ứng dụng di động

Bảng 22-20 Mô tả usecase chức năng hiển thị mã QR thanh toán trên ứng dụng di động

Use Case: Hiển thị mã QR thanh toán ID: UC018

Actor chính: Waiter Mức độ cần thiết: Bắt buộc

Phân loại: Đơn giản Điều kiện tiên quyết: Waiter đã quét mã QR truy cập vào ứng dụng

Mô tả: Cho phép waiter hiển thị trang chứa mã QR thanh toán

Trigger: Có yêu cầu thực hiện xem mã QR thanh toán

1 Waiter chọn nút thanh toán ở thanh công cụ cạnh dưới màn hình

2 App hiển thị mã QR thanh toán Momo

3 Waiter nhấn nút chuyển khoản nếu khách hàng muốn quét mã QR Vietcombank

Các luồng sự kiện con:

Luồng luân phiên/đặc biệt:

Bảng 23-21 Mô tả usecase chức năng quản lý nhân viên

Use Case: Quản lý nhân viên ID: UC018-1

Actor chính: Admin Mức độ cần thiết: Bắt buộc

Phân loại: Trung bình Điều kiện tiên quyết: Admin đã đăng nhập vào hệ thống

Mô tả: Cho phép admin quản lý nhân viên

2 Sửa thông tin nhân viên

Trigger: Có yêu cầu thực hiện chức năng quản lý nhân viên

+ Extend (mở rộng): thêm nhân viên, sửa thông tin nhân viên, xóa nhân viên + Generalization (tổng quát hóa):

1 Admin chọn mục “Thêm” trên menu

2 Admin bấm chọn chức năng Nhân viên

Sub2: Sửa thông tin nhân viên

Các luồng sự kiện con:

1 Admin nhập thông tin nhân viên cần thêm

3 Hệ thống nhận yêu cầu thêm nhân viên từ view gửi đến controller

4 Controller tiếp nhận yêu cầu và thực hiện thêm nhân viên

Sub2: Sửa thông tin nhân viên

1 Admin bấm chọn nút sửa thông tin nhân viên

2 Website hiển thị form chỉnh sửa thông tin nhân viên

3 Admin thực hiện chỉnh sửa các thông tin

4 Admin bấm chọn nút xác nhận

5 Hệ thống nhận yêu cầu sửa thông tin nhân viên từ view và gửi đến controller

6 Controller tiếp nhận yêu cầu và thực hiện sửa thông tin nhân viên

1 Admin bấm chọn nút xóa nhân viên

2 Website hiển thị form xác nhận xóa nhân viên

3 Admin bấm chọn nút xóa

4 Hệ thống tiếp nhận yêu cầu xóa nhân viên từ view gửi đến controller

5 Controller tiếp nhận yêu cầu và thực hiện xóa nhân viên

Luồng luân phiên/đặc biệt:

- Sub1.2: Hệ thống kiểm tra các thông tin admin nhập là không hợp lệ, thông báo nhập lại và quay trở lại bước Sub1.1.

Các yêu cầu phi chức năng

- Đảm bảo tình trạng mạng internet luôn ổn định

- Thời gian xử lí các thao tác thêm, sửa xóa thì không vượt quá 3s

- Máy chủ phải hoạt động liên tục trong thời gian quán hoạt động

- Có thể phục hồi dữ liệu bị mất ngay khi có sự cố xảy ra từ bản sao lưu

9.3 Các đặc điểm chất lượng phần mềm

- Dễ dàng bảo trì hệ thống

- Có thể nâng cấp hệ thống khi có yêu cầu mới

- Độ trễ chậm và độ chính xác cao.

THIẾT KẾ VÀ CÀI ĐẶT GIẢI PHÁP

Tổng quan kiến trúc

Thiết kế một hệ thống quản lý quán Café theo mô hình MVC sử dụng NodeJS, dùng MySQL để lưu trữ dữ liệu Bên cạnh đó, hệ thống còn được thêm một vùng để xử lý API được truy cập bởi thiết bị di động

Mô hình của hệ thống được chia thành các thành phần nhỏ chứa những thành phần con có cùng chức năng để thuận tiện quản lý và không bị chồng chéo khi xử lý dữ liệu

Kiến trúc của hệ thống được thể hiện như sau:

Hình ảnh 7-1 Kiến trúc của hệ thống

Mô tả sự phân rã

Các thành phân trong hệ thống:

 Screens: Hoạt động giống như các hàm trả về các thành phần ScrollView,

Text, TextInput,… và có thể sử dụng lại nhiều lần

 Router : Điều hướng cơ sở của dự án nằm ở đây Ta có thể tạo một trình điều hướng ngăn xếp trong đó và xuất nó vào ứng dụng

 Services: Là thành phần cung cấp các hàm gọi Fetch API gửi đi yêu cầu tới Back-end

 NodeJS REST Controller: Đảm nhiệm việc ánh xạ HTTP Request tới controller tương ứng Gọi Model để xử lý yêu cầu và trả về cho View và Front-End thì Controller sẽ chuyển đổi dữ liệu trả về thành JSON

 Model: Là bộ phận có chức năng lưu trữ toàn bộ dữ liệu của ứng dụng và là cầu nối giữa 2 thành phần là View và Controller Một model là dữ liệu được sử dụng bởi chương trình Đây có thể là cơ sở dữ liệu, hoặc file XML bình thường hay một đối tượng đơn giản

 Controller: Là bộ phận có nhiệm vụ xử lý các yêu cầu người dùng đưa đến thông qua View Một controller bao gồm cả Model lẫn View Nó nhận input và thực hiện các update tương ứng

 View: Đây là phần giao diện dành cho người sử dụng View là phương tiện hiển thị các đối tượng trong một ứng dụng Chẳng hạn như hiển thị một cửa sổ, nút hay văn bản trong một cửa sổ khác Nó bao gồm bất cứ thứ gì mà người dùng có thể nhìn thấy được

Giao tiếp giữa front-end ( Mobile App) và back-end sẽ được triển khai bằng REST API Ở phía front-end sẽ thực hiện fetch API và phía back-end sẽ xử lý các yêu cầu đó bằng NodeJS REST Controller Toàn bộ dữ liệu sẽ được lưu vào cơ sở dữ liệu MySQL Workbench.

Thiết kế cơ sở dữ liệu

3.1 Mô tả tập thực thể, xây dựng các thực thể cần quản lý Để thuận tiện hơn cho việc quản lý quán Café và lưu rữ dễ dàng thông tin các đối tượng cần quản lý thì việc xây dựng Cơ sở dữ liệu quan hệ là cần thiết Trước hết cần xác định các đối tượng mà quán Café muốn quản lý gồm những gì và mối quan hệ giữa chúng ra sao

Các thực thể cơ bản cần quản lý của quán Café:

Bảng 24-21-1 Bảng liệt kê các thực thể cần quản lý

STT Tên thực thể STT Tên thực thể

2 Nhân viên 17 Giá nguyên liệu

4 Chi tiết lịch 19 Đơn nhập

5 Ca trực 20 Chi tiết đơn nhập

6 Chấm công 21 Phí phát sinh

9 Chi tiết đơn đặt 24 Loại khách hàng

10 Gộp đơn đặt 25 Tin nhắn

12 Giá sản phẩm 27 Phiên giao dịch

13 Loại sản phẩm 28 Truy cập trái phép

3.2 Mô tả mối liên kết

Thực thể Thống kê có mối quan hệ với các thực thể Chấm công, Phí phát sinh, Đơn đặt, Đơn nhập, Chi nhánh: Ví dụ:

- Mỗi ngày sẽ có một bản thống kê được lập để lưu lại hoạt động của quán

- Thống kê theo khoảng thời gian, ví dụ từ đầu tháng đến cuối tháng thì sẽ được liệt kê theo nhu cầu của quản lí để theo dõi doanh thu, chi phí và lợi nhuận của quán

- Thống kê theo chi nhánh sẽ liệt kê các ca làm việc của nhân viên thông qua việc chấm công, các đơn đặt đã được thanh toán, các chi phí đã chi trả cho những đơn nhập nguyên liệu và phí phát sinh

Thực thể Nhân viên có mối quan hệ với các thực thể Chi nhánh, Lịch, Chức vụ, Đơn đặt, Đơn nhập, Chấm công, Chi tiết lịch, Phí phát sinh, Thống kê, Ví, Phiên giao dịch Ví dụ :

- Tại chi nhánh 1, nhân viên có chức vụ admin sẽ lập lịch làm việc và các bản thống kê cho một tuần

- Các nhân viên có chức vụ khác sẽ đăng ký lịch

- Nhân viên có chức vụ waiter tạo đơn đặt cho khách vãng lai với sản phẩm thức uống cà phê sữa có giá 29.000 VNĐ, đơn đặt được xác địch ở bàn số 5 và lưu vào thống kê của ngày hôm đó

- Khi có nguyên liệu trong kho còn số lượng ít, nhân viên admin sẽ lập đơn nhập để nhập thêm nguyên liệu và lưu vào thống kê

- Trong ca làm việc, nếu có phí phát sinh thì nhân viên sẽ lập phí phát sinh để thống kê

- Kết thúc ca làm việc các nhân viên thực hiện chấm công

- Khi chấm công hoàn tất, ví của nhân viên sẽ được cộng tiền và nhân viên có thể tạo đơn rút để rút tiền lương đồng thời tạo một phiên giao dịch Thực thể Pha chế có mối quan hệ với các thực thể Chi tiết pha chế, Sản phẩm, Nguyên liệu, Giá nguyên liệu, Đơn vị tính Ví dụ:

- Khi nhận được đơn pha chế từ nhân viên waiter, nhân viên bartender sẽ thực hiện pha chế món và xác nhận pha chế xong

- Nhân viên bartender quản lý sản phẩm và cách pha chế của sản phẩm, có thể chỉnh sửa các nguyên liệu và liều lượng (gram, thìa,…) trong cách pha chế

- Nhân viên bartender có thể thêm nguyên liệu mới vào hệ thống và chỉnh sửa các nguyên liệu sẳn có

Ngoài ra thực thể Truy cập trái phép và Tin nhắn có mối quan hệ với thực thể Nhân viên Ví dụ:

- Khi có nhân viên cố tình truy cập vào chức năng không thuộc phân quyền thì sẽ bị hệ thống lưu lại lịch sử truy cập trái phép

- Các nhân viên có thể trao đổi với nhau qua tin nhắn trên hệ thống và phản hồi tin nhắn từ admin

3.3 Mô hình thực thể liên kết

Hình ảnh 8-2 Mô hình thực thể liên kết

3.4 Sơ đồ mức luận lý

- USERS(u_id, u_username, u_password, u_name, u_address, u_phone, u_d_id)

- CALENDAR (cld_id, cld_begin, cld_end )

- CALENDAR_DETAIL (cd_id, cd_cld_id, cd_date, cd_user_id, cd_shift_id, hours, cd_check)

- SHIFTS(s_id, s_name, s_begin_time, s_end_time)

- TIMEKEEPING(tk_id, tk_u_id, tk_s_id, tk_date, tk_note, tk_s_id, tk_br_id, tk_cd_id, tk_cost)

- TABLES(t_id, t_position, t_empty, t_pay, t_num, t_seats)

- ORDERS(o_id, o_u_id, o_c_id, o_t_id, o_number, o_status, o_post, o_tick, o_cost, o_time, o_s_id, o_br_id)

- ORDER_DETAIL(od_id, od_o_id, od_pro_id, od_quantity, od_price)

- ORDER_MERGING (om_id, om_o_id_new, om_o_id_old)

- PRODUCT_TYPE(pt_id, pt_name, pt_description)

- PRODUCT_PRICE(pp_id, pp_pro_name, pp_price, pp_date)

- PRODUCTS(pro_id, pro_name, pro_price, pro_description, pro_img, pro_pt_id, pro_pp_id, pro_b_id)

- BARTENDING_DETAIL(bd_id, bd_b_id, bd_ing_id, bd_amount)

- INGREDIENT_PRICE(ip_id, ip_ing_name, ip_price, ip_date)

- INGREDIENT(ing_id, ing_name, ing_amount, ing_unit_id, ing_ip_id)

- CUSTOMER_TYPE(ct_id, ct_name)

- UNIT(unit_id, unit_name)

- IMPORT_BILL(ib_id, ib_name, ib_date, ib_cost, ib_s_id, ib_br_id)

- IMPORT_BILL_DETAIL(ibd_id, ibd_ib_id, ibd_ing_id, ibd_amount, ibd_cost);

- COSTS_INCURRED(ci_id, ci_name, ci_cost, ci_u_id, ci_stt_id, ci_br_id)

- STATISTICAL(s_id, s_name, s_import, s_export, s_profit, s_date, s_br_id)

- CUSTOMERS( c_id, c_username, c_password, c_name, c_address, c_phone, c_ct_id)

- CUSTOMER_TYPE( ct_id, ct_name)

- MESSAGES( id, u_id, client_offset, content)

- WALLET (w_id, w_u_id, w_money_earned, w_monet_withdraw, w_surplus)

- TRANSACTION( tran_id, tran_u_id, tran_money, tran_created, tran_updated, tran_check )

- UNAUTHORIZED_ACCESS ( ua_id, ua_u_id, ua_access, ua_date, ua_check )

- BRANCH ( br_id, br_name, br_address )

Bảng 25-1 Danh mục các bảng

STT Tên bảng Mô tả

1 Users Người dùng – Lưu trữ trong tin của người dùng

2 Duties Chức vụ - Lưu trữ thông tin chức vụ

3 Bartending Pha chế - Lưu trữ thông tin pha chế của thức uống

4 Bartending_detail Chi tiết pha chế - Lưu trữ thông tin chi tiết nguyên liệu cần để pha chế thức uống

5 Branch Chi nhánh – Lưu trữ thông tin các chi nhánh của quán Café

6 Calendar Lịch – Lưu trữ lịch làm của nhân viên

7 Calendar_detail Chi tiết lịch làm – Lưu trữ thông tin về buổi làm và nhân viên làm theo buổi

8 Costs_incurred Phí phát sinh – Lưu trữ các phí phát sinh trong ngày

9 Customers Khách hàng – Lưu trữ thông tin khách hàng

10 Customer_type Loại khách hàng – Lưu trữ thông tin loại khách hàng

11 Import_bill Đơn nhập – Lưu trữ thông tin đơn nhập

12 Import_bill_detail Chi tiết đơn nhập – Lưu trữ chi tiết thông tin các nguyên liệu trong đơn nhập

13 Ingredient Nguyên liệu – Lưu trữ thông tin nguyên liệu

14 Ingredient_price Giá nguyên liệu – Lưu trữ thông tin giá nguyên liệu theo thời gian

15 Messages Tin nhắn – Lưu trữ tin nhắn thông báo

16 Orders Đơn đặt – Lưu trữ thông tin đơn đặt

17 Order_detail Chi tiết đơn đặt – Lưu trữ thông tin các thức uống trong đơn đặt

18 Order_merging Gộp đơn – Lưu trữ thông tin các đơn đã gộp lại với nhau

19 Products Sản phẩm – Lưu trữ thông tin các sản phẩm

20 Product_type Loại sản phẩm – Lưu trữ thông tin các loại sản phẩm

21 Product_price Giá sản phẩm – Lưu trữ thông tin giá sản phẩm theo thời gian

22 Shifts Ca trực – Lưu trữ thông tin các ca làm việc

23 Statistical Thống kê – Lưu trữ thông tin các thống kê

24 Tables Bàn – Lưu trữ thông tin các bàn

25 Timekeeping Chấm công – Lưu trữ thông tin chấm công

26 Transaction Phiên giao dịch – Lưu trữ thông tin các đơn rút tiền của nhân viên

27 Unauthorized_access Truy cập trái phép – Lưu trữ thông tin các truy cập trái phép

28 Unit Đơn vị - Lưu trữ thông tin các đơn vị đo lường của nguyên liệu

29 Wallet Ví – Lưu trữ thông tin ví của nhân viên

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả u_id Integer X User Id u_username Varchar(10) X Username u_password Varchar(10) X Password u_name Nvarchar(100) X Tên người dùng u_address NVarchar(500) Địa chỉ u_phone Varchar(10) Số điện thoại u_d_id Integer X X Id chức vụ

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả d_id Integer X Duty Id d_name Varchar(50) X Tên chức vụ

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả b_id Integer X Bartending

Id b_name Varchar(100) X Tên cách pha chế b_description Varchar(1000) Mô tả

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả bd_id Integer X Bartending detail Id bd_b_id Integer X X Bartending Id bd_ing_id Integer X X Ingredient Id bd_amount Float X Lượng pha chế

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả br_id Integer X Branch Id br_name Varchar(100) X Tên chi nhánh br_address Varchar(500) X Địa chỉ

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả cld_id Integer X Calendar Id cld_bebin Date X Ngày bắt đầu cld_end Date X Ngày kết thúc

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả cd_id Integer X Calendar

Detail Id cd_cld_id Integer X X Calendar Id cd_date Date X Ngày cd_user_id Integer X X User Id cd_shift_id Integer X X Shift Id hours Integer X Số giờ làm cd_check Boolean X Trạng thái

( đã hoặc chưa đăng kí )

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả ci_id Integer X Costs

Incurred Id ci_name Varchar(500) X Tên phí ci_cost Float X Mức phí ci_u_id Integer X X User id ci_stt_id Integer X X Statistical Id ci_br_id Integer X X Branch Id

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả c_id Integer X Customer Id c_username Varchar(10) X Username c_password Varchar(10) X Password c_name Varchar(500) X Tên khách hàng c_address Varchar(500) Địa chỉ c_phone Varchar(10) Số điện thoại c_ct_id Integer X X Customer

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả ct_id Integer X Customer

Type Id ct_name Varchar(100) X Tên loại khách hàng

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả ib_id Integer X Import Bill

Id ib_name Varchar(500) X Tên đơn nhập ib_date DateTime X Ngày nhập ib_cost Float X Tổng tiền nhập ib_s_id Integer X X Statistical Id ib_br_id Integer X X Branch Id

Bảng 37-13 Bảng Import_bill_detail

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả ibd_id Integer X Import Bill

Detail Id ibd_ib_id Integer X X Import Bill

Id ibd_ing_id Integer X X Ingredient Id ibd_amount Float X Số lượng ibd_cost Float X Giá

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả ing_id Integer X Ingredient Id ing_name Varchar(20) X Tên nguyên liệu ing_amount Float X Số lượng ing_unit_id Integer X X Unit Id ing_ip_id Integer X X Ingredient

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả ip_id Integer X Ingredient

Price Id ip_ing_name Varchar(10) X Tên nguyên liệu ip_price Float X Giá ip_date Date X Ngày

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả id Integer X Message Id u_id Integer X X User Id client_offset Varchar(100) Client Offset content Varchar(200) Nội dung tin nhắn

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả o_id Integer X Order Id o_u_id Integer X X User Id o_c_id Integer X X Customer Id o_t_id Integer X X Table Id o_number Interger X Số người o_status Boolean X Trạng thái thanh toán o_post Boolean X Trạng thái xác nhận đơn o_tick Boolean X Trạng thái pha chế o_time DateTime X Ngày giờ o_s_id Integer X X Statistical Id o_br_id Integer X X Branch Id

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả od_id Integer X Order Detail

Id od_o_id Integer X X Order Id od_pro_id Integer X X Product Id od_quantity Float X Số lượng od_price Float X Giá

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả om_id Integer X Order

Merging Id om_o_id_new Integer X Order Id sẽ gộp om_o_id_old Integer X Order Id bị gộp

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả pro_id Integer X Product Id pro_name Varchar(200) X Tên sản phẩm pro_price Float X Giá pro_description Varchar(1000) Mô tả pro_pt_id Integer X X Product

Type Id pro_pp_id Integer X X Product

Price Id pro_b_id Integer X X Bartending

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả pp_id Integer X Product Price

Id pp_pro_name Varchar(500) X Tên sản phẩm pp_price Float X Giá pp_date Date Ngày

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả pt_id Integer X Product Type

Id pt_name Varchar(50) X Tên loại sản phẩm pt_description Varchar(500) Mô tả

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả s_id Integer X Shift Id s_name Varchar(500) X Tên ca s_begin_time Time Giờ bắt đầu s_end_time Time Giờ kết thúc

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả s_id Integer X Statistical Id s_name Varchar(50) X Tên thống kê s_import Float X Chi phí s_export Float X Doanh thu s_profit Float X Lợi nhuận s_date DateTime X Ngày s_br_id Integer X X Branch Id

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả t_id Integer X Table Id t_position Varchar(500) X Vị trí t_empty Boolean X Trạng thái bàn trống t_pay Booloean X Trạng thái thanh toán t_num Integer X Số người t_seats Integer X Số người ngồi

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả tk_id Integer X Timekeeping

Id tk_u_id Integer X X User Id tk_s_id Integer X X Shift Id tk_date DateTime X Ngày giờ tk_note Varchar(100) Ghi chú t_s_id Integer X X Statistical Id tk_br_id Integer X X Branch Id tk_cd_id Integer X X Calendar

Detail Id tk_cost Integer X Lương

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả tran_id Integer X Transaction

Id tran_u_id Integer X X User Id tran_money Integer X Tiền rút tran_created DateTime Ngày tạo đơn rút tran_updated DateTime Ngày duyệt đơn rút tran_check Boolean X Trạng thái duyệt đơn

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả ua_id Integer X Unauthorized

Access Id ua_u_id Integer X X User Id ua_access Varchar(45) X Đường dẫn truy cập ua_date DateTime X Ngày giờ truy cập ua_check Boolean X Trạng thái xem xét

Tên thuộc tính Kiểu dữ liệu Khóa chính

Mô tả unit_id Integer X Unit Id unit_name Varchar(100) X Tên đơn vị khối lượng

Tên thuộc tính Kiểu dữ liệu

Mô tả w_id Integer X Wallet Id w_u_id Integer X X User Id w_money_earned Integer X Số tiền đã tích lũy w_money_withdraw Integer X Số tiền đã rút w_surplus Integer X Số dư

Thiết kế theo chức năng

4.1 Chức năng quản lý thống kê

Hình ảnh 9-3 Chức năng quản lý thống kê

- Mục đích: Tạo thống kê mới cho ngày mới

Hình ảnh 10-4 Chức năng tạo thống kê

Bảng 55-31 Các thành phần giao diện chức năng tạo thống kê

Tên điều khiển Nội dung Giá trị mặc định

1 Text s_name Tên của thống kê

2 Text s_date Ngày giờ tạo thống kê

3 Text tk_u_id User Id

- Dữ liệu được sử dụng:

Bảng 56-32 Dữ liệu được dùng cho chức năng tạo thống kê

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 11-5 Lưu đồ chức năng tạo thống kê

4.1.2 Tìm kiếm thống kê theo khoảng thời gian

- Mục đích : liệt kê các thống kê theo khoảng thời gian

Hình ảnh 12-6 Giao diện chức năng tìm kiếm thống kê

Bảng 57-33 Các thành phần giao diện chức năng tìm kiếm thống kê theo khoảng thời gian

Tên điều khiển Nội dung Giá trị mặc định

1 Date date_begin Ngày bắt đầu

2 Date date_end Ngày kết thúc

- Dữ liệu được sử dụng:

Bảng 58-34 Dữ liệu được sử dụng cho chức năng tìm kiếm thống kê theo khoảng thời gian

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 13-6-2 Lưu đồ chức năng tìm kiếm thống kê theo khoảng thời gian

4.1.3 Xem thống kê theo ngày

- Mục đích : xem thống kê theo ngày nhất định

Hình ảnh 14-7 Giao diện chức năng thống kê theo ngày

Bảng 59-35 Các thành phần giao diện chức năng xem thống kê theo ngày

Tên điều khiển Nội dung Giá trị mặc định

1 Td Test Thống kê của ngày

2 Button buttonDetail Nút xem chi tiết

- Dữ liệu được sử dụng:

Bảng 60-36 Dữ liệu được dùng cho chức năng xem thống kê theo ngày

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 15-8 Lưu đồ chức năng thống kê theo ngày

4.1.4 Xem thống kê theo chi nhánh

- Mục đích: xem thống kê số liệu theo từng chi nhánh cụ thể

Hình ảnh 16-9 Giao diện chức năng thống kê theo chi nhánh

Bảng 61-37 Các thành phần giao diện chức năng xem thống kê theo chi nhánh

Tên điều khiển Nội dung Giá trị mặc định

1 Select Br_id Id chi nhánh

2 Button buttonSubmit Nút liệt kê

- Dữ liệu được sử dụng:

Bảng 62-38 Dữ liệu được sử dụng cho chức năng xem thống kê theo chi nhánh

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 17-10 Lưu đồ chức năng thống kê theo chi nhánh

- Mục đích: Xuất bản PDF của thống kê

Hình ảnh 18-11 Giao diện chức năng thống kê theo khoảng thời gian

Bảng 63-39 Các thành phần giao diện chức năng in thống kê

Tên điều khiển Nội dung Giá trị mặc định

2 Form formStatistical Form liệt kê theo ngày

3 Button buttonPDF Nút xuất file

- Dữ liệu được sử dụng:

Bảng 64-40 Dữ liệu được sử dụng cho chức năng in thống kê

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 19-12 Lưu đồ chức năng thống kê theo khoảng thời gian

4.2 Chức năng quản lý bàn

Hình ảnh 20-13 Giao diện chức năng quản lý bàn

- Mục đích: Tạo đơn đặt cho khách

Hình ảnh 21-14 Giao diện chức năng tạo đơn đặt

Bảng 65-41 Các thành phần giao diện chức năng tạo đơn đặt

Tên điều khiển Nội dung Giá trị mặc định

1 Text t_id Id của bàn

2 Text num Số người ngồi tại bàn

3 Text br_id Id của chi nhánh

4 Select s_id Id của bảng thống kê

- Dữ liệu được sử dụng:

Bảng 66-42 Dữ liệu được sử dụng cho chức năng tạo đơn đặt

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 22-15 Lưu đồ chức năng tạo đơn đặt

- Mục đích: Thêm món vào đơn vừa đặt

Hình ảnh 23-16 Giao diện chi tiết đơn đặt

Hình ảnh 24-17 Giao diện chức năng thêm món cho đơn đặt

Bảng 67-43 Các thành phần giao diện chức năng thêm thức uống cho đơn đặt

Tên điều khiển Nội dung Giá trị mặc định

1 Text o_id Id của đơn đặt

2 Select od_pro_id Id của sản phẩm

3 Text od_price Giá sản phẩm

4 Text od_quantity Số lượng

- Dữ liệu được sử dụng:

Bảng 68-44 Dữ liệu được sử dụng cho chức năng thêm thức uống cho đơn đặt

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 25-18 Lưu đồ chức năng thêm món cho đơn đặt

- Mục đích: Thanh toán đơn đặt cho khách

Hình ảnh 26-19 Giao diện danh sách đơn đặt của bàn

Hình ảnh 27-20 Giao diện thanh toán đơn đặt

Bảng 69-45 Các thành phần giao diện chức năng xác nhận thanh toán

Tên điều khiển Nội dung Giá trị mặc định

1 Text o_id Id của đơn đặt

2 Text o_t_id Id của bàn

3 Select s_id Id của thống kê

- Dữ liệu được sử dụng:

Bảng 70-46 Dữ liệu được sử dụng cho chức năng xác nhận thanh toán

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 28-21 Lưu đồ chức năng thanh toán đơn đặt

4.3 Chức năng quản lý lịch

Hình ảnh 29-22 Giao diện chức năng quản lý lịch

- Mục đích: Tạo lịch làm việc để nhân viên đăng ký

Hình ảnh 30-23 Giao diện chức năng tạo lịch mới

Bảng 71-47 Các thành phần giao diện chức năng tạo lịch mới

Tên điều khiển Nội dung Giá trị mặc định

1 Date cld_begin Ngày bắt đầu

2 Date cld_end Ngày kết thúc

3 Select ib_br_id Id của chi nhánh

4 Select ib_s_id Id của thống kê

- Dữ liệu được sử dụng:

Bảng 72-48 Dữ liệu được sử dụng cho chức năng tạo lịch mới

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 31-24 Lưu đồ chức năng tạo lịch mới

- Mục đích: Tạo chi tiết lịch phân chia buổi và giờ làm

Hình ảnh 32-25 Giao diện chức năng chi tiết lịch

Hình ảnh 33-26 Giao diện chức năng tạo chi tiết lịch

Bảng 73-49 Các thành phần giao diện chức năng tạo chi tiết lịch

Tên điều khiển Nội dung Giá trị mặc định

1 Date Cd_date Ngày của chi tiết lịch

2 Select Cd_shift_id Id của ca làm

4 Text Cd_cld_id Id của thống kê

- Dữ liệu được sử dụng:

Bảng 74-50 Dữ liệu được sử dụng cho chức năng tạo chi tiết lịch

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 34-27 Lưu đồ chức năng tạo chi tiết lịch

- Mục đích: đăng kí lịch làm cho ngày mai

Hình ảnh 35-28 Giao diện chức năng đăng ký lịch

Bảng 75-51 Các thành phần giao diện chức năng đăng ký lịch

Tên điều khiển Nội dung Giá trị mặc định

1 Table tableCalendar Bảng chi tiết lịch

2 Button buttonRegister Nút đăng ký lịch

- Dữ liệu được sử dụng:

Bảng 76-52 Dữ liệu được sử dụng cho chức năng đăng ký lịch

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 36-29 Lưu đồ chức năng đăng ký lịch

- Mục đích: Xóa lịch khỏi danh sách chi tiết lịch

Hình ảnh 37-30 Giao diện chức năng xóa lịch

Bảng 77-53 Các thành phần giao diện chức năng xóa lịch

Tên điều khiển Nội dung Giá trị mặc định

1 Td Chi tiết lịch Dòng chi tiết lịch

2 Button deleteCD Nút xóa chi tiết lịch

3 Button buttonRegister Nút đăng ký lịch

- Dữ liệu được sử dụng:

Bảng 78-54 Dữ liệu được sử dụng cho chức năng xóa lịch

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 38-31 Lưu đồ chức năng xóa lịch

4.4 Chức năng quản lý đơn pha chế

Hình ảnh 39-32 Giao diện chức năng quản lý đơn pha chế

4.4.1 Xem chi tiết đơn và xác nhận pha chế

- Mục đích: Xem chi tiết các món trong đơn để pha chế, sau đó xác nhận đã pha chế xong

Hình ảnh 40-33 Giao diện chức năng xem chi tiết đơn và xác nhận pha chế

Bảng 79-55 Các thành phần giao diện chức năng xem chi tiết đơn và xác nhận pha chế

Tên điều khiển Nội dung Giá trị mặc định

1 Text pro_name Tên thức uống

2 Text od_quantity Số lượng

3 Text od_price Giá tiền

- Dữ liệu được sử dụng:

Bảng 80-56 Dữ liệu được sử dụng cho chức năng xem chi tiết đơn và xác nhận pha chế

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 41-34 Lưu đồ chức năng xem chi tiết đơn và xác nhận pha chế

4.5 Chức năng quản lý đơn nhập

Hình ảnh 42-35.Giao diện chức năng quản lý đơn nhập

- Mục đích: Tạo đơn nhập cho các nguyên liệu còn ít

Hình ảnh 43-36 Giao diện chức năng tạo đơn nhập

Bảng 81-57 Các thành phần giao diện chức năng tạo đơn nhập

Tên điều khiển Nội dung Giá trị mặc định

1 Text ib_name Tên đơn nhập

2 Text ib_date Ngày tạo

3 Select ib_br_id Id của chi nhánh nhập

4 Select ib_s_id Id của thống kê

- Dữ liệu được sử dụng:

Bảng 82-58 Dữ liệu được sử dụng cho chức năng tạo đơn nhập

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 44-37 Lưu đồ chức năng tạo đơn nhập

4.5.2 Thêm nguyên liệu cho đơn nhập

- Mục đích: Thêm nguyên liệu cần nhập vào đơn nhập

Hình ảnh 45-38 Giao diện chức năng xem chi tiết đơn nhập

Hình ảnh 46-39 Giao diện chức năng thêm nguyên liệu cho đơn nhập

Bảng 83-59 Các thành phần giao diện chức năng thêm nguyên liệu cho đơn nhập

Tên điều khiển Nội dung Giá trị mặc định

1 Text ing_id Id của nguyên liệu

2 Text ibd_cost Giá của nguyên liệu

3 Select ibd_amount Số lượng

4 Text ibd_ib_id Id của đơn nhập

5 Text ibd_cost Giá hiện tại của đơn nhập

- Dữ liệu được sử dụng:

Bảng 84-60 Dữ liệu được sử dụng cho chức năng thêm nguyên liệu cho đơn nhập

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 47-40 Lưu đồ chức năng thêm nguyên liệu cho đơn nhập

4.6 Chức năng quản lý nguyên liệu

Hình ảnh 48-41 Giao diện chức năng quản lý nguyên liệu

4.6.1 Thông báo các nguyên liệu cần nhập thêm

- Mục đích: Hiển thị các nguyên liệu trong kho với số lượng còn ít, cần được nhập thêm

Hình ảnh 49-42 Giao diện chức năng thông báo nguyên liệu cần nhập thêm

Bảng 85-61 Các thành phần giao diện chức năng thông báo nguyên liệu cần nhập thêm

Tên điều khiển Nội dung Giá trị mặc định

1 H2 Title Tiêu đề thông báo

2 Table Hiển thị những nguyên liệu cần nhập

4 Button createImportBill Tạo đơn nhập

- Dữ liệu được sử dụng:

Bảng 86-62 Dữ liệu được sử dụng cho chức năng thông báo nguyên liệu cần nhập thêm

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 50-43 Lưu đồ chức năng xem thông báo nguyên liệu cần nhập thêm

- Mục đích: Thêm giá theo ngày cho nguyên liệu

Hình ảnh 51-44 Giao diện chức năng thêm giá nguyên liệu

Bảng 87-63 Các thành phần giao diện chức năng thêm giá nguyên liệu

Tên điều khiển Nội dung Giá trị mặc định

1 Text ip_ing_name Tên nguyên liệu

2 Text ip_price Giá nguyên liệu

4 Button buttonSubmit Nút thêm giá

- Dữ liệu được sử dụng:

Bảng 88-64 Dữ liệu được sử dụng cho chức năng thêm giá nguyên liệu

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 52-45 Lưu đồ chức năng thêm giá nguyên liệu

- Mục đích: Thêm nguyên liệu mới vào kho

Hình ảnh 53-46 Giao diện chức năng thêm nguyên liệu

Bảng 89-65 Các thành phần giao diện chức năng thêm nguyên liệu mới

Tên điều khiển Nội dung Giá trị mặc định

1 Text ing_name Tên nguyên liệu

2 Text ing_amount Số lượng

3 Select ing_unit_id Id của đơn vị

4 Select ing_ip_id Giá nguyên liệu

- Dữ liệu được sử dụng:

Bảng 90-66 Dữ liệu được sử dụng cho chức năng thêm nguyên liệu mới

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 54-47 Lưu đồ chức năng thêm nguyên liệu

4.6.4 Chỉnh sửa thông tin nguyên liệu

- Mục đích: Chỉnh sửa thông tin của nguyên liệu

Hình ảnh 55-48 Giao diện chức năng sửa nguyên liệu

Bảng 91-67 Các thành phần giao diện chức năng chỉnh sửa nguyên liệu

Tên điều khiển Nội dung Giá trị mặc định

1 Text ing_name Tên nguyên liệu

2 Text ing_amount Số lượng

3 Select ing_unit_id Id của đơn vị

4 Select ing_ip_id Id của giá nguyên liệu

5 Text ing_id Id của nguyên liệu

- Dữ liệu được sử dụng:

Bảng 92-68 Dữ liệu được sử dung cho chức năng chỉnh sửa nguyên liệu

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 56-49 Lưu đồ chức năng sửa nguyên liệu

4.7 Chức năng quản lý sản phẩm

Hình ảnh 57-50 Giao diện chức năng quản lý sản phẩm

- Mục đích: thêm cách pha chế cho sản phẩm

Hình ảnh 58-51 Giao diện chức năng thêm cách pha chế

Bảng 93-69 Các thành phần giao diện chức năng thêm cách pha chế

Tên điều khiển Nội dung Giá trị mặc định

1 Text b_name Tên cách pha chế

2 Text b_description Hướng dẫn các bước pha chế

3 Button buttonSubmit Nút thêm cách pha chế

- Dữ liệu được sử dụng:

Bảng 94-70 Dữ liệu được sử dụng cho chức năng thêm cách pha chế

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 59-52 Lưu đồ chức năng thêm cách pha chế

- Mục đích: thêm giá sản phẩm theo ngày

Hình ảnh 60-53 Giao diện chức năng thêm giá sản phẩm

Bảng 95-71 Các thành phần giao diện chức năng thêm giá sản phẩm

Tên điều khiển Nội dung Giá trị mặc định

1 Text pp_pro_name Tên sản phẩm

4 Button buttonSubmit Nút thêm giá

- Dữ liệu được sử dụng:

Bảng 96-72 Dữ liệu được sử dụng cho chức năng thêm giá sản phẩm

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 61-54 Lưu đồ chức năng thêm giá sản phẩm

- Mục đích: Thêm mới sản phẩm vào danh sách

Hình ảnh 62-55 Giao diện chức năng thêm sản phẩm

Bảng 97-73 Các thành phần giao diện chức năng thêm sản phẩm

Tên điều khiển Nội dung Giá trị mặc định

1 Text pro_name Tên nguyên liệu

2 Select pro_pp_id Id giá sản phẩm

3 Select pro_pt_id Id loại sản phẩm

4 Select pro_b_id Id cách pha chế

5 Text pro_description Mô tả

6 File pro_img Ảnh sản phẩm

- Dữ liệu được sử dụng:

Bảng 98-74 Dữ liệu được sử dụng cho chức năng thêm sản phẩm

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 63-56 Lưu đồ chức năng thêm sản phẩm

- Mục đích: Chỉnh sửa thông tin của sản phẩm

Hình ảnh 64-57 Giao diện chức năng sửa sản phẩm

Bảng 99-75 Các thành phần giao diện chức năng chỉnh sửa sản phẩm

Tên điều khiển Nội dung Giá trị mặc định

1 Text pro_name Tên nguyên liệu

2 Text pro_description Mô tả

- Dữ liệu được sử dụng:

Bảng 100-76 Dữ liệu được sử dụng cho chức năng chỉnh sửa sản phẩm

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 65-58 Lưu đồ chức năng sửa sản phẩm

- Mục đích: Xóa sản phẩm khỏi danh sách

Hình ảnh 66-59 Giao diện chức năng xóa sản phẩm

Bảng 101-77 Các thành phần giao diện chức năng xóa sản phẩm

Tên điều khiển Nội dung Giá trị mặc định

2 Text pro_name Tên sảng phẩm

- Dữ liệu được sử dụng:

Bảng 102-78 Dữ liệu được sử dung cho chức năng xóa sản phẩm

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 67-60 Lưu đồ chức năng xóa sản phẩm

4.7.6 Chỉnh công thức pha chế

- Mục đích: Chỉnh sửa công thức pha chế cho sản phẩm

Hình ảnh 68-61 Giao diện chức năng chỉnh công thức pha chế

Bảng 103-79 Các thành phần giao diện chức năng chỉnh công thức pha chế

Tên điều khiển Nội dung Giá trị mặc định

1 Textarea b_description Các bước pha chế

2 Text ing_number Số thứ tự

3 Text ing_name Tên nguyên liệu

4 Text bd_amount Liều lượng

5 Button buttonDelete Nút xóa nguyên liệu

6 Button buttonSave Nút lưu thông tin chỉnh sửa

7 Button buttonAdd Nút thêm nguyên liệu

- Dữ liệu được sử dụng:

Bảng 104-80 Dữ liệu được sử dụng cho chức năng chỉnh công thức pha chế

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 69-62 Lưu đồ chức năng chỉnh công thức pha chế

- Mục đích: Thực hiện chấm công nhân viên

Hình ảnh 70-63 Giao diện chức năng chấm công

Bảng 105-81 Các thành phần giao diện chức năng chấm công

Tên điều khiển Nội dung Giá trị mặc định

1 Text tk_u_id Id nhân viên

2 Text u_name Tên nhân viên

3 Text tk_note Ghi chú

4 Date tk_date Ngày chấm công

5 Text tk_s_id Ca làm việc

6 Text br_id Thuộc chi nhánh

7 Text cd_id Id lịch

8 Text s_id Thuộc thống kê

- Dữ liệu được sử dụng:

Bảng 106-82 Dữ liệu được sử dụng cho chức năng chấm công

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 71-64 Lưu đồ chức năng chấm công

4.9 Chức năng quản lý ví

Hình ảnh 72-65 Giao diện chức năng quản lý ví

- Mục đích: Tạo đơn rút tiền

Hình ảnh 73-66 Giao diện chức năng rút tiền

Bảng 107-83 Các thành phần giao diện chức năng rút tiền

Tên điều khiển Nội dung Giá trị mặc định

2 Text tran_money Số tiền rút

- Dữ liệu được sử dụng:

Bảng 108-84 Dữ liệu được sử dụng cho chức năng rút tiền

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 74-67 Lưu đồ chức năng rút tiền

- Mục đích: In đơn rút chi tiết kích thước A6

Hình ảnh 75-68 Giao diện chức năng in đơn rút

Bảng 109-85 Các thành phần giao diện chức năng in đơn rút

Tên điều khiển Nội dung Giá trị mặc định

1 H2 title Thông tin về quán

2 Table trans Bảng chứa thông tin đơn

- Dữ liệu được sử dụng:

Bảng 110-86 Dữ liệu được sử dụng cho chức năng in đơn rút

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 76-69 Lưu đồ chức năng in đơn rút

4.10 Chức năng duyệt đơn rút

- Mục đích: Duyệt các đơn rút cho nhân viên

Hình ảnh 77-70 Giao diện chức năng duyệt đơn rút

Bảng 111-87 Các thành phần giao diện chức năng duyệt đơn rút

Tên điều khiển Nội dung Giá trị mặc định

2 Table Data Bảng chứa thông tin đơn

- Dữ liệu được sử dụng:

Bảng 112-88 Dữ liệu được sử dụng cho chức năng duyệt đơn rút

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 78-71 Lưu đồ chức năng duyệt đơn rút

4.11 Chức năng quản lý truy cập trái phép

Hình ảnh 79-72 Giao diện chức năng quản lý truy cập trái phép

4.11.1 Liệu kê số lần truy cập trái phép

- Mục đích: Liệt kê số lần truy cập trái phép để thực hiện xử phạt

Hình ảnh 80-73 Giao diện chức năng liệt kê số lần truy cập trái phép

Bảng 113-89 Các thành phần giao diện chức năng liệt kê theo số lần truy cập trái phép

Tên điều khiển Nội dung Giá trị mặc định

2 Select numberTCTP Số lần truy cập trái phép

- Dữ liệu được sử dụng:

Bảng 114-90 Dữ liệu được sử dụng cho chức năng liệt kê theo số lần truy cập trái phép

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 81-74 Lưu đồ chức năng liệt kê số lần truy cập trái phép

- Mục đích: Xử phạt hành vi truy cập trái phép

Hình ảnh 82-75 Giao diện chức năng thực hiện xử phạt

Hình ảnh 83-76 Giao diện các lựa chọn xử phạt

Bảng 115-91 Các thành phần giao diện chức năng thực hiện xử phạt

Tên điều khiển Nội dung Giá trị mặc định

2 Select phat_id Hình thức phạt

3 Button buttonSubmit Nút xác nhận

- Dữ liệu được sử dụng:

Bảng 116-92 Dữ liệu được sử dụng cho chức năng thực hiện xử phạt

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 84-77 Lưu đồ chức năng thực hiện xử phạt

4.12 Chức năng quản lý nhân viên

Hình ảnh 85-77-1 Giao diện chức năng quản lý nhân viên

- Mục đích: thêm nhân viên mới vào quán

Hình ảnh 86-77-2 Giao diện chức năng thêm nhân viên

Bảng 117-92-1 Các thành phần giao diện chức năng thêm nhân viên

Tên điều khiển Nội dung Giá trị mặc định

1 Text u_name Tên nhân viên

4 Text u_phone Số điện thoại

- Dữ liệu được sử dụng:

Bảng 118-92-2 Dữ liệu được sử dụng cho chức năng thêm nhân viên

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 87-77-3 Lưu đồ chức năng thêm nhân viên

4.12.2 Sửa thông tin nhân viên

- Mục đích: sửa thông tin nhân viên

Hình ảnh 88-77-4 Giao diện chức năng sửa thông tin nhân viên

Bảng 119-92-3 Các thành phần giao diện chức năng sửa thông tin nhân viên

Tên điều khiển Nội dung Giá trị mặc định

1 Text u_name Tên nhân viên

2 Text u_phone Số điện thoại

- Dữ liệu được sử dụng:

Bảng 120-92-4 Dữ liệu được sử dụng cho chức năng sửa thông tin nhân viên

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 89-77-5 Lưu đồ chức năng sửa thông tin nhân viên

- Mục đích: tắt khả năng truy cập của tài khoản nhân viên

Hình ảnh 90-77-6 Giao diện chức năng xóa nhân viên

Bảng 121-92-5 Các thành phần giao diện chức năng xóa nhân viên

Tên điều khiển Nội dung Giá trị mặc định

2 Text u_name Tên nhân viên

- Dữ liệu được sử dụng:

Bảng 122-92-6 Dữ liệu được sử dụng cho chức năng xóa nhân viên

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 91-77-7 Lưu đồ chức năng xóa nhân viên

4.13 Chức năng quản lý đơn đặt trên ứng dụng di động

Hình ảnh 92-78 Giao diện chức năng quản lý đơn đặt trên ứng dụng di động

- Mục đích: Tạo đơn đặt cho khách:

Hình ảnh 93-79 Giao diện chức năng tạo đơn đặt

Bảng 123-93 Các thành phần giao diện chức năng tạo đơn đặt trên ứng dụng di động

Tên điều khiển Nội dung Giá trị mặc định

3 TextInput o_br_id Chi nhánh

- Dữ liệu được sử dụng:

Bảng 124-94 Dữ liệu được sử dụng cho chức năng tạo đơn đặt trên ứng dụng di động

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 94-80 Lưu đồ chức năng tạo đơn đặt

- Mục đích: thêm món cho đơn đặt

Hình ảnh 95-81 Giao diện chức năng thêm món

Bảng 125-95 Các thành phần giao diện chức năng thêm món trên ứng dụng di động

Tên điều khiển Nội dung Giá trị mặc định

1 TextInput od_pro_id Id sản phẩm

2 TextInput od_quantity Số lượng

- Dữ liệu được sử dụng:

Bảng 126-96 Dữ liệu được sử dụng cho chức năng thêm món trên ứng dụng di động

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 96-82 Lưu đồ chức năng thêm món

- Mục đích: Xóa món ra khỏi đơn

Hình ảnh 97-83 Giao diện chức năng sửa đơn đặt

Bảng 127-97 Các thành phần giao diện chức năng sửa đơn đặt trên ứng dụng di động

STT Loại điều khiển Tên điều khiển

Nội dung Giá trị mặc định

3 ScrollView list_od Danh sách đồ uống trong đơn

4 TouchableOpacity del_OD Nút xóa sản phẩm

- Dữ liệu được sử dụng:

Bảng 128-98 Dữ liệu được sử dụng cho chức năng sửa đơn đặt trên ứng dụng di động

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 98-84 Lưu đồ chức năng sửa đơn đặt

4.14 Chức năng quản lý bàn trên ứng dụng di động

Hình ảnh 99-85 Giao diện chức năng quản lý bàn trên ứng dụng di động

- Mục đích: thực hiện thao tác gộp bàn cho khách

Hình ảnh 100-86 Giao diện chức năng gộp bàn

Bảng 129-99 Các thành phần giao diện chức năng gộp bàn trên ứng dụng di động

STT Loại điều khiển Tên điều khiển Nội dung Giá trị mặc định

1 TextInput o_id Id của đơn đặt

3 TextInput o_id_old Id của đơn đặt bị gộp

4 TextInput o_cost Tổng tiền của đơn bị gộp

5 TextInput o_id_new Id của đơn đặt sẽ gộp

- Dữ liệu được sử dụng:

Bảng 130-100 Dữ liệu được sử dụng cho chức năng gộp bàn trên ứng dụng di động

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 101-87 Lưu đồ chức năng gộp bàn trên ứng dụng dị động

4.14.2 Chức năng xác nhận thanh toán

- Mục đích: xác nhận thanh toán cho đơn

Hình ảnh 102-88 Giao diện chức năng xác nhận thanh toán

- Thành phần của giao diện:

Bảng 131-101 Các thành phần giao diện chức năng xác nhận thanh toán trên ứng dụng di động

STT Loại điều khiển Tên điều khiển Nội dung Giá trị mặc định

2 ScrollView List_OD Danh sách đồ uống có trong đơn

3 TouchableOpacity ConfirmPay Xác nhận thanh toán xong

- Dữ liệu được sử dụng:

Bảng 132-102 Dữ liệu được sử dụng cho chức năng xác nhận thanh toán trên ứng dụng di động

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 103-89 Lưu đồ chức năng xác nhận thanh toán

4.15 Chức năng đăng ký lịch trên ứng dụng di động

- Mục đích: đăng kí lịch làm

Hình ảnh 104-90 Giao diện chức năng đăng ký lịch trên ứng dụng di động

Bảng 133-103 Các thành phần giao diện chức năng đăng ký lịch trên ứng dụng di động

STT Loại điều khiển Tên điều khiển Nội dung Giá trị mặc định

2 ScrollView calendar Danh sách chi tiết lịch trong tuần

3 TouchableOpacity dangki_Lich Nút đăng kí lịch

- Dữ liệu được sử dụng:

Bảng 134-104 Dữ liệu được sử dụng cho chức năng đăng ký lịch trên ứng dụng di động

STT Tên bảng Phương thức

Thêm Sửa Xóa Truy vấn

Hình ảnh 105-91 Lưu đồ chức năng đăng ký lịch trên ứng dụng di động

KIỂM THỬ VÀ ĐÁNH GIÁ

Chi tiết kế hoạch kiểm thử

2.1 Các trường hợp kiểm thử

- Quản lý truy cập trái phép

- Quản lý đơn đặt trên ứng dụng di động

- Quản lý bàn trên ứng dụng di động

- Đăng ký lịch trên ứng dụng di động

2.2 Các trường hợp không được kiểm thử

- Xem chi tiết thống kê

- Xem thống kê theo chi nhánh

- Xem chi tiết pha chế

- Xem chi tiết đơn nhập

- Xem ca đã trực trên ứng dụng di động

- Xem lương trên ứng dụng di động

- Xem mã QR thanh toán trên ứng dụng di động

Với các tính năng chính hay các nhóm tính năng sẽ được kiểm thử từ trên xuống và từ trái qua phải để chắc chắn rằng việc bỏ sót sẽ không xảy ra

2.4 Tiêu chí kiểm thử thành công/ thất bại

- Tiêu chí kiểm thử thành công là kết quả đạt được của chức năng như mong đợi và đúng với đặt tả yêu cầu

- Tiêu chí kiểm thử thất bại là kết quả không như mong đợi và xuất hiện lỗi

2.5 Tiêu chí đình chỉ và yêu cầu bắt đầu lại

- Tiêu chí đình chỉ là dừng việc thực thi công việc khi có một chức năng nào đó gặp lỗi

- Yêu cầu bắt đầu lại khi chức năng đình chỉ đã được sửa lỗi.

Quản lý kiểm thử

3.1 Các hoạt động/ công việc được lập kế hoạch, sự tiến hành kiểm thử

- Lập kế hoạch kiểm thử

 Bộ vi xử lý: Intel Core i5-4210H

 Hệ điều hành Windows 10 64bit

 Hệ cơ sở dữ liệu MySQL Workbench

3.3 Trách nhiệm và quyền hạn

Bảng 135-1 Bảng trách nhiệm và quyền hạn

Quản lý Thiết kế Chuẩn bị Thực hiện Chứng kiến Kiểm tra

3.4 Tài nguyên và sự cấp phát chúng

Bảng 136-2 Bảng các rủi ro

Tên rủi ro Mức độ Kế hoạch

Thiếu nhân sự kiểm thử Trung bình Tăng số lượng kiểm thử

Kiểm thử không đúng tiến độ

Cao Tăng tiến độ kiểm thử

Kiểm thử không hiệu quả

Thấp Tham khảo các nguồn tài liệu kiểm thử

Bảng 137-3 Bảng kịch bản kiểm thử

Test Scenario Description Importance No of Test Cases

Kiểm tra người dùng có đăng nhập được ứng dụng hay không? P1 2

Kiểm tra người dùng đăng xuất tài khoản được hay không ? P1 1

Kiểm tra quản trị viên có thêm thống kê được hay không ? P1 2

Kiểm tra quản trị viên có thêm lịch với trường dữ liệu hợp lệ được không ? P1 1

Kiểm tra quản trị viên thêm chi tiết lịch với trường dữ liệu hợp lệ được hay không ? P1 2

Kiểm tra nhân viên chấm công đúng lịch đã đăng kí được không ? P1 2

Kiểm tra nhân viên thêm đơn đặt cho bàn trống được không ? P1 2

Kiểm tra nhân viên thêm món cho đơn vừa đặt được không ? P1 2

Kiểm tra nhân viên xác nhận đơn thành công không ? P1 1

Kiểm tra nhân viên thực hiện thanh toán cho đơn đặt có được không ? P1 2

Kiểm tra nhân viên thực hiện duyệt đơn pha chế thành công không ? P1 1

Kiểm tra nhân viên thực hiện chỉnh sửa cách pha chế thành công không ? P1 1

Kiểm tra nhân viên thực hiện tạo đơn nhập được không ? P1 2

Kiểm tra nhân viên thực hiện thêm nguyên liệu cho đơn nhập có được không ? P1 2

Kiểm tra nhân viên thực hiện thêm giá nguyên liệu thành công không ? P1 2

Kiểm tra nhân viên thực hiện thêm nguyên liệu thành công không ? P1 2

Kiểm tra nhân viên thực hiện sửa nguyên liệu thành công không ? P1 1

Kiểm tra nhân viên thực hiện tạo đơn rút tiền có được không ? P1 2

Kiểm tra quản trị viên thực hiện duyệt đơn rút thành công không ? P1 1

Kiểm tra quản trị viên thực hiện thêm giá cho sản phẩm có được không ? P1 3

Kiểm tra nhân viên thực hiện thêm cách pha chế có được không ? P1 3

Kiểm tra quản trị viên thực hiện thêm sản phẩm có được không ? P1 2

Kiểm tra quản trị viên thực hiện sửa sản phẩm có được không ? P1 1

Kiểm tra quản trị viên thực hiện xóa sản phẩm có được không ? P1 1

Kiểm tra quản trị viên thực hiện phạt nhân viên có hành vi truy cập trái phép thành công không

Kiểm tra nhân viên thực hiện thêm phí phát sinh thành công không ? P1 3

Kiểm tra nhân viên order thực hiện tạo đơn đặt trên ứng dụng di động có thành công không ? P1 1

Kiểm tra nhân viên order thực hiện thêm món cho đơn đặt trên ứng dụng di động có thành công không ? P1 1

Kiểm tra nhân viên order thực hiện sửa đơn đặt trên ứng dụng di động có thành công không ? P1 1

Kiểm tra nhân viên order thực hiện gộp bàn trên ứng dụng di động có thành công không ? P1 1

Kiểm tra nhân viên order thực hiện thanh toán đơn đặt trên ứng dụng di động có thành công không ? P1 1

Kiểm tra nhân viên order thực hiện đăng ký lịch trên ứng dụng di động có thành công không ? P1 1

Kiểm tra quản trị viên thực hiện thêm nhân viên thành công không ?

Kiểm tra quản trị viên thực hiện sửa thông tin nhân viên có thành công không ?

Kiểm tra quản trị viên thực hiện xóa nhân viên có thành công không ?

Các trường hợp kiểm thử

4.1 Kiểm thử chức năng đăng nhập

Hình ảnh 106-1 Kiểm thử chức năng đăng nhập

Hình ảnh 107-2 Kiểm thử chức năng đăng xuất

Hình ảnh 108-3 Kiểm thử chức năng thêm thống kê

4.4 Chức năng quản lý lịch

Hình ảnh 109-4 Kiểm thử chức năng thêm lịch

Hình ảnh 110-5 Kiểm thử chức năng thêm chi tiết lịch

Hình ảnh 111-6 Kiểm thử chức năng chấm công

Hình ảnh 112-7 Kiểm thử chức năng thêm đơn đặt

Hình ảnh 113-8 Kiểm thử chức năng thêm món

Hình ảnh 114-9 Kiểm thử chức năng xác nhận đơn

Hình ảnh 115-10 Kiểm thử chức năng xác nhận thanh toán

Hình ảnh 116-11 Kiểm thử chức năng duyệt đơn pha chế

Hình ảnh 117-12 Kiểm thử chức năng sửa cách pha chế

Hình ảnh 118-13 Kiểm thử chức năng thêm đơn nhập

4.8.2 Thêm nguyên liệu cho đơn nhập

Hình ảnh 119-14 Kiểm thử chức năng thêm nguyên liệu cho đơn nhập

Hình ảnh 120-15 Kiểm thử chức năng thêm giá nguyên liệu

Hình ảnh 121-16 Kiểm thử chức năng thêm nguyên liệu

Hình ảnh 122-17 Kiểm thử chức năng sửa nguyên liệu

Hình ảnh 123-18 Kiểm thử chức năng tạo đơn rút

Hình ảnh 124-19 Kiểm thử chức năng duyệt đơn rút

Hình ảnh 125-20 Kiểm thử chức năng thêm giá sản phẩm

Hình ảnh 126-21 Kiểm thử chức năng thêm cách pha chế

Hình ảnh 127-22 Kiểm thử chức năng thêm sản phẩm

Hình ảnh 128-23 Kiểm thử chức năng sửa sản phẩm

Hình ảnh 129-24 Kiểm thử chức năng xóa sản phẩm

4.13 Quản lý truy cập trái phép

4.13.1 Phạt hành vi truy cập trái phép

Hình ảnh 130-25 Kiểm thử chức năng phạt hình vi truy cập trái phép

Hình ảnh 131-26 Kiểm thử chức năng thêm phí phát sinh

Hình ảnh 132-26-1 Kiểm thử chức năng thêm nhân viên

4.15.2 Sửa thông tin nhân viên

Hình ảnh 133-26-2 Kiểm thử chức năng sửa thông tin nhân viên

Hình ảnh 134-26-3 Kiểm thử chức năng xóa nhân viên

4.16 Quản lý đơn đặt trên ứng dụng di động

Hình ảnh 135-27 Kiểm thử chức năng tạo đơn đặt trên ứng dụng di động

Hình ảnh 136-28 Kiểm thử chức năng thêm món cho đơn đặt trên ứng dụng di động

Hình ảnh 137-29 Kiểm thử chức năng sửa đơn đặt trên ứng dụng di động

4.17 Quản lý bàn trên ứng dụng di động

Hình ảnh 138-30 Kiểm thử chức năng gộp bàn trên ứng dụng di động

Hình ảnh 139-31 Kiểm thử chức năng thanh toán đơn đặt trên ứng dụng di động

4.18 Đăng ký lịch trên ứng dụng di động

Hình ảnh 140-32 Kiểm thử chức năng đăng ký lịch trên ứng dụng di động

Ngày đăng: 30/10/2024, 08:48

w