版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*实践教学*XX理工大学计算机与通信学院2013年秋季学期RFID应用技术课程设计题目基于高频RFID的学生考勤系统院系: 计算机与通信学院专业: 计算机科学与技术(物联网工程方向)姓名:XXX学号:XXXXX指导老师:XXXXXX成 绩:摘要 2前言 3一、案例描述: 41.1RFID的定义 41.2 RFID系统的组成 41.3 RFID技术的基本工作原理 61.4RFID高频相关的国际标准 71.5高频(工作频率主要为13.56MHz) 8二、需求分析 8三、整体描述和实现: 91. 硬件设计 92. 软件设计 123. 程序代码 144. 运行结果 30总结 32参考文献 33摘要本次
2、课程设计主要是设计基于高频的学生考 勤系统,利用上位机的 Microsoft visual stdio 2008、Microsoft Ofice Access 2000等软件来编写学生考勤系统需要的代码, 绘制相关界面以及创建数据库。 同时,使用奥尔斯电 子科技的 RFID 综合实验系统的试验箱,使用实验模块上的高频读卡区实现对高 频卡ISO15693的识别,其中读卡区主要由 7970A, F2370, MAX3232天线等组 成。此次课程设计主要分为四步, 第一步是在上位机上绘制登陆界面、 读卡界面、 学生信息界面等,第二步是在PC机上建立数据库,并在VS中与数据库连接,第 三步是编译程序,
3、通过后与实验箱连接,烧写程序,第四步是读卡,通过读卡就 可以看见卡片上的相关信息显示在我们绘制的界面上了。 通过此次课程设计使我 加深了对单片机的理解, 明白了单片机在该系统中的作用, 并且熟悉了实验箱的 电路板。关键词:学生考勤;考勤器;RFID卡、八前言随着电子技术的发展,智能卡RFID在生活中随处可见。而射频识别卡(简 称射频卡、RFID卡)正逐渐取代传统的接触式IC卡,成为智能卡领域的新潮流。 RFID卡由于成功结合了射频识别和IC卡技术,解决了无源(卡无电池)和免接 触的难题,因此,具有磁卡和接触式IC卡不可比拟的优点。RFID卡由IC芯片、 感应天线组成,完全密封在一个标准PVC卡
4、片中,无外露部分。学生考勤系统设 计利用无线射频识别技术,实现对学生进行考勤、记录等功能。通过点名、磁卡和接触式 IC 卡的等方式对学生的到课情况进行考勤、记 录管理,既耗时又容易相互干扰;而非接触式 RFID学生考勤系统实现了利用无 线射频识别技术对学生考勤管理, 既方便快捷, 又省时。 学生考勤系统由应答器 和阅读器组成,其中应答器由标签(即卡片)构成,阅读器(读卡器)由射频卡 基站器件及其支撑电路、主控器件及其支撑电路和外围接口电路(键盘、液晶、 时钟、和串口模块)构成。一、案例描述:1.1 RFID的定义无线射频识别即RFID ( Radio Frequency IDentificat
5、ion)技术,又称电子标签、无线射频识别,是一种非接触的自动识别技术,可通过无线电讯号识别特 定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触。 它基本由三部分组成:标签(Tag)、阅读器(Reader)和天线(An te nna)1.1.1 .RFID 电子标签(Tag,或称射频标签):由芯片及置天线组成。芯片保 存有一定格式的电子数据,作为待识别物品的标识性信息,是射频识别系统真正 的数据载体。置天线用于和射频天线间进行通信。1.1.2阅读器:读取或读/写电子标签信息的设备,主要任务是控制射频模块 向标签发射读取信号,并接收标签的应答,对标签的对象标识信息进行解码,将对
6、象标识信息连带标签上其它相关信息传输到主机以供处理。1.1.3天线:标签与阅读器之间传输数据的发射、接收装置。RFID射频识别是英文Radio Freqency Identification的缩写,它是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,可工作于各种恶劣环境。RFID技术可识别高速运动物体并可同时识别多个识别卡,操作快捷方便。RFID射频识别是一种世界上较为领先的技术:第一,可以识别单个的非常具 体的物体,而不是像条形码那样只能识别一类物体;第二,其采用无线电射频, 可以透过外部材料读取数据,而条形码必须靠激光来读取信息; 第三,可以
7、同时 对多个物体进行识读,而条形码只能一个一个地读。此外,储存的信息量也非常 大。1.2 RFID系统的组成一个RFID系统通常有两个组件组成: (南贬越片”天蛭)I图1 RFID系统基本原理模型图收发器(transponder )或者标签(Tag):位于或者通过某种物理手段附加于 被识别的对象之上;讯问器(interrogator )或者阅读器(reader):取决于设计和所采用的技术, 可以是阅读或者读写设备。阅读器通常包含一个射频模块(发射器和接收器),一个控制单元和一个与收 发器的耦合单元。另外,某些阅读器还包含其他数据接口系统(RS 232, RS485,TCP/IP等),以便将数据
8、转发到其他系统。标签:表示RFID系统的实际数据载体,通常有一个耦合单元和一个电子芯片组成。标签通常不具备自身电源供应,当它不在质询器的质询围时,整体呈被动状态。它只有在质询器的质询围之才被激活。激活雷达收发器的电力通过耦合单元传输给收发器,所需的数据和时钟脉冲也是如此图3 RFID天线1.3 RFID技术的基本工作原理RFID技术的基本工作原理:电子标签与阅读器之间通过耦合元件实现射频信 号的空间(无接触)耦合、在耦合通道,根据时序关系,实现能量的传递、数据的 交换。当标签进入磁场后,接收读写器发出的射频信号,标签凭借感应电流所获 得的能量为自身供电并发送出存储在芯片中的产品信息(Passi
9、ve Tag,无源标签或被动标签),或者由标签主动发送某一频率的信号(Active Tag,有源标签 或主动标签),读写器读取信息并解码后,送至中央信息系统进行有关数据处理。/图4读写器的原理图RFID标签和读写器之间米用无线通信方式传递信息。其基本的通信方式有两 种,第一种基于电磁耦合或者电感耦合,第二种基于电磁波的反向散射耦合。1、电感耦合:变压器模型,通过空间高频交变磁场实现耦合,依据的是电磁感 应定律。图5读写过程2、电磁反向散射耦合:雷达原理模型,发射出去的电磁波,碰到目标后反射, 同时携带回目标信息,依据的是电磁波的空间传播规律。标签图6读写原理电感耦合方式一般适合于高、中、低频工
10、作的近距离射频识别系统。典型的 工作频率有:125kHz、225kHz和13. 56MHz识别作用距离小于1m典型作用 距离为1020cm电磁反向散射耦合方式一般适合于超高频、微波工作的远距 离射频识别系统。典型的工作频率有:433MHz 915MHz 2. 45GHz 5. 8GHz识别作用距离大于1m典型作用距离为310m。RFID标签与读写器之间的耦合通过天线完成,天线通常可以理解为电波传播 的天线,也指电感耦合的天线。数据在读写器和标签之间用无线方式传递, 噪声、 干扰以及失真与数据本身一样传递。 与其他通信系统相似,技术上必须保证数据 被正确传递和恢复。数据传递有同步和异步之分,在R
11、FID系统中,码流结构也要适应信道特性的要求,码流结构化过程称为信道编码。对于RFID系统,信道编码必须对用户透明,现在有各种不同的信道编码方法, 其特点也不尽相同。为 了通过空间有效传递数据,要求将数据调制在载波上,这一过程称为调制。常用 的调制方法有 ASK FSK和PSK1.4 RFID高频相关的国际标准该频率的感应器不再需要线圈进行绕制,可以通过腐蚀或者印刷的方式制作天线。感应器一般通过负载调制的方式进行工作。也就是通过感应器上的负载电阻的接通和断开促使读写器天线上的电压发生变化,实现用远距离感应器对天线电压进行振幅调制。如果人们通过数据控制负载电压的接通和断开,那么这些数据就能够从感
12、应器传输到读写器高频段射频标签目前具有全球统一 13.56MHz的工作频率。该频段的射频标签称为高频标签。是目前实际应用最多且技术最成熟的射频标签技术。 相应的国际标准:ISO/IEC 14443 A/B 近耦合IC卡,最大的读取距离为 10cm(2) ISO/IEC 15693 (兼容于 ISO/IEC 18000-3 )疏耦合 IC 卡,最大的读取距离 为 1m;ISO/IEC 18000-3 该标准定义了 13.56MHz系统的物理层,防冲撞算法和通 讯协议。;EPC C1 HF定义13.56MHz符合EPC的接口定义;(5) Ubiquitous ID其中 EPCC1 HF兼容于 IS
13、O/IEC15693,而 ISO15693兼容于 ISO18000-3 的 mode1;1.5 高频 (工作频率主要为 13.56MHz)高频下识别卡不需要绕制线圈, 可以通过印刷的方式制作天线。 识别卡一般 是负载调制的方式工作, 也就是通过识别卡的负载电阻的接通和断开促使读写器 天线上的电压发生变化, 实现远距离识别卡对天线电压进行振幅调制。 就频率而 言,高频RFID具有以下特性: 工作频率为13.56MHz,该频率的波长大概为22米。 除了金属材料外, 该频率的波长可以穿过大多数的材料, 但是往往会降低 读取距离。识别卡(感应器)需要离开金属一段距离。 该频段在全球都得到认可并没有特殊
14、的限制。 该系统具有防冲撞特性,可以同时读取多个识别卡。 可以把某些数据信息写入识别卡中。 数据传输速率比低频要快且价格不是很贵。高频RFID主要应用有:航空包裹的管理和应用、瓦斯钢瓶的管理应用、预收费系统、 酒店门锁的管理和应用、 大型会议人员通道系统、 固定资产的管理系 统、医药物流系统的管理和应用、智能货架的管理二、需求分析此次课程设计我选择奥尔斯电子科技的 RFID综合实验系统的高频模块来 完成读卡,运用了 C+勺编程方法来完成界面以及与实验箱的连接,采用 RS232 接口实现P(机与实验箱的连接,以下是我的应用程序结构图:图7流程图对于数据的存储我选用的是微软的 Access,实现对
15、卡号,学生的专业,学号等的 数据存储以及登陆时的所有用户。三、整体描述和实现:考勤系统的核心是射频卡读卡器,而射频卡读写器的关键是射频卡基站器件,该器件主要完成数据的调制、发射和射频接收以及数据解调任务。 从射频识 别卡的使用方便、交易速度快、便于维护和使用寿命较长等优点来看,射频识别 卡正在逐渐替代目前广泛使用的接触式IC卡。这里所设计的学生考勤系统实现 了方便、快捷、省时的学生考勤管理功能。1.硬件设计本统的设计主要分为两大部分,一部分是考勤器的软、硬件设计,一部分是 上位机软件的设计。考勤器体积适中,便于携带到教室等场所,由它完成对学生 的考勤。主要功能是读取学生一卡通的信息,以及做相应
16、显示、存储等处理。上 位机软件主要功能是向考勤器下传学生、 学号以及接收并保存考勤器上传的卡号 和考勤记录。采用的是基于高频的射频识别。(1)总体设计方案设计学生考勤几乎是每个学校必须而且是经常做的学生工作之一,如何简单高效的地考勤工作一直以来是很多学校都在努力解决,所以考虑如何实现简单高效 的考勤具有巨大的实际意义和价值, 鉴于此,本文提出了一种可行的方案,方案 的总体思路:目前很多学校都在使用一卡通,本系统以学生的一卡通为基础, 设 计一种读卡式考勤器,考勤器存储有学生的身份信息,学生刷卡,通过学生刷卡, 通过学生卡号来识别学生的身份,并记录刷卡时间来实现对学生的考勤, 方法简 单有效。考
17、勤器体积适中,便于携带,使用方便。(2)考勤器设计考勤器硬件设计主要构成:单片机、读卡模块、实时钟模块等(3)HF莫块图8 HF模块系统框图图9系统框图LED灯显示说明:D1:绿色,电源启动指示灯,在 430下完程序后,如果430正常运行,灯亮。D2:红色,ISO14443A协议指示灯,D3:黄色,ISO14443B协议指示灯D4:红色,ISO15693协议指示灯D5:红色,tag-it 指示灯D6 :红色,预留系统运行简要说明: :上电后,430先通过并口访问7970芯片,在没有读到卡时,程序运行在 串口读写模式,并每隔0.5s向串口发送一个“ D”,直到有写操作为止。 :当有卡读写时,针对
18、相应的卡,程序进入不同的协议中,并且点亮相应的 LED 灯。API调用说明 :上电后,配置完部寄存器,程序进入串口读写程序,可以进行人机交互。 :当读到不同协议的卡时,程序退出串口读写程序,进入相应的协议子程序 中(目前支持14443A协议和15693协议)。读完卡后,退出相应的协议子程序, 进入串口读写程序。ISO 15693第三部分通过读卡器获取指令流,读卡器采用TI trf7970读卡器芯片,开发资料参 考协议 ISO 15693, trf7970 datasheet ,参考 trf7960EVM.pdf 实现ISO 15693第 三部分指令部分,防碰撞实验,附录的CR实验;(4)仪器推
19、出低功耗的非接触式 接收器 -TRF7970ATRF7970A是仪器(TI),推出一款业界功耗最低的适用于近场通信(NFC 的非接触式短距离通信收发器。此TRF7970/收发器适用于基础设备,其电池寿命 是竞争产品的两倍,可提供功率围为1卩A120m的 8个不同的功率模式。该收发 器带有可配置的辅助软件, 以帮助开发人员更快入手, 收发器与软件通过一系列 超低功耗MS微控制器兼容。该收发器支持点对点通信,例如用于医疗设备、移 动支付以及卡仿真。它也还具有读写能力,两个晶体振荡频率(13.56MHz或27.12M 赫兹)和一个容量为128字节的“先进先出(FIFO)”缓冲器,使之能够处理大 量数
20、据的传输。TRF7970A发器符合ISO18092和ISO/IEC21481NFCRFI标准,并支持多个读 写协议。它包括符合 ISO15693, ISO18000-3, ISO14443A/B标准和 FeliCaRFID规 的专为读写器模式设计的示性软件包。TI TRF7970A 13.56MHz NFC通信系统解决方案TI公司的TRF7970用于13.56MHz RFID/NF(近场通信系统的模拟前端和 数据帧器件,可工作于三种模式之一:RFID/NFC阅读器,NFC寸等和模拟卡片模式。器件工作电压 2.7 -5.5 VDC,支持 NF(标准NFCIP-1 (ISO/IEC 18092)和
21、 NFCIP-2 (ISO/IEC 21481) ,完全集成了 ISO15693, ISO15693, ISO18000-3, ISO14443A/B, FeliCa协议处理,置的用户可配置编程选择使TRF7970适合于广 泛的应用如移动设备(平板电脑,手机等),安全配对(蓝牙,WiFi等),护照或POS 读系统,短程无线通信任务, 产品辩认或鉴定, 医疗设备, 接入控制, 数字门锁, 电子交易卡共享等。2. 软件设计在P(机上通过Microsoft Vsual Stdio 2008的MF应用程序模块设计登陆界面、读卡界面、学生信息界面该软件将自动生成相关程序代码段相关界面如图 所示:图10登
22、陆界面图11用户界面图12学员界面图13添加用户界面图14专业界面*Kr.图15信息界面图16班级界面串口昌图17读卡界面iLW-LflUUlO) v. bi.:iw :7査旧1正竿斤耳旳冋15; 55: 39:| 存tfaXJSml图18考勤界面3.程序代码下面是程序代码 :/ Attendance.cpp : 实现文件 /#include stdafx.h#include HFExample.h#include Attendance.h#include BasicExcel.hppusing namespace YExcel;#define ATTENDANCE_LIST_DATETIME
23、_IDX0#define ATTENDANCE_LIST_WEEK_IDX1#define ATTENDANCE_LIST_NAME_IDX2#define ATTENDANCE_LIST_DEPARTMENT_3IDX#define ATTENDANCE_LIST_SWORDTIME_ID4 X#define ATTENDANCE_LIST_EWORKTIME_ID5Xstatic TCHAR WeekDay6=TEXT( 周 日 ),TEXT( 周 一 ),TEXT( 周 二),TEXT(周三),TEXT(周四),TEXT(周五),TEXT(周六);/ CAttendance 对话框 IM
24、PLEMENT_DYNAMIC(CAttendance, CPropertyPage) CAttendance:CAttendance(): CPropertyPage(CAttendance:IDD)CAttendance:CAttendance()void CAttendance:DoDataExchange(CDataExchange* pDX) CPropertyPage:DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST_ATTENDANCD, _lists);void CAttendance:GetRequestList( CString
25、date1,CString time1,CString date2,CString time2 )CString dt1,dt2; dt1=date1+ +time1; dt2=date2+ +time2;theApp.getDB().GetAttendanceList(m_attendanceinfoarray,dt1,dt2);void CAttendance:GetRequestListByName( CString date1,CString time1,CString date2,CString time2,CString name )CString dt1,dt2; dt1=dat
26、e1+ +time1; dt2=date2+ +time2;theApp.getDB().GetAttendanceListByName(m_attendanceinfoarray,dt1, dt2,name);void CAttendance:GetRequestListByDepartment( CString date1,CString time1,CString date2,CString time2,CString department )CString dt1,dt2;dt1=date1+ +time1;dt2=date2+ +time2; theApp.getDB().GetAt
27、tendanceListByDepartment(m_attendanceinfoarra y,dt1,dt2,department);void CAttendance:GetRequestListByNameAndDepartment( CString date1,CString time1,CString date2,CString time2,CString name,CString department )CString dt1,dt2;dt1=date1+ +time1;dt2=date2+ +time2; theApp.getDB().GetAttendanceListByName
28、AndDepartment(m_attendancei nfoarray,dt1,dt2,name,department);BEGIN_MESSAGE_MAP(CAttendance, CPropertyPage) ON_BN_CLICKED(IDC_BTN_QUERY, &CAttendance:OnBnClickedBtnQuery) ON_BN_CLICKED(IDC_CHECK_DEPARTMENT,&CAttendance:OnBnClickedCheckDepartment) ON_BN_CLICKED(IDC_CHECK_NAME, &CAttendance:OnBnClicke
29、dCheckName) ON_BN_CLICKED(IDC_BTN_EXPORTEXCEL,&CAttendance:OnBnClickedBtnExportexcel)ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_ATTENDANCD, &CAttendance:OnLvnItemchangedListAttendancd)ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETIMEPICKER_DATEEND, &CAttendance:OnDtnDatetimechangeDatetimepickerDateend)END_MESSAGE
30、_MAP()/ CAttendance 消息处理程序BOOL CAttendance:OnInitDialog()CPropertyPage:OnInitDialog();/ TODO: 在此添加额外的初始化COleDateTime dt1(2011,1,1,8,30,0),dt3(2011,1,1,17,30,0); (CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER_STARTWORK)-SetTi me(dt1);(CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER_ENDWORK)-SetTime (dt3)
31、;_lists.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);istsn sertColu mn( ATTENDANCE_LIST_DATETIMEDX,TEXT(日期); _lists.l nsertColu mn( ATTENDANCE_LIST_WEEK_IDX,TEXT( 星期); _lists.InsertColumn(ATTENDANCE_LIST_NAME_IDX,TEXT();_lists.I nsertColu mn( ATTENDANCE_LIST_DEPARTMENT_IDX,TEXT专业);_lists.
32、I nsertColu mn( ATTENDANCE_LIST_SWORDTIMEDX,TEXT上课);_lists.I nsertColu mn( ATTENDANCE_LIST_EWORKTIMEDX,TEXT 下课); CRect rect4;_lists.GetClientRect(rect4);/获得当前客户区信息_lists.SetColumnWidth(ATTENDANCE_LIST_DATETIME_IDX,1.5*rect4.Widt h()/10); / 设置列的宽度。_lists.SetColumnWidth(ATTENDANCE_LIST_WEEK_IDX,1*rect
33、4.Width()/10);_lists.SetColumnWidth(ATTENDANCE_LIST_NAME_IDX,1*rect4.Width()/10);_lists.SetColumnWidth(ATTENDANCE_LIST_DEPARTMENT_IDX,2*rect4.Widt h()/10);_lists.SetColumnWidth(ATTENDANCE_LIST_SWORDTIME_IDX,2*rect4.Width ()/10);_lists.SetColumnWidth(ATTENDANCE_LIST_EWORKTIME_IDX,2*rect4.Width ()/10)
34、;/ 获取专业信息 theApp.getDB().GetAllDepartment(_departmentinfoarray);int i;for(i=0;iAddString(aDepa rtmentInfo.GetName();/ 获取学生信息theApp.getDB().GetAllEmployee(_employinfoarray); for(i=0;iAddString(aEmployInfo .GetName();return TRUE; / return TRUE unless you set the focus to a control/ 异常: OCX 属性页应返回 FALS
35、Evoid CAttendance:ShowInListCtrl()int i;CString t;COleDateTime dt0,dt1,dt2,dtt; /dt0: 查询起始时间 dt1: 数据库中时 间 dt2: 查询结束时间 dtt: 临时变量(CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER_DATESTART)-GetTi me(dt0);dt0.SetDateTime(dt0.GetYear(),dt0.GetMonth(),dt0.GetDay(),0,0,0);/ 只提供查询日期,相应起始时间为点(CDateTimeCtrl*)Get
36、DlgItem(IDC_DATETIMEPICKER_DATEEND)-GetTime (dt2);dt2.SetDateTime(dt2.GetYear(),dt2.GetMonth(),dt2.GetDay(),23,59,59); / 查询终止时间为点COleDateTimeSpandtsd(1,0,0,0),dtslast(0,3,0,0),dtsampm(0,12,0,0);_lists.DeleteAllItems();const int iMax=m_attendanceinfoarray.GetUpperBound(); for(i=0;i=dt0)/ & dt1dt0+dts
37、d) dt0+=dtsd;dt1=m_attendanceinfoarray.GetAt(i).GetDateTime2();_lists.InsertItem(i,m_attendanceinfoarray.GetAt(i).GetDate();_lists.SetItemText(i,ATTENDANCE_LIST_NAME_IDX,m_attendanceinfoarr ay.GetAt(i).GetName();if(dt1dt0+dtsampm)/amdtt.SetDateTime(dt1.GetYear(),dt1.GetMonth(),dt1.GetDay(),8,30,0);/
38、 记录时间在 :30 前,显示“正常”,否则显示记录时间 if(dt1dtt)t= 正常 ;elset=m_attendanceinfoarray.GetAt(i).GetTime();_lists.SetItemText(i,ATTENDANCE_LIST_EWORKTIME_IDX,t); i+;if(iiMax)break;if(dt1dt2 | iiMax) break;void CAttendance:ShowInListCtrl2()int i,j=0;CString t;COleDateTime dtdayb,dt1,dt2,dtdaye,dtt; /dt0: 查询起始时间 dt
39、1: 数据库中时间 dt2: 查询结束时间 dtt: 临时变量(CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER_DATESTART)-GetTi me(dtdayb);dtdayb.SetDateTime(dtdayb.GetYear(),dtdayb.GetMonth(),dtdayb.GetD ay(),0,0,0); / 只提供查询日期,相应起始时间为点(CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER_DATEEND)-GetTime (dt2);dt2.SetDateTime(dt2.GetYear()
40、,dt2.GetMonth(),dt2.GetDay(),23,59,59); / 查询终止时间为点 COleDateTimeSpan dtsd(1,0,0,0),dtslast(0,3,0,0),dtsampm(0,12,0,0),dtspan=dt2-dtdayb;int days=dtspan.GetTotalDays()+1; / 查询的总天数 j=0;for(i=0;idays & jm_attendanceinfoarray.GetSize();i+)ReSetQueryResultTime();SetQueryResultDate(dtdayb); dtdaye=dtdayb+d
41、tsd; dt1=m_attendanceinfoarray.GetAt(j).GetDateTime2();while(jdtdayb & dt1dtdaye)Addrecord(j);j+; if(jm_attendanceinfoarray.GetSize() dt1=m_attendanceinfoarray.GetAt(j).GetDateTime2(); dtdayb+=dtsd; ShowQueryResult2();ReSetQueryResultTime(); for(;idays;i+) SetQueryResultDate(dtdayb); dtdayb+=dtsd;Sh
42、owQueryResult2();void CAttendance:ShowQueryResult2()int i,j;CString s1,s2,s3;CDateAndTime dat;j=_lists.GetItemCount(); for(i=0;i_queryresultarray.GetSize();i+) dat.m_date=_queryresultarray.GetAt(i).GetDate(); s1=_queryresultarray.GetAt(i).GetSTime(); s2=_queryresultarray.GetAt(i).GetETime(); s3=_que
43、ryresultarray.GetAt(i).GetWeek();_lists.InsertItem(j,_queryresultarray.GetAt(i).GetDate(); _lists.SetItemText(j,ATTENDANCE_LIST_WEEK_IDX,s3);_lists.SetItemText(j,ATTENDANCE_LIST_NAME_IDX,_queryresultarray.G etAt(i).GetName();_lists.SetItemText(j,ATTENDANCE_LIST_DEPARTMENT_IDX,_queryresulta rray.GetA
44、t(i).GetDepartment();_lists.SetItemText(j,ATTENDANCE_LIST_SWORDTIME_IDX,s1); _lists.SetItemText(j,ATTENDANCE_LIST_EWORKTIME_IDX,s2); j+;/ 补课if(s3 = 周六 | s3 = 周日)_workextraarray.Add(_queryresultarray.GetAt(i);/ 正常上课时间/ 没有时间记录即为缺勤elseif(s1 = & s2 = )_absentarray.Add(_queryresultarray.GetAt(i); / 缺勤 总表
45、_employstatinfoarray.GetAt(i).m_absent.Add(dat); / 单个 学生缺勤统计表dat.m_time= 上课 ;_employstatinfoarray.GetAt(i).m_norecord.Add(dat);/ 未刷卡记录表dat.m_time= 下课 ;_employstatinfoarray.GetAt(i).m_norecord.Add(dat);/ 未刷卡记录表elseif(s1 = )dat.m_time= 上课 ; _employstatinfoarray.GetAt(i).m_norecord.Add(dat);/ 未刷卡记录表if(
46、s2 != 正常 )if(s2 = )dat.m_time= 下课 ;_employstatinfoarray.GetAt(i).m_norecord.Add(dat); / 未刷 卡记录 表else_leaveearlyarray.Add(_queryresultarray.GetAt(i); _employstatinfoarray.GetAt(i).m_leave.Add(dat);void CAttendance:SetQueryResultDate(COleDateTime _d)int i;for(i=0;i_queryresultarray.GetSize();i+)_query
47、resultarray.GetAt(i).SetDate(_d.Format(%Y-%m-%d);_queryresultarray.GetAt(i).SetWeek(WeekDay_d.GetDayOfWeek()-1);void CAttendance:ReSetQueryResultTime()int i;for(i=0;i_queryresultarray.GetSize();i+)_queryresultarray.GetAt(i).SetSTime();_queryresultarray.GetAt(i).SetETime();void CAttendance:Addrecord(
48、const int _i)int i,j,k;CString t1,t2,t3;COleDateTime dt1,dt2;CDateAndTime dat;COleDateTimeSpan dts2(0,12,0,0),dts0;t1=m_attendanceinfoarray.GetAt(_i).GetName();t2=m_attendanceinfoarray.GetAt(_i).GetDepartment();dt1=m_attendanceinfoarray.GetAt(_i).GetDateTime2(); dt2.SetDateTime(dt1.GetYear(),dt1.Get
49、Month(),dt1.GetDay(),0,0,0); dts0=dt1-dt2;for(i=0;i_queryresultarray.GetSize();i+)&if(_queryresultarray.GetAt(i).GetName() = t1)(_queryresultarray.GetAt(i).GetDepartment() = t2) dat.m_date=_queryresultarray.GetAt(i).GetDate(); dat.m_time=dt1.Format(%H:%M:%S);/ if(dts0 m_startworktime)/ _queryresulta
50、rray.GetAt(i).SetSTime(正常 );/else if(dts0 dts2)/_queryresultarray.GetAt(i).SetSTime(dt1.Format(%H:%M:%S);/_latearray.Add(_queryresultarray.GetAt(i);/ 迟到/_employstatinfoarray.GetAt(i).m_late.Add(dat);/ 单个学生迟到统计表/else if(dts0 m_endworktime)/_queryresultarray.GetAt(i).SetETime(dt1.Format(%H:%M:%S);/_le
51、aveearlyarray.Add(_queryresultarray.GetAt(i);/早退/_employstatinfoarray.GetAt(i).m_leave.Add(dat);/单个学生早退统计表/else/ _queryresultarray.GetAt(i).SetETime(正常 );/ break; /2011/08/02 13:27/ 上午if(dts0 m_startworktime) / 正常上课时间前刷卡/ 正常上课时间前,不计多次刷卡 /if(_queryresultarray.GetAt(i).GetSTime() = ) / 第一次刷卡_queryresultarray.GetAt(i).SetSTime(正常 );/else / 多次刷卡/ _employstatinfoarray.GetAt(i).
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年苏州经贸职业技术学院单招综合素质考试必刷测试卷附答案
- 2026年福建水利电力职业技术学院单招职业技能测试必刷测试卷附答案
- 2026年浙江工业大学之江学院单招职业倾向性测试题库及答案1套
- 2026年天津滨海职业学院单招职业适应性考试必刷测试卷及答案1套
- 2026年铜仁幼儿师范高等专科学校单招职业适应性考试必刷测试卷及答案1套
- 2026年云南旅游职业学院单招职业倾向性测试题库及答案1套
- 2026年贵州财经职业学院单招综合素质考试必刷测试卷及答案1套
- 2026年广东食品药品职业学院单招职业技能测试题库附答案
- 2026年河南省焦作市单招职业倾向性考试必刷测试卷附答案
- 2026年鹰潭职业技术学院单招职业倾向性测试必刷测试卷附答案
- 2025中国家庭教育服务行业发展现状及未来趋势报告
- 江苏省徐州市云龙区2024-2025学年六年级上学期语文期中试卷(含答案)
- 职业生涯规划书成长赛道
- MW农光互补光伏电站项目可行性研究报告
- 机电2023年江苏职教高考文化综合理论试卷
- 乳腺癌患者的术后护理
- 企业注销申请书模板
- 农业田间机器人课件
- 旅游政策与法规案例分析题
- 新版物业交割单
- 《汽车运用基础》考试复习题库及答案
评论
0/150
提交评论