ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:552.26KB ,
资源ID:5515780      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5515780.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(门禁考勤软件设计与实现.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

门禁考勤软件设计与实现.docx

1、门禁考勤软件设计与实现沈阳航空航天大学课 程 设 计 报 告 课程设计名称:物联网综合课程设计 课程设计题目:13.56MHZ门禁考勤软件设计与实现 院(系):计算机学院专 业:班 级:学 号:姓 名: 指导教师: 完成日期: 第1章 总体设计方案1.1 设计原理 本课设题目名称为13.56MHZ门禁考勤软件设计与实现,在数字技术网络技术飞速发展的今天门禁技术得到了迅猛的发展。门禁系统早已超越了单纯的门道及钥匙管理,它已经逐渐发展成为一套完整的出入管理系统。它在工作环境安全、人事考勤管理等行政管理工作中发挥着巨大的作用。需要刷卡进行考勤管理的门禁系统,门禁卡在发放最终用户使用前,经由系统管理员

2、设置,确定可使用区域及用户权限,用户使用门禁卡刷卡进入管理区域,无门禁卡或权限未开通用户,不能进入管理区域。正是在这一应用背景下,本课设设计了一套基于13.56MHZ 的RFID 技术的智能门禁考勤管理系统。RFID 技术是一种非接触的自动识别技术。该技术的原理主要是利用射频信号和空间耦合的传输属性,从而能够对物体进行自动识别。RFID 技术在门禁考勤上发挥了很大的作用。卡读卡器以固定频率向外发出电磁波,在此设计中频率是 13.56MHZ,当感应卡进入读卡器电磁波辐射范围内时,会触发感应卡上的线圈,产生电流并触发感应卡上的天线向读卡器发射一个信号,该信号带有卡片信息,读卡器将电平信号转换成数字

3、序号,以韦根协议传送给就地控制器,就地控制器将信息上传给上层控制器,最终上传给门禁服务器,门禁服务器将卡号与数据库内的信息进行比对,从而得到全部的卡片信息。RFID 系统主要由电子标签、RFID 读写器和天线三部分构成。每张门禁卡的RFID 标签都是唯一的电子标签,其内部信息需要用EEPROM 进行存储卡的各项信息;而RFID 读写器由RFID 控制器和RFID 天线构成,读写器主要用来读取和写入RFID 标签信息;而天线的作用就是用来传递RFID 读写器和RFID 标签之间的信息信号。1.2 设计思路根据13.56MHZ门禁考勤软件的原理,可以将该考勤管理软件分为以下几个部分:刷卡识别、信息

4、管理。刷卡识别:该功能可以利用13.56MHZ电子标签卡实现考勤识别,该识别功能主要分为两步:接收读卡器串口数据(如图1.1所示)、解析卡的数据(如图1.2所示)。 图1.1 接收读卡器串口数据框图 图1.2 解析卡的数据框图信息管理:由数据库包含的用户表和考勤日志表功能可以实现添加、删除或修改门禁卡信息。门禁考勤软件系统功能结构框图如图1.3所示: 图1.3 门禁考勤软件系统功能结构框图1.3 设计环境1.软件环境(1)QT是一个多平台的C+图形应用程序应用框架,QT是完全面向对象的,很容易扩展,并且允许真正的组件编程。QT Creator可以实现代码的查看、编辑、界面的查看、以图形化的方式

5、编辑、修改、编译等工作;甚至在PC环境下还可以对应用程序进行调试。调试QT Creator还是一个跨平台的工具,它支持包括Linux、Mac OS X 以及 Windows在内的多种操作系统平台,使得不同的开发工作者可以在不同的开发平台下共享代码或协同工作。(2)超级终端:Windows自带的超级终端可以在PC端使用串口通信来对实验箱进行控制,将编译生成的文件下载到实验箱上并运行。2.硬件环境物联网多网技术综合教学开发平台B版(以下简称实验箱),重在研究不同网络在物联网中的各种应用,包含RFID技术、Zigbee、BlueTooth、Wifi、GPRS等各种数据通信方式,可应用于物联网专业教学

6、、项目开发等方向。该系统聚集了传感器网络、RFID射频、WIFI无线网、GPRS通讯、蓝牙技术、二维码扫描等物联网相关技术平台,涉及技术比较广泛。实验箱结构如图1.4所示。功能特点: 实验箱提供了全面的开发工具和配套资料,最大程度的激发学生兴趣,巩固学习效果,方便了学习和应用。该平台的特色是:实验箱将模拟电子、数字电子、电路设计、信号处理、传感器原理与检测、单片机技术、RFID技术、BlueTooth技术、Wifi技术、Zigbee通信、GPRS通信、嵌入式技术等相关知识融会贯通,涵盖了当前物联网行业最热门最尖端的技术,实现了多网融合,让学生可以灵活应用各科知识,发挥创新能力。实验箱为高校老师

7、和学生们提供当前最受欢迎的嵌入式技术。学生通过实践能够熟悉嵌入式开发的流程,掌握相关软件和调试工具的使用方法。采用源码开放的Linux操作系统采用源代码开放的Linux操作系统。图1.4 实验箱实物图老师和学生不仅可以阅读Linux系统的源码,而且可以自己配置和修改部分代码,定制个性操作系统。由于Linux相关的网络资料、书本资料很丰富,因此在学习或开发过程中如果遇到问题,就可以在相关论坛得到帮助,缩短技术攻关的时间,提高学习或工作效率。实验箱具有一键还原功能,通过该功能在做完实验后,可将实验箱恢复到初始状态,方便管理节约检查配置时间。第2章 详细设计方案2.1 顶层方案图的设计与实现顶层方案

8、图实现13.56MHZ门禁考勤软件的逻辑功能。在Linux系统下的Qt软件中将该代码编译,再将编译好的文件从Linux中复制到Windows系统下。在Windows系统下需要使用串口通信软件来对实验箱进行控制。通常情况下,使用Windows 系统自带的“超级终端”工具即可。在超级终端中,执行命令“ipconfig eth0 -i 192.168.87.130 -m 255.255.255.0 -g 192.168.87.1”,即可为实验箱手动配置IP 地址,如图 2.1 所示。图 2.1 手动配置实验箱的IP 地址其中,-i 后面的参数是实验箱的IP 地址;-m 后面的参数是子网掩码;-g 后

9、面的参数是网关地址。如果不需要网关,可以将 -g 和其后面的参数省略。 设置完成之后,需要执行“service network restart”命令重启网络服务,使设置生效。需要注意的是,实验箱的IP 地址需要设置为与电脑同一个网段,例如,在本例中,电脑的IP 地址为“192.168.87.1/255.255.255.0”,而实验箱的IP 地址为“192.168.87.130/255.255.255.0”。打开“我的电脑”,在地址栏中输入ftp:/开发板的IP地址,在超级终端中执行命令“chmod +x ”,为文件增加可执行权限。最后执行“./”命令,即可运行13.56MHZ 门禁考勤软件程序

10、。2.2 功能模块的设计与实现该13.56MHZ门禁考勤软件由刷卡识别和信息管理两个部分组成。信息管理模块将信息录入后才可以进行刷卡识别。信息管理模块还可以进行考勤信息的添加、修改和删除。刷卡识别模块可以通过13.56MHZ电子标签实现考勤管理,具体通过电子标签的id号进行对门禁卡的识别。2.2.1 信息管理功能的实现该门禁考勤管理的实现主要是在Qt中搭建了一个考勤系统管理的界面,再通过ManageWidget这个类来实现具体的信息管理功能(1) 门禁考勤管理的界面如下图2 .2所示 图2.2 门禁考勤管理的界面(2)具体的实现过程 在ManageWidget中定义了7个类,分别为:onCar

11、dReaded(const QString &cardid)、updateUserTable()、updateLogTable()、on_addBtn_clicked()、on_delBtn_clicked()、on_modifyBtn_clicked()、on_refreshBtn_clicked()。分别实现了信息的添加、修改、删除、更新等功能。具体的实现过程如下所示:ManageWidget:ManageWidget(QWidget *parent) : QWidget(parent), ui(new Ui:ManageWidget), usrEditDlg(new UserEditDi

12、alog) ui-setupUi(this); updateUserTable();ManageWidget:ManageWidget() delete ui;void ManageWidget:onCardReaded(const QString &cardid) usrEditDlg-setCardId(cardid);void ManageWidget:updateUserTable() /用户的更新 ui-userTable-clear(); DBCard c; if(c.first() QTreeWidgetItem *item; do item = new QTreeWidgetI

13、tem(ui-userTable); item-setText(0, QString:number(c.id(); item-setText(1, c.cardid(); item-setText(2, c.name(); while(c.next(); void ManageWidget:updateLogTable() ui-logTable-clear(); DBLog l; if(l.first() QTreeWidgetItem *item; do item = new QTreeWidgetItem(ui-logTable); item-setText(0, QString:num

14、ber(l.id(); item-setText(1, l.date().toString(yyyy-MM-dd hh:mm:ss); item-setText(2, l.cardid(); while(l.next(); void ManageWidget:on_addBtn_clicked() /添加信息 if(!usrEditDlg-isHidden() return; int currentRow = ui-logTable-currentIndex().row(); qDebug()log table selected index: 0) QTreeWidgetItem *item

15、= ui-logTable-currentItem(); usrEditDlg-setCardId(item-text(2); usrEditDlg-setName(); else usrEditDlg-setCardId(); usrEditDlg-setName(); if(usrEditDlg-exec() = QDialog:Rejected) return; if(usrEditDlg-cardId().isEmpty() QMessageBox:warning(this, tr(Warning), tr(Card ID cant be empty!); return; if(usr

16、EditDlg-name().isEmpty() QMessageBox:warning(this, tr(Warning), tr(User Name cant be empty!); return; DBCard:addCard(usrEditDlg-cardId(), usrEditDlg-name(); updateUserTable();void ManageWidget:on_delBtn_clicked() /删除信息 QList selItems = ui-userTable-selectedItems(); while(selItems.count() QTreeWidget

17、Item *item = selItems.first(); DBCard:delCard(item-text(1); delete item; selItems.removeFirst(); void ManageWidget:on_modifyBtn_clicked() /修改信息 QList selItems = ui-userTable-selectedItems(); if(selItems.count() QTreeWidgetItem *item = selItems.first(); if(!usrEditDlg-isHidden() return; usrEditDlg-se

18、tCardId(item-text(1); usrEditDlg-setName(item-text(2); if(usrEditDlg-exec() = QDialog:Rejected) return; DBCard:updateName(usrEditDlg-cardId(), usrEditDlg-name(); updateUserTable(); void ManageWidget:on_refreshBtn_clicked() /刷新 updateLogTable();void ManageWidget:on_pushButton_clicked() /删除login卡的记录 Q

19、List logItems = ui-logTable-selectedItems(); while(logItems.count() QTreeWidgetItem *item = logItems.first(); DBCard:delLogCard(item-text(2); /删除当前cardid delete item; logItems.removeFirst(); 2.2.2 刷卡识别功能的实现刷卡功能的实现主要是在Qt中搭建了一个刷卡显示信息的界面,刷卡时显示卡号和与之关联的姓名,再通过ClockInWidget这个类来实现具体的刷卡识别功能(1) 刷卡显示界面如下图2.3所示

20、 图2.3 刷卡显示界面图(2)具体实现过程在ClockInWidget类中定义了6个函数:ClockInWidget(QWidget *parent)、ClockInWidget()、updateTime()、updateDateTime()、onCardReaded(const QString &cardid)、on_pushButton_clicked()。分别实现了类的构造、日期的更新、卡的读取、刷卡事件的响应等功能。具体的实现过程如下:ClockInWidget:ClockInWidget(QWidget *parent) : /ClockInWidget类的构造 QWidget(p

21、arent), ui(new Ui:widget) ui-setupUi(this); updateDateTime(); timer = new QTimer(this); timer-setInterval(1000); timer-setSingleShot(false); connect(timer, SIGNAL(timeout(), this, SLOT(updateTime(); timer-start();ClockInWidget:ClockInWidget() delete timer; delete ui;void ClockInWidget:updateTime() Q

22、DateTime d = QDateTime:currentDateTime(); ui-secondNumber-display(d.time().second(); if(d.time().second() = 0) ui-minuteLabel-motionToNumber(d.time().minute(); if(d.time().minute() = 0) ui-hourLabel-motionToNumber(d.time().hour(); if(d.time().hour() = 0) ui-dayNumber-display(d.date().day(); if(d.dat

23、e().day() = 1) ui-monthNumber-display(d.date().month(); if(d.date().month() = 1) ui-yearNumber-display(d.date().year(); void ClockInWidget:updateDateTime() /更新日期 QDateTime d = QDateTime:currentDateTime(); ui-yearNumber-display(d.date().year(); ui-monthNumber-display(d.date().month(); ui-dayNumber-di

24、splay(d.date().day(); ui-hourLabel-motionToNumber(d.time().hour(); ui-minuteLabel-motionToNumber(d.time().minute(); ui-secondNumber-display(d.time().second();void ClockInWidget:onCardReaded(const QString &cardid) QString name = DBCard:findName(cardid); ui-cardIdEdit-setText(cardid); ui-nameEdit-setT

25、ext(name.isEmpty() ? tr(No such person!) : name); /清理读卡状态字符显示 ui-labelScan-setText(Scanning card:+cardid); DBLog:addLog(cardid);void ClockInWidget:on_pushButton_clicked() / 启动扫描卡的过程 ui-cardIdEdit-clear(); ui-nameEdit-clear(); ui-labelScan-setText(Scanning card.); MainWidget:rfidIEEE14443-getCardId()

26、; 第3章 编程下载与硬件测试3.1 编程下载在Linux系统下的Qt软件中将本软件代码编译,再将编译好的文件从Linux中复制到Windows系统下。在Windows系统下需要使用串口通信软件来对实验箱进行控制。通常情况下,使用Windows 系统自带的“超级终端”工具即可。在超级终端中设定好开发板的IP地址,如图3.1所示。将编译好的程序下载到该IP地址对应的文件夹中,即完成了下载过程。 图3.1 手动配置试验箱的IP地址其中,-i后是试验箱的IP地址,-m后面的参数是子网掩码,-g后面的参数是网关地址。并且,实验箱的IP地址设置要与电脑的在同一网段。设置完成后,执行“service ne

27、twork restart”命令重启网络服务,使设置生效。3.2 硬件测试及结果分析1.利用物联网多网技术综合开发平台实现门禁卡的识别和信息管理功能。在超级终端中为Attendance 文件增加可执行权限,并运行它如图3.2所示: 图3.2 运行Attendance 程序2.程序运行之后,可以在LCD 上看到图3.3所示的界面: 图3.3 Attendance主界面3.“Clock in”界面为刷卡界面,在此界面下,刷卡时会显示卡号和与之关联的姓名,如果该卡没有记录,则Name栏将显示“No shch person”,如图3.4所示: 图3.4 刷卡无效时的界面4.在“Manage”页面中,可

28、以对用户信息进行管理,并可以查看考勤记录,如图3.5所示:图3.5 Manage界面5. 点击“Add”可以打开添加用户界面,如图3.6所示: 图3.6 添加用户界面6. 添加用户之后,再次回到“Clock in”界面,此时刷卡将会显示用户名,如图 3.7 所示: 图3.7 刷卡有效时的效果参考文献1 单承赣.射频识别(RFID)原理与应用M.北京:电子工业出版社,20122 物联网多网技术综合开发平台实验指导书M.北京:凌阳科技有限公司,20133 熊茂华等.嵌入式Linux实时操作系统及应用编程M.北京:清华大学出版社,20114 厦华.无线通信模块设计与物联网应用开发M.北京:电子工业出

29、版社,20115 多网综合开发平台B版使用说明书M.北京:凌阳科技有限公司,20136 周华.射频识别RFID技术原理与应用实例M.北京:人民邮政出版社,2008(12) 附 录(关键部分程序清单)#include UserEditDialog.h#include ui_UserEditDialog.h#include ClockInWidget.h#include ui_ClockInWidget.h#include MainWidget.h#include ui_MainWidget.h#include rotatenumberlabel.h#include #include UserEditDialog:UserEditDialog(QWidget *parent) : QDialog(parent), ui(new Ui:UserEditDialog) ui-setupUi(this); ui-sftKeypad-changeRecver(ui-nameEdit

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1