用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


相关文章
|
4月前
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
1月前
|
前端开发 Oracle 关系型数据库
关于使用SSM+JSP开发时setter、getter隐式调用问题的小结
本文主要分享了在使用SSM+JSP进行网站开发时,因忽视setter、getter的隐式调用问题而导致的常见bug及其解决方法。详细介绍了setter和getter的隐式调用时机,并给出了具体示例,帮助开发者避免类似问题。
42 11
|
3月前
|
Java 应用服务中间件 数据库连接
ssm项目整合,简单的用户管理系统
文章介绍了一个使用SSM框架(Spring、SpringMVC、MyBatis)构建的简单用户管理系统的整合过程,包括项目搭建、数据库配置、各层代码实现以及视图展示。
ssm项目整合,简单的用户管理系统
|
3月前
|
XML Java 数据库连接
如何搭建SSM框架、图书商城系统
这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。
45 0
|
4月前
|
SQL Java 应用服务中间件
使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)
这篇文章是关于如何使用SSM框架搭建图书商城管理系统的教程,包括完整过程介绍、常见问题解答和售后服务,提供了项目地址、运行环境配置、效果图展示以及运行代码的步骤。
使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)
|
5月前
|
安全 数据挖掘 测试技术
基于SSM+Vue的家居商城系统(源码+部署说明+演示视频)(2)
基于SSM+Vue的家居商城系统(源码+部署说明+演示视频)
80 0
|
6月前
|
搜索推荐 JavaScript Java
计算机Java项目|基于SSM的个性化商铺系统
计算机Java项目|基于SSM的个性化商铺系统
|
6月前
|
前端开发 JavaScript Java
计算机Java项目|SSM智能仓储系统
计算机Java项目|SSM智能仓储系统
|
5月前
|
存储 关系型数据库 测试技术
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)(2)
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)
78 1
|
6月前
|
前端开发
杨校老师之基于SSM开发的校园点餐配送系统
杨校老师之基于SSM开发的校园点餐配送系统
65 0
杨校老师之基于SSM开发的校园点餐配送系统