基于SpringBoot的校园请假管理系统

news2024/11/24 22:06:18

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

🍅文末获取项目下载方式🍅


一、项目背景介绍:

校园请假信息管理系统是一种针对学生请假事宜的管理工具,旨在简化请假流程、提高管理效率、降低出勤管理成本。该系统的背景分析可以从以下几个方面进行:

学校请假管理繁琐:在传统的请假流程中,学生需要填写请假单、班主任审批、学生处审核、辅导员签字等一系列手续,流程繁琐、时间成本高、管理效率低下。

信息化建设迫在眉睫:随着信息化时代的到来,各行各业都在积极推进信息化建设。学校作为重要的社会教育机构,也应该积极借助信息化手段提升管理效率。

学生出勤管理面临挑战:学生出勤管理一直是学校工作的重要内容,而传统的管理方式已经无法满足管理需要。在学生请假方面,如何实现信息化、数字化、自动化

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. SpringBoot:SpringBoot框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
  3. Mybatis:MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
    iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
  4. Spring-Mvc:Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框。
  5. Thymeleaf:thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。它是一个开源的Java库,基于Apache License 2.0许可,由Daniel Fernández创建,该作者还是Java加密库Jasypt的作者。

Thymeleaf提供了一个用于整合Spring MVC的可选模块,在应用开发中,你可以使用Thymeleaf来完全代替JSP或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。
6. Bootstrap:Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目。 国内一些移动开发者较为熟悉的框架,如WeX5前端开源框架等,也是基于Bootstrap源码进行性能优化而来。
7. Html:HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。
等。
超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。

三、系统功能模块介绍:

功能模块图

四、数据库设计:

1:dept(dept)

字段名类型默认值列注释
idintNULL
numintNULL
namevarcharNULL

2:leaves(leaves)

字段名类型默认值列注释
idintNULL
typevarcharNULL
starttimedatetimeNULL
endtimedatetimeNULL
reasonvarcharNULL
useridintNULL
usernamevarcharNULL
isfinishintNULL
createtimedatetimeNULL

3:login_log(login_log)

字段名类型默认值列注释
idintNULL
lognamevarcharNULL
useridintNULL
createtimedatetimeNULL
statevarcharNULL
messagevarcharNULL
ipvarcharNULL

4:memo(memo)

字段名类型默认值列注释
idintNULL
titlevarcharNULL
textvarcharNULL
timevarcharNULL
useridintNULL

5:menu(menu)

字段名类型默认值列注释
idintNULL
codevarcharNULL
parentidintNULL
namevarcharNULL
iconvarcharNULL
urlvarcharNULL
numintNULL
levelsintNULL
tipsvarcharNULL

6:notice(notice)

字段名类型默认值列注释
idintNULL
titlevarcharNULL
bodytextNULL
messagevarcharNULL
senduseridintNULL
typevarcharNULL
createtimedatetimeNULL
recivedeptidintNULL
reciveuseridintNULL

7:operation_leave_user(operation_leave_user)

字段名类型默认值列注释
idintNULL
leaveidintNULL
useridintNULL
usernamevarcharNULL

8:operation_log(operation_log)

字段名类型默认值列注释
idintNULL
logtypevarcharNULL
lognamevarcharNULL
useridintNULL
classnamevarcharNULL
methodvarcharNULL
createtimedatetimeNULL
statevarcharNULL
messagevarcharNULL

9:role(role)

字段名类型默认值列注释
idintNULL
rolesvarcharNULL
tipsvarcharNULL

10:role_menu_relation(role_menu_relation)

字段名类型默认值列注释
idintNULL
roleidintNULL
menuidintNULL

11:thing(thing)

字段名类型默认值列注释
idintNULL
namevarcharNULL
textvarcharNULL
statevarcharNULL
name1varcharNULL
name2varcharNULL
name3varcharNULL

12:user(user)

字段名类型默认值列注释
idintNULL
usernamevarcharNULL
passwordvarcharNULL
saltvarcharNULL
avatorvarcharNULL
deptidintNULL
roleidintNULL

五、功能模块:

  1. 学生角色模块:改模块的主要给学生用户使用,其中包含个人便签和请假管理,请假管理可以申请请假,取消请假,查看请假记录等

    学生角色模块

  2. 教务处角色:主要给老师或者教务处的人员使用,其中包含用户管理,院系管理,系统通知,请假审核等模块

    教务处角色

  3. 用户管理:整个系统的用户信息

    用户管理

  4. 院系管理:学校院系部门管理

    院系管理

  5. 角色管理:可以为不同的角色灵活的配置系统菜单,不同的权限

    角色管理

  6. 通知信息:由教务处发送系统通知,会出现在系统用户的右方通知栏中

    通知信息

  7. 老师模块:老师主要是给学生做请假审核等

    老师模块

  8. 学生请假申请:学生请假申请详情

    学生请假申请

六、代码示例:

@RequestMapping(value = "/login", method = { RequestMethod.POST })
public String login(HttpServletRequest request, ShiroUser user) {
   Subject subject = SecurityUtils.getSubject();
   user.setPassword(MD5Util.encrypt(user.getPassword()));
   if (linTools.getKaptchaSwich()) {
    String kaptchaRecevied = request.getParameter("kaptcha");
   // 用户输入的验证码的值
   String kaptchaExpected = (String) request.getSession()
   .getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
   // 校验验证码是否正确
   if (kaptchaRecevied == null || !kaptchaRecevied.equals(kaptchaExpected)) {
      request.setAttribute("msg", "验证码错误");
      request.setAttribute("status", Constant.ERROR_CODE_VERICATION_CODE_ERROR);
       return "error";// 返回验证码错误
   }
}

七、项目总结:

基于SSM架构的学生请假管理系统的开发制作,从题目确定到成品完成,自己投入的精力与心血是非常多的。从基于SSM架构的学生请假管理系统的前台页面实现,到基于SSM架构的学生请假管理系统的后台代码的编辑,我用到的软件包括了数据库软件MySQL,Java开发工具IDEA,办公软件Office,浏览器软件Fireworks,图像处理软件Photoshop等,这也是我第一次使用Java语言,开发的这个比较简单的基于SSM架构的学生请假管理系统。

基于SSM架构的学生请假管理系统开发过程中,自己之前觉得比较抽象的许多门课程,例如数据库原理,软件工程,动态网站开发等课程开始变得很清晰,只有自己独立开发程序,才会觉得这些开发类的课程在实践中具有的重要作用。为了让自己设计的作品能够顺利的完成,我把所学知识全部运用在程序的开发流程中,包括了程序的需求分析环节,程序的编码环节,程序的测试环节等,让程序软件在开发周期内完成制作,并能够保证程序质量达标,力求程序开发流程规范化,程序对应的配套文档标准化。

本次开发的系统整体界面还是比较清晰简明,功能上面考虑得比较全,几乎可以满足用户使用要求。尽管我对这次的毕设付出了许多的努力,但是程序还是有很多不足的地方,系统界面整体感觉还行,但是字体字号的选取上面还是有些不符合现实审美,在程序的CSS样式编码上面,我还有许多不熟悉的地方,虽然经过反复的测试与调试选中了现在这样的程序界面,但是我还是明显感觉到自己对一些常用CSS样式的不熟悉,编码过程中,我还要多次进行资料查看才知道。另外我编写的代码写作不是很规范,可读性比较差,幸运的是,我最终还是实现了系统中所要求的功能。

基于SSM架构的学生请假管理系统现已完成了开发,除了基本功能可以符合用户需求外,在页面设计层面上没有融入更多的设计元素,需要从美学角度进行优化,另外在程序的代码层面,也有许多重合部分,需要进行整理归类,让代码变得更加的简洁。

实践出真知,但是知识也是通过实践变得更加深刻,这次作品制作,让自己的专业知识水平与解决问题的能力得到了提高。也让自己更加明白活到老学到老的真正含义。

总的说来,这次编写毕业设计作品,我真正锻炼了自己的实际操作能力,以前只知道理论知识,现在通过实践,我对理论知识的认识变得更加深刻,由于编写程序时间比较短暂,程序开发期间遇到过很多坎坷,但最后都通过老师还有同学帮忙解决了,可以说这次的毕设作品进展得还算顺利。

八、源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取项目下载链接,博主联系方式👇🏻👇🏻👇🏻

链接点击直达:下载链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

php质量检查工具 phpmd的使用

PHPMD简介 团队在使用php-cs-fixer 代码格式自动式化工具之后,在格式,代码错误等方面带来了很大便利,不过在命名,代码质量,代码复杂度,缺少一些检查,在网上搜索后,发现PHPMD 一个PHP代码静态分析工具. 安装 官方网站 github 你可以直接到下载页面封装好的 phar 包&#xff1…

云原生数据库受到青睐,亚马逊云科技数据库提供多项功能

小小的改变,标志一个新时代的全面开启,一个数据库的云原生时代。前不久,Gartner公布了一组数据,引起了不小的讨论度。在2022年全球数据库管理系统的市场份额排名中,作为纯云厂商的亚马逊云科技,超越了老牌传…

一种基于目标的可解释的自动驾驶预测和规划策略

摘要: 本文介绍了一种通过理性逆向规划进行目标识别和多模态轨迹预测的方法。通过将目标识别与MCTS 计划相结合,为自车生成优化计划。 最近炒得比较火的影子模式实际就是在通过数据收集的方式不断模拟自动驾驶系统按照人类驾驶习惯实现人之间的交互过程…

QML 快速上手3 - QuickControl2

目录 QuickControl2简介风格设置control 配置文件图像浏览器案例component 组件报错问题StackViewSwipeView QuickControl2 简介 quickcontrol 用于快速构建风格化的用户界面 它包括了以下几个预制的组件风格 Default QT 默认风格Universal windows 桌面风格Material 谷歌推…

【FPGA】译码器、计数器及数码管显示

写在前面 万万没想到最后去了FPGA岗位,但是FPGA只在研一学过,确实忘得差不多了,因此从头把东西过亿边 这是某本书上的第一章节,感觉写的还是挺不错的,大概看了一下让我回想起很多知识,个人感觉比较适合学习…

《effective java》中关于解决构造函数/方法签名包含大量参数的解决方法

针对构造方法 重叠构造器模式 重叠构造器模式是一种编程中的反模式,指的是一个类有多个构造函数,每个构造函数都有不同数量的参数,从而可以根据不同的情况创建对象。这种方式会导致代码可读性和可维护性降低,因为构造函数过多&…

echarts柱状图数据太多设置滚动条

当你的项目中因数据量太大,导致柱状图数据全部叠在一起不便于看的时候,你们是怎么处理的? 大部分同学可能第一想法就是裁剪一部分数据,仅展示页面最大限度能够展示的数据,这确实是一个好办法,简单快速。但…

【分布式】分布式存储架构

文章目录 一、集中存储结构二、分布式存储2.1 、分布式存储的兴起2.2 、分布式存储的重要性2.3 、分布式存储的种类和比较 三、分布式理论浅析3.1 、一致性和可用性3.2 、数据分布哈希分布( Swift )顺序分布( Bigtable )CRUSH 分布…

模版方法模式在 JDK 及 spring 源码中的引用

模版方法模式 模板方法模式是一种行为设计模式, 它在超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 更多有关于模版方法模式的介绍详见:https://refactoringguru.cn/design-patterns/template-method 模版…

【4】tf实现神经网络模型

1 M-P神经元与神经网络前向传输 1.1 训练单个神经元 一个含有两个输入的神经元,指定一个输入x1x21,期望y能输出0.3。要求不断的输入x1x21,然后不断的训练权重w与偏置b值,训练一万次后,再次输入x1与x2输出y的值是否为0.3 # 导入TensorFlow库…

Linux 进程的睡眠和唤醒详解

概要 在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状 态标志位为 TASK_RUNNING。一旦一个运行中的进程时间片用完, Linux 内核的调度器会剥夺这个进程对CPU的控制权,并且从…

QGIS实现tiff影像栅格数据切片教程

实现栅格切片的方式有很多种,geoserver可以,qgis可以。自己写代码也可以,方式非常多。这篇文章介绍一下如何使用QGIS实现栅格切片。 首先我们要去下载一个qgis软件。下载地址如下: Welcome to the QGIS project! 随后我们打开软件,然后把要切片的栅格数据(tiff文件或者…

【Python 随练】逆序打印数字

题目: 给一个不多于 5 位的正整数,要求: 一、求它是几位数, 二、逆序打印出各位数字。 简介: 在本篇博客中,我们将解决一个关于正整数的问题。根据题目要求,我们需要判断给定的正整数是几位数…

你的仓库VS别人家的仓库,有什么不同?

导读: 近年来,随着新技术的蓬勃发展,企业的仓储管理水平大大提高,PDA、RFID、AGV、立体仓库、智能分拣线等各项新技术的应用层出不穷。然而,着眼于制造型企业,却发现仍有许多仓库处在比较原始、传统、粗放…

[译] DeepSpeed:所有人都能用的超大规模模型训练工具

我们于今年 2 月份发布了 DeepSpeed。这是一个开源深度学习训练优化库,其中包含的一个新的显存优化技术—— ZeRO(零冗余优化器),通过扩大规模,提升速度,控制成本,提升可用性,极大地…

如何绘制甘特图?这个软件来帮你

最好用的甘特图软件是什么?先看效果,再放教程: 这是大家用的比较多的excel做出的甘特图: 这是我做的动态甘特图: 两种方法,分享给大家,按需选择即可。 第一种:用Excel制作甘特图 用…

nx安装cuda与cudnn

本文参考 Jetson xavier nx 安装CUDA10.2,和cudnn8.0_jetson安装cuda_三羊木木的博客-CSDN博客 NX安装cuda和cudnn_nx cuda_viatea的博客-CSDN博客 进入nx系统后,输入 sudo apt-get update 更新源 目录 1 cuda 2 cudnn 1 cuda sudo apt-get ins…

如何注册GitHub账号

一、注册GitHub账号 1、浏览器URL中输入地址: https://github.com/ 2、跳转至GitHub官网 3、点击右上角sign up按钮 4、填写注册信息 这个大意是产品更新时消息会通过邮箱发给你,根据需求选择y or n 5、验证账户 有的小伙伴会出现错误信息 Unable to verify you…

考研算法28天:优化版插入排序(折半插入排序)【二分,插入排序】

算法介绍 算法介绍就是说我们原先写的插入排序的这段代码 for(int i1;i<n;i){//开始向前遍历&#xff0c;如果发现前面的元素比//x大的话&#xff0c;就将前面的元素放到x的后面int x q[i],ji;while( j && q[j-1]>x ){q[j] q[j-1];j--;}q[j] x;}我们里面那层…

Redis_6.2.12下载及安装(CentOS7)

文章目录 Redis安装-CentOS71、下载地址2、下载安装流程2.1 安装依赖2.2 官网下载tar包2.3 进入解压目录并编译2.4 启动Redis服务2.5 全局使用redis-cli、redis-server2.6 防火墙开启6379端口查看防火墙状态以及启动、关闭配置firewalld-cmd开启防火墙端口 3、设置开机自动启动…