用WinForm寫的員工考勤項目!!!!!!

先說幾句,做爲一個還在學習的程序員,掌握的知識有限;但我利用自身所學,給一些像我同樣還在學習的碼農提供個人綿薄之力!程序員

寫的很差,可是盡力了,但願大牛指點。多多吐槽!!!ide

   好了開始說項目需求: 實現新增員工;使用DataGridView控件展現員工信息;實現根據員工工號進行模糊查詢;實現刪除員工信息;天天只能簽到一次;簽退前必須已經簽到學習

看到這些需求,咱們先要思考下該作什麼,理清思路才能更快的完成項目。我一般先搭建窗體,而後根據要求逐步實現項目要求!this

這是咱們所要用的到的三個窗體blog

咱們建一個輔助類,初始化一個單列的泛型集合,給單列的泛型集合付個初值事件

 

class Worker
    {
        private string id;
        private string name;
        private int age;
        private string sex;
        public string ID
        {
            get
            {
                return id;
            }

            set
            {
                id = value;
            }
        }

        public string Name
        {
            get
            {
                return name;
            }

            set
            {
                name = value;
            }
        }

        public int Age
        {
            get
            {
                return age;
            }

            set
            {
                age = value;
            }
        }

        public string Sex
        {
            get
            {
                return sex;
            }

            set
            {
                sex = value;
            }
        }
        
        public static List<Worker> list = new List<Worker>();
        public static void Insert()
        {
            Worker w1 = new Worker();
            w1.ID = "20090101";
            w1.Name = "王小毛";
            w1.Age = 20;
            w1.Sex = "男";
            list.Add(w1);
            Worker w2 = new Worker();
            w2.ID = "20090102";
            w2.Name = "周新雨";
            w2.Age = 19;
            w2.Sex = "女";
            list.Add(w2);
        }
    }

 這是員工信息維護窗體的Load事件的代碼ip

 private void FrmSecond_Load(object sender, EventArgs e)
        {
若是list沒有數據就添加數據,確保調用這個窗體是,只有在沒有數據時才能添加數據! if (Worker.list.Count==0) { Worker.Insert(); }
清除datagridview的英文列,而且綁定數據 dgvList.AutoGenerateColumns = false; dgvList.DataSource = Worker.list; }

 這是新增裏的代碼get

private void toolStripButton1_Click(object sender, EventArgs e)
        {
調用添加員工員工信息窗體 FrmFirst ff = new FrmFirst(); this.Hide(); ff.Show(); }
private void btn1_Click(object sender, EventArgs e)
        {
確保一個工號只能添加一次 foreach (Worker item in Worker.list) { if (item.ID==txt01.Text) { MessageBox.Show("工號已存在!!!!"); return; } }
添加一個員工信息 Worker w1 = new Worker(); w1.ID = txt01.Text; w1.Name = txt03.Text; w1.Age = Convert.ToInt32(txt02.Text); w1.Sex =cob01.Text; Worker.list.Add(w1); FrmSecond fs = new FrmSecond(); this.Close(); fs.Show(); }

 

這是刪除的代碼
private void toolStripButton3_Click(object sender, EventArgs e) {
提示點擊是纔會刪除 DialogResult result = MessageBox.Show("提示","是否刪除",MessageBoxButtons.YesNo,MessageBoxIcon.Question); if(result==DialogResult.Yes) {
string id = dgvList.SelectedRows[0].Cells[0].Value.ToString(); //string id = dgvList.SelectedCells[0].Value.ToString();
若是ID和我選中的ID相等纔會刪除 foreach (Worker item in Worker.list) { if(item.ID==id) { Worker.list.Remove(item); break; } } } //dgvList.AutoGenerateColumns = false; dgvList.DataSource = new BindingList<Worker>(Worker.list); }

 

這段是重點難點在寫這段以前先建好另外一個輔助類
  class Record
    {
        public string id { get; set; }
        public string name { get; set; }
        public DateTime SignInTime { get; set; }
        public DateTime SignOutTime { get; set; }
        建立一個雙列泛型集合
        public static Dictionary<string, Record> relist = new Dictionary<string, Record>();
      
    }

public int num; private void 簽到ToolStripMenuItem_Click(object sender, EventArgs e) {
給num賦值,把你選中的type值付給num Worker w = new Worker(); foreach (Worker item in Worker.list) { if (item.Name == dgvList.SelectedCells[1].Value.ToString()) { w = item; break; } } num = w.type;
判斷若是num是0才能夠簽到 if (num == 0) { Record r = new Record(); r.id = dgvList.SelectedRows[0].Cells[0].Value.ToString(); r.name = dgvList.SelectedRows[0].Cells[1].Value.ToString(); r.SignInTime = DateTime.Now; Record.relist.Add(r.name, r);
給你選中的type賦值一個1 w.type = 1; MessageBox.Show("簽到成功"); } else { MessageBox.Show("您已經簽到過了"); } } private void 簽退ToolStripMenuItem_Click(object sender, EventArgs e) { Worker w = new Worker(); foreach (Worker item in Worker.list) { if (item.Name == dgvList.SelectedCells[1].Value.ToString()) { w = item; break; } }
把你選中的type賦值給num num = w.type;
若是num是1,才能夠簽退 if (num == 1) { foreach (string item in Record.relist.Keys) { if (item == dgvList.SelectedRows[0].Cells[1].Value.ToString()) { Record.relist[dgvList.SelectedRows[0].Cells[1].Value.ToString()].SignOutTime = DateTime.Now; w.type = 2; MessageBox.Show("簽退成功"); break; } } }
若是是0證實沒有簽到 else if (num == 0) { MessageBox.Show("沒有簽到,沒法簽退"); }
不然已經簽退過了 else { MessageBox.Show("您已經簽退過了"); } //dgvList.AutoGenerateColumns = false; //dgvList.DataSource = new BindingList<Worker>(Worker.list); }

  

把員工的簽到信息展現在DataGridView上private void FrmThisd_Load(object sender, EventArgs e)
        {
            dgvList.AutoGenerateColumns = false;
            BindingSource bs = new BindingSource();
            bs.DataSource = Record.relist.Values;
            dgvList.DataSource = bs;

            lbl1.Text = dgvList.RowCount.ToString();
        }
相關文章
相關標籤/搜索