开发者社区> 编程指南针> 正文

用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)排名 选出冠军、亚军、季军

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

imageimage.gif编辑

参赛用户登陆:

imageimage.gif编辑

imageimage.gif编辑

报名参赛:

imageimage.gif编辑

imageimage.gif编辑

报名成功后上传视频:

imageimage.gif编辑

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

imageimage.gif编辑

imageimage.gif编辑

imageimage.gif编辑

imageimage.gif编辑

imageimage.gif编辑

管理员登陆:

imageimage.gif编辑

imageimage.gif编辑

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

imageimage.gif编辑

imageimage.gif编辑

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

imageimage.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


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
19160 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
28407 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
13252 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
22225 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
15849 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20323 0
+关注
编程指南针
作者简介:阿里云特邀作者、Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、CSDN名师课堂讲师、腾讯课堂常驻讲师 主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助
53
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载