RFID课程设计报告名称身份识别认证系统专业班级学号姓名指导教师2014.7一、系统功能(标题一,小三号,宋体,加粗)1、系统功能总体描述(标题二,四号,宋体,加粗)该系统通过RFID技术与系统相连,能从相应的卡片中读取卡片中的信息,并将读取的信息在界面中进行显示。除此之外,还能对读取的信息进行修改,删除和增添个人身份信息,以实现对身份信息的管理。当选择了串口,并且单击打开串口,显示打开成功之后,单击“开始识别”按钮,系统将会将读取的卡片中的个人身份信息显示在界面中,卡片中的信息包括标签序号、姓名、地址、身份证号、名族、性别、照片等;当单击“身份信息管理”按钮时。进入身份信息管理界面,如果选择了一张没有添加信息的卡片,则能对身份信息进行添加;如若卡片中已经有身份信息,则能对个人身份信息进行修改和删除等操作。2、系统功能模块图系统功能模块图如下所示:身份识别系统串口选择模块卡片识别模块身份信息管理模块数据库管理功能模块选择串口打开串口关闭串口读取卡片信息显示卡片信息查询身份信息插入身份信息更新身份信息识别身份信息添加身份信息修改身份信息删除身份信息3、系统流程图读取卡片过程整体流程图:NYNYNYYN开始选择串口单击打开串口是否选择串口?请选择串口串口打开是否成功?串口打开失败串口打开成功将打开串口替换为关闭串口是否关闭串口?单击开始识别在窗体中显示身份信息结束串口关闭成功?串口关闭成功将关闭窗口替换为打开串口串口关闭失败串口打开过程流程图:NYNYNYNYYN开始单击开始识别串口是否打开?请先打开与读写器连接的串口调用函数reader.cs读取信息将开始识别替换为停止识别是否出现异常?显示出错信息读取是否成功?尚未添加身份信息是否添加身份信息添加身份信息是否有标签信息无法开始识别检测到卡片显示信息结束身份信息管理流程图:YNNYYNNYYN身份信息是否为空?添加身份信息修改身份信息输入身份信息,将身份信息插入数据库。添加成功添加失败删除身份信息修改身份信息,将身份信息更新到数据库。修改成功?修改失败修改成功选择要删除的记录插入成功?删除成功?刷新信息删除成功删除失败结束是否修改信息?开始二、系统各主要功能模块1、模块功能描述系统总共分为四个模块,分别为串口选择功能模块、身份识别功能模块、数据库管理功能模块和身份信息管理功能模块。1.1、串口选择模块串口选择模块主要实现对串口的选择以及判断串口选择是否成功。串口选择模块包括了串口选择、打开串口、关闭串口的功能,在每次打开和关闭串口之后,都要判断打开或关闭串口是否成功。在串口选择中设置COM1~COM16总共16个串口提供打开,由用户自主选择;在打开串口中,打开用户所选择的串口,并且判断串口是否打开成功,当打开成功时,将“打开串口”按钮替换成“关闭串口”并提示打开成功。若打开失败,则显示打开失败信息。1.2、身份识别功能模块身份识别系统主要实现对卡片中身份信息的读取,首先对串口进行判断是否打开成功,若串口打开失败,则回到打开串口界面,并提示相关信息。当串口打开成功之后,调用读取卡片的函数(read.cs)读取看片信息,读取成功之后,把卡片信息显示在窗体中,如果读取失败,则返回读取界面,并显示提示信息。1.3、数据库管理功能模块数据库管理模块负责对数据的查询、修改、删除和添加功能。当读取卡片时,通过读取到的卡片中的信息,查询数据库中的其他信息,以提供显示,当删除、添加和修改信息时,则对数据库进行更新、插入等操作。1.4、身份信息管理功能模块身份信息管理功能模块实现对新信息的添加,对原有信息的删除、修改功能。首先先读取卡片,判断卡片中是否有身份信息,如果没有,则提示是否添加身份信息,如果已经存在身份信息,则能对身份信息进行修改和删除操作。添加身份信息时,需要添加每一项的身份信息,修改身份信息时,一次只能修改一条身份信息。2、模块功能实现流程该系统分为两个窗体来显示,分别为主窗体和身份信息管理窗体;主窗中包含选择串口,打开串口,识别串口及身份信息管理按钮,当执行程序时,首先先通过选择串口功能进行串口的选择,当选择完毕后,点击打开串口,打开串口功能模块中先对选择串口中的值进行判断,判断选择成功之后打开串口,串口选择功能模块工作结束。第二部分为身份识别模块,当串口打开成功之后,单击开始识别,进入开始识别功能模块,开始识别功能模块中对卡片中的信息进行读取,读取失败,则显示出错信息,读取成功,则将身份信息显示在窗体中,显示结束后,身份识别模块工作完毕。第三部分为身份信息管理模块。此模块在新窗体中显示,单独独立。当单击身份信息管理窗体时,进入身份信息管理模块,身份信息中包含读卡,身份信息修改、删除操作,在身份信息管理系统中,先读取卡片,如果卡片中存在了原有的身份信息,则将身份信息进行显示,以提供修改和删除操作;如果没有身份信息,则显示是否添加身份信息,提供添加身份信息功能。3、模块中主要功能函数说明窗体1为主界面,,实现串口选择、身份信息认证等功能模块,其中主要的功能函数如下:ShowInfo():用于输出返回的字符串;ChangeButton(Stringstr):当按钮框中的信息改变时,按照返回的字符串做出改变;ShowResult():用于输出从数据库中查询返回的结果;ClearResult(Stringstr):用于清空窗体中各文本框中的内容;btn_Open_Click(objectsender,EventArgse):当单击打开串口时,该函数对串口串口判断并做出相应的反应;btn_Goto_Click(objectsender,EventArgse):当单击身份信息管理时,打开form2.cs,并在窗口中显示form2窗体;btn_Monitor_Click(objectsender,EventArgse):当单击身份识别时,对串口进行判断,如果串口打开,则把打开串口替换成停止串口;Monitor():读取卡片信息,判断是否读取成功,读取成功则在窗体中显示读取的信息,读取失败则返回读取页面;窗体2中是身份信息管理的实现界面,其中实现了身份信息的添加、修改和删除等操作,其中用于实现的函数如下:btn_OK_Click(objectsender,EventArgse):修改窗体中的信息,首先对窗口中各选项的信息进行判断,判断各选项是否填入相关信息,都填入相关信息后进行修改,并将修改的信息插入或更新到数据库中。RefreshData():更新完信息之后,刷新窗体中显示的信息;btn_Browse_Click(objectsender,EventArgse):修改照片信息时,从文件夹中选择照片功能的实现。btn_Cancel_Click(objectsender,EventArgse):单击取消按键时间的发生。ClearInfo():清空修改框中的信息,清空后实现对身份信息的添加;btn_Modify_Click(objectsender,EventArgse):对身份信息的修改;btn_Delete_Click(objectsender,EventArgse):对身份信息删除功能的实现;三、调试记录及小结1、系统运行界面及结果主界面运行截图如下图所示:窗体2为显示修改身份信息的界面,当单击身份信息管理时,将会跳转到窗体2中,其运行截图如下所示:2、调试中遇到的问题及解决(1)当选择串口进行查询时,如果选择的串口不存在或者无法打开时,则会出现如下现象:原因是选择的串口不正确,没有将参数传给SelectBySection;解决办法如下:添加以下判断代码,如果没有选中,给出提示,然后返回。If(comboBox1.Selectedltem==nul){MessageBox.Show(“请选择串口!”);Return;}(2)无法将类型“System.linq.IQueryableDatalinq.RewardsView”隐式转换为“System.Data.Lina.TableDataLinq.RewardsView”;解决办法:出现这样的错误,一般是由于数据类型不一致造成的,为此应保证调用相应方法时保持和定义方法时的数据类型一致。3、调试小结(1)在输入的数据身份证号码等的验证中,需要使用正则表达式。如下所示:1.导入正则表达式名称空间。UsingSystem.Text.RegularExpressions;2.定义正则表达式。Regexr=newRegex(@”\d{17}[\d|X]|\d{15}”);3.编码进行验证If(r.IsMatch(txtidCard.text)==false){MessageBox.Show(“身份证信息不正确!”);}(2)在对关系表进行查询,返回的结果集是两个以上表中的内容时,返回的结果类型是匿名的List类型,要转换为Table类型,可以通过自定义与返回类型相同结构的类来实现转换,也可以通过使用System.Func委托,或者在存储中使用存储过程或者视图以解决。四、课程设计总结经过了为期两个周的RFID课程设计,利用c#实现了一个简单的身份识别认证系统。在这次的课程设计中,尽管在读程序以及程序调试中出现了很多难题,但也使我在这次课程设计中得到了许多经验、心得和锻炼。编译程序的过程其实就是不断发现问题,解决问题的过程,就算开发软件的各项知识都学会了,但在实际开发过程中任然会遇到不少的问题需要去解决,这是我们就应该做到两点:一是查,另一个是问。通过仔细的查阅资料和询问老师以及同学,最终使问题得到解决。其次,在这次课程设计中,通过老师的帮助,还是我学会了如何更规范的设计程序功能模块,以及画程序的流程图,通过这次课程设计我给自己学过的只是做一个总结,为以后深入学习做一个铺垫。