餐饮管理之开台
开台主要有两个功能,对已开台的管理和新增开台,
一 开台表的设计
此表名为'开台表',属性有编号,名称,服务员,人数,日期.编号是每台桌子的编号,唯一不为空,设置为主键,需从桌台管理表中查询,名称,相当于每台桌子的位置,服务员,在开台时可指派服务员,须从服务员对应的表中查询,人数为此桌有多少人,日期可自己制定,默认为当前时间.
表格显示效果如下:
在主界面的开台菜单下可选择进入开台表界面或开台
效果如下:
二 新增开台
界面设计
开台需要添加桌号,服务员和人数信息,桌号和服务员都有下拉框,在开台页面初始化的过程中会将空闲桌号加入到桌号下拉框中,服务员的下拉框一样,便于用户操作.
初始化的过程代码
1 private void OpenForm_Load(object sender, EventArgs e) 2 { 3 string strConn = @"Data Source=.;Initial Catalog=Restaurant;Integrated Security=SSPI; "; 4 SqlConnection conn = new SqlConnection(strConn); 5 conn.Open(); 6 String sqlcommond = String.Format(@"select * from 桌台信息 where 状态 ='空闲'"); 7 SqlCommand cmd = new SqlCommand(sqlcommond, conn); 8 //对SQL或存储过程执行后返回的“结果”进行操作 9 SqlDataAdapter da = new SqlDataAdapter(); 10 da.SelectCommand = cmd; 11 12 SqlDataReader dr = cmd.ExecuteReader(); 13 while (dr.Read()) 14 { 15 comboBox1.Items.Add(dr["编号"].ToString()); 16 } 17 dr.Close(); 18 19 20 String sqlcommondwork = String.Format(@"select * from 员工信息"); 21 SqlCommand cmdwork = new SqlCommand(sqlcommondwork, conn); 22 //对SQL或存储过程执行后返回的“结果”进行操作 23 SqlDataAdapter dawork = new SqlDataAdapter(); 24 da.SelectCommand = cmdwork; 25 26 SqlDataReader drwork = cmdwork.ExecuteReader(); 27 while (drwork.Read()) 28 { 29 comboBox2.Items.Add(drwork["员工姓名"].ToString()); 30 } 31 drwork.Close(); 32 33 34 conn.Close(); 35 }
加入数据库
确认添加后数据会加入开台表中,代码如下
1 string strConn = @"Data Source=.;Initial Catalog=Restaurant;Integrated Security=SSPI; "; 2 SqlConnection conn = new SqlConnection(strConn); 3 conn.Open(); 4 5 String strcout = comboBox1.Text; 6 String strpeoname = comboBox2 .Text; 7 String strpeocout = textBox2.Text; 8 String strdate = "";
连接数据库,并将插入的信息保存在字符串中.
1 if (strcout == "") 2 { 3 MessageBox.Show("请输入要开台的编号!"); 4 } 5 else if (strpeoname == "") 6 { 7 MessageBox.Show("请输入服务员姓名!"); 8 } 9 else 10 { 11 String sqlcommond = string.Format(@"select * from 桌台信息 where 编号 ='" + strcout + "'"); 12 SqlCommand cmd = new SqlCommand(sqlcommond, conn); 13 14 //对SQL或存储过程执行后返回的“结果”进行操作 15 SqlDataAdapter da = new SqlDataAdapter(); 16 da.SelectCommand = cmd; 17 18 SqlDataReader dr = cmd.ExecuteReader(); 19 20 if (!dr.Read()) 21 { 22 MessageBox.Show("没有该桌号!"); 23 } 24 else if (dr["状态"].ToString().Equals("占用")) 25 { 26 MessageBox.Show("该桌号非空闲"); 27 } 28 else 29 { 30 String strname = dr["名称"].ToString(); 31 strdate = DateTime.Now.ToString(); 32 dr.Close(); 33 String sqlcommond2 = string.Format(@"insert into 开台表(编号,名称,服务员,人数,日期) values('" + strcout + "','" + strname + "','" + strpeoname + "','" + strpeocout + "','" + strdate + "')"); 34 SqlCommand cmd2 = new SqlCommand(sqlcommond2, conn); 35 cmd2.ExecuteNonQuery(); 36 String sqlcommond3 = string.Format(@"update 桌台信息 set 状态='占用' where 编号='" + strcout + "'"); 37 SqlCommand cmd3 = new SqlCommand(sqlcommond3, conn); 38 cmd3.ExecuteNonQuery(); 39 MessageBox.Show(strcout + "号开台成功"); 40 } 41 conn.Close();
需要对插入的信息进行判断是否合格,都合格后插入开台表,并更新'桌台信息'表中该桌台的状态为占用.插入成功后需要跳出插入成功的提示.最后要关闭数据库.
1 Order ord = new Order(); 2 ord.desknum = comboBox1.Text.Trim(); 3 ord.servername = comboBox2.Text.Trim(); 4 ord.peocount = Convert.ToInt32(textBox2.Text.Trim()); 5 ord.time = strdate; 6 7 8 ord.Show();
成功开台后,跳到选菜的界面.
三 开台表界面
开台界面的主要功能有显示开台信息,查询,删除等,开台表中的编号栏也有下拉框,其中的信息为所有已开台的编号.
开台表初始化代码
1 private void Opentable_Load(object sender, EventArgs e) 2 { 3 string strConn = @"Data Source=.;Initial Catalog=Restaurant;Integrated Security=SSPI; "; 4 SqlConnection conn = new SqlConnection(strConn); 5 conn.Open(); 6 String sqlcommond = "select * from 开台表"; 7 SqlCommand cmd = new SqlCommand(sqlcommond, conn); 8 9 //对SQL或存储过程执行后返回的“结果”进行操作 10 SqlDataAdapter da = new SqlDataAdapter(); 11 da.SelectCommand = cmd; 12 13 SqlDataReader dr = cmd.ExecuteReader(); 14 listView1.Items.Clear();//再次 15 comboBox1.Items.Clear(); 16 while (dr.Read()) 17 { 18 //MessageBox.Show("1111"); 19 //构建一个ListView的数据,存入数据库数据,以便添加到listView1的行数据中 20 ListViewItem it = new ListViewItem(); 21 it.Text = dr["编号"].ToString(); 22 23 it.SubItems.Add(dr["名称"].ToString()); 24 25 it.SubItems.Add(dr["服务员"].ToString()); 26 27 it.SubItems.Add(dr["人数"].ToString()); 28 29 it.SubItems.Add(dr["日期"].ToString()); 30 31 32 //将lt数据添加到listView1控件中 33 listView1.Items.Add(it); 34 35 comboBox1.Items.Add(dr["编号"].ToString()); 36 } 37 conn.Close(); 38 }
搜索开台表将所有开台的编号加入到下拉框中,最后关闭数据库.
查询操作的显示及代码
开台界面的查询操作是在所有已开台的桌子中进行查询,查到相应桌子后需要对开台表中对应的一栏进行标蓝便于用户看见,效果如下图
查询操作的相应代码如下
1 private void button3_Click(object sender, EventArgs e) 2 { 3 4 Boolean flag = false; 5 for(int i=0;i<listView1.Items.Count;i++) 6 { 7 if (listView1.Items[i].SubItems[0].Text.IndexOf(comboBox1.Text.Trim()) >= 0) 8 { 9 flag = true; 10 listView1.Items[i].Selected = true; 11 listView1.Items[i].EnsureVisible(); 12 listView1.Items[oldread].BackColor = Color.White; 13 listView1.Items[i].BackColor = Color.Blue; 14 oldread = i; 15 break; 16 } 17 } 18 if(!flag) 19 { 20 MessageBox.Show("未找到该桌号"); 21 } 22 23 24 }
此操作无需查询数据库,在该开台界面显示的开台表中查询即可,若未找到会报出相应的提示.
取消开台及刷新
取消开台不仅仅是在该开台表中删除相应开台信息,还涉及其他表的一些信息的改变,如桌台信息表中该编号相应的状态信息要进行更新操作.
取消开台的代码如下:
1 private void button4_Click_1(object sender, EventArgs e) 2 { 3 4 if (listView1.SelectedItems.Count > 0) 5 { 6 string desknum = listView1.SelectedItems[0].SubItems[0].Text; 7 string strConn = @"Data Source=.;Initial Catalog=Restaurant;Integrated Security=SSPI; "; 8 SqlConnection conn = new SqlConnection(strConn); 9 conn.Open(); 10 //删除桌台表中的相关信息 11 string sqlcommondkaitai = string.Format(@"delete from 开台表 where 编号 = '" + desknum + "'"); 12 SqlCommand cmd = new SqlCommand(sqlcommondkaitai, conn); 13 SqlDataReader sr = cmd.ExecuteReader(); 14 sr.Close(); 15 16 //删除点菜信息中的相关信息 17 string sqlcommondorder = string.Format(@"delete from 点菜信息 where 桌台位置 = '" + desknum + "'"); 18 SqlCommand cmdorder = new SqlCommand(sqlcommondorder, conn); 19 SqlDataReader srorder = cmdorder.ExecuteReader(); 20 srorder.Close(); 21 22 //删除具体点菜信息中的相关信息 23 string sqlcommondorder1 = string.Format(@"delete from 具体点菜信息 where 桌台位置 = '" + desknum + "'"); 24 SqlCommand cmdorder1 = new SqlCommand(sqlcommondorder1, conn); 25 SqlDataReader srorder1 = cmdorder.ExecuteReader(); 26 srorder1.Close(); 27 28 //修改桌台信息表中相应的信息由占用到空闲 29 int desk = Convert.ToInt32(desknum); 30 String sqlcommond3 = string.Format(@"update 桌台信息 set 状态='空闲' where 编号= '"+desk+"' "); 31 SqlCommand cmd3 = new SqlCommand(sqlcommond3, conn); 32 SqlDataReader sr3 = cmd3.ExecuteReader(); 33 sr3.Close(); 34 35 36 37 38 conn.Close(); 39 40 41 //删除选择项 42 int lisnum = listView1.Items.IndexOf(listView1.FocusedItem); 43 listView1.Items.Remove(listView1.Items[lisnum]); 44 45 } 46 else 47 { 48 MessageBox.Show("请选择你要删除的桌台!"); 49 50 } 51 52 }
刷新操作的代码如下
1 private void button1_Click(object sender, EventArgs e) 2 { 3 string strConn = @"Data Source=.;Initial Catalog=Restaurant;Integrated Security=SSPI; "; 4 SqlConnection conn = new SqlConnection(strConn); 5 conn.Open(); 6 String sqlcommond = "select * from 开台表"; 7 SqlCommand cmd = new SqlCommand(sqlcommond, conn); 8 9 //对SQL或存储过程执行后返回的“结果”进行操作 10 SqlDataAdapter da = new SqlDataAdapter(); 11 da.SelectCommand = cmd; 12 13 SqlDataReader dr = cmd.ExecuteReader(); 14 listView1.Items.Clear();//再次 15 comboBox1.Items.Clear(); 16 while (dr.Read()) 17 { 18 //MessageBox.Show("1111"); 19 //构建一个ListView的数据,存入数据库数据,以便添加到listView1的行数据中 20 ListViewItem it = new ListViewItem(); 21 it.Text = dr["编号"].ToString(); 22 23 it.SubItems.Add(dr["名称"].ToString()); 24 25 it.SubItems.Add(dr["服务员"].ToString()); 26 27 it.SubItems.Add(dr["人数"].ToString()); 28 29 it.SubItems.Add(dr["日期"].ToString()); 30 31 32 //将lt数据添加到listView1控件中 33 listView1.Items.Add(it); 34 35 comboBox1.Items.Add(dr["编号"].ToString()); 36 } 37 conn.Close(); 38 39 } 40