1. 程式人生 > >考勤信息(員工打卡)

考勤信息(員工打卡)

time blog 重新 att 一個 gif 加載 ++ binding

實現員工的添加,查詢和刪除,並用dgvList顯示出來

技術分享
1.1///先聲明一個單列集合

  public List<SE> list = new List<SE>();

1.2///初始化三個對象

  private void FrmMain_Load(object sender, EventArgs e)
        {

                SE s1 = new SE();
                s1.id = 20161000;
                s1.name = "張三";
                s1.age = 20;
                s1.gender = "男";

                SE s2 = new SE();
                s2.id = 20161002;
                s2.name = "李四";
                s2.age = 18;
                s2.gender = "男";

                SE s3 = new SE();
                s3.id = 20161004;
                s3.name = "鳳姐";
                s3.age = 20;
                s3.gender = "女";

1.3//把數據添加到集合中並用dgvList加載出來

                list.Add(s1);
                list.Add(s2);
                list.Add(s3);
         
           dgvList.DataSource =(list);

}
技術分享

技術分享

技術分享
1.4   private void btn01_Click(object sender, EventArgs e)
        {

            ///創建臨時的單列集合來存儲數據
            List<SE> llist = new List<SE>();
            //遍歷集合中的對象
            foreach (SE item in list)
            {
                //判斷要查詢對象的工號的下標是否存在
                if(item.Id.IndexOf(txt01.Text.Trim())!=-1)
                {
                    llist.Add(item); //把數據加入到臨時集合中
                }
            }
            //把查詢到的數據綁定到dgvList中
            dgvList.DataSource = new BindingList<SE>(llist);

}

1.5 private void toolStripButton3_Click(object sender, EventArgs e)
        {

             ///刪除前先考慮根據什麽來刪除數據
            ///我根據員工工號來刪除  首先得到工號
            
            string id = dgvList.SelectedRows[0].Cells[0].Value.ToString();

            //使用for循環來查找
            for (int i = 0; i < list.Count; i++)
            {
                //判斷數據是否相等再刪除
                if(list[i].Id==id)
                {
                    list.RemoveAt(i);
                }
            }
            //刪除後還得再重新綁定數據
            dgvList.DataSource = new BindingList<SE>(list);

}
技術分享

技術分享

技術分享
1.6///聲明一個靜態的雙列集合

  public static Dictionary<string, Record> recordList = new Dictionary<string, Record>();

        //單擊簽到
        private void 簽到ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //判斷是否選中一行
            if(dgvList.SelectedRows.Count!=1)
            {
                MessageBox.Show("請選中一行");
                return;
            }
            //把選中的數據傳給記錄列表
            string no = dgvList.SelectedRows[0].Cells[0].Value.ToString();
            foreach (string id in recordList.Keys)
            {
                if(no==id)
                {
                    MessageBox.Show("您已簽到過");
                    return;
                        
                }
            }
            Record record = new Record();
            record.ID = no;
            record.Name= dgvList.SelectedRows[0].Cells[1].Value.ToString();
            record.StratTime = DateTime.Now;
            recordList.Add(record.ID,record);
            MessageBox.Show("簽到成功");
        }
技術分享

技術分享

技術分享
1.7///單擊簽退

       private void 簽退ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //判斷是否選中一行
            if (dgvList.SelectedRows.Count != 1)
            {
                MessageBox.Show("請選中一行");
                return;
            }
            //把選中的數據傳給記錄列表
            string no = dgvList.SelectedRows[0].Cells[0].Value.ToString();
            bool falg = false;
            //判斷是否有簽到記錄
            foreach (string key in recordList.Keys)
            {
                if(key==no)
                {
                    ///執行簽到
                    
                    recordList[key].EndTime = DateTime.Now;
                    MessageBox.Show("簽退成功");
                    falg = true;
                    break;
                }
            }
            if(falg==false)
            {
                MessageBox.Show("您還沒有簽到");
            }
        }
技術分享

技術分享

技術分享
1.8///聲明一個Record類

public  class Record
    {
        public string Name { get; set; }

        public DateTime StratTime { get; set; }

        public DateTime EndTime { get; set; }

        public String ID { get; set; }
    }

1.9///調用簽到記錄窗口

      private void toolStripButton4_Click(object sender, EventArgs e)
        {
            FrmRecord record = new FrmRecord();
            record.Show();
        }

2.0///調用增加員工的窗口

       private void toolStripButton1_Click(object sender, EventArgs e)
        {
            FrmAdd add = new FrmAdd();
            Hide();
            add.Show();
        }

 

2.1///添加員工

private void btn01_Click(object sender, EventArgs e)
        {
            ///通過保存把數據加到集合中
            //首先創建一個對象並賦值
            SE se = new SE();
            se.Id = txt01.Text;
            se.Name = txt03.Text;
            se.Age = txt02.Text;
            se.Gender = cbo01.Text;
            foreach (SE item in FrmMain.list)
            {
                if (item.Id == txt01.Text)
                {
                    MessageBox.Show("此工號已存在");
                    return;
                }
            }

            //把數據加到list集合中,因為集合是在主窗體中聲明的需要調用
            FrmMain main = new FrmMain();
            FrmMain.list.Add(se);
            main.Show();

        }
技術分享

2.2

技術分享

技術分享
private void FrmAdd_Load(object sender, EventArgs e)
        {
            //把男和女添加到下拉列表框中
            cbo01.Items.Add("男");
            //把男默認選中
            cbo01.SelectedIndex=0;
            cbo01.Items.Add("女");
        }
技術分享

考勤信息(員工打卡)