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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/3627.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【SPIE单独出版审核,见刊检索稳定!】2024年遥感技术与图像处理国际学术会议(RSTIP 2024,11月29-12月1日)

2024年遥感技术与图像处理国际学术会议&#xff08;RSTIP 2024&#xff09; 2024 International Conference on Remote Sensing Technology and Image Processing 官方信息 会议官网&#xff1a;www.rstip.org 时间地点&#xff1a;2024年11月29-12月1日 | 中国大理 三轮截…

青少年编程能力等级测评CPA Python编程(一级)

青少年编程能力等级测评CPA Python编程(一级) &#xff08;考试时间90分钟&#xff0c;满分100分&#xff09; 一、单项选择题&#xff08;共20题&#xff0c;每题3.5分&#xff0c;共70分&#xff09; 下列语句的输出结果是&#xff08; &#xff09;。 print(35*2) A&a…

数学篇 - 微分(求导)的基本法则与行列式

一、常数及基本函数的求导规则 常数的导数&#xff1a; ( C ) ′ 0 (C)0 (C)′0 幂函数的导数&#xff1a; ( x μ ) ′ μ x μ − 1 (x^\mu)\mu x^{\mu-1} (xμ)′μxμ−1 三角函数正弦、余弦函数的导数&#xff1a; ( s i n x ) ′ c o s x (sin\ x)cos\ x (sin x)′…

玄机-应急响应- Linux入侵排查

一、web目录存在木马&#xff0c;请找到木马的密码提交 到web目录进行搜索 find ./ type f -name "*.php" | xargs grep "eval(" 发现有三个可疑文件 1.php看到密码 1 flag{1} 二、服务器疑似存在不死马&#xff0c;请找到不死马的密码提交 被md5加密的…

H.266与H.265、AV1、H.264对比

好多开发者希望搞清楚H.266&#xff08;Versatile Video Coding&#xff0c;VVC&#xff09;、H.265&#xff08;High Efficiency Video Coding&#xff0c;HEVC&#xff09;、AV1、H.264&#xff08;Advanced Video Coding&#xff09;四者区别&#xff0c;本文从压缩效率、画…

【征程 6 工具链性能分析与优化-1】编译器预估 perf 解读与性能分析

01 引言 本篇文章中&#xff0c;我们将首先介绍 layerdetails 中的参数信息&#xff0c;然后将结合实例分析如何利用 layerdetails 来分析模型的性能瓶颈&#xff0c;进而对模型的性能进行优化。 02 layerdetails 中信息解读 征程 6 工具链目前提供了两种方式生成性能评估报…

有线电视 1.27.5 | 完全免费的电视直播应用,频道丰富,画质清晰

有线电视是一款针对智能电视和电视盒子开发的在线观看电视应用软件。该软件最大的特色是完全免费&#xff0c;并且支持几乎国内所有的电视台&#xff0c;无论是央视频道还是省卫视频道应有尽有。为了更好地服务用户&#xff0c;有线电视还对电视频道进行了分类&#xff0c;包含…

ML2001-1 机器学习/深度学习 Introduction of Machine / Deep Learning

图片说明来自李宏毅老师视频的学习笔记&#xff0c;如有侵权&#xff0c;请通知下架 影片参考 【李宏毅】3.第一节 - (上) - 机器学习基本概念简介_哔哩哔哩_bilibili 1. 机器学习的概念与任务类型 概念&#xff1a;机器学习近似于寻找函数&#xff0c;用于处理不同类型的任…

Java项目实战II基于Java+Spring Boot+MySQL的植物健康系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 基于Java、…

推荐一款面向增材制造的高效设计平台:nTopology

nTopology是一款面向增材制造的高效设计平台&#xff0c;平台预置了大量增材制造常用的设计工具包&#xff0c;工程师通过调用若干个预置工具包、或自主开发定制的工具包&#xff0c;建立一个工作流&#xff0c;实现复杂几何结构的参数化设计。nTopology集合了的强大几何建模和…

CreateEvent使用笔记

一、前言 开发中上位机获取或设置下位机参数的接口&#xff0c;有阻塞、非阻塞两种&#xff1a; 1、API非阻塞&#xff0c;异步回调返回结果 2、API阻塞&#xff0c;超时或直接返回结果 对于应用层调用者来说&#xff0c;阻塞API更方便&#xff0c;而要实现阻塞API在windows可使…

从“点”到“面”,热成像防爆手机如何为安全织就“透视网”?

市场上测温产品让人眼花缭乱&#xff0c;通过调研分析&#xff0c;小编发现测温枪占很高比重。但是&#xff0c;测温枪局限于显示单一数值信息&#xff0c;无法直观地展示物体的整体温度分布情况&#xff0c;而且几乎没有功能拓展能力。以AORO A23为代表的热成像防爆手机改变了…

代码随想录一刷——454.四数相加II

我们现在前2个数组中&#xff0c;统计元素之和以及出现的次数&#xff08;用map&#xff09;&#xff0c;随后再另外2个数组中遍历看上面元素之和的相反数是否存在于map中即可。 C&#xff1a; class Solution { public: int fourSumCount(vector<int>& nums1, ve…

本篇万字,博客最细,oled多级菜单代码解析,与实现教程,指针实现(含源码)!!!

目录 教程前言 多级菜单基本知识 驱动文件创建 ​编辑 ​编辑 ​编辑 定义菜单数据类型代码解析 按键代码解析 菜单数据赋值代码解析 菜单按键切换显示代码解析 项目工程移植地址 教程前言 前言&#xff1a;编写不易&#xf…

C++中STL的list类常用接口及其源码解析

1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向 其前一个元素和后一个元素。 3. list与…

csp2024T3

题目大意&#xff1a;对于每个数而言&#xff0c;可以将其染成红或蓝&#xff0c;对于每一个数&#xff0c;定义其贡献为&#xff0c;当且仅当这个数最近的同色数与其相等&#xff0c;否则其贡献为0&#xff0c;求最大贡献和。 思路&#xff1a;考虑dp 1.考场20多分钟想的奇怪…

Leetcode 198. 打家劫舍 动态规划

原题链接&#xff1a;Leetcode 198. 打家劫舍 class Solution { public:int rob(vector<int>& nums) {int n nums.size();if (n 1)return nums[0];int dp[n];dp[0] nums[0];dp[1] max(nums[1], nums[0]);for (int i 2; i < n; i) {dp[i] max(dp[i - 2] num…

Spring源码学习(五):Spring AOP

免责声明 本人还处于学习阶段&#xff0c;如果内容有错误麻烦指出&#xff0c;敬请见谅&#xff01;&#xff01;&#xff01;Demo <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.8<…

外包干了6年,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入杭州某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了6年的功能测试…

24/11/5 算法笔记adagrad 自适应学习率

AdaGrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种用于随机优化的算法&#xff0c;它通过适应每个参数的学习率来优化目标函数。 自适应学习率&#xff1a; AdaGrad算法的核心特点是为每个参数自适应地调整学习率。这意味着每个参数都有自己的学习率&#xff…