基于java+ssm+vue的在线作业管理系统

本文介绍了设计和开发一个在线作业管理系统的过程,该系统使用Java语言,结合SSM框架和MySQL数据库,实现作业管理、作业批阅、教学资源管理和作业统计等功能。系统旨在提高作业管理效率,确保数据准确性,并提供友好界面。管理员、教师和学生各具特色的功能模块满足不同用户需求。
摘要由CSDN通过智能技术生成

项目介绍

网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此学生作业信息的管理计算机化,系统化是必要的。设计开发在线作业管理系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于学生作业信息的维护和检索也不需要花费很多时间,非常的便利。

在线作业管理系统是在MySQL中建立数据表保存信息,运用SSM框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。本系统实现了作业管理,作业答案管理,作业批阅管理,教学资源管理,作业提交管理以及作业统计等功能。

在线作业管理系统在让学生作业信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升在线作业管理系统提供的数据的可靠性,让系统数据的错误率降至最低。

4.2功能结构设计
前面所做的功能分析,只是本系统的一个大概功能,这部分需要在此基础上进行各个模块的详细设计。
设计的管理员的详细功能见下图,管理员登录进入本人后台之后,管理作业,作业答案,作业批阅,统计作业信息,管理教师和学生。
在这里插入图片描述

设计的教师的详细功能见下图,教师回复学生留言,新增作业和教学资源,管理作业提交,作业答案以及作业批阅信息。
在这里插入图片描述
设计的学生的详细功能见下图,学生在前台下载教师布置的作业,提交已完成的作业,播放教学资源视频,查看通知公告。
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序ue/爬虫/c#/asp.net

系统实现

5.1 管理员功能实现
5.1.1 作业信息管理
管理员权限中的作业信息管理,其运行效果见下图。管理员查看教师发布的作业,可以修改作业信息,查询作业。
在这里插入图片描述

图5.1 作业信息管理页面

5.1.2 作业统计管理
管理员权限中的作业统计管理,其运行效果见下图。管理员查看作业提交人数以及合格人数,导出作业统计信息。
在这里插入图片描述

图5.2 作业统计管理页面

5.1.3 作业批阅管理
管理员权限中的作业批阅管理,其运行效果见下图。管理员查看学生作业批阅信息,查看各位学生的作业成绩和是否及格信息,可以根据作业是否及格查询作业批阅信息。
在这里插入图片描述

图5.3 作业批阅管理页面

5.2 教师功能实现
5.2.1 新增作业
教师权限中的新增作业,其运行效果见下图。教师新增作业,需要描述作业信息,上传作业文件。
在这里插入图片描述

图5.4 新增作业页面

5.2.2 新增教学资源
教师权限中的新增教学资源,其运行效果见下图。教师分享教学资源,需要上传教学资源的文件或视频,描述教学资源信息即可提交。
在这里插入图片描述

图5.5 新增教学资源页面

5.2.3 学生留言管理
教师权限中的学生留言管理,其运行效果见下图。学生选择教师进行留言内容的提交,该教师在自己的操作后台会查看,并且还能回复。
在这里插入图片描述

图5.6 学生留言管理页面

5.3 学生功能实现
5.3.1 作业信息
学生权限中的作业信息,其运行效果见下图。学生下载作业文件,完成作业之后,在本页面上交作业。
在这里插入图片描述

图5.7 作业信息页面

5.3.2 教学资源
学生权限中的教学资源,其运行效果见下图。学生收藏教学资源,播放教学资源视频。
在这里插入图片描述

图5.8 教学资源页面

5.3.3 通知公告
学生权限中的通知公告,其运行效果见下图。学生点击公告标题即可查看公告内容。
在这里插入图片描述

图5.9 通知公告页面

核心代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.ZuoyetijiaoEntity;
import com.entity.view.ZuoyetijiaoView;

import com.service.ZuoyetijiaoService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 作业提交
 * 后端接口
 * @author 
 * @email 
 * @date 
 */
@RestController
@RequestMapping("/zuoyetijiao")
public class ZuoyetijiaoController {
    @Autowired
    private ZuoyetijiaoService zuoyetijiaoService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,ZuoyetijiaoEntity zuoyetijiao, 
		HttpServletRequest request){

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("xuesheng")) {
			zuoyetijiao.setXuehao((String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("jiaoshi")) {
			zuoyetijiao.setGonghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<ZuoyetijiaoEntity> ew = new EntityWrapper<ZuoyetijiaoEntity>();
		PageUtils page = zuoyetijiaoService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zuoyetijiao), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("st")
    public R list(@RequestParam Map<String, Object> params,ZuoyetijiaoEntity zuoyetijiao, HttpServletRequest request){
        EntityWrapper<ZuoyetijiaoEntity> ew = new EntityWrapper<ZuoyetijiaoEntity>();
		PageUtils page = zuoyetijiaoService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zuoyetijiao), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("sts")
    public R list( ZuoyetijiaoEntity zuoyetijiao){
       	EntityWrapper<ZuoyetijiaoEntity> ew = new EntityWrapper<ZuoyetijiaoEntity>();
      	ew.allEq(MPUtil.allEQMapPre( zuoyetijiao, "zuoyetijiao")); 
        return R.ok().put("data", zuoyetijiaoService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(ZuoyetijiaoEntity zuoyetijiao){
        EntityWrapper< ZuoyetijiaoEntity> ew = new EntityWrapper< ZuoyetijiaoEntity>();
 		ew.allEq(MPUtil.allEQMapPre( zuoyetijiao, "zuoyetijiao")); 
		ZuoyetijiaoView zuoyetijiaoView =  zuoyetijiaoService.selectView(ew);
		return R.ok("查询作业提交成功").put("data", zuoyetijiaoView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        ZuoyetijiaoEntity zuoyetijiao = zuoyetijiaoService.selectById(id);
        return R.ok().put("data", zuoyetijiao);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        ZuoyetijiaoEntity zuoyetijiao = zuoyetijiaoService.selectById(id);
        return R.ok().put("data", zuoyetijiao);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("ve")
    public R save(@RequestBody ZuoyetijiaoEntity zuoyetijiao, HttpServletRequest request){
    	zuoyetijiao.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(zuoyetijiao);

        zuoyetijiaoService.insert(zuoyetijiao);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody ZuoyetijiaoEntity zuoyetijiao, HttpServletRequest request){
    	zuoyetijiao.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(zuoyetijiao);

        zuoyetijiaoService.insert(zuoyetijiao);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody ZuoyetijiaoEntity zuoyetijiao, HttpServletRequest request){
        //ValidatorUtils.validateEntity(zuoyetijiao);
        zuoyetijiaoService.updateById(zuoyetijiao);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        zuoyetijiaoService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<ZuoyetijiaoEntity> wrapper = new EntityWrapper<ZuoyetijiaoEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("xuesheng")) {
			wrapper.eq("xuehao", (String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("jiaoshi")) {
			wrapper.eq("gonghao", (String)request.getSession().getAttribute("username"));
		}

		int count = zuoyetijiaoService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

论文参考

在这里插入图片描述

目 录
1 绪论 1
1.1 选题背景 1
1.2 选题意义 1
1.3 研究内容 2
2 系统开发技术 3
2.1 Java语言 3
2.2 SSM框架 3
2.3 MYSQL数据库 4
3 系统分析 5
3.1可行性研究 5
3.1.1经济可行性 5
3.1.2时间可行性 5
3.1.3操作可行性 5
3.2系统性能分析 6
3.2.1系统易用性 6
3.2.2系统健壮性 6
3.2.3系统安全性 6
3.3 系统流程分析 6
3.4系统功能分析 9
4 系统设计 13
4.1系统目标 13
4.2功能结构设计 14
4.3数据库设计 16
4.3.1数据库E-R图 16
4.3.2 数据库表结构 19
5 系统实现 23
5.1 管理员功能实现 23
5.1.1 作业信息管理 23
5.1.2 作业统计管理 23
5.1.3 作业批阅管理 24
5.2 教师功能实现 24
5.2.1 新增作业 24
5.2.2 新增教学资源 25
5.2.3 学生留言管理 25
5.3 学生功能实现 26
5.3.1 作业信息 26
5.3.2 教学资源 26
5.3.3 通知公告 27
6系统测试 28
6.1 系统测试的类型 28
6.2 功能测试 29
6.3 可用性测试 29
6.4 测试结果分析 29
结 论 30
参考文献 32
致 谢 33

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_3306428634

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值