基于javaweb+mysql的springboot学生考勤系统(java+springboot+vue+mybatis+maven+mysql)
运行环境
Java≥8、MySQL≥5.7、Node.js≥10
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot学生考勤系统(java+springboot+vue+mybatis+maven+mysql)
一、项目运行 环境配置:
Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。
项目技术:
Spring + SpringBoot+ mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。
@CrossOrigin
@RestController
@RequestMapping("/user")
public class AccountController {
@Autowired
private UserService userService;
@Autowired
private DataService dataService;
/**
* 注册
* @param user
* @return
*/
@PostMapping("/register")
public String register(@RequestBody User user) {
String username = user.getUsername();
String choice = user.getChoice();
String checkChoice = dataService.getChoice(username);
if(checkChoice.equals("empty")) {
// 学生信息不存在,请核对信息或者先进行录入
return "empty";
}else {
if(choice.equals(checkChoice)) {
// 学生姓名和学号与真实对应,可进行注册
return userService.insertUser(user);
}else {
// 选择用户错误
return "error";
}
}
}
/**
* 登录
/**
* 删除所有用户信息
*
* @param
*/
@DeleteMapping("deleteData")
public void deleteData() {
dataService.deleteData();
}
/**
* 删除用户信息
*
* @param
*/
@DeleteMapping("deleteDataByChoice/{choice}")
public void deleteDataByChoice(@PathVariable("choice") String choice) {
dataService.deleteDataByChoice(choice);
}
/**
* 批量上传excel文件导入用户信息
* @param multipartFile
* @param request
* @return
* @throws IOException
*/
@ResponseBody
@RequestMapping(value = "/fileUpload")
public String handlerForUpload(@RequestParam("fileList") MultipartFile multipartFile, HttpServletRequest request)
throws IOException {
// 判断所上传文件是否存在
List<String> test = new ArrayList<String>();
if (multipartFile.isEmpty()) {
return "error";
} else {
InputStream in = null;
try {
// 将file转InputStream
in = multipartFile.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
// 将InputStream转XLSX对象(即表格对象)
@SuppressWarnings("resource")
// String realname = xssfRow.getCell(0).getStringCellValue();
// String username = xssfRow.getCell(1).getStringCellValue();
// String classes = xssfRow.getCell(2).getStringCellValue();
// String dept = xssfRow.getCell(3).getStringCellValue();
//
//
// String earlyString = xssfRow.getCell(4).getStringCellValue();
// String lateString = xssfRow.getCell(5).getStringCellValue();
// String vacationString = xssfRow.getCell(6).getStringCellValue();
// String truancyString = xssfRow.getCell(7).getStringCellValue();
String realname = xssfRow.getCell(0).toString();
String username = xssfRow.getCell(1).toString();
String classes = xssfRow.getCell(2).toString();
String dept = xssfRow.getCell(3).toString();
String earlyString = xssfRow.getCell(4).toString();
String lateString = xssfRow.getCell(5).toString();
String vacationString = xssfRow.getCell(6).toString();
String truancyString = xssfRow.getCell(7).toString();
// String scoreString = xssfRow.getCell(8).toString();
Integer early = Integer.valueOf(earlyString);
Integer late = Integer.valueOf(lateString);
Integer vacation = Integer.valueOf(vacationString);
Integer truancy = Integer.valueOf(truancyString);
// Integer score = Integer.valueOf(scoreString);
// 将数据写入实体类
// data = new Data();
Attend attend = new Attend();
attend.setRealname(realname);
attend.setUsername(username);
attend.setClasses(classes);
attend.setDept(dept);
attend.setEarly(early);
attend.setLate(late);
}
/**
* 修改用户信息
*
* @param data
* @return
*/
@PostMapping("/updateData")
public String updateData(@RequestBody Data data) {
String username = data.getUsername();
String chioce = data.getChoice();
String classes = data.getClasses();
String dept = data.getDept();
String realname = data.getRealname();
Data test = dataService.findAllByUsername(username);
if (test != null) {
leaveService.updateAuditCheckname(data);
userService.updateChioceAndRealname(username, chioce,realname);
Attend attend = attendService.findAllByUsername(username);
if(attend != null) {
attend.setClasses(classes);
attend.setDept(dept);
attend.setRealname(realname);
attendService.saveAttend(attend);
}
dataService.saveData(data);
return "success";
} else {
return "empty";
}
}
/**
* 删除用户信息
*
* @param username
*/
@DeleteMapping("deleteData/{username}")
public void deleteData(@PathVariable("username") String username) {
dataService.deleteData(username);
}
@CrossOrigin
@RestController
@RequestMapping("/notice")
public class NoticeController {
@Autowired
private NoticeService noticeService;
/**
* 发送公告
* @param notice
* @return
*/
@PostMapping("/sendNotice")
public String sendLeave(@RequestBody Notice notice) {
return noticeService.sendNotice(notice);
}
/**
* 显示最新公告
* @return
*/
@GetMapping("/showNotice")
public Notice showNotice() {
return noticeService.showNotice();
}
/**
* 按id显示公告
* @param id
* @return
*/
@GetMapping("/showById/{id}")
public Notice showById( @PathVariable("id") Integer id) {
return noticeService.showById(id);
}
/**
* 按发布人显示所有公告
* @param currentPage
* 查找单个考勤信息
* @param username
* @return
*/
@GetMapping("findAllByUsername/{username}")
public Attend findAllByUsername(@PathVariable("username") String username){
return attendService.findAllByUsername(username);
}
/**
* 查找单个考勤信息(表格)
* @param username
* @return
*/
@GetMapping("findAllOwn/{username}")
public Map<String,Object> findAllOwn(@PathVariable("username") String username){
Map<String,Object> returnMap = new HashMap<String,Object>();
Attend attend = attendService.findAllByUsername(username);
List<Attend> list = new ArrayList<Attend>();
returnMap.put("content", list);
if(attend == null) {
return returnMap;
}else {
list.add(attend);
returnMap.put("content", list);
return returnMap;
}
}
/**
* 修改考勤信息
* @param attend
* @return
*/
@PostMapping("/updateAttend")
public String updateAttend(@RequestBody Attend attend) {
String username = attend.getUsername();
Attend test = attendService.findAllByUsername(username);
if (test != null) {
attendService.saveAttend(attend);
@GetMapping("showChatrAttend/{classes}")
public List<Census> showChatrAttend(@PathVariable("classes") String classes){
return attendService.showChatrAttend(classes);
}
@GetMapping("showChatrScore/{classes}")
public Integer[] showChatrScore(@PathVariable("classes") String classes){
return attendService.showChatrScore(classes);
}
/**
* 查找单个考勤信息
* @param username
* @return
*/
@GetMapping("findAllByUsername/{username}")
public Attend findAllByUsername(@PathVariable("username") String username){
return attendService.findAllByUsername(username);
}
/**
* 查找单个考勤信息(表格)
* @param username
* @return
*/
@GetMapping("findAllOwn/{username}")
public Map<String,Object> findAllOwn(@PathVariable("username") String username){
Map<String,Object> returnMap = new HashMap<String,Object>();
Attend attend = attendService.findAllByUsername(username);
List<Attend> list = new ArrayList<Attend>();
returnMap.put("content", list);
if(attend == null) {
return returnMap;
}else {
list.add(attend);
returnMap.put("content", list);
return returnMap;
}
}
/**
}
/**
* 审核请假表
* @param username
* @param leave
* @return
*/
@PostMapping("/examLeave/{username}")
public String examLeave(@PathVariable("username") String username,@RequestBody Leave leave) {
String StuUsername = leave.getUsername();
Leave ownleave = leaveService.ShowOwnLeave(StuUsername);
Integer oldId = ownleave.getId();
Integer id = leave.getId();
if(oldId == id) {
return leaveService.examLeave(leave, username);
}else {
return "repeat";
}
}
}
@CrossOrigin
@RestController
@RequestMapping("/notice")
public class NoticeController {
}
/**
* 删除考勤信息
* @param username
*/
@DeleteMapping("deleteAttend/{username}")
public void deleteData(@PathVariable("username") String username) {
attendService.delAttend(username);
}
/**
* 删除全部的考勤信息
*/
@DeleteMapping("deleteAttend")
public void deleteData() {
attendService.delAttend();
}
/**
* 按姓名模糊查询某一种用户
*
* @param currentPage
* @param pageSize
* @param realname
* @return
*/
@GetMapping("FuzzyQuery/{currentPage}/{pageSize}/{realname}")
public Map<String, Object> FuzzyQuery(@PathVariable("currentPage") Integer currentPage,
@PathVariable("pageSize") Integer pageSize, @PathVariable("realname") String realname) {
PageHelper.startPage(currentPage, pageSize);
Map<String, Object> returnMap = new HashMap<String, Object>();
List<Attend> list = null;
returnMap.put("content", list);
list = attendService.FuzzyQueryByRealname(realname);
returnMap.put("content", list);
return returnMap;
}
/**
*
* 按用户类型通过姓名模糊查询
* @param currentPage
* @param pageSize
* @param realname
* @param choice
return "success";
}else {
return "error";
}
}else {
return "empty";
}
}
/**
* 发送邮箱并获取验证码
* @param user
* @return
*/
@PostMapping("/getCheckemail")
public String sendCodeToMail(@RequestBody User user){
String username = user.getUsername();
String email = user.getEmail();
String choice = user.getChoice();
User test = userService.findAllByUsername(username);
if(test != null){ //判断用户是否存在
String mailAddress = test.getEmail();
String checkchoice = test.getChoice();
String checkusername = test.getUsername();
if (checkusername.equals(username)&&choice.equals(checkchoice)) {
//根据username获取保存的邮箱
if(email.equals(mailAddress)){ //用户输入邮箱与绑定邮箱一致→发送验证码
try{
//生成验证码
String verifyCode = RandomUtil.getCode();
//邮件主题
String emailTitle = "邮箱验证";
//邮件内容
String emailContent = "您正在进行邮箱验证,您的验证码为:" + verifyCode
+"\n\n 验证码将于5分钟后失效!";
//发送邮件
SendMailUtil.sendEmail(mailAddress, emailTitle, emailContent);
/* 将验证码注入数据库 */
userService.updateCode(username, verifyCode);
}
/**
* 按审核状态查询以往审核记录
* @param currentPage
* @param pageSize
* @param username
* @return
*/
@GetMapping("/ShowLeave/{currentPage}/{pageSize}/{username}/{state}")
public Map<String, Object> ShowLeave(@PathVariable("currentPage") Integer currentPage,
@PathVariable("pageSize") Integer pageSize,
@PathVariable("username") String username,
@PathVariable("state") String state){
Map<String, Object> returnMap = new HashMap<String, Object>();
List<Leave> list = null;
List<Leave> pagelist = null;
returnMap.put("content", list);
list = leaveService.showLeave(username, state);
pagelist = leaveService.startPage(list, currentPage, pageSize);
returnMap.put("content", pagelist);
return returnMap;
}
/**
* 删除申请表
* @param id
*/
@DeleteMapping("deleteLeave/{id}")
public void deleteData(@PathVariable("id") Integer id) {
leaveService.deleteLeave(id);
}
/**
* 查找辅导员管理的班级
* @param checkname
* @return
*/
@GetMapping("/findClass/{checkname}")
public List<String> findClass(@PathVariable("checkname") String checkname) {
List<Audit> audit = leaveService.FindClass(checkname);
List<String> list = new ArrayList<String>();
for(int i = 0 ; i < audit.size(); i++) {
String classes = audit.get(i).getClasses();
list.add(classes);
}
return list;
}
/**
* 删除辅导员管理的班级
* @param classes
* 发送公告
* @param notice
* @return
*/
@PostMapping("/sendNotice")
public String sendLeave(@RequestBody Notice notice) {
return noticeService.sendNotice(notice);
}
/**
* 显示最新公告
* @return
*/
@GetMapping("/showNotice")
public Notice showNotice() {
return noticeService.showNotice();
}
/**
* 按id显示公告
* @param id
* @return
*/
@GetMapping("/showById/{id}")
public Notice showById( @PathVariable("id") Integer id) {
return noticeService.showById(id);
}
/**
* 按发布人显示所有公告
* @param currentPage
* @param pageSize
* @param realname
* @return
*/
@GetMapping("showAllNotice/{currentPage}/{pageSize}/{realname}")
public Map<String, Object> showAllNotice(@PathVariable("currentPage") Integer currentPage,
@PathVariable("pageSize") Integer pageSize, @PathVariable("realname") String realname) {
PageHelper.startPage(currentPage, pageSize);
Map<String, Object> returnMap = new HashMap<String, Object>();
/**
* 按用户类型查询用户信息
*
* @param currentPage
* @param pageSize
* @param choice
* @return
*/
@GetMapping("findAllByChoice/{currentPage}/{pageSize}/{choice}")
public Map<String, Object> findAllByChoice(@PathVariable("currentPage") Integer currentPage,
@PathVariable("pageSize") Integer pageSize, @PathVariable("choice") String choice) {
PageHelper.startPage(currentPage, pageSize);
Map<String, Object> returnMap = new HashMap<String, Object>();
List<Data> list = null;
returnMap.put("content", list);
list = dataService.findAllByChoice(choice);
returnMap.put("content", list);
return returnMap;
}
/**
* 按用户名查找单个用户信息
*
* @param username
* @return
*/
@GetMapping("/findAllByUsername/{username}")
public Data findAllByUsername(@PathVariable("username") String username) {
return dataService.findAllByUsername(username);
}
/**
* 修改用户信息
*
* @param data
* @return
*/
@PostMapping("/updateData")
public String updateData(@RequestBody Data data) {
String username = data.getUsername();
String chioce = data.getChoice();
String classes = data.getClasses();
String dept = data.getDept();
String realname = data.getRealname();
Data test = dataService.findAllByUsername(username);
if (test != null) {
leaveService.updateAuditCheckname(data);
userService.updateChioceAndRealname(username, chioce,realname);
Attend attend = attendService.findAllByUsername(username);
@CrossOrigin
@RestController
@RequestMapping("/data")
public class DataController {
@Autowired
private DataService dataService;
@Autowired
private UserService userService;
@Autowired
private LeaveService leaveService;
@Autowired
private AttendService attendService;
/**
* 录入用户信息
*
* @param data
* @return
*/
@PostMapping("/insertData")
public String insertData(@RequestBody Data data) {
* @return
*/
@GetMapping("FuzzyQuery/{currentPage}/{pageSize}/{realname}")
public Map<String, Object> FuzzyQuery(@PathVariable("currentPage") Integer currentPage,
@PathVariable("pageSize") Integer pageSize, @PathVariable("realname") String realname) {
PageHelper.startPage(currentPage, pageSize);
Map<String, Object> returnMap = new HashMap<String, Object>();
List<Attend> list = null;
returnMap.put("content", list);
list = attendService.FuzzyQueryByRealname(realname);
returnMap.put("content", list);
return returnMap;
}
/**
*
* 按用户类型通过姓名模糊查询
* @param currentPage
* @param pageSize
* @param realname
* @param choice
* @return
*/
@GetMapping("FuzzyQuery/{currentPage}/{pageSize}/{realname}/{classes}")
public Map<String, Object> FuzzyQueryByChoice(@PathVariable("currentPage") Integer currentPage,
@PathVariable("pageSize") Integer pageSize, @PathVariable("realname") String realname,
@PathVariable("classes") String classes) {
PageHelper.startPage(currentPage, pageSize);
Map<String, Object> returnMap = new HashMap<String, Object>();
List<Attend> list = null;
returnMap.put("content", list);
list = attendService.FuzzyQueryByChioce(realname, classes);
returnMap.put("content", list);
return returnMap;
}
}
}else {
return "empty";
}
}
/**
* 发送邮箱并获取验证码
* @param user
* @return
*/
@PostMapping("/getCheckemail")
public String sendCodeToMail(@RequestBody User user){
String username = user.getUsername();
String email = user.getEmail();
String choice = user.getChoice();
User test = userService.findAllByUsername(username);
if(test != null){ //判断用户是否存在
String mailAddress = test.getEmail();
String checkchoice = test.getChoice();
String checkusername = test.getUsername();
if (checkusername.equals(username)&&choice.equals(checkchoice)) {
//根据username获取保存的邮箱
if(email.equals(mailAddress)){ //用户输入邮箱与绑定邮箱一致→发送验证码
try{
//生成验证码
String verifyCode = RandomUtil.getCode();
//邮件主题
String emailTitle = "邮箱验证";
//邮件内容
String emailContent = "您正在进行邮箱验证,您的验证码为:" + verifyCode
+"\n\n 验证码将于5分钟后失效!";
//发送邮件
SendMailUtil.sendEmail(mailAddress, emailTitle, emailContent);
/* 将验证码注入数据库 */
userService.updateCode(username, verifyCode);
/* 验证码在指定时间内失效 */
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
String RandomCode = RandomUtil.getCode();
userService.updateCode(username, RandomCode);
}
*/
@DeleteMapping("deleteAttend")
public void deleteData() {
attendService.delAttend();
}
/**
* 按姓名模糊查询某一种用户
*
* @param currentPage
* @param pageSize
* @param realname
* @return
*/
@GetMapping("FuzzyQuery/{currentPage}/{pageSize}/{realname}")
public Map<String, Object> FuzzyQuery(@PathVariable("currentPage") Integer currentPage,
@PathVariable("pageSize") Integer pageSize, @PathVariable("realname") String realname) {
PageHelper.startPage(currentPage, pageSize);
Map<String, Object> returnMap = new HashMap<String, Object>();
List<Attend> list = null;
returnMap.put("content", list);
list = attendService.FuzzyQueryByRealname(realname);
returnMap.put("content", list);
return returnMap;
}
/**
*
* 按用户类型通过姓名模糊查询
* @param currentPage
* @param pageSize
* @param realname
* @param choice
* @return
*/
@GetMapping("FuzzyQuery/{currentPage}/{pageSize}/{realname}/{classes}")
public Map<String, Object> FuzzyQueryByChoice(@PathVariable("currentPage") Integer currentPage,
@PathVariable("pageSize") Integer pageSize, @PathVariable("realname") String realname,
@PathVariable("classes") String classes) {
PageHelper.startPage(currentPage, pageSize);
Map<String, Object> returnMap = new HashMap<String, Object>();
//邮件主题
String emailTitle = "邮箱验证";
//邮件内容
String emailContent = "您正在进行邮箱验证,您的验证码为:" + verifyCode
+"\n\n 验证码将于5分钟后失效!";
//发送邮件
SendMailUtil.sendEmail(mailAddress, emailTitle, emailContent);
/* 将验证码注入数据库 */
userService.updateCode(username, verifyCode);
/* 验证码在指定时间内失效 */
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
String RandomCode = RandomUtil.getCode();
userService.updateCode(username, RandomCode);
}
},300000);//300000ms(300s)即5分钟
return "success";
}catch(Exception e){
return "error";
}
}else{
//邮箱地址错误
return "addressError";
}
}else {
//用户或选择用户错误
return "userError";
}
}else{
//用户不存在
return "empty";
}
}
/**
* 按用户名查找单个账号信息
* @param username
* @return
*/
@GetMapping("/findAllByUsername/{username}")
public User findAllByUsername(@PathVariable("username") String username) {
return userService.findAllByUsername(username);
}
/**
* 分页查询所有账号信息
* @param currentPage
* @param pageSize
* @return