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