• 53.50 KB
  • 2022-05-17 13:24:12 发布

嵌入式RFID学生考勤管理系统

  • 4页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
下载文档收藏嵌入式RFID学生考勤管理系统本项目主要设计一套管理系统来解决考勤记录的人工实现,基于嵌入式系统利用RFID无线射频技术采集校园卡数据,并基于Web2.0技术设计了配套管理查询系统提供学生考勤历史数据的查询。本项目主要设计一套管理系统来解决考勤记录的人工实现,基于嵌入式系统利用RFID无线射频技术采集校园卡数据,并基于Web2.0技术设计了配套管理查询系统提供学生考勤历史数据的查询。<<隐藏窗体顶端窗体底端附件:大学生科技项目设计报告(论文)嵌入式RIFD校园卡考勤管理系统制作者制作者:胡良杰指导教师:王真星指导教师【内容摘要:本项目主要设计一套管理系统来解决考勤记录的人工实现,基于嵌入式系内容摘要】内容摘要统利用RFID无线射频技术采集校园卡数据,并基于Web2.0技术设计了配套管理查询系统提供学生考勤历史数据的查询。:【关键词】RFID无线射频,考勤记录,Web2.0关键词】一、项目背景校园学生考勤是现今日常教学过程中必不可少的一个组成部分,以往,学生的考勤工作主要都由任课教师完全承担,在上课之前几分钟或者是上课后花费几分钟的时间进行全班的点名,然后在学期末用人工的方式观察、分析学生在教学活动中的出席情况。这样做不但消耗了教学时间、也不具备灵活性。从记录考勤数据,到分析考勤记录都需要花费教师额外的时间与精力。嵌入式RFID校园卡考勤管理系统正试图以一种更快捷方便的方式解决考勤过程中的各种问题。二、系统设计校园卡考勤查询管理系统基于嵌入式技术,这样可以方便集成分布到校园中的每一个教室里。校园卡基于RFID无线射频技术,通过射频技术便可获取校园卡中的各类信息,对于校园卡考勤的应用而言,仅仅需要得到校园卡的一个唯一标志号便可完成考勤记录。1)软硬件构成和基本流程嵌入式RFID考勤管理系统的主要由硬件、软件和软硬件交互驱动程序三个部分组成。硬件部分主要建立在S3C2410为基础的平台之上,通过RFID模块读取刷卡信息,并通过韦根协议将刷卡卡号数据传输到硬件设备的一对IO口上,通过在嵌入式Linux中编写对应的驱动程序读出卡号数据,并结合Socket通讯技术,将卡号数据传输到远程服务器上。软件则主要由一个Web网站组成,主要实现简单的考勤数据记录查询。该考勤系统的基本工作流程如下:每堂课上课前学生凭各自的校园卡(基于RFID无线射频技术)刷卡后进入教室。安装于教室内的设备在接收到读卡器发送来的学生刷卡记录数据后,将数据通过Socket连接发送到远程服务器上。远程服务器有一个专门的服务器程序负责接收由嵌入式设备发起的Socket连接通讯请求。远程服务器应用程序会等待数据发送设备的Socket连接请求,一旦有一个需要发送数据的设备,该设备就主动发起Socket连接请求,服务器端则会开启一个新的线程来处理一批数据传输。接收程序在接收到数据后,将数据通过MySQL数据库的Java接口直接将数据存储到特定数据库中。教务人员或教师可以通过浏览器远程登陆基于JSP构建的考勤状况查询网站,远程查询某一堂课或某一名学生在某一段时间内的考勤情况等信息;教务人员还可以进行诸如设置课程、每堂课上课时间、应到课学生等操作。整个系统的流程如图1所示:1校园卡校园卡校园卡刷卡采集数据RFID模块嵌入式终端设备S3C2410LinuxSocket通讯数据存储考勤管理数据库远程服务器(端口12321)数据库访问考勤管理查询网站查询学生教师其他管理者图1嵌入式RFID校园卡考勤管理系统首先,各个学生持有校园卡在不同的教室,也即不同的RFID模块上进行刷卡动作,刷卡成功后RFID模块通过Wiegand-26标准协议将数据发送给嵌入式终端设备, 设备端应用程序是运行于嵌入式Linux下的后台应用程序,该程序读取RFID模块的传入信号,并将其解析后得到一个校园卡的PID号。接着,嵌入式设备通过与服务器的Socket连接将所有从RFID模块读取到的数据连同时间戳以及教室编号发送至服务器接收程序。服务器接收程序与嵌入式设备上的发送程序紧密配合,负责将接收到的数据再存储值整个系统的“数据中心”——MySQL数据库中。最后,应用的中心便建立在这个集中的数据库中,基于考勤记录数据,可以进行多方面的应用,本考勤管理查询系统实现的一个JSP网站应用,可以通过浏览器登录考勤网站进行考勤记录的多功能查询。2)考勤Web应用程序实现项目的主要应用部分在软件的实现形式与内容上,主要采用Web应用程序的方式实现查询系统的部署。Web页面结合运用了JSP技术、XHTML、JavaScript、XML和数据库等技术。存储考勤记录的数据库采用开放源代码的MySQL数据库作为考勤管理查询网站的后台数据2库。MySQL是一个开放源码的小型关系型数据库管理系统,具有体积小、速度快、总体拥有成本低等特点。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后动态生成HTML页面返回给客户端,从客户端用户的角度来看,呈现了一种在不同情况下会产生不同页面返回的动态Web页面。JSP页面按照各种功能分类进行页面组织,首先在Web根目录下有一个index.jsp表示系统首页,用作用户验证登录界面。其他所有页面必须要用户登录之后才是可见的,所有目录均位于Web应用根目录下的secure目录中,当任何用户在尚未登录的情况下直接登录secure目录下的JSP页面时,JSP页面将抛出一个页面异常,本系统将该异常重定向到了Web根目录下的error.jsp页面上,提示用户尚未登录,无法访问指定页面内容。阻止未登录用户访问受限制页面的方法比较普通的有两种,一种是使用地址过滤,另一种是使用session设置用户身份验证类,本系统使用实现相对简单而直接的后者。3)Web页面实现分类页面实现分类实现主要页面分以下几个:以学生为主要查询条件的查询页面、以课程为主要查询条件的查询页面、以教师为主条件的查询页面,另外还有分别添加学生、班级、教师的添加操作页面,此外还有一些辅助页面,如导航侧边栏、标题栏、脚注栏等,都以内嵌页面的方式嵌入在上述主要页面中。在众多系统页面中,pageTitle.jsp是secure目录下所有主要页面都包含的子页面,pageTitle.jsp是代表页面标题的内嵌页。pageFoot.jsp则是secure目录下所有主要页面都包含的代表页面页脚的内嵌页。Navigator.jsp是大部分主页面共有的一个位于页面左侧的导航栏内嵌页面。在这个页面中首先包含了如下JSP代码:
  • Youare:<%=((UserInformation)session.getAttribute("userSig")).getName()%>
  • 这段代码的作用是从当前session中取得一个叫做userSig的属性,并将它转换成org.novo.beans.UserInformation类,然后调用它的getName()方法,注意,如果用户并没有通过正常方式登录secure页面,那么userSig属性将是空的,上面这条指令将会导致一个页面异常,从而实现重定向到error.jsp的逻辑。相反地,如果用户是按照正常的流程登录到secure下的页面的,注意到实际“登录”按钮执行的是Javascript脚本函数jsActionLogon(),该脚本函数完成一个很简单的登录流程:functionjsActionLogon(){varu=$("userName").value;varp=$("password").value;vart=$("userType").value;logonRedirect();}3该函数首先将要使用到的数据内容赋值到相应的变量中,然后直接调用了另一个脚本函数logonRedirect():functionlogonRedirect(){vardata="";data+=("name="+$("userName").value+"&");data+=("password="+$("password").value+"&");data+=("type="+$("userType").value);varrequest=newRequest({"url":"proxy/logonProxy.do","data":data});request.addEvent("onSuccess",handlerLogonOK);request.addEvent("onFailure",handlerLogonFail);request.addEvent("onException",handlerLogonFail);request.send();}logonRedirect()函数实际是将刚才有jsActionLogon()函数赋值过的变量编码到data中,通过Ajax的方式发送POST 请求到服务器,请求地址为proxy/logonProxy.do。而在服务器配置文件web.xml中,地址“/proxy/logonProxy.do”定义如下:LogonProxyServletorg.novo.secure.LogonProxyLogonProxyServlet/proxy/logonProxy.do它实际指向的是org.novo.secure.LogonProxy类,这个类是扩展自HttpServlet的类,其主要的职责就是根据HTTP请求中的用户名密码内容建立一个org.novo.beans.UserInformation类,如果验证用户是可登录用户,那么org.novo.beans.UserInformation会被创建一个新的实例并绑定在当前请求的session上,否则将向请求端发出失败登录的消息。if(name!=null&&password!=null&&validate(name,password)){org.novo.beans.UserInformationuserInfo=neworg.novo.beans.UserInformation();userInfo.setName(name);userInfo.setPassword(password);request.getSession().setAttribute("userSig",userInfo);response.getWriter().print("ok");4}else{response.getWriter().print("系统尚未增加可用登录用户,请如下填写:
    "+"用户名t411982213
    "+"密码t111111
    ");}这样,一旦登录成功,用户的信息就被保存在相应session的userSig属性中,无论用户定位到secure目录下的哪个页面中,都可以正常访问了。queryStudent.jsp是一个查询特定学生某一门课的考勤记录的页面。打开该页面的初始情况如图2所示,在姓名一栏中需要输入学生姓名,或者是学生姓名的一部分,然后在时间过滤中选择将要查询的是哪一年的课程,在很大程度上缩小查询范围,在以上两项都填写完毕后点击“继续”按钮,接着就会出现一个列表框,列表框中是所有符合刚才在姓名一栏中输入的条件的学生学号,选择需要查询的学号,再一次点击“继续”按钮,接着,系统会查询你所选择的学生在所限定的学年中参与的所有课程,在列表框中显示出来,选择想要查询的那一门课程,然后再一次点击“继续”按钮,学生的这一门课程的考勤记录就将会在紧接着的一个表格中显示出来,包含四个主要字段,“上课时间”“刷卡时,间”“教室”“状态”,,,另外,当鼠标移动到“上课时间”的数据上时,也会显示出这堂课的下课时间(通常是上课时间之后的40分钟)图2学生查询如果某一节课学生旷课了,那么在“刷卡时间”一栏将显示“NA”,在“教室”一栏也显示“NA”,而在状态一栏中显示“旷课”。如果某一节课学生迟到了,那么在“刷卡时间”一栏中将会显示学生实际的刷卡时间是几时,“教室”在一栏中正常显示迟到的刷卡所在的教室,而在“状态”一栏中将会显示“迟到”。表格的构造所需的数据内容来自于向“/service/getStudentLessonRecord.do”所发送5的请求得到的回应,然后通过JavaScript函数jsQSDisplayTable将返回的XML文档呈现为表格。该函数首先获得一个id为report的元素的引用,然后分析遍历XML根节点下的所有节点,每一个节点相当于表格中的一行数据,每一个节点中的子项相当于表格中的列数据。通过newElement(‘tr’)创建tabletr元行素,通过newElement(‘td’)船舰tabletd列元素。并通过一个布尔量“color”来判定当前行是奇数行还是偶数行,奇数和偶数行将用不同的颜色进行着色来明显区分行。如果返回的数据结果中学生的刷卡记录所在的教室与该课程当前上课教室并不相符合,那么在教室一栏中将会显示出“跑错教室”的内容。实现代码如下:if(items[i].childNodes[3].firstChild.data!=items[i].childNodes[5].firstChild.data){row.grab(newElement("td",{html:"跑错教室"}));}综上,其他页面的实现方式也是采用同样的逻辑。首先,用户需要按照页面指引填写一份简单的数据表单,一步一步下来,最终Javascript脚本将会通过Ajax的方式发送请求到6服务器,由服务器Servlet接受表单数据后计算出响应结果并以XML文档的方式呈现给请求方。服务器主要承担的工作量将会是接受请求,查询数据库结果,和返回XML文档,剩下的,对于如何将XML文档用可视化的方式呈现在用户面前,是完全使用Javascript代为实现的。 整个实现通用的流程如下:1)建立XMLHttpRequest请求,向服务器发出HTTPPOST请求。2)在成功得到服务器正确响应的情况下,利用Mootools提供的脚本功能,迭代XML文档中的item元素,并为每一个item元素的子项构造单元格。3)对XML文档中的相对原始数据进行一定的计算处理,并在相应的单元格中显示相对应的计算结果(比如是否迟到的判定,是通过Javascript脚本中计算XML文档中提供的数据得到的,而不是服务器直接判定好的状态结果)。4)每处理一个item元素,就表示表格中的一行数据,切换当前行的背景颜色。5)完成表格的创建。如果可选的“下载Excel表格”或者“发送Email”被选择了,那么在服务器上会另外产生一个URL地址可以形成一份当前记录表格的Excel表格文档,和一封HTML表格方式组织的自动EMail发送到指定的邮箱地址中。7附:本项目成果正面图8侧面图9参考文献:参考文献:文献1.《Unix网络编程(第一卷:套接口API)第三版》,RichardStevens/BillFenner/AndrewW.M.Rudoff,PearsonEducation|清华大学出版社2.《MySQLcookbook(第二版),PaulDuBois,O’Reilly,电子工业出版社》3.《TomcatWeb开发及整合应用》,张洪伟,清华大学出版社4.《JSP开发详解》5.《ThinkinginJava》6.《JavaScript权威指南》,DavidFlanagan著,O’Reilly,机械工业出版社7.《Ajax模式与最佳实践》ChristianGross著,Press,李琨、,A张祖良、蔡毅、赵泽欣译,电子工业出版社8.《JavaScript网页特效实例大全》,王征编著,清华大学出版社9.《深入浅出Ajax》,夏慧军、魏雪辉编著,电子工业出版社10