人事管理系统实现(三)

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

 设计了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

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

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

[csharp] view plain copy
  1. public static DataSet MyDS_Grid;  

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

[csharp] view plain copy
  1. public 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 copy
  1. public static string Find_Field = "";  

       2.当窗体生成时需要调用窗体的LOAD事件,完成相应的工作,其需要调用一个showAll()方法,此方法的调用及设计如下:
[csharp] view plain copy
  1. public void ShowAll()  
  2. {  
  3.     ModuleClass.MyModule.Address_ID = "";  
  4.     //用dataGridView控件显式职工姓名  
  5.     MyDS_Grid = MyDataClass.GetDataSet(AllSql, "tb_AddressBook");  
  6.     //设置控件的数据来源,datasoursce  
  7.     dataGridView1.DataSource = MyDS_Grid.Tables[0];  
  8.     //设置第一列不可见  
  9.     dataGridView1.Columns[0].Visible = false;  
  10.   
  11.   
  12.     //根据查询结果实现对Button控制其是否可以使用  
  13.     if (dataGridView1.RowCount > 1)  
  14.     {  
  15.         Address_Amend.Enabled = true;  
  16.         Address_Delete.Enabled = false;  
  17.   
  18.   
  19.     }  
  20.     else  
  21.     {  
  22.         Address_Amend.Enabled = false;  
  23.         Address_Delete.Enabled = false;  
  24.   
  25.   
  26.     }  
  27. }  

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

[csharp] view plain copy
  1. private void F_AddressList_Load(object sender, EventArgs e)  
  2. {  
  3.     ShowAll();  
  4. }  

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

[csharp] view plain copy
  1. private void button5_Click(object sender, EventArgs e)  
  2. {  
  3.     //判断查询条件是否为空  
  4.     if (textBox1.Text == "")  
  5.     {  
  6.         MessageBox.Show("请输入查询条件。");  
  7.         return;  
  8.     }  
  9.     ModuleClass.MyModule.Address_ID = "";  
  10.     //使用datagridview来显示职工的名称  
  11.     MyDS_Grid = MyDataClass.GetDataSet(AllSql + " where " + Find_Field + " like '%" + textBox1.Text.Trim() + "%'""tb_AddressBook");  
  12.     dataGridView1.DataSource = MyDS_Grid.Tables[0];  
  13.     dataGridView1.Columns[0].Visible = false;  
  14.     //当查询结果存在  
  15.     if (dataGridView1.RowCount > 1)  
  16.     {  
  17.         Address_Amend.Enabled = true;  
  18.         Address_Delete.Enabled = true;  
  19.     }  
  20.     else  
  21.     {  
  22.         Address_Amend.Enabled = false;  
  23.         Address_Delete.Enabled = false;  
  24.   
  25.   
  26.     }  
  27. }  

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

[csharp] view plain copy
  1. private void comboBox1_TextChanged(object sender, EventArgs e)  
  2. {  
  3.     //设置查询类型条件的ComBox控件来实现按照条件来进行查询  
  4.     switch (((ComboBox)sender).SelectedIndex)  
  5.     {  
  6.         case 0:  
  7.             {  
  8.                 Find_Field = "Name";  
  9.                 break;  
  10.             }  
  11.         case 1:  
  12.             {  
  13.                 Find_Field = "Sex";  
  14.                 break;  
  15.   
  16.             }  
  17.         case 2:  
  18.             {  
  19.                 Find_Field = "E_Mail";  
  20.                 break;  
  21.             }  
  22.     }  
  23. }  

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

[csharp] view plain copy
  1. private void button1_Click(object sender, EventArgs e)  
  2. {  
  3.     ShowAll();  
  4. }  


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

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

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

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


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

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

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

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

[csharp] view plain copy
  1. private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)  
  2. {  
  3.     if (dataGridView1.RowCount > 1)  
  4.     {  
  5.         ModuleClass.MyModule.Address_ID = dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value.ToString();  
  6.         Address_Amend.Enabled = true;  
  7.         Address_Delete.Enabled = true;  
  8.     }  
  9.     else  
  10.     {  
  11.         Address_Amend.Enabled = false;  
  12.         Address_Delete.Enabled = false;  
  13.     }  
  14. }  

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值