【从头到尾

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

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

原文地址:https://www.cnblogs.com/hfultrastrong/p/4604099.html