李涵,康平
(北京信息科技大学理学院,北京100192)
随着公司规模不断扩大、员工数量不断增长,人事部门的办公压力也在增加。以前的年假管理模式随着人员的增加,效率也明显降低,费时费力的年假管理模式已不再适用于当前的管理。为了公司能有效的管理员工的年假,减少管理人员的工作任务量,方便操作,减少管理成本,同时提高信息的安全性以及可利用性[1-3],提出本课题,力求完成以上目标。
本课题框架采用Sping、Struts2和MyBatis,数据库为MySQL,服务器选用tomcat,页面采用httl,并结合JavaScript、jQuery和 easyUI插件[4-6]进行页面效果渲染。系统由登录/退出模块、修改个人密码模块、个人年假信息模块、员工管理模块、管理员管理模块和日志管理模块等六部分构成。具备如下功能:
1)用户管理模块:进行用户的新增、登录、管理等工作,根据用户角色不同要进行权限限制。
2)年假信息管理模块:实现员工或管理员对年假信息的增删改查操作。
3)日志管理模块:包括日志信息的自动记录、查看等操作。
为便于公司员工查询自己的年假信息,员工年假管理系统根据权限分为两部分:员工权限和管理员权限。
员工权限下,只拥有查看登录员工年假信息和修改登录员工密码[7-8]两个功能。查看年假信息界面除了包括个人信息、年假总天数、已用天数、可用天数等信息外,还包括增假记录和休假记录。增假记录是每次管理员给员工增加年假天数时的记录,内容包括增假周期(指增加的天数属于哪一段时间)、备注和增加天数。休假记录包括休假日期、备注和休假天数。
管理员权限下包含4个模块,分别是个人密码管理模块、员工管理模块、管理员管理模块和日志记录模块。“个人密码管理模块”负责修改当前管理员登录密码。“员工管理模块”中包含按条件查询记录、添加员工、查看员工信息、编辑员工信息、清空当前年假天数、初始化登录密码、添加请假记录、查看请假记录、编辑请假记录、添加增假记录、查看增假记录、编辑增假记录。“管理员管理模块”中包含初始化登录密码、添加管理员、查看管理员和删除管理员。“日志记录模块”具有按条件查询日志功能。
除以上两个角色权限包含的功能外,还有公共的登录/退出模块。通过该模块可以登录或退出本系统,并对用户进行权限管理。整个系统功能模块图如图1所示。
图1 系统模块图
系统使用PowerDesigner进行数据库设计[9-11],共5张数据表,分别是员工信息表、增假记录表、休假记录表、管理员信息表和日志记录表。
本系统采用角色权限控制,共分为两种角色:管理员和普通员工,所以管理员和普通员工分别对应一张数据库表。每个员工要有员工编号,员工编号在表中设为主键自增,避免重复。员工还有姓名、登录密码、员工状态(在职和离职)、入职时间、年假开始时间(社保起始缴纳时间)、年假可用天数、已拥有天数、年假总天数、创建时间和修改时间等信息,这些信息构成了员工表的所有字段。如图2所示。
图2 员工信息表
管理员和员工很相似,但比员工少了很多字段。管理员只需要主键id(自增)、姓名、登录密码、管理员状态(是否被删除)、创建时间和修改时间等信息,这些信息构成了管理员表,管理员表与其他表无关联,没有主外键关系。如图3所示。
图3 管理员信息表
考虑到员工和假期为一对多的关系,要创建一张休假信息表,记录所有员工的休假信息。休假信息表中首先要包含的是员工编号,这样才能把员工和休假信息绑定[12-13]。其次是休假的天数和休假的时间范围。然后是对于休假的备注信息。另外表中还要有主键、创建时间和修改时间等信息。以上信息构成了休假信息表,如图4所示。
图4 休假信息表
员工年假的获得需要通过管理员手动添加,每隔一段时间,员工就会获得一部分年假天数,也就是前文中的“当前年假天数”。对于这些增假信息,也需要建立一张增假信息表。与请假信息类似,增假信息要与员工绑定,所以首先要有员工编号。然后是对应的增假天数及增假周期。当然还有备注、主键id、创建时间和修改时间等信息。以上信息构成了增假信息表,如图5所示。
图5 增假信息表
为了确保系统的安全,避免人为操作破坏数据[14-16],系统会将所有操作数据库的信息记录成日志,便于管理员查阅。这些日志信息同样需要存储到一张表中,这张表由主键id、员工编号、操作内容、操作人和创建时间等信息组成,并给这张表命名为日志记录表。因为日志一旦生成便不会修改,所以不需要修改时间字段。如图6所示。
图6 日志记录表
系统根据功能主要分为6个模块,分别是:登录/退出模块、修改个人密码模块、个人年假信息模块、员工管理模块、管理员管理模块和日志查询模块。
1)登录/退出模块:管理员和普通员工均有此功能,属于公共模块。该模块负责鉴别用户身份,并允许用户安全登录或退出系统。
2)修改个人密码模块:管理员和普通员工均有此功能,属于公共模块。该模块允许用户随时修改自己的登陆密码,密码要求必须是数字和字母的组合,符合要求的密码都会经过MD5加密存储在数据库中。
3)个人年假信息模块:此模块属于员工权限才可访问。员工登录后,系统弹出信息展示页面,展示内容为该员工的个人信息、休假信息和增假信息。该界面只能查看,没有任何修改操作。
4)员工管理模块:员工管理模块包含对员工信息的处理,以及增减年假的处理。此模块属于管理员权限才可访问,管理员登录后,可以根据状态和姓名查询员工(模糊查询)。当有新员工进入公司时,系统提供添加新员工功能,保证新员工正常享有年假。
公司发放年假不是一次性发放,而是隔一段时间发放一次,所以需要定期给员工增加年假天数。系统提供增加年假天数功能,保证管理员灵活增加员工年假天数。
当员工申请使用年假,人事部门审批后,可由管理员在系统中添加相关休假信息。
5)管理员管理模块:管理员管理模块下,支持增添管理员、查看管理员以及初始化管理员密码功能。查询条件为管理员姓名,采用模糊搜索,只显示未删除管理员。结果中显示两列,分别为管理员和相关操作。
6)日志管理模块:日志管理模块负责记录所有操作数据库的行为,例如增删员工、增删假期等操作,均会通过系统记录在数据库中,避免误操作或人为破坏造成无法查询,保证所有数据操作行为有据可查,提高系统安全性。在日志管理模块中可以对所有日志进行查询,查询条件为操作人和日期范围。
在浏览器地址栏中输入系统地址,跳转到系统首页后,可以进行登录操作,如果输入内容不合法,会有异常提示。当成功登录系统后,系统根据登录页面所选角色跳转至对应的欢迎页面,在首页右上角点击“点击退出”,则会退出系统。
打开浏览器,在地址栏输入系统地址,跳转至系统登录页,输入用户名和密码,跳转至系统首页,点击“个人管理”可以修改个人登录密码信息,如图7所示。
图7 个人管理页面
管理员登录后,点击“休假管理”,弹出休假管理页面。在搜索框中输入员工姓名,选择员工状态,系统可以根据状态和姓名查询员工(模糊查询)。点击“添加员工”按钮后,弹出添加员工界面,界面中包含员工编号、员工姓名、员工状态、当前年假天数、年假总天数、入职时间和年假开始时间。输入的信息中,员工编号不能与已存在的编号重复;员工状态分为在职和离职,默认为在职;入职时间和年假开始时间采用时间控件输入,精确到日。初始密码采用默认值,且经过MD5加密后存入数据库,保证数据的安全性。点击“保存”,若保存成功则提示“保存成功”否则提示“保存失败”;点击“取消”将退出添加界面。其他界面“保存”提示与此相同。添加员工成功,后台会自动记录相关日志。
输入相应信息,“当前年假天数”大于“年假总天数”,以及“年假开始时间”小于“入职时间”时,窗口显示错误信息,如图8所示。
图8 添加员工输入错误
将信息修改为正确值,点击“保存”,弹出成功提示,如图9所示。
图9 添加员工
在“增假记录”列下,点击“添加”,弹出添加年假增加记录窗口,可以添加增假天数和对应的增假周期及备注,如图10所示。
在请假记录列下面找到目标员工,点击“添加”,弹出添加年假请假记录窗口,窗口中包含日期范围、年假使用天数和备注。日期范围、年假使用天数不能为空;日期范围精确到日。年假使用天数为下拉框选择,由0.5开始,增长间隔0.5,至年假可用天数结束。
图10 添加年假增假记录
在日志管理模块中可以对所有日志进行查询。查询条件为操作人和日期范围。操作人采用模糊搜索;日期范围分为开始时间和结束时间,不输入即为全部,只输入开始时间,则查询范围为开始时间至今,只输入结束时间,则查询范围为系统记录第一条日志的日期到结束时间。查询结果包含操作时间、操作人和操作内容,默认查询十条。
点击个人年假信息,弹出个人年假信息页面,页面中显示个人信息、增假信息和请假信息等,如图11所示。
图11 个人年假信息
本论文主要阐述了企业员工年假管理系统所关联的信息。系统由登录/退出模块、修改个人密码模块、个人年假信息模块、员工管理模块、管理员管理模块和日志管理模块等6部分构成。采用的技术为Spring、Struts2、MyBatis、session等。系统运行效果良好,支持设计的所有功能,在可用性良好的前提下,保证了系统的健壮性和扩展性。
[1]郝春雨,郑志荣.Java 7程序设计入门与提高[M].北京:清华大学出版社,2015.
[2]宋涛,王洪鑫,徐庆增.J2EE平台标准下的SPRING 3.0轻量级框架技术概述[J],通讯世界,2015(12):306-307.
[3]杨旭.J2EE企业级开发Struts2+Spring+Hibernate整合技术[M].北京:清华大学出版社,2016.
[4]王珊,萨师煊.数据库系统概论[M].5版.北京:高等教育出版社,2014.
[5]Benjamin J.Evans,David Flanagan.Java in a Nutshell[M].America:O'Reilly Media,2014.
[6]赵其国,李伟.J2EE企业项目实战——Struts2+Hibernate+Spring[M].北京:清华大学出版社,2015.
[7]宋欣洋,基于J2EE技术的财务项目管理系统的研究[J].自动化与仪器仪表,2016(8):155-156.
[8]李唯,程永恒.Java EE轻量级框架应用开发教程[M].北京:人民邮电出版社,2016.
[9]刘广.基于J2EE的网上药店系统分析与设计[J].信息系统工程,2016(6):36-37.
[10]舒然.J2EE应用系统数据库连接加密方法初探[J].金融科技时代,2016(7):40-43.
[11]李吟龙.基于J2EE技术的高速公路物流管理系统 [J].电子设计工程,2016(10):79-82.
[12]屈雪花.办公自动化系统的设计与实现[J].信息系统工程,2013(12):40-41.
[13]张亚昕.基于J2EE网上考试系统的设计与实现[J].电子设计工程,2013(2):40-42.
[14]黄锋,吴华瑞.基于J2EE应用的SQL注入分析与防范[J].计算机工程与设计,2012(12):3767-3771.
[15]查凯,方勇.基于标识的SQL注入攻击防御方法[J].信息安全与通信保密,2011(6):54-55.
[16]汪涛.基于J2EE架构的环境监控系统设计[J].电脑知识与技术,2012(5):203-204.