项目介绍
随着国内市场经济这几十年来的蓬勃发展,突然遇到了从国外传入国内的互联网技术,互联网产业从开始的群众不信任,到现在的离不开,中间经历了很多挫折。本次开发的高校专业实习管理系统有管理员,院系负责人,教师,实习单位,学生五个角色。功能模块主要有个人中心,院系管理,专业管理,院系负责人管理,教师管理,实习单位管理,学生管理,实习流程管理,实习公告管理,实习内容管理,实习申请管理,实习安排管理,单位反馈管理,学生反馈管理,实习保障管理,成绩评定管理,实习综合成绩管理。开发本程序后台用到了Spring Boot开发技术,页面设计采用VUE框架和layui样式。数据库采用关系数据库市场占有率最高的MySQL作为本程序使用的数据库,完全符合程序使用并且有丰富的拓展余地。程序从需求到设计,从开发到测试,都在功能上和性能上都不断的进行了调试,让开发的程序在使用上用户体验更美好。
开发环境
编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SpringBoot
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序vue/爬虫/c#/asp.net
系统实现
5.1 管理员功能实现
5.1.1 专业管理
管理员可以对专业信息进行添加,修改,删除,查询操作。
图5.1 专业管理页面
5.1.2 院系管理
管理员可以对院系信息进行添加,修改,删除,查询操作。
图5.2 院系管理页面
5.1.3 院系负责人管理
管理员可以对院系负责人信息进行添加,修改,删除,查询操作。
图5.3 院系负责人管理页面
5.2 院系负责人实现
5.2.1 教师管理
院系负责人可以对教师信息进行添加,修改,删除,查询操作。
图5.4 教师管理页面
5.3 教师功能实现
5.2.1 学生管理
教师可以对自己发布过的学生信息进行添加,修改,删除,查询操作,还可以查看评论。
图5.5学生管理页面
5.2.2 实习流程管理
教师可以对自己发布过的实习流程信息进行添加,修改,删除,查询操作。
图5.6 实习流程管理页面
5.2.3 实习公告管理
教师可以对自己发布过的实习公告信息进行添加,修改,删除,查询操作。。
图5.7 实习公告管理页面
5.4 实习单位功能实现
5.4.1 实习内容管理
实习单位可以对自己发布过的实习内容信息进行添加,修改,删除,查询操作。。
图5.8 实习内容管理页面
5.4.2 单位反馈管理
实习单位可以对自己发布过的单位反馈信息进行添加,修改,删除,查询操作。。
图5.9 单位反馈管理页面
5.4.3 成绩评定管理
实习单位可以对自己发布过的成绩评定信息进行添加,修改,删除,查询操作。。
图5.10 成绩评定管理页面
5.5 学生功能实现
5.5.1 实习申请管理
学生可以对自己发布过的实习申请信息进行添加,修改,删除,查询操作。
图5.11 实习申请管理页面
5.5.2 学生反馈管理
学生可以对自己发布过的学生反馈信息进行添加,修改,删除,查询操作。
图5.12 学生反馈管理页面
5.5.3 实习综合成绩管理
学生查看和搜索自己的实习综合成绩。
图5.13 实习综合成绩管理页面
核心代码
package com.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;
import com.entity.ChengjipingdingEntity;
import com.entity.view.ChengjipingdingView;
import com.service.ChengjipingdingService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;
/**
* 成绩评定
* 后端接口
* @author
* @email
* @date
*/
@RestController
@RequestMapping("/chengjipingding")
public class ChengjipingdingController {
@Autowired
private ChengjipingdingService chengjipingdingService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ChengjipingdingEntity chengjipingding,
@RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd") Date tianjiariqistart,
@RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd") Date tianjiariqiend,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("xuesheng")) {
chengjipingding.setXuehao((String)request.getSession().getAttribute("username"));
}
if(tableName.equals("jiaoshi")) {
chengjipingding.setJiaoshigonghao((String)request.getSession().getAttribute("username"));
}
if(tableName.equals("shixidanwei")) {
chengjipingding.setDanweimingcheng((String)request.getSession().getAttribute("username"));
}
EntityWrapper<ChengjipingdingEntity> ew = new EntityWrapper<ChengjipingdingEntity>();
if(tianjiariqistart!=null) ew.ge("tianjiariqi", tianjiariqistart);
if(tianjiariqiend!=null) ew.le("tianjiariqi", tianjiariqiend);
PageUtils page = chengjipingdingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chengjipingding), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ChengjipingdingEntity chengjipingding,
@RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd") Date tianjiariqistart,
@RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd") Date tianjiariqiend,
HttpServletRequest request){
EntityWrapper<ChengjipingdingEntity> ew = new EntityWrapper<ChengjipingdingEntity>();
if(tianjiariqistart!=null) ew.ge("tianjiariqi", tianjiariqistart);
if(tianjiariqiend!=null) ew.le("tianjiariqi", tianjiariqiend);
PageUtils page = chengjipingdingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chengjipingding), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( ChengjipingdingEntity chengjipingding){
EntityWrapper<ChengjipingdingEntity> ew = new EntityWrapper<ChengjipingdingEntity>();
ew.allEq(MPUtil.allEQMapPre( chengjipingding, "chengjipingding"));
return R.ok().put("data", chengjipingdingService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(ChengjipingdingEntity chengjipingding){
EntityWrapper< ChengjipingdingEntity> ew = new EntityWrapper< ChengjipingdingEntity>();
ew.allEq(MPUtil.allEQMapPre( chengjipingding, "chengjipingding"));
ChengjipingdingView chengjipingdingView = chengjipingdingService.selectView(ew);
return R.ok("查询成绩评定成功").put("data", chengjipingdingView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
ChengjipingdingEntity chengjipingding = chengjipingdingService.selectById(id);
return R.ok().put("data", chengjipingding);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
ChengjipingdingEntity chengjipingding = chengjipingdingService.selectById(id);
return R.ok().put("data", chengjipingding);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody ChengjipingdingEntity chengjipingding, HttpServletRequest request){
chengjipingding.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(chengjipingding);
chengjipingdingService.insert(chengjipingding);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody ChengjipingdingEntity chengjipingding, HttpServletRequest request){
chengjipingding.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(chengjipingding);
chengjipingdingService.insert(chengjipingding);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@Transactional
public R update(@RequestBody ChengjipingdingEntity chengjipingding, HttpServletRequest request){
//ValidatorUtils.validateEntity(chengjipingding);
chengjipingdingService.updateById(chengjipingding);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
chengjipingdingService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<ChengjipingdingEntity> wrapper = new EntityWrapper<ChengjipingdingEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("xuesheng")) {
wrapper.eq("xuehao", (String)request.getSession().getAttribute("username"));
}
if(tableName.equals("jiaoshi")) {
wrapper.eq("jiaoshigonghao", (String)request.getSession().getAttribute("username"));
}
if(tableName.equals("shixidanwei")) {
wrapper.eq("danweimingcheng", (String)request.getSession().getAttribute("username"));
}
int count = chengjipingdingService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
论文参考
目 录
1 绪论 1
1.1 研究背景 1
1.2 研究意义 1
1.3 研究内容 1
2 开发技术 3
2.1 VUE框架 3
2.2 Mysql数据库 3
2.3 Spring Boot框架 3
2.4 layui介绍 4
3 系统分析 5
3.1可行性研究 5
3.2系统性能分析 6
3.3 系统流程分析 6
3.3.1 系统开发流程 6
3.3.2 系统注册流程 7
3.3.3 系统登录流程 8
4 系统设计 10
4.1 系统结构设计 10
4.2系统功能模块设计 11
4.3数据库设计 11
4.3.1数据库E-R图 11
4.3.2 数据库表结构 13
5 系统实现 20
5.1 管理员功能实现 20
5.1.1 专业管理 20
5.1.2 院系管理 20
5.1.3 院系负责人管理 21
5.2 院系负责人实现 21
5.2.1 教师管理 21
5.3 教师功能实现 22
5.2.1 学生管理 22
5.2.2 实习流程管理 23
5.2.3 实习公告管理 23
5.4 实习单位功能实现 24
5.4.1 实习内容管理 24
5.4.2 单位反馈管理 24
5.4.3 成绩评定管理 25
5.5 学生功能实现 26
5.5.1 实习申请管理 26
5.5.2 学生反馈管理 26
5.5.3 实习综合成绩管理 27
6系统测试 28
6.1 测试的基本概念 28
6.2 测试的任务和目的 29
6.2.1测试的任务 29
6.2.2测试的目的 29
6.3 测试结果分析 29
结 论 30
参考文献 31
致 谢 32