隐藏

c#指纹识别(指纹考勤源码)

发布:2022/2/14 23:00:09作者:管理员 来源:本站 浏览次数:1122

需要安装中控指纹仪驱动 后 方可运行,基于sql server的数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Data.SqlClient;
using System.Runtime.InteropServices;
namespace 使用指纹识别器进行员工考勤
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        [DllImport("kernel32")]
        public static extern int Beep(int dwFreg,int dwDuration);
 
        SqlConnection conn;
        SqlCommand cmd;
 
        private void Form2_Load(object sender, EventArgs e)
        {
            axZKFPEngX1.InitEngine();//连接指纹仪
            cbbDep.SelectedIndex = 0;//获取当前选定项的索引
            cbbJob.SelectedIndex = 0;
            cbbSex.SelectedIndex = 0;
            conn = new SqlConnection("server=.;database=db_finger;uid=sa;pwd=");//设置连接的数据库
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (txtName.Text == "")//如果没有输入员工姓名
            {
                MessageBox.Show("请输入员工姓名","警告",MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
            else
            {
                string uname = txtName.Text.Trim();//记录员工姓名
                string usex = cbbSex.Text.Trim();//记录员工性别
                string udep = cbbDep.Text.Trim();//记录员工部门
                string ujob = cbbJob.Text.Trim();//记录员工职务
                string uinfo = txtInfo.Text.Trim();//记录员工备份
                conn.Open();//连接数据库
                string finger = axZKFPEngX1.GetTemplateAsString();//获取当前指纹图片的字符串
                cmd = new SqlCommand("select count(*) from tb_finger where Ufinger='"   uname   "'", conn);//查找当前员工是否已存在
                int N =Convert.ToInt32( cmd.ExecuteScalar());//获取查找的记录数
                if (N > 0)//如果有记录
                {
                    //数据库中已有该员工
                    if (MessageBox.Show("此员工指纹已经添加过了!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK)
                    {
                        txtName.Text = "";//清空
                        txtName.Focus();//获取焦点
                        conn.Close();//关闭数据库的连接
                    }
                }
                else
                {
                    //向数据表中插入当有员工的信息
                    SqlCommand cmd1 = new SqlCommand("insert into tb_finger(Uname,Usex,Udep,Ujob,Uinfo,Ufinger) values('"   uname.Trim()   "','"   usex   "','"   udep   "','"   ujob   "','"   uinfo   "','" finger "')", conn);
                    int i = cmd1.ExecuteNonQuery();//获取SQL影响的行数
                    if (i > 0)//插入成功
                    {
                        MessageBox.Show("指纹录入成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    conn.Close();//断开数据库的连接
                }
            }
        }
 
        private void axZKFPEngX1_OnImageReceived(object sender, AxZKFPEngXControl.IZKFPEngXEvents_OnImageReceivedEvent e)
        {
            Graphics canvas = panel1.CreateGraphics();
            axZKFPEngX1.PrintImageAt(canvas.GetHdc().ToInt32(), 0, 0, panel1.Width, panel1.Height);
            canvas.Dispose();
            Beep(3000,100);
        }
 
        private void axZKFPEngX1_OnFeatureInfo(object sender, AxZKFPEngXControl.IZKFPEngXEvents_OnFeatureInfoEvent e)
        {
            String sTemp = "";
            int j = 0;
            if (axZKFPEngX1.IsRegister)
            {
                j = axZKFPEngX1.EnrollIndex - 1;
                sTemp = "Register status: still press finger "   j.ToString()   " times!";
            }
            sTemp = sTemp   "指纹质量";
            if (e.aQuality != 0)
                sTemp = sTemp   "不好";
            else
                sTemp = sTemp   "好";
            if (sTemp.Trim() == "指纹质量好")
            {
                button1.Enabled = true;
            }
            else
            {
                button1.Enabled = false;
            }
        }
 
        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            axZKFPEngX1.EndEngine();
        }
 
        private void axZKFPEngX1_OnCapture(object sender, AxZKFPEngXControl.IZKFPEngXEvents_OnCaptureEvent e)
        {
            bool temp = false;
            string tp = "";
            string Ntemp = axZKFPEngX1.GetTemplateAsString();//获取当前指纹图片的字符串
            SqlConnection conn = new SqlConnection("server=.;database=db_finger;uid=sa;pwd=");//设置数据库的连接
            conn.Open();//连接数据库
            SqlCommand cmd = new SqlCommand("select * from tb_finger", conn);//查找表中的所有信息
            SqlDataReader sdr = cmd.ExecuteReader();//执行SQL语句
            while (sdr.Read())//读取表中的数据
            {
                string Ofinger = sdr["Ufinger"].ToString();//获取数据表中已存在的指纺图片的字符串
                if (axZKFPEngX1.VerFingerFromStr(ref Ofinger, Ntemp, false, ref temp))//如果两个图片相同
                {
                    button1.Enabled = false;//禁止信息的插入
                    MessageBox.Show("该指纹已经录入","警告",MessageBoxButtons.OK,MessageBoxIcon.Error);
                }
                else
                {
                    button1.Enabled = true;
                }
            }
 
        }
    }
}