功能介绍
角色:教职工、考勤管理员、系统管理员
功能开发:
- 教职工模块
账户管理:注册、登录、编辑个人信息(如联系方式、密码)。
考勤打卡:日常上下班打卡,支持移动设备(手机也能打开网页)和指定地点打卡(需要做一个定位功能,定位打卡+照片的方式)加一个权限防止替打卡。
考勤记录查看:查看个人的考勤记录,包括迟到、早退、缺勤等。
请假申请:提交请假申请,选择请假类型、时间及填写理由。
调休申请:基于加班情况申请调休,提交加班证明。
假期余额查询:查询年假、病假等假期余额。
消息通知:接收考勤异常提醒、审批结果等系统通知。
部分信息管理:管理个人的打卡、排班、调班信息。
请假信息管理:查看请假类型和历史请假记录。 - 考勤管理员模块
考勤数据管理:审核、修改教职工的考勤记录。
请假审批:审核请假申请,管理审批流程。
报表生成:生成月度、年度考勤统计报表,可以(做一个导出EXCL表格)。
异常处理:处理考勤异常,审核补打卡申请。
假期管理:管理教职工的假期余额,如年假、病假。
通知发布:发布考勤相关通知和公告。
排班管理:制定和调整教职工的工作排班。
数据分析:分析考勤数据,统计出一段时间内用户的出勤时间,请假次数(有数据图可视化分析)。 - 系统管理员模块
用户管理:创建、修改、删除教职工和考勤管理员账户。
权限分配:管理不同用户的系统权限。
系统设置:配置考勤规则,设置工作时间、节假日安排。
系统实现截图
springboot文件解析
Spring Boot 是 Spring 家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程。也可以说 Spring Boot 能简化我们之前采用SSM(Spring MVC + Spring + MyBatis )框架进行开发的过程。config:主要用来存储配置文件,以及其他不怎么动用的信息
controller:项目的主要控制文件
dao: 主要用来操作数据库
entity: 实体,用来放与数据库表里对应的实体类,表中的字段对应类中的属性值,并附有set/get方法
exception:异常处理类
service:主要实现的方法
—impl 实现类
接口:尚未实现的方法,在对应的ipml中实现
util: 工具类
application.properties:项目配置信息
技术介绍
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。
jdk版本:jdk1.8+
前端:vue.js+ElementUI
开发工具:IDEA 或者eclipse都支持
编程语言: java
框架支持:springboot/ssm/springcloud分布式微服务
数据库: mysql 版本不限
数据库工具:Navicat/SQLyog都可以
开发步骤编译运行
(1) 创建好数据库并导入,
(2) 创建后台Springboot三层架构(controller,service,mapper层)并启动测试
(3) 导入并编译前端代码vue:网站和后台管理
编译:npm install
试运行:npm run dev
核心代码部分展示
@RequestMapping("users")
@RestController
public class UsersController{
@Autowired
private UsersService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UsersEntity user){
if(userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
详细视频演示
请联系我获取更详细的演示视频
源码获取
文章下方名片联系我即可~