首页 > 学院 > 开发设计 > 正文

人事管理系统实现(三)

2019-11-11 06:49:15
字体:
来源:转载
供稿:网友

   主窗体作为与用户交流的载体,已经初步设计完成,当我们按下某一个功能按钮时,能够得到一个相应功能的窗体,我们暂且称这些窗体为子窗体。

 设计了10个子窗体来实现相应的功能,将这10个子窗体放置到PerForm文件夹下,10个窗体的名字分别为:F_AddressList,F_ClearData,F_Find,F_HaveBack,F_ManFile,F_Stat,F_User,F_UserAdd,F_UserPope,F_WordPad。分别实现地址查询,数据清除,人事查询,数据库恢复,认识浏览,人事资料统计,用户资料,添加用户,用户权限设置和记事本功能。

    这一节,首先设计F_AddressList,设计按照查询条件和查询类型的条件来进行查询,找到所想要的数据。其中会用到SQL查询的相关知识,若能补充相关知识,则对于理解会有很大的帮助。

    设计界面如下:

窗体中使用Grid'View控件来显示查询到的数据,查询类型使用一个ComBox控件来提供用户选择查询类型,利用TextBox控件来接收查询条件,同时设计了四个Button按钮,实现,添加,修改,删除,退出功能。

     当设计好界面之后,开始实现各个功能:

    1. 定义两个实例化的对象,MyClass和MyModule

[csharp] view plain copy

DataClass.MyMeans MyDataClass = new DataClass.MyMeans();  ModuleClass.MyModule MyMC = new ModuleClass.MyModule();  

    声明一个DataSet“数据容器”,用来通过SqlDataReader类查询结果

[csharp] view plain copypublic static DataSet MyDS_Grid;  

   //查询得到tb_AddressBook表中所有项,实现对信息的添加等操作

[csharp] view plain copypublic static string AllSql = "Select ID,Name as 姓名, Sex as 性别 , Phone as电话,WordPhone as 工作电话,Handset as 手机, QQ as QQ号,E_Mail as 邮箱地址 from tb_AddressBook";  

        //Find_Field-->存放查询字段,对应于TextBox控件

[csharp] view plain copypublic static string Find_Field = "";  

       2.当窗体生成时需要调用窗体的LOAD事件,完成相应的工作,其需要调用一个showAll()方法,此方法的调用及设计如下:[csharp] view plain copypublic void ShowAll()  {      ModuleClass.MyModule.Address_ID = "";      //用dataGridView控件显式职工姓名      MyDS_Grid = MyDataClass.GetDataSet(AllSql, "tb_AddressBook");      //设置控件的数据来源,datasoursce      dataGridView1.DataSource = MyDS_Grid.Tables[0];      //设置第一列不可见      dataGridView1.Columns[0].Visible = false;          //根据查询结果实现对Button控制其是否可以使用      if (dataGridView1.RowCount > 1)      {          Address_Amend.Enabled = true;          Address_Delete.Enabled = false;          }      else      {          Address_Amend.Enabled = false;          Address_Delete.Enabled = false;          }  }  

        load事件中调用showAll()方法:

[csharp] view plain copyPRivate void F_AddressList_Load(object sender, EventArgs e)  {      ShowAll();  }  

      3.当点击查询按钮时,则需要进行查询操作,通过实现Button的Click事件来完成功能的实现:

[csharp] view plain copyprivate void button5_Click(object sender, EventArgs e)  {      //判断查询条件是否为空      if (textBox1.Text == "")      {          MessageBox.Show("请输入查询条件。");          return;      }      ModuleClass.MyModule.Address_ID = "";      //使用datagridview来显示职工的名称      MyDS_Grid = MyDataClass.GetDataSet(AllSql + " where " + Find_Field + " like '%" + textBox1.Text.Trim() + "%'", "tb_AddressBook");      dataGridView1.DataSource = MyDS_Grid.Tables[0];      dataGridView1.Columns[0].Visible = false;      //当查询结果存在      if (dataGridView1.RowCount > 1)      {          Address_Amend.Enabled = true;          Address_Delete.Enabled = true;      }      else      {          Address_Amend.Enabled = false;          Address_Delete.Enabled = false;          }  }  

       4.而ComBox控件中所设计的查询条件选择实现代码如下:

[csharp] view plain copyprivate void comboBox1_TextChanged(object sender, EventArgs e)  {      //设置查询类型条件的ComBox控件来实现按照条件来进行查询      switch (((ComboBox)sender).SelectedIndex)      {          case 0:              {                  Find_Field = "Name";                  break;              }          case 1:              {                  Find_Field = "Sex";                  break;                }          case 2:              {                  Find_Field = "E_Mail";                  break;              }      }  }  

       5.当点击全部按钮时,其Click事件相应的代码为:

[csharp] view plain copyprivate void button1_Click(object sender, EventArgs e)  {      ShowAll();  }  

       6.当我们需要向这个表中添加数据时,则需要点击“添加按钮”,这是触发的Click事件相应的代码为:

[csharp] view plain copyprivate void Address_Add_Click(object sender, EventArgs e)  {      //此时需要调用另一个窗体,这个窗体将在后面的文章中详解其实现过程。      InfoAddForm.F_Address FrmAddress = new InfoAddForm.F_Address();      FrmAddress.Text = "通讯录添加操作";      FrmAddress.Tag = 1;      FrmAddress.ShowDialog(this);      ShowAll();  }  

       7.当点击修改按钮时,则实现对已有的数据进行修改,其也是通过点击按钮,触发此按钮的Click事件来实现功能:

[csharp] view plain copyprivate void Address_Amend_Click(object sender, EventArgs e)  {      //调用F_Address窗体修改通讯录信息,同一个窗体,不同的使用方式      InfoAddForm.F_Address FrmAddress = new InfoAddForm.F_Address();      FrmAddress.Text = "通讯录修改操作";      FrmAddress.Tag = 2;      FrmAddress.ShowDialog(this);      ShowAll();  }  

     8.当点击删除按钮时,则实现了对已有数据进行删除的操作,其Click事件实现代码如下:

[csharp] view plain copyprivate void Address_Delete_Click(object sender, EventArgs e)  {      if (MessageBox.Show("确定要删除该条信息吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)      {          MyDataClass.GetA_M_D_command("Delete tb_AddressBook where ID='" + ModuleClass.MyModule.Address_ID + "'");          ShowAll();      }  }  

          点击退出时,则需要补充一句 this.Clsoe();就可以了。

       9.然而,真正显示给我们查询结果的是GridView控件,在这里实现了其cell enter事件:

[csharp] view plain copyprivate void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)  {      if (dataGridView1.RowCount > 1)      {          ModuleClass.MyModule.Address_ID = dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value.ToString();          Address_Amend.Enabled = true;          Address_Delete.Enabled = true;      }      else      {          Address_Amend.Enabled = false;          Address_Delete.Enabled = false;      }  }  

      到此,窗体的设计基本完成,下节将设计F_ClearData窗体。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表