✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、SpringCloud、Layui、Echarts图表、Nodejs、爬虫、微信小程序、机器学习等设计与开发。主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、远程代码部署调试、代码讲解和理解代码逻辑思路。
🍅**文末附项目下载链接**🍅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
一、项目背景介绍:
随在数字化转型的大背景下,企业对办公自动化系统的要求日益提高,基于SpringBoot+Vue的在线办公系统因其高效性和可扩展性成为了热门的研究和应用方向。本论文重点研究了一套集成员工信息管理、日程安排、报销流程、工资记录、文件共享、请假审批等多个核心业务模块的办公自动化管理系统。系统前端采用Vue框架,后端基于SpringBoot,实现了一种灵活、高效、用户友好的企业管理解决方案。
本研究首先对办公自动化系统的发展背景进行了概述,并分析了企业在管理过程中面临的挑战,从而明确了系统设计的核心目标和需求。系统采用模块化的设计原则和响应式布局,确保在不同设备上均有良好的操作体验,系统还实现了前后端分离,加强了系统的安全性和维护效率。其次,详细介绍了管理员、组长和普通员工三个角色的功能实现和操作流程。管理员端包含了全面的人事管理、财务审计、系统监控与通知发布功能。组长端侧重于团队管理和日常办公活动的协调。普通员工端则提供了个人信息管理、日程查看、打卡记录等日常办公功能。最后,本文基于系统实际运行情况和用户反馈,提出了系统未来可能的改进方向,为办公自动化领域的研究者和开发者提供了宝贵的经验和参考。
二、项目技术简介:
- JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
- Vue:Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。
Vue是一个独立的社区驱动的项目,它是由尤雨溪在2014年作为其个人项目创建, 是一个成熟的、经历了无数实战考验的框架,它是目前生产环境中使用最广泛的JavaScript框架之一,可以轻松处理大多数web应用的场景,并且几乎不需要手动优化,并且Vue完全有能力处理大规模的应用。 - Element-UI:Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。
- SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
- Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。
三、系统功能模块介绍:
四、数据库设计:
1:‘报销管理’(claim)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
emp_id | bigint | NULL | 员工ID |
info | varchar | NULL | 申请理由 |
append_url | varchar | NULL | 附件链接 |
create_time | datetime | NULL | 申请时间 |
total | varchar | NULL | 申请金额 |
status | int | NULL | 状态[0:已提交,1:申请通过,2:申请驳回,3已撤回] |
leave_info | varchar | NULL | 拒绝理由 |
2:‘员工表’(emps)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
name | varchar | NULL | 姓名 |
sex | int | NULL | 性别[0:男,1:女,2:未知] |
birthday | datetime | NULL | 出生日期 |
id_card | varchar | NULL | 身份证号 |
address | varchar | NULL | 家庭住址 |
age | int | NULL | 年龄 |
phone | varchar | NULL | 联系方式 |
work_state | varchar | NULL | 就职状态[0:在职,1:离职] |
join_time | datetime | NULL | 入职时间 |
leave_time | datetime | NULL | 离职时间 |
salary | varchar | NULL | 基本工资 |
create_time | datetime | NULL | 创建时间 |
user_name | varchar | NULL | 账号 |
pass_word | varchar | NULL | 密码 |
img | varchar | NULL | 照片 |
bank_no | varchar | NULL | 银行卡号 |
leader_id | bigint | NULL | 组长id |
position | varchar | NULL | 职务[前端开发,后端开发,UI测试] |
3:‘文件资源信息表’(file)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键 |
create_time | datetime | NULL | 发布时间 |
create_name | varchar | NULL | 创建人姓名 |
file_name | varchar | NULL | 文件名称 |
file | varchar | NULL | 文件 |
4:‘组长表’(leader)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
name | varchar | NULL | 姓名 |
sex | int | NULL | 性别[0:男,1:女,2:未知] |
birthday | datetime | NULL | 出生日期 |
id_card | varchar | NULL | 身份证号 |
address | varchar | NULL | 家庭住址 |
age | int | NULL | 年龄 |
phone | varchar | NULL | 联系方式 |
work_state | varchar | NULL | 就职状态[0:在职,1:离职] |
join_time | datetime | NULL | 入职时间 |
leave_time | datetime | NULL | 离职时间 |
salary | varchar | NULL | 基本工资 |
create_time | datetime | NULL | 创建时间 |
user_name | varchar | NULL | 账号 |
pass_word | varchar | NULL | 密码 |
img | varchar | NULL | 照片 |
bank_no | varchar | NULL | 银行卡号 |
position | varchar | NULL | 职务[前端开发,后端开发,UI测试] |
5:‘员工请假表’(leaves)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
emp_id | bigint | NULL | 员工ID |
start_time | datetime | NULL | 开始时间 |
end_time | datetime | NULL | 结束时间 |
info | text | NULL | 申请理由 |
status | int | NULL | 状态[0:未审批,1:通过,2:拒绝,3:撤回] |
refused_indo | varchar | NULL | 拒绝理由 |
create_time | datetime | NULL | 创建时间 |
6:‘管理员表’(manage)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
user_name | varchar | NULL | 用户名 |
pass_word | varchar | NULL | 密码 |
head_img | varchar | NULL | 头像 |
nick_name | varchar | NULL | 昵称 |
create_time | datetime | NULL | 创建时间 |
type | int | NULL | 类型 |
7:‘会议表’(meets)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
title | varchar | NULL | 会议标题 |
append_url | varchar | NULL | 附件链接 |
status | int | NULL | 状态[0:未发送,1:已发送] |
create_time | datetime | NULL | 创建时间 |
8:‘消息’(message)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 消息ID |
content | text | NULL | 消息内容 |
send_id | bigint | NULL | 发送者ID |
create_time | datetime | NULL | 发送时间 |
type | int | NULL | 用户类型 |
9:‘通知表’(noticle)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
notice_info | text | NULL | 通知内容 |
title | varchar | NULL | 通知标题 |
create_time | datetime | NULL | 创建时间 |
staus | int | NULL | 状态[0:已发送,1:未发送] |
10:‘打卡表’(punchs)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
emp_id | bigint | NULL | 员工ID |
handle_time | date | NULL | 日期 |
type | int | NULL | 状态[0:正常,1:请假] |
11:‘报告表’(reports)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
emp_id | bigint | NULL | 员工ID |
content | text | NULL | 报告内容 |
type | int | NULL | 类型[0:日报,1:周报,2:月报] |
append_url | varchar | NULL | 附件URL |
create_time | date | NULL | 汇报时间 |
12:‘工资表’(salary)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
emp_id | bigint | NULL | 员工ID |
total | varchar | NULL | 工资总额 |
basic | varchar | NULL | 基本工资 |
with_hold | varchar | NULL | 扣款 |
add_money | varchar | NULL | 其他金额 |
month_time | varchar | NULL | 月份 |
info | varchar | NULL | 说明 |
13:‘员工日程表’(schedules)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
emp_id | bigint | NULL | 员工ID |
content | text | NULL | 日程内容 |
create_time | date | NULL | 创建时间 |
五、功能模块:
-
日常模块:日常模块包含打卡,日程和请假三个部分。员工端登录后首页便可以进行打卡,若打卡成功会有提示。而最底下会按日历的方式显示何时打卡与未打卡,打卡信息展示更直观。同时首页还可以编写日程,点击确定提交。若想看更加详细的打卡记录可点击工作台的打卡记录
-
财务模块:财务模块包含对工资和报销的操作。员工和组长可查看自己的工资明细,并有说明可以预览;其次,若有需要报销的费用(例如伙食费等),可提交申请,由财务审核
-
用户登录:系统角色登录
-
在线聊天:通过websocket进行在线实时聊天
-
个人信息:个人信息
-
管理员模块:管理员模块
六、代码示例:
public void handleUserInfo(List<MessageDTO> messageDTOS) {
if (CollectionUtil.isEmpty(messageDTOS)) return;
Map<Integer, List<MessageDTO>> listMap = messageDTOS.stream().collect(Collectors.groupingBy(MessageDTO::getType));
Map<Long, EmpsDTO> empsDTOMap = new HashMap<>();
Map<Long, EmpsDTO> leaderDTOMap = new HashMap<>();
Map<Long, ManageDTO> manageDTOMap = new HashMap<>();
for (Integer type : listMap.keySet()) {
List<MessageDTO> messageDTOList = listMap.get(type);
Set<Long> sendIds = messageDTOList.stream().map(item -> item.getSendId()).collect(Collectors.toSet());
if (type.equals(1)) {
List<EmpsDTO> empsDTOS = empsService.listByIds(sendIds);
for (EmpsDTO empsDTO : empsDTOS) {
empsDTOMap.put(empsDTO.getId(), empsDTO);
}
}
if (type.equals(2)) {
List<EmpsDTO> empsDTOS = empsService.listByIds(sendIds);
for (EmpsDTO empsDTO : empsDTOS) {
leaderDTOMap.put(empsDTO.getId(), empsDTO);
}
}
if (type.equals(3)) {
List<ManageDTO> manageDTOS = manageService.listByIds(sendIds);
for (ManageDTO manageDTO : manageDTOS) {
manageDTOMap.put(manageDTO.getId(), manageDTO);
}
}
}
for (MessageDTO messageDTO : messageDTOS) {
messageDTO.setCreateDataStr(LocalDateTimeUtils.convertDateToStr(messageDTO.getCreateTime()));
Integer type = messageDTO.getType();
if (type.equals(1) ) {
EmpsDTO empsDTO = empsDTOMap.get(messageDTO.getSendId());
messageDTO.setName(empsDTO.getName());
messageDTO.setHeadImg(empsDTO.getImg());
}
if (type.equals(2)) {
EmpsDTO empsDTO = leaderDTOMap.get(messageDTO.getSendId());
messageDTO.setName(empsDTO.getName());
messageDTO.setHeadImg(empsDTO.getImg());
}
if (type.equals(3)) {
ManageDTO manageDTO = manageDTOMap.get(messageDTO.getSendId());
messageDTO.setName(manageDTO.getNickName());
messageDTO.setHeadImg(manageDTO.getHeadImg());
}
}
}
七、项目总结:
开发基于JAVA+SpringBoot+Vue的oa系统是作为毕设作品进行设计的,这个毕设作品是我在校进行知识学习的一个毕业考核项目,也是检验我通过网络工具,图书工具等学习工具进行自学的能力水平,让我在根据程序开发的需求分析初步完成程序功能之外,还接触了程序的测试过程,了解程序测试的具体的过程,以及遇到问题怎么去寻找相应的解决办法等等,毕业作品的制作以及设计才是学校对我真正的考验。
在程序软件没能进行开发之前,我去了学校的图书馆借了有关数据库操作的书籍,在查看了sqlserver和mysql两种数据库的相关知识之后,我最后选择了我比较熟悉的mysql数据库。在编程语言的抉择上,由于自己之前接触过Java程序的开发,所以为了让我尽快在短时间内完成程序制作,我确定用Java编程语言进行程序编程。另外我从百度上下载了很多的有关信息增加,信息删除等操作的源代码,并通过不断调试以及完成配套的数据库的设计,开始完成程序的各个部分的功能。每当我粗心大意,致使我深陷程序开发困扰不能自拔之时,值得庆幸的是,我就会得到老师,还有我的寝室同学的耐心指导。
历经长达几个月的毕业作品制作,我凭借自己的知识技能,还有大家的指导帮助,能够在学校规定的时间段之内提交毕业作品。虽然已经算是完成了毕业作品,但是付出了这么多心血,还是想把这个作品做得更加完美一点。针对我的毕业作品学生信息管理系统,我觉得还有很多方面需要完善,第一就是界面上需要细微调整,比如色彩搭配有点违背广众的审美,需要细微调整,还有系统里面的字体大小也需要调大一点,太小的字体看起来有些费眼。然后在程序的功能上因为自己的入门开发水平的影响,所以目前只能做到这个境界,这个系统相比其他类似系统来说功能很简单,逻辑结构设计得也比较合理。
自己一个人完成程序的开发,我不仅亲自体验了程序的开发流程,体验到了程序开发的各种不易。这种体验也还加深了我对知识的尊重。学海无涯,知识不是大学短短四年就能学完的,在大学学到的知识在最终经历检验时,才会深深地明白自己的知识积累原来还很浅薄。所以今后不管身在何处,自己的学习心态一定要时刻体现出来,要深刻明白知识学到手里就是自己的。同时,自己也不必过多抱怨学到的知识没有用处,相信学到的知识总会有派上用处的那天。不要等到需要用时再去学习知识,那样就会导致自己错失很多本该属于自己的机遇。
八、源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取项目下载链接,博主联系方式👇🏻👇🏻👇🏻
下载链接:https://pan.baidu.com/s/1dkpBBFXiZ_6l9o-iqyB35w?pwd=32t9