码迷,mamicode.com
首页 > 其他好文 > 详细

考勤系统(员工打卡)

时间:2017-04-05 16:54:54      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:bre   items   ict   ati   code   key   1.4   img   显示   

 

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

考勤系统(员工打卡)

标签:bre   items   ict   ati   code   key   1.4   img   显示   

原文地址:http://www.cnblogs.com/kai123-qwe/p/6669473.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!