考勤信息(員工打卡)
阿新 • • 發佈:2017-05-08
time blog 重新 att 一個 gif 加載 ++ binding
實現員工的添加,查詢和刪除,並用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("女"); }
考勤信息(員工打卡)