zoukankan      html  css  js  c++  java
  • 泛型集合小项目员工打卡

    项目样式

    需求说明:1.实现新增员工

         2.使用DataGrideView空间展示员工信息

         3.实现删除员工信息

         4.给主窗体添加右键菜单,实现上班签到和下班签退

         5.选择签到,必须检索员工打卡记录,如果已签到,提示不能再签到

         6.选择签退,必须检索员工打卡记录,如果已签退,提示不能再签退

         7.使用DataGrideView控件显示员工考勤记录

    项目开始:

    首先搭好窗体,创建员工类 SE 打卡时间类

    public class SE
    {

    public int id{ get; set; }      //存储员工工号
    public string name { get; set; }  //存储员工姓名
    public int age { get; set; }     //存储员工年龄
    public string sex{ get; set; }   //存储员工
    public int type;          //存储打卡类型1,2,3
    }

     

    public class Time
    {
    public DateTime start { get; set; } //存储签到时间
    public DateTime close { get; set; } //存储签退时间
    public int id { get; set; }      //存储打卡类型1,2,3
    public string name { get; set;}   //存储员工姓名

    }

    然后创建泛型集合list

    public List<SE> list = new List<SE>();   //存储员工的集合
    public static Dictionary<string, Time> dic = new Dictionary<string, Time>(); //存储打卡记录

    在窗体load时间为DataGrideView绑定数据源

    SE s1 = new SE();
    s1.id = 111;
    s1.name = "王小毛";
    s1.age = 26;
    s1.sex = "男";
    SE s2 = new SE();
    s2.id = 112;
    s2.name = "周新雨";
    s2.age = 22;
    s2.sex = "女";
    SE s3 = new SE();
    s3.name = "张烨";
    s3.id = 113;
    s3.age = 30;
    s3.sex = "男";
    list.Add(s1);
    list.Add(s2);
    list.Add(s3);
    dataGridView1.DataSource = list;

    新增就是跳转新增员工窗体

    点击新增将新员工信息保存到集合中

    SE s = new SE();
    s.id = Convert.ToInt32(textBox1.Text);
    s.name = textBox2.Text;
    s.age = Convert.ToInt32(textBox3.Text);
    s.sex = textBox4.Text;
    frm1.list.Add(s);
    MessageBox.Show("新RR增成功!");
    frm1.Show();
    frm1.clear(frm1.list);
    this.Close();  

    修改员工信息涉及到一个窗体传值,这次我们传的是一个SE对象

    首先在修改员工信息窗体new一个新的SE对象

    然后点击主窗体的修改,跳转修改员工信息窗体

    Form3 frm = new Form3();
    frm.name = dataGridView1.SelectedCells[1].Value.ToString();
    foreach (SE s in list)
    {
    if (s.id.ToString() == dataGridView1.SelectedCells[0].Value.ToString())
    {
    frm.s = s;
    break;
    }
    }
    frm.f = this;
    frm.Show();
    this.Hide();

    跳转到修改员工信息窗体,可以在textBox编辑员工信息

    点击修改,保存数据

    SE s = new SE();
    s.id = Convert.ToInt32(textBox1.Text);
    s.age = Convert.ToInt32(textBox3.Text);
    s.sex = textBox4.Text;
    for(int i = 0; i < f.list.Count; i++)
    {
    if (f.list[i].name == name)
    {
    f.list[i].age = Convert.ToInt32(textBox3.Text);
    f.list[i].id = Convert.ToInt32(textBox1.Text);
    f.list[i].sex = textBox4.Text;
    break;
    }
    }
    MessageBox.Show("修改成功!");
    f.clear(f.list);
    f.Show();

    在主窗体的DataGrideView添加ContextMenuTrip,添加签到和签退

    点击签到和签退,分别在集合中添加一条数据

    string name=dataGridView1.SelectedCells[1].Value.ToString();
    SE s = new SE();
    foreach (SE se in list)
    {
    if (se.name == name)
    {
    s = se;
    break;
    }
    }
    num = s.type;
    if (num==0)
    {
    Time t = new Time();
    t.id = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value);
    t.name = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
    t.start = DateTime.Now;
    dic.Add(t.name, t);
    s.type = 1;
    MessageBox.Show("签到成功~");
    }
    else
    {
    MessageBox.Show("你已经签到过了");
    }

    同时判断是否已签到,签退与之相同

    点击打卡记录,就可以看到员工打卡的信息了

    这样,一个简单的小程序就写完了

  • 相关阅读:
    【BZOJ2553】[BeiJing2011] 禁忌(AC自动机+矩乘)
    自动生成logo的网址
    JS创建对象的方式有几种
    用nodejs和js写增删查模块
    JS一般般的网页重构可以使用Node.js做些什么(转)
    Javascript高级程序设计
    前端书籍小技巧
    【年终总结】2年计划还是要有的,万一实现了呢?(转自叶小钗)
    前端数据结构与算法系列(转)
    node前端自动化
  • 原文地址:https://www.cnblogs.com/yangsongxiao/p/5810135.html
Copyright © 2011-2022 走看看