**作者简介:**Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业讲师以及同行交流合作
**主要内容:**Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能与大数据、单片机开发、物联网设计与开发设计、简历模板、学习资料、面试题库、技术互助、就业指导等
业务范围: 免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路等**。**
收藏点赞不迷路 关注作者有好处
文末获取源码
项目编号:2024-2025-BS-AI-010
一,环境介绍
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
开发技术:人脸识别+SpringBoot+Vue
二,项目简介
随着社会经济的持续发展以及互联网的快速发展,各种各样的软件普及了各个生活领域以及各种设备上,现在生活中一些常用设备也越来越智能化人性化。同样互联网的发展在学校中应用也比较广泛。本论文以自习室自习室座位预约来进行分析。高校的自习室的建设现在也越来越信息化,智能化来,所以高校也慢慢引入了座位预约系统。传统的自习室预约方式经常会出现信息不对称,管理比较混乱,学生去自习室找不到位置等。为了解决自习室座位预约问题,缓解校园矛盾。在这种情况下基于人脸识别的自习室预定系统就应运而生了。
本次开发设计的自习室座位预约系统,采用Java语言进行开发,具体框架选用了SpringBoot框架和Vue框架进行设计,整个系统采用当前流行的前后端分离进行开发,系统共设置三个角色技术部人员(超级管理员),流通部人员(自习室管理员),学生。其中技术部和流通部的系统界面是同一个,区别在于技术部有该系统的全部权限(相当于管理员),流通部只有部分权限。流通部人员在登录时可以使用人脸识别进行登录。功能主要有登录与注册、自习室管理、规则设置、学生和流通部信息管理、黑名单管理、数据统计功能等。
1、 学生用户功能包括****:****
(1)用户登录:学生用户可以根据分配的账户在系统内进行登录,登录认证后才可以进行相应的座位预约操作。
(2)座位预约:学生登录系统后,可以查看空闲座位并进行在线预约操作,同时管理自己的预约操作记录。
(3)座位查询:学生可以在登录后查看相关座位的空闲或被占用情况。
(4)座位推荐:系统根据相关浏览操作记录进行座位的推荐操作。
(5)签到功能:学生登录系统后可以进行签到
学生用户的用例图如图2-1所示:

图2-1 学生用例
2、技术部人员功能:
(1)技术部分员登录注册:用户可以进行在线注册后后进行登录扣作,完成对自习室管理等相关数据的管理操作。
(2)自习室管理:技术部人员可以添加和维护系统中的自习室数据。
(3)预约规则配置:技术部人员在此处进行预约规则的设置操作。
(4) 人员信息管理:对系统内的学生和流通部人员的相关人员和账户信息进行管理操作。
(5)预约成功提醒:所有人员预约成功的信息会在这里进行展示。
(6)黑名单管理:对所有违反规则的用户进行黑名单操作,禁止再进行预约操作。
流通部分员用例:

图2-2 技术部人员
3、流通部人员
(1)用户登录:根据分配的账户登录系统后进行相关的数据操作。
(2)自习室管理:流通部人员进入系统后可以对自己分配的自习室进行管理操作。
(3)数据统计:根据图形化报表数据进行数据统计操作。

图2-3 流通部用户用例
三,系统展示



四,核心代码展示
java
package cn.zwz.book.controller;
import cn.zwz.basics.utils.PageUtil;
import cn.zwz.basics.utils.ResultUtil;
import cn.zwz.basics.baseVo.PageVo;
import cn.zwz.basics.baseVo.Result;
import cn.zwz.basics.utils.SecurityUtil;
import cn.zwz.data.entity.User;
import cn.zwz.data.service.IUserService;
import cn.zwz.data.utils.ZwzNullUtils;
import cn.zwz.book.entity.Message;
import cn.zwz.book.service.IMessageService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
*
*
*/
@Slf4j
@RestController
@Api(tags = "提醒信息管理接口")
@RequestMapping("/zwz/message")
@Transactional
public class MessageController {
@Autowired
private IMessageService iMessageService;
@Autowired
private IUserService iUserService;
@Autowired
private SecurityUtil securityUtil;
@RequestMapping(value = "/getOne", method = RequestMethod.GET)
@ApiOperation(value = "查询单条提醒信息")
public Result<Message> get(@RequestParam String id){
return new ResultUtil<Message>().setData(iMessageService.getById(id));
}
@RequestMapping(value = "/count", method = RequestMethod.GET)
@ApiOperation(value = "查询全部提醒信息个数")
public Result<Long> getCount(){
return new ResultUtil<Long>().setData(iMessageService.count());
}
@RequestMapping(value = "/getAll", method = RequestMethod.GET)
@ApiOperation(value = "查询全部提醒信息")
public Result<List<Message>> getAll(){
return new ResultUtil<List<Message>>().setData(iMessageService.list());
}
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询提醒信息")
public Result<IPage<Message>> getByPage(@ModelAttribute Message message ,@ModelAttribute PageVo page){
QueryWrapper<Message> qw = new QueryWrapper<>();
if(!ZwzNullUtils.isNull(message.getTitle())) {
qw.like("title",message.getTitle());
}
if(!ZwzNullUtils.isNull(message.getUserName())) {
qw.like("user_name",message.getUserName());
}
User currUser = securityUtil.getCurrUser();
QueryWrapper<User> userQw = new QueryWrapper<>();
userQw.eq("id",currUser.getId());
userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND (role_id = '1536606659751841799' OR role_id = '1746458269288894464')");
long count = iUserService.count(userQw);
if(count < 1) {
qw.eq("user_id",currUser.getId());
}
IPage<Message> data = iMessageService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<Message>>().setData(data);
}
@RequestMapping(value = "/insertOrUpdate", method = RequestMethod.POST)
@ApiOperation(value = "增改提醒信息")
public Result<Message> saveOrUpdate(Message message){
if(iMessageService.saveOrUpdate(message)){
return new ResultUtil<Message>().setData(message);
}
return ResultUtil.error();
}
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增提醒信息")
public Result<Message> insert(Message message){
User u = iUserService.getById(message.getUserId());
if(u == null) {
return ResultUtil.error("学生不存在");
}
message.setUserName(u.getNickname());
iMessageService.saveOrUpdate(message);
return new ResultUtil<Message>().setData(message);
}
@RequestMapping(value = "/update", method = RequestMethod.POST)
@ApiOperation(value = "编辑提醒信息")
public Result<Message> update(Message message){
User u = iUserService.getById(message.getUserId());
if(u == null) {
return ResultUtil.error("学生不存在");
}
message.setUserName(u.getNickname());
iMessageService.saveOrUpdate(message);
return new ResultUtil<Message>().setData(message);
}
@RequestMapping(value = "/delByIds", method = RequestMethod.POST)
@ApiOperation(value = "删除提醒信息")
public Result<Object> delByIds(@RequestParam String[] ids){
for(String id : ids){
iMessageService.removeById(id);
}
return ResultUtil.success();
}
}
五,相关作品展示
基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目
基于Nodejs、Vue等前端技术开发的前端实战项目
基于微信小程序和安卓APP应用开发的相关作品
基于51单片机等嵌入式物联网开发应用
基于各类算法实现的AI智能应用
基于大数据实现的各类数据管理和推荐系统



