【從頭到尾 - 餐飲管理系統】 - (六)


 

【從頭到尾 - 餐飲管理系統】 - (六)

 

1、出這套教程的目的,一方面是希望能夠激起大家對軟件開發的熱情和積極性,另一方面是把我對軟件開發的一些心得和知識分享給大家。這套教程如果對您有所幫助,萬分榮幸,若有不當之處,還望見諒(勿噴 ^_^)。

2、本教程僅供學習交流使用,嚴禁用於商業用途,在不收取他人費用,並能標注教程出處(http://www.cnblogs.com/hfultrastrong/的情況下,您可以自由的轉載、分發、傳播此教程。

3、如果您發現本教程有任何地方講解有誤,都可以在博客下方留言指正,或者是通過Email:hf_ultrastrong@163.com與我取得聯系,本人將萬分感激!

 

 

 

主窗體模塊-窗體界面設計

 

 

START!1、界面展示

 

END!

 

 

 

 

代碼樹

 

 

 

 

 

 

主窗體模塊-窗體加載時,顯示底部信息

 

 

START!

 

     #region 加載事件
        /// <summary>
        /// 加載事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Frm_Main_Load(object sender, EventArgs e)
        {
            //設置底部信息
            this.toolStripStatusLabel2.Text = "[ " + name + " ] ";
            this.toolStripStatusLabel6.Text = "[ " + time + " ] ";
            this.toolStripStatusLabel4.Text = "[ " + power + " ] ";

            //根據Login所得到的權限,限定哪些功能能用,那些不能用
            switch (power)
            {
                case "管理員":
                    {
                        this.員工信息管理MToolStripMenuItem.Enabled = false;
                    } break;
                case "普通用戶":
                    {
                        this.員工信息管理MToolStripMenuItem.Enabled = false;
                        this.桌台信息管理TToolStripMenuItem.Enabled = false;
                        this.用戶權限修改PToolStripMenuItem.Enabled = false;
                    } break;
                default:break;
            }
        } 
        #endregion

 

 END!

 

 

 

主窗體模塊-窗體加載時,右側顯示桌台列表信息

 

 

START!1、此時所用的事件是窗體激活事件,這樣在添加過信息之后能時時的刷新數據。

 

        #region 窗體被激活事件
        /// <summary>
        /// 窗體被激活事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Frm_Main_Activated(object sender, EventArgs e)
        {
            //清空ListView控件
            this.listView1.Clear();

            //設置鏈接字符串,用來獲得着台名稱、和狀態
            string sql = "SELECT TableName, TableState FROM Tb_Table";

            SqlDataReader sdr = Command.SQLHelper.ExecuteReader(sql);

            //計數,用來計算總計有多少個桌台
            int i = 0;

            //循環讀取桌台
            while (sdr.Read())
            {
                i++;

                //強制類型轉換
                bool state = (bool)sdr["TableState"];

                if (state == false)
                {
                    //如果桌台未用,則使用ImageList控件中的第一張圖片
                    this.listView1.Items.Add(sdr["TableName"].ToString(), 0);
                }
                else
                {
                    //如果桌台已經使用,則使用ImageList控件中的第二張圖片
                    this.listView1.Items.Add(sdr["TableName"].ToString(), 1);
                }
            }
            //顯示桌台個數
            this.toolStripStatusLabel8.Text = "[ " + i + " ] ";
        } 
        #endregion

 

  END!

 

 

 

 

主窗體模塊-點擊ListView空白處,不顯示右鍵菜單

 

 

START!

 

     #region 點擊ListView空白處,不顯示右鍵菜單
        /// <summary>
        ///  點擊ListView空白處,不顯示右鍵菜單
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listView1_MouseDown(object sender, MouseEventArgs e)
        {
            //如果點擊的是空白的地方,則相應的關閉所有的右鍵功能
            if (this.listView1.HitTest(e.X, e.Y).Item == null)
            {
                this.contextMenuStrip1.Items[0].Enabled = false;
                this.contextMenuStrip1.Items[1].Enabled = false;
                this.contextMenuStrip1.Items[2].Enabled = false;
                this.contextMenuStrip1.Items[3].Enabled = false;
                this.contextMenuStrip1.Items[4].Enabled = false;
                return;
            }
        }
        #endregion

 

   END!

 

 

 

 

 主窗體模塊-雙擊桌台信息,在左側顯示詳細信息

 

 

START!

     #region 雙擊顯示詳細信息事件
        /// <summary>
        /// 雙擊顯示詳細信息事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listView1_DoubleClick(object sender, EventArgs e)
        {
            //雙擊某一個項時,獲得相應的桌台名稱
            string name = this.listView1.SelectedItems[0].SubItems[0].Text;

            SqlParameter[] para = new SqlParameter[]
            {
                new SqlParameter("@name", name),
            };

            //sql語句:獲得桌台名稱、桌台位置、桌台狀態、桌台類型、備注,來自於Tb_Table表,檢索條件是TableName
            string sql = @"SELECT TableName, TablePosition,TableState, TableType, Remark FROM Tb_Table WHERE TableName = @name";

            DataTable dt = Command.SQLHelper.DataTable(sql, para);

            //根據相應的列,顯示相應的信息
            this.textBox1.Text = dt.Rows[0][0].ToString();
            this.textBox2.Text = dt.Rows[0][1].ToString();
            //判斷是true還是False,如果是true那么顯示已使用,否則顯示未使用
            this.textBox3.Text = ((bool)dt.Rows[0][2] == false) ? "未使用" : "已使用";
            this.textBox4.Text = dt.Rows[0][3].ToString();
            this.textBox8.Text = dt.Rows[0][4].ToString();//備注
        }
        #endregion

    END!

 

 

 

主窗體模塊-右鍵彈出相應功能菜單

 

 

START!

        #region 添加右鍵單擊事件
        /// <summary>
        /// 添加右鍵單擊事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listView1_Click(object sender, EventArgs e)
        {
            //獲得相應右鍵單擊時的桌台名稱
            string name = this.listView1.SelectedItems[0].SubItems[0].Text;

            //sql語句,獲得桌台狀態、來自於:Tb_Table,檢索條件是 TableName
            string sql = "SELECT TableState FROM Tb_Table WHERE TableName = '" + name + "'";

            bool i = (bool)Command.SQLHelper.ExecuteScalar(sql);

            //如果狀態是已經使用,則相應的第一個不能使用
            if (i == true)
            {
                this.contextMenuStrip1.Items[0].Enabled = false;//開台
                this.contextMenuStrip1.Items[1].Enabled = true;//取消開台
                this.contextMenuStrip1.Items[2].Enabled = true;//點/加菜
                this.contextMenuStrip1.Items[3].Enabled = true;//消費查詢
                this.contextMenuStrip1.Items[4].Enabled = true;//結賬
                return;
            }
            //如果是位置用,相應的只有第一個能使用
            if (i == false)
            {
                this.contextMenuStrip1.Items[0].Enabled = true;
                this.contextMenuStrip1.Items[1].Enabled = false;
                this.contextMenuStrip1.Items[2].Enabled = false;
                this.contextMenuStrip1.Items[3].Enabled = false;
                this.contextMenuStrip1.Items[4].Enabled = false;
                return;
            }
        } 
        #endregion

 END!

 

 

 

 

主窗體模塊-鎖屏、解鎖

 

 

START!

 

        #region 鎖屏、解鎖

        /// <summary>
        /// 鎖屏
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 鎖屏ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //使用Panel控件來遮蓋所有的控件, 用以實現,鎖屏的功能,顯示預先隱藏的Panel
            this.panel1.Visible = true;
            //設置頂部的menuStrip1:菜單欄為不可用
            this.menuStrip1.Visible = false;
        }

        /// <summary>
        /// 解鎖
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            #region 數據判斷
            if (this.txt_pwd.Text.Trim() == "")
            {
                MessageBox.Show("密碼不能為空!", "提示");
                return;
            }

            if (!Command.IsFormart.IsNumber(this.txt_pwd.Text.Trim()))
            {
                MessageBox.Show("請輸入數字!", "提示");
                return;
            }

            if (this.txt_pwd.Text.Trim().Length > 5)
            {
                MessageBox.Show("密碼過長!", "提示");
                return;
            } 
            #endregion

            //使用sql,根據密碼,獲得相應的用戶名
            string sql = "SELECT UserName FROM Tb_User WHERE Pwd = '" + this.txt_pwd.Text.Trim() + "'";

            //強制轉換
            string i = (string)Command.SQLHelper.ExecuteScalar(sql);

            //判斷根據密碼獲得的用戶名跟,現在使用的用戶名稱,是否一致
            if (i == name)
            {
                //如果一至,隱藏遮罩層Panel
                this.panel1.Visible = false;
                //設置頂部菜單欄為可用
                this.menuStrip1.Visible = true;

                //設置文本框為密碼框
                //清空解鎖用的文本框,應為如果不清空,下一次點擊的時候,善慈使用的密碼,還會在上面。
                this.txt_pwd.Text = "";
            }
            else
            {
                MessageBox.Show("解鎖密碼不正確!", "提示");
            }
        } 
        #endregion

 

 

 

 END!

 

 

 

主窗體模塊-打開相應功能窗體以及退出

 

 

START!

 

        #region 桌台信息管理、員工信息管理、菜品管理、菜品類別管理
        /// <summary>
        /// 桌台信息管理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 桌台信息管理TToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //跳轉到 Frm_Table窗體
            Frm_Table f = new Frm_Table();
            f.ShowDialog();
        }



        /// <summary>
        /// 員工信息管理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 員工信息管理MToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //跳轉到 Frm_Waiter窗體
            Frm_Waiter f = new Frm_Waiter();
            f.Show();
        }


        /// <summary>
        /// 菜品管理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 菜品管理ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //跳轉到 Frm_ZSDishes窗體
            Frm_ZSDishes f = new Frm_ZSDishes();
            f.ShowDialog();
        }



        /// <summary>
        /// 菜品類別管理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 菜品類別管理TToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //跳轉到 Frm_ZSDishesType窗體
            Frm_ZSDishesType f = new Frm_ZSDishesType();
            f.ShowDialog();
        }
        #endregion

        #region 右鍵開台事件、取消開台事件、點/加菜事件、消費查詢事件、結賬模塊
        /// <summary>
        /// 右鍵開台事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 開台ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //跳轉到Frm_OpenTable
            Frm_OpenTable f = new Frm_OpenTable();
            //得到右鍵點擊所要開台的桌台的名稱
            f.name = this.listView1.SelectedItems[0].SubItems[0].Text;
            f.Show();
        }

        /// <summary>
        /// 取消開台事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 取消開台ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //獲取選中的桌台的名稱
            string name = this.listView1.SelectedItems[0].SubItems[0].Text;

            //提示是否取消桌台
            if (!(MessageBox.Show("是否要取消桌台?", "提示", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.OK))
            {
                return;
            }

            //1、首先把着台信息表中的狀態改為,未使用
            string sql = "UPDATE Tb_Table SET TableState = '0' WHERE TableName = '" + name + "'";

            //2、然后根據桌台名稱,刪除消費表中的消費信息
            string sql_2 = "DELETE FROM Tb_Guest WHERE TableName = '" + name + "'";

            //3、刪除消費食物表中的相對應的信息(刪除的不是一條數據,所以結果 k >= 0)
            string sql_3 = "DELETE FROM Tb_GuestFood WHERE TableName = '" + name + "'";

            int i = Command.SQLHelper.ExecuteNonQuery(sql) + Command.SQLHelper.ExecuteNonQuery(sql_2);
            int j = Command.SQLHelper.ExecuteNonQuery(sql_3);

            if (i == 2 && !(j < 0))
            {
                MessageBox.Show("取消成功!", "提示");
            }
            else
            {
                MessageBox.Show(" 取消失敗!", "提示");
            }
        }



        /// <summary>
        /// 點/加菜事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 點加菜ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Frm_DJDishes f = new Frm_DJDishes();
            //獲得相應的右鍵點擊的桌台的名稱
            f.TableName = this.listView1.SelectedItems[0].SubItems[0].Text;
            f.ShowDialog();
        } 


        /// <summary>
        /// 消費查詢事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 查詢消費ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Frm_Search f = new Frm_Search();
            //獲得相應的右鍵點擊的桌台的名稱
            f.TableName = this.listView1.SelectedItems[0].SubItems[0].Text;
            f.ShowDialog();
        }


        /// <summary>
        /// 結賬模塊
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 結賬ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Frm_SumPrice f = new Frm_SumPrice();
            //獲得相應的右鍵點擊的桌台的名稱
            f.TableName = this.listView1.SelectedItems[0].SubItems[0].Text;
            f.ShowDialog();
        } 
        #endregion

        #region 用戶權限、用戶密碼修改
        /// <summary>
        /// 用戶權限修改
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 用戶權限修改PToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Frm_PowerAndPwdUpdate f = new Frm_PowerAndPwdUpdate();
            //傳遞要使用的參數:用戶名、權限
            f.UserName = name;
            f.PowerName = power;
            f.ShowDialog();
        }

        /// <summary>
        /// 用戶密碼修改
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 用戶密碼修改UToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Frm_PowerAndPwdUpdate f = new Frm_PowerAndPwdUpdate();
            //傳遞相應的參數:用戶名
            f.UserName = name;
            //因為使用的是Tab切換控件,此功能使用的是第二個窗體,所以設置為顯示的時候為第二個Tab

            //********   此時的tabControl1為 [ Public ]  **********

            f.tabControl1.SelectedIndex = 1;
            f.ShowDialog();
        } 
        #endregion

        #region 數據備份、數據還原
        /// <summary>
        /// 數據備份
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 備份數據BToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Frm_DB f = new Frm_DB();
            f.ShowDialog();
        }

        /// <summary>
        /// 數據還原
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 還原數據ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Frm_DB f = new Frm_DB();

            //因為使用的是Tab控件,又因為此項功能使用的是,第二個Tab,所以啟動時使用第二個Tab
            f.tabControl1.SelectedIndex = 1;
            f.ShowDialog();
        }

        #endregion

        #region 退出事件
        /// <summary>
        /// 退出事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("是否要退出系統?", "提示", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.Cancel)
            {
                return;
            }
            else
            {
                //退出總線程
                Application.Exit();
            }
        }
        #endregion

 

 

 END!

 

 

 

 

2、對應視頻地址

 

 

 

START!

 

百度雲:http://pan.baidu.com/s/1ntoWkzR

 

END!

 

 

 

1、出這套教程的目的,一方面是希望能夠激起大家對軟件開發的熱情和積極性,另一方面是把我對軟件開發的一些心得和知識分享給大家。這套教程如果對您有所幫助,萬分榮幸,若有不當之處,還望見諒(勿噴 ^_^)。

2、本教程僅供學習交流使用,嚴禁用於商業用途,在不收取他人費用,並能標注教程出處(http://www.cnblogs.com/hfultrastrong/的情況下,您可以自由的轉載、分發、傳播此教程。

3、如果您發現本教程有任何地方講解有誤,都可以在博客下方留言指正,或者是通過Email:hf_ultrastrong@163.com與我取得聯系,本人將萬分感激!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM