【开源】SpringBoot框架开发学生综合素质评价系统
目录
一、摘要
1.1 项目介绍
基于JAVA+Vue+SpringBoot+MySQL的学生综合素质评价系统,包含了成绩查询模块、学生自评模块、教师评价模块和教务打分模块,还包含系统自带的用户管理、班级管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,学生综合素质评价系统基于角色的访问控制,给学生、教师和教务管理员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。
1.2 项目录屏
二、功能模块
2.1 学生功能
登录:勾选学生登录
学业发展水平(分三个部分,第一个是上学期均分(教师端填写,填写3门课语数外,然后自动计算)学生端只能查看,第二个部分是个自评问卷(内容和分值我会给),第三个部分是获奖情况(用下拉菜单之类的实现等级的区分,国家级,省级之类的,加分和这个有关),对应的加分数值我会给),前两个满分都是一百分,最后的得分取均分加上获奖情况的额外加分。
品德与社会化水平(分两个部分,第一部分是自评问卷,第二部分是教师填写的问卷(教师端填写)自己只能查看填写结果)。满分都是一百分,最后的得分取均分。
身心健康水平(分两个部分,第一部分是自评问卷,第二部分是教师填写的问卷,(教师端填写)自己只能查看填写结果,第三部分是教务处填写的体育考试分数)。三个满分都是一百分,最后的得分取均分。
分数查看功能:查看三个部分的分数和综合分数(综合分数就是三个部分的均分)
2.2 教师功能
登录(选择教师登录)
修改个人信息
评价学生学业发展水平(填写学生上学期分数),没填写的学生会留存在这个页面,直到填写完毕为止。
评价学生品德与社会化水平(填写问卷),没填写的学生会留存在这个页面,直到评价完毕为止。
查询学生信息,只能查询属于自己的班级的(通过姓名或者学号,或者该学生是否评价完的状态(这里的评价完就是指自己有没有评价完,不管学生自评和教务处填写的东西),或者综合成绩的区间)。信息包括学号,姓名,班级,分数的查看(包括学业、品德、身心健康和综合成绩等四项)和是否已经完成评价。
2.3 教务处功能
登录(选择教务处登录)
修改个人信息
评价学生身心健康水平(填写体育考试分数),没填写的学生会留存在这个页面,直到评价完毕为止。
查询学生信息(通过姓名或者学号,或者班级,或者该学生是否评价完的状态(这里的评价完就是指自己有没有评价完,不管学生自评和教师填写的东西),或者综合成绩的区间),信息包括学号,姓名,分数的查看(包括学业、品德、身心健康和综合成绩等四项)和是否已经完成评价。
三、系统展示
四、核心代码
4.1 查询我的学科竞赛
@RequestMapping(value = "/getMyPage", method = RequestMethod.GET)
@ApiOperation(value = "查询我的学科竞赛")
public Result<IPage<Competition>> getMyPage(@ModelAttribute Competition competition ,@ModelAttribute PageVo page){
User currUser = securityUtil.getCurrUser();
QueryWrapper<StudentEvaluate> seQw = new QueryWrapper<>();
seQw.eq("user_id",currUser.getId());
List<StudentEvaluate> evaluateList = iStudentEvaluateService.list(seQw);
StudentEvaluate se = null;
if(evaluateList.size() < 1) {
se = EvaluateUtils.getBlackStudentEvaluate(currUser.getId());
iStudentEvaluateService.saveOrUpdate(se);
} else {
se = evaluateList.get(0);
}
QueryWrapper<Competition> qw = new QueryWrapper<>();
qw.eq("evaluate_id",se.getId());
if(!ZwzNullUtils.isNull(competition.getLevel())) {
qw.like("level",competition.getLevel());
}
if(!ZwzNullUtils.isNull(competition.getTitle())) {
qw.like("title",competition.getTitle());
}
if(!ZwzNullUtils.isNull(competition.getValue())) {
qw.like("value",competition.getValue());
}
IPage<Competition> data = iCompetitionService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<Competition>>().setData(data);
}
4.2 保存单个问卷
@RequestMapping(value = "/saveOneByType", method = RequestMethod.GET)
@ApiOperation(value = "保存单个问卷")
public Result<Object> getOneByType(@RequestParam int type, @RequestParam String value){
StudentEvaluate studentEvaluate = evaluateUtils.getMyStudentEvaluate();
QueryWrapper<Questionnaire> qw = new QueryWrapper<>();
qw.eq("evaluate_id",studentEvaluate.getId());
qw.eq("type",type);
List<Questionnaire> questionnaireList = iQuestionnaireService.list(qw);
if(questionnaireList.size() < 1) {
Questionnaire qu = new Questionnaire();
qu.setType(type);
qu.setValue(value);
qu.setEvaluateId(studentEvaluate.getId());
qu.setStatus(1);
iQuestionnaireService.saveOrUpdate(qu);
} else {
Questionnaire questionnaire = questionnaireList.get(0);
questionnaire.setValue(value);
questionnaire.setStatus(1);
iQuestionnaireService.saveOrUpdate(questionnaire);
}
return ResultUtil.success();
}
4.3 根据类型查询学生问卷
@RequestMapping(value = "/getOneByType", method = RequestMethod.GET)
@ApiOperation(value = "根据类型查询学生问卷")
public Result<List<String>> getOneByType(@RequestParam int type){
StudentEvaluate se = evaluateUtils.getMyStudentEvaluate();
QueryWrapper<Questionnaire> qw = new QueryWrapper<>();
qw.eq("evaluate_id",se.getId());
qw.eq("type",type);
List<Questionnaire> questionnaireList = iQuestionnaireService.list(qw);
if(questionnaireList.size() < 1) {
return new ResultUtil<List<String>>().setData(new ArrayList<>());
}
return new ResultUtil<List<String>>().setData(StrToListUtils.getListByStr(questionnaireList.get(0).getValue()));
}
4.4 填写语数外评价
@RequestMapping(value = "/editYuShuWai", method = RequestMethod.GET)
@ApiOperation(value = "填写语数外评价")
public Result<StudentEvaluate> editYuShuWai(@RequestParam String id,@RequestParam float yu,@RequestParam float shu,@RequestParam float wai){
StudentEvaluate evaluate = iStudentEvaluateService.getById(id);
if(evaluate == null) {
return ResultUtil.error("评价单不存在");
}
evaluate.setAchievementOne(BigDecimal.valueOf(yu));
evaluate.setAchievementTwo(BigDecimal.valueOf(shu));
evaluate.setAchievementThree(BigDecimal.valueOf(wai));
evaluate.setAchievementSum(BigDecimal.valueOf((yu + shu + wai) / 3));
double oneSum = (evaluate.getAchievementSum().floatValue() + evaluate.getQuestionnaireOne().floatValue()) / 2 + evaluate.getCompetitionMine().floatValue();
evaluate.setAnsOne(BigDecimal.valueOf(oneSum));
double ansSum = (evaluate.getAnsOne().floatValue() + evaluate.getAnsTwo().floatValue() + evaluate.getAnsThree().floatValue()) / 3;
evaluate.setAnsSum(BigDecimal.valueOf(ansSum));
iStudentEvaluateService.saveOrUpdate(evaluate);
return new ResultUtil<StudentEvaluate>().setData(iStudentEvaluateService.getById(id));
}
4.5 填写品德自评问卷分
@RequestMapping(value = "/editPinDeZiPing", method = RequestMethod.GET)
@ApiOperation(value = "填写品德自评问卷分")
public Result<Object> editPinDeZiPing(@RequestParam float grade){
StudentEvaluate evaluate = evaluateUtils.getMyStudentEvaluate();
evaluate.setQuestionnaireTwo(BigDecimal.valueOf(grade));
double twoSum = (evaluate.getQuestionnaireTwo().floatValue() + evaluate.getQuestionnaireThree().floatValue()) / 2;
evaluate.setAnsTwo(BigDecimal.valueOf(twoSum));
double ansSum = (evaluate.getAnsOne().floatValue() + evaluate.getAnsTwo().floatValue() + evaluate.getAnsThree().floatValue()) / 3;
evaluate.setAnsSum(BigDecimal.valueOf(ansSum));
iStudentEvaluateService.saveOrUpdate(evaluate);
return ResultUtil.success();
}
五、免责说明
- 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
- 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
- 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。
下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!
- 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
- 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
- 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
- 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。