Lập trình phần mềm Quản lý quán cafe với...

Serial tutorial lập trình phần mềm Quản lý quán cafe với C# Winform

Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform 0/5 (68 reviews)

Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform

Đã đăng 2016-11-27 03:41:19 bởi HowKteam
46 bình luận 13696 lượt xem
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform 0 /5 stars (0 reviews)
 

Không có gì tuyệt vời hơn là luyện tập với ví dụ thực tế. Nào cùng nhau thử thách bản thân với phần mềm: Quản lý quán cafe

Bạn nên có kiến thức về:

  • Lập trình Winform cơ bản
  • Delegate – Event
  • SQL server
  • Xử lý ngày tháng năm

Code 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
    {
        public fTableManager()
        {
            InitializeComponent();

            LoadTable();
            LoadCategory();
        }

        #region Method

        void LoadCategory()
        {
            List<Category> listCategory = CategoryDAO.Instance.GetListCategory();
            cbCategory.DataSource = listCategory;
            cbCategory.DisplayMember = "Name";
        }

        void LoadFoodListByCategoryID(int id)
        {
            List<Food> listFood = FoodDAO.Instance.GetFoodByCategoryID(id);
            cbFood.DataSource = listFood;
            cbFood.DisplayMember = "Name";
        }
        void LoadTable()
        {
            List<Table> 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;
                }

                flpTable.Controls.Add(btn);
            }
        }

        void ShowBill(int id)
        {
            lsvBill.Items.Clear();
            List<QuanLyQuanCafe.DTO.Menu> listBillInfo = MenuDAO.Instance.GetListMenuByTable(id);
            float totalPrice = 0;
            foreach (QuanLyQuanCafe.DTO.Menu item in listBillInfo)
            {
                ListViewItem lsvItem = new ListViewItem(item.FoodName.ToString());
                lsvItem.SubItems.Add(item.Count.ToString());
                lsvItem.SubItems.Add(item.Price.ToString());
                lsvItem.SubItems.Add(item.TotalPrice.ToString());
                totalPrice += item.TotalPrice;
                lsvBill.Items.Add(lsvItem);
            }
            CultureInfo culture = new CultureInfo("vi-VN");

            //Thread.CurrentThread.CurrentCulture = culture;

            txbTotalPrice.Text = totalPrice.ToString("c", culture);
        }

        #endregion


        #region Events
        void btn_Click(object sender, EventArgs e)
        {
            int tableID = ((sender as Button).Tag as Table).ID;
            lsvBill.Tag = (sender as Button).Tag;
            ShowBill(tableID);
        }
        private void đăngXuấtToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void thôngTinCáNhânToolStripMenuItem_Click(object sender, EventArgs e)
        {
            fAccountProfile f = new fAccountProfile();
            f.ShowDialog();
        }

        private void adminToolStripMenuItem_Click(object sender, EventArgs e)
        {
            fAdmin f = new fAdmin();
            f.ShowDialog();
        }

        private void cbCategory_SelectedIndexChanged(object sender, EventArgs e)
        {
            int id = 0;

            ComboBox cb = sender as ComboBox;

            if (cb.SelectedItem == null)
                return;

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

            LoadFoodListByCategoryID(id);
        }

        private void btnAddFood_Click(object sender, EventArgs e)
        {
            Table table = lsvBill.Tag as Table;

            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);
            }
            else
            {
                BillInfoDAO.Instance.InsertBillInfo(idBill, foodID, count);
            }

            ShowBill(table.ID);
        }

        #endregion        
    }
}

Code fTableManager.Designer.cs

namespace QuanLyQuanCafe
{
    partial class fTableManager
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.menuStrip1 = new System.Windows.Forms.MenuStrip();
            this.adminToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.thôngTinTàiKhoảnToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.thôngTinCáNhânToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.đăngXuấtToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.panel2 = new System.Windows.Forms.Panel();
            this.lsvBill = new System.Windows.Forms.ListView();
            this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
            this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
            this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
            this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
            this.panel3 = new System.Windows.Forms.Panel();
            this.txbTotalPrice = new System.Windows.Forms.TextBox();
            this.cbSwitchTable = new System.Windows.Forms.ComboBox();
            this.btnSwitchTable = new System.Windows.Forms.Button();
            this.nmDisCount = new System.Windows.Forms.NumericUpDown();
            this.btnDiscount = new System.Windows.Forms.Button();
            this.btnCheckOut = new System.Windows.Forms.Button();
            this.panel4 = new System.Windows.Forms.Panel();
            this.nmFoodCount = new System.Windows.Forms.NumericUpDown();
            this.btnAddFood = new System.Windows.Forms.Button();
            this.cbFood = new System.Windows.Forms.ComboBox();
            this.cbCategory = new System.Windows.Forms.ComboBox();
            this.flpTable = new System.Windows.Forms.FlowLayoutPanel();
            this.menuStrip1.SuspendLayout();
            this.panel2.SuspendLayout();
            this.panel3.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.nmDisCount)).BeginInit();
            this.panel4.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.nmFoodCount)).BeginInit();
            this.SuspendLayout();
            // 
            // menuStrip1
            // 
            this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.adminToolStripMenuItem,
            this.thôngTinTàiKhoảnToolStripMenuItem});
            this.menuStrip1.Location = new System.Drawing.Point(0, 0);
            this.menuStrip1.Name = "menuStrip1";
            this.menuStrip1.Size = new System.Drawing.Size(797, 24);
            this.menuStrip1.TabIndex = 1;
            this.menuStrip1.Text = "menuStrip1";
            // 
            // adminToolStripMenuItem
            // 
            this.adminToolStripMenuItem.Name = "adminToolStripMenuItem";
            this.adminToolStripMenuItem.Size = new System.Drawing.Size(55, 20);
            this.adminToolStripMenuItem.Text = "Admin";
            this.adminToolStripMenuItem.Click += new System.EventHandler(this.adminToolStripMenuItem_Click);
            // 
            // thôngTinTàiKhoảnToolStripMenuItem
            // 
            this.thôngTinTàiKhoảnToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.thôngTinCáNhânToolStripMenuItem,
            this.đăngXuấtToolStripMenuItem});
            this.thôngTinTàiKhoảnToolStripMenuItem.Name = "thôngTinTàiKhoảnToolStripMenuItem";
            this.thôngTinTàiKhoảnToolStripMenuItem.Size = new System.Drawing.Size(123, 20);
            this.thôngTinTàiKhoảnToolStripMenuItem.Text = "Thông tin tài khoản";
            // 
            // thôngTinCáNhânToolStripMenuItem
            // 
            this.thôngTinCáNhânToolStripMenuItem.Name = "thôngTinCáNhânToolStripMenuItem";
            this.thôngTinCáNhânToolStripMenuItem.Size = new System.Drawing.Size(171, 22);
            this.thôngTinCáNhânToolStripMenuItem.Text = "Thông tin cá nhân";
            this.thôngTinCáNhânToolStripMenuItem.Click += new System.EventHandler(this.thôngTinCáNhânToolStripMenuItem_Click);
            // 
            // đăngXuấtToolStripMenuItem
            // 
            this.đăngXuấtToolStripMenuItem.Name = "đăngXuấtToolStripMenuItem";
            this.đăngXuấtToolStripMenuItem.Size = new System.Drawing.Size(171, 22);
            this.đăngXuấtToolStripMenuItem.Text = "Đăng xuất";
            this.đăngXuấtToolStripMenuItem.Click += new System.EventHandler(this.đăngXuấtToolStripMenuItem_Click);
            // 
            // panel2
            // 
            this.panel2.Controls.Add(this.lsvBill);
            this.panel2.Location = new System.Drawing.Point(447, 85);
            this.panel2.Name = "panel2";
            this.panel2.Size = new System.Drawing.Size(338, 315);
            this.panel2.TabIndex = 2;
            // 
            // lsvBill
            // 
            this.lsvBill.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
            this.columnHeader1,
            this.columnHeader2,
            this.columnHeader3,
            this.columnHeader4});
            this.lsvBill.GridLines = true;
            this.lsvBill.Location = new System.Drawing.Point(3, 3);
            this.lsvBill.Name = "lsvBill";
            this.lsvBill.Size = new System.Drawing.Size(332, 309);
            this.lsvBill.TabIndex = 0;
            this.lsvBill.UseCompatibleStateImageBehavior = false;
            this.lsvBill.View = System.Windows.Forms.View.Details;
            // 
            // columnHeader1
            // 
            this.columnHeader1.Text = "Tên món";
            this.columnHeader1.Width = 133;
            // 
            // columnHeader2
            // 
            this.columnHeader2.Text = "Số lượng";
            // 
            // columnHeader3
            // 
            this.columnHeader3.Text = "Đơn giá";
            this.columnHeader3.Width = 54;
            // 
            // columnHeader4
            // 
            this.columnHeader4.Text = "Thành tiền";
            this.columnHeader4.Width = 81;
            // 
            // panel3
            // 
            this.panel3.Controls.Add(this.txbTotalPrice);
            this.panel3.Controls.Add(this.cbSwitchTable);
            this.panel3.Controls.Add(this.btnSwitchTable);
            this.panel3.Controls.Add(this.nmDisCount);
            this.panel3.Controls.Add(this.btnDiscount);
            this.panel3.Controls.Add(this.btnCheckOut);
            this.panel3.Location = new System.Drawing.Point(447, 406);
            this.panel3.Name = "panel3";
            this.panel3.Size = new System.Drawing.Size(338, 52);
            this.panel3.TabIndex = 3;
            // 
            // txbTotalPrice
            // 
            this.txbTotalPrice.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(163)));
            this.txbTotalPrice.ForeColor = System.Drawing.Color.OrangeRed;
            this.txbTotalPrice.Location = new System.Drawing.Point(164, 17);
            this.txbTotalPrice.Name = "txbTotalPrice";
            this.txbTotalPrice.ReadOnly = true;
            this.txbTotalPrice.Size = new System.Drawing.Size(90, 25);
            this.txbTotalPrice.TabIndex = 7;
            this.txbTotalPrice.Text = "0";
            this.txbTotalPrice.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
            // 
            // cbSwitchTable
            // 
            this.cbSwitchTable.FormattingEnabled = true;
            this.cbSwitchTable.Location = new System.Drawing.Point(3, 28);
            this.cbSwitchTable.Name = "cbSwitchTable";
            this.cbSwitchTable.Size = new System.Drawing.Size(75, 21);
            this.cbSwitchTable.TabIndex = 6;
            // 
            // btnSwitchTable
            // 
            this.btnSwitchTable.Location = new System.Drawing.Point(3, 3);
            this.btnSwitchTable.Name = "btnSwitchTable";
            this.btnSwitchTable.Size = new System.Drawing.Size(75, 26);
            this.btnSwitchTable.TabIndex = 5;
            this.btnSwitchTable.Text = "Chuyển bàn";
            this.btnSwitchTable.UseVisualStyleBackColor = true;
            // 
            // nmDisCount
            // 
            this.nmDisCount.Location = new System.Drawing.Point(84, 29);
            this.nmDisCount.Name = "nmDisCount";
            this.nmDisCount.Size = new System.Drawing.Size(74, 20);
            this.nmDisCount.TabIndex = 4;
            this.nmDisCount.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
            // 
            // btnDiscount
            // 
            this.btnDiscount.Location = new System.Drawing.Point(84, 3);
            this.btnDiscount.Name = "btnDiscount";
            this.btnDiscount.Size = new System.Drawing.Size(75, 26);
            this.btnDiscount.TabIndex = 4;
            this.btnDiscount.Text = "Giảm giá";
            this.btnDiscount.UseVisualStyleBackColor = true;
            // 
            // btnCheckOut
            // 
            this.btnCheckOut.Location = new System.Drawing.Point(260, 3);
            this.btnCheckOut.Name = "btnCheckOut";
            this.btnCheckOut.Size = new System.Drawing.Size(75, 46);
            this.btnCheckOut.TabIndex = 3;
            this.btnCheckOut.Text = "Thanh toán";
            this.btnCheckOut.UseVisualStyleBackColor = true;
            // 
            // panel4
            // 
            this.panel4.Controls.Add(this.nmFoodCount);
            this.panel4.Controls.Add(this.btnAddFood);
            this.panel4.Controls.Add(this.cbFood);
            this.panel4.Controls.Add(this.cbCategory);
            this.panel4.Location = new System.Drawing.Point(447, 27);
            this.panel4.Name = "panel4";
            this.panel4.Size = new System.Drawing.Size(338, 52);
            this.panel4.TabIndex = 4;
            // 
            // nmFoodCount
            // 
            this.nmFoodCount.Location = new System.Drawing.Point(296, 19);
            this.nmFoodCount.Minimum = new decimal(new int[] {
            100,
            0,
            0,
            -2147483648});
            this.nmFoodCount.Name = "nmFoodCount";
            this.nmFoodCount.Size = new System.Drawing.Size(39, 20);
            this.nmFoodCount.TabIndex = 3;
            this.nmFoodCount.Value = new decimal(new int[] {
            1,
            0,
            0,
            0});
            // 
            // btnAddFood
            // 
            this.btnAddFood.Location = new System.Drawing.Point(214, 3);
            this.btnAddFood.Name = "btnAddFood";
            this.btnAddFood.Size = new System.Drawing.Size(75, 46);
            this.btnAddFood.TabIndex = 2;
            this.btnAddFood.Text = "Thêm món";
            this.btnAddFood.UseVisualStyleBackColor = true;
            this.btnAddFood.Click += new System.EventHandler(this.btnAddFood_Click);
            // 
            // cbFood
            // 
            this.cbFood.FormattingEnabled = true;
            this.cbFood.Location = new System.Drawing.Point(3, 28);
            this.cbFood.Name = "cbFood";
            this.cbFood.Size = new System.Drawing.Size(205, 21);
            this.cbFood.TabIndex = 1;
            // 
            // cbCategory
            // 
            this.cbCategory.FormattingEnabled = true;
            this.cbCategory.Location = new System.Drawing.Point(3, 3);
            this.cbCategory.Name = "cbCategory";
            this.cbCategory.Size = new System.Drawing.Size(205, 21);
            this.cbCategory.TabIndex = 0;
            this.cbCategory.SelectedIndexChanged += new System.EventHandler(this.cbCategory_SelectedIndexChanged);
            // 
            // flpTable
            // 
            this.flpTable.AutoScroll = true;
            this.flpTable.Location = new System.Drawing.Point(12, 30);
            this.flpTable.Name = "flpTable";
            this.flpTable.Size = new System.Drawing.Size(429, 428);
            this.flpTable.TabIndex = 5;
            // 
            // fTableManager
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(797, 470);
            this.Controls.Add(this.flpTable);
            this.Controls.Add(this.panel4);
            this.Controls.Add(this.panel3);
            this.Controls.Add(this.panel2);
            this.Controls.Add(this.menuStrip1);
            this.MainMenuStrip = this.menuStrip1;
            this.Name = "fTableManager";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "Phần mềm quản lý quán cafe";
            this.menuStrip1.ResumeLayout(false);
            this.menuStrip1.PerformLayout();
            this.panel2.ResumeLayout(false);
            this.panel3.ResumeLayout(false);
            this.panel3.PerformLayout();
            ((System.ComponentModel.ISupportInitialize)(this.nmDisCount)).EndInit();
            this.panel4.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)(this.nmFoodCount)).EndInit();
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.MenuStrip menuStrip1;
        private System.Windows.Forms.ToolStripMenuItem adminToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem thôngTinTàiKhoảnToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem thôngTinCáNhânToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem đăngXuấtToolStripMenuItem;
        private System.Windows.Forms.Panel panel2;
        private System.Windows.Forms.ListView lsvBill;
        private System.Windows.Forms.Panel panel3;
        private System.Windows.Forms.Panel panel4;
        private System.Windows.Forms.NumericUpDown nmFoodCount;
        private System.Windows.Forms.Button btnAddFood;
        private System.Windows.Forms.ComboBox cbFood;
        private System.Windows.Forms.ComboBox cbCategory;
        private System.Windows.Forms.ComboBox cbSwitchTable;
        private System.Windows.Forms.Button btnSwitchTable;
        private System.Windows.Forms.NumericUpDown nmDisCount;
        private System.Windows.Forms.Button btnDiscount;
        private System.Windows.Forms.Button btnCheckOut;
        private System.Windows.Forms.FlowLayoutPanel flpTable;
        private System.Windows.Forms.ColumnHeader columnHeader1;
        private System.Windows.Forms.ColumnHeader columnHeader2;
        private System.Windows.Forms.ColumnHeader columnHeader3;
        private System.Windows.Forms.ColumnHeader columnHeader4;
        private System.Windows.Forms.TextBox txbTotalPrice;
    }
}

Code FoodDAO.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
{
    public class FoodDAO
    {
        private static FoodDAO instance;

        public static FoodDAO Instance
        {
            get { if (instance == null)instance = new FoodDAO(); return FoodDAO.instance; }
            private set { FoodDAO.instance = value; }
        }

        private FoodDAO() { }

        public List<Food> GetFoodByCategoryID(int id)
        {
            List<Food> list = new List<Food>();

            string query = "select * from Food where idCategory = " + id;

            DataTable data = DataProvider.Instance.ExecuteQuery(query);

            foreach (DataRow item in data.Rows)
            {
                Food food = new Food(item);
                list.Add(food);
            }

            return list;
        }

    }
}

Code Food.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace QuanLyQuanCafe.DTO
{
    public class Food
    {
        public Food(int id, string name, int categoryID, float price)
        {
            this.ID = id;
            this.Name = name;
            this.CategoryID = categoryID;
            this.Price = price;
        }

        public Food(DataRow row)
        {
            this.ID = (int)row["id"];
            this.Name = row["name"].ToString();
            this.CategoryID = (int)row["idcategory"];
            this.Price = (float)Convert.ToDouble(row["price"].ToString());
        }

        private float price;

        public float Price
        {
            get { return price; }
            set { price = value; }
        }

        private int categoryID;

        public int CategoryID
        {
            get { return categoryID; }
            set { categoryID = 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; }
        }
    }
}

Code CategoryDAO.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
{
    public class CategoryDAO
    {
        private static CategoryDAO instance;

        public static CategoryDAO Instance
        {
            get { if (instance == null)instance = new CategoryDAO(); return CategoryDAO.instance; }
            private set { CategoryDAO.instance = value; }
        }

        private CategoryDAO() { }

        public List<Category> GetListCategory()
        {
            List<Category> list = new List<Category>();

            string query = "select * from FoodCategory";

            DataTable data = DataProvider.Instance.ExecuteQuery(query);

            foreach (DataRow item in data.Rows)
            {
                Category category = new Category(item);
                list.Add(category);
            }

            return list;
        }
    }
}

Code Category.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace QuanLyQuanCafe.DTO
{
    public class Category
    {
        public Category(int id, string name)
        {
            this.ID = id;
            this.Name = name;
        }

        public Category(DataRow row)
        {
            this.ID = (int)row["id"];
            this.Name = row["name"].ToString();
        }

        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        private int iD;

        public int ID
        {
            get { return iD; }
            set { iD = value; }
        }
    }
}

Code BillInfoDAO.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
{
    public class BillInfoDAO
    {
        private static BillInfoDAO instance;

        public static BillInfoDAO Instance
        {
            get { if (instance == null) instance = new BillInfoDAO(); return BillInfoDAO.instance; }
            private set { BillInfoDAO.instance = value; }
        }

        private BillInfoDAO() { }

        public List<BillInfo> GetListBillInfo(int id)
        {
            List<BillInfo> listBillInfo = new List<BillInfo>();

            DataTable data = DataProvider.Instance.ExecuteQuery("SELECT * FROM dbo.BillInfo WHERE idBill = " + id);

            foreach (DataRow item in data.Rows)
            {
                BillInfo info = new BillInfo(item);
                listBillInfo.Add(info);
            }

            return listBillInfo;
        }

        public void InsertBillInfo(int idBill, int idFood, int count)
        {
            DataProvider.Instance.ExecuteNonQuery("USP_InsertBillInfo @idBill , @idFood , @count", new object[] { idBill, idFood, count });
        }
    }
}

Code BillDAO.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
{
    public class BillDAO
    {
        private static BillDAO instance;

        public static BillDAO Instance
        {
            get { if (instance == null) instance = new BillDAO(); return BillDAO.instance; }
            private set { BillDAO.instance = value; }
        }

        private BillDAO() { }

        /// <summary>
        /// Thành công: bill ID
        /// thất bại: -1
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public int GetUncheckBillIDByTableID(int id)
        {
            DataTable data = DataProvider.Instance.ExecuteQuery("SELECT * FROM dbo.Bill WHERE idTable = " + id +" AND status = 0");

            if (data.Rows.Count > 0)
            {
                Bill bill = new Bill(data.Rows[0]);
                return bill.ID;
            }

            return -1;
        }

        public void InsertBill(int id)
        {
            DataProvider.Instance.ExecuteNonQuery("exec USP_InsertBill @idTable", new object[]{id});
        }

        public int GetMaxIDBill()
        {
            try
            {
                return (int)DataProvider.Instance.ExecuteScalar("SELECT MAX(id) FROM dbo.Bill");
            }
            catch
            {
                return 1;
            }
        }
    }
}

Bài sau chúng ta sẽ cùng nhau tìm hiểu về thanh toán hóa đơn.

Đừng quên: “Luyện tập – Thử thách – Không ngại khó

Chia sẻ:
Thảo luận Hỏi và đáp Báo lỗi bài viết
Hủy bỏ   hoặc  
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
BoyBanhBeo 2018-10-26 15:07:00

Anh ơi sau khi add món , em add số lượng 1 nó cứ ra 1 lần 2 món

0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
huy nguyễn 2018-08-31 21:23:06

còn bug, nhưng chắc mn sẽ tự sửa được. thêm mới thức ăn số lượng âm sẽ hiện số lượng âm, sửa cả 2 trường hợp bàn chưa có bill và đã có bill

1 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
hoanghuy4813 2018-07-31 19:38:19

có cách nào khắc phụ lỗi nhập món bị âm không anh ? em làm thì bị nhập món âm vào listbill vẫn đc ạ

0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
congtrongha 2018-05-28 17:33:18

anh ơi cho em hỏi là em đã tạo store pro cho InsertBill nhưng ko bị lỗi là sao ạ

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
congtrongha 2018-05-28 17:37:18
anh ơi anh giúp dùm e đi ạ
0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
nguyenvinh9x93 2018-04-09 22:34:54

a oi e hoi loi nay ah
 

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: Must declare the scalar variable "@idTable".

An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.

0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
tyvo1234567891008 2018-01-05 00:19:58

Có trường hợp món đó chưa có trong listview Bill mak chọn số âm ngay count thì vẩn thêm đó anh

0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
huynhngoctam97 2018-01-04 23:35:45

LỖI KHÔNG XÓA ĐƯỢC DỮ LIỆU SAU KHI THANH TOÁN LÀ SAO VẬY ANH. GIÚP EM

1 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
huutan0810 2017-12-15 00:51:14

anh cho em hỏi lỗi có bạn thêm được thức ăn. bà k thêm được. và lỗi thêm vào k đúng loại thức ăn đó ( ví dụ cafe thêm vào nó ra món khác )

1 bình chọn
Reply
View all 3 comments
Kteam - Howkteam Free Education
K9 2017-12-15 21:39:06
cụ thể nó ra sao bạn. cái bạn nói là hiện tượng bạn thử dùng code của mình chưa
0 bình chọn
Reply
Kteam - Howkteam Free Education
huutan0810 2017-12-16 10:00:10
dạ code là e code theo hướng dẫn trên youtube đó ạ, còn về lỗi. ví dụ trong category có 1: nước uống , 2: đồ ăn. ở nước uống có 1. cafe. 2 bò húc. ở đồ ăn,1 cơm gà , 2 cơm sườn. khi mà chọn món cho bàn ấy a. e chọn ở category là nước uống, food là cafe. thế mà nó add vào bàn là cơm sườn :v
0 bình chọn
Reply
Kteam - Howkteam Free Education
huynhngoctam97 2018-01-05 01:08:37
cơ sở dữ liệu bị sai rồi bạn. delete đi. rồi f5 lại
0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
Hoa Hồng Dại 2017-12-07 09:38:35

Anh ơi cho em hỏi khi chạy thử cứ bị lỗi này là sao ạ
em không biết sửa làm sao hết
mò mãi mà không sửa được
lỗi là:

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: Incorrect syntax near ','
 

0 bình chọn
Reply
View all 7 comments
Kteam - Howkteam Free Education
Hoa Hồng Dại 2017-12-07 09:41:09
cho em bổ xung tí&nbsp; lỗi&nbsp;ở câu này&nbsp;ạ trong phần dataprovider&nbsp;ạ :&nbsp;data = command.ExecuteNonQuery(); &quot; An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll Additional information: Incorrect syntax near ','
0 bình chọn
Reply
Kteam - Howkteam Free Education
K9 2017-12-07 15:13:15
tách cái dấu , ra bạn
0 bình chọn
Reply
Kteam - Howkteam Free Education
Hoa Hồng Dại 2017-12-08 00:05:41
Dạ em cảm ơn anh K9 để em kiểm tra lại
0 bình chọn
Reply
Kteam - Howkteam Free Education
Hoa Hồng Dại 2017-12-08 00:16:10
Anh k9 ơi ở chỗ nào vậy ạ em đã thử coppy code sql của kteam ở phần pro USPInsertBillInfo mà vẫn báo lỗi ạ
0 bình chọn
Reply
Kteam - Howkteam Free Education
K9 2017-12-08 03:07:05
bạn thử coppy cả source ve62 chạy rồi so sánh thứ
0 bình chọn
Reply
Kteam - Howkteam Free Education
Hoa Hồng Dại 2017-12-08 03:09:54
Em cảm ơn K9 nhiều ; fix được rồi anh cảm ơn hokteam bài hướng dẫn rất bổ ich :v!!
0 bình chọn
Reply
Kteam - Howkteam Free Education
congtrongha 2018-05-28 16:58:37
bạn ơi bạn fix sao thế giúp mình với
0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
nhutquang 2017-06-29 02:56:47

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: Incorrect syntax near '3'

Cho em hỏi lỗi này là lỗi gì ạ?

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
K9 2017-06-29 15:17:27
câu query sai
0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
bevi_92 2017-06-17 21:53:29

Anh ơi, em gặp lỗi khi chạy thêm món vào bàn cả trống và có người đều không được, hiển thị lỗi ở dòng data = command.ExecuteNonquery(); trong DataProvider.

Lỗi cụ thể: Additional information: Procedure or function USP_InsertbillInfo has too many arguments specified.

Anh xem giúp em lỗi là gì và cách xử lý như nào ạ, em cảm ơn anh.

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
nucasspro 2017-06-18 21:50:08
bạn kiểm tra các đối số khi thực hiện gọi câu query xem
0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
bevi_92 2017-06-17 21:53:26

Anh ơi, em gặp lỗi khi chạy thêm món vào bàn cả trống và có người đều không được, hiển thị lỗi ở dòng data = command.ExecuteNonquery(); trong DataProvider.

Lỗi cụ thể: Additional information: Procedure or function USP_InsertbillInfo has too many arguments specified.

Anh xem giúp em lỗi là gì và cách xử lý như nào ạ, em cảm ơn anh.

0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
tatamminh151196 2017-06-10 19:23:52

Anh ơi, em gặp lỗi khi chạy thêm món vào bàn cả trống và có người đều không được, hiển thị lỗi ở dòng data = command.ExecuteNonquery(); trong DataProvider.

Lỗi cụ thể: System.Data.SqlClient.SqlException: 'Incorrect syntax near ','.'

Anh xem giúp em lỗi là gì và cách xử lý như nào ạ, em cảm ơn anh.

0 bình chọn
Reply
View all 6 comments
Kteam - Howkteam Free Education
K9 2017-06-11 14:30:10
mấy cái dấu , phải đứng riêng. k dính vào thằng nào hết
0 bình chọn
Reply
Kteam - Howkteam Free Education
tatamminh151196 2017-06-11 16:13:10
em cảm ơn a, hôm qua e cũng tìm được lỗi rồi :3
0 bình chọn
Reply
Kteam - Howkteam Free Education
tatamminh151196 2017-06-11 16:13:48
sao bài 18 không cho phép download vậy a
0 bình chọn
Reply
Kteam - Howkteam Free Education
hoang.tute.96 2017-10-30 18:28:12
b ơi sửa ở chỗ nào vậy chỉ mình với @@
0 bình chọn
Reply
Kteam - Howkteam Free Education
congtrongha 2018-05-28 16:57:32
bạn ơi sửa chỗ nào chỉ mình với
0 bình chọn
Reply
Kteam - Howkteam Free Education
MinhNT 2018-07-02 11:44:24
public void InsertBillInfo(int idBill, int idFood, int count) { DataProvide.Instance.ExecuteNonQuery(&quot;exec USP_InsertBillInfo @idBill , @idFood , @count&quot;, new object[] { idBill, idFood, count }); ==&gt; đây sửa chỗ này mấy cái dấu phảy thì phải có khoảng cách mới split được
0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
nucasspro 2017-05-29 02:20:53

việc viết số âm để giảm và xóa billinfo rất hay nhưng xảy ra lỗi ở đây. Nếu đã có food, trừ đi thì bình thường chạy ok, nhưng khi không có food đó mà trừ đi thì báo lỗi. Cần phải thêm kiểm tra, nếu chưa có billinfo thì tạo mới với điều kiện số lượng nhập vào > 0, còn ngược lại return

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
hoanghuy4813 2018-08-08 00:54:20
bạn có cách fix chưa cho mình xin với
0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
arsenal8x85 2017-05-21 15:36:06

Lúc debug tới đoạn thêm món thì nó báo lỗi này là sao ạ, fix như thế nào vậy anh?

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: Could not find stored procedure 'USP_InsertBill'.

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
K9 2017-05-21 20:38:53
bạn k có store USP_InsertBill kìa
0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
arsenal8x85 2017-05-21 15:35:58

Lúc debug tới đoạn thêm món thì nó báo lỗi này là sao ạ, fix như thế nào vậy anh?

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: Could not find stored procedure 'USP_InsertBill'.

0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
arsenal8x85 2017-05-21 15:35:49

Lúc debug tới đoạn thêm món thì nó báo lỗi này là sao ạ, fix như thế nào vậy anh?

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: Could not find stored procedure 'USP_InsertBill'.

1 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
v1congtai 2017-02-28 10:40:47
mọi người thêm vào sql ở dòng where là idbill=@idbill nha nếu ko có nó sẽ bị lỗi thêm món cụ thể thêm món ở bàn 1 và bàn 2 nhưng khi cập nhật số lượng món ở bàn 2 thì bàn 1 lại cập nhật theo vì vậy phải thêm idbill=@idbill nữa mới đúng để biết cập nhật trên bill nào
0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
14520342 2016-12-22 00:35:50
theo em câu SQL UPDATE dbo.BillInfo SET countt = @foodCount + @count WHERE idFood = @idFood phải sửa thành UPDATE dbo.BillInfo SET countt = @foodCount + @count WHERE idBill = @idBill AND idFood = @idFood
0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
K9 2016-12-22 20:18:34
ok nhé bạn
0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
14520342 2016-12-21 23:20:10
Theo em câu truy vấn SQL UPDATE dbo.BillInfo SET countt = @foodCount + @count WHERE idFood = @idFood phải sửa thành UPDATE dbo.BillInfo SET countt = @foodCount + @count WHERE idBill = @idBill
0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
14520342 2016-12-21 23:00:29
Anh ơi lỗi rồi kìa. Ví dụ Bàn 1 đang có món Mực một nắng và số lượng là 2, tương tự Bàn 2 cũng thế. Bậy giờ nếu anh thêm Mực một nắng cho Bàn 1 với số lượng là 1, thì sẽ xảy ra lỗi. Đó là mặc dù Bàn 2 không gọi món nhưng số lượng của món Mực một nắng lại tăng lên. Mong anh sớm test lại..
0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
14520342 2016-12-21 22:53:21
Anh ơi bị lỗi rồi kìa,
0 bình chọn
Reply
Thêm bớt món hóa đơn trong phần mềm Quản lý quán cafe với C# Winform
tranphuquy010189 2016-12-20 15:29:32
Dear Add. Minh khong Them mon an vao dc (BillInfoDAO.Instaces.InsertBillInfo(idbill, idfood, count) debug code thi bao loi o doan ExecuteNonQuery thong bao loi nhu sau: " Index was outside the bounds of the array.".Cho minh y kien voi nhe, de minh tiep tuc cac video khac. Thanks add.
0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
K9 2016-12-21 00:46:18
bạn dịch ra là nó lòi ra liền mà bạn. bạn truy xuất tới phần tử nằm ngoài danh sách. còn ngoài danh sách nào thì tùy theo code của bạn mà ra. code mẫu mình để ở bài viết rồi. cuối serial này có project mẫu luôn
0 bình chọn
Reply
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education