国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

人事管理系統(tǒng)實(shí)現(xiàn)(五)

2019-11-10 22:37:26
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

    本節(jié)將設(shè)計(jì)F_Find窗體,這個(gè)窗體將實(shí)現(xiàn)職工的信息,按照多種條件進(jìn)行查詢(xún),例如職工的年齡、性別等等條件,查詢(xún)單個(gè)人的信息,或者是符合條件的群體的信息等,實(shí)現(xiàn)過(guò)程較為簡(jiǎn)單,大概為SQL和C#語(yǔ)言的混合使用,同時(shí),還需要了解基于C#的windows編程的基礎(chǔ),如如何設(shè)計(jì)界面等,添加事件等。本節(jié)設(shè)計(jì)的窗體比較簡(jiǎn)便,窗體如下:

                             

      窗體主要用到GridView,GroupBox,ComBox,以及CheckBox、radioButton、Button等控件,ComBox主要是提供可選的內(nèi)容,通過(guò)其下拉列表來(lái)進(jìn)行體現(xiàn),利用GridView控件來(lái)顯示查詢(xún)結(jié)果。

     按照界面設(shè)計(jì)好后,開(kāi)始實(shí)現(xiàn)窗體的功能,添加功能代碼:

    1.首先,在C#中,有這么一句話“萬(wàn)物皆對(duì)象”,所以首先聲明這個(gè)窗體所使用的對(duì)象,并進(jìn)行實(shí)例化:

        ModuleClass.MyModule MyMC = new ModuleClass.MyModule();        DataClass.MyMeans MyDataClass = new DataClass.MyMeans();        public static DataSet MyDS_Grid;        //邏輯操作符標(biāo)志 AND 和 OR ,初始化為 AND        public string ARsign = " AND ";        //設(shè)置查詢(xún)條件        public static string Sut_SQL = "select ID as 編號(hào),StuffName as 職工姓名,Folk as 民族類(lèi)別,Birthday as 出生日期,Age as 年齡,Kultur as 文化程度,Marriage as 婚姻,Sex as 性別,Visage as 政治面貌,IDCard as 身份證號(hào),Workdate as 單位工作時(shí)間,WorkLength as 工齡,Employee as 職工類(lèi)別,Business as 職務(wù)類(lèi)別,Laborage as 工資類(lèi)別,Branch as 部門(mén)類(lèi)別,Duthcall as 職稱(chēng)類(lèi)別,Phone as 電話,Handset as 手機(jī),School as 畢業(yè)學(xué)校,Speciality as 主修專(zhuān)業(yè),GraduateDate as 畢業(yè)時(shí)間,M_Pay as 月工資,Bank as 銀行帳號(hào),Pact_B as 合同開(kāi)始時(shí)間,Pact_E as 合同結(jié)束時(shí)間,Pact_Y as 合同年限,BeAware as 籍貫所在省,City as 籍貫所在市 from tb_Stuffbusic";  2.同樣的當(dāng)生成這個(gè)窗體,未進(jìn)行操作之前窗體還需要完成一些操作,例如這個(gè)窗體的加載事件,需要將所需要表進(jìn)行加載:

        PRivate void F_Find_Load(object sender, EventArgs e)        {            MyMC.CoPassData(Find_Folk, "tb_Folk");            MyMC.CoPassData(Find_Kultur, "tb_Kultur");            MyMC.CoPassData(Find_Visage, "tb_Visage");  //向"正治面貌”列表框中添加信息            MyMC.CoPassData(Find_Employee, "tb_EmployeeGenre");  //向"職工類(lèi)別”列表框中添加信息            MyMC.CoPassData(Find_Business, "tb_Business");  //向"職務(wù)類(lèi)別”列表框中添加信息            MyMC.CoPassData(Find_Laborage, "tb_Laborage");  //向"工資類(lèi)別”列表框中添加信息            MyMC.CoPassData(Find_Branch, "tb_Branch");  //向"部門(mén)類(lèi)別”列表框中添加信息            MyMC.CoPassData(Find_Duthcall, "tb_Duthcall");  //向"職稱(chēng)類(lèi)別”列表框中添加信息            //向下拉列表中添加省名            MyMC.CityInfo(Find_BeAware, "select distinct beaware from tb_City", 0);            //向下拉列表中添加市名            MyMC.CityInfo(Find_School, "select distinct School from tb_Stuffbusic", 0);            //向下拉列表中添加主修專(zhuān)業(yè)            MyMC.CityInfo(Find_Speciality, "select distinct Speciality from tb_Stuffbusic", 0);            MyMC.MaskTextBox_Format(Find1_WorkDate);  //指定MaskedTextBox控件的格式            MyMC.MaskTextBox_Format(Find2_WorkDate);                        //得到查詢(xún)的結(jié)果存放在MyDS_Grid中(從tb_Stuffbusic表中獲得)            MyDS_Grid = MyDataClass.GetDataSet (Sut_SQL, "tb_Stuffbusic");            dataGridView1.DataSource = MyDS_Grid.Tables[0];            dataGridView1.AutoGenerateColumns = true;                    }     其中CoPassData、CityInfo、MaskTextBox_Format方法都在MyModule類(lèi)中進(jìn)行了實(shí)現(xiàn),功能描述如注釋所示,詳細(xì)的實(shí)現(xiàn)過(guò)程參照后續(xù)補(bǔ)充的MyModule類(lèi)。

      當(dāng)我們點(diǎn)選時(shí),如果修改了籍貫,則相應(yīng)的城市也應(yīng)該需要改變,所以我們通過(guò)籍貫的TextChanged事件來(lái)實(shí)現(xiàn)這一過(guò)程,設(shè)計(jì)如下:

        private void Find_BeAware_TextChanged(object sender, EventArgs e)        {            Find_City.Items.Clear();            MyMC.CityInfo(Find_City, "select beaware,city from tb_City where beaware='" + Find_BeAware.Text.Trim() + "'", 1);        }    3.當(dāng)我們選擇通過(guò)與運(yùn)算或者是或運(yùn)算時(shí),若設(shè)計(jì)一個(gè)radioButton按鈕則邏輯較為復(fù)雜,通過(guò)將連個(gè)按鈕放到同一個(gè)GroupBox按鈕之中實(shí)現(xiàn)切換,同時(shí)也能降低操作難度,所以,通過(guò)CheckChanged事件就可以較好的解決這個(gè)問(wèn)題:

        private void radioButton1_CheckedChanged(object sender, EventArgs e)        {            ARsign = " AND ";        }        private void radioButton2_CheckedChanged(object sender, EventArgs e)        {            ARsign = " OR ";        }       通過(guò),這個(gè)設(shè)置能夠?qū)崿F(xiàn)對(duì)SQL查詢(xún)語(yǔ)句改動(dòng),從而實(shí)現(xiàn)了對(duì)查詢(xún)邏輯的改變。注: and 和 or 前后都有空格,遵守SQL的語(yǔ)言規(guī)則。

        4.接下來(lái)是對(duì)世間的處理,比如工作世間一欄,需要將日期機(jī)型一下處理:

         首先對(duì)于第一個(gè)輸入的控制,時(shí)期只能輸入數(shù)字型字符串,通過(guò)Estimate_Key方法實(shí)現(xiàn)對(duì)鍵盤(pán)輸入的控制,控件的KeyPress事件的響應(yīng)程序如下:

        private void Find1_WorkDate_KeyPress(object sender, KeyPressEventArgs e)        {            MyMC.Estimate_Key(e, "", 0);        }     當(dāng)輸入框不再處于活動(dòng)時(shí),進(jìn)行輸入的檢查,檢查其是否符合指定的格式,通過(guò)Estimate_Date方法進(jìn)行判斷;故,設(shè)計(jì)其Leave事件,當(dāng)不再為活動(dòng)時(shí),觸發(fā)此事件:

        private void Find1_WorkDate_Leave(object sender, EventArgs e)        {            MyMC.Estimate_Date((MaskedTextBox)sender);        }       以上提到的兩個(gè)方法同樣在MyModule類(lèi)中進(jìn)行了詳細(xì)的實(shí)現(xiàn),實(shí)現(xiàn)過(guò)程參照MyModule類(lèi),對(duì)于右邊的工作時(shí)間的填寫(xiě)也需要進(jìn)行類(lèi)似于以上的判斷,首先,控制輸入的內(nèi)容為數(shù)字型字符:

        private void Find2_WorkDate_KeyPress(object sender, KeyPressEventArgs e)        {            MyMC.Estimate_Key(e, "", 0);        }      同時(shí)以需要對(duì)輸入的內(nèi)容進(jìn)行判斷:

        private void Find2_WorkDate_Leave(object sender, EventArgs e)        {            bool TDate = MyMC.Estimate_Date((MaskedTextBox)sender);            if(TDate==true)                if(TDate==true)                    if (MyMC.Date_Format(Find1_WorkDate.Text) != "" && MyMC.Date_Format(Find2_WorkDate.Text) != "")                    {                        if(Convert.ToDateTime(Find2_WorkDate.Text)<=Convert.ToDateTime(Find1_WorkDate.Text))                            MessageBox.Show("當(dāng)前日期必須大于它前一個(gè)日期。");                    }        }   對(duì)于只能輸入數(shù)字型字符的還有,年齡,月工資,工齡,合同年限也需要在輸入時(shí)使用Estimate_Key方法進(jìn)行限定。

        private void Find_Age_KeyPress(object sender, KeyPressEventArgs e)        {            MyMC.Estimate_Key(e, "", 0);        }        private void Find_M_Pay_KeyPress(object sender, KeyPressEventArgs e)        {            MyMC.Estimate_Key(e, ((TextBox)sender).Text, 1);        }        private void Find_WorkLength_KeyPress(object sender, KeyPressEventArgs e)        {            MyMC.Estimate_Key(e, "", 0);        }        private void Find_Pact_Y_KeyPress(object sender, KeyPressEventArgs e)        {            MyMC.Estimate_Key(e, "", 0);        }    5.當(dāng)勾選全部時(shí),GridView中需要顯示全部的內(nèi)容,其Click時(shí)間如下:

        private void checkBox1_Click(object sender, EventArgs e)        {            MyDS_Grid = MyDataClass.GetDataSet(Sut_SQL, "tb_Stuffbusic");            dataGridView1.DataSource = MyDS_Grid.Tables[0];            dataGridView1.AutoGenerateColumns = true;        }    6.當(dāng)點(diǎn)擊查詢(xún)時(shí),我們的查詢(xún)開(kāi)始進(jìn)行,其實(shí)現(xiàn)過(guò)程如下:

        private void button1_Click(object sender, EventArgs e)        {            ModuleClass.MyModule.FindValue = "";            string Find_SQL = Sut_SQL;            MyMC.Find_Grids(groupBox1.Controls, "Find",ARsign);            MyMC.Find_Grids(groupBox2.Controls, "Find", ARsign);            //當(dāng)合同的起始日期和技術(shù)日期不為空            if (MyMC.Date_Format(Find1_WorkDate.Text) != "" && MyMC.Date_Format(Find2_WorkDate.Text) != "")            {                if (ModuleClass.MyModule.FindValue != "")                    //用ARsign變量連接查詢(xún)                    ModuleClass.MyModule.FindValue = ModuleClass.MyModule.FindValue + " (" + "workdate>='" + Find1_WorkDate.Text + "' AND workdate<='" + Find2_WorkDate.Text + "')";            }            if (ModuleClass.MyModule.FindValue != "")   //如果FindValue字段不為空                //將查詢(xún)條件添加到SQL語(yǔ)句的尾部                Find_SQL = Find_SQL + " where " + ModuleClass.MyModule.FindValue;            //按照指定的條件進(jìn)行查詢(xún)            MyDS_Grid = MyDataClass.GetDataSet (Find_SQL, "tb_Stuffbusic");            //在dataGridView1控件是顯示查詢(xún)的結(jié)果            dataGridView1.DataSource = MyDS_Grid.Tables[0];            dataGridView1.AutoGenerateColumns = true;            checkBox1.Checked = false;        }      當(dāng)點(diǎn)擊清除時(shí),需要清除控件的所有內(nèi)容,其Click事件實(shí)現(xiàn)如下:

        private void button2_Click(object sender, EventArgs e)        {            Clear_Box(7, groupBox1.Controls, "Find");            Clear_Box(12, groupBox2.Controls, "Find");            Clear_Box(4, groupBox2.Controls, "Sign");        }    其中,Clear_Box方法設(shè)計(jì)如下:

        private void Clear_Box(int n, Control.ControlCollection GBox, string TName)        {            for (int i = 0; i < n; i++)            {                foreach (Control C in GBox)                {                    if(C.GetType().Name== "TextBox" | C.GetType().Name == "MaskedTextBox" | C.GetType().Name == "ComboBox")                        if (C.Name.IndexOf(TName) > -1)                        {                            C.Text = "";                        }                }            }        }

     F_Find窗體基本設(shè)計(jì)完成,接下來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù)還原窗體,F(xiàn)_HaveBack窗體,和F_User窗體。

    

    


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 和静县| 常宁市| 张家界市| 大理市| 包头市| 苏州市| 澎湖县| 龙州县| 柏乡县| 濮阳市| 民和| 延边| 瓦房店市| 汉寿县| 鹿泉市| 高安市| 青州市| 馆陶县| 乌拉特前旗| 凤山市| 石台县| 奉贤区| 安平县| 河北省| 荔波县| 拜泉县| 册亨县| 朝阳区| 恩平市| 芒康县| 元阳县| 托克逊县| 获嘉县| 砚山县| 万山特区| 界首市| 米脂县| 东方市| 宽城| 高雄市| 开化县|