摘 要
我国科学技术的发展,带动了计算机技术的迭代发展。近几年以来,线上办公是目前企业里面都在追求的主要目标,特别是2020年疫情发生以来,这种管理系统既可以提高管理效率,也符合时代的要求。企业办公方式也是需要根据企业的情况,进行适当的调整更新的。
传统的企业办公方式还是依靠大量的纸张记录数据或者就是依靠大量的人力来进行日常的办公环境的支持。当企业规模扩大之后,如果还是之前那种方式进行管理,那么工作效率将会异常的低下。面对这样的情况,开发一套办公OA系统迫在眉睫。通过系统设计,结合实际的需求分析,必须要满足企业员工跟管理员的实际要求。用户需要满足的功能必须是查看考勤、请假、工资等查询,然后管理员需要统筹全局,在权限配置上,需要最高的权限,比如企业公告信息的发布、员工管理的响应及操作等。通过这样的灵活设计,可以更好的达到整体的实际需求。
本系统技术上采用较为常用的SSM框架进行代码的实现。在整个设计的过程中,首先需要充分保证系统代码能够很好的可读、功能上的实用性、后续开发能够更好的扩展以及页面能够简洁等特点,以便更好的达到实际的开发预期目标。
关键词:办公OA;JAVA;SSM;Mysql
一、绪论
(一)选题背景
近几年来,企业信息化建设,是目前各个企业来说急需解决的头等大事。这是提升企业综合竞争力,可以降低运营成本最直接的方法。就拿现在来说,科学技术变化真的很快了,但是在企业日常办公这一领域还是很单一,都不愿意开发一套自己的办公系统,但是关于“无纸化”办公的报道多次在新闻上提到,很多企业管理者蠢蠢欲动,却又不知道如何进行改变目前的情况。如何根据目前企业里面的情况,结合具体的要求,能够比较完满的实现企业的办公,是企业现在需要解决的问题。在过去日常办公中,需要面对大量的数据信息,传统的办公方式,通过纸质的方式进行记录信息,后来直到出现计算机,将纸质记录的信息通过表格的形式记录在电脑上面,这种方式比较普通而且依赖环境的因素很大。
作为计算机专业的学生,想开发一套办公OA系统来解决上述问题。通过系统的实现与部署之后,能够更好的为员工提供便捷的方式进行日常办公,能够让日常的办公效率增加,可以直接线上实现查看相关的信息以及进行日常办公的需要;作为企业管理员来说,它对公司日常的办公情况,可以更好的通过系统进行操作以及查看。所以总的来说,开发办公OA系统给企业的价值意义是很大的,因为它方便了管理员跟员工,可以更好的通过系统进行工作的开展。
(二)国内外研究
就目前来说国外对办公技术的研究和探索一直是领先的地位,从20世纪50年代初开始计算,办公OA系统首先是在美国和日本开始兴起,最初的话只有电子数据的记录功能,在60年代左右的时间被信息系统所取代,70年代后期办公OA才形成为综合性的技术,直到80年代后期左右,办公OA技术在世界上快速发展[11],许多著名的软件公司都跻身市场,90年代以后,大量的公司投入人力、物力去进行研究,OA系统同ERP以及CRM有效融合,成为其主要的发展方向,其中IMB公司推出一系列标准化的方案,带动了整体OA技术的发展。
在我国的话,起步还是较晚,时间上是从上个世纪80年代到今天。整个办公一体化的研究实现了四个比较重要的发展阶段,理论上的重大进步一起算起来的话。第一代办公系统的标志性体现是在上个世纪80年代以办公套件为主,实现了日常数据的统计等内容。第二代标志性体现是目前广为熟知的协同办公技术。国内很好的OA厂商有用友、金蝶、蓝凌等,还有一些规模较小的OA厂商,比如通达科技[15]。
(三)研究目标与主要研究内容
本课题是基于SSM开发的办公OA系统,能够实现的是办公上的功能该有的有,页面上的效果比较简洁,满足目前企业里面的办公实际需求。
目前企业里面的传统办公方式还是依靠纸张进行数据的记录,这样数据的保存不是很方便。日常较常用的办公工具来说的,熟知的office来说是多数人所熟悉的,在技术上相对来说成熟的软件很少人有所知道。本选题将通过技术手段实现办公系统的设计与实现,让企业日常办公更加高效。
具体的详细内容的介绍,将在本论文以下的各个章节进行说明阐述:
一、绪论。介绍了此次课题的研究背景、最新的国内外的研究状况、本课题实际的研究的目标与课题上主要的研究内容。
二、系统实现中的关键技术。根据本课题编码设计上所用到的相关技术进行说明。
三、系统的需求分析。根据实际的用户需求进行详细的分析,然后是针对课题的功能的要求分析的和非功能需求进行说明阐述。
四、系统的总体设计。针对系统的功能上的设计,需要什么样的功能还有就是需要什么数据库表进行设计。
五、系统详细设计与实现。系统功能设计完成之后,进行系统的详细编码实现。
六、系统测试。根据功能设计,进行针对性的测试。
七、总结。对于此次选题以及论文的撰写做介绍归纳。
二、系统实现中的关键技术
(一)MySQL数据库介绍
MySQL是一个关系数据库系统,用于管理的数据系统的中的数据。对于用户来了说,它是一个流行且的开放的数据库。每个数据库的都有自己的数据的操作方式,如MySQL数据库和Oracle数据库,如图2-1所示。
图2-1 JDBC访问数据库
本次设计主要使用DBCP很好的的JDBC数据库很好的连接池。每一次打开数据库都需就是要大量的时就是间,如果就是所有的使用者都要求打开自己的连接,对于网络就是应用来说负载是很大的。
(二)SSM框架的介绍
SSM框架是由三大基本框架组成,它们分别是Java语言的Spring框架、SpringMVC框架 和Mybatis框架。标准的SSM框架有四层,分别是dao层(mapper),service层,controller层和View层。使用spring的框架以此来实现业务对象管理,使用spring MVC框架来就是负责请求的转发和视图管理,mybatis作为数据对了技术象的持久化引擎。
(三)JSP技术的介绍
JSP技术本身是一种脚本语言,但它的功能是十分强大的,因为它可以使用所有的JAVA类。当它与JavaBeans 类进行结合时,它可以使显示逻辑和内容分开,这就极大的方便了员工的需求。所以就便于的对程序进行维护。1999年,Sun微系统公司正式推出了JSP技术,Servlet组件封装。所有的脚本均在服务器端运行,JSP引擎会针对客户端所 提交的申请这是一种动态技术,是基于整个JAVA体系和JavaServlet提出的。也是本系统设计的核心技术之一。并且由JavaBean和Servlet组件封装。所有的脚本均在服务器端运行,JSP引擎会针对客户端所 提交的申请进行术,这是一种动态技术,是基于整个JAVA体系和JavaServlet提出的,是具有普遍适用性解释,然后生成脚本程序和JSP标识,然后通过HTML/XML页面将结果反馈给浏览器。因此,开发人员亲自设计最终页面的格式和HTML/XML标识时,完全可以使用JSP技术[13]。
三、系统的需求分析
(一)系统用户需求分析
(1)企业里面员工角色的需求
企业里面的员工在登录页,登录成功之后可以实现在线针对企业管理员发布的公司公告信息的查看、日常办公中的办公设备的申请、每天实现上下班的打卡操作等其他操作。
(2)管理员的需求
企业里面的管理员是系统里面的最高权限的用户角色,它是可以看到所有的用户信息,还有就是对办公设备等信息进行管理,除去对各个功能模块进行基本的操作之后,还具有对某些功能审核的操作,
(二)系统功能要求
该系统主要包括办公OA系统的登录的主界面、企业里面员工的使用界面、企业里面的管理员界面。系统里面各部分的主要功能如下说明:
(1) 办公OA系统的登录主界面:这里主要是企业里面的管理员跟企业里面的员工进行访问系统进行登录的界面,需要输入自己角色信息对应的用户名、密码信息,点击登录即可访问。
(2) 员工界面:便于用户日常的办公操作,比如可以查看自己上个月的工资多少,也可以在该界面进行请假或者办公设备的申请操作。
(3) 管理员界面:用户管理员的操作,比如对入职来的员工,信息的录入,还有公司公告信息的发布,还有就是新购买的办公信息进行添加等相关操作。
(三)系统的非功能需求
程序的易读性、可维护性、可拓展性关乎着系统的后续发展能力与扩展能力,所以必须在系统实现的编码上也应该要有一定的要求。首先,应该需要知道企业里面的管理员界面跟企业里面的用户的界面必须进行数据上的交互。应该保障用户在操作系统的时候,页面上的响应速度、整体的安全性、还有就是性能上的可靠性等也会很直接的影响用户的使用,所以在必须提高系统性能,从多个方面进行性能的提升。良好的数据结构、数据库设计能给程序节省更多的资源开销,减少计算压力,提高效率。
综上所述,本文提出的办公OA系统需要满足以下非功能性要求。
(1)系统编码要求
主应用的命名:主应用名称应由项目负责人确定,一个能完整表达系统意义的英文字符串就可以了,包括应用对象名、应用所在库名、项目名和可执行文件,都必须是这个名称的统一用法。如图3-1程序目录图所示。
图3-1 程序目录图
(2)系统界面要求
随着系统的使用越来越广泛,系统的界面效果也被人们所重视,页面不好的话,用户的使用频率来说也会降低。因此在系统设计上的要求来说就是站在使用者的角度进行考虑,就可以了,如图3-2系统界面图所示。
图3-2 系统界面图
(3)系统性能需求
①时间经济性。无论是逻辑还是物理上的规划都要优化,使系统运行速度快,反应时间短。
②可靠性。系统使用过程中可以适应各种环境。
③可维护性。系统部署上线之后,可以很好的对他进行维护。
(4)系统数据库要求
①表格设计合理,没有冗余数据;
②表及字段的命名采用英文小写,加下划线,与实体类命名容易区分;
③表的主键、外键、索引都需要明确用意;
④接口与后端逻辑的连接要可靠。
四、系统的总体设计
(一)系统的总体结构设计
该系统在用户角色的设计上有两大角色,一个是企业里面的管理员角色,一个是企业里面的员工角色。这样系统的设计,使得系统的总体结构更加明显。用户的大部分功能主要是查看的作用,比如自己的个人信息、上个月的工资情况、还有就是目前公司有一些什么样的办公设备,同时,员工还可以通过系统进行上下班的考勤打卡、办公设备的申请等操作。管理层方面的话,通过这个系统可以审核员工的请假信息,还可以将员工信息以及办公设备信息进行录入添加等操作,如图4-1所示
图4-1 系统功能模块图
(二)各模块功能设计
(1)系统的显示主要有三个页面:办公OA系统登录主界面、用户(企业员工)界面、管理员界面。
(2)角色类型的选择:用户访问到登录页之后,输入用户名、密码之后可以选择对应的角色,比如你是员工就选择员工角色。
(3)员工主界面可以实现个人信息的查询、公司公告的查询、办公设备信息查询、工资情况查询等。
(4)管理员主界面主要功能分为系统的公告的信息管理、公司里面办公设备分类信息的管理、公司里面的办公设备进行管理,可以使用对应的功能,通过功能实现相应的添加、查询、修改、删除等操作。
(三)数据库设计
每个功能对应的数据库都是区分了的,当使用对应的模块的时候,就会对对应的功能模块进行查询连接获取。本次课题的办公OA系统的流程如图4-2所示:
图4-2 系统数据流程图
员工管理实体E-R图,如图4-3所示。
图4-3 员工管理E-R图
办公设备管理E-R图,如图4-4所示。
图4-4 办公设备管理E-R图
数据库设计是系统设计里面比较重要的一个环节,因为系统里面各个业务模块数据需要保存就需要针对系统的数据库进行设计,因此数据库在软件设计中具有特别很大的作用。就拿我的们熟悉的MySQL数据库来说,由于本身的话是具有操作简单以及本身的话界面友好的等诸多的特点,因此来说,它具有较大的使用群体。本系统的数据库的设计最终考虑是采用MySQL数据库,下面将分别给出本次系统里面主要的数据库表做进一步的概要说明,如表4-1至表4-11所示。
表4-1 办公设备表(bangongshebei)
列名 数据类型 长度 允许为空 说明
id bigint 20 否 主键(唯一)
addtime timestamp 否 创建时间
shebeibianhao varchar 200 否 设备编号
shebeiname varchar 200 否 设备名字
shebeifenlei varchar 200 否 设备分类
shebeitupian varchar 200 否 设备图片
guge varchar 200 否 规格
pinpai varchar 200 否 品牌
shuliang int 11 否 数量
xiangqing longtext 否 详情
表4-2 公告管理表(gonggaoguanli)
列名 数据类型 长度 允许为空 说明
id bigint 20 否 主键(唯一)
addtime timestamp 否 创建时间
gonggaobiaoti varchar 200 否 公告标题
gonggaoleixing varchar 200 否 公告类型
tupian varchar 200 否 图片
neirong longtext 否 内容
faburiqi date 否 发布日期
表4-3 设备分类表(shebeifenlei)
列名 数据类型 长度 允许为空 说明
id bigint 20 否 主键(唯一)
addtime timestamp 否 创建时间
fenlei varchar 200 否 分类
表4-4 设备申请表(shebeishenqing)
列名 数据类型 长度 允许为空 说明
id bigint 20 否 主键(唯一)
addtime timestamp 否 创建时间
bianhao varchar 200 否 设备编号
biaoti varchar 200 否 申请标题
Shebeiname varchar 200 否 设备名称
shuliang int 11 否 数量
shenqingshuliang int 11 否 申请数量
shenqingneirong longtext 否 申请内容
shenqingriqi date 否 申请日期
guihairiqi date 否 归还日期
beizhu varchat 200 否 备注
shenqingfujian varchar 200 否 申请附件
yuangonggonghao varchar 200 否 员工工号
yuangongxingming varchar 200 否 员工姓名
bumen varchar 200 否 部门
zhiwei varchar 200 否 职位
sfsh varchar 200 否 是否审核
shhf longtext 否 审核回复
表4-5 管理员表(user)
列名 数据类型 长度 允许为空 说明
id bigint 20 否 主键(唯一)
addtime timestamp 否 创建时间
username varchar 200 否 用户名
password varchar 200 否 密码
role varchar 200 否 角色
表4-6 员工表(yuangong)
列名 数据类型 长度 允许为空 说明
id bigint 20 否 主键(唯一)
addtime timestamp 否 创建时间
yuangonggonghao varchar 200 否 员工工号
yuangong varchar 200 否 员工姓名
mim varchar 200 否 密码
xinbie varchar 200 否 性别
touxiang varchar 200 否 头像
zhiwei varchar 200 否 职位
lianxidianhua varchar 200 否 联系电话
jiatingzhuzhi varchar 200 否 家庭住址
表4-7 员工工资表(yuangonggongzi)
列名 数据类型 长度 允许为空 说明
id bigint 20 否 主键(唯一)
addtime timestamp 否 创建时间
gongzibianhao varchar 200 否 工资编号
gongzimingcheng varchar 200 否 工资名称
yuefen varchar 200 否 月份
nianfen int 11 否 年份
yuangonggonghao varchar 200 否 员工工号
yuangongxingming varchar 200 否 员工姓名
bumen varchar 200 否 部门
zhiwei varchar 200 否 职位
dixin int 11 否 底薪
jixiao int 11 否 绩效
butie int 11 否 补贴
jiangli int 11 否 奖励
jiabangongzi int 11 否 加班工资
wuxianyijin int 11 否 五险一金
kaoqinkoukuan int 11 否 考勤扣款
qitakoukuan int 11 否 其他扣款
shifagongzi int 11 否 实发工资
beizhu varchat 200 否 备注
表4-8 员工健康表(yuangongjiankang)
列名 数据类型 长度 允许为空 说明
id bigint 20 否 主键(唯一)
addtime timestamp 否 创建时间
yuangonggonghao varchar 200 否 员工工号
yuangongxingming varchar 200 否 员工姓名
tiwen varchar 200 否 体温
shifoubushi varchar 200 否 是否不适
shifoujiuyi varchar 200 否 是否就医
beizhu varchat 200 否 备注
dengjiriqi date 否 登记日期
sfsh varchar 200 否 是否审核
shhf longtext 否 审核回复
表4-9 员工考勤表(yuangongkaoqin)
列名 数据类型 长度 允许为空 说明
id bigint 20 否 主键(唯一)
addtime timestamp 否 创建时间
kaoqinbianhao varchar 200 否 考勤编号
kaoqinmingcheng varchar 200 否 考勤名称
kaoqinleixing varchar 200 否 考勤类型
dakashijian datetime 否 打卡时间
beizhu varchat 200 否 备注
yuangonggonghao varchar 200 否 员工工号
yuangongxingming varchar 200 否 员工姓名
bumen varchar 200 否 部门
zhiwei varchar 200 否 职位
lianxidianhua varchar 200 否 联系电话
sfsh varchar 200 否 是否审核
shhf longtext 否 审核回复
表4-10 员工留言表(yuangongliuyan)
列名 数据类型 长度 允许为空 说明
id bigint 20 否 主键(唯一)
addtime timestamp 否 创建时间
liuyanbiaoti varchar 200 否 留言标题
liuyanneirong longtext 否 留言内容
liuyanriqi date 否 留言日期
beizhu varchat 200 否 备注
yuangonggonghao varchar 200 否 员工工号
yuangongxingming varchar 200 否 员工姓名
bumen varchar 200 否 部门
zhiwei varchar 200 否 职位
lianxidianhua varchar 200 否 联系电话
sfsh varchar 200 否 是否审核
shhf longtext 否 审核回复
表4-11 员工请假表(yuangongqingjia)
列名 数据类型 长度 允许为空 说明
id bigint 20 否 主键(唯一)
addtime timestamp 否 创建时间
qingjiabianhao varchar 200 否 请假编号
qingjiabiaoti varchar 200 否 请假标题
qingjianeirong longtext 否 请假内容
qingjiashijian date 否 请假时间
beizhu varchat 200 否 备注
qingjiafujian varchat 200 否 请假附件
bumen varchar 200 否 部门
zhiwei varchar 200 否 职位
lianxidianhua varchar 200 否 联系电话
sfsh varchar 200 否 是否审核
shhf longtext 否 审核回复
五、系统详细设计与实现
系统开发的工作主要是集中在业务逻辑和技术设计上,系统的详细设计上要承接前面的内容,将技术的设计转化为实际的实现。后台釆用技术 SSM框架,前台使用技术为JSP技术,数据库使用Mysql作为系统业务数据的存储。
(一)系统构成图
办公OA系统开发系统的结构图5-1所示:
图5-1 系统构成图
由上面的系统构成图可知系统主要包括以下几部分:
(1)员工:企业员工对系统的登录功能、企业员工针对自己账号的个人信息查看,员工可以针对企业里面的公告信息进行查看、针对日常办公所需的办公设备进行查看、每天上下班的话企业员工需要进行考勤打卡,每个月的上班情况企业员工可以进行工资的查看等;
(2)管理员:主要是针对目前企业里面的员工信息进行有效的管理,比如删除员工信息,修改现有保存完成的员工基本信息,查询现有在职的员工信息等操作。
(二)系统详细功能设计
1、登录模块
在办公OA系统主界面中,可以进行管理员角色的登录和员工角色的登录,就是将企业员工企业里面的管理员输入的用户名、密码信息跟数据库里面的数据进行比对,如果有该数据的话,则直接访问通过。反之如说用户名为空或者是密码不正确,则会提示账号或密码不正确,通过这样的逻辑实现了用户的登录校验。其中,系统登录模块的具体操作的流程图,如图5-2所示;登录模块的界面运行效果图,如图5-3所示。
图5-2 登录模块的操作流程图
图5-3 系统登录模块的界面效果图
登录相关的逻辑代码:
@IgnoreAutsh
@PostMappinsg(value = “/login”)
publisc R login(String username, String password, String captcha, HttpServlsetRequest request) {
UserEntityusser=usserSesrvice.selectOne(newEntityWrapper().eq(“username”, ussername));
if(user==nsull || !usser.getPassword().equals(password)) {
return R.errsor(“账号或密码不正确”);
}
Stringtosken=tokenService.genserateToken(user.getId(),username, “ussers”, usser.getRole());
retsusrn R.osk().psut(“toksen”, token);
}
当企业里面的员工访问到登录页的时候,通过输入用户名、密码信息点击登录就可以进行访问,就会进入到员工的使用界面。界面员工角色下对应的功能有主页、个人中心、公司公告管理、办公设备管理等功能模块可以使用,员工角色的主界面效果如图5-4所示。
图5-4 员工角色主界面
2、修改密码模块
通过修改密码页面,填入相应的信息之后,点击页面上面的提交按钮就可以将密码信息进行修改。实现方法是通过后台的restPass方法实现业务罗德重置,然后通过页面设计进行实现,实现如图5-5所示。
图5-5 修改密码模块的界面
核心代码如下所示:
@IgnoreAuth
@RequestMapping(value = “/resetPass”)
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper().eq(“username”, username));
if(user==null) {
return R.error(“账号不存在”);
}
user.setPassword(“123456”);
userService.update(user,null);
return R.ok(“密码已重置为:123456”);
}
3、个人信息模块
企业员工可以通过个人信息功能自己角色下的员工账号的用户名、员工的头像、所处的部门、所处的职位、员工的联系电话、员工的家庭住址等信息,进行查看或者是修改的操作,该模块主要还是通过JSP技术进行页面的实现,input标签进行输入信息,然后通过$进行页面的传值操作,后台的话是detail方法根据id作为主键查询用户的个人信息,因此来实现个人信息的更新。如图5-6所示。
图5-6 个人信息界面
核心代码如下所示:
@RequestMapping(“/detail/{id}”)
public R detail(@PathVariable(“id”) String id){
YuangongEntity yuangong = yuangongService.selectById(id);
return R.ok().put(“data”, yuangong);
}
4、公司公告管理模块
员工登录账号进去之后,可以查看管理员发布的公司公告信息,以便更好的了解公司的公告信息,员工可以通过功能查看到具体的公告信息内容。公司公告的实现是通过后台的list方法进行数据的查询获取之后,页面效果的话是通过JSP技术进行渲染出来的,通过BootStrap模板引擎。实现页面的效果,具体如图5-7所示。
图5-7 公司公告管理界面
核心代码如下所示:
@IgnoreAuth
@RequestMapping(“/list”)
publicRlist(@RequestParamMap<String,Object> params,GongsigonggaoEntity gongsigonggao, HttpServletRequest request){
EntityWrapperew=newEntityWrapper();
PageUtils page = gongsigonggaoService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, gongsigonggao), params), params));
request.setAttribute(“data”, page);
return R.ok().put(“data”, page);
}
5、办公设备管理模块
办公设备管理:员工通过账号登录进去之后,通过办公设备管理可以查看设备编号以及设备的名称等其他信息,看到自己办公需要的可以点击设备申请,可以查看每个办公设备的基本信息,后台通过方法查到数据之后,将数据返回到前台页面,通过前端的li标签,进行页面字段的显示实现,如图5-8所示。
图5-8 办公设备管理界面图
核心代码如下所示:
@RequestMapping(“/detail/{id}”)
public R detail(@PathVariable(“id”) String id){
ShebeifenleiEntity shebeifenlei = shebeifenleiService.selectById(id);
return R.ok().put(“data”, shebeifenlei);
}
6、员工考勤管理
员工每天上班需要打卡进行考勤,点击这个功能可以进行添加考勤以及查看考勤编号等相关信息,还可以查看历史考勤记录数据,后台list方法拿到值之后,将数据返回到前台页面,该模块页面是通过前端的div标签实现页面,然后通过$进行页面值的获取,如图5-9所示。
图5-9 员工考勤管理界面图
核心代码如下所示:
@RequestMapping(“/list”)
publicR list(@RequestParam Map<String, Object> params,YuangongkaoqinEntity yuangongkaoqin, HttpServletRequest request){
EntityWrapperew=newEntityWrapper();
PageUtils page = yuangongkaoqinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuangongkaoqin), params), params));
request.setAttribute(“data”, page);
return R.ok().put(“data”, page);
}
7、员工工资管理
员工可以通过这个功能查看自己上个月的工资明细,员工工资列表可以看到自己的工资单号,工资是几月的工资,自己的职位、部门信息等信息,还可以查看历史工资记录数据,后台拿到数据之后,将数据实现分页列表展示,返回到员工刚界面进行展示,如图5-10所示。
图5-10 员工工资管理界面图
核心代码如下所示:
@RequestMapping(“/list”)
public R list(@RequestParam Map<String, Object> params,YuangonggongziEntity yuangonggongzi, HttpServletRequest request){
EntityWrapper ew = new EntityWrapper();
PageUtils page = yuangonggongziService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuangonggongzi), params), params));
request.setAttribute(“data”, page);
return R.ok().put(“data”, page);
}
8、员工健康管理
员工通过这个功能添加自己当天的健康状况,可以看到自己的体温信息、是否有不适,是否就医,这样让企业随时都能够掌握员工的健康信息,还具有查询之前自己健康信息的权限,实现上是通过后台先拿到数据进行分页实现,再将数据返回到前台,使用list方法进行展示,如图5-11所示。
图5-11 员工健康管理界面图
核心代码如下所示:
@RequestMapping(“/lists”)
public R list( YuangongjiankangEntity yuangongjiankang){
EntityWrapper ew = new EntityWrapper();
ew.allEq(MPUtil.allEQMapPre(yuangongjiankang,“yuangongjiankang”));
returnR.ok().put(“data”,yuangongjiankangService.selectListView(ew));
}
@RequestMapping(“/list”)
publicRlist(@RequestParamMap<String,Object>params,YuangongjiankangEntity yuangongjiankang, HttpServletRequest request){
EntityWrapperew=newEntityWrapper();
PageUtils page = yuangongjiankangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuangongjiankang), params), params));
request.setAttribute(“data”, page);
return R.ok().put(“data”, page);
}
9、员工请假管理
员工在企业里面上班如果遇到请假,就可以在这里进行员工请假,需要进行请假内容的填写、请假的时间填写、请假的附件上传等操作,还可以查看自己之前请假的事项,实现原理是员工新增请假信息,点击新增按钮,填写相关数据之后,保存之后,数据会通过add方法返回到前台,进行数据的展示,如图5-12所示。
图5-12 员工请假管理界面图
核心代码如下所示:
@RequestMapping(“/add”)
public R add(@RequestBody YuangongqingjiaEntity yuangongqingjia, HttpServletRequest request){
yuangongqingjia.setId(newDate().getTime()+newDouble(Math.floor(Math.random()*1000)).longValue());
yuangongqingjiaService.insert(yuangongqingjia);
return R.ok();
}
10、管理员公告管理模块
公告管理:员工在公告管理看到的有关企业的一些日常公告信息,是管理员在这个功能模块下进行发布的,初次之外,管理员还可以对之前发布的公告信息进行修改或者是删除信息,实现上是通过后台控制层里面的page方法进行相应的数据进行数据的查询获取,然后通过pageUtil实现数据的分页展示,如图5-13所示。
图5-13 公告管理界面效果图
核心代码如下所示:
@RequestMapping(“/page”)
publicRpage(@RequestParamMap<String,Object>params,GongsigonggaoEntity gongsigonggao, HttpServletRequest request){
EntityWrapperew=newEntityWrapper();
PageUtilspage=gongsigonggaoService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, gongsigonggao), params), params));
request.setAttribute(“data”, page);
return R.ok().put(“data”, page);
}
11、设备分类管理
管理员需要添加公司办公设备的类型信息,便于员工通过账号查阅到设备分类信息,还可以进行修改或删除操作,控制层的方法是先从实体类拿到字段信息,然后获取service层拿到的数据信息,分页实现好了之后,再通过list实现在页面的数据遍历,如图5-14所示。
图5-14 设备分类管理界面图
核心代码如下所示:
@RequestsMapping(“/psage”)
publicRpagse(@RequestParamMap<String,sObject> params,ShebeifensleiEntsityshebeifenlei,HttpSservletRequest request){
EntityWrapperew=newEntityWrapper();
PageUtilspasge=shebeifenleiService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shebeifenlei), params), params));
request.ssetAttribute(“data”, page);
return R.ok().put(“data”, page);
}
@RequestMapping(“/lists”)
public R list( ShebeifenleiEntity shebeifenlei){
EntityWrapperew=newEntityWrapper<ShebeifenleiEntity();
ew.allEq(MPUtil.allEQMapPre( shebeifenlei, “shebeifenlei”));
return R.ok().put(“data”, shebeifenleiService.selectListView(ew));
}
12、员工管理
管理员当新员工入职之后,可以将他们的姓名、联系电话等信息进行添加,还可以对该员工的工资进行添加,除了这些之外,管理员还可以针对已有的企业员工信息进行修改、删除、查询等操作,先获取员工的详细信息之后,然后进行分页处理,实现分页的数据列表展示,实现逻辑上通过add、info等方法实现页面的各个菜单按钮的实现,如图5-15所示。
图5-15 员工管理界面图
核心代码如下所示:
@RequestMapping(“/lists”)
public R list( YuangongEntity yuangong){
EntityWrapper ew = new EntityWrapper();
ew.allEq(MPUtil.allEQMapPre( yuangong, “yuangong”));
return R.ok().put(“data”, yuangongService.selectListView(ew));
}
@RequestMapping(“/query”)
public R query(YuangongEntity yuangong){
EntityWrapper< YuangongEntity> ew = new EntityWrapper< YuangongEntity>();
ew.allEq(MPUtil.allEQMapPre( yuangong, “yuangong”));
YuangongView yuangongView = yuangongService.selectView(ew);
return R.ok(“查询员工成功”).put(“data”, yuangongView);
}
@RequestMapping(“/info/{id}”)
public R info(@PathVariable(“id”) String id){
YuangongEntity yuangong = yuangongService.selectById(id);
return R.ok().put(“data”, yuangong);
}
@RequestMapping(“/detail/{id}”)
public R detail(@PathVariable(“id”) String id){
YuangongEntity yuangong = yuangongService.selectById(id);
return R.ok().put(“data”, yuangong);
}
@RequestMapping(“/save”)
public R save(@RequestBody YuangongEntity yuangong, HttpServletRequest request){
yuangong.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
YuangongEntity user = yuangongService.selectOne(new EntityWrapper().eq(“yuangonggonghao”, yuangong.getYuangonggonghao()));
if(user!=null) {
return R.error(“用户已存在”);
}
yuangong.setId(new Date().getTime());
yuangongService.insert(yuangong);
return R.ok();}
@RequestMapping(“/add”)
public R add(@RequestBody YuangongEntity yuangong, HttpServletRequest request){
yuangong.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(yuangong);
YuangongEntity user = yuangongSer
13、办公设备管理
管理员可以对办公设备进行添加,比如设备的名称信息还有设备的分类信息,设备的规格信息、品牌信息等进行添加,进行修改或删除操作,通过后端代码list方法,拿到实体类的字段信息,获取service层的数据,进行数据的列表展示,如图5-16所示。
图5-16 办公设备管理界面图
核心代码如下所示:
@RequestMapping(“/lists”)
public R list( BangongshebeiEntity bangongshebei){
EntityWrsapperew=newEntityWrapsper();
ew.allEq(MPUtil.allEQMaspPre(bangongshebei,“bangongshebei”));
returnR.ok().put(“data”, bangosngshebeiService.selectListView(ew));
}
14、员工考勤管理
这个模块主要是针对员工的考勤进行审核,相当于对考勤信息进行确认、修改或删除操作,实现原理是员工在页面考勤的数据新增,通过page方法进行数据的获取,实现分页展示。如图5-17所示。
图5-17 员工考勤管理界面图
核心代码如下所示:
@RequestMapping(“/page”)
public R page(@RequestParam Map<String, Object> params,YuangongkaoqinEntity yuangongkaoqin, HttpServletRequest request){
String tableName = request.getSession().getAttribute(“tableName”).toString();
if(tableName.equals(“yuangong”)) { yuangongkaoqin.setYuangonggonghao((String)request.getSession().getAttribute(“username”));
}
EntityWrapperew=newEntityWrapper();
PageUtils page = yuangongkaoqinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuangongkaoqin), params), params));
request.setAttribute(“data”, page);
return R.ok().put(“data”, page);
}
15、员工工资管理
管理员通过这个功能可以查看每个员工的工资明细,进行修改或删除操作,管理员在员工管理工资添加按钮加入工资信息之后,yuangonggongzicontroller类获取到数据之后,通过list方法进行展示,如图5-18所示。
图5-18 员工工资管理界面图
核心代码如下所示:
@RequestMappisng(“/lists”)
public R list( YuangonsggongziEntity yuangonggongzi){
EntityWrappesrew=new EntityWrappser();
ew.allsEq(MPUtil.allEQMapPre(yuasnsgonggongzi,“yuangonggongzsi”));
returnR.ok().put(“data”, yuangonggongsziService.selectListView(ew));
}
16、员工健康管理
管理员通过这个功能可以看到员工每日的健康状态,比如体温等信息,还可以进行修改或删除操作,实现原理是通过page方法将员工提交的健康信息,在后台进行分页查询展示,如图5-21所示。
图5-21 员工健康管理界面图
核心代码如下所示:
@RequestMapping(“/page”)
public R page(@RequestParam Map<String, Object> params,YuangongjiankangEntity yuangongjiankang, HttpServletRequest request){
String tableName = request.getSession().getAttribute(“tableName”).toString();
if(tableName.equals(“yuangong”)) { yuangongjiankang.setYuangonggonghao((String)request.getSession().getAttribute(“username”));
}
EntityWrapper ew = new EntityWrapper();
PageUtilspage=yuangongjiankangService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuangongjiankang), params), params));
request.setAttribute(“data”, page);
return R.ok().put(“data”, page);
}
17、设备申请管理
设备申请管理:企业员工针对设备提交的设备信息,可以进行查看设备申请的详细信息,只有审核通过,才算员工通过申请,实现原理是通过info方法查询到详情,将数据进行展示,如图5-22所示。
图5-22 设备申请管理界面图
核心代码如下所示:
@RequestMapping(“/info/{id}”)
public R infso(@PathVarsiable(“id”) String id){
ShebeishenqingEnstistyshebeishenqing=shebeishenqingService.selectById(id);
return R.ok().put(“data”, shebeishenqisng);
}
18、员工请假管理
员工提交的请假申请,管理员可以通过这个模块进行数据信息的查看,然后判断是否需要进行审核。通过功能模块可以看到企业里面员工提交的请假相关的详细信息,比如请假的时间是哪天以及请假的内容是什么还有员工的基本信息,除了上述功能之外还可以对以往数据信息进行查看、修改等操作,实现原理是将员工提交的请假信息,通过info方法实现详情展示,管理员可以查看到详细信息,如图5-23所示。
图5-23 员工请假管理界面图
核心代码如下所示:
@RequestMapping(“/info/{id}”)
public R info(@PathVariable(“id”) String id){
YuansgongqingjiaEntityyuangongqinsgjia=yuangongqingjiaService.selectById(id);
retursn R.ok().put(“data”, yuangsongqingjia);
}
六、系统测试
(一)测试的任务及目标
系统的功能测试是整个软件开发过程中比较重要的一个部分,是用来评判功能是否能正常使用或者是功能是否稳定的一个关键性技术指标。系统测试的目的是在系统投入上线前,对系统需求分析、设计说明和编码的最终复审,是系统质量保证的关键,系统测试也是为了发现错误而执行的程序过程[14]。
(二)系统的目的和方法
为了及时发现系统的BUG和不合理的业务,就要进行功能性的测试,发现发现系统功能缺陷的测试是不成功的,一次成功的测试就是为了发现系统功能的错误。
软件测试按照功能进行划分的话,有许多种不同的类型:静态测试、动态测试;黑盒测试、白盒测试等测试。
(三)系统测试
本程序的各种功能和模块,使用黑盒来检测,看是否达到了预期目标以及有什么缺陷,以便保障系统在使用期间能不能稳定。下面我将对系统的功能做测试用例说明。
登录模块:主要是系统的使用者进行登录的模块,这里的用户就是指系统的最终使用者。如果用户无法登录或者登录出现异常,都会降低用户使用系统的体验感,这样会导致用户对软件的使用减少甚至排斥。测试过程如表6-1所示。
表6-1 登录模块功能测试用例表
测试方案 测试数据 预期结果 测试结果
用正确的密码登录已经存在的账号信息 用户名:abo,
密码:abo 测试的身份验证成功,进入的管理功能界的面 与预期的结果一致
用错误的密码登录已存在账号 用户名:1,
密码:1 测的试提示“提示账号或密码错误”,无法进入界面 与预期的结果一致
用不存的在账号登录 用户名:zhangsanfen,
密码:12345 测试提示的“提示账号或密码错误”,无法访问进入。 与预期的结果一致
公司公告管理模块:该模块的作用是便于企业管理员及时的发布一些公司的公告,如果员工消息发布之后查收不到消息,就说明该模块存在不足,需要改进。测试过程如表6-2所示。
表6-2 公司公告管理模块功能测试用例表
测试方案 测试数据 预期结果 测试结果
公司公告信息的添加 增加一条国庆放假的消息 员工登录账号能够及时的查看到信息 与预期结果一致
公司公告信息的查询 取一条公告标题进行查询 点击查询之后能够查到对应的信息内容 与预期结果一致
公司公告信息的查看 点击第一条信息进行查看 可以查看到详细的公告信息内容 与预期结果一致
公司公告信息的修改 将新增的国庆放假信息进行修改成中秋 点击修改之后,消息立马变了 与预期结果一致
公司公告信息的删除 选中一条信息然后点击删除按钮 选中的信息立马被删除了 与预期结果一致
公司公告信息的批量删除 选中两条信息然后点击批量删除按钮 选中的信息立马被删除了 与预期结果一致
设备分类管理模块:该模块的作用是为了给办公设备增加分类选项,如果没有这个功能,那么员工申请设备的话,无法知道设备类型,就会显得很笼统。测试过程如表6-3所示。
表6-3 设备分类管理模块功能测试用例表
测试方案 测试数据 预期结果 测试结果
设备分类的添加 增加一条分类信息 页面新增了刚刚添加的数据 与预期结果一致
设备分类的查询 取一条分类信息进行查询 点击查询之后,可以查到详细数据 与预期结果一致
设备分类的查看 点击第一条分类进行查看 可以查看到详细的设备分类信息 与预期结果一致
设备分类的修改 将新增的设备分类进行修改 点击修改按钮之后,消息立马变了 与预期结果一致
设备分类的删除 选中一条设备分类然后点击删除按钮 选中的信息立马被删除了 与预期结果一致
设备分类的批量删除 选中两条数据点击批量删除按钮 页面数据立马减少两条数据 与预期结果一致
办公设备管理模块:该功能是员工申请设备之后能够看到有办公设备的相关信息。测试过程如表6-4所示。
表6-4 办公设备管理模块功能测试用例表
测试方案 测试数据 预期结果 测试结果
办公设备的添加 增加一条投影仪的设备信息 登录员工账号之后可以直接查看到 与预期结果一致
办公设备的的查询 取一条设备信息进行查询 点击查询之后,可以查到详细数据 与预期结果一致
办公设备的查看 点击第一条办公设备进行查看 可以查看到详细的办公设备信息 与预期结果一致
办公设备的修改 将新增的办公设备进行修改 点击修改按钮之后,消息立马变了 与预期结果一致
办公设备的删除 选中一条办公设备然后点击删除按钮 选中的设备立马被删除了 与预期结果一致
办公设备的批量删除 选中三条数据点击批量删除按钮 页面数据立马减少三条数据 与预期结果一致
设备申请管理模块:员工在企业里面上班,需要办公设备就需要申请,这里也是需要看功能是否完善。测试过程如表6-5所示。
表6-5 设备申请管理模块功能测试用例表
测试方案 测试数据 预期结果 测试结果
设备申请信息的添加 小王登录账号申请投影仪 管理员可以看到小王的申请信息 与预期结果一致
设备申请信息的查询 将小王申请的设备信息进行查询 可以清楚的看到小王的设备申请信息 与预期结果一致
设备申请信息的批量删除 将小李、小吴的设备申请信息进行批量删除 页面数据减少两条数据 与预期结果一致
设备申请信息的审核 将小王申请的设备审核通过 小王登录账号可以查看状态已经通过 与预期结果一致
设备申请信息的的查看 查看员工小吴的设备申请信息 可以查看到小吴详细的设备申请信息 与预期结果一致
设备申请信息的的修改 将员工小王的设备申请信息进行修改 点击修改按钮之后,数据立马变了 与预期结果一致
设备申请信息的删除 将小李的设备申请信息进行删除 小李的请假数据立马删除了 与预期结果一致
员工管理模块:该功能为企业员工数据信息的管理,该功能能否正常也是检验该系统是否完善的原因。测试过程如表6-6所示。
表6-6 员工管理模块功能测试用例表
测试方案 测试数据 预期结果 测试结果
员工信息的添加 增加一条员工数据信息 使用新添加的信息进行登录,可以访问 与预期结果一致
员工信息的查询 查看001账号员工的信息 可以清楚的看到该员工的详细信息 与预期结果一致
员工信息的的查看 查看004账号的详细信息 可以查看到详细的办公设备信息 与预期结果一致
员工信息的修改 将004账号员工信息进行修改 点击修改按钮之后,数据立马变了 与预期结果一致
员工信息的删除 选中004账号然后点击删除按钮 选中的员工信息被删除了 与预期结果一致
员工信息的批量删除 将001、002、003账号对应的信息进行删除 页面数据减少三条数据 与预期结果一致
员工考勤管理模块:该模块是用于员工上、下班的打卡考勤,通过这个功能可以看到员工一个月的上班情况,测试过程如表6-7所示。
表6-7 员工考勤管理模块功能测试用例表
测试方案 测试数据 预期结果 测试结果
考勤信息的添加 员工增加一条上班考勤信息 管理员账号登录之后可以看到信息 与预期结果一致
考勤信息的查询 选中一条考勤信息,通过编号进行查询 可以清楚的看到该考勤的信息 与预期结果一致
考勤信息的审核 将页面第一条信息进行审核,选择通过 登录对应的账号,可以看到审核状态是通过状态 与预期结果一致
考勤信息的的查看 查看员工小吴的考勤信息 可以查看到小吴详细的考勤时间 与预期结果一致
考勤信息的的修改 将员工小吴的考勤信息进行修改 点击修改按钮之后,信息立马变了 与预期结果一致
考勤信息的删除 将小李的员工考勤信息进行删除 小李的信息立马删除了 与预期结果一致
考勤信息的批量删除 将前两条信息进行批量删除 页面数据减少两条 与预期结果一致
员工请假管理模块:该模块的作用是方便员工线上请假,传统的纸质请假条既繁琐又不便管理,如果不能线上请假的话,OA系统的意义也会降低。测试过程如表6-8所示。
表6-8 员工请假管理模块功能测试用例表
测试方案 测试数据 预期结果 测试结果
请假信息的添加 员工增加一条请假信息 管理员账号登录之后可以看到信息 与预期结果一致
请假信息的查询 选中小吴的请假信息,进行查询 可以清楚的看到小吴的请假信息 与预期结果一致
请假信息的审核 将小吴的请假信息进行通过 登录对应的账号,可以看到审核状态是通过状态 与预期结果一致
请假信息的的查看 查看员工小吴的请假信息 可以查看到小吴详细的请假信息 与预期结果一致
请假信息的的修改 将员工小吴的请假信息进行修改 点击修改按钮之后,数据立马变了 与预期结果一致
请假信息的删除 将小李的员工请假信息进行删除 小李的请假信息立马删除了 与预期结果一致
请假信息的批量删除 将小李、小吴的信息进行批量删除 页面数据减少两条 与预期结果一致
员工工资管理模块:企业需要每月支付工资给员工,那么工资数据准不准确很重要。测试过程如表6-9所示。
表6-9 员工工资管理模块功能测试用例表
测试方案 测试数据 预期结果 测试结果
员工工资信息的添加 给小吴新增一条工资信息 管理员账号登录之后可以看到数据,同时小吴登录账号可以查到工资信息 与预期结果一致
员工健康管理模块:该模块功能是员工需在每天上班时提交健康信息,作为员工上班的状态信息,测试过程如表6-10所示。
表6-10 员工健康管理模块功能测试用例表
测试方案 测试数据 预期结果 测试结果
员工健康信息的添加 小吴登录账号新增一条健康信息 管理员可以看到信息 与预期结果一致
员工健康信息的审核 将小吴的健康信息进行审核通过 小吴登录账号可以看到审核已经通过 与预期结果一致
员工留言管理模块:员工在企业里面上班是可以对企业工作建设进行提议留言的,比如给公司提供工作相关的意见建议等。测试过程如表6-11所示。
表6-11 员工留言管理模块功能测试用例表
测试方案 测试数据 预期结果 测试结果
员工留言信息的添加 小王登录账号新增一条留言信息 管理员可以看到留言信息 与预期结果一致
员工留言信息的审核 将小王的留言信息进行审核并且通过 小王登录账号可以看到审核已经通过 与预期结果一致
七、总结
此次设计,按照规定的时间之内完成了毕业设计,我明白一个事情,就是不论做什么,都需要坚持,哪怕是再大的困难,你也要坚持下去,那么你就一定会按时完成任务。
于专业而言,第一,通过此次毕业设计,清楚了系统开发的整个流程。怎么去进行技术选型以及怎么去解决问题,还有就是熟练的使用了JSP技术进行页面上面的设计,这是自己从不懂到懂的过程,也是自己的突破。
第二,在此基础上,了解了系统的性能问题。了解了什么因素才是影响系统性能的关键因素。系统性能优化是个很重要的环节,关乎用户的使用稳定性。
第三,培养了自己的模块化编程思想。在开发系统时不是一下就能写成的,经过把项目划分成几大模块,模块再分模块的思想来一一实现。
不足的是:在JSP开发上,还是不够熟悉,做的页面不是很完美,需要弥补的地方真的还有很多。其次就是开发的功能技术上不是很完善,后面自己还是一边学习一边摸索,本身系统开发中暴露了很多问题。
通过对基于Java软件的办公OA系统的应用系统的设计和开发,锻炼了我的实际动手能力,这次的毕业设计,使我的计算机水平又上了新的台阶,使我受益匪浅。
总之,多学习,多思考,多练习,多敲代码,一定会提高自己水平的。
致谢
毕业设计是大学的最后一门课程,也是综合运用所学知识的课程。平常上课学习的都是理论知识,然而亲自动手实践的机会很少,这次毕业设计为我提供了一个很好的机会,可以让我将所学的理论知识运用到实践中,是检验理论知识学习成果的最好方法。
感激我的论文指导教师朱学广老师,他在忙碌的教学工作中挤出时间来审查、修改我的论文。还有教过我的所有教师们,严谨细致、一丝不苟的精神一向是我工作、学习中的榜样;他们循循循善诱的教导和不拘一格的思路给予我无尽的启迪。
参考文献
[1] 范立峰,乔世全,程文彬.JSP程序设计,人民邮电大学出版社,2018。
[2] (美)Kevin Mukhar, Chris Zelenak , James L.Weaver,Jim Crume .JavaEE 开发指南,机械工业出版社,2018。
[3] 陈雄华.企业应用开发详解,电子大学出版社,2017。
[4] 李宁.Java Web开发技术大全–JSP+Servlet,清华大学出版社,2018。
[5] 聂哲.JSP动态WEB技术实例教程,2018。
[6] 李绪成,闫海珍.java Web开发教程—入门与提高篇(JSP+Servlet), 清华大学出版社 2018 。
[7] 史胜辉,王春明,沈学华.JavaEE基础教程,清华大学出版社,2017。
[8] 霍尔等著.Mysql与JSP核心编程,清华大学出版社,2019。
[9] Joyce Farrell著.Java编程(英文影印版),科学出版社,2019。
[10] 郭克华编.JavaEE程序设计与应用开发,清华大学出版社,2019。
[11] 黎晓.基于JAVA的自动化办公系统的设计与实现,2018。
[12] 王博.实验教学中心网站的设计与实现,2019。
[13] 周岐山.基于SSH框架的网上(潮牌服装)购物平台的设计与实现,2019。
[14] 赵一嘉.基于JSP技术的企业财务管理系统的设计与实现,2021。
[15] 马传佳.OA发展史:由点到生态,2019。