本文旨在阐述一个基于Java SSM(Spring + Spring MVC + MyBatis)框架的软件公司办公自动化(OA)系统的完整设计与实现方案。该系统设计代号为“21K5B”,是一个典型的B/S架构应用,旨在提升软件公司内部协同办公效率,涵盖人事、行政、项目、文档等核心管理模块。本方案将详细说明系统架构、核心功能、数据库设计以及部署流程,为计算机相关专业的毕业设计提供完整的参考范例。
一、 系统总体设计
1.1 技术选型
后端框架: SSM(Spring 5.x + Spring MVC + MyBatis 3.x)。Spring负责IoC容器与事务管理,Spring MVC处理Web层请求,MyBatis作为持久层框架操作数据库。
前端技术: JSP/JSTL、HTML5、CSS3、JavaScript、jQuery、Ajax,配合Bootstrap等前端库实现响应式界面。
服务器: Apache Tomcat 9.x。
数据库: MySQL 8.0。
项目管理与构建: Maven。
开发工具: IntelliJ IDEA 或 Eclipse。
1.2 系统架构
系统采用经典的三层架构:
- 表示层(View): 由JSP页面和前端脚本构成,负责用户交互与数据展示。
- 控制层(Controller): Spring MVC的控制器(Controller)接收前端请求,调用业务逻辑,并返回响应。
- 业务逻辑层(Service): Spring管理的Service接口及其实现类,封装核心业务规则。
- 数据持久层(DAO/Mapper): MyBatis的Mapper接口与XML映射文件,负责与MySQL数据库交互。
- 实体层(Entity/POJO): 与数据库表对应的JavaBean对象。
二、 核心功能模块设计
系统主要分为以下几个模块,以满足软件公司的日常运营需求:
2.1 用户权限管理模块
用户管理: 员工信息的增删改查,支持批量导入。
角色与权限管理: 基于RBAC(基于角色的访问控制)模型。定义不同角色(如管理员、项目经理、普通员工),并为角色分配细粒度的功能权限(菜单、按钮级)。
* 登录与安全: 用户名密码登录,密码MD5加盐加密,Session管理,拦截器验证权限。
2.2 人事行政管理模块
考勤管理: 支持在线打卡(地理位置/IP验证)、请假/加班/出差申请与审批流程。
通知公告: 公司内部通知、公告的发布与管理。
* 会议管理: 会议室预定、会议通知、会议纪要上传。
2.3 项目管理模块(核心)
项目信息管理: 创建、维护软件项目基本信息(客户、周期、预算、状态)。
任务分配与跟踪: 将项目分解为任务,分配给具体员工,跟踪任务进度(待开始、进行中、已完成、已延期)。
工时填报: 员工每日/每周填报在各项目任务上花费的工时,用于项目成本核算。
项目文档库: 集中存储项目相关的需求文档、设计稿、测试报告、源码归档等。
2.4 内部流程审批模块
流程引擎(简化): 使用状态机或自定义工作流设计,实现请假、报销、采购、项目立项等申请的多级审批(如:员工提交 -> 项目经理审批 -> 部门总监审批 -> 财务审批)。
我的待办/已办: 个人审批任务中心。
2.5 文档与知识库模块
公共文档区: 存放公司规章制度、技术规范、培训资料等。
个人网盘: 为员工提供私人文件存储空间。
* 文档权限控制: 支持对文件夹/文件设置查看、下载、编辑权限。
2.6 内部通讯模块
即时消息(WebSocket或轮询简化实现): 实现员工间的在线聊天。
内部邮箱: 站内邮件发送与接收。
三、 数据库设计(关键表示例)
数据库名为 oa<em>system</em>21k5b。以下为部分核心表结构:
- 用户表 (sysuser): id, username, password, salt, realname, deptid, roleid, status, create_time...
- 角色表 (sysrole): id, rolename, role_code, description...
- 权限表 (syspermission): id, permname, permcode, url, type, parentid...
- 角色-权限关联表 (sysrolepermission): roleid, permissionid
- 部门表 (sysdept): id, deptname, parent_id...
- 项目表 (pmproject): id, projectname, customer, managerid, status, startdate, end_date...
- 项目任务表 (pmtask): id, taskname, projectid, assigneeid, priority, progress, status...
- 请假申请表 (flowleave): id, applicantid, leavetype, starttime, endtime, reason, status, currentapprover...
- 文档表 (docresource): id, filename, filepath, filesize, uploaderid, folderid, downloadcount, permissionlevel...
四、 源码结构与关键实现
4.1 Maven项目结构`
src/main/java
├── com.oa
│ ├── controller // 控制器层
│ ├── service // 业务接口及实现
│ ├── dao/mapper // MyBatis Mapper接口
│ └── entity // 实体类
└── resources
├── mapper // MyBatis XML映射文件
├── spring // Spring配置文件(applicationContext.xml, spring-mvc.xml)
└── jdbc.properties // 数据库连接配置
src/main/webapp
├── WEB-INF
│ ├── web.xml // 部署描述符
│ └── views // JSP页面
├── static // 静态资源(css, js, images)
└── uploads // 文件上传目录`
4.2 关键代码示例
Spring MVC配置: 在 spring-mvc.xml 中配置视图解析器、静态资源映射、注解驱动、文件上传解析器、拦截器等。
MyBatis配置: 在 applicationContext.xml 中配置数据源、SqlSessionFactoryBean,并扫描Mapper接口。
权限拦截器: 自定义拦截器 AuthInterceptor,对非登录请求和权限不足的请求进行拦截。
Service事务管理: 使用Spring的 @Transactional 注解声明式管理业务方法的事务。
五、 系统部署流程
- 环境准备: 确保服务器已安装JDK 1.8+、MySQL 8.0、Tomcat 9.x、Maven 3.x(用于编译打包)。
- 数据库初始化: 在MySQL中创建数据库
oa<em>system</em>21k5b,并执行项目SQL目录下的init<em>schema.sql(建表)和init</em>data.sql(初始化管理员账号、基础数据)。 - 源码编译与打包: 在项目根目录下执行
mvn clean package,生成target/oa-system.war文件。 - 应用部署: 将
oa-system.war文件复制到Tomcat的webapps目录下,启动Tomcat服务器(startup.bat或startup.sh)。Tomcat会自动解压war包并部署应用。 - 访问系统: 在浏览器中输入
http://服务器IP:端口/oa-system(例如http://localhost:8080/oa-system),使用初始化的管理员账号登录。 - 配置调整: 根据实际环境修改
jdbc.properties中的数据库连接信息,并可能需调整Tomcat端口、JVM参数等。
六、 毕业设计要点提示
- 选题价值: 可重点阐述OA系统对提升软件公司管理效率、降低沟通成本、实现知识沉淀的价值。
- 技术深度: 在论文中详细分析SSM各框架整合原理、MVC模式、MyBatis动态SQL、Ajax异步交互等技术的应用。
- 系统特色: 可强调本系统针对软件公司定制的“项目管理”与“工时统计”模块,或实现的RBAC权限模型与简化工作流。
- 测试与优化: 描述系统功能测试、性能测试(如多用户并发登录)的方法,并提出可能的优化方向(如引入Redis缓存、使用Nginx负载均衡)。
- 源码与文档: 整理清晰的源码、数据库脚本、部署说明书和使用手册,是毕业设计成果的重要组成部分。
通过以上设计与实现,本“软件公司OA系统”提供了一个功能完整、结构清晰、技术主流的毕业设计实践案例,能够充分展示学生在Java Web全栈开发、数据库设计、软件工程等方面的综合能力。