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