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

人事管理系统实现(四)

2019-11-11 03:06:46
字体:
来源:转载
供稿:网友

     在本节中我们将接着上几节的内容继续添加新的功能窗体,首先,我们要添加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窗体。


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