您的当前位置:首页正文

RFID课程设计报告——身份识别认证系统

来源:一二三四网


RFID课程设计报告

名 称 身份识别认证系统 专业班级 学 号 姓 名 指导教师

2014.7

一、系统功能(标题一,小三号,宋体,加粗)

1、系统功能总体描述(标题二,四号,宋体,加粗)

该系统通过RFID技术与系统相连,能从相应的卡片中读取卡片中的信息,并将读取的信息在界面中进行显示。除此之外,还能对读取的信息进行修改,删除和增添个人身份信息,以实现对身份信息的管理。当选择了串口,并且单击打开串口,显示打开成功之后,单击“开始识别”按钮,系统将会将读取的卡片中的个人身份信息显示在界面中,卡片中的信息包括标签序号、姓名、地址、身份证号、名族、性别、照片等;当单击“身份信息管理”按钮时。进入身份信息管理界面,如果选择了一张没有添加信息的卡片,则能对身份信息进行添加;如若卡片中已经有身份信息,则能对个人身份信息进行修改和删除等操作。

2、系统功能模块图

系统功能模块图如下所示:

身份识别系统

能数卡串模身模据片 口块份块库识选信 别管择息模 理模管块块功 理 识更添插修删查显读关打选别新加入改除询 示取闭开择身身身身身身身卡卡串串串 份份份份份份份片片口口口信信信信信信信 信信息息息息息息息息息

3、系统流程图

读取卡片过程整体流程图:

开始 选择串口 单击打开串口 是 否 选 择 串 N 口? Y 串口打开是否成 串口打开失败 N 功? 请选择串口 Y 串口打开成功 N 是否关闭串口? Y 串口关闭 成 Y N 结束 在窗体中显示身份信息 单击开始识别 功? 将关闭窗口替换为打开串口 串口关闭失败 将打开串口替换为关闭串口 串口关闭成功 串口打开过程流程图:

开始 单击开始识别 N 串口是否打开? Y 将开始识别替换 为停止识别 N 调用函数 reader.cs读取信 息 是否出现异常? Y N 尚 未添 是否添加加 是否有标签信息 Y 身身份信息 份 信 N 息 Y Y 读取是否成功? 添加身份信息 N 检测到卡片 请先打开与读写器连接的串口 显示出错信息 无法开始识别

显示信息 结束

身份信息管理流程图:

开始 身份信息是否为空? 是否修改信息? Y N N Y Y N N 添加成功 插入成功? 修改成功? 输入身份信息,将身份信息插入数据库。 添加身份信息 删除身份信息 修改身份信息 选择要删除的记录 修改身份信息,将身份信息更新到数据库。 修改失败 Y 添加失败 删除成功? 修改成功 Y N 刷新信息 删除成功 删除失败 结束 二、系统各主要功能模块

1、模块功能描述

系统总共分为四个模块,分别为串口选择功能模块、身份识别功能模块、数据库管理功能模块和身份信息管理功能模块。 1.1、串口选择模块

串口选择模块主要实现对串口的选择以及判断串口选择是否成功。串口选择模块包括了串口选择、打开串口、关闭串口的功能,在每次打开和关闭串口之后,都要判断打开或关闭串口是否成功。在串口选择中设置COM1~COM16总共16个串口提供打开,由用户自主选择;在打开串口中,打开用户所选择的串口,并且判断串口是否打开成功,当打开成功时,将“打开串口”按钮替换成“关闭串口”并提示打开成功。若打开失败,则显示打开失败信息。 1.2、身份识别功能模块

身份识别系统主要实现对卡片中身份信息的读取,首先对串口进行判断是否打开成功,若串口打开失败,则回到打开串口界面,并提示相关信息。当串口打开成功之后,调用读取卡片的函数(read.cs)读取看片信息,读取成功之后,把卡片信息显示在窗体中,如果读取失败,则返回读取界面,并显示提示信息。 1.3、数据库管理功能模块

数据库管理模块负责对数据的查询、修改、删除和添加功能。当读取卡片时,通过读取到的卡片中的信息,查询数据库中的其他信息,以提供显示,当删除、添加和修改信息时,则对数据库进行更新、插入等操作。 1.4、身份信息管理功能模块

身份信息管理功能模块实现对新信息的添加,对原有信息的删除、修改功能。首先先读取卡片,判断卡片中是否有身份信息,如果没有,则提示是否添加身份信息,如果已经存在身份信息,则能对身份信息进行修改和删除操作。添加身份信息时,需要添加每一项的身份信息,修改身份信息时,一次只能修改一条身份信息。

2、模块功能实现流程

该系统分为两个窗体来显示,分别为主窗体和身份信息管理窗体;主窗中包

含选择串口,打开串口,识别串口及身份信息管理按钮,当执行程序时,首先先通过选择串口功能进行串口的选择,当选择完毕后,点击打开串口,打开串口功能模块中先对选择串口中的值进行判断,判断选择成功之后打开串口,串口选择功能模块工作结束。

第二部分为身份识别模块,当串口打开成功之后,单击开始识别,进入开始识别功能模块,开始识别功能模块中对卡片中的信息进行读取,读取失败,则显示出错信息,读取成功,则将身份信息显示在窗体中,显示结束后,身份识别模块工作完毕。

第三部分为身份信息管理模块。此模块在新窗体中显示,单独独立。当单击身份信息管理窗体时,进入身份信息管理模块,身份信息中包含读卡,身份信息修改、删除操作,在身份信息管理系统中,先读取卡片,如果卡片中存在了原有的身份信息,则将身份信息进行显示,以提供修改和删除操作;如果没有身份信息,则显示是否添加身份信息,提供添加身份信息功能。

3、模块中主要功能函数说明

窗体1为主界面,,实现串口选择、身份信息认证等功能模块,其中主要的功能函数如下:

ShowInfo():用于输出返回的字符串;

ChangeButton(String str):当按钮框中的信息改变时,按照返回的字符串做出改变;

ShowResult():用于输出从数据库中查询返回的结果;

ClearResult(String str):用于清空窗体中各文本框中的内容;

btn_Open_Click(object sender, EventArgs e):当单击打开串口时,该函数对串口串口判断并做出相应的反应;

btn_Goto_Click(object sender, EventArgs e):当单击身份信息管理时,打开form2.cs,并在窗口中显示form2窗体;

btn_Monitor_Click(object sender, EventArgs e):当单击身份识别时,对串口进行判断,如果串口打开,则把打开串口替换成停止串口;

Monitor():读取卡片信息,判断是否读取成功,读取成功则在窗体中显示读取的信息,读取失败则返回读取页面;

窗体2中是身份信息管理的实现界面,其中实现了身份信息的添加、修改和删除等操作,其中用于实现的函数如下:

btn_OK_Click(object sender, EventArgs e):修改窗体中的信息,首先对窗口中各选项的信息进行判断,判断各选项是否填入相关信息,都填入相关信息后进行修改,并将修改的信息插入或更新到数据库中。

RefreshData():更新完信息之后,刷新窗体中显示的信息;

btn_Browse_Click(object sender, EventArgs e):修改照片信息时,从文件夹中选择照片功能的实现。

btn_Cancel_Click(object sender, EventArgs e):单击取消按键时间的发生。 ClearInfo():清空修改框中的信息,清空后实现对身份信息的添加; btn_Modify_Click(object sender, EventArgs e):对身份信息的修改; btn_Delete_Click(object sender, EventArgs e):对身份信息删除功能的实现;

三、调试记录及小结 1、 系统运行界面及结果

主界面运行截图如下图所示:

窗体2为显示修改身份信息的界面,当单击身份信息管理时,将会跳转到窗体2中,其运行截图如下所示:

2、 调试中遇到的问题及解决

(1)当选择串口进行查询时,如果选择的串口不存在或者无法打开时,则会出现如下现象:

原因是选择的串口不正确,没有将参数传给SelectBySection;

解决办法如下:添加以下判断代码,如果没有选中,给出提示,然后返回。 If(comboBox1.Selectedltem==nul)

{

MessageBox.Show(“请选择串口!”); Return;

}

(2)无法将类型“System.linq.IQueryable”隐式转换为“System.Data.Lina.Table”;

解决办法:出现这样的错误,一般是由于数据类型不一致造成的,为此应保证调用相应方法时保持和定义方法时的数据类型一致。

3、 调试小结

(1)在输入的数据身份证号码等的验证中,需要使用正则表达式。如下所示: 1.导入正则表达式名称空间。 Using System.Text.RegularExpressions; 2.定义正则表达式。

Regex r=new Regex(@”\\d{17}[\\d|X]|\\d{15}”); 3.编码进行验证

If(r.IsMatch(txtidCard.text)==false)

{MessageBox.Show(“身份证信息不正确!”);}

(2)在对关系表进行查询,返回的结果集是两个以上表中的内容时,返回的结果类型是匿名的List类型,要转换为Table类型,可以通过自定义与返回类型相同结构的类来实现转换,也可以通过使用System.Func委托,或者在存储中使用存储过程或者视图以解决。

四、课程设计总结

经过了为期两个周的RFID课程设计,利用c#实现了一个简单的身份识别认

证系统。在这次的课程设计中,尽管在读程序以及程序调试中出现了很多难题,但也使我在这次课程设计中得到了许多经验、心得和锻炼。编译程序的过程其实就是不断发现问题,解决问题的过程,就算开发软件的各项知识都学会了,但在实际开发过程中任然会遇到不少的问题需要去解决,这是我们就应该做到两点:一是查,另一个是问。通过仔细的查阅资料和询问老师以及同学,最终使问题得到解决。

其次,在这次课程设计中,通过老师的帮助,还是我学会了如何更规范的设计程序功能模块,以及画程序的流程图,通过这次课程设计我给自己学过的只是做一个总结,为以后深入学习做一个铺垫。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top