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

Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform 4/5 (68 reviews)

Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform

Đã đăng 2016-11-25 12:33:07 bởi HowKteam
29 bình luận 15600 lượt xem
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform 4 /5 stars (2 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 Data.sql

CREATE DATABASE QuanLyQuanCafe
GO

USE QuanLyQuanCafe
GO

-- Food
-- Table
-- FoodCategory
-- Account
-- Bill
-- BillInfo

CREATE TABLE TableFood
(
	id INT IDENTITY PRIMARY KEY,
	name NVARCHAR(100) NOT NULL DEFAULT N'Bàn chưa có tên',
	status NVARCHAR(100) NOT NULL DEFAULT N'Trống'	-- Trống || Có người
)
GO

CREATE TABLE Account
(
	UserName NVARCHAR(100) PRIMARY KEY,	
	DisplayName NVARCHAR(100) NOT NULL DEFAULT N'Kter',
	PassWord NVARCHAR(1000) NOT NULL DEFAULT 0,
	Type INT NOT NULL  DEFAULT 0 -- 1: admin && 0: staff
)
GO

CREATE TABLE FoodCategory
(
	id INT IDENTITY PRIMARY KEY,
	name NVARCHAR(100) NOT NULL DEFAULT N'Chưa đặt tên'
)
GO

CREATE TABLE Food
(
	id INT IDENTITY PRIMARY KEY,
	name NVARCHAR(100) NOT NULL DEFAULT N'Chưa đặt tên',
	idCategory INT NOT NULL,
	price FLOAT NOT NULL DEFAULT 0
	
	FOREIGN KEY (idCategory) REFERENCES dbo.FoodCategory(id)
)
GO

CREATE TABLE Bill
(
	id INT IDENTITY PRIMARY KEY,
	DateCheckIn DATE NOT NULL DEFAULT GETDATE(),
	DateCheckOut DATE,
	idTable INT NOT NULL,
	status INT NOT NULL DEFAULT 0 -- 1: đã thanh toán && 0: chưa thanh toán
	
	FOREIGN KEY (idTable) REFERENCES dbo.TableFood(id)
)
GO

CREATE TABLE BillInfo
(
	id INT IDENTITY PRIMARY KEY,
	idBill INT NOT NULL,
	idFood INT NOT NULL,
	count INT NOT NULL DEFAULT 0
	
	FOREIGN KEY (idBill) REFERENCES dbo.Bill(id),
	FOREIGN KEY (idFood) REFERENCES dbo.Food(id)
)
GO

INSERT INTO dbo.Account
        ( UserName ,
          DisplayName ,
          PassWord ,
          Type
        )
VALUES  ( N'K9' , -- UserName - nvarchar(100)
          N'RongK9' , -- DisplayName - nvarchar(100)
          N'1' , -- PassWord - nvarchar(1000)
          1  -- Type - int
        )
INSERT INTO dbo.Account
        ( UserName ,
          DisplayName ,
          PassWord ,
          Type
        )
VALUES  ( N'staff' , -- UserName - nvarchar(100)
          N'staff' , -- DisplayName - nvarchar(100)
          N'1' , -- PassWord - nvarchar(1000)
          0  -- Type - int
        )
GO

CREATE PROC USP_GetAccountByUserName
@userName nvarchar(100)
AS 
BEGIN
	SELECT * FROM dbo.Account WHERE UserName = @userName
END
GO

EXEC dbo.USP_GetAccountByUserName @userName = N'k9' -- nvarchar(100)

GO

CREATE PROC USP_Login
@userName nvarchar(100), @passWord nvarchar(100)
AS
BEGIN
	SELECT * FROM dbo.Account WHERE UserName = @userName AND PassWord = @passWord
END
GO


DECLARE @i INT = 0

WHILE @i <= 10
BEGIN
	INSERT dbo.TableFood ( name)VALUES  ( N'Bàn ' + CAST(@i AS nvarchar(100)))
	SET @i = @i + 1
END

Code fLogin.Designer.cs

namespace QuanLyQuanCafe
{
    partial class fLogin
    {
        /// <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.panel1 = new System.Windows.Forms.Panel();
            this.btnExit = new System.Windows.Forms.Button();
            this.btnLogin = new System.Windows.Forms.Button();
            this.panel3 = new System.Windows.Forms.Panel();
            this.txbPassWord = new System.Windows.Forms.TextBox();
            this.label2 = new System.Windows.Forms.Label();
            this.panel2 = new System.Windows.Forms.Panel();
            this.txbUserName = new System.Windows.Forms.TextBox();
            this.label1 = new System.Windows.Forms.Label();
            this.panel1.SuspendLayout();
            this.panel3.SuspendLayout();
            this.panel2.SuspendLayout();
            this.SuspendLayout();
            // 
            // panel1
            // 
            this.panel1.Controls.Add(this.btnExit);
            this.panel1.Controls.Add(this.btnLogin);
            this.panel1.Controls.Add(this.panel3);
            this.panel1.Controls.Add(this.panel2);
            this.panel1.Location = new System.Drawing.Point(12, 12);
            this.panel1.Name = "panel1";
            this.panel1.Size = new System.Drawing.Size(400, 136);
            this.panel1.TabIndex = 0;
            // 
            // btnExit
            // 
            this.btnExit.DialogResult = System.Windows.Forms.DialogResult.Cancel;
            this.btnExit.Location = new System.Drawing.Point(319, 103);
            this.btnExit.Name = "btnExit";
            this.btnExit.Size = new System.Drawing.Size(75, 23);
            this.btnExit.TabIndex = 3;
            this.btnExit.Text = "Thoát";
            this.btnExit.UseVisualStyleBackColor = true;
            this.btnExit.Click += new System.EventHandler(this.btnExit_Click);
            // 
            // btnLogin
            // 
            this.btnLogin.Location = new System.Drawing.Point(238, 103);
            this.btnLogin.Name = "btnLogin";
            this.btnLogin.Size = new System.Drawing.Size(75, 23);
            this.btnLogin.TabIndex = 2;
            this.btnLogin.Text = "Đăng nhập";
            this.btnLogin.UseVisualStyleBackColor = true;
            this.btnLogin.Click += new System.EventHandler(this.btnLogin_Click);
            // 
            // panel3
            // 
            this.panel3.Controls.Add(this.txbPassWord);
            this.panel3.Controls.Add(this.label2);
            this.panel3.Location = new System.Drawing.Point(3, 53);
            this.panel3.Name = "panel3";
            this.panel3.Size = new System.Drawing.Size(394, 44);
            this.panel3.TabIndex = 1;
            // 
            // txbPassWord
            // 
            this.txbPassWord.Location = new System.Drawing.Point(139, 10);
            this.txbPassWord.Name = "txbPassWord";
            this.txbPassWord.Size = new System.Drawing.Size(252, 20);
            this.txbPassWord.TabIndex = 1;
            this.txbPassWord.Text = "1";
            this.txbPassWord.UseSystemPasswordChar = true;
            // 
            // label2
            // 
            this.label2.AutoSize = true;
            this.label2.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(163)));
            this.label2.Location = new System.Drawing.Point(3, 9);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(84, 19);
            this.label2.TabIndex = 0;
            this.label2.Text = "Mật khẩu:";
            // 
            // panel2
            // 
            this.panel2.Controls.Add(this.txbUserName);
            this.panel2.Controls.Add(this.label1);
            this.panel2.Location = new System.Drawing.Point(3, 3);
            this.panel2.Name = "panel2";
            this.panel2.Size = new System.Drawing.Size(394, 44);
            this.panel2.TabIndex = 0;
            // 
            // txbUserName
            // 
            this.txbUserName.Location = new System.Drawing.Point(139, 10);
            this.txbUserName.Name = "txbUserName";
            this.txbUserName.Size = new System.Drawing.Size(252, 20);
            this.txbUserName.TabIndex = 1;
            this.txbUserName.Text = "k9";
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(163)));
            this.label1.Location = new System.Drawing.Point(3, 9);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(130, 19);
            this.label1.TabIndex = 0;
            this.label1.Text = "Tên đăng nhập:";
            // 
            // fLogin
            // 
            this.AcceptButton = this.btnLogin;
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.CancelButton = this.btnExit;
            this.ClientSize = new System.Drawing.Size(424, 157);
            this.Controls.Add(this.panel1);
            this.Name = "fLogin";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "Đăng nhập";
            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.fLogin_FormClosing);
            this.panel1.ResumeLayout(false);
            this.panel3.ResumeLayout(false);
            this.panel3.PerformLayout();
            this.panel2.ResumeLayout(false);
            this.panel2.PerformLayout();
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.Panel panel1;
        private System.Windows.Forms.Panel panel3;
        private System.Windows.Forms.TextBox txbPassWord;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Panel panel2;
        private System.Windows.Forms.TextBox txbUserName;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Button btnExit;
        private System.Windows.Forms.Button btnLogin;
    }
}

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.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuanLyQuanCafe
{
    public partial class fTableManager : Form
    {
        public fTableManager()
        {
            InitializeComponent();

            LoadTable();
        }

        #region Method
        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;

                switch (item.Status)
                {
                    case "Trống":
                        btn.BackColor = Color.Aqua;
                        break;
                    default:
                        btn.BackColor = Color.LightPink;
                        break;
                }

                flpTable.Controls.Add(btn);
            }
        }
        #endregion


        #region Events
        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();
        }
        #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.panel3 = new System.Windows.Forms.Panel();
            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.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;
            // 
            // panel3
            // 
            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;
            // 
            // 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(133, 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(133, 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;
            // 
            // 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;
            // 
            // 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);
            ((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;
    }
}

Code Table.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 Table
    {
        public Table(int id, string name, string status)
        {
            this.ID = id;
            this.Name = name;
            this.Status = status;
        }

        public Table(DataRow row)
        {
            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; }
        }
    }
}

Code 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
{
    public class TableDAO
    {
        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 List<Table> LoadTableList()
        {
            List<Table> tableList = new List<Table>();

            DataTable data = DataProvider.Instance.ExecuteQuery("USP_GetTableList");

            foreach (DataRow item in data.Rows)
            {
                Table table = new Table(item);
                tableList.Add(table);
            }

            return tableList;
        }
    }
}

Bài sau chúng ta sẽ cùng nhau tìm hiểu cách hiển thị hóa đơn theo bàn được chọ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  
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
fire_dragon_19121998 2018-12-06 00:43:43

System.Data.SqlClient.SqlException: 'Could not find stored procedure 'USP_GetTableList'.'

em bị lỗi này :(

k biết khắc phục sao cả . 

nếu em chỉ chạy bài trước thì nó vẫn ok . nhưng đến bài này thì nó có lỗi :( anh chỉ em sảa dc k . cảm ơn anh rất nhiều

0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
hoangchuong1419 2018-11-21 21:07:38

mình code có xuất hiện lỗi trên mong mọi ng trợ giúp 

 an unhandled exception of type 'system.stackoverflowexception' occurred in .... trong đoạn code 

 public static donthuocDAO Instance
        {
            get
            {
                if (Instance == null) instance = new donthuocDAO(); return donthuocDAO.instance;
            }

            private set
            {
                instance = value;
            }
        }

 

0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
hoangchuong1419 2018-11-21 21:04:20

a

 
0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
tungpt 2018-11-06 16:53:48

Mến chào Kteam!

Cảm ơn Kteam đã có những bài học thiết thực.

Kteam cho tôi hỏi ở đoạn code trong file

Table.CS

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

Trên hàm khởi tạo mỗi biến tương ứng với 1 giá trị của cột dữ liệu trong bảng

Nếu như bảng có nhiều cột thì các biến truyền vào trong hàm khởi tạo Table có cách nào ngắn gọn hơn không hay ta phải thực hiện khai báo đầy đủ tất cả các biến tương ứng với các cột dữ liệu của bảng?

Ví dụ: bảng nhân viênc có 15 cột vậy khi viết hàm khởi tạo cho Employee theo như cách trên thì cũng phải truyền vào 15 biến tương ứng hay có cách nào khác.

 

0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
nghiann262 2018-10-29 16:03:16

mình run thì tại class Table.cs báo lỗi: System.InvalidCastException: 'Specified cast is not valid.'

Debug thì thấy kết quả khi chạy nó lấy luôn cả bảng Account. Sai ở chỗ nào vậy ad

0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
levukhanh270896 2018-06-13 23:44:08

sao e chỉ hiển thị có 1 bàn v a?

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
Nguyễn Long 2018-09-29 09:45:36
kiểm tra lại câu truy vấn insert tablefood
0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
hoangxuyenit94 2018-04-23 09:12:24

public List<Table> LoadTableList() {

           List<Table> tableList = new List<Table>();

           DataTable data = DataProvider.Instance.ExecuteQuery("USP_GetTableList");

           foreach (DataRow item in data.Rows) {

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

}

               return tableList;

}
Error    CS0050    Inconsistent accessibility: return type 'List<Table>' is less accessible than method 'TableDAO.LoadTableList()'   
Anh chị giúp em khắc phục lỗi này với ạ
 

 

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
Nguyễn Long 2018-09-29 09:46:13
đã pucblic class đó chưa?
0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
thinhvy 2017-05-23 14:31:09

anh ơi,em debug ,tổng cộng 1 bàn lập lại 5 lần, bàn lập lại nhiều lần quá nên em muốn xóa bớt thì làm cách nào, với lại ở bảng lsvBill dữ liệu data của(tên món , số lượng, đơn giá ,thành tiền )không hiện thị theo thứ tự mà hiện thị(số lượng , đơn giá,thành tiền, tên món), vậy em bị lỗi chỗ nào?

tks.

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
K9 2017-05-24 02:10:27
select thứ tự của nó ra nhé bạn. select A,B,C...
0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
Xuan Thu 2017-05-22 14:17:57

chào anh, 

khi chạy chương trình e gặp lỗi "The type name "Instance" does not exist in the type "DataProvider"" 

em đã search google, xem tài liệu của microsoft và trang stackoverflow.com nhưng k tìm ra cách sửa lỗi.

anh giúp em với ạ.

0 bình chọn
Reply
View all 2 comments
Kteam - Howkteam Free Education
K9 2017-05-23 01:40:00
thì k có chữ instance chứ j.
0 bình chọn
Reply
Kteam - Howkteam Free Education
Xuan Thu 2017-05-23 10:55:52
// 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 { public class TableDAO { private static TableDAO instance; public static TableDAO Instance { get {if(instance == null) instance = new TableDAO();return instance; } private set { instance = value;} } public static int TableWidth = 50; public static int TableHeight = 50; private TableDAO() { } public List <table> LoadTableList() { List </table> <table> tableList = new List </table> <table> (); DataTable dt = new DataProvider.Instance.ExecuteQuery(&quot;USP_GetTableList&quot;); foreach (DataRow item in dt.Rows) { Table table = new Table(item); tableList.Add(table); } return tableList; } } } // DataProvider.cs using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace QuanLyQuanCafe.DAO { public class DataProvider { private static DataProvider instance; // ctrl &#43; R &#43; E public static DataProvider Instance { get { if (instance == null) instance = new DataProvider();return instance; } private set { instance = value; } } private DataProvider(){ } private string connectionSTR = @&quot;Data Source=XUANTHU-PC\SQLEXPRESS;Initial Catalog=QuanLyQuanCafe;Integrated Security=True&quot;; public DataTable ExecuteQuery(string query, Object[] parameter = null ) { DataTable data = new DataTable(); using (SqlConnection connection = new SqlConnection(connectionSTR)) { connection.Open(); SqlCommand command = new SqlCommand(query, connection); if (parameter != null) { string[] listPara = query.Split(' '); int i = 0; foreach(string item in listPara) { if (item.Contains(&quot;@&quot;)) { command.Parameters.AddWithValue(item, parameter[i]); i&#43;&#43;; } } } SqlDataAdapter adapter = new SqlDataAdapter(command); adapter.Fill(data); connection.Close(); } return data; } public IEnumerable Rows { get; internal set; } } } anh check giúp em xem sao lại có lỗi không có kiểu Instance ạ </table>
0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
Xuan Thu 2017-05-22 14:17:42

chào anh, 

khi chạy chương trình e gặp lỗi "The type name "Instance" does not exist in the type "DataProvider"" 

em đã search google, xem tài liệu của microsoft và trang stackoverflow.com nhưng k tìm ra cách sửa lỗi.

anh giúp em với ạ.

0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
Xuan Thu 2017-05-22 14:17:35

chào anh, 

khi chạy chương trình e gặp lỗi "The type name "Instance" does not exist in the type "DataProvider"" 

em đã search google, xem tài liệu của microsoft và trang stackoverflow.com nhưng k tìm ra cách sửa lỗi.

anh giúp em với ạ.

0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
thinhvy 2017-05-21 15:00:03

chào anh,

anh ơi cho em hỏi : khi em chạy thì số bàn hiển thị chứ lập lại liên tục tức là số bàn từ 0 đến 10 hiển thị lại tới hai ba lần.

ở phần dữ liệu thì số bàn cũng chạy liên tục lập lại  2, 3 lần.

làm sao để sửa lỗi này, xin anh giúp đỡ.

tks.

0 bình chọn
Reply
View all 2 comments
Kteam - Howkteam Free Education
K9 2017-05-21 20:39:19
cái này bạn debug xem thử có chạy vòng lặp thừa 3 lần k
0 bình chọn
Reply
Kteam - Howkteam Free Education
thinhvy 2017-05-22 10:28:41
em debug ,tổng cộng 1 bàn lập lại 5 lần, bàn lập lại nhiều lần quá nên em muốn xóa bớt mà không biết cách, với lại ở bảng lsvBill(tên món , số lượng, đơn giá ,thành tiền )không hiện thị theo thứ tự mà hiện thị(số lương, thành tiền , đơn giá, tên món)
0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
thinhvy 2017-05-21 14:59:57

chào anh,

anh ơi cho em hỏi : khi em chạy thì số bàn hiển thị chứ lập lại liên tục tức là số bàn từ 0 đến 10 hiển thị lại tới hai ba lần.

ở phần dữ liệu thì số bàn cũng chạy liên tục lập lại  2, 3 lần.

làm sao để sửa lỗi này, xin anh giúp đỡ.

tks.

0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
thinhvy 2017-05-21 14:59:49

chào anh,

anh ơi cho em hỏi : khi em chạy thì số bàn hiển thị chứ lập lại liên tục tức là số bàn từ 0 đến 10 hiển thị lại tới hai ba lần.

ở phần dữ liệu thì số bàn cũng chạy liên tục lập lại  2, 3 lần.

làm sao để sửa lỗi này, xin anh giúp đỡ.

tks.

0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
arsenal8x85 2017-04-26 17:32:15

anh ơi cho em hỏi chỗ TableDAO.cs:

em làm y hệt luôn mà nó bị lỗi chỗ LoadTableList này       public List<Table> LoadTableList() 
Error    CS0050    Inconsistent accessibility: return type 'List<Table>' is less accessible than method 'TableDAO.LoadTableList()'   

khi em để lại là private List<Table> LoadTableList()  thì nó hết lỗi đó nhưng bên tab fTableManager.cs lại bị lỗi chỗ LoadTableList

List<Table> tableList = TableDAO.Instance.LoadTableList();

CS0122    'TableDAO.LoadTableList()' is inaccessible due to its protection level

em ghi hơi rối nhưng không biết miêu tả cách nào khác, anh thông cảm em với ạ

http://imgur.com/mmg93Qi

0 bình chọn
Reply
View all 2 comments
Kteam - Howkteam Free Education
K9 2017-04-27 21:36:35
chưa public class Table bạn ơi. Y chang đâu mà Y chang. -_-
0 bình chọn
Reply
Kteam - Howkteam Free Education
hoangxuyenit94 2018-04-24 10:22:31
Bạn đã khắc phục được lỗi chưa? mình cũng gặp vấn đề đó, 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 TableDAO { 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; public TableDAO() { } public List <table> LoadTableList() { List </table> <table> tableList = new List </table> <table> (); DataTable data = DataProvider.Instance.ExecuteQuery(&quot;USP_GetTableList&quot;); foreach (DataRow item in data.Rows) { Table table = new Table(item); tableList.Add(table); } return tableList; } } } không biết cách nào xử lý cả. </table>
0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
Boo Kim 2017-04-25 21:38:43

anh ơi cho e hỏi
cái status đó a
nếu e không muốn cho nó hiện lên chữ trống mà thay đổi màu thì code chỉnh lại là gì ạ?
ví dụ như trống thì màu như bình thường, còn nếu có ng thì sẽ đổi qua màu khác ý

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
K9 2017-04-25 21:59:00
được nhé bạn BackColor = Colors.Blue;
0 bình chọn
Reply
Hiển thị số bàn theo CSDL cho phần mềm Quản lý quán cafe với C# Winform
boyqn676 2017-03-16 00:25:07
Chỉ chạy form mong muốn để test cho lẹ nè anh. static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new fLogin()); }
0 bình chọn
Reply
View all 2 comments
Kteam - Howkteam Free Education
K9 2017-03-17 23:55:34
à ý e là vào trong App.cs sửa form start thành form mình muốn ấy hả???
0 bình chọn
Reply
Kteam - Howkteam Free Education
boyqn676 2017-03-19 17:10:29
đúng rồi anh :v
0 bình chọn
Reply
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education