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

2023-11-10 17:12

本文主要是介绍基于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;@Autowiredprivate StudentExamService studentExamService;@Autowiredprivate 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;
其它软件:截图工具、常用浏览器;
以上是本系统的部分功能展示,如果你的选题正好相符,那么可以做毕业设计或课程设计使用。

这篇关于基于SSM的在线作业管理系统 -octopus-master(源码+调试)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/384118

相关文章

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

spring6+JDK17实现SSM起步配置文件

《spring6+JDK17实现SSM起步配置文件》本文介绍了使用Spring6和JDK17配置SSM(Spring+SpringMVC+MyBatis)框架,文中通过示例代码介绍的非常详细,对大家的... 目录1.配置POM文件2.在resource目录下新建beans.XML文件,用于配置spirng3

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

电力系统中的A类在线监测装置—APView400

随着电力系统的日益复杂和人们对电能质量要求的提高,电能质量在线监测装置在电力系统中得到广泛应用。目前,市场上的在线监测装置主要分为A类和B类两种类型,A类和B类在线监测装置主要区别在于应用场景、技术参数、通讯协议和扩展性。选择时应根据实际需求和应用场景综合考虑,并定期维护和校准。电能质量在线监测装置是用于实时监测电力系统中的电能质量参数的设备。 APView400电能质量A类在线监测装置以其多核

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依