人事管理系统实现(四)

     在本节中我们将接着上几节的内容继续添加新的功能窗体,首先,我们要添加F_ClearData窗体,其次设计F_Stat窗体。F_ClearData窗体能够实现针对不同等级的用户实现不同的功能的限制,通过简单的点选按钮完成由权限限定的功能的设置,窗体的界面设计如下:

                                                                                  

    通过checkBox和Button按钮的组合实现功能需求,当点击全选,则会实现全部的CheckBox处于选中的状态,当点击清空时,则会清除所选定的CheckBox的选中状态,因功能需求比较简单,主要用到CheckBox 、GroupBox控件和Button控件。

    界面设计完成后,窗体的功能的实现,以及代码的实现:

    1.首先定义一个MyModule类的对象,并实例化:   

   ModuleClass.MyModule MyMC = new ModuleClass.MyModule();
    2.当点击清空按钮时,实现的功能是所有CheckBox都成为未选中状态。实现的功能响应的事件处理代码如下:

        private void but_clear_Click(object sender, EventArgs e)
        {
            MyMC.Clear_Table(groupBox1.Controls, "Table_");
        }
      其中,Clear_Table()方法实在MyModule类中实现的,具体的实现方法将在MyModule类的设计中详细介绍。

     3.实现全选的功能,这个功能需要实现此控件的MouseDown事件,不在实现其Click事件,当我们点选时,触发的是MouseDown事件,而不是在这个控件上点击所引发的Click事件,事件响应代码如下:

        private void ALL_Table_MouseDown(object sender, MouseEventArgs e)
        {
            //设置一个状态变量
            bool tt = false;
            if (((CheckBox)sender).Checked == true)
                tt = false;
            else
                tt = true;
            //遍历groupBox1中所有控件,并修改对应状态
            foreach (Control C in groupBox1.Controls)
            {
                string sID = C.Name;
                if (sID.IndexOf("Table_") > -1)
                {
                    ((CheckBox)C).Checked = tt;
                }
            }
        }
       4.在设计时,所有人员应该属于其中的一个部门,当不进行部门类别的设置时,其他的类别是不能够进行设置的,故在这里设计“部门类别”CheckBox控件的选中状态来确定        是否其他的控件选项是个否可选,相当于一个开关功能,所以实现了这个控件的MouseUp事件,当鼠标的左键点松开后就可以进行选择了(CheckBox的Checked属性默认        为可选),事件的响应代码如下:

        private void Table_Branch_MouseUp(object sender, MouseEventArgs e)
        {
            if (((CheckBox)sender).Checked == false)
            {
                ALL_Table.Checked = false;
            }
        }
       当点击退出时,其响应的Click事件相应程序中添加:this.Close();关闭窗口就可以了。



       接下来设计F_Stat窗体,这个窗体是进行简单的人事资料统计统计使用的,通过拖拽控件进行界面设计,界面的设计如下:

                                                    

    设计较为简单,使用了两个GroupBox控件和一个listbox控件以及一个GridView控件来实现人事统计的功能。功能大体是通过左边的listBox控件点选条件,右边的GridView控件中,按照条件显示对应的结果。

    在窗体进行加载时,需要完成一部分工作,窗体的Load事件如下:

        private void F_Stat_Load(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            for (int i = 0; i < A_Value.Length; i++)
                listBox1.Items.Add("按" + A_Value[i] + "统计");
            Stat_Class(0);

        }
    这个加载事件可以将储存在A_Value字段中的条件填充到ListBox里面,主要是Items.Clear()方法和Items.Add()方法的使用。同时,方法中调用了一个Stat_Class()方法,这个方法的设计如下:

        public void Stat_Class(int n)
        {
            MyDS_Grid = MyDataClass.GetDataSet("select " + A_Field[n] + " as '" + A_Value[n] + "', count(" + A_Field[n] + ")  as '人数' from tb_stuffbusic group by " + A_Field[n], "tb_Stuffbusic");
            dataGridView1.DataSource = MyDS_Grid.Tables[0];
            dataGridView1.Columns[0].Width = 120;
            dataGridView1.Columns[1].Width = 55;
        }
    这个方法主要是结合相应的查询条件,剩余的是对GridView中列的宽度的属性设置,转换为对应的查询语句通过GetDataSet方法返回一个DataSet类型的返回值,GetDataSet方法实在MyMeans类中实现的,此方法的实现将会在后续进行补充。

     1.首先,定义字段以及对象的实例化:

        DataClass.MyMeans MyDataClass = new DataClass.MyMeans();

        public static string Term_Field = "Folk,Age,Kultur,Marriage,Sex,Visage,WorkLength,Employee,Business,Laborage,Branch,Duthcall,School,Speciality,Pact_Y,BeAware,City";
        public static string Term_Value = "民族类别,年龄,文化程度,婚姻,性别,政治面貌,工龄,职工类别,职务类别,工资类别,部门类别,职称类别,毕业学校,主修专业,合同年限,籍贯所在省,籍贯所在市";
        public static string[] A_Field = Term_Field.Split(Convert.ToChar(','));
        public static string[] A_Value = Term_Value.Split(Convert.ToChar(','));
        public static DataSet MyDS_Grid;
       2.上述定义中存在一个转换过程,将静态变量Term_Field里面的字符按照“,”进行分割,用到了适用于字符串处理的split函数,和一个字符串转换函数,Convert.ToChar(),按照同样的方式,将Term_Value也进行了同样的处理,这样做可以较为方便进行更改,再添加内容时,不必改动程序中的其他部分。为了实现上述功能,完成点击事件的相应,所以应设计其Click事件响应程序,利用listBox中selectedindex的值作为Stat_Class方法的参数值,代码如下:

        private void listBox1_Click_1(object sender, EventArgs e)
        {
            Stat_Class(listBox1.SelectedIndex);
        }
    }


两个窗体的基本设计已经完成,下一步我们将设计F_Find窗体。




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值