精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻
💖🔥作者主页:计算机毕设木哥🔥 💖
一、项目介绍
1.1 选题背景与研究意义
办公自动化系统,是利用技术的手段提高办公效率,进而实现办公的自动化处理,
是主要面向企业日常运作和管理、员工及管理者的应用系统,旨在使企业内部人员方
便快捷地共享信息、高效地协同工作[1]。因此,有必要就中小企业的日常经营管理特
点和发展需求,对OA系统的设计和应用策略进行深入的探究和分析[2]。OA(office
automation)是办公室自动化的简称,OA系统的演变与计算机技术、信息技术的发展
有着密切联系。并且从定义上来讲,OA 系统实际上就是现代办公方式与计算机技术
相结合的新型办公模式[3]
。要根据 OA系统的功能和用户的实际需要来设计和开发,
人们能够很容易地利用互联网来获得办公信息,同时也为类似的办公自动化系统的开
放性操作提供了依据,是信息化的基础和关键。联合评价是企业向现代管理转变的重
要手段,是提高管理效率和透明度的必要条件。人们普遍认为,办公自动化程度是衡
量现代管理能力的重要指标之一。
1.2 研究现状
进入21世纪以来,中国加快企业重组完善了企业的管理体制,提出了“信息化带
动工业化”的战略方针,满足需求的同时提升整体竞争实力。
目前国内企业办公OA系统得到了快速发展,由查阅资料可知,越来越多的企业开始
注重对OA系统的使用,与传统办公方式相比,OA系统的功能十分强大,其能
有效地满足当前企业信息管理的需求,实现企业日常办公业务的开展和信息的共享及
处理[4]
。我国OA系统的发展从1980年开始,主要有四个阶段,从文件型到协同型到
知识型再到现在的智能型,随着企业开发的不断完善与改进,目前我国的企业办公OA
系统焕然一新,智能型OA能够提升企业工作效率并且包含多种服务。
二、开发环境
- 开发语言:Java
- 数据库:MySQL
- 系统架构:B/S
- 后端:springboot
- 前端:HTML
- 工具:IDEA或者Eclipse、HBuilderX、JDK1.8、Maven
三、系统设计
系统结构图:
系统实体图:
四、项目展示
登录模块:
管理员模块:
行政模块:
员工模块:
五、代码展示
package com.interceptor;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import com.annotation.IgnoreAuth;
import com.entity.EIException;
import com.entity.TokenEntity;
import com.service.TokenService;
import com.utils.R;
/**
* 权限(Token)验证
*/
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {
public static final String LOGIN_TOKEN_KEY = "Token";
@Autowired
private TokenService tokenService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//支持跨域请求
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization");
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
IgnoreAuth annotation;
if (handler instanceof HandlerMethod) {
annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
} else {
return true;
}
//从header中获取token
String token = request.getHeader(LOGIN_TOKEN_KEY);
/**
* 不需要验证权限的方法直接放过
*/
if(annotation!=null) {
return true;
}
TokenEntity tokenEntity = null;
if(StringUtils.isNotBlank(token)) {
tokenEntity = tokenService.getTokenEntity(token);
}
if(tokenEntity != null) {
request.getSession().setAttribute("userId", tokenEntity.getUserid());
request.getSession().setAttribute("role", tokenEntity.getRole());
request.getSession().setAttribute("tableName", tokenEntity.getTablename());
request.getSession().setAttribute("username", tokenEntity.getUsername());
return true;
}
PrintWriter writer = null;
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
try {
writer = response.getWriter();
writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));
} finally {
if(writer != null){
writer.close();
}
}
// throw new EIException("请先登录", 401);
return false;
}
}
六、项目总结
经过这几个月撰写论文首先对于大学期间学习的Java语言又有了更深层次的理
解,在一开始系统的设计过程的确对我来说是一个不小的挑战,出现了非常多的问题,
我对于开发语言和平台数据库都是一知半解,设计出的页面存在许多规范性的问题,
而且连接数据库时数据参数也无法传递,之后通过查阅网上的具体实例和参考资料以
及老师与同学们的帮助才将存在的问题得以解决。