1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

PHẦN MỀM QUẢN LÝ QUÁN ĂN SỬ DỤNG C

41 4 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 đề Phần Mềm Quản Lý Quán Ăn Sử Dụng C#
Tác giả Lê Anh Quân
Người hướng dẫn T.S Trần Ngọc Tú
Trường học Trường Đại Học Giao Thông Vận Tải
Chuyên ngành Cơ Sở Dữ Liệu
Thể loại Báo Cáo Bài Tập Lớn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 41
Dung lượng 2,17 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN (4)
    • 1. GIỚI THIỆU VỀ SQL VÀ CÁCH CÀI ĐẶT (4)
      • 1.1. Giới thiệu về SQL (4)
      • 1.2. Cách cài đặt SQL Server (Installation) (5)
        • 1.2.1. Tải và cài đặt SQL Sever 2022 (5)
        • 1.2.2. Cài đặt SQL Management Studio (7)
      • 1.3. Giới thiệu về Visual Studio (8)
      • 1.4. Cách tải Visual Studio (9)
  • CHƯƠNG 2: PHÂN TÍCH (11)
    • 1. CHỨC NĂNG HỆ THỐNG (11)
    • 2. PHÂN TÍCH YÊU CẦU CỦA HỆ THỐNG (11)
      • 2.1. Biểu đồ Use-case (11)
        • 2.1.1. Biểu đồ Use-case hệ thống (11)
        • 2.1.2. Biểu đồ Use-case quản lý tài khoản (11)
        • 2.1.3. Biểu đồ Use-case đồ ăn, món ăn (12)
        • 2.1.4. Biểu đồ Use-case bàn ăn (12)
        • 2.1.5. Biểu đồ Use-case hóa đơn (12)
      • 2.2. Biểu đồ lớp (13)
  • CHƯƠNG 3: THIẾT KẾ HỆ THỐNG (15)
    • 1. THIẾT KẾ CƠ SỞ DỮ LIỆU (15)
      • 1.1. Mô hình quan hệ dữ liệu (15)
      • 1.2. Bảng cơ sở dữ liệu (15)
        • 1.2.1. TableFood (15)
        • 1.2.2. Account (15)
        • 1.2.3. FoodCategory (15)
        • 1.2.4. Food (15)
        • 1.2.5. Bill (16)
        • 1.2.6. BillInfo (16)
      • 1.3. Thiết kế dao diện (16)
        • 1.3.1. Giao diện đăng nhập (16)
        • 1.3.2. Giao diện đăng nhập bằng mã QR Code (17)
        • 1.3.3. Giao diện chính quản lý quán ăn (18)
        • 1.3.4. Giao diện thanh toán Internet Banking (19)
        • 1.3.5. Giao diện hiển thị doanh thu và thay đổi thông tin tài khoản, bàn, món ăn (20)
        • 1.3.6. Giao diện thay đổi tài khoản (23)
  • CHƯƠNG 4: CHƯƠNG TRÌNH TRÊN SQL VÀ TRÊN VISUAL STUDIO (24)
    • 1. CHƯƠNG TRÌNH TRÊN SQL (24)
    • 2. Chương trình trên Visual Studio (32)
  • CHƯƠNG 5: KẾT LUẬN (41)
    • 1. KẾT QUẢ ĐẠT ĐƯỢC CỦA ĐỀ TÀI (41)
    • 2. HẠN CHẾ CỦA ĐỀ TÀI (41)
    • 3. HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI (41)

Nội dung

PHẦN MỀM QUẢN LÝ QUÁN ĂN SỬ DỤNG C Code liên hệ: 0799155065 SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (Relational Database Management System (RDBMS) ) sử dụng câu lệnh SQL (TransactSQL) để trao đổi dữ liệu giữa máy Client và máy cài SQL Server. Một RDBMS bao gồm databases, database engine và các ứng dụng dùng để quản lý dữ liệu và các bộ phận khác nhau trong RDBMS. SQL Server được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu rất lớn (Very Large Database Environment) lên đến TeraByte và có thể phục vụ cùng lúc cho hàng ngàn user. SQL Server có thể kết hợp “ăn ý” với các server khác như Microsoft Internet Information Server (IIS), ECommerce Server, Proxy Server….

TỔNG QUAN

GIỚI THIỆU VỀ SQL VÀ CÁCH CÀI ĐẶT

SQL Server is a Relational Database Management System (RDBMS) that utilizes SQL (Transact-SQL) for data exchange between client machines and the SQL Server installation An RDBMS consists of databases, a database engine, and applications designed to manage data and various components within the system.

SQL Server is optimized to operate in very large database environments, handling data sizes up to terabytes while efficiently serving thousands of users simultaneously It seamlessly integrates with other servers, including Microsoft Internet Information Server (IIS), E-Commerce Server, and Proxy Server, enhancing its functionality and performance.

Một vài ấn bản SQL Server:

Phiên bản Enterprise của SQL Server tích hợp tất cả các tính năng nổi bật, bao gồm nhân bộ máy cơ sở dữ liệu, các dịch vụ đi kèm và công cụ quản lý phân cụm Phiên bản này có khả năng quản lý các cơ sở dữ liệu lớn, đáp ứng nhu cầu của doanh nghiệp.

524 petabytes và đánh địa chỉ 12 terabytes bộ nhớ và hỗ trợ tới 640 bộ vi xử lý(các core của cpu)

The Standard Edition is highly suitable for small to medium-sized companies due to its significantly lower cost compared to the Enterprise Edition However, it does have limitations on certain advanced features This edition is capable of operating efficiently on systems with up to 4 CPUs and 2 GB of RAM.

Phiên bản Developer cung cấp đầy đủ tính năng của Enterprise Edition nhưng được thiết kế đặc biệt với giới hạn số lượng người kết nối vào Server đồng thời Đây là phiên bản lý tưởng cho việc phát triển và kiểm tra ứng dụng, phù hợp cho cá nhân và tổ chức trong quá trình xây dựng và thử nghiệm sản phẩm.

Phiên bản SQL Server Workgroup cung cấp các chức năng cơ bản của cơ sở dữ liệu nhưng không bao gồm các dịch vụ bổ sung Lưu ý rằng phiên bản này đã không còn tồn tại kể từ SQL Server 2012.

SQL Server Express là một công cụ quản trị cơ sở dữ liệu dễ sử dụng, tích hợp hoàn hảo với Microsoft Visual Studio, giúp phát triển ứng dụng dữ liệu một cách an toàn và nhanh chóng Phiên bản miễn phí này không giới hạn số lượng cơ sở dữ liệu hay người sử dụng, nhưng có giới hạn về hiệu suất, chỉ hỗ trợ 1 bộ vi xử lý, 1 GB bộ nhớ và 10 GB dung lượng file cơ sở dữ liệu SQL Server Express là lựa chọn lý tưởng cho những người cần một phiên bản SQL Server nhỏ gọn, phù hợp với máy chủ cấu hình thấp, cũng như cho các nhà phát triển ứng dụng không chuyên và những người đam mê xây dựng ứng dụng nhỏ.

1.2 Cách cài đặt SQL Server (Installation)

1.2.1 Tải và cài đặt SQL Sever 2022

Bước 1: Vào đường link: https://www.microsoft.com/en-us/sql-server/sql- server-downloads.

Hình 1.1: Hình ảnh download SQL Server 2022

Tải bản Express nhưng bên trên hình về.

Bước 2: Truy cập vào đường link: https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management- studio-ssms?view=sql-server-ver16

Hình 1.2: Hình ảnh đường link download SSMS

Tải thư mục như bên trên hình về.

Bước 3: Giải nén file SQL 2022 vừa mới tải về và lựa chọn 1 trong 3 tùy vào mục đích của người dùng.

Hình 1.3: Hình ảnh các phiên bản của SQL 2022

Tiếp theo là kích chuột vào Accept.

Hình 1.4: Hình ảnh hướng dẫn cài đặt SQL

Tiếp theo là kích chuột vào Install.

Hình 1.5: Hình ảnh hướng dẫn cài đặt SQL

Bước 4: Tại đây ta ấn nút Customize để bắt đầu setting cấu hình để sử dụng.

Hình 1.6: Hình ảnh hướng dẫn cài đặt SQL

Bước 5: Cửa sổ đầu tiên ta ấn next.

Hình 1.7: Hình ảnh hướng dẫn cài đặt SQL

Hệ thống sẽ xác nhận xem các mục đã đạt yêu cầu hay chưa; nếu có dấu tích xanh nghĩa là đã ổn Thông thường, mục Firewall sẽ hiển thị màu vàng, cảnh báo rằng nó có thể ảnh hưởng đến quá trình cài đặt Tuy nhiên, bạn có thể bỏ qua mục này và tiếp tục nhấn nút next.

To proceed, select the "developer" option under the Product key section to access the software for free, then click "next" to continue In the License Terms section, ensure to choose "I accept the license terms and Privacy."

In the Features Selection section, it is recommended to choose Database Engine Services, Data Quality Client, and Client Tools Connectivity This selection ensures that the application provides all necessary packages and functionalities for comprehensive learning in database fundamentals After making these selections, proceed by clicking 'Next'.

Step 7: In the Feature Configuration Rules section, you can name your Instance (feel free to choose any name without spaces or special characters) and then click 'Next' to proceed to the Database Engine Configuration.

Bước 8: Ở mục này, ta bấm chọn chức năng Mix Mode Đây là chức năng bảo mật cho cơ sở dữ liệu của bạn.

Tiếp theo các bạn nhập mật khẩu cho tài khoản supper admin(sa) của bạn

Và cuối cùng nhấn nút Add current User để thêm tài khoản.

Cuối cùng bạn nhấn next cho đến mục Ready to Install.

1.2.2 Cài đặt SQL Management Studio

Bước 1: Bạn chọn nút Install SSMS Hệ thống sẽ tự động đưa bạn đến link tải.

Bước 2: Ấn vào “Download SQL Server Management Studio (SSMS)” để tải file SSMS về

Bước 3: Mở file vừa tải về, bấm Install để cài giao diện cho phần mềm Cuối cùng, sau khi cài xong ta chọn Close để hoàn tất.

1.3 Giới thiệu về Visual Studio

Visual Studio là phần mềm hỗ trợ lập trình website hiệu quả, thuộc sở hữu của Microsoft Ra mắt lần đầu vào năm 1997 với tên mã Project Boston, phần mềm này đã được Microsoft phát triển và tích hợp các công cụ phát triển, tạo thành một sản phẩm duy nhất hoàn chỉnh.

Visual Studio là một hệ thống toàn diện cho phát triển ứng dụng, bao gồm trình chỉnh sửa mã, trình thiết kế và công cụ gỡ lỗi Người dùng có thể dễ dàng viết code, sửa lỗi và chỉnh sửa thiết kế ứng dụng chỉ với một phần mềm duy nhất Bên cạnh đó, Visual Studio cho phép thiết kế giao diện và trải nghiệm người dùng tương tự như khi phát triển ứng dụng Xamarin và UWP bằng XAML hoặc Blend.

Phần mềm Visual studio được chia thành 2 phiên bản Visual Studio

Các phiên bản cao cấp như Enterprise và Visual Studio Professional thường được các công ty lập trình sử dụng rộng rãi Ngoài ra, Microsoft cũng cung cấp phiên bản Community miễn phí, mang đến những tính năng cơ bản cho người dùng, đặc biệt là những lập trình viên không chuyên, mới bắt đầu tìm hiểu công nghệ, như sinh viên, nhà phát triển cá nhân, và các tổ chức phi lợi nhuận với dưới 5 người dùng.

Các tính năng của Visual Studio:

Đa ngôn ngữ lập trình.

Kho tiện ích mở rộng phong phú.

Kho lưu trữ an toàn.

Hỗ trợ thiết bị đầu cuối.

Bước 1: Truy cập vào đường link: https://visualstudio.microsoft.com/ downloads/

Hình 1.8: Hình ảnh các phiên bản của Visual Studio

Chọn 1 trong 3 tùy chọn và tải về.

Bước 2: Chọn nơi lưu trữ rồi bấm save.Sau đó vào thư mục để cài đặt.

Hình 1.9: Hình ảnh hướng dẫn cài đặt Visual Studio

Bấm double click vào “VisualStudioSetup.exe”, nếu có cửa sổ bé nhỏ nào đó hiển thị lên thì bấm “Continue”, sau đó chờ nhé…

Sau khi nó tải xong thì ra màn hình lựa chọn dưới đây và Install.

Hình 1.10: Hình ảnh hướng dẫn cài đặt Visual Studio

PHÂN TÍCH

CHỨC NĂNG HỆ THỐNG

Hệ thống quản lý quán ăn cần đạt được những mục tiêu sau:

Hệ thống phải quản lý được thông tin sản phẩm, thông tin phiếu suất, thông tin phiếu nhập.

Hệ thống phải quản lý được thông tin nhân viên.

Hệ thống phải tìm kiếm và liệt kê được sản phẩm, số lượng sản phẩm trong từng bàn, từng bill, từng ngày, từng tuần và từng tháng.

Hệ thống phải thêm bớt được danh sách món ăn, tài khoản nhân viên.

Hệ thống phải xuất được chính sác hóa đơn của từng bàn.

PHÂN TÍCH YÊU CẦU CỦA HỆ THỐNG

2.1.1 Biểu đồ Use-case hệ thống.

Hình 2.1: Hình ảnh biểu đồ hệ thống

2.1.2 Biểu đồ Use-case quản lý tài khoản

Hình 2.2: Hình ảnh biểu đồ quản lý tài khoản

2.1.3 Biểu đồ Use-case đồ ăn, món ăn

Hình 2.3: Hình ảnh biểu đồ đồ ăn, món ăn

2.1.4 Biểu đồ Use-case bàn ăn

Hình 2.4: Hình ảnh biểu đồ quản lý bàn ăn

2.1.5 Biểu đồ Use-case hóa đơn.

Hình 2.5: Hình ảnh biểu đồ quản lý hóa đơn

TableFood id (Primary key) name status int nvarchar(100) nvarchar(100)

FoodCategory id (Primary key) name int nvarchar(100)

Food id(PRIMARY KEY) name idCategory

DateCheckIn DateCheckOu t idTable(FOREIGN KEY) status

INT DATE DATE INT INT

KEY) idBill(FOREIGN KEY) idFood(FOREIGN KEY) count

THIẾT KẾ HỆ THỐNG

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

1.1 Mô hình quan hệ dữ liệu

Hình 3.1: Hình ảnh mối quan hệ dữ liệu

1.2 Bảng cơ sở dữ liệu

STT Tên trường Kiểu dữ liệu Ràng buộc Mô tả

1 id int Primary key Id bàn ăn

2 name nvarchar(100) NOT NULL Tên bàn ăn

3 status nvarchar(100) NOT NULL Trạng thái bàn ăn

STT Tên trường Kiểu dữ liệu Ràng buộc Mô tả

1 UserName nvarchar(100) Primary key Tên tài khoản

2 DisplayNam e nvarchar(100) NOT NULL Tên hiển thị

3 PassWord nvarchar(100) NOT NULL Mật khẩu tài khoản

4 Type int NOT NULL Loại tài khoản

STT Tên trường Kiểu dữ liệu Ràng buộc Mô tả

1 id INT Primary key Id danh mục thức ăn

2 name nvarchar(100) NOT NULL Tên danh mục thức ăn

STT Tên trường Kiểu dữ liệu Ràng buộc Mô tả

1 id INT Primary key Id món ăn

2 name nvarchar(100) NOT NULL Tên món ăn

Id danh mục món ăn

4 price FLOAT NOT NULL Giá tiền món ăn

STT Tên trường Kiểu dữ liệu

1 id INT Primary key Id hóa đơn

2 DateCheckIn DATE NOT NULL Ngày nhập hóa đơn

DATE NOT NULL Ngày xuất hóa đơn

5 status INT NOT NULL Trạng thái hóa đơn

STT Tên trường Kiểu dữ liệu Ràng buộc Mô tả

1 id INT Primary key Id thông tin hóa đơn

4 count INT NOT NULL Số lượng món ăn

Hình 3.2: Hình ảnh giao diện đăng nhập

Mục đích của việc bảo mật quán là để bảo vệ thông tin về món ăn và hóa đơn, đồng thời ngăn chặn sự xâm nhập vào phần mềm quản lý Để đảm bảo an toàn, yêu cầu bắt buộc là người dùng phải có tài khoản để đăng nhập.

QR Code: Dùng để truy cập vào trang đăng nhập bằng mã QR Code thay vì ghi tài khoản và mật khẩu.

Đăng nhập: Dùng để truy cập vào các trang bên trong để thao tác với các đối tượng, giao diện.

1.3.2 Giao diện đăng nhập bằng mã QR Code

Hình 3.3: Hình ảnh giao diện đăng nhập bằng QR Code

Mục đích: Giúp người chủ và nhân viên trong quán đăng nhập nhanh và dễ dàng hơn. Điều kiện: Phải có mã QR code do quán ăn cấp.

Camera: Dùng để chọn thiết bị làm camera.

Mã QR code: dùng để xác thực xem mã QR code được quét có đúng hay không.

Mở camera: Dùng để mở camera và quét mã.

Quét mã: Dùng để bật chức năng quét mã.

1.3.3 Giao diện chính quản lý quán ăn

Hình 3.4: Hình ảnh giao diện quản lý quán ăn

Giao diện chính quản lý quán ăn gồm 6 chức năng:

Mục đích: Truy cập vào giao diện Admin để thao tác các tác vụ cụ thể hơn.

Mô tả: Khi người dùng muốn truy cập vào giao diện Admin thì nhấp chuột vào chữ Admin.

Mục đích: Truy cập vào Thông tin cá nhân và Đăng xuất.

Khi người dùng muốn truy cập vào thông tin cá nhân hoặc đăng xuất khỏi giao diện, họ chỉ cần nhấp chuột vào mục "Thông tin tài khoản" để hiển thị các tùy chọn liên quan.

Mục đích: Thêm món ăn cho các bàn với số lượng mong muốn.

Khi nhân viên muốn thêm món ăn cho bàn, họ chỉ cần nhấp chuột vào bàn đó, sau đó chọn danh mục và món ăn cùng với số lượng Sau khi hoàn tất, họ nhấp vào nút thêm món, và danh sách món sẽ được cập nhật ngay bên dưới.

Mục đích: Chuyển hóa đơn từ bàn này sang bàn khác và ngược lại.

Mô tả: chọn bàn muốn chuyển là bàn muốn chuyển đến sau đó nhấp chuột vào chuyển.

Mục đích: Giảm giá trừ tiền vào trực tiếp hóa đơn.

Mô tả: Chọn mức phần trăm muốn giảm giá để thanh toán được giảm trực tiếp trên hóa đớn.

Mục đích: Thanh toán trược tiếp trên máy tránh vất vả cho nhân viên.

Mô tả: Chọn bàn muốn thanh toán và thanh toán.

Mục đích: Giúp người dùng có thể thanh toán nhanh chóng qua ngân hàng, ineternet banking,

Mô tả: Chọn vào Mã QR sau đó form mã QR sẽ được hiện lên để cho khách hàng quét mã.

1.3.4 Giao diện thanh toán Internet Banking

Hình 3.5: Hình ảnh giao diện thanh toán Internet Banking

1.3.5 Giao diện hiển thị doanh thu và thay đổi thông tin tài khoản, bàn,món ăn

Hình 3.6: Hình ảnh giao diện doanh thu

Giao diện doanh thu gồm có một chức năng chính đó là thống kê hóa đơn trong khoảng thời gian xác định.

- Mục đích: Giúp thống kê tổng quát doanh thu trong một khoảng thời gian.

- Mô tả: Chọn khoảng thời gian và nhấp chuột vào Thống kê, bảng thống kê hóa đơn sẽ hiện bên dưới.

Hình 3.7: Hình ảnh giao diện thức ăn

Giao điện Thức ăn gồm có 5 chức năng chính: Thêm món ăn, xóa món ăn, sửa món ăn, xem danh sách món ăn, tìm món ăn.

Mục đích: Thêm những món ăn mới chưa có trong danh sách món ăn.

Mô tả: Nhập tên món ăn và chọn danh mục món ăn và giá tiền sau đó Thêm.

Mục đích: Xóa những món ăn không cần thiết trong danh sách món ăn.

Mô tả: Chọn món ăn muốn xóa sau đó Xóa.

Mục đích: Sửa tên, danh mục món ăn hoặc giá tiền muốn sửa.

Mô tả: Chọn và ghi những thứ cần sửa sau đó nhấp nút sửa.

Mục đích: Hiển thị danh sách tất cả các món ăn và thông tin cảu món ăn.

Mô tả: Nhấp nút Xem danh sách thông tin món ăn sẽ hiển thị xuống bên dưới.

Mục đích: Tìm ra món ăn mình muốn biết.

Mô tả: Ghi tên món ăn ở ô bên cạnh và nhấp chuột vào tìm món, chỉ cần tìm chữ gần đúng là nó sẽ hiện ko cần gõ đầy đủ.

Hình 3.8: Hình ảnh giao diện tài khoản

Giao diện Tài khoản có 5 mục đích chính: Thêm tài khoản, xóa tài khoản, sửa tài khoản, xem tài khoản, đặt lại mật khẩu.

Mục đích: Thêm những tài khoản mới

Mô tả: Nhập tên tài khoản, tên hiển thị, loại tài khoản 0 (staff) hay 1 (chủ)

Mục đích: Xóa những tài khoản không còn tác dụng.

Mô tả: Chọn tài khoản muốn xóa sau đó nhấp nút Xóa

Mục đích: Thay đổi tài khoản, tên hiển thị, loại tài khoản muốn thay đổi.

Mô tả: Chọn và ghi những thứ cần sửa sau đó nhấp nút sửa.

Mục đích: Hiển thị danh sách tất cả các tài khoản bao gồm tên tài khoản, tên hiển thị, loại tài khoản.

Mô tả: Nhấp nút Xem danh sách thông tin tài khoản sẽ hiển thị xuống bên dưới.

Mục đích: đặt lại mật khẩu cho những nick đã quên

Mô tả: Chọn tài khoản muốn đặt lại và chọn Đặt lại mật khẩu, mật khẩu sau đặt lại sẽ là 1.

1.3.6 Giao diện thay đổi tài khoản

Hình 3.9: Hình ảnh giao diện tài khoản

Giao diện thông tin tài khoản gồm một chức năng duy nhất là thay đổi mật khẩu tài khoản.

Mục đích: Thay đổi mậu khẩu của tài khoản vừa đăng nhập.

Mô tả: Nhập mật khẩu cũ, mật khẩu mới và nhập lại mật khẩu mới sau đó nhấp chuột vào cập nhật.

CHƯƠNG TRÌNH TRÊN SQL VÀ TRÊN VISUAL STUDIO

Chương trình trên Visual Studio

using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace QuanLyQuanCafe.DTO

{ public Table(int id, string name, string status) { this.ID = id; this.Name = name; this.Status = status;

{ this.ID = (int)row["id"]; this.Name = row["name"].ToString(); this.Status = row["status"].ToString();

} private string status; public string Status

{ get { return status; } set { status = value; }

} private string name; public string Name

{ get { return name; } set { name = value; }

} private int iD; public int ID

{ get { return iD; } set { iD = value; }

2.2 Code class Menu.cs using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace QuanLyQuanCafe.DTO

{ public Menu(string foodName, int count, float price, float totalPrice = 0) { this.FoodName = foodName; this.Count = count; this.Price = price; this.TotalPrice = totalPrice;

This code snippet defines a class that initializes food item properties, including the name, count, price, and total price The `FoodName` is extracted from a database row, while `Count` is cast to an integer The `Price` and `TotalPrice` are converted from strings to floats, ensuring accurate numerical representation for calculations The `TotalPrice` property is also declared as a private float, encapsulating the total cost of the food items.

{ get { return totalPrice; } set { totalPrice = value; }

} private float price; public float Price

{ get { return price; } set { price = value; }

} private int count; public int Count

{ get { return count; } set { count = value; }

} private string foodName; public string FoodName

{ get { return foodName; } set { foodName = value; }

2.3 Code class TableDAO.cs using QuanLyQuanCafe.DTO; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace QuanLyQuanCafe.DAO

{ private static TableDAO instance; public static TableDAO Instance

{ get { if (instance == null) instance = new TableDAO(); return TableDAO.instance; } private set { TableDAO.instance = value; }

} public static int TableWidth = 90; public static int TableHeight = 90; private TableDAO() { } public void SwitchTable(int id1, int id2)

DataProvider.Instance.ExecuteQuery("USP_SwitchTabel @idTable1 , @idTabel2", new object[] { id1, id2 });

List tableList = new List();

DataTable data = DataProvider.Instance.ExecuteQuery("USP_GetTableList"); foreach (DataRow item in data.Rows)

Table table = new Table(item); tableList.Add(table);

} public bool InsertTable(string name, string status)

{ string query = string.Format("INSERT dbo.TableFood ( id, name, status )VALUES ( N'{0}', N'{1}')", name, status); int result = DataProvider.Instance.ExecuteNonQuery(query); return result > 0;

} public bool DeleteTable(int id)

{ string query = string.Format("Delete TableFood where id = N'{0}'", id); int result = DataProvider.Instance.ExecuteNonQuery(query); return result > 0;

2.4 Code class MenuDAO.cs using QuanLyQuanCafe.DTO; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace QuanLyQuanCafe.DAO

{ private static MenuDAO instance; public static MenuDAO Instance

{ get { if (instance == null) instance = new MenuDAO(); return MenuDAO.instance; } private set { MenuDAO.instance = value; }

} private MenuDAO() { } public List GetListMenuByTable(int id)

To retrieve the menu details for a specific table, a SQL query is executed that selects the food name, count, price, and total price from the BillInfo, Bill, and Food tables This query filters the results to include only those bills that are active (status = 0) and associated with the given table ID The results are then stored in a list of Menu objects for further processing.

DataTable data = DataProvider.Instance.ExecuteQuery(query); foreach (DataRow item in data.Rows)

Menu menu = new Menu(item); listMenu.Add(menu);

2.5 Code class fTableManager.cs using QuanLyQuanCafe.DAO; using QuanLyQuanCafe.DTO; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Globalization; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace QuanLyQuanCafe

{ public partial class fTableManager : Form

{ private Account loginAccount; public Account LoginAccount

{ get { return loginAccount; } set { loginAccount = value; ChangeAccount(loginAccount.Type); }

#region method void ChangeAccount(int type)

{ adminToolStripMenuItem.Enabled = type == 1; thôngTinTàiKhoảnToolStripMenuItem.Text += " (" + LoginAccount.DisplayName + ")";

List listCategory = CategoryDAO.Instance.GetListCategory(); cbCategory.DataSource = listCategory; cbCategory.DisplayMember = "Name";

List listFood = FoodDAO.Instance.GetFoodByCategoryID(id); cbFood.DataSource = listFood; cbFood.DisplayMember = "Name";

List tableList = TableDAO.Instance.LoadTableList(); foreach (Table item in tableList)

Button btn = new Button() { Width = TableDAO.TableWidth, Height = TableDAO.TableHeight }; btn.Text = item.Name + Environment.NewLine + item.Status; btn.Click += btn_Click; btn.Tag = item; switch (item.Status)

{ case "Trống": btn.BackColor = Color.Aqua; break; default: btn.BackColor = Color.LightPink; break;

List listBillInfo = MenuDAO.Instance.GetListMenuByTable(id); float totalPrice = 0; foreach (QuanLyQuanCafe.DTO.Menu item in listBillInfo)

The code snippet creates a new ListViewItem for displaying food items in a billing system, incorporating essential details such as the food name, count, price, and total price Each item is added to the ListView, while simultaneously updating the overall total price This efficient method enhances the organization and clarity of the billing process.

CultureInfo culture = new CultureInfo("vi-VN");

//Thread.CurrentThread.CurrentCulture = culture; txbTotalPrice.Text = totalPrice.ToString("c", culture);

{ cb.DataSource = TableDAO.Instance.LoadTableList(); cb.DisplayMember = "Name";

#region Events private void thanhToánToolStripMenuItem_Click(object sender, EventArgs e)

{ btnCheckOut_Click(this, new EventArgs());

} private void thêmMónToolStripMenuItem_Click(object sender, EventArgs e)

{ btnAddFood_Click(this, new EventArgs());

} void btn_Click(object sender, EventArgs e)

{ int tableID = ((sender as Button).Tag as Table).ID; lsvBill.Tag = (sender as Button).Tag;

} void f_UpdateAccount(object sender, AccountEvent e)

{ thôngTinTàiKhoảnToolStripMenuItem.Text = "Thông tin tài khoản (" + e.Acc.DisplayName + ")"; } void f_InsertFood(object sender, EventArgs e)

LoadFoodListByCategoryID((cbCategory.SelectedItem as Category).ID); if (lsvBill.Tag != null)

ShowBill((lsvBill.Tag as Table).ID);

} private void adminToolStripMenuItem_Click(object sender, EventArgs e)

{ fAdmin f = new fAdmin(); f.loginAccount = LoginAccount; f.InsertFood += f_InsertFood; f.DeleteFood += f_DeleteFood; f.UpdateFood += f_UpdateFood; f.ShowDialog();

} void f_UpdateFood(object sender, EventArgs e)

LoadFoodListByCategoryID((cbCategory.SelectedItem as Category).ID); if (lsvBill.Tag != null)

ShowBill((lsvBill.Tag as Table).ID);

} void f_DeleteFood(object sender, EventArgs e)

LoadFoodListByCategoryID((cbCategory.SelectedItem as Category).ID); if (lsvBill.Tag != null)

ShowBill((lsvBill.Tag as Table).ID);

} private void cbCategory_SelectedIndexChanged(object sender, EventArgs e)

ComboBox cb = sender as ComboBox; if (cb.SelectedItem == null) return;

Category selected = cb.SelectedItem as Category; id = selected.ID;

} private void btnAddFood_Click(object sender, EventArgs e)

Table table = lsvBill.Tag as Table; if (table == null)

MessageBox.Show("Hãy chọn bàn"); return;

} int idBill = BillDAO.Instance.GetUncheckBillIDByTableID(table.ID); int foodID = (cbFood.SelectedItem as Food).ID; int count = (int)nmFoodCount.Value; if (idBill == -1)

BillDAO.Instance.InsertBill(table.ID);

BillInfoDAO.Instance.InsertBillInfo(BillDAO.Instance.GetMaxIDBill(), foodID, count);

BillInfoDAO.Instance.InsertBillInfo(idBill, foodID, count);

} private void btnCheckOut_Click(object sender, EventArgs e)

To calculate the final total price for a bill, first, retrieve the bill ID associated with the selected table Then, apply the discount percentage to the original total price, which is extracted from the text box Finally, if a valid bill ID is found, compute the adjusted total price by subtracting the discount from the original amount.

Are you sure you want to pay the bill for table {0}? The total amount is calculated as follows: Total Price - (Total Price / 100) x Discount, resulting in {1} - ({1} / 100) x {2} = {3}.

BillDAO.Instance.CheckOut(idBill, discount, (float)finalTotalPrice);

} private void btnSwitchTable_Click(object sender, EventArgs e)

To switch tables in the system, first retrieve the IDs of the current table and the selected table A confirmation message will prompt the user, asking if they truly want to move from table {current table name} to table {selected table name}.

== System.Windows.Forms.DialogResult.OK)

TableDAO.Instance.SwitchTable(id1, id2);

} private void thôngTinCáNhânToolStripMenuItem_Click(object sender, EventArgs e)

{ fAccountProfile f = new fAccountProfile(LoginAccount); f.UpdateAccount += f_UpdateAccount; f.ShowDialog();

} private void ĐăngXuấtToolStripMenuItem_Click(object sender, EventArgs e) { this.Close();

#endregion private void btnQR_Click(object sender, EventArgs e)

{ fQRCodePay f = new fQRCodePay(); this.Hide(); f.ShowDialog(); this.Show();

Ngày đăng: 01/11/2023, 22:46

w