当前位置: 首页 > news >正文

员工考勤系统

员工考勤系统

 

 

员工考勤系统中的主要思想是,窗体间的传递以及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; set; }

        public DateTime outtime { get; set; }

        public string id { get; set; }

        public string name { get; set; }

    }

创建 Record 储存打卡记录

public void Initial()

        {     

            SE student1=new SE();

            student1.Name="王小毛";

            student1.Sex="";

            student1.Id="001";

            student1.Age=19;

            SE student12=new SE();

            student12.Name="周新宇";

            student12.Sex="";

            student12.Id="002";

            student12.Age=19;

            SE student123 = new SE();

            student123.Name = "李四";

            student123.Sex = "";

            student123.Id = "003";

            student123.Age = 29;

            engineers.Add(student1);

            engineers.Add(student12);

            engineers.Add(student123);

            this.dataGridView1.DataSource = new BindingList<SE>(engineers);

        }

初始对象!

private void toolStripButton3_Click(object sender, EventArgs e)

        {

            string id = this.dataGridView1.SelectedRows[0].Cells[0] .Value.ToString();

                if (this.dataGridView1.SelectedRows.Count > 0)

                {

                    foreach (SE item in engineers)

                    {

                        if (item.Id == id)

                        {

                            this.engineers.Remove(item);

                            bindgrind(engineers);

                            return;

                        }

                    }

                }

                else

                {

                    MessageBox.Show("请选中一行!", "提示");

                }          

        }

这是实现删除功能最主要是搞清对象的字段值和当前datagridview中的选中的行的某一列值做对比

实现判断以便删除

private void 签到ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            if (this.dataGridView1.SelectedRows.Count !=1)

            {

                MessageBox.Show("请选中一行!", "提示");

                return;

            }

                string ids = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();

                if (recordlist.Keys.Count==0)

                {

                    Record rd = new Record();

                    rd.id = ids;

                    //MessageBox.Show(rd.id);

                    rd.name = this.dataGridView1.SelectedRows[0].Cells[1].Value.ToString();

                   // MessageBox.Show(rd.name);

                    rd.intime = DateTime.Now;

                    //MessageBox.Show(rd.intime.ToString());

                    recordlist.Add(rd.id, rd);

                    MessageBox.Show("签到成功!");

                }

                else

                {

                    foreach (string item in recordlist.Keys)

                    {

                        if (item == ids)

                        {

                            MessageBox.Show("你已经签过到!");

                            return;

                        }

                        else

                        {

                            Record rd = new Record();

                            rd.id = ids;

                            rd.name = this.dataGridView1.SelectedRows[0].Cells[1].Value.ToString();

                            rd.intime = DateTime.Now;

                            recordlist.Add(rd.id, rd);

                            MessageBox.Show("签到成功!");

                            return;

                        }

                    }

                }   

        }

签到功能这里最主要是判断签到过后再次签到时的判断这里注意一点如果你用的dictionary的话用foreach循环遍历的话如果是dictionary是空的话就不会循环遍历

转载于:https://www.cnblogs.com/meixinyuan/p/4641634.html

相关文章:

  • C# 打印本地PDF文件
  • javascript的位操作、整数、二进制
  • .net 按比例显示图片的缩略图
  • 线上解决问题分析
  • JavaScript定时机制setTimeout与setInterval研究
  • UVA 11174 Stand in a Line 树dp+算
  • HttpSessionListener的用法
  • JasperReports报表组15
  • BZOJ 1264: [AHOI2006]基因匹配Match( LCS )
  • 用Linux命令对两个文件进行连接操作
  • 一、小按钮和下面板---调试面板
  • memcached全面剖析–5. memcached的应用和兼容程序
  • 常见浏览器的兼容问题
  • 如何解决“不能打开数据库,用户NT AUTHORITY\NETWORK SERVICE登录失败”的错误呢?...
  • 基于vitamio的网络电视直播源码
  • 【comparator, comparable】小总结
  • Flannel解读
  • GitUp, 你不可错过的秀外慧中的git工具
  • java 多线程基础, 我觉得还是有必要看看的
  • Vue.js-Day01
  • vue2.0项目引入element-ui
  • 程序员该如何有效的找工作?
  • 基于webpack 的 vue 多页架构
  • 今年的LC3大会没了?
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 深入浏览器事件循环的本质
  • 协程
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • # include “ “ 和 # include < >两者的区别
  • # Java NIO(一)FileChannel
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (LeetCode) T14. Longest Common Prefix
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (九)信息融合方式简介
  • (四)Android布局类型(线性布局LinearLayout)
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • **PHP二维数组遍历时同时赋值
  • .Net 6.0 处理跨域的方式
  • .Net Memory Profiler的使用举例
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .net和jar包windows服务部署
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [BJDCTF 2020]easy_md5
  • [CISCN2019 华东南赛区]Web11
  • [codevs 1288] 埃及分数 [IDdfs 迭代加深搜索 ]
  • [JavaScript]_[初级]_[关于forin或for...in循环语句的用法]
  • [JAVA设计模式]第二部分:创建模式