发布时间 : 星期四 文章基于C#的考勤系统设计更新完毕开始阅读
基于C#的考勤系统设计
摘要:在.NET集成开发平台下,利用C#进行程序设计,通过读取ID卡上的标识性数据,结合数据库技术设计并实现了考勤系统。阐述了系统设计思路及关键技术。
关键词:.NET;考勤系统;C#;ID卡;数据库技术 0引言
信息化时代的今天,考勤系统被广泛应用在各行各业,其形式丰富、技术多样,很好地解决了传统签到式考勤的弊端,提高了实时精度,并有利于数据查询与汇总。目前,利用.NET技术实现的考勤系统还比较少。.NET的集成开发环境具备高效、快速开发的特性,其数据控件功能强大、使用方便、扩展性强。考勤系统中采用刷卡模式的较多,利用读卡器进行读卡操作,并获取标识性数据,通过对该标志性数据的识别获得相应的身份,从而进行精确的考勤,这种方法操作简便,实时性强。 1设计思路
考勤系统可基于C/S或B/S架构进行设计,由于考勤管理的严肃性,在终端仅需进行简单的刷卡操作,数据查询与汇总应由专门的人员进行操作,所以绝大多数考勤系统以C/S架构的形式呈现。本系统以125K低频读卡器为例,C#为编程语言进行开发。.NET集成开发环境提供了丰富的控件及数据绑定功能,这给程序设计带来了极大的便捷体验。程序界面以Windows窗体呈现,充分利用ListView控件
的数据绑定功能灵活设计,以达到简洁、实用、高效的目的。 序号列名数据类型说明 1KIDint自动编号,主键 2KNamevarchar(50)员工名称 3KDatevarchar(50)考勤日期 4KTimeVarchar(50)考勤时间
5KDetailsvarchar(50)考勤细节,如事假、病假记载 3实现过程 3.1ID卡读取
为了识别刷卡者的身份,最重要的环节便是通过读卡器读取ID卡中的标识性数据,如ID卡号。员工使用ID卡刷卡,读卡器开始工作,在读出ID号码后会向上位机通过串口发出指令,上位机监视串口缓冲区中是否有数据进来,如果有则读进来,读多少个字节要看读卡器的通许协议,在C#中可以使用SerialPort的DataReceiving事件来监控是否有数据进来,然后使用SerialPort的ReadLine方法来读取缓冲区里的数据,并在文本框中显示,其过程如下: private byte receivedData = new byte[11];
private delegate void UpdateTextEventHandler(string text);//定义委托
private event UpdateTextEventHandler textChanged;//定义事件 private void ChangeText(string text)//事件处理方法 {
textBox1.Text = text; }
public Form1() {
InitializeComponent(); if (serialPort1.IsOpen) {
serialPort1.Close(); }
serialPort1.BaudRate = 9600;//设置波特率为9600
serialPort1.PortName = \;//设置端口号,这里使用COM1端口
serialPort1.ReceivedBytesThreshold = 11; //设置 DataReceived 事件发生前内部输入缓冲区中的字节数为11
textChanged += new UpdateTextEventHandler(ChangeText); //将事件处理方法添加到事件中去 serialPort1.Open(); }
private void serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e) {
serialPort1.Read(receivedData, 0, 11);
string text = Encoding.ASCII.GetString(receivedData).Substring(1, 10);
serialPort1.DiscardInBuffer();
this.Invoke(textChanged, new string { text }); }
3.2窗体布局与查询
(1)ListView控件的使用。ListView是.NET集成开发环境下的一个支持动态数据绑定的复杂控件,它支持LargeIcon、SmallIcon、Tile、List、Details五种视图方式。为获得更好的用户体验,这里采用Details视图方式,并预先配置好部门分组。
(2)绑定并显示数据。当员工进行刷卡时,系统将识别其卡号所对应的员工姓名,即时将该员工的考勤信息作为一条完整记录存储到考勤记载表中,在需要查看记录时,只要根据当前日期绑定相应的用户记录到ListView上即可。绑定方法的关键在于将数据库中对应的员工考勤记录与控件上的员工进行比对,并将匹配数据显示给用户,其核心语句如下:SqlDataReader sdr = cmd.ExecuteReader();//定义数据流对象sdr
foreach (ListViewItem lvi in listView1.Items)//遍历ListView中的每一项 {
string name = lvi.Text;lvi.SubItems.Clear();lvi.Text = name; }