C#之考勤系统
闲来无聊,搞搞C#,下面就是我写的一个Demo
员工类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 考勤管理
{
class sign
{
private string _id;//员工工号
private string _name;//员工姓名
private DateTime _gettime;//签到时间
private DateTime _outtime;//签退时间 public DateTime Outtime
{
get { return _outtime; }
set { _outtime = value; }
} public DateTime Gettime
{
get { return _gettime; }
set { _gettime = value; }
} public string Name
{
get { return _name; }
set { _name = value; }
}
public string Id
{
get { return _id; }
set { _id = value; }
} public static Dictionary<string, sign> dic = new Dictionary<string, sign>(); }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 考勤管理
{
public class SE
{
private string name; public string Name
{
get { return name; }
set { name = value; }
}
private int id; public int Id
{
get { return id; }
set { id = value; }
}
private int age; public int Age
{
get { return age; }
set { age = value; }
}
private string sex; public string Sex
{
get { return sex; }
set { sex = value; }
} public static List<SE> list = new List<SE>(); }
}
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 考勤管理
{
public partial class FrmqdTable : Form
{
public FrmqdTable()
{
InitializeComponent();
} public Form1 table;
private void FrmqdTable_Load(object sender, EventArgs e)
{ label1.Text = string.Format("你好,共有{0}条打卡记录", sign.dic.Count);
dataGridView1.AutoGenerateColumns = false;
BindingSource bs = new BindingSource();
bs.DataSource = sign.dic.Values;
dataGridView1.DataSource = bs;
} private void button1_Click(object sender, EventArgs e)
{
// string id = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
// MessageBox.Show(sign.dic[id].Outtime.ToString()); Form1 f = new Form1();
f.table = this;
this.Hide();
f.Show();
}
}
}
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 考勤管理
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} public FrmqdTable table;
private void 新增ToolStripMenuItem_Click(object sender, EventArgs e)
{
FrmAdd a = new FrmAdd();
a.main = this;
a.Show();
} private void Form1_Load(object sender, EventArgs e)
{
Initial();
} public void Initial() {
SE s1 = new SE();
s1.Name = "二狗子";
s1.Age = ;
s1.Sex = "男";
s1.Id = ; SE.list.Add(s1); SE s2 = new SE();
s2.Name = "三狗子";
s2.Age = ;
s2.Sex = "女";
s2.Id = ; SE.list.Add(s2); SE s3 = new SE();
s3.Name = "五狗子";
s3.Age = ;
s3.Sex = "男";
s3.Id = ; SE.list.Add(s3);
BindGrid(SE.list);
dataGridView1.DataSource = SE.list; } private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text=="")
{
dataGridView1.DataSource = SE.list;
return;
} List<SE> searchList = new List<SE>(); //定义打卡记录的Dictionary
if (isNaN(textBox1.Text) == true)
{
string id = this.textBox1.Text;
int myid = Convert.ToInt32(id); foreach (SE item in SE.list)
{
if (item.Id==myid)
{
searchList.Add(item);
}
else
{
BindGrid(SE.list);
}
} if (textBox1.Text != "")
{
//刷新dgvlist
BindGrid(searchList);
} }
else {
MessageBox.Show("不好意思,您输入的不是数字!");
}
} public bool isNaN(string temp)
{ for (int i = ; i < temp.Length; i++)
{
byte tempByte = Convert.ToByte(temp[i]); //设置byte格式
if ((tempByte < ) || (tempByte > )) //如果改tempByte不在范围内
{
return false;
} } return true;
} public void BindGrid(List<SE> list)
{
dataGridView1.DataSource = new BindingList<SE>(list);
} private void 签到ToolStripMenuItem_Click(object sender, EventArgs e)
{ //确保有选中的行
if (dataGridView1.SelectedRows.Count != )
{
MessageBox.Show("请选择一行");
return;
} string num = dataGridView1.SelectedRows[].Cells["id"].Value.ToString(); foreach (string item in sign.dic.Keys)
{
if (item==num)
{
MessageBox.Show("你已经签到过了");
return;
}
} sign s = new sign();
s.Id = num;
s.Name = dataGridView1.SelectedRows[].Cells["name"].Value.ToString();
s.Gettime = DateTime.Now;
sign.dic.Add(s.Id,s);
opt = true;
MessageBox.Show("你已经成功签到了!!!");
} public static int i=;
private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count != )
{
MessageBox.Show("请选择一行");
}
else
{
DialogResult dr = MessageBox.Show("确认删除该条员工信息吗?", "温馨提示", MessageBoxButtons.OKCancel);
if (dr == DialogResult.OK)
{
int num = Convert.ToInt32(dataGridView1.Rows[i].Cells["id"].Value); for (int j = ; j <SE.list.Count; j++)
{
//如果存在员工号则删除
if (SE.list[j].Id == num)
{
SE.list.RemoveAt(j);
}
} }
//刷新dgvlist
BindGrid(SE.list);
}
} public static int counter = ;
public static bool opt = false;
private void 签退ToolStripMenuItem_Click(object sender, EventArgs e)
{ if (dataGridView1.SelectedRows.Count != )
{
MessageBox.Show("请选择一行");
}
else
{
string id = dataGridView1.SelectedRows[].Cells["id"].Value.ToString();
//bool result=sign.dic.ContainsKey(id); bool flag = false; foreach (var item in sign.dic.Keys)
{
if (item==id)
{
sign.dic[item].Outtime = DateTime.Now; //MessageBox.Show(sign.dic[item].Outtime.ToString());
if (!(sign.dic[item].Gettime.AddSeconds() < sign.dic[item].Outtime))
{
// MessageBox.Show(sign.dic[item].Gettime.AddSeconds(1).ToString());
MessageBox.Show("还没工作完,不许签退");
counter = ; return;
} if(counter==){
//证明已经执行签到,设置签退时间
sign.dic[item].Outtime = DateTime.Now;
MessageBox.Show("签退成功!");
opt = true;
i++;
flag = true;
i = ;
counter++;
break;
} else
{
MessageBox.Show("已经签到了");
return; }
} }
}
} private void 打卡记录ToolStripMenuItem_Click(object sender, EventArgs e)
{
FrmqdTable t = new FrmqdTable();
t.table = this;
t.Show();
this.Hide(); } private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{ }
}
}
三个窗体的全部代码,但是一直点签退的时候,唯独这里有漏洞,如果有大牛解决的话,希望能在下面留言,方便大家交流学习,谢谢!!!!
C#之考勤系统的更多相关文章
- 考勤系统代码分析——主页布局easyui框架
考勤系统主页的布局用的是easyui的Layout控件 Layout:布局容器有5个区域:北.南.东.西和中间.中间区域面板是必须的,边缘的面板都是可选的.每个边缘区域面板都可以通过拖拽其边框改变大小 ...
- 企业办公3D指纹考勤系统解决方案(一)
员工准时.正常出勤是企业考勤制度的基本要求,然而目前签名式.卡钟式.IC卡考勤系统均存在代打卡.人情卡.不易统计等漏洞,而市面上的光学指纹考勤机存在识别能力差.识别速度慢.使用寿命短.不能完全杜绝指纹 ...
- 连锁机构3D指纹考勤系统解决方案
信息技术的高速发展加速了商业零售业连锁经营的信息化和全球化的进程,同时也推动了商业管理的变革.尽管人们对它的认识是被动与滞后的,但这种变革依然伴随着商业业态的转变和信息技术的发展或快或慢地在悄然进行着 ...
- 工厂食堂3D指纹考勤系统解决方案
指纹考勤就餐管理系统利用3D活体指纹技术完成对正式员工就餐管理.就餐者只需办理完入职手续,并登记考勤指纹,就可通过考勤指纹在工厂食堂领餐. 大多数工厂食堂就餐是福利性的,只准员工就餐,不准员工带亲戚朋 ...
- 企业办公3D指纹考勤系统解决方案
员工准时.正常出勤是企业考勤制度的基本要求,然而目前签名式.卡钟式.IC卡考勤系统均存在代打卡.人情卡.不易统计等漏洞,而市面上的光学指纹考勤机存在识别能力差.识别速度慢.使用寿命短.不能完全杜绝指纹 ...
- RE:考勤系统的复盘
一大早看了 <美团旅行前端技术体系的思考与实践> 这篇文,恰巧又在昨天完成了一个项目.确实让我忍不住码篇总结,为自己做一个复盘. 历时两个月,考勤系统 这个项目总算能够称得上完成了.项目 ...
- 【UML】NO.50.EBook.5.UML.1.010-【UML 大战需求分析】- 考勤系统
1.0.0 Summary Tittle:[UML]NO.50.EBook.1.UML.1.010-[UML 大战需求分析]- 考勤系统 Style:DesignPattern Series:Desi ...
- 基于SSH框架的在线考勤系统开发的质量属性
我要开发的是一个基于SSH框架的在线考勤系统. 质量属性是指影响质量的相关因素,下面我将分别从6个系统质量属性(可用性,易用性,可修改性,性能,安全性,可测试性)来分析我的系统,以及如何实现这些质量属 ...
- 写一个小demo过程中遇到的各种问题 学生管理考勤系统(网页模拟)
添加与新增一些小玩意的1.0.3版本:传送门 各位带哥,这不是你们要的c++.java.c#作业哈 课上要求做个小作业,学生管理考勤系统,原本想着是个练手的好机会,结果只证实了我还是个弟中弟. 设想的 ...
- 第二次团队作业-PANTHER考勤系统需求分析
这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1 这个作业要求在哪里 https://edu.cnblo ...
随机推荐
- 优化JAVA查询Mongodb数量过大,查询熟读慢的方法
前言:2018年的时候优化了一个项目,该项目从MOngodb中获取数据的时候一次去十万百万千万的数据过慢,往往每次都要二十秒,三十秒,今天提出了一个代码优化的方案 项目查从mongodb中获取数据:代 ...
- BZOJ 1634 洛谷2878 USACO 2007.Jan Protecting the flowers护花
[题意] 约翰留下他的N只奶牛上山采木.他离开的时候,她们像往常一样悠闲地在草场里吃草.可是,当他回来的时候,他看到了一幕惨剧:牛们正躲在他的花园里,啃食着他心爱的美丽花朵!为了使接下来花朵的损失最小 ...
- JavaSE 学习笔记之StringBuilder(十六)
< java.lang >-- StringBuilder字符串缓冲区:★★★☆ JDK1.5出现StringBuiler:构造一个其中不带字符的字符串生成器,初始容量为 16 个字符.该 ...
- 创建RpcEnv
感觉这篇文章不错 2.1.2.创建RpcEnv - RpcEndpoint - RpcEndpointRef val systemName = if (isDriver) driverSystem ...
- 在ANGULAR的SERVICE中,哪种才是最基本的实现?(Provider)
今天刚好看到这一节. 节选一下,稍后,实操完成之后,会补上所有代码 Sometimes, it might be interesting to create configurable services ...
- ZooKeeper可视化Web管理工具收集(待实践)
原来ZooKeeper是有Web管理后台的.但是仅限于操作ZooKeeper的数据,如果要监控性能,估计要借助Nagios去配合. 这些工具应该ZK UI最好用,下面是收集的一些工具安装教程: htt ...
- saprk里面的action - aggregate
上一篇讲到了spark里面的action函数: Action列表: reduce collect count first take takeSample takeOrdered saveAsTextF ...
- keras与sklearn的结合使用
keras与sklearn的结合使用 新建 模板 Fly Time: 2017-4-14 引言 代码 引言 众所周知,keras目前没有提供交叉验证的功能,我们要向使用交叉验证,就需要与sklearn ...
- DSP、Media、AdExchanger之间的关系及交互流程
广告商,如以下的樱花日语,淘宝卖家.其须要推广自己的产品. Zampdsp(晶赞) 是DSP平台.其与非常多广告商合作,广告商在平台上公布广告创意,并托付平台代为投放. tanx.com 是adExc ...
- string 和 vector 初探
标准库类型 string string 表示可变长的字符序列.是C++标准库类型的一部分,拥有很多优秀的性能. 定义 string 对象时如未人为初始化编译器会默认初始化为空字符串. string 对 ...