实现员工考勤信息管理


using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 上机04_显示员工考勤记录
{
    public partial class FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 添加打卡记录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsmiAdd_Click(object sender, EventArgs e)
        {
            FrmAdd frm = new FrmAdd();
            frm.Frmparent = this;
            frm.Show();
        }

        /// <summary>
        /// 创建集合
        /// </summary>
        ArrayList list = new ArrayList();
        //列表,用于保存SE对象
        public List<SE>  programeerlist=new List<SE>();

        /// <summary>
        ///  刷新dgv数据
        /// </summary>
        /// <param name="list"></param>
        public void BindGrid(List<SE>  list)
        {
            this.dgvList.DataSource=new BindingList<SE>(list);
        }
        
        /// <summary>
        /// 模糊查询
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnQuery_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Test");

            List<SE> tempList = new List<SE>();     //用临时列表保存查询到的信息
            //循环遍历搜索
            foreach (SE item in this.programeerlist)    
            {
                //可以查找第一个ID   
                if (item.ID.IndexOf(this.txtNum.Text.Trim()) != -1)
                {
                    tempList.Add(item);     //重新添加数据
                }
            }
            //重新绑定数据
            this.dgvList.DataSource = new BindingList<SE>(tempList);
        }


        /// <summary>
        /// 删除按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsmiDelete_Click(object sender, EventArgs e)
        {
           DialogResult result= MessageBox.Show("确定要删除这个信息吗?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Error);
            if(result== DialogResult.OK)
            {
                foreach (SE item in this.programeerlist)
                {
                    if (this.dgvList.SelectedRows[0].Cells["cloNum"].Value.ToString() == item.ID)
                    {
                        programeerlist.Remove(item);
                        break;
                    }

                }
                BindGrid(programeerlist);
                MessageBox.Show("删除成功!@");
                

            }
        }

        /// <summary>
        /// 泛型集合  key 是string类型  Value 是se类型
        /// </summary>
        private Dictionary<string, Record> recordList = new Dictionary<string, Record>();

        /// <summary>
        /// 打卡签到
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsmiSignup_Click(object sender, EventArgs e)
        {
            if (this.dgvList.SelectedRows.Count!=1)
            {
                MessageBox.Show("请选中一行!");
                return;
            }
            //确保没有签过到
            string workNo = dgvList.SelectedRows[0].Cells["cloNum"].Value.ToString();

            //string类型    打卡记录的键 
            foreach (string  item in recordList.Keys)
            {
                if (workNo==item)
                {
                    MessageBox.Show("您已经签到过了!");
                    return;
                }
            }

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

        /// <summary>
        /// 签退时间
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsmiRetreat_Click(object sender, EventArgs e)
        {
            if (this.dgvList.SelectedRows.Count!=1)
            {
                MessageBox.Show("请选中一行!");
                return;
            }
            //获取dgv 的选中的行
            string ID = dgvList.SelectedRows[0].Cells["cloNum"].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("很抱歉!,尚未签到!");
            }
        }

        /// <summary>
        /// 打卡记录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsmiCount_Click(object sender, EventArgs e)
        {
            FrmCount frmCount = new FrmCount();
            frmCount.Decrods = this.recordList;
            frmCount.Show();
        }
    }
}


using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 上机04_显示员工考勤记录
{
    public partial class FrmAdd : Form
    {
        public FrmAdd()
        {
            InitializeComponent();

            this.cboGenger.SelectedIndex=0;
        }

        public FrmMain Frmparent { get; set; }

        /// <summary>
        /// 添加按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSave_Click(object sender, EventArgs e)
        {
           if(CheckInfo())
           {
               SE se = new SE();
               

               
               se.ID = this.txtNum.Text.Trim();    //工号
               se.Age = int.Parse(this.txtAge.Text.Trim().ToString());   //年龄
               se.Name = this.txtName.Text.Trim();     //姓名
               if (this.cboGenger.SelectedItem.ToString() == "男")
               {
                   se.GetGender = Gender.男;

               }
               else
               {
                   se.GetGender = Gender.女;
               }

               try
               {

                   foreach (SE item in Frmparent.programeerlist)
                   {
                       if (item.ID == se.ID)
                       {
                           MessageBox.Show("此工号已经存在!");
                           return;
                       }
                   }

                   //添加到父类
                   Frmparent.programeerlist.Add(se);

                   this.Close();
               }
               catch (Exception ex)
               {
                   MessageBox.Show("出错" + ex.Message);
               }
               finally
               {
                   this.Frmparent.BindGrid(Frmparent.programeerlist);
               }


           }
        }

        private void FrmAdd_Load(object sender, EventArgs e)
        {
            ArrayList list = new ArrayList();
            SE se = new SE();
            se.GetGender = 0;

            list.Add(se);
        }

        #region 非空验证
        /// <summary>
        /// 非空验证
        /// </summary>
        /// <returns></returns>
        public bool CheckInfo()
        {
            if (this.txtName.Text == "")
            {
                MessageBox.Show("请输入姓名");
                return false;
            }
            else if (this.txtAge.Text == "")
            {
                MessageBox.Show("请输入年龄");
                return false;
            }
            else if (this.txtNum.Text == "")
            {
                MessageBox.Show("请输入员工工号");
                return false;
            }
            return true;
        } 
        #endregion
    }
}


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 上机04_显示员工考勤记录
{
    public partial class FrmCount : Form
    {
        public FrmCount()
        {
            InitializeComponent();
        }
        //Dictionary
        public Dictionary<string,Record> Decrods { get; set; }

        private void FrmCount_Load(object sender, EventArgs e)
        {
            BindingSource bindingSource = new BindingSource();
            bindingSource.DataSource = Decrods.Values;
            this.dgvList.DataSource = bindingSource;
            
        }
    }
}




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 上机04_显示员工考勤记录
{
    public    class SE
    {

        /// <summary>
        /// 年龄
        /// </summary>
        public int Age { get; set; }

        /// <summary>
        /// 姓名
        /// </summary>
        public string  Name { get; set; }

        /// <summary>
        /// 编号
        /// </summary>
        public string ID { get; set; }
        /// <summary>
        /// 性别
        /// </summary>
        public Gender GetGender { get; set; }

     
    }

    public enum Gender
    {
        男,女
    
    
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 上机04_显示员工考勤记录
{
   public class Record
    {


        /// <summary>
        /// 签到时间
        /// </summary>
        public DateTime SingInTime { get; set; }        

        /// <summary>
        /// 签退时间
        /// </summary>
        public DateTime SingOUtTime { get; set; }

        /// <summary>
        /// 工号
        /// </summary>
        public string  ID { get; set; }

        /// <summary>
        /// 姓名
        /// </summary>
        public string Name { get; set; }

    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值