• 【从头到尾


    【从头到尾 - 餐饮管理系统】 - (六)

    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与我取得联系,本人将万分感激!

  • 相关阅读:
    在CentOS 7中搭建Git服务器
    CornerStone的使用
    js中一些常用的基本函数
    Spring包的方法WebUtils.getParametersStartingWith(request,String)
    js打开新窗口的两种方式
    JSONObject和JSONArray
    document.ready()的用法
    class属性多个样式的用法
    java改变图片文件尺寸
    所有异常
  • 原文地址:https://www.cnblogs.com/hfultrastrong/p/4604099.html
Copyright © 2020-2023  润新知