考勤信息(员工打卡)

Posted 谢维开

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了考勤信息(员工打卡)相关的知识,希望对你有一定的参考价值。

实现员工的添加,查询和删除,并用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("女");
        }
复制代码

 

以上是关于考勤信息(员工打卡)的主要内容,如果未能解决你的问题,请参考以下文章

员工考勤打卡时,如何避免非本人代替打卡?

蓝桥杯 考勤打卡

指纹打卡机漏打,怎么样补数据进去?

考勤系统(员工打卡)

掌上考勤app|掌上考勤最新版下载

泛型集合小项目员工打卡