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

1、出这套教程的目的,一方面是希望能够激起大家对软件开发的热情和积极性,另一方面是把我对软件开发的一些心得和知识分享给大家。这套教程如果对您有所帮助,万分荣幸,若有不当之处,还望见谅(勿喷 ^_^)。

2、本教程仅供学习交流使用,严禁用于商业用途,在不收取他人费用,并能标注教程出处(http://www.cnblogs.com/hfultrastrong/)的情况下,您可以自由的转载、分发、传播此教程。

3、如果您发现本教程有任何地方讲解有误,都可以在博客下方留言指正,或者是通过Email:[email protected]与我取得联系,本人将万分感激!

主窗体模块-窗体界面设计

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

时间: 2024-10-11 06:07:50

【从头到尾 - 餐饮管理系统】 - (六)的相关文章

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

1.出这套教程的目的,一方面是希望能够激起大家对软件开发的热情和积极性,另一方面是把我对软件开发的一些心得和知识分享给大家.这套教程如果对您有所帮助,万分荣幸,若有不当之处,还望见谅(勿喷 ^_^). 2.本教程仅供学习交流使用,严禁用于商业用途,在不收取他人费用,并能标注教程出处(http://www.cnblogs.com/hfultrastrong/)的情况下,您可以自由的转载.分发.传播此教程. 3.如果您发现本教程有任何地方讲解有误,都可以在博客下方留言指正,或者是通过Email:[e

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

1.出这套教程的目的,一方面是希望能够激起大家对软件开发的热情和积极性,另一方面是把我对软件开发的一些心得和知识分享给大家.这套教程如果对您有所帮助,万分荣幸,若有不当之处,还望见谅(勿喷 ^_^). 2.本教程仅供学习交流使用,严禁用于商业用途,在不收取他人费用,并能标注教程出处(http://www.cnblogs.com/hfultrastrong/)的情况下,您可以自由的转载.分发.传播此教程. 3.如果您发现本教程有任何地方讲解有误,都可以在博客下方留言指正,或者是通过Email:[e

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

1.出这套教程的目的,一方面是希望能够激起大家对软件开发的热情和积极性,另一方面是把我对软件开发的一些心得和知识分享给大家.这套教程如果对您有所帮助,万分荣幸,若有不当之处,还望见谅(勿喷 ^_^). 2.本教程仅供学习交流使用,严禁用于商业用途,在不收取他人费用,并能标注教程出处(http://www.cnblogs.com/hfultrastrong/)的情况下,您可以自由的转载.分发.传播此教程. 3.如果您发现本教程有任何地方讲解有误,都可以在博客下方留言指正,或者是通过Email:[e

step by step 之餐饮管理系统六(数据库访问模块)

距上次写的博客已经好几个月,一方面公司里面有很多的东西要学,平时的时候又要写代码,所以没有及时更新,不过现在还好,已经成型了,现在把之前的东西贴出来,先看一下现在做的几个界面吧.第一个界面是用颜色用区分台状态的,后来感觉这样没有图片好,于是用第二个界面 改进后的界面 系统登录界面. 上面的截图主要是前一段时间写的台桌界面,回到数据库访问模块吧. 数据库访问模块在网上的资源也非常的多,所以我也不想讲太多. 首先定义DataAccess层的结构,用不同的文件夹区分它们,核心的类放在DBCore文件夹

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

1.出这套教程的目的,一方面是希望能够激起大家对软件开发的热情和积极性,另一方面是把我对软件开发的一些心得和知识分享给大家.这套教程如果对您有所帮助,万分荣幸,若有不当之处,还望见谅(勿喷 ^_^). 2.本教程仅供学习交流使用,严禁用于商业用途,在不收取他人费用,并能标注教程出处(http://www.cnblogs.com/hfultrastrong/)的情况下,您可以自由的转载.分发.传播此教程. 3.如果您发现本教程有任何地方讲解有误,都可以在博客下方留言指正,或者是通过Email:[e

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

1.出这套教程的目的,一方面是希望能够激起大家对软件开发的热情和积极性,另一方面是把我对软件开发的一些心得和知识分享给大家.这套教程如果对您有所帮助,万分荣幸,若有不当之处,还望见谅(勿喷 ^_^). 2.本教程仅供学习交流使用,严禁用于商业用途,在不收取他人费用,并能标注教程出处(http://www.cnblogs.com/hfultrastrong/)的情况下,您可以自由的转载.分发.传播此教程. 3.如果您发现本教程有任何地方讲解有误,都可以在博客下方留言指正,或者是通过Email:[e

step by step 之餐饮管理系统二

昨天写了餐饮管理系统的相关需求,得到了园友的一些好的建议,感到很高兴,确实写的也不全面,现在补充一下需要的业务,这次主要做的主要是前台收银系统,所以业务主要集中在前台点菜收银这块,而后面数据管理这块则暂时先不考虑. 至于像权限,不同的组门应该有不同的权限不同级别的员工也有相应的权限,比如收银员只有9折的打折权限,而收银主管则可以打折到8.5折,而经理可以打折到8折.至于一个园友说的前景,希望系统可以应用在中小型的餐饮,都说民以食为天,特别是现在社会发展如此快,人民对生活水平的需求越来越高,她们不

餐饮管理系统

作为一个团队一起完成一个项目,总框架的设计是必不可少的,框架设计完成之后,就是根据实际情况对人力资源的分配,各自完成各自的模块. 系统框架 对于餐饮管理系统这个项目来说,技术的关键就是对于数据库的操作(增删改查).因此数据库是本系统的最低层也是最为核心的部分,无论是哪个角色.哪一个模块都会有对数据库的操作.具体的框架如下: 系统结构图 在餐饮管理系统中,根据实际餐饮情况及团队人员及其各自的能力将这个系统分成了四个大的模块,分别为桌台管理.员工管理.菜单管理.开台点菜.详细的模块情况如下: 各个模

基于Android移动终端的微型餐饮管理系统的设计与实现1-简介

这个是我做的毕业设计,又到了做毕业设计的季节了,贴出来给有需要的学弟妹做参考. 名字起得挺长的,其实就是一个low low的Android应用,连界面都没有美化,凑合凑合就交上去了,居然还评上了优秀毕业设计,只能说本人的大学比较普通... 摘要 在"互联网+"概念风起云涌的今天,各细分领域的移动应用如雨后春笋般喷涌而出.对于与民众生活息息相关的小微型餐饮店铺,目前还没有一个很完善的管理系统解决方案.因此,本文设计并实现了这套基于Android系统移动终端对热敏打印机进行无驱控制的微型餐