博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
员工考勤信息管理小程序
阅读量:4707 次
发布时间:2019-06-10

本文共 6992 字,大约阅读时间需要 23 分钟。

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

在以后搞大型的项目,绝对离不开"集合组织数据".例如: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
teapList = new List
();//用临时列表保存查询到的信息 foreach (SE item in this.programmerList) { if (item.ID.IndexOf(this.txtID.Text.Trim()) != -1)//indexof()实现模糊查询 { teapList.Add(item); } } this.dgvlist.DataSource = new BindingList
(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
recordList { get; set; } //数据绑定 private void BindRecords() { lblcount.Text = "共有"+recordList.Count+"条打卡记录"; //将Dictionary
绑定到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(); }

 

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

 

转载于:https://www.cnblogs.com/weiguangyi/p/5209791.html

你可能感兴趣的文章
实验一
查看>>
Linux内核--网络栈实现分析(九)--传输层之UDP协议(下)
查看>>
Lua -- 简洁、轻量、可扩展的脚本语言
查看>>
Python 2.7_Second_try_爬取阳光电影网_获取电影下载地址并写入文件 20161207
查看>>
[Fiddler] 开启Fiddler抓包的时候产品报“证书错误”
查看>>
打包苦逼活
查看>>
Oracle Certified Java Programmer 经典题目分析(二)
查看>>
第二十五章补充内容 17位字段
查看>>
灰色预测
查看>>
css随笔
查看>>
基于自己封装的select下拉选择的省市区三级联动效果,兼容IE
查看>>
初识Python
查看>>
nodejs+mysql入门实例(改)
查看>>
表达式语言
查看>>
jQuery EasyUI实现关闭全部tabs
查看>>
iOS项目之WKWebView替换UIWebView相关
查看>>
Lambda表达式效率问题
查看>>
【转载】iOS 设置Launch Image 启动图片(适用iOS9)
查看>>
最快得到MYSQL两个表的差集
查看>>
UML类图关系
查看>>