当前位置: 首页 > article >正文

基于SSM的在线作业管理系统 -octopus-master(源码+调试)

项目描述

临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题,今天给大家介绍一篇基于SSM的在线作业管理系统设计与实现。

功能需求

本在线作业管理系统通过分析和确定系统的角色和功能划分,按照业务合理区分为不同的菜单功能模块。从用户角度出发,对每个功能的需求实现点进行人性化详细的构思。对每个功能的细节点进行分析设计整合完成整个在作业系统的设计。
这两类的主要功能如下:
根管理员端:1)管理注册学生。2)管理注册教师。3)管理题库。4)管理课程。5)管理公告。6)管理班级。7)修改密码。等等

教师端:1)管理题库:题库类型包括选择题 判断题和简答题,题库中的题目对应不同的课程;
2)作业管理:从题库中搜索选择对应课程的题目发布作业
3)统计成绩:汇总班级成绩且导出成绩表;
4)发布公告:向学生发送公告。
5)个人信息修改、登录密码修改

学生端:1)查看公告;
2)查看个人课程,个人可以自己报名选择课程
3)个人信息修改、登录密码修改
4)在线完成作业,可查看成绩和答案。
等等具体以图片中的功能为主

部分效果图

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

部分代码

@Controller
public class StudentExamController {
    int tihao = 0;
    @Autowired
    private StudentExamService studentExamService;
    @Autowired
    private ManagerScoreService managerScoreService;

    @RequestMapping(value = "/toStudentExam.action")
    public String handlerExam(Integer id, String user_sno, HttpServletRequest request) {
        ArrayList<Question> listAll = new ArrayList<Question>();
        Paper paper = studentExamService.findPaperById(id);
        int numSing = 0;
        int numMuti = 0;
        int numJud = 0;
        int numFill = 0;
        int numEss = 0;
        int time = 0;
        numSing = paper.getQty_sing();
        numMuti = paper.getQty_muti();
        numJud = paper.getQty_jud();
        numFill = paper.getQty_fill();
        numEss = paper.getQty_ess();
        time = paper.getQty_time();
//        将每种题目按照题目类型存储
        LinkedList<Question> listSing = new LinkedList<Question>();
        LinkedList<Question> listMuti = new LinkedList<Question>();
        LinkedList<Question> listJud = new LinkedList<Question>();
        LinkedList<Question> listFill = new LinkedList<Question>();
        LinkedList<Question> listEss = new LinkedList<Question>();
        List<Question> questions = studentExamService.findQuestion();
        for (Question question : questions) {
            switch (question.getType()) {
                case "单选题":
                    listSing.add(question);
                    break;
                case "多选题":
                    listMuti.add(question);
                    break;
                case "判断题":
                    listJud.add(question);
                    break;
                case "填空题":
                    listFill.add(question);
                    break;
                default:
                    listEss.add(question);
                    break;
            }
        }
//        System.out.println("单:" + listSing.size());
//        System.out.println("多:" + listMuti.size());
//        System.out.println("判:" + listJud.size());
//        System.out.println("简:" + listEss.size());
//        System.out.println("填:" + listFill.size());
        listAll.addAll(randomQue(listSing, numSing));
        listAll.addAll(randomQue(listMuti, numMuti));
        listAll.addAll(randomQue(listJud, numJud));
        listAll.addAll(randomQue(listFill, numFill));
        listAll.addAll(randomQue(listEss, numEss));
//        System.out.println("全:" + listAll.size());
        tihao = 0;
        HttpSession session = request.getSession();
        //判断用户参加考试的次数
        User user = (User) session.getAttribute("USER_SESSION");
        user_sno = user.getSno();
        Score score = new Score();
        score.setUser_sno(user_sno);
        score.setPaper_id(id);
        Integer number = Integer.valueOf(0);
        number = studentExamService.examCount(score);
        session.setAttribute("paper",paper);
        session.setAttribute("number", number);
        session.setAttribute("examTime", time);
        session.setAttribute("ques", listAll);
        return "Student/student_exam_info";
    }

    public ArrayList<Question> randomQue(LinkedList<Question> list, int count) {
        ArrayList<Question> listA = new ArrayList<Question>();
        while (list.size() > 0 && count > 0) {
            count--;
            int m = (int) (Math.random() * list.size());
            Question question = list.get(m);
            list.remove(m);
            tihao++;
            question.setId(String.valueOf(tihao));
            String selectString = question.getSel();
            if (selectString != null) {
                String[] temp = selectString.split("\\@");
                question.setOptions(temp);
            }
            listA.add(question);
        }
        return listA;
    }

    @RequestMapping(value = "/calScore.action")
    public String calScore(HttpServletRequest request) {
        HttpSession session = request.getSession();
        Score userScore = new Score();
        ArrayList<Question> questions = (ArrayList<Question>) session.getAttribute("ques");
        User user = (User) session.getAttribute("USER_SESSION");
        Paper paper = (Paper) session.getAttribute("paper");
        String stuAnsArr[] = null;
        double score = 0;
        double score_muti = 0;
        double score_sing = 0;
        double score_jud = 0;
        double score_fill = 0;
        double score_ess = 0;
        for (int i = 0; i < questions.size(); ++i) {
            Question question = questions.get(i);
            stuAnsArr = request.getParameterValues(question.getId());
            if (!question.getType().equals("简答题")) {
                if (stuAnsArr != null) {
                    String stuAns = "";
                    for (int j = 0; j < stuAnsArr.length; j++) {
                        stuAns += stuAnsArr[j];
                    }
                    //System.out.println(stuAns);
                    if (stuAns.equalsIgnoreCase(question.getAnswer())) {
                        switch (question.getType()) {
                            case "单选题":
                                score_sing += question.getScore();
                                score += score_sing;
                                break;
                            case "多选题":
                                score_muti += question.getScore();
                                score += score_muti;
                                break;
                            case "判断题":
                                score_jud += question.getScore();
                                score += score_jud;
                                break;
                            case "填空题":
                                score_fill += question.getScore();
                                score += score_fill;
                                break;
                            default:
                                break;
                        }
                    }
                }
            } else {
                //简答题的判断方法
                //拆分正确答案中的关键词
                String[] KEY_WORD = question.getAnswer().split("\\@");
                //获取简答题分值
                Integer totalScore = question.getScore();
                //每个的分点的细分
                int singleScore = 0;
                String stuAns = "";
                if (stuAnsArr != null) {
                    for (int j = 0; j < stuAnsArr.length; j++) {
                        //组装学生答案
                        stuAns += stuAnsArr[j];
                    }
                }
                // 使用contains方法
                //如果关键词存在
                if (KEY_WORD != null) {
                    //按照关键词数量细分分值
                    singleScore = totalScore / KEY_WORD.length;
                    for (int j = 0; j < KEY_WORD.length; j++) {
                        //判断考生答案中是否出现关键词
                        if (stuAns.contains(KEY_WORD[j])) {
                            //System.out.println(stuAns + "包含关键词:" + KEY_WORD[j]);
                            score_ess += singleScore;
                            score += score_ess;
                        } else {
                            System.out.println("不包含关键词:" + KEY_WORD[j]);
                        }
                    }
                }
            }
        }
        userScore.setUser_sno(user.getSno());
        userScore.setPaper_id(paper.getId());
        userScore.setScore_sing(score_sing);
        userScore.setScore_muti(score_muti);
        userScore.setScore_jud(score_jud);
        userScore.setScore_fill(score_fill);
        userScore.setScore_ess(score_ess);
        userScore.setScore(score);
        session.setAttribute("score",userScore);
        int rows = managerScoreService.createScore(userScore);
        if (rows > 0){

            return "Student/student_exam_after";
        }
        else{
            return "Student/student_exam";
        }

    }
}


安装部署需求

IDEA运行启动

系统部署

系统开发后,在生产环境配置项目运行环境,具体步骤如下:
安装linux或者windows10操作系统;
安装JDK1.8并配置环境变量;
安装MySQL5.7版本以上版本数据库,创建数据库并执行脚本创建表;
在IDEA中配置运行;

本项目用到的技术和框架

1.开发语言:Java
2.开发模式:B/S
3.数据库:MySQL5.7
4.框架:SSM

本项目中的关键点

此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。使用到的工具和技术都是开源免费的。

环境工具

开发工具 Eclipse
语言 JDK1.8 、java
硬件:笔记本电脑;
软件:Tomcat8.0 Web服务器、Navicat数据库客户端、MySQL;
操作系统:Windows 10;
其它软件:截图工具、常用浏览器;
以上是本系统的部分功能展示,如果你的选题正好相符,那么可以做毕业设计或课程设计使用。


http://www.kler.cn/a/378789.html

相关文章:

  • 【linux】HTTPS 协议原理
  • 人工智能原理实验一:知识的表示与推理实验
  • android14修改默认锁屏方式为无
  • 低代码用户中心:简化开发,提升效率的新时代
  • 原来大佬的测试用例都是这样写的...
  • 【逆向基础】十八、PE文件格式(三)
  • Go语言有哪些数据类型?
  • Java集合使用注意事项总结
  • 数据结构之二叉树--前序,中序,后序详解(含源码)
  • oracle如何在不同业务场景下正确使用聚合查询、联合查询及分组查询?
  • 使用Java实现机器学习:一个入门指南
  • JS中DOM和BOM
  • Linux常用基本指令和shell
  • RK3568平台开发系列讲解(内存篇)Linux 内存优化
  • wordpress调用指定ID分类内容 并判断第一个与其它输出不同
  • 2025年PMP考试的3A好考吗?
  • YOLO系列再创新高:迎接YOLO11的到来!
  • 再探“构造函数”(2)友元and内部类
  • 机器学习-理论学习
  • 第三十四篇:URL和URI的区别,HTTP系列一
  • 实时监控工作状态!这八款电脑监控软件助你提升效率!
  • Django+Vue全栈开发项目入门(四)
  • 【自动化更新,让商品信息跳舞】——利用API返回值的幽默编程之旅
  • 记录|SQL中日期查询出现的问题
  • 【k8s】-Pod镜像拉取失败问题
  • 为什么 jsp request.getParameter报红,但启动正常?原因在于tomcat内置lib