项目描述
临近学期结束,还是毕业设计,你还在做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;
 其它软件:截图工具、常用浏览器;
 以上是本系统的部分功能展示,如果你的选题正好相符,那么可以做毕业设计或课程设计使用。







![[git] cherry pick 将某个分支的某次提交应用到当前分支](https://img-blog.csdnimg.cn/6fd35a6aa41641f9b76da60bdab03750.png)











