基于MySQL,servlet,jsp简单的作业管理系统

本文介绍了一个使用MySQL数据库,结合Servlet和JSP技术实现的简单作业管理系统。内容包括数据库设计,涉及学生、作业和提交信息的三张表;代码结构包括Controller、DAO层、Model层和Util层的详细说明;最后展示了系统的操作界面,如添加学生、发布作业和查看作业提交情况的功能。

一、数据库设计
这里设计三张数据表分别来存储学生信息,作业信息,以及学生提交作业的新信息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二、代码展示
controller,servlet方法

package com.controller;

import com.dao.AssignmentInfoDao;
import com.model.AssignmentInfo;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

@WebServlet(name = "AddAssignmentServlet")
public class AddAssignmentServlet extends HttpServlet {
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.setCharacterEncoding("utf-8");

        AssignmentInfo ass = new AssignmentInfo();
        ass.setId(Long.parseLong(req.getParameter("id")));
        ass.setQuestion(req.getParameter("question"));
        Date date = new Date();
        ass.setReleaseTime(date);

        boolean res = AssignmentInfoDao.addAssignmentInfo(ass);

        req.setAttribute("isOK",res);
        req.setAttribute("type","addAssignment");
        req.getRequestDispatcher("result.jsp").forward(req,resp);
    }
}

package com.controller;

import com.dao.StudentInfoDao;
import com.model.StudentInfo;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class AddStudentServlet extends javax.servlet.http.HttpServlet {
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.setCharacterEncoding("utf-8");

        StudentInfo stu = new StudentInfo();
        stu.setSno(Long.parseLong(req.getParameter("sno")));
        stu.setSname(req.getParameter("sname"));

        boolean res = StudentInfoDao.addStudentInfo(stu);

        req.setAttribute("isOK",res);
        req.setAttribute("type","addStudent");
        req.getRequestDispatcher("result.jsp").forward(req,resp);
    }
}

package com.controller;

import com.dao.SubmissionInfoDao;
import com.model.SubmissionInfo;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

@WebServlet(name = "SubmisssionServlet")
public class SubmisssionServlet extends HttpServlet {
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.setCharacterEncoding("utf-8");

        SubmissionInfo sub = new SubmissionInfo();
        sub.setSno(Long.parseLong(req.getParameter("sno")));
        sub.setId((Long.parseLong(req.getParameter("id"))));
        sub.setAnswer(req.getParameter("answer"));
        Date date = new Date();
        sub.setSubTime(date);

        boolean res = SubmissionInfoDao.subAssignment(sub);

        req.setAttribute("isOK",res);
        req.setAttribute("type","Submission");
        req.getRequestDispatcher("result.jsp").forward(req,resp);
    }

}

dao层,数据连接方法

package com.dao;

import com.model.AssignmentInfo;
import com.util.JDBCAMS;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class AssignmentInfoDao {

    public static boolean addAssignmentInfo(AssignmentInfo aInfo){

        int row = 0;
        String sql = "insert into assignment (id,question,releaseTime," +
                "deadline) values (?,?,?,?)";

        try(Connection conn = JDBCAMS.getConnection();){

            try(PreparedStatement pst = conn.prepareStatement(sql)){
                pst.setLong(1,aInfo.getId());
                pst.setString(2,aInfo.getQuestion());
                pst.setTimestamp(3,new Timestamp(aInfo.getReleaseTime().getTime()));
                row = pst.executeUpdate();
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
        return row>0;
    }

    public List<AssignmentInfo> findAll() {

        String sql = "SELECT * FROM recond";
        List<AssignmentInfo> list = new ArrayList<>();

        try(Connection conn = JDBCAMS.getConnection()){

            try(Statement st = conn.createStatement()){

                try(ResultSet rSet = st.executeQuery(sql)){
                    while(rSet.next()){
                        AssignmentInfo aInfo = new AssignmentInfo();
                        aInfo.setId(rSet.getLong("id"));
                        aInfo.setQuestion(rSet.getString("question"));
                        aInfo.setReleaseTime(rSet.getTimestamp("releaseTime"));
                        list.add(aInfo);
                    }
                }

            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }
}

package com.dao;

import com.model.StudentInfo;
import com.util.JDBCAMS;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class StudentInfoDao {

    public static boolean addStudentInfo(StudentInfo sInfo){

        int row = 0;
        String sql = "insert into student (sno,sname) values (?,?)";

        try(Connection conn = JDBCAMS.getConnection()){

            try(PreparedStatement pst = conn.prepareStatement(sql)){
                pst.setLong(1,sInfo.getSno());
                pst.setString(2,sInfo.getSname());
                row = pst.executeUpdate();
            }
        }catch(SQLException e){
            e.printStackTrace();
        }
        return row>0;
    }
}

package com.dao;

import com.model.SubmissionInfo;
import com.util.JDBCAMS;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;

public class SubmissionInfoDao {

    public static boolean subAssignment(SubmissionInfo sInfo){

        int row = 0;
        String sql = "insert into recond (sno,id,answer,subTime) " +
                "values (?.?.?.?)";

        try(Connection conn = JDBCAMS.getConnection()){

            try(PreparedStatement pst = conn.prepareStatement(sql)){
                pst.setLong(1,sInfo.getSno());
                pst.setLong(2,sInfo.getId());
                pst.setString(3,sInfo.getAnswer());
                pst.setTimestamp(4,new Timestamp(sInfo.getSubTime().getTime()));
                row = pst.executeUpdate();

            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
        return row>0;
    }
}

model层位各种get(),set()方法再次不再多余赘述,

util层,数据库加载方法

package com.util;

import java.sql.*;


public class JDBCAMS {

    static String driver = "com.mysql.cj.jdbc.Driver";
    static String url = "jdbc:mysql://localhost:3306/assignmentms?useSSL=false&serverTIMEzone=UTC";
    static String user = "yjx";
    static String pwd = "yjx123";

    static {

        //加载数据库驱动
        try{
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }

    public static Connection getConnection(){

        Connection conn = null;
        //获取数据库连接
        try {
            conn = DriverManager.getConnection(url,user,pwd);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return conn;

    }

    public static void release(Connection conn, Statement stmt,ResultSet rs){

        if(conn != null){
            try{
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(stmt != null){
            try{
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(rs != null){
            try{
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

三、成果展示

操作选择界面在这里插入图片描述
添加学生
在这里插入图片描述
发布作业

在这里插入图片描述
查看作业提交情况

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值