源码获取:俺的博客首页 "资源" 里下载!
项目介绍
基于SpringBoot Vue的实习管理系统
角色:管理员、教师、学生
管理员:管理员登录进入实习管理系统可以查看首页,个人中心,班级管理,学生管理,教师管理,实习单位管理,实习作业管理,教师评分管理,单位成绩管理,系统管理等功能
教师:教师登录进入实习管理系统可以查看首页,个人中心,实习作业管理,教师评分管理等功能
学生:学生登录进入实习管理系统可以查看首页,个人中心,实习作业管理,教师评分管理单位成绩管理等功能进行详细操作
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
4.数据库:MySql 5.7/8.0版本均可;
5.是否Maven项目:是;
技术栈
后端:SpringBoot+Mybaits
前端:Vue+ElementUI+Layui+HTML+CSS+JS
使用说明
项目运行:
1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4. 运行项目,控制台提示运行成功后再去运行前端项目;
5. 管理员用户名密码:admin/admin
普通用户名密码:user/123456
学生端我的生产实习控制层:
@Controller()
@Api("学生端我的生产实习")
@RequestMapping("/sau/myprod")
public class MyProdController extends BaseController {
private String prefix = "sau/production";
@Autowired
private MyProdService myProdService;
@RequiresPermissions("system:myprod:view")
@GetMapping()
public String myProd(){
return prefix + "/myProd";
}
/**
* 修改生产实习信息
*/
@GetMapping("/edit/{worklyId}")
public String edit(@PathVariable("worklyId") long worklyId, ModelMap mmap)
{
mmap.put("workly", myProdService.selectWeekById(worklyId));
return prefix + "/weekEdit";
}
@PostMapping("/updateWeekly")
@RequiresPermissions("system:myprod:edit")
@ApiOperation(value = "修改周报内容")
@Transactional
@ResponseBody
public AjaxResult updateWeekly(@RequestParam HashMap<String,Object> map){
return myProdService.updateWeekly(map);
}
@PostMapping("/selectWeekBystuId")
@RequiresPermissions("system:myprod:list")
@ApiOperation(value = "根据学生ID查找该生生产实习周报")
@ResponseBody
public TableDataInfo selectWeekBystuId(@RequestParam(value = "worklyId",defaultValue = "0") long worklyId,
@RequestParam(value = "productionId",defaultValue = "0") long productionId,
@RequestParam(value = "worklyCategory",defaultValue = "") String worklyCategory){
startPage();
long stuId = ShiroUtils.getUserId();
List<Map<String,Object>> list = myProdService.selectWeekBystuId(stuId,worklyId,productionId,worklyCategory);
return getDataTable(list);
}
}
生产实习信息管理控制层:
@Controller()
@Api("生产实习信息管理")
@RequestMapping("/sau/production")
public class ProductionController extends BaseController {
private String prefix = "sau/production";
@Autowired
private ProductionService productionService;
@RequiresPermissions("system:production:view")
@GetMapping()
public String production(){
return prefix + "/production";
}
/**
* 发布生产实习信息
*/
@GetMapping("/add")
public String add()
{
return prefix + "/add";
}
/**
* 发布生产实习信息
* @return
*/
@PostMapping("/addProduction")
@Transactional
@RequiresPermissions("system:production:add")
@ApiOperation(value = "发布生产实习信息")
@ResponseBody
public AjaxResult addProduction(Production production) {
if(!production.getProductionWeeks().matches("-?[0-9]+")){
return AjaxResult.warn("输入的周报数量不是整数或不是数字");
}
if(!production.getPacific().matches("-?[0-9]+.?[0-9]*")){
return AjaxResult.warn("输入的周报成绩占比不是数字");
}
if(!production.getExam().matches("-?[0-9]+.?[0-9]*")){
return AjaxResult.warn("输入的总结成绩占比不是数字");
}
double pacific = Double.parseDouble(production.getPacific());
double exam = Double.parseDouble(production.getExam());
if(pacific< 0 || pacific > 100){
return AjaxResult.warn("请输入的周报成绩占比在(0~100)之间");
}
if(exam < 0 || exam > 100){
return AjaxResult.warn("请输入的总结成绩占比在(0~100)之间");
}
if(pacific + exam != 100){
return AjaxResult.warn("周报成绩+总结成绩占比不等于100%");
}
int Count = productionService.addProduction(production);
if(Count > 0){
return AjaxResult.success("发布生产实习信息成功");
}
return AjaxResult.warn("发布生产实习信息失败");
}
/**
* 修改生产实习信息
*/
@GetMapping("/edit/{productionId}")
public String edit(@PathVariable("productionId") long productionId, ModelMap mmap)
{
mmap.put("production", productionService.selectProductionById(productionId));
return prefix + "/edit";
}
@PostMapping("/updateProduction")
@RequiresPermissions("system:production:edit")
@ApiOperation(value = "修改生产实习信息")
@Transactional
@ResponseBody
public AjaxResult updateProduction(@RequestParam HashMap<String,Object> map){
if(!map.get("productionWeeks").toString().matches("-?[0-9]+")){
return AjaxResult.warn("输入的周报数量不是整数或不是数字");
}
if(!map.get("pacific").toString().matches("-?[0-9]+.?[0-9]*")){
return AjaxResult.warn("输入的周报成绩占比不是数字");
}
if(!map.get("exam").toString().matches("-?[0-9]+.?[0-9]*")){
return AjaxResult.warn("输入的总结成绩占比不是数字");
}
double pacific = Double.parseDouble(map.get("pacific").toString());
double exam = Double.parseDouble(map.get("exam").toString());
if(pacific< 0 || pacific > 100){
return AjaxResult.warn("请输入的周报成绩占比在(0~100)之间");
}
if(exam < 0 || exam > 100){
return AjaxResult.warn("请输入的总结成绩占比在(0~100)之间");
}
if(pacific + exam != 100){
return AjaxResult.warn("周报成绩+总结成绩占比不等于100%");
}
int Count = productionService.updateProduction(map);
if(Count > 0){
return AjaxResult.success("修改生产实习信息成功");
}
return AjaxResult.warn("修改生产实习信息失败");
}
@PostMapping("/selectProduction")
@RequiresPermissions("system:production:list")
@ApiOperation(value = "查找生产实习信息")
@Transactional
@ResponseBody
public TableDataInfo selectProduction(@RequestParam(value = "productionId",defaultValue = "0") long productionId,
@RequestParam(value = "productionName",defaultValue = "") String productionName,
@RequestParam(value = "productionCompany",defaultValue = "") String productionCompany){
startPage();
List<Map<String,Object>> list = productionService.selectProduction(productionId,productionName,productionCompany);
return getDataTable(list);
}
@PostMapping("/deleteProduction")
@RequiresPermissions("system:production:remove")
@ApiOperation(value = "删除生产实习信息")
@Transactional
@ResponseBody
public AjaxResult deleteProduction(@RequestParam(value = "ids") String productionId){
productionService.deleteProduction(productionId);
return AjaxResult.success("删除生产实习信息成功");
}
}
顶岗实习信息管理控制层:
@Controller()
@Api("顶岗实习信息管理")
@RequestMapping("/sau/work")
public class WorkController extends BaseController {
private String prefix = "sau/work";
@Autowired
private WorkService workService;
@RequiresPermissions("system:work:view")
@GetMapping()
public String production(){
return prefix + "/work";
}
@PostMapping("/selectWork")
@RequiresPermissions("system:work:list")
@ApiOperation(value = "查找顶岗实习信息")
@Transactional
@ResponseBody
public TableDataInfo selectWork(@RequestParam(value = "workId",defaultValue = "0")long workId,
@RequestParam(value = "workName",defaultValue = "")String workName){
startPage();
List<Map<String,Object>> list = workService.selectWork(workId,workName);
return getDataTable(list);
}
/**
* 发布顶岗实习信息
*/
@GetMapping("/add")
public String add()
{
return prefix + "/add";
}
/**
* 发布顶岗实习信息
* @return
*/
@PostMapping("/addWork")
@Transactional
@RequiresPermissions("system:work:add")
@ApiOperation(value = "发布顶岗实习信息")
@ResponseBody
public AjaxResult addWork(Work work) {
if(!work.getWorkWeeks().matches("-?[0-9]+")){
return AjaxResult.warn("输入的周报数量不是整数或不是数字");
}
if(!work.getPacific().matches("-?[0-9]+.?[0-9]*")){
return AjaxResult.warn("输入的周报成绩占比不是数字");
}
if(!work.getExam().matches("-?[0-9]+.?[0-9]*")){
return AjaxResult.warn("输入的总结成绩占比不是数字");
}
double pacific = Double.parseDouble(work.getPacific());
double exam = Double.parseDouble(work.getExam());
if(pacific< 0 || pacific > 100){
return AjaxResult.warn("请输入的周报成绩占比在(0~100)之间");
}
if(exam < 0 || exam > 100){
return AjaxResult.warn("请输入的总结成绩占比在(0~100)之间");
}
if(pacific + exam != 100){
return AjaxResult.warn("周报成绩+总结成绩占比不等于100%");
}
int Count = workService.addWork(work);
if(Count > 0){
return AjaxResult.success("发布顶岗实习信息成功");
}
return AjaxResult.warn("发布顶岗实习信息失败");
}
/**
* 修改顶岗实习信息
*/
@GetMapping("/edit/{workId}")
public String edit(@PathVariable("workId") long workId, ModelMap mmap)
{
mmap.put("work", workService.selectWorkById(workId));
return prefix + "/edit";
}
@PostMapping("/updateWork")
@RequiresPermissions("system:work:edit")
@ApiOperation(value = "修改顶岗实习信息")
@Transactional
@ResponseBody
public AjaxResult updateWork(@RequestParam HashMap<String,Object> map){
if(!map.get("workWeeks").toString().matches("-?[0-9]+")){
return AjaxResult.warn("输入的周报数量不是整数或不是数字");
}
if(!map.get("pacific").toString().matches("-?[0-9]+.?[0-9]*")){
return AjaxResult.warn("输入的周报成绩占比不是数字");
}
if(!map.get("exam").toString().matches("-?[0-9]+.?[0-9]*")){
return AjaxResult.warn("输入的总结成绩占比不是数字");
}
double pacific = Double.parseDouble(map.get("pacific").toString());
double exam = Double.parseDouble(map.get("exam").toString());
if(pacific< 0 || pacific > 100){
return AjaxResult.warn("请输入的周报成绩占比在(0~100)之间");
}
if(exam < 0 || exam > 100){
return AjaxResult.warn("请输入的总结成绩占比在(0~100)之间");
}
if(pacific + exam != 100){
return AjaxResult.warn("周报成绩+总结成绩占比不等于100%");
}
int Count = workService.updateWork(map);
if(Count > 0){
return AjaxResult.success("修改顶岗实习信息成功");
}
return AjaxResult.warn("修改顶岗实习信息失败");
}
@PostMapping("/deleteWork")
@RequiresPermissions("system:work:remove")
@ApiOperation(value = "删除顶岗实习信息")
@Transactional
@ResponseBody
public AjaxResult deleteWork(@RequestParam(value = "ids") String workId){
workService.deleteWork(workId);
return AjaxResult.success("删除顶岗实习信息成功");
}
}
源码获取:俺的博客首页 "资源" 里下载!