基于ssm学生作业管理系统源码和文档

 成品,调试 讲解 定制计算机JAVA、PHP、爬虫、APP、小程序  python文档

随着信息技术的迅速开展,多媒体计算机、网络为代表的信息技术给教育的开展带来了新的生机,为传统的教学方式注入了活力,给其带来了重大的革命。网络使教育传播不再受时间和地点的限制,开发和充分利用网络教学,是当前教育开展的必然趋势。作业作为一项重要的教学活动,解决作业的方便提交、发布等问题是教学顺利有效进行重要条件。因此基于 Web 的作业管理系统便成为网络教学系统不可或缺的组成局部。借助计算机及网络的优势,它能实现作业信息的快速传递 ,并扩展作业的功能 ,提高作业的教学价值及管理效率及质量。

论文主要围绕作业管理系统的设计与实现展开研究,遵循软件工程设 计流程,在需求分析的基础上,明确了作业管理系统的各项功能。利用Spring、SpringMVC Mybatis等技术,设计实现了一个基于B/S模式的作业管理系统,可完成布置作业,提交作业,修改作业等功能,并对该作业管理系统的各个功能模块进行测试。所设计的学生操作界面布局合理、交互友好。

关键字: 作业管理;B/S模式;SSM;mysql

演示视频:

基于ssm学生作业管理系统源码和论文

ABSTRACT

With the rapid development of information technology, the information technology represented by multimedia computers and networks has brought new vitality to the development of education, injected vitality into the traditional teaching methods, and brought about a major revolution. The network makes education communication no longer subject to the restrictions of time and place. It is an inevitable trend to develop and make full use of network teaching. As an important teaching activity, homework is an important condition for smooth and effective teaching to solve the problem of convenient submission and release of homework. Therefore, the web-based homework management system has become an indispensable part of the network teaching system. With the advantages of computer and network, it can realize the rapid transmission of homework information, expand the function of homework, and improve the teaching value, management efficiency and quality of homework.

The paper mainly focuses on the design and implementation of the job management system, follows the software engineering design process, and clarifies the functions of the job management system on the basis of demand analysis. Using Spring, SpringMVC Mybatis and other technologies, a job management system based on B/S mode is designed and implemented, which can complete the functions of arranging, submitting and modifying jobs, and tests each functional module of the job management system. The user interface designed is reasonable in layout and friendly in interaction.

Keywords: job management; B/S mode; SSM; mysql

作业管理系统-springMVC项目

## 编译环境

1. 编译工具(IDE):IntelliJ IDEA 2020.2
2. 数据库:MySQL 8.0
3. 服务器:Tomcat 8.5

## 框架

1. 后端:SSM框架(Spring+SpringMVC+MyBatis)
2. 前端UI框架:Layui

## 功能介绍

### 1.管理员界面

功能如下:

- 修改个人信息(包括密码)
- 添加教师信息、修改教师信息、删除教师信息、查看教师信息
- 添加学生信息、修改学生信息、删除学生信息、查看学生信息
- 添加班级信息、修改班级信息、删除班级信息、查看班级信息
- 添加课程信息、修改课程信息、删除课程信息、查看课程信息
- 添加选课信息、修改选课信息、删除选课信息、查看选课信息
- 删除作业信息、查看作业信息
- 删除学生提交作业信息、查看学生提交作业信息

### 2.学生

功能如下:

- 修改个人信息(包括密码)
- 查看自己所属的班级信息
- 查看自己所选的课程信息
- 查看教师所布置的作业信息
- 提交作业、修改已提交的作业

### 3.教师

功能如下:

- 修改个人信息(包括密码)
- 查看自己所教授的课程信息
- 查看选课学生信息
- 发布作业
- 修改已布置的作业
- 删除已布置的作业

## 项目使用说明-必看!!!

### 1.建立数据库

在MySQL数据库中建立一个新的database,名字可以任意,然后在新建好的数据库中运行项目文件里的school.sql文件即可

### 2.修改项目里的PathUtil.java文件

本系统存放文件和图片为两个不同的目录

文件目录主要存放教师或学生上传的文件

图片目录存放教师、学生、管理员的头像

#### (1)修改图片目录

```java
    public static String getImgBasePath(){
        String os = System.getProperty("os.name");
        String basePath = "";
        if (os.toLowerCase().startsWith("win")){
            basePath = "D:/projectHMS/image";
        }else {
            basePath = "/Users/work/image";
        }
        basePath = basePath.replace("/",seperator);
        return basePath;
    }
```

```java
if (os.toLowerCase().startsWith("win")){
      basePath = "D:/projectHMS/image";
}else {
      basePath = "/Users/work/image";
}
```

第一个basePath为Windows系统下存放图片的目录

第二个basePath为其他系统存放图片的目录(Mac、Linux等)

#### (2)修改文件目录

```java
    public static String getFileBasePath(){
        String os = System.getProperty("os.name");
        String basePath = "";
        if (os.toLowerCase().startsWith("win")){
            basePath = "D:/projectHMS/file";
        }else {
            basePath = "/Users/work/file";
        }
        basePath = basePath.replace("/",seperator);
        return basePath;
    }
```

文件目录修改方法与上面相同

### 3.IDEA配置目录

在IDEA的tomcat配置中,需要配置存放图片和文件的上下文路径

点击‘外部源’选择对应的路径

### 4.修改jdbc配置文件

找到项目中的jdbc.properties文件,将相关配置修改为本地数据库的配置

### 5.将数据库用户名和密码进行DES加密

找到项目中的Util包下面的DES加密工具类,在main函数里替换成自己数据库的用户名和密码,用运行出来的加密字符串替换掉未加密的用户名和密码

 

package com.bjtu.edu.web.admin;

import com.bjtu.edu.dto.ImageHolder;
import com.bjtu.edu.dto.StudentExecution;
import com.bjtu.edu.entity.Student;
import com.bjtu.edu.enums.StudentStateEnum;
import com.bjtu.edu.service.StudentService;
import com.bjtu.edu.util.HttpServletRequestUtil;
import com.bjtu.edu.util.Layui;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @project: HMS-mvc
 * @description: 学生管理类-管理员界面
 * @author: ysp
 * @create: 作业管理系统08/15
 */
@Controller
@RequestMapping("/admin")
public class StudentManagementController {
    @Autowired
    private StudentService studentService;

    /**
     * @author: ysp
     * @description: 列出所有学生列表-返回为Layui类型
     * @createTime: 作业管理系统8/23 10:01
     *
     * @param
     * @return com.bjtu.edu.util.Layui
     */
    @RequestMapping(value = "/listStudent",method = RequestMethod.GET)
    @ResponseBody
    public Layui listStudent(){
        //查询显示列表数据
        List<Student> studentList = studentService.getStudentList();
        return Layui.data(studentList.size(),studentList);
    }

    /**
     * @author: ysp
     * @description: 列出所有学生列表-返回为Map类型
     * @createTime: 作业管理系统8/23 10:01
     *
     * @param
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    @RequestMapping(value = "/listStudentMap",method = RequestMethod.GET)
    @ResponseBody
    public Map<String,Object> listStudentMap(){
        //查询学生列表数据
        Map<String,Object> modelMap = new HashMap<>();
        List<Student> studentList = studentService.getStudentList();
        modelMap.put("success",true);
        modelMap.put("studentList",studentList);
        return modelMap;
    }

    /**
     * @author: ysp
     * @description: 根据studentId返回唯一的学生信息-返回为Map类型
     * @createTime: 作业管理系统8/23 10:02
     *
     * @param studentId
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    @RequestMapping(value = "/listStudentById",method = RequestMethod.GET)
    @ResponseBody
    public Map<String,Object> listStudentById(@RequestParam("studentId") Long studentId){
        Student student = studentService.getStudentById(studentId);
        Map<String,Object> modelMap = new HashMap<>();
        modelMap.put("success",true);
        modelMap.put("student",student);
        return modelMap;
    }

    /**
     * @author: ysp
     * @description: 添加学生信息
     * @createTime: 作业管理系统8/23 10:02
     *
     * @param request
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    //获取前端ajax传递的字符串,解析字符串为相应的student实体,根据解析好的数据添加学生信息
    @RequestMapping(value = "/addStudent",method = RequestMethod.POST)
    @ResponseBody
    private Map<String,Object> addStudent(HttpServletRequest request){
        Map<String,Object> modelMap = new HashMap<>();

        //1.接受并转化相应的参数
        //获取前端传过来的学生信息,并将它转换成实体类;
        //同时获取前端传递过来的文件流,将它接受到studentImg里面去
        String studentStr = HttpServletRequestUtil.getString(request,"studentStr");
        if (studentStr == null){
            modelMap.put("success",false);
            modelMap.put("errMsg","请输入学生信息");
            return modelMap;
        }
        ObjectMapper mapper = new ObjectMapper();
        Student student;
        try {
            student = mapper.readValue(studentStr,Student.class);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            modelMap.put("success",false);
            modelMap.put("errMsg",e.getMessage());
            return modelMap;
        }
        CommonsMultipartFile studentImg;
        CommonsMultipartResolver commonsMultipartResolver =
                new CommonsMultipartResolver(
                        request.getSession().getServletContext()
                );
        MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
        studentImg = (CommonsMultipartFile) multipartHttpServletRequest.getFile("studentImg");

        //2.添加学生信息
        StudentExecution studentExecution;
        try {
            ImageHolder imageHolder = null;
            if (studentImg != null){
                imageHolder = new ImageHolder(studentImg.getOriginalFilename(),studentImg.getInputStream());
            }
            studentExecution = studentService.addStudent(student,imageHolder);
            if (studentExecution.getState() == StudentStateEnum.SUCCESS.getState()){
                modelMap.put("success",true);
            }else{
                modelMap.put("success",false);
                modelMap.put("errMsg",studentExecution.getStateInfo());
            }
        } catch (IOException e) {
            modelMap.put("success",false);
            modelMap.put("errMsg",e.getMessage());
        }
        return modelMap;
        //3.返回结果
    }

    /**
     * @author: ysp
     * @description: 修改学生信息
     * @createTime: 作业管理系统8/23 10:02
     *
     * @param request
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    //获取前端ajax传递的字符串,解析字符串为相应的student实体,根据解析好的数据修改学生信息
    @RequestMapping(value = "/modifyStudent",method = RequestMethod.POST)
    @ResponseBody
    public Map<String,Object> modifyTeacher(HttpServletRequest request) throws IOException {
        Map<String, Object> modelMap = new HashMap<>();
        // 接收前端参数的变量的初始化
        ObjectMapper mapper = new ObjectMapper();
        Student student;

        // 若请求中存在文件流,则取出相关的文件
        CommonsMultipartFile studentImg = null;
        CommonsMultipartResolver commonsMultipartResolver =
                new CommonsMultipartResolver(
                        request.getSession().getServletContext()
                );
        if (commonsMultipartResolver.isMultipart(request)){
            MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
            studentImg = (CommonsMultipartFile) multipartHttpServletRequest.getFile("studentImg");
        }

        try {
            String studentStr = HttpServletRequestUtil.getString(request, "studentStr");
            // 尝试获取前端传过来的表单string流并将其转换成Student实体类
            student = mapper.readValue(studentStr, Student.class);
        } catch (Exception e) {
            modelMap.put("success", false);
            modelMap.put("errMsg", e.toString());
            return modelMap;
        }
        try {
            ImageHolder imageHolder = null;
            // 开始进行学生信息变更操作
            if (studentImg != null){
                imageHolder = new ImageHolder(studentImg.getOriginalFilename(),studentImg.getInputStream());
            }
            StudentExecution studentExecution = studentService.modifyStudent(student, imageHolder);
            if (studentExecution.getState() == StudentStateEnum.SUCCESS.getState()) {
                modelMap.put("success", true);
            } else {
                modelMap.put("success", false);
                modelMap.put("errMsg", studentExecution.getStateInfo());
            }
        } catch (RuntimeException e) {
            modelMap.put("success", false);
            modelMap.put("errMsg", e.toString());
            return modelMap;
        }
        return modelMap;
    }

    /**
     * @author: ysp
     * @description: 删除学生信息
     * @createTime: 作业管理系统8/23 10:03
     *
     * @param studentId
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    //根据前端路由路径中传递的studentId值删除指定学生信息
    @RequestMapping(value = "/deleteStudent",method = RequestMethod.GET)
    @ResponseBody
    public Map<String,Object> deleteStudent(@RequestParam("studentId") Long studentId){
        Map<String,Object> modelMap = new HashMap<>();
        studentService.deleteStudent(studentId);
        modelMap.put("success",true);
        return modelMap;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序猿毕业分享网

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

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

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

打赏作者

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

抵扣说明:

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

余额充值