【从头到尾 - 餐饮管理系统】 - (六)
【从头到尾 - 餐饮管理系统】 - (六)
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与我取得联系,本人将万分感激!

浙公网安备 33010602011771号