Java毕业设计项目实战篇|Java项目:大学生实习管理系统(java+SpringBoot+Thymeleaf+html+JQuery+bootstrap)
源码获取:博客首页 "资源" 里下载!项目介绍
本系统的用户可以分为三种:管理员、教师、学生。三种角色登录后会有不同菜单界面;
管理员主要功能:
信息管理
学生信息管理、教师信息管理、生产实习信息管理、顶岗实习信息管理;
生产实习
生产实习申请、我的生产实习、我的成绩、我的申请
顶岗实习
顶岗实习申请、我的顶岗实习、我的成绩、我的申请
实习管理
生产实习管理
生产实习过程管理
生产实习成绩统计
顶岗实习审核
顶岗实习过程管理
顶岗实习成绩统计
分享
系统管理
用户管理
菜单管理
角色信息管理
教师主要功能:
信息管理
学生信息管理;
实习管理
生产实习审核
生产实习过程管理
生产实习成绩统计
顶岗实习审核
顶岗实习过程管理
顶岗实习成绩统计
分享
信息审核;
我的分享、讨论区;
【Java毕业设计项目实战篇|Java项目:大学生实习管理系统(java+SpringBoot+Thymeleaf+html+JQuery+bootstrap)】学生主要功能:
生产实习:
生产实习申请;
我的生产实习;
我的成绩;
我的申请;
顶岗实习:
顶岗实习申请;
我的顶岗实习;
我的成绩;
我的申请;
分享:
我的分享;
讨论区;
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
6.数据库:MySql 5.7版本;
技术栈
1.核心框架:Spring Boot。
2.安全框架:Apache Shiro。
3.模板引擎:Thymeleaf。
4.持久层框架:MyBatis。
5.定时任务:Quartz。
6.数据库连接池:Druid。
7.工具类:Fastjson。
8.前端:Thymeleaf+html+JQuery+bootstrap
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 将项目中ruoyi-admin/src/main/resources/application-druid.yml配置文件中的数据库配置改为自己的配置;
3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean; maven install命令,配置tomcat,然后运行;
4. 运行项目,输入localhost:8092 登录
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
管理员信息 前端控制器:
/**
* * 管理员信息 前端控制器
*
*
* @author yy
*/
@RestController
@RequestMapping("/stu-user")
public class StuUserController {@Autowired
private Producer producer;
@Autowired
private IStuUserService iStuUserService;
@Autowired
private AuthenticationManager authenticationManager;
private final Logger log = Logger.getLogger(StuUserController.class);
@GetMapping("/user-list")
public HttpResponse getUserList(NormalQueryInfo normalQueryInfo){
return HttpResponse.success(iStuUserService.getUserList(normalQueryInfo));
}@PostMapping("/edit")
public HttpResponse editUser(@RequestBody StuUser stuUser){
return HttpResponse.success(iStuUserService.editUser(stuUser));
}@DeleteMapping("/del")
public HttpResponse delUser(@RequestBody StuUser stuUser){
return HttpResponse.success(iStuUserService.deleteUser(stuUser));
}
/**
* 验证码
*/
@GetMapping("/captcha.jpg")
public void captcha(HttpServletResponse response, HttpServletRequest request) throws IOException {
response.setHeader("Cache-Control", "no-store, no-cache");
response.setContentType("image/jpeg");
// 生成文字验证码
String text = producer.createText();
// 生成图片验证码
BufferedImage image = producer.createImage(text);
// 保存到验证码到 session
request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, text);
ServletOutputStream out = response.getOutputStream();
ImageIO.write(image, "jpg", out);
IOUtils.closeQuietly(out);
}/**
* 登录接口
*/
@PostMapping(value = "https://www.it610.com/login")
public HttpResponse login(@RequestBody LoginRequest loginRequest, HttpServletRequest request) throws IOException {
String username = loginRequest.getAccount();
String password = loginRequest.getPassword();
//String captcha = loginBean.getCaptcha();
// 从session中获取之前保存的验证码跟前台传来的验证码进行匹配
//Object kaptcha = request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
//if(kaptcha == null){
//return HttpResult.error("验证码已失效");
//}
//if(!captcha.equals(kaptcha)){
//return HttpResult.error("验证码不正确");
//}
//// 用户信息
//System.out.println(username+"|"+password+"|"+captcha+" ");
StuUser user = iStuUserService.findByName(username);
// 账号不存在、密码错误
if (user == null) {
return HttpResponse.error("账号不存在");
}
if (!PasswordUtils.matches(user.getSalt(), password, user.getPassword())) {
return HttpResponse.error("密码不正确");
}
JwtAuthenticatioToken token = SecurityUtils.login(request, username, password, authenticationManager);
log.info("user:"+token.getName()+"login Success! [In "+token.getDetails().toString()+"]");
return HttpResponse.success(new LoginResponse(token.getName(),token.getToken(),"OK!"));
}@PostMapping(value="https://www.it610.com/save")
public HttpResponse addUser(@RequestBody StuUser stuUser) {
return HttpResponse.success(iStuUserService.addUser(stuUser));
}@GetMapping(value="https://www.it610.com/findByName")
public HttpResponse findByUserName(@RequestParam String name) {
return HttpResponse.success(iStuUserService.findByName(name));
}
}
教师个人详细信息 前端控制器:
/**
* * 教师个人详细信息 前端控制器
*
*
* @author yy
*/
@RestController
@RequestMapping("/stu-teacher-info")
public class StuTeacherInfoController {@Autowired
private IStuTeacherInfoService iStuTeacherInfoService;
@GetMapping("/get")
public HttpResponse getTeacherInfosList(NormalQueryInfo normalQueryInfo){
return HttpResponse.success(iStuTeacherInfoService.getTeacherInfosList(normalQueryInfo));
}@PostMapping("/add")
public HttpResponse addTeacherInfosList(@RequestBody StuTeacherInfo stuTeacherInfo){
String res = iStuTeacherInfoService.addTeacherInfosList(stuTeacherInfo);
return res == null ? HttpResponse.success() : HttpResponse.error(res) ;
}@PostMapping("/edit")
public HttpResponse editTeacherInfosList(@RequestBody StuTeacherInfo stuTeacherInfo){
return HttpResponse.success(iStuTeacherInfoService.editTeacherInfosList(stuTeacherInfo));
}@DeleteMapping("/del")
public HttpResponse delTeacherInfosList(@RequestBody StuTeacherInfo stuTeacherInfo){
return HttpResponse.success(iStuTeacherInfoService.delTeacherInfosList(stuTeacherInfo));
}@GetMapping("/remove-course-teacher")
public HttpResponse delCourse(@RequestParam("teacherId") Integer teacherId){
return HttpResponse.success(iStuTeacherInfoService.setCourseTeacherById(teacherId,-1));
}@GetMapping("/get-no-course")
public HttpResponse getAllTeacherInfosListNoCourse(){
return HttpResponse.success(iStuTeacherInfoService.getAllTeacherInfosListNoCourse());
}@GetMapping("/set-course")
public HttpResponse setCourseTeacher(@RequestParam(value = "https://www.it610.com/article/teacherId") Integer teacherId,
@RequestParam(value = "https://www.it610.com/article/courseId") Integer courseId){
return HttpResponse.success(iStuTeacherInfoService.setCourseTeacherById(teacherId,courseId));
}}
学生信息 前端控制器:
/**
* * 学生信息 前端控制器
*
*
* @author yy
*/
@RestController
@RequestMapping("/stu-info")
public class StuInfoController {@Autowired
private IStuInfoService iStuInfoService;
/**
* 分页查询全部信息
* */
@GetMapping("/get")
public HttpResponse getPageStudentInfo(QueryStuInfoListRequest queryStuInfoListRequest){
return HttpResponse.success(iStuInfoService.getPageStudentInfo(
queryStuInfoListRequest.getPageNum(), queryStuInfoListRequest.getPageSize()
));
}/**
* 对基本信息进行高级查询
* */
@GetMapping("/get-test")
public HttpResponse getPageStudentInfoByCondition(QueryStuInfoListRequest queryStuInfoListRequest){
iStuInfoService.getStudentInfoByCondition(queryStuInfoListRequest);
QueryListResponse queryStuInfoListResponse = iStuInfoService.getStudentInfoByCondition(queryStuInfoListRequest);
//如果stuInfoListResponse.getNumOfTotalRecord() < 0 ,则表明输入类型和预期不符且发生异常,则返回错误
return queryStuInfoListResponse.getNumOfTotalRecord() < 0 ?
HttpResponse.error("输入信息类型错误!") : HttpResponse.success(queryStuInfoListResponse);
}/**
* 添加学生信息
* */
@PostMapping("/add")
public HttpResponse addStudentInfo(@RequestBody StuInfo stuInfo){
String res = iStuInfoService.addStudentInfo(stuInfo);
//返回信息的长度大于0,则表示有错误或有提示信息
return res.length() > 0 ? HttpResponse.error(res) : HttpResponse.success("成功插入一条记录") ;
}/**
* 编辑学生性别或手机号信息
* */
@PostMapping("/edit")
public HttpResponse editStudentSexOrPhoneInfo(@RequestBody StuInfo stuInfo){
return HttpResponse.success(iStuInfoService.editStudentInfo(stuInfo));
}/**
* 根据学号删除学生信息
* */
@DeleteMapping("/delete")
public HttpResponse deleteStudentInfoByNumber(@RequestBody StuInfo stuInfo){
return HttpResponse.success(iStuInfoService.deleteStudentInfo(stuInfo));
}/**
* 修改学生违纪状态
* */
@PostMapping("/change")
public HttpResponse changeStudentStatus(@RequestBody StuInfo stuInfo){
return HttpResponse.success(iStuInfoService.changeStudentStatus(stuInfo));
}
}
源码获取:博客首页 "资源" 里下载!
推荐阅读
- KunlunDB对MySQL私有DML语法的支持
- java|15个Java线程并发面试题和答案(java高级)
- 数据库|mysql主从同步
- java历史
- Android|Android Studio安装教程(保姆级超级详细)
- Java毕业设计项目实战篇|Java项目:优咪商城系统(java+SpringBoot+html+bootstrap+layui+maven+mysql)
- 人工智能|创新实践”项目介绍9(《Taekwondo Automatic Scoring System》)
- 人工智能|学术活动只有Conference吗(还有School!)
- LeetCode|450. 删除二叉搜索树中的节点