考勤信息(员工打卡)

时间:2021-05-16 11:15:30

实现员工的添加,查询和删除,并用dgvList显示出来

1.1///先声明一个单列集合

public List<SE> list = new List<SE>();

1.2///初始化三个对象

private void FrmMain_Load(object sender, EventArgs e)
{

SE s1
= new SE();
s1.id
= 20161000;
s1.name
= "张三";
s1.age
= 20;
s1.gender
= "";

SE s2
= new SE();
s2.id
= 20161002;
s2.name
= "李四";
s2.age
= 18;
s2.gender
= "";

SE s3
= new SE();
s3.id
= 20161004;
s3.name
= "凤姐";
s3.age
= 20;
s3.gender
= "";

1.3//把数据添加到集合中并用dgvList加载出来

list.Add(s1);
list.Add(s2);
list.Add(s3);

dgvList.DataSource
=(list);

}

 

考勤信息(员工打卡)

1.4   private void btn01_Click(object sender, EventArgs e)
{

///创建临时的单列集合来存储数据
List<SE> llist = new List<SE>();
//遍历集合中的对象
foreach (SE item in list)
{
//判断要查询对象的工号的下标是否存在
if(item.Id.IndexOf(txt01.Text.Trim())!=-1)
{
llist.Add(item);
//把数据加入到临时集合中
}
}
//把查询到的数据绑定到dgvList中
dgvList.DataSource = new BindingList<SE>(llist);

}

1.5 private void toolStripButton3_Click(object sender, EventArgs e)
{

///删除前先考虑根据什么来删除数据
///我根据员工工号来删除 首先得到工号

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

//使用for循环来查找
for (int i = 0; i < list.Count; i++)
{
//判断数据是否相等再删除
if(list[i].Id==id)
{
list.RemoveAt(i);
}
}
//删除后还得再重新绑定数据
dgvList.DataSource = new BindingList<SE>(list);

}

 

考勤信息(员工打卡)

1.6///声明一个静态的双列集合

public static Dictionary<string, Record> recordList = new Dictionary<string, Record>();

//单击签到
private void 签到ToolStripMenuItem_Click(object sender, EventArgs e)
{
//判断是否选中一行
if(dgvList.SelectedRows.Count!=1)
{
MessageBox.Show(
"请选中一行");
return;
}
//把选中的数据传给记录列表
string no = dgvList.SelectedRows[0].Cells[0].Value.ToString();
foreach (string id in recordList.Keys)
{
if(no==id)
{
MessageBox.Show(
"您已签到过");
return;

}
}
Record record
= new Record();
record.ID
= no;
record.Name
= dgvList.SelectedRows[0].Cells[1].Value.ToString();
record.StratTime
= DateTime.Now;
recordList.Add(record.ID,record);
MessageBox.Show(
"签到成功");
}

 

考勤信息(员工打卡)

1.7///单击签退

private void 签退ToolStripMenuItem_Click(object sender, EventArgs e)
{
//判断是否选中一行
if (dgvList.SelectedRows.Count != 1)
{
MessageBox.Show(
"请选中一行");
return;
}
//把选中的数据传给记录列表
string no = dgvList.SelectedRows[0].Cells[0].Value.ToString();
bool falg = false;
//判断是否有签到记录
foreach (string key in recordList.Keys)
{
if(key==no)
{
///执行签到

recordList[key].EndTime
= DateTime.Now;
MessageBox.Show(
"签退成功");
falg
= true;
break;
}
}
if(falg==false)
{
MessageBox.Show(
"您还没有签到");
}
}

 

 考勤信息(员工打卡)

1.8///声明一个Record类

public class Record
{
public string Name { get; set; }

public DateTime StratTime { get; set; }

public DateTime EndTime { get; set; }

public String ID { get; set; }
}

1.9///调用签到记录窗口

private void toolStripButton4_Click(object sender, EventArgs e)
{
FrmRecord record
= new FrmRecord();
record.Show();
}

2.0///调用增加员工的窗口

private void toolStripButton1_Click(object sender, EventArgs e)
{
FrmAdd add
= new FrmAdd();
Hide();
add.Show();
}



2.1///添加员工

private void btn01_Click(object sender, EventArgs e)
{
///通过保存把数据加到集合中
//首先创建一个对象并赋值
SE se = new SE();
se.Id
= txt01.Text;
se.Name
= txt03.Text;
se.Age
= txt02.Text;
se.Gender
= cbo01.Text;
foreach (SE item in FrmMain.list)
{
if (item.Id == txt01.Text)
{
MessageBox.Show(
"此工号已存在");
return;
}
}

//把数据加到list集合中,因为集合是在主窗体中声明的需要调用
FrmMain main = new FrmMain();
FrmMain.list.Add(se);
main.Show();

}

 

2.2

考勤信息(员工打卡)

      

private void FrmAdd_Load(object sender, EventArgs e)
{
//把男和女添加到下拉列表框中
cbo01.Items.Add("");
//把男默认选中
cbo01.SelectedIndex=0;
cbo01.Items.Add(
"");
}