作为一个完善的管理系统,员工管理是重要的一环,主要分为对员工的增加,查询,修改与删除。
一、员工信息表的设计:
在数据库Restaurant中添加“员工信息”表,根据实际情况可将员工的属性:员工编号、员工姓名、身份证号、性别、年龄、电话、身份作为表的属性列。
表的列的设计如下图所示:
二、员工的增加:
- 界面设计
在员工增加界面中,将需要添加的员工的具体信息写入,点击确认,就可以将对应的信息加入到数据库中。
界面如下:
- 加入数据库
将信息加入数据库前先要读取目前的数据信息,代码如下:
string id = Worker_ID.Text.Trim(); string name = Woker_Name.Text.Trim(); string role = cbx_role.Text.Trim(); string cardnum = Worker_CardNum.Text.Trim(); string sex = null; string age = Worker_Age.Text.Trim(); string tel = Worker_Tel.Text.Trim(); foreach (object sd in this.Controls) { RadioButton rbt = sd as RadioButton; if (rbt != null && rbt.Checked == true) { sex = rbt.Text.Trim(); break; }
要将保存下来的信息加入到数据库中,要用到数据库中的命令,先连接到数据库中,然后执行需要的操作,再返回结果,代码如下:
string strConn = @"Data Source=.;Initial Catalog=Restaurant;Integrated Security=SSPI; "; SqlConnection conn = new SqlConnection(strConn); conn.Open(); string sqlcom = string.Format(@"insert into 员工信息(密码,员工编号,员工姓名,身份证号,性别,年龄,电话,身份)values('123456','{0}','{1}','{2}','{3}','{4}','{5}','{6}')", id, name, cardnum, sex, age, tel,role); SqlCommand cmd = new SqlCommand(sqlcom, conn); SqlDataReader dr = cmd.ExecuteReader(); dr.Close(); string sqlcom2 = string.Format(@"insert into 登录表(编号,用户名,身份,密码)values('{0}','{1}','{2}','123456')", id, name, role); SqlCommand cmd2 = new SqlCommand(sqlcom2, conn); SqlDataReader dr2 = cmd2.ExecuteReader(); dr2.Close(); MessageBox.Show("成功插入员工信息!!"); conn.Close();
三、员工查询:
- 界面设计
删除和修改员工信息都需要先查询到该员工的信息,所以我把删除,修改,查询操作整合到一个界面中,查询结果放到listview控件中,界面如下:
- 查询操作
查询前先要连接到数据库读取数据,代码见上面。
在查询过程中,由于条件太多,这里只提供单个条件的查询,其中用到的还是数据库中的命令,代码如下:
string strid = txb_wid.Text; string strname = txb_wname.Text; string strsex = cbx_wsex.Text; string stragef = txb_wagef.Text; string straget = txb_waget.Text; string strrole = cbx_wrole.Text; string sqlcommond = "select * from 员工信息"; if (strid != "") { sqlcommond = string.Format(@"select * from 员工信息 where 员工编号 ='" + strid + "'"); } else if (strname != "") { sqlcommond = string.Format(@"select * from 员工信息 where 员工姓名 ='" + strname + "'"); } else if (stragef != ""&&straget=="") { sqlcommond = string.Format(@"select * from 员工信息 where 年龄 >'" + stragef + "'"); } else if (stragef != "" && straget != "") { sqlcommond = string.Format(@"select * from 员工信息 where 年龄 between '" + stragef + "' and '" + straget + "'"); } else if (strrole != "" ) { sqlcommond = string.Format(@"select * from 员工信息 where 身份 ='" + strrole + "'"); } else if (strsex != "" ) { sqlcommond = string.Format(@"select * from 员工信息 where 性别 ='" + strsex + "'" ); }
将读取的数据库的数据保存在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()); it.SubItems.Add(dr["年龄"].ToString()); it.SubItems.Add(dr["电话"].ToString()); it.SubItems.Add(dr["身份"].ToString()); //将lt数据添加到listView1控件中 listView1.Items.Add(it); } conn.Close();//关闭数据库
- 修改员工信息
修改时,要将员工原有的信息显示在修改窗体的控件中,代码如下:
if (listView1.SelectedItems.Count > 0) { UpdataWorker upworker = new UpdataWorker(); upworker.defid = listView1.SelectedItems[0].SubItems[0].Text; upworker.defname = listView1.SelectedItems[0].SubItems[1].Text; upworker.defcardnum = listView1.SelectedItems[0].SubItems[2].Text; upworker.defsex = listView1.SelectedItems[0].SubItems[3].Text; upworker.defage = listView1.SelectedItems[0].SubItems[4].Text; upworker.deftel = listView1.SelectedItems[0].SubItems[5].Text; upworker.defrole = listView1.SelectedItems[0].SubItems[6].Text; upworker.ShowDialog(); string str = listView1.SelectedItems[0].SubItems[0].Text; //MessageBox.Show(str); listView1.SelectedItems.Clear();//将选择的项改为为选择 } else { MessageBox.Show("请选择你要更新的员工!"); }
在控件中进行需要的修改操作后,点击更新即可,该操作会读取当前控件中的信息,然后连接数据库进行数据库的更新操作,代码如下:
int id = Convert.ToInt32(txb_upid.Text); string name = txb_upname.Text.Trim(); string cardnum = txb_upcardnum.Text.Trim(); string sex = cbx_upsex.Text.Trim(); string age = txb_upage.Text.Trim(); string tel = txb_uptel.Text.Trim(); string role = cbx_role.Text.Trim(); string password = txb_password.Text.Trim(); 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 + "',身份证号 = '" + cardnum + "',性别 = '" + sex + "',年龄 = '" + age + "',电话 = '" + tel + "' where 员工编号 = '" + id + "'");//插入数据是数字就无 ''。。。 SqlCommand cmd = new SqlCommand(sqlcom, conn); SqlDataReader dr = cmd.ExecuteReader(); dr.Close(); string sqlcom2 = string.Format(@"update 登录表 set 用户名 = '" + name + "',身份 = '" + role + "',密码 = '" + password + "' where 员工编号 = '" + id + "'");//插入数据是数字就无 ''。。。 SqlCommand cmd2 = new SqlCommand(sqlcom2, conn); SqlDataReader dr2 = cmd.ExecuteReader(); dr2.Close(); MessageBox.Show("成功更新员工!!"); conn.Close();
- 删除员工
在删除员工时从数据库中删除后,在listview中也要一并删除。删除listview中选中的一行,需要获取选中的行的索引,然后通过listview1.items.remove(listview1.tems[索引值])。代码如下:
if (listView1.SelectedItems.Count > 0) { int id = 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 员工编号 = '" + id + "'"); //建立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("请选择你要删除的员工!"); }