餐饮管理系统之桌台管理

 在餐饮管理中,桌台的管理是必不可少的,这里的管理是指对餐桌的查询、增加、删除、修改。

一、桌台信息表的设计:


在这个模块中需要在数据库Restaurant中添加“桌台信息”表,根据实际情况可将桌台的属性:名称、位置、状态作为表的属性列,,再增加一列编号作为该表的主键(可将其作为标识列即每新加一列就将其值自动加1)。。。

表的列的设计如下图所示:

编辑初始的信息如下图所示(注意:在编辑行信息时因为“编号”是标识列,故不能给赋值),,下图是因为后来程序运行后经过增加、删除后才截的图故而截的图的编号不是从1开始的。。。

 

在程序的主界面设计中增加“桌台信息”菜单,该菜单下有增加、查询这两个子菜单。在点击增加时会弹出“增加餐桌”窗体,即对“增加”这个子菜单添加click事件,代码如下:

        private void 增加ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AddDesk adddesk = new AddDesk();
            adddesk.ShowDialog();
        }

 

二、桌台的增加:

  • 界面设计

在增加桌台时,,因为编号自动加1,,新增加的桌台状态肯定是“空闲”的,故而只需填写名称、位置信息即可,所以在增加桌台的界面中只需设计名称、位置即可。界面如下:

将名称框中填写想要的名称,选择好位置后点击确认,将该新的桌台信息加入数据库。

  • 加入数据库

在对数据库进行操作之前要将界面的信息获取保存下来,,代码如下

            string name = txb_addName.Text.Trim();//获取输入的名称

            string location = null;
            foreach (object sd in this.Controls)//获取选择的位置
            {
                RadioButton rbt = sd as RadioButton;
                if (rbt != null && rbt.Checked == true)
                {
                    location = rbt.Text.Trim();
                    break;
                }


            }

 

要将数据加入数据库,要增加命名空间 using System.Data.SqlClient,否则程序会不识别SqlConnection等类型的变量,具体步骤:

    第一,使用SqlConnection对象连接数据库;

            //使用SqlConnection对象连接数据库,Data Source为服务器,,Initial Catalog为要用的数据库的名称,,
            //Integrated Security=SSPI 表示在windows验证模式下的打开Sql(在使用SQL server2008软件时是有身份验证)
            string strConn = @"Data Source=.;Initial Catalog=Restaurant;Integrated Security=SSPI; ";
            SqlConnection conn = new SqlConnection(strConn);
            conn.Open();

    第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调用;

      string sqlcommond = string.Format(@"insert into 桌台信息(状态,名称,位置)values('空闲','{0}','{1}')",name,location);//插入数据是数字就无  ''。。。

      SqlCommand cmd = new SqlCommand(sqlcommond, conn);

    第三,对SQL或存储过程执行后返回的“结果”进行操作。 

            cmd.ExecuteNonQuery();//执行SQL语句
            MessageBox.Show("成功插入桌台!!");
            conn.Close();

三、桌台查询:

  • 界面设计

无论是删除还是更新桌台信息,都必须先将想要删、改的桌台查询出来之后才能进行后续的步骤,,故而将删、改和查询放到一个界面中。查询条件按名称、位置、状态来查询,查询结果放到控件listview中。界面如下:

  • 按条件查询

在查询之前要连接数据库,代码见增加桌台是的连接数据库代码。

在查询中设计了一些小技巧,当选择条件为空时,将数据库中桌台信息表中的所有行都输出;当只是填写了一部分条件时,就将符合这条件的信息输出;当所有的条件都选择了,就只将满足所有条件的信息输出。根据界面信息对SQL查询命令进行调整,代码如下:

            string strname = txb_searchname.Text;//名称
            string strlocation = cbx_searchlocation.Text;//位置 
            string strstatus = cbx_searchstatus.Text;//状态

            string sqlcommond = "select * from 桌台信息";//都没填时查全部信息
            if(strname==""&&strlocation==""&&strstatus!="")
            {
                sqlcommond = string.Format(@"select * from 桌台信息 where 状态 ='" + strstatus + "'");//注意where两侧要有空格

            }
            else if(strname==""&&strlocation!=""&&strstatus=="")
            {
                sqlcommond = string.Format(@"select * from 桌台信息 where 位置 ='" + strlocation + "'");//注意where两侧要有空格

            }
            else if (strname != "" && strlocation == "" && strstatus == "")
            {
                sqlcommond = string.Format(@"select * from 桌台信息 where 名称 ='" + strname + "'");//注意where两侧要有空格

            }
            else if (strname != "" && strlocation != "" && strstatus == "")
            {
                sqlcommond = string.Format(@"select * from 桌台信息 where (名称 ='" + strname + "') and(位置 ='" + strlocation + "')");//注意where两侧要有空格

            }
            else if (strname != "" && strlocation == "" && strstatus != "")
            {
                sqlcommond = string.Format(@"select * from 桌台信息 where (名称 ='" + strname + "') and(状态 ='" + strstatus + "')");//注意where两侧要有空格

            }
            else if (strname == "" && strlocation != "" && strstatus != "")
            {
                sqlcommond = string.Format(@"select * from 桌台信息 where (位置 ='" + strlocation + "') and(状态 ='" + strstatus + "')");//注意where两侧要有空格

            }
            else if (strname != "" && strlocation != "" && strstatus != "")
            {
                sqlcommond = string.Format(@"select * from 桌台信息 where (名称 ='" + strname + "')and(位置 ='" + strlocation + "') and(状态 ='" + strstatus + "')");//注意where两侧要有空格

            }

 将读取的数据库的数据保存在listview中,先新定义一个listviewitem类型的变量it,将数据库中的一行数据保存在it中,再将在it加入到listview1中,知道将满足条件的桌台都输出完为止,之后关闭数据库,代码如下:

            //建立SqlCommand对象,负责SQL语句的执行和存储过程的调用;
            SqlCommand cmd = new SqlCommand(sqlcommond,conn);

            //对SQL或存储过程执行后返回的“结果”进行操作
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;

            SqlDataReader dr = cmd.ExecuteReader();
            listView1.Items.Clear();//再次按查询时将上次的查询结果清除
            
            while (dr.Read())
            {
                //MessageBox.Show("1111");
                //构建一个ListView的类型的变量,存入数据库数据,以便添加到listView1的行数据中
                ListViewItem it = new ListViewItem();
                it.Text = dr["编号"].ToString();
                it.SubItems.Add(dr["名称"].ToString());

                it.SubItems.Add(dr["位置"].ToString());
                it.SubItems.Add(dr["状态"].ToString());


                //将lt数据添加到listView1控件中
                listView1.Items.Add(it);
            }




            conn.Close();
  • 更新桌台信息

在更新桌台信息时,将原有的信息先显示在更新窗体对应的控件中,这就需要两个窗体之间传送信息。在本模块中是在接收窗体中定义公有string类型的变量num、defname、deflocation,在生成信息的窗体中给公有变量赋值,以此传递信息。具体代码如下

            if (listView1.SelectedItems.Count > 0)//将选择的信息传递给更新桌台窗体
            {
                UpdateDesk updesk = new UpdateDesk();
                updesk.num = listView1.SelectedItems[0].SubItems[0].Text;
                updesk.defname = listView1.SelectedItems[0].SubItems[1].Text;
                updesk.deflocation = listView1.SelectedItems[0].SubItems[2].Text;
                updesk.ShowDialog();
                


                string str = listView1.SelectedItems[0].SubItems[0].Text;
                
                //MessageBox.Show(str);
                listView1.SelectedItems.Clear();//将选择的项改为未选择
            }
            else 
            {
                MessageBox.Show("请选择你要更新的桌台!");
            
            }

在更新桌台窗体中,因为编号是标识列故而不能进行修改,可以将标号的文本框属性ReadOnly值改为True,界面如下

为了方便用户清晰的知道更新的是哪一个桌台,在初始化更新桌台窗体时,给对应的位置赋初值,这就用到了传来的信息了。代码如下

        private void UpdateDesk_Load(object sender, EventArgs e)
        {
            //根据选择要写改的桌台,给赋初值
            txb_num.Text = num;
            txb_updateName.Text = defname;
            foreach (object sd in this.Controls)
            {
                RadioButton rbt = sd as RadioButton;
                if (rbt != null && rbt.Text== deflocation)
                {
                    rbt.Checked = true;
                    break;
                }


            }


        }

 再点击确认后,将更新相应的数据库,(只要对数据库进行操作就必须连接数据库,第二部分中有详细说明,方法不在赘述)。

更新数据库的代码如下

        private void btn_addOK_Click(object sender, EventArgs e)
        {
            string name = txb_updateName.Text.Trim();
            int num = Convert.ToInt32( txb_num.Text);

            string location = null;
            foreach (object sd in this.Controls)
            {
                RadioButton rbt = sd as RadioButton;
                if (rbt != null && rbt.Checked == true)
                {
                    location = rbt.Text.Trim();
                    break;
                }


            }
            
            string strConn = @"Data Source=.;Initial Catalog=Restaurant;Integrated Security=SSPI; ";
            SqlConnection conn = new SqlConnection(strConn);
            conn.Open();
            //建立SqlCommand对象,负责SQL语句的执行和存储过程的调用;

            string sqlcom = string.Format(@"update 桌台信息 set 名称 = '"+name+"',位置 = '"+location+"' where 编号 = '"+num+"'");//插入数据是数字就无  ''。。。

            SqlCommand cmd = new SqlCommand(sqlcom, conn);

            cmd.ExecuteNonQuery();
            MessageBox.Show("成功更新桌台!!");
            conn.Close();
        }
  • 删除桌台

在删除桌台时从数据库中删除后,在listview中也要一并删除。删除listview中选中的一行,需要获取选中的行的索引,然后通过listview1.items.remove(listview1.tems[索引值])。具体删除代码如下:

        private void btn_delete_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                int num = Convert.ToInt32(listView1.SelectedItems[0].SubItems[0].Text);


                string strConn = @"Data Source=.;Initial Catalog=Restaurant;Integrated Security=SSPI; ";
                SqlConnection conn = new SqlConnection(strConn);
                conn.Open();
                string sqlcommond = string.Format(@"delete from 桌台信息 where 编号 = '" + num + "'");

                //建立SqlCommand对象,负责SQL语句的执行和存储过程的调用;
                SqlCommand cmd = new SqlCommand(sqlcommond, conn);

                //对SQL或存储过程执行后返回的“结果”进行操作
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;

                cmd.ExecuteReader();
                MessageBox.Show("成功从数据库中删除");
                conn.Close();


                //删除选择项
                int lisnum = listView1.Items.IndexOf(listView1.FocusedItem);
                listView1.Items.Remove(listView1.Items[lisnum]);
                
            }
            else
            {
                MessageBox.Show("请选择你要删除的桌台!");

            }
        }

 

posted @ 2016-04-26 22:36  team_h2s2z  阅读(2122)  评论(0编辑  收藏  举报