考勤信息(员工打卡)

实现员工的添加,查询和删除,并用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-08-25 08:36:19

考勤信息(员工打卡)的相关文章

泛型集合小项目员工打卡

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

员工打卡....

员工打卡 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

员工打卡系统

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

Android_ 重写系统Crash处理类,保存Crash信息到SD卡 和 完美退出程序的方法

转载时注明地址:http://blog.csdn.net/xiaanming/article/details/9344703 我们开发Android应用的时候,当出现Crash的时候,系统弹出一个警告框,如下图一,有些手机会黑屏几秒钟然后还伴随着振动,作为我们开发人员,是很讨厌这样子的Crash,因为这意味着我们又要改bug,每个程序员都希望自己开发出来的东西bug少点,稳定点,但是没有bug的程序几乎是不可能的,作为用户,如果出现这样子的警告框,他的心情也会很不爽,也许还会破口大骂,如果用图二

考勤系统(员工打卡)

实现员工的添加,查询和删除,并用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 = &qu

考勤-几种刷卡数据导入方式

一.程序支持-.txt格式(推荐)通过程序提供的“考勤/刷卡数据/打卡数据导入向导”手工导入数据. 该方式的特点是简单不需要太大实施成本,实施员在上线初期为客户配置好相关项,人事每周只需要将刷卡数据按格式导入即可.缺点是只能导入.txt格式的数据,对于考勤机导出的数据是.exe格式,需要人工转换. 二.EDI导入 刷卡数据导入主要是将员工的刷卡数据按照某种方式导入到HTArf表,最终参加考勤运算.而在原???刷卡数据HTArf表主要的字段有TimeCardID(考勤卡号)和DocDate(日期)

使用C# WinForm制作 员工打卡项目 -- S2 2.3

新建一个员工类,存储员工的信息 新建一个List<>集合,并在load事件中实例化三个员工对象 DataGridView绑定数据源,可以显示出数据 点击查询按钮,查询工号等同于输入的数的员工信息. 右键签到和签退,增加记录 需要使用一个Dictionary<>双列泛型集合存储打卡记录 判断员工是否已经签到过,不能重复签到,没有签到不能签退 新增员工 代码比较简单 不做详解 最后 用一个新窗体展示打卡记录 就是Dictionary<>集合中的内容 签到过就像Diction

员工打卡课后小项目

public class Fm { //员工类 public string Id { get; set; } public string Name { get; set; } public int Age { get; set; } public string Gender { get; set; } } public class SI { //打卡类 public string Name { get; set; } public DateTime Begin { get; set; } pub

信息竞赛程序卡时_C++

一.卡时简介 卡时是一个竞赛时常用的技巧 有些题目我们想不到完美算法就只能用暴力解决,但是此类方法一般时间复杂度较高,此时我们需要进行卡时 通俗来讲就是进行一个时间限制,让程序在达到这个时间后立马退出,输出当前最优方案,或许能碰中正确答案 这样我们的程序在测试时就不会超时,导致没有得分 二.具体实现 我们以a+b为例 首先在程序开头就保存好开始运行的时间,记住一定要 写在最前面 在中间加上条件限制 clock()-ti<sec   目前时间减去开始时间小于限制时间sec clock() 返回的是