基于安卓及云服务平台的考勤管理系统

2021-12-08 10:33马开聪
湖北工程学院学报 2021年6期
关键词:手机号考勤姓名

钟 娟,马开聪

(安徽建筑大学 电子与信息工程学院,安徽 合肥 230601)

“无纸化办公”策略开始逐渐推广,许多事业单位、民营企业和行政机关等开始实施“无纸化办公”策略。企业使用计算机和计算机网络对数据信息进行采集、传输和存储[1-2],减少了纸张的使用,并且随着信息技术的快速发展,数据的统计和展示越来越方便和专业化。企业管理方面也逐渐开始实现全信息化管理,企业考勤作为企业工作实践中的重要组成部分,在企业工作规划中占据着重要地位[3],通过计算机管理企业的考勤相关信息可以让企业的管理效率最大化。当前的考勤系统种类繁多,大致可以分为:移动考勤、指纹考勤、打卡考勤、人工统计。现存的考勤系统只是简单罗列数据,并没有经过逻辑分析,展示不直观。考勤数据也无法与办公系统进行绑定,同时缺乏对出差及请假数据的引入,产生问题数据[4]。优秀的考勤系统可以为企业节省成本,提高考勤效率,达到企业与员工双赢。

基于Android平台的智能移动终端的快速发展,凭借其先进的硬件和软件架构,能够支持多种无线通信方式[5],鉴于此,本文采用RFID技术创建一款基于安卓及云平台的考勤管理系统,主要功能是对员工考勤和考勤情况分析和统计,便于管理人员去统计考勤信息,减少人力的耗费。系统通过信息技术手段,结合科学的管理理论、设计、开发和搭建一个员工考勤管理系统,通过设计合理的考勤管理制度,让考勤管理变得科学合理,从而提高企业管理的效率,让企业的管理不再是难题。

1 系统功能简介及可行性分析

1.1 系统功能简介

系统功能有用户考勤、添加员工信息、修改员工信息、请假、出差、查看员工出勤、查看具体出勤和设置管理员。安卓设备连接读卡器,在规定的时间段内可以刷卡实现用户考勤功能。输入管理员手机号和密码可以进入管理界面,将安卓设备连接读卡器后可以添加员工的信息,包括员工的姓名、手机号、性别等。点击进入修改员工信息界面,会显示所有已经注册的员工姓名,点击某位员工姓名可以修改这位员工的信息。点击进入请假界面,输入手机号并选择请假起始日期,可以实现请假功能。点击进入出差界面,输入手机号并选择出差起始日期,可以实现出差功能。进入员工出勤界面可以显示所有员工姓名,通过搜索框可以搜索员工姓名,点击姓名进入员工个人界面,显示该员工本月详细考勤记录(迟到次数、出差次数、请假次数)。点击进入具体出勤界面,通过选择部门、年份、月份可以查看不同部门、年份、月份的员工具体考勤情况,考勤情况可以用Excel表格的形式导出。点击进入设置管理员界面可以设置管理员,该功能只有超级用户有权限进入,对应的系统功能如图1所示。

图1 系统功能图

1.2 系统软硬件可行性分析

1.2.1 系统软件可行性分析

系统软件采用Java语言开发,借助于Android手机、 Android Studio开发工具和Bmob云服务器实现了该考勤系统。其中,Java语言具有跨平台、面向对象性、稳定和便捷的特点。Android是一种基于Linux内核的自由及开放源代码的操作系统,它开发App方便快捷、简单。Android Studio是谷歌推出的Android 集成开发工具,通过使用Android Studio,移动开发者只需要在Java中调用动态链接库中的函数就可以访问硬件资源[6-9]。开发软件的平台仅需要普通配置的电脑即可,调试可以在安卓机上实现,不需要过多的硬件设备。手机端通过Wifi与Bmob相连接,我们知道Wifi是一种短距离无线技术[10]。Bmob云数据库将移动开发者从搭建服务器中解脱出来,只需要调用接口函数,就可以实现对数据的存储和请求操作,使得开发者将更多精力花在移动应用程序的开发上。在Bmob官网上注册账号,可以创建应用云数据库,根据创建的数据库的Key来和应用程序组相匹配,从而实现应用程序与数据库的绑定,在控制台对数据库的数据进行查看和修改,十分方便。Bmob云数据库的系统功能稳定,可以保证应用程序的稳定运行。

Bmob云数据库为开发者提供了免费的云数据库资源,通过实现接口可以享受云数据库服务,具有稳定,反应迅速等特点。Bmob云数据库提供了数据存储、数据查询、数据更新、数据删除等服务,可以很好的满足考勤系统的要求,降低开发时间和成本。

1.2.2 系统硬件可行性分析

射频识别是一种基于电磁的技术,使用无线标签传输和接收数据[11]。标签通常附加在物品上,以自动识别和跟踪它们。许多研究者报告了在教育部门使用AIDC技术的情况。例如:Rădulescu和Popescu[12]探索了使用条形码技术来跟踪和管理图书馆的图书。Rios-Aguilar等[13]提出了利用基于NFC的移动商务信息系统实现班级考勤登记。Eydgahi等[14]探索了利用RFID来管理本科高年级设计项目的出勤。

本系统硬件读卡器采用射频技术RFID,型号为YW-605的高频13.56 M射频卡读写器,支持读写13.56 M各类射频IC卡,读写距离小于10 cm,供电为+5VDC,尺寸大小为110 mm*70 mm,可以通过USB连接Android设备。该读卡器可以与Android或Web开发环境较好的结合,实现打卡考勤的功能。

该RFID读卡器读写稳定,保证了考勤系统的稳定性。并且该系统开发成本低,并考虑到用户基数的庞大,具有一定的经济可行性,对应的读卡器如图2所示。

2 系统平台设计

2.1 员工考勤模块设计

员工考勤模块设计的是实现考勤功能,该模块涉及到两个数据库表分别是员工表和考勤表。员工表的属性有:员工ID、姓名、手机号、性别、年龄、所属部门。考勤表的属性有:员工ID、年、月、日、上午签到、上午签退、下午签到、下午签退。

员工使用RFID卡通过RFID读卡器来打卡,考勤都会先查询员工表看其是否已注册,若没注册则不会继续进行打卡操作,并且提示“此卡未注册”。若员工已经注册,则系统会获取当前时间与打卡时间段进行比较,若不在此时间段,则会提示“现在不是打卡时间”;若在考勤时间段,会先判断当前日期是否在考勤表中已经创建,若已经创建则根据当前时间段来修改当前时间段的考勤记录。若当前日期的考勤记录未创建,则会在考勤表中创建一条当前日期的考勤记录,具体的考勤流程图如图3所示。

图3 考勤模块流程图

2.2 管理员登录模块设计

该模块的功能是验证管理员身份,涉及到的数据库表是管理员表。管理员表的属性有姓名、手机号、密码、是否是超级用户等。管理员输入手机号和密码就可以进入管理界面,点击下方的记住密码可以保存手机号和密码,下次登录直接点击登录即可,不需要再输入手机号和密码。点击登录后,系统会从管理员表查询是否存在此员工信息,如果存在则允许进入管理界面。

2.3 添加和修改员工信息模块设计

该模块的功能是添加员工信息和修改员工信息,涉及到数据库表是员工表。添加员工信息模块需要连接RFID读卡器,通过刷卡来获取卡号,并将此卡号与该员工绑定,输入员工相关信息,点击注册,系统将输入的信息封装到员工类,向Bmob数据库提交封装后的员工类,从而在数据库中添加员工的信息,即可实现该员工的信息录入。修改员工信息模块要使用RecyclerView来展示所有的员工姓名,点击其中一位员工会通过Intent将员工信息传递给员工详细界面。会进入员工详细信息界面,系统接受并解析上一步Intent传递的信息并展示到界面上。管理员可以编辑员工的相关信息,点击修改后,系统会将数据库的信息修改。修改信息后使用广播将修改后的信息传递到展示所有员工姓名的Activity。在员工详细界面内点击删除按钮,可以将数据库中员工表的当前员工记录删除,若该员工是管理员,也会一并删除。删除操作结束后,使用广播来关闭员工姓名展示界面,并重新启动该Activity。

2.4 请假和出差模块设计

请假模块功能是向请假表中添加一条请假信息,涉及到的数据库表是请假表,该表的属性有:员工ID、请假起始日期、请假结束日期和请假类型。手机号需要管理员进行输入,请假起始日期和请假结束日期的选择,调用的Android原生的日历控件,选择日期后转为String类型的字符串;请假类型同样也是调用Android原生的选择控件,监听用户的选择并转为String类型的字符串。点击录入后,先根据手机号查找出员工ID,再向数据库的请假表中添加一条记录,实现请假功能。

出差模块的功能是向出差表中添加一条出差信息,涉及到的数据库表是出差表,该表的属性有:员工ID、出差起始日期、出差结束日期。通过输入手机号,选择出差起始日期和出差结束日期,可以生成一条出差记录,点击录入按钮,根据手机号查找员工ID,向数据库出差表中添加一条出差信息。

2.5 员工出勤模块设计

员工出勤模块的功能是查看某位员工本月的具体出勤情况,涉及到的数据库表有员工表、出勤表、出差表和请假表。进入该模块会有一个搜索框,该搜索框采用Android原生的SearchView组件。搜索框下方采用ListView来展示员工表的所有员工姓名,点击员工姓名,可以进入员工的本月详细考勤情况展示界面。在输入框中输入的信息,会与员工姓名相匹配,包含输入信息的员工姓名会被筛选出来,便于查找。

员工本月详细考勤情况展示界面有当月考勤信息(迟到次数、请假次数和出差次数)。本月考勤记录包括了请假和出差记录,按照日期排序进行展示,采用RecyclerView布局。姓名展示界面会通过广播将该员工姓名和员工ID传给本界面,员工姓名用来展示,员工ID用来向考勤表,出差表和请假表请求数据。本月迟到次数需要向考勤表查询本月所有考勤记录,再对请求到的数据进行遍历,若四次考勤有一次为空则视为缺勤。本月请假次数要向请假表请求数据,本月出差次数要向出差表请求数据。

2.6 具体出勤情况模块设计

具体出勤情况模块设计功能是根据用户选择的年份,月份和部门来导出详细的员工考勤记录,涉及到的数据库表有考勤表,请假表和出差表。首先根据用户选择的信息去向考勤表请求符合条件的数据,再根据请求到的数据中的员工ID去查找请假表和出差表的记录。使用String数组和ArrayList集合对请求到的数据进行保存,并将数据导出到Excel表格中,Excel表包含编号、姓名、日期、是否全勤、备注。编号即员工ID,若全勤则备注为“无”,若出差则备注为“出差”,若请假则备注为“请假”,其他则备注“无请假无出差”。

2.7 设置管理员模块设计

设置管理员模块只有超级管理员可以进入,涉及到的数据库表是管理员表,该表的属性有:手机号、密码、是否是超级管理员、姓名等。输入手机号点击查询可以显示该手机号对应的员工姓名,若该手机号对应员工表某位员工,则会显示该员工姓名,输入密码,点击“设置为管理员”,即可将该员工设置为管理员。

3 系统具体实现

与系统总体对应的是Android手机通过Wifi与Bmob云数据库相连接,手机与RFID读卡器相连,RFID读卡器与签到卡相互联系,再将读取的信息发送到Bmob云数据库,在Android手机端得以展示。具体的实物连接如图4和图5所示。

图4 添加员工信息

图5 员工签到截图

3.1 员工考勤模块的实现

通过读卡器提供的YowoRFIDreader.jar包提供的接口读取到卡号后,先根据卡号查询员工表中是否有此卡信息,查询sql语句。若此卡号已注册,则会根据当前日期和员工ID查询考勤表中是否存在当前日期的考勤记录,查询sql语句。若存在则会根据当前时间段来判断该修改四个打卡点中的哪一个,此处默认规定早上上班打卡时间为7:00~7:30,早上下班打卡时间为:11:00~11:30,下午上班打卡时间为:14:00~14:30,下午下班打卡时间为:18:00~18:30。创建一个考勤类attendence,根据上述时间段对attendence中对应的属性进行赋值。这里的考勤类是Attendence创建的一个对象,Attendence类是继承了BmobObject类的一个子类,用来存储考勤表的信息,由于继承了BmobObject类,所以可以调用该类的相关方法,从而实现数据上传等操作。修改考勤表要根据查询考勤表得到的记录的ObjectID来使用Bmob提供的接口中的update()函数,在Bmob提供的接口中创建考勤记录。考勤表具体情况如图6所示。

图6 考勤表部分截图

3.2 管理员登录与管理模块的实现

该模块具有保存密码的功能,界面如图7所示,该功能使用了Android中的SharedPreferences文件存储。若用户选中复选框,则代表用户需要系统保存账号、密码,若未选中表示用户不需要系统记住账号、密码。默认情况下是复选框控件CheckBox未被选中状态即值为false。当用户选中了复选框时,系统生成一个SharedPreference对象,再通过调用getBoolean()方法可以获得当前账号、密码的键值。即此时是记住密码功能,CheckBox的isChecked值为true,程序把账号和密码的值都存到SharedPreferences文件,并提交给系统。这时,若用户退出系统后重新登录,那么用户不需要再输入账号和密码,系统会自动将最后一次保存到SharedPreferences文件中的账号和密码值提取出来并显示在对应的文本框中,用户直接点击登录即可登录成功。反之,系统会调用clear()方法来清除SharedPreference中的账号和密码,从而实现不保存密码的功能。对应的管理界面如图8所示。

图7 登录界面

图8 管理员管理界

3.3 添加和修改员工信息模块的实现

添加员工信息模块由于需要将员工信息与RFID卡绑定,所以需要加载读卡器驱动,当刷卡后会将卡号显示到界面上,再输入姓名、性别、年龄、手机号和部门,创建一个Employee类,将输入的信息存进Employee类中,点击录入后会先查询员工表中是否有此卡记录,若有则提示“此卡已注册”,否则调用save()方法将员工信息添加到数据库中,添加完成后将输入框中的信息全部置为空。修改员工信息模块进入后,首先会请求员工表的所有数据,然后将员工姓名采用RecyclerView展示。点击任意一位员工,采用Intent将该员工信息传递给员工信息修改界面。

进入员工信息修改界面(见图9)后,对Intent中的数据进行解析并展示到界面上,编辑员工属性后,点击修改,首先判断该员工是否是管理员,如果是管理员,调用update()函数对管理员表中对应的数据进行修改,再调用update()函数对员工表中相对应的员工信息进行修改。修改完成后采用本地广播的方式对RecyclerView展示界面的数据进行更新。本地广播方式可以保证广播只在应用程序的内部传递广播和接收广播,避免了全局广播被任何应用程序接收而引起的安全性问题。对于系统发送广播和注册广播通过LocalBroadcastManager管理器对其管理,注册广播采用registerReceiver方法,发送广播采用sendBroadcast方法发送广播com.example.test。这条发送的广播通过系统接收器BroadcastReceiver来接收,当收到对应的广播后会接受并解析数据,然后对RecyclerView展示界面的员工信息进行更新。点击删除,判断该员工是否是管理员,如果是,调用delete()函数删除管理员表中的该员工信息,再删除员工表中的该员工信息。同时关闭当前Activity并重新启动RecyclerView界面获取最新的数据。添加签到界面图如图10所示。

图9 修改员工信息界面

图10 添加签到界面

3.4 请假和出差模块的实现

请假模块的日期选择使用了DatePickerDialog(见图11)。请假类型采用控件Spinner列表选择框,相当于弹出一个菜单供用户选择。数据全部输入完成后,点击录入,首先查找员工表中是否存在输入的手机号,如果存在则获取该手机号对应的员工ID,调用save()函数即可在请假表中添加一条请假信息。出差模块与请假模块不同的是没有请假类型,在输入好信息后,点击录入,会根据手机号去查找员工表是否存在对应数据,如果存在则调用save()函数向出差表中添加一条出差信息,如图12所示。

图11 请假界面

图12 出差界面

3.5 员工出勤模块的实现

在员工出勤界面(见图13),模块会向员工表请求所有员工的信息,然后展示员工表中所有员工的姓名,这里采用ListView来实现信息展示。在ListView的上方还有一个搜索框,搜索框控件SearchView来实现,它提供了一个输入框,监听器实时监控用户输入,当用户输入搜索信息时,可以实时进行相关操作。监听器中通过String中的contains()方法来判断员工姓名中是否包含输入的信息,如果存在就将员工姓名加入一个findList集合中,然后更新listview,显示包含输入信息的员工姓名。

点击员工姓名,采用Intent将被点击的员工信息传送到员工考勤详细界面。进入员工考勤详细界面后,根据传过来的员工ID去查找请假表和出差表,根据当前年月和员工ID去查找考勤表。由于网络请求是异步的,所以此处加入了一段加载代码,在请求和接受数据的时候页面不会发生变化,等待网络请求结束,根据数据再对页面进行更新,更新后的界面如图14所示。在对请假天数和出差天数计算时,涉及到计算天数的问题。由于数据库中请假表和出差表的日期都是“年-月-日”的格式并且类型为String类型,所以采用String类型的contains()方法可以很快的筛选出符合条件的请假或出差信息。由于不同月份的天数可能不相同,所以在计数之前要对月份进行判断。此处默认请假日期存在以下两种情况:同年月,同年不同月(请假和出差日期不超过60天),所以要分别进行处理。对于同年月直接调用自定义的daysBetween(begin,end)函数计算天数即可。对于同年不同月:先计算起始日期到月末的天数,再计算结束日期所在月的第一天到结束日期的天数,将两种天数相加即可得到总天数。

图13 员工出勤界面

图14 员工考勤详细界面

3.6 具体出勤情况模块的实现

系统可以将具体出勤数据导出到Excel表格。如图15所示,根据选择的年份和月份来向考勤表中查询数据。对请求到的数据进行遍历,如果四次打卡时间段有一次为空则会查找该员工在出差表和请假表中是否有记录。如果有,再进行日期的比较,判断考勤日期是否在请假或出差时间内,比较日期采用java的String.compareTo()方法,该方法会产生三种int类型数据,分别是正数,负数和0,由此可以判断日期的大小,当考勤日期与起始日期和结束日期使用比较的返回值一正一负时,代表该日期在请假日期或出差日期内。若缺勤且在出差表和请假表中均无记录,则备注“无请假无出差”。导出的Excel表格截图如图16所示,可以很清楚的查询每一个员工的详细考勤记录。Excel设置了五项内容,分别是:编号、姓名、日期、是否全勤和备注。这五项内容的信息采用集合和String数组存储,再遍历从考勤表请求到的数据的同时对集合和数组的对应位置进行修改。当数据都已经判断完毕,生成完整的数据数组和集合,调用Statistics的有参构造器,创建一个Statistics类,这个类包含的上述的五项属性,用来将数据写入到Excel表格中。将Statistics类加入到集合statistic中,然后传到ExcelUtil中进行Excel表格的创建和数据写入等操作。

图15 具体出勤情况界面

图16 Excel表截图

4 总结

本系统运用Android视图中有关可视化视图与非可视化视图的相关功能,包括使用前端框架进行用户界面的UI设计及UI编码,使得本系统具有良好的界面,简约美观的效果,简单的操作性等特点。通过Bmob官网提供的DataSDK,调用其内部方法实现数据上传、数据修改、数据删除、数据获取等功能。将数据存储在云数据库中,具有安全稳定的特点。将安卓设备与读卡器连接,通过读卡器读出卡号可以实现考勤功能和员工信息录入功能。登录管理员账号,可以实现对员工信息的管理和查看、录入请假信息、录入出差信息、导出考勤情况Excel表格等功能。实验测试表明应用该系统便于管理人员分析、统计考勤信息,有利于现代公司和企事业单位的发展,使考勤管理更加科学合理,使企业的管理效率最大化。

猜你喜欢
手机号考勤姓名
梁潮印笺·姓名章戢孴
钻天猴的手机号
梁潮篆痕·姓名类集
手机号的秘密
基于人脸识别技术的考勤应用研究
智能人脸识别考勤系统
浅谈电子考勤的优势及简介
神回复
浅谈用人单位的考勤管理在劳动管理中的重要位置
一年级语文上册期末测试