前言
Hi,同学们好呀,学长今天带大家复盘一个学长帮往届同学做的一个毕业作品
基于Java web的OA系统的设计与实现
1 什么是OA系统
办公自动化简称为OA(Office Automation)是集计算机科学、通讯技术、系统科学、行为科学为一体的综合性技术。现代的办公自动化系统采用的是Internet/Intranet技术,基于工作流的概念,使得企业内部的员工能够方便快捷地共享信息,高效地协同工作;改变传统复杂、低效的手工办公方式,以实现迅速、全方位的信息采集和信息处理,为企业的管理和决策提供科学的依据。企业实现办公自动化的程度也是衡量其实现现代化管理的标准。办公自动化不仅兼顾个人办公效率的提高,更重要的是能够实现群体系统工作。凭借网络,这种交流和协调几乎可以在瞬间完成。
办公自动化有很多的优点:避免对资源不必要的浪费,节约成本,高效管理等,它能让管理变得规范和科学。在查阅了很多与OA系统相关的资料后,对其进行了深入的学习。在了解到办公自动化现在的发展状况后,对学习和研究它的现实意义进行了深入的分析。
2 OA系统开发
为了开发出更加完善的系统,学长以J2EE为技术基础,企业级的MVC设计模式为前提,科学的对系统进行了分析,阐述了OA系统的核心技术及其他工具的使用。在掌握Spring、SpringMVC、Mybatis等框架技术之后,运用Maven工具进行项目的管理,为办公自动化系统的开发做了充足的准备。
3 系统设计
这个办公自动化系统,采用的是B/S架构、运用了MVC模式进行开发,主体包括了数据持久层,核心业务层以及应用层(即前端视图界面—用户实现操作的交互界面),运用框架技术结合Maven管理实现对系统的构建,系统整体架构如图
在此系统架构下,项目工程的文件结构如图
3.1 系统模块设计
系统模块的合理划分是系统成功的关键,因为OA系统模块众多,如果事先不做好模块划分,开发过程中的时间成本的投入将会提高,还可能造成做无用功的现象。对系统的各个模块进行合理的划分,能够促进系统功能的具体实现。
系统模块大致分为系统管理、个人信息管理、审批管理、公告管理等(模块)。如图
系统管理模块又分员工管理、部分管理和岗位管理,如图
系统的个人信息管理模块,主要功能是对用户进行CRUD操作,如图
系统的审批模块,主要由请假申请、申请查询和待审批申请组成,如图
系统的公告管理模块,主要实现:管理员对公告的增、删、改操作,用户对公告可以进行的操作是查询,如图
3.2 核心业务流程设计
工作流的设计是办公自动化系统的核心。针对本系统,通过“请假”这一业务来进行工作流设计,具体流程为见图
3.3 通用功能代码实现
由于CRUD操作是各模块数据通用的,故而将其抽取为公共代码部分,采用面向接口编程的方式,具体模块的实例需要运用到的时候对其进行实现即可。主要代码如下:
public interface UserService {
public User findUser(String username, String userpwd) ;
public List<User> selectAll();
public void add(User u);
public void del(int id);
public User getById(int id);
public void update(User u);
public List<User> getByLike(String keywords);
}
3.3.1 登陆模块实现
登陆界面采用html+js+css来具体实现,效果如图
下面的是实现登陆主要代码:
// 申明这是一个控制器
@Controller
public class Usercontroller {
// 注入Service
@Autowired
UserService service;
//url映射
@RequestMapping("/login")
public String login(){
return "login";
}
//登陆验证
@RequestMapping("/main")
public String checkLogin(@RequestParam(value = "username") String username, @RequestParam(value = "userpwd") String userpwd){
User user = service.findUser(username, userpwd);
if(user!=null) {
return "main";
}else {
return "err";
}
}
3.3.2 系统模块的实现
系统的主要模块有:角色管理、部门管理、用户管理三大模块,基础部分均为数据的CRUD操作,其中还包含用户列表的分页功能。页面效果如图
部分核心代码如下:
//后台核心代码
@RequestMapping(value = "/user")
public ModelAndView selectAll() {
ModelAndView mav = new ModelAndView();
mav.addObject("userList", service.selectAll());
return mav;
}
//前端界面的关键代码:
<tr>
<th class="table-check"><input type="checkbox" id="chkAll"></th>
<th class="table-id">ID</th>
<th class="table-title">姓名</th>
<th class="table-type">电话</th>
<th class="table-author am-hide-sm-only">性别</th>
<th class="table-set">操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${userList}" var="user">
<tr>
<td><input type="checkbox" name="chk"></td>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.phonenumber}</td>
<td class="am-hide-sm-only"><span class="am-badge am-badge-primary">${user.sex}</span>
</td>
<td>