学生为学校教研室开发技能大赛评分系统

简介: 开发工具:IDEA /Eclipse数据库:MYSQL5.7+Redis前端开发:Layui+Bootstrap后端开发:SSM开发框架功能需求:总共分为三个阶段第一个阶段是:教研室比赛阶段(同一个教研室的老师比赛),同一学院下多个教研室分别选取该教研室分数高的数人晋级到第二阶段:学院比赛。第二个阶段是:学院比赛阶段:从第一阶段晋级过来的老师中选取分数最高的数名代表学院参加第三阶段(总决赛)比赛第三个阶段是:总决赛:从第二阶段晋级来的选手比赛,排名,选出冠军、亚军、季军。

 作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助

文末获取源码

项目编号:BS-GX-009

开发工具:IDEA /Eclipse

数据库:MYSQL5.7+Redis

前端开发:Layui+Bootstrap

后端开发:SSM开发框架

功能需求:

总共分为三个阶段

第一个阶段是:教研室比赛阶段(同一个教研室的老师比赛),同一学院下多个教研室分别选取该教研室分数高的数人晋级到第二阶段:学院比赛。

第二个阶段是:学院比赛阶段:从第一阶段晋级过来的老师中选取分数最高的数名代表学院参加第三阶段(总决赛)比赛

第三个阶段是:总决赛:从第二阶段晋级来的选手比赛,排名,选出冠军、亚军、季军。

该管理系统主要实现以下几个主要功能:

1、教研室比赛(线上比赛)阶段主要内容:

(1)教师注册,登录、退出功能;

(2)教师个人信息管理;

(3)教师报名功能;(不是所有注册过的老师都会报名只有报名之后才是选手)

(4)教师上传参赛视频功能;

(5)评委打分功能;(每个评委给某一场比赛的选手打分 数据库表:比赛ID 选手ID 评委ID 分数)

(6)管理员登录、查看老师信息(包括上传的视频)  修改老师分数(把评委打的分计算得到的值(十个评委去掉最高分和最低分剩下的取平均值)录入)

(7)晋级功能。(第1阶段选取成绩最高的数名选手晋级到第2阶段学院比赛)

2、学院比赛(线下比赛)阶段主要内容:

(1)评委打分(每个评委给某一场比赛的选手打分 数据库表:比赛ID 选手ID 评委ID 分数)

(2)管理员登录、查看老师信息 修改老师分数(把评委打的分计算得到的值(十个评委去掉最高分和最低分剩下的取平均值)录入)

(3)晋级功能。(第2阶段选取成绩最高的数名选手晋级到第3阶段学院比赛)

3、学校决赛(线下比赛)主要内容:

(1)评委打分(每个评委给某一场比赛的选手打分 数据库表:比赛ID 选手ID 评委ID 分数)

(2)管理员登录、查看老师信息 修改老师分数(把评委打的分计算得到的值(十个评委去掉最高分和最低分剩下的取平均值)录入)

(3)排名 选出冠军、亚军、季军

下面展示一下系统的部分实现功能:

image.gif编辑

参赛用户登陆:

image.gif编辑

image.gif编辑

报名参赛:

image.gif编辑

image.gif编辑

报名成功后上传视频:

image.gif编辑

评委登陆系统开始打分:所有评委进入系统为每个作品打分

image.gif编辑

image.gif编辑

image.gif编辑

image.gif编辑

image.gif编辑

管理员登陆:

image.gif编辑

image.gif编辑

晋级管理:可以分阶段管理,依次是教研室,学校,学院决赛。主要根据各评委打分生成平均分进行排名

image.gif编辑

image.gif编辑

前端主页可以查看各阶段比较排名结果:

image.gif编辑

系统核心实现代码:

package controller;
import com.alibaba.fastjson.JSON;
import entity.Response;
import entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import service.LoginService;
@Controller
@RequestMapping(value = "login")
public class LoginController {
    @Autowired
    private LoginService loginService;
    @ResponseBody
    @RequestMapping(value = "login.do")
    public Response login(String  userName,String password){
        User user = loginService.login(userName,password);
        Response res = new Response();
        if (user != null){
            Integer flag = loginService.loginStatus(user);
            if (flag == 1){
                res.setMessage("登陆成功!");
                user.setIslogin(true);
                res.setTag(true);
                res.setUser(user);
            }
        }else {
            res.setMessage("登录失败,请检查账号或密码是否正确!");
            res.setTag(false);
        }
        return res;
    }
    @ResponseBody
    @RequestMapping(value = "register.do")
    public Response register(User user){
        Response res = new Response();
        System.out.println("data=>"+user+user.getName()+user.getPhonenum());
        Integer flag = loginService.checkUser(user.getUsername(),user.getPhonenum());
        if (flag == 1){
            res.setTag(false);
            res.setMessage("该用户已注册!");
        }else {
            User userInfo = loginService.register(user);
            if (userInfo != null) {
                res.setTag(true);
                res.setMessage("账号注册成功!");
                res.setUser(userInfo);
            }else {
                res.setTag(false);
                res.setMessage("账号注册失败!");
            }
        }
        return res;
    }
    @ResponseBody
    @RequestMapping(value = "logout.do")
    public Response logout(String id){
        Response res =  new Response();
        int flag = loginService.logout(id);
        if (flag == 1){
            res.setTag(true);
            res.setMessage("账号退出登录成功!");
        }else {
            res.setTag(false);
            res.setMessage("退出登录失败!请联系管理员");
        }
        return res;
    }
    @ResponseBody
    @RequestMapping(value = "updateUserInfo.do")
    public Response updateUserInfo(User user){
        Response res = new Response();
        int flag = loginService.updateUser(user);
        if (flag == 1){
            res.setMessage("资料修改成功!");
            res.setUser(loginService.getUserInfo(user.getId()));
            res.setTag(true);
        }else {
            res.setMessage("资料修改失败!");
            res.setTag(false);
        }
        return res;
    }
}

image.gif

package controller;
import entity.Match;
import entity.ResponseJSON;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import service.DateTimeService;
import service.MatchService;
import util.DateUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
@Controller
@RequestMapping("file")
public class VideoController {
    String path = "D:\\uploadFiles\\";
    @Autowired
    private MatchService matchService;
    @Autowired
    private DateTimeService dateTimeService;
    @RequestMapping(value="upload.do")
    @ResponseBody
    public ResponseJSON upload(MultipartHttpServletRequest request) {
        String deadLine = dateTimeService.getDeadLine();
        // 获取文件map集合
        Map<String, MultipartFile> fileMap = request.getFileMap();
        MultipartFile file1 = fileMap.get("file");
        String mediaType = file1.getContentType();
        ResponseJSON rsp = new ResponseJSON();
        String[] un = request.getParameterMap().get("id");
        String[] ftl = request.getParameterMap().get("mediaType");
        String playerId = un[0];
        if (file1.isEmpty()) {
            rsp.setTag(false);
            rsp.setMessage("上传文件不能为空");
        } else {
            String originalFilename = file1.getOriginalFilename();
            try {
                // 创建要上传的路
//                File fdir = new File("/home/uploadFiles");
        File fdir = new File(path);
                if (!fdir.exists()) {
                    fdir.mkdirs();
                }
                // 文件上传到路径下
                FileUtils.copyInputStreamToFile(file1.getInputStream(), new File(fdir, originalFilename));
                // coding
                rsp.setTag(true);
                rsp.setMessage("上传文件成功");
            } catch (Exception e) {
                rsp.setTag(false);
                rsp.setMessage("上传文件失败");
            }
        }
        Match req = new Match();
        req.setPlayerid(playerId);
        req.setVideourl(file1.getOriginalFilename());
        req.setMediaType(mediaType);
        if(matchService.fileIsExist(req)>0) {
            File file = new File(matchService.getFileUrl(req).getVideourl());// 读取
            file.delete();
            int flag = matchService.uploadVideo(req);
            if (flag == 1) {
                rsp.setMessage("上传文件成功,已覆盖源文件");
            }
        }else {
            Match match = new Match();
            String filePath = file1.getOriginalFilename();
            match.setVideourl(filePath);
            match.setPlayerid(playerId);
            match.setMediaType(mediaType);
            matchService.uploadVideo(match);
            Date date = new Date();
            SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            matchService.uploadVideo(match);
        }
        return rsp;
    }
    @RequestMapping(value="download",produces = "application/json;charset=UTF-8")
    @ResponseBody
    public ResponseJSON download(HttpServletRequest request, HttpServletResponse response)  {
        String fn = request.getParameter("fileName").toString();
        ResponseJSON rsp = new ResponseJSON();
        //模拟文件,myfile.txt为需要下载的文件
//        String path = "/home/uploadFiles/"+fn;
        String paths = path + fn;
        System.out.println(paths+"下载路径");
        //获取输入流
        InputStream bis;
        try {
            bis = new BufferedInputStream(new FileInputStream(new File(paths)));
            System.out.println("获取file成功");
            String filename = URLEncoder.encode(fn,"UTF-8");
            //设置文件下载头
            response.addHeader("Content-Disposition", "attachment;filename=" + filename);
            //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
//          response.setContentType("multipart/form-data");
            response.setContentType("application/json;charset=UTF-8");
            BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
            System.out.println("开始转成流");
            int len = 0;
            while((len = bis.read()) != -1){
                out.write(len);
                out.flush();
            }
            out.close();
            rsp.setTag(true);
            rsp.setMessage("下载文件成功");
        } catch (IOException e) {
            rsp.setTag(false);
            rsp.setMessage("下载文件失败");
        }
        return rsp;
    }
}

image.gif

package controller;
import entity.Judges;
import entity.Match;
import entity.Response;
import entity.ResponseJSON;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import service.JudgeService;
import java.util.List;
@Controller
@RequestMapping(value = "judge")
public class JudgeController {
    @Autowired
    private JudgeService judgeService;
    @ResponseBody
    @RequestMapping(value = "rateMatch")
    public ResponseJSON rateMatch(Judges match){
        ResponseJSON res = new ResponseJSON();
        int flag = judgeService.getVideoMenu(match);
        if (flag == 0) {
            res.setMessage("打分失败!");
            res.setTag(true);
        }else {
            res.setMessage("打分成功!");
            res.setTag(true);
        }
        return res;
    }
    @ResponseBody
    @RequestMapping(value = "checkScored")
    public ResponseJSON checkScored(Judges match){
        ResponseJSON res = new ResponseJSON();
        return res;
    }
    @ResponseBody
    @RequestMapping(value = "calculationAverage")
    public ResponseJSON calculationAverage(String matchId,String playerId,String adminId){
        ResponseJSON res = new ResponseJSON();
        int flag = judgeService.checkAdmin(adminId);
        int judgeNum =judgeService.checkJudged(matchId,playerId);
        if (flag == 0){
            res.setTag(false);
            res.setMessage("您没有权限录入分数");
        }
        if (judgeNum < 3 ){
            res.setTag(false);
            res.setMessage("评分尚未完成!");
        }else {
            int updated = judgeService.updateTotalScore(matchId,playerId);
            if (updated == 1){
                res.setTag(true);
                res.setMessage("修改分数完成!");
            }else {
                res.setTag(false);
                res.setMessage("更新总分失败!");
            }
            int ended = judgeService.checkMatchEnd(matchId);
            if (ended == 0){
                String level = judgeService.getCurrentLevel(matchId);
                if (level.equals("已结束")){
                    res.setTag(true);
                    res.setMessage("已决出关亚季军!");
                }else {
                    int promote = judgeService.updatePromotion(matchId, level);
                    if (promote == 1) {
                        res.setMessage("所有参赛人员总分已产生,该场比赛结果已产生!");
                        res.setTag(true);
                    } else {
                        res.setMessage("所有参赛人员总分已产生,该场比赛结果产生失败,请联系管理员!");
                        res.setTag(false);
                    }
                }
            }
        }
        return res;
    }
}

image.gif


相关文章
|
7月前
|
开发框架 .NET Java
高校在线心理咨询系统的设计与实现(论文+源码)_kaic
高校在线心理咨询系统的设计与实现(论文+源码)_kaic
高校在线心理咨询系统的设计与实现(论文+源码)_kaic
|
数据可视化 关系型数据库 MySQL
2023年职业院校技能大赛中职组----大数据应用与服务赛项任务书试题
2023年职业院校技能大赛中职组----大数据应用与服务赛项任务书试题
915 0
|
7月前
|
Java 关系型数据库 MySQL
高校大学生社团管理系统的设计与实现(论文+源码)_kaic
高校大学生社团管理系统的设计与实现(论文+源码)_kaic
|
7月前
|
网络协议 安全 数据安全/隐私保护
【题目】【网络系统管理】2022年甘肃省职业院校技能大赛-网络构建-试卷
【题目】【网络系统管理】2022年甘肃省职业院校技能大赛-网络构建-试卷
【题目】【网络系统管理】2022年甘肃省职业院校技能大赛-网络构建-试卷
|
7月前
|
测试技术 数据库 开发工具
高校奖学金评定系统的设计与实现(论文+源码)_kaic
高校奖学金评定系统的设计与实现(论文+源码)_kaic
|
SQL 前端开发 JavaScript
【实训项目】你好,教练-校园私教平台的设计与开发
【实训项目】你好,教练-校园私教平台的设计与开发
|
索引
高职考技能提升教程011期 生成随机颜色的综合运用
高职考技能提升教程011期 生成随机颜色的综合运用
103 0
|
开发框架 前端开发 数据库
学生为学校教研室开发技能大赛评分系统
学生为学校教研室开发技能大赛评分系统
133 0
学生为学校教研室开发技能大赛评分系统
|
Java 关系型数据库 MySQL
使用Javaweb开发大学生综合素质测评系统
使用Javaweb开发大学生综合素质测评系统
138 0
使用Javaweb开发大学生综合素质测评系统