【從頭到尾 - 餐飲管理系統】 - (六)
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與我取得聯系,本人將萬分感激!