员工考勤信息管理小程序

虽然这是个小程序,但是呢还是用到了许多的知识点的.主要是""使用集合组织相关数据."",这个知识点非常重要.

在以后搞大型的项目,绝对离不开"集合组织数据".例如:ArrayList动态存储数据,HashTable的数据结构(哈希表).

泛型集合:List<T>和Dictionary<K,V>

泛型类.

下面呢就是一个"员工信息管理"小程序.用来强化知识点.

首先,创几个类:

SE类

  public  class SE
    {
        public string ID { get; set; }
        public int Age { get; set; }
        public Sex Gender { get; set; }
        public string Name { get; set; }
    }

Gen类(枚举)

  public  class Gen
    {
     //   public static 实现考勤信息管理.Gender 男 { get; set; }
    }

  public enum Sex
  {

      男, 女
  }

Record类

{
  public  class Record
    {
      //签到时间
      public DateTime SingInTime { get; set; }
      //签退时间
      public DateTime SingOutTime { get; set; }
      //工号
      public string ID { get; set; }
      //员工姓名
      public string Name { get; set; }

管理信息:

添加信息:

代码段:

 public int MaintanceType { get; set; }
        //保存父窗体的引用
        public FrmMain FrmParent { get; set; }
        //初始化

        //保存按钮的响应
        private void btnOk_Click(object sender, EventArgs e)
        {
            try
            {
                SE pr = new SE();
                pr.ID = this.txtID1.Text.Trim();//工号
                pr.Age = Int32.Parse(this.txtAge1.Text.Trim());//年龄

                if (this.cmbgender1.SelectedIndex.ToString() == "男")//性别
                {
                    pr.Gender = Sex.男;
                    //这个也可以:pr.Gender=(Sex)(Enum.Parse(typeof(Sex),"男"));
                }
                else
                {
                    pr.Gender = Sex.女;
                }
                pr.Name = this.txtName1.Text.Trim();//名字
                //添加操作
                //工号唯一性验证
                if (this.MaintanceType == 1)
                {
                    foreach (SE item in FrmParent.programmerList)
                    {
                        if (item.ID == pr.ID)
                        {
                            MessageBox.Show("此工号已存在");
                            return;

                        }
                    }
                    FrmParent.programmerList.Add(pr);
                }
                this.Close();
            }
            catch (Exception)
            {
                MessageBox.Show("出错啦");

            }
            finally
            {

                this.FrmParent.BindGrid(FrmParent.programmerList);
            }

看看主界面:

主界面的主要代码

查询信息:

  //查询信息
        private void btnLook_Click(object sender, EventArgs e)
        {
            //根据员工号进行模糊查询
            List<SE> teapList = new List<SE>();//用临时列表保存查询到的信息
            foreach (SE item in this.programmerList)
            {
                if (item.ID.IndexOf(this.txtID.Text.Trim()) != -1)//indexof()实现模糊查询
                {
                    teapList.Add(item);

                }

            }
            this.dgvlist.DataSource = new BindingList<SE>(teapList);

        }

删除信息:

   private void toolStripButton3_Click(object sender, EventArgs e)
        {
            if (this.dgvlist.SelectedRows.Count == 0)
            {
                MessageBox.Show("你还未选中要删除的信息,请选择!");
                return;

            }
            DialogResult result = MessageBox.Show("确认要删除吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
            if (DialogResult.OK != result)
            {
                return;
            }
            string sid = dgvlist.CurrentRow.Cells["ID"].Value.ToString();
            foreach (SE item in programmerList)
            {
                if (item.ID == sid)
                {
                    programmerList.Remove(item);
                    break;

                }
            }
            //刷新
            BindGrid(programmerList);
            MessageBox.Show("删除成功!");
        }

签到:

代码段:

 //签到菜单项,
        private void 签到ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //验证
            //确保有选中的行
            if (this.dgvlist.SelectedRows.Count != 1)
            {
                MessageBox.Show("请选择要签到的人");
                return;
            }
            //确保没有签到过
            string id = dgvlist.CurrentRow.Cells["ID"].Value.ToString();
            foreach (string item in recordList.Keys)
            {
                if (id == item)
                {
                    MessageBox.Show("您以前到过");
                    return;
                }

            }
            //执行签到
            Record record = new Record();
            record.ID = id;
            record.Name = dgvlist.CurrentRow.Cells["Name"].Value.ToString();
            record.SingInTime = DateTime.Now;//获取当前系统时间
            this.recordList.Add(record.ID, record);//添加到记录中
            MessageBox.Show("签到成功!!");

        }

签退:

  //签退操作
        private void 签退ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //确保有选中行
            if (this.dgvlist.SelectedRows.Count != 1)
            {
                MessageBox.Show("请选择!");
                return;
            }
            string id = dgvlist.CurrentRow.Cells["ID"].Value.ToString();
            bool isOut = false;//标识是否已签过到
            foreach (string item in recordList.Keys)
            {
                if (item == id)
                {
                    //执行签到,设置签退时间
                    this.recordList[item].SingOutTime = DateTime.Now;
                    MessageBox.Show("签退成功!");
                    isOut = true;
                    break;
                }
            }
            if (!isOut)
            {
                MessageBox.Show("很抱歉,尚未签到!");
            }
        }

打卡记录:

   //打卡记录
        public Dictionary<string, Record> recordList { get; set; }
        //数据绑定
        private void BindRecords()
        {
            lblcount.Text = "共有"+recordList.Count+"条打卡记录";
            //将Dictionary<K,V>绑定到DataGridView控件

            BindingSource bs = new BindingSource();
            #region 绑定数据源 BindingSource
            /*
           *    封装窗体的数据源。
             public BindingSource();
      //
      // 摘要:
      //     初始化 System.Windows.Forms.BindingSource 类的新实例,并将 System.Windows.Forms.BindingSource
      //     添加到指定的容器。
      //
      // 参数:
      //   container:
      //     要将当前 System.Windows.Forms.BindingSource 添加到的 System.ComponentModel.IContainer。

             *
                    public BindingSource(IContainer container);
        //
        // 摘要:
        //     用指定的数据源和数据成员初始化 System.Windows.Forms.BindingSource 类的新实例。
        //
        // 参数:
        //   dataSource:
        //     System.Windows.Forms.BindingSource 的数据源。
        //
        //   dataMember:
        //     要绑定到的数据源中的特定列或列表名称。
        public BindingSource(object dataSource, string dataMember);

        // 摘要:
        //     获取一个值,该值指示是否可以编辑基础列表中的项。
        //
        // 返回结果:
        //     true 指示列表项可以编辑;否则为 false。

             */
            #endregion

            bs.DataSource = recordList.Values;
            dgvlist.DataSource = bs;

        }

        private void FrmRecord_Load(object sender, EventArgs e)
        {
            BindRecords();
        }

这样最后呢,就可以完完整整的掌握了这些知识点------------------------------------

时间: 2024-09-30 18:45:10

员工考勤信息管理小程序的相关文章

在那个春暖花开的季节 今天微微的小雨 伴着轻轻的晚风我们一起来编写 员工考勤信息管理

public partial class Form1 : Form { public Form1() { InitializeComponent(); } //FROM 1 中的内容 //公共列表<SE>工程师=新列表<SE>(): public List<SE> engineers = new List<SE>(); //公共<string,Record>列表显示<string,Record>(): public Dictionar

我看小程序系列文章:1 不一样的角度 解读微信小程序

大家好,我是Beta007. 最近一直在研究小程序,会在这里整理出一系列的文章,和大家交流. 第一篇文章首发在了知乎专栏:小楼昨夜又秋风:https://zhuanlan.zhihu.com/p/22891188 知乎ID:七月在夏天  (头像是只喵~) 不一样的角度 解读微信小程序 七月在夏天· 2 天前 前段时间看完了雨果奖中短篇获奖小说<北京折叠>.很有意思的是,张小龙最近也要把应用折叠到微信里,这些应用被他称为:小程序. 含着金钥匙的小程序,还未展现全貌,就已经成了开发界的头条大事儿.

我心中的微信小程序

每日更新关注:http://weibo.com/hanjunqiang  新浪微博!iOS开发者交流QQ群: 446310206 最近几个月一直热火朝天张小龙最近要把应用折叠到微信里,这些应用被他称为:小程序. #什么是小程序?张小龙原话描述如下: #小程序尝鲜 每日更新关注:http://weibo.com/hanjunqiang  新浪微博!iOS开发者交流QQ群: 446310206 1.小程序 VS APP 微信小程序有些类似于上面寄生在支付宝里的各类服务.他们具有业务简单.明确,使用频

入华商用四周年,Office 365小程序在路上

微软市值已经在2018年4月17日那周初就悄然超越谷歌母公司Alphabet,成为仅次于苹果的全球第二大市值公司.投资银行摩根士丹利分析师凯什·韦斯(Keith Weiss)曾在2018年3月下旬发布的研报中称:"在公共云服务市场的有利地位,广泛的分效渠道,庞大的用户群,以及正在改善的利润率,将推动微软市值突破1万亿美元."该分析师认为,微软之所以能够脱颖而出,还要得益于其分析技术.机器学习和办公应用等. 在微软走向1万亿美元市场的过程中,Office 365云服务起着关键性作用.根据

微信小程序源码下载(200多个)

微信小程序源码下载汇总,点击标题进入对应的微信小程序下载页面. 最新 demo源码(点击标题进入帖子下载) 描述 1 微信小程序 会议室预定小程序 微信小程序 会议室预定小程序**** 本内容被作者隐藏 **** 2 微信小程序-双人五子棋小游戏 微信小程序-双人五子棋小游戏**** 本内容被作者隐藏 **** 3 打卡签到小程序 用微信小程序实现的一个简单的打卡签到的小程序拒绝 4 微信小程序---左滑删除 微信小程序---左滑删除**** 本内容被作者隐藏 **** 5 一个借钱的记事本的微

说说 PWA 和微信小程序--Progressive Web App

作者:云图图链接:https://zhuanlan.zhihu.com/p/22578965来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 利益相关:微信小用户,谷歌小员工 微信发布了微信小程序,虽然还在内测阶段,但是无论从技术上,还是以后要不要开发原生应用(native app)上引发了不少讨论.其实看到微信小程序的消息, 我第一时间想到的是 Google 之前推出的PWA(Progressive Web App),两者的目的是类似的(伪原生应用),但是形式却又

先做一个“小程序”——关于微信应用号的六大猜想

先做一个“小程序”——关于微信应用号的六大猜想 9月 21 日,苦等了9个多月的时间,应用号终于与我们见面了,命名为「小程序」. 01 为什么推出小程序? 考虑到小程序对整个APP市场的影响,毫无疑问会对现有的APP生态带来一定的冲击.但是,之所以推出小程序,最直接的原因可能是为了构建和扩充微信生态链,让微信更具开放性. 如我们所知,目前微信公众号分为三类: • 服务号,连接人和商品,目前很多电商企业,以及在微信端提供产品和服务的企业都用服务号. • 订阅号,微信官方的定位是阅读,连接人和资讯的

一个小程序能够反映的能力

程序员小郑刚步入岗位,但是在公司编码过程中没有受到专业的编码规范的培训,编写出来的程序虽然能够完成指定的功能但是比较不统一,偶尔会别出心裁的设计出自己的简化方法.老王这是从事了软件编码十多年了,现在都快到不惑的年龄了,在软件行业摸爬滚打十多年从事过多个行业,接触过不同公司的编码的规范,在软件代码编写中有独到的认识. 有一天有一个小功能的改动,由于这是一个非常重要的基础系统的功能变动,所以即便是一个小的功能变动公司上上下下都投入了非常高的重视程度.这天老王找到小郑告诉了需要修改这个系统并详细的描述

微信小程序开发需要注意的30个坑

1.小程序名称可以由中文.数字.英文.长度在3-20个字符之间,一个中文字等于2个字符. 2.小程序名称不得与公众平台已有的订阅号.服务号重复.如提示重名,请更换名称进行设置. 3.小程序名称在帐号信息设置时完成,请谨慎设置,一旦设置暂不支持修改. 4.更换名称进行设置.如果企业商标,组织名称等名称被侵权,可通过公众平台侵权投诉流程发起投诉,取回名称使用权. 5.个人开发者无法申请微信小程序:目前微信仅支持企业.政府.媒体.其他组织申请. 6.一个主体可以注册30个,一个绑定身份的开发者只能创建