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