考勤系统(员工打卡)

实现员工的添加,查询和删除,并用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("女");
        }
时间: 2024-11-05 21:40:07

考勤系统(员工打卡)的相关文章

人脸识别考勤系统解决方案

人脸识别考勤系统是由人脸识别考勤机.考勤管理软件组成.人脸识别考勤机彻底杜绝了代打卡考勤的发生,解决了传统打卡考勤系统"只认卡.不认人"的弊端,消除了指纹考勤接触使用的尴尬情况,非接触,直观,友好. 严格规范的员工考勤管理是现代企事业单位提高管理效益的重要保证, 而传统的以打卡.刷卡为代表的考勤产品,存在着替代打卡,效率低下,不易统计,管理和使用维护成本高等弊端. 指纹识别产品在考勤中的大规模应用,部分解决了代打卡的问题,但是超过5%左右的人群天生指纹很浅,无法用指纹识别.并且非典.流

期末测试javaweb 考勤系统前端

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title>

员工考勤系统

员工考勤系统中的主要思想是,窗体间的传递以及datagridview之间的数据绑定刷新 public class SE { public string Id { get; set; } public string Name { get; set; } public int Age { get; set; } public string Sex { get; set; } } 创建se类储存对象 public class Record { public DateTime intime { get;

员工打卡系统

语言:C# 1. 分析: 图1(主页面) 根据图1可得信息 1.Windows Forms 窗体 ,控件DataGrid View (显示控件) ,菜单控件 ,Label ,button,Textbox. 2.要实现菜单控件的新增,修改,删除及打卡记录; 窗体的查看功能 图2(新增, 修改窗体) (1)新增时                                                                  (2)修改时                      

企业办公3D指纹考勤系统解决方案(一)

员工准时.正常出勤是企业考勤制度的基本要求,然而目前签名式.卡钟式.IC卡考勤系统均存在代打卡.人情卡.不易统计等漏洞,而市面上的光学指纹考勤机存在识别能力差.识别速度慢.使用寿命短.不能完全杜绝指纹套等弊端,给企业管理增加了难度及成本,进而影响员工的工作效率及企业的经济效益. 如果您还在为如何真实.公平.公正的进行考勤而烦恼,您可以选择华本国际3D活体指纹考勤一体机,让考勤更可靠.便捷.智能. 华本国际企业办公3D指纹考勤系统特点 1. 采用3D活体指纹技术,杜绝一切假.套指模,防止员工之间代

河南人脸识别工地实名制考勤系统解决方案

建筑行业是一个对安全性要求很高的行业,如何做好施工现场管理,控制事故发生率,一直是施工企业.政府管理部门关注的焦点,而对工地工作人员的管理也就显得尤为重要. 目前建筑工地监管主要存在以下方面问题: 1.信息化监管缺失:因为施工工地环境复杂,工地分散,无信息化远程监管手段,人工巡检难度大,管理效率低,无法及时对施工现场情况及时反馈,造成管理的之后效应,对突发事件缺乏有效的控制和支撑: 2.人员管理难度大:工人招聘无法有效遏制黑名单甚至非法人员混入工地,违规操作多发,往往导致惨痛的事故: 3.缺乏统

泛型集合小项目员工打卡

项目样式 需求说明:1.实现新增员工 2.使用DataGrideView空间展示员工信息 3.实现删除员工信息 4.给主窗体添加右键菜单,实现上班签到和下班签退 5.选择签到,必须检索员工打卡记录,如果已签到,提示不能再签到 6.选择签退,必须检索员工打卡记录,如果已签退,提示不能再签退 7.使用DataGrideView控件显示员工考勤记录 项目开始: 首先搭好窗体,创建员工类 SE 打卡时间类 public class SE { public int id{ get; set; } //存储

自动考勤系统的组成

目前很多高校实现了"移动校园"的快捷办公与高效管理,教育信息化成为一种趋势,签到荚为校园移动考勤助力.那么自动考勤系统的组成有哪些呢?真正的自动化考勤平台,能实时获取各类考勤打卡采集,完美各类请假缺勤结果,对接薪酬系统,实现从考勤获取.劳动力分析到薪酬核算的一体化操作,真正的提高考勤管理效率.自动考勤系统的组成有哪些呢? 签到荚是一个移动.基于室内定位和人脸识别技术的校园考勤系统.其室内定位精准度能区分不同房间,人脸识别服务能杜绝代签到.既能与数字化校园平台无缝对接 ( 已做好标准接口

基于SSH框架的在线考勤系统开发的质量属性

我要开发的是一个基于SSH框架的在线考勤系统,在系统中常见的质量属性有:可用性.可修改性.性能.安全性.易用性. 可用性方面: 可用性是指系统正常运行时间的比例,是通过两次故障之间的时间长度或在系统崩溃情况下能够恢复正常运行的速度来衡量的.实现可用性的战术分为三类:错误检测(用来检测故障的健康监视).错误恢复(检测到故障时的恢复).错误预防(阻止错误演变为故障).用于检测错误的3个战术是: 信号/响应.心跳.异常.用于错误恢复的战术有7种:表决.主动冗余.被动冗余.备件.shadow操作.状态再

员工打卡....

员工打卡 namespace 员工信息维护{public partial class FrmMain : Form{public FrmMain(){InitializeComponent();} //列表,用于保存 SE 对象public List<SE> programmerList = new List<SE>();//刷新DataGrindView数据public void BindGrid(List<SE> list){this.dataGridView1.D