基于Java (Jsp+Servlet) 和 MySQL 的成绩管理系统

随着信息技术的发展,传统的手工成绩管理方式逐渐被计算机化管理系统取代。本文将介绍如何使用Java(JSP+Servlet)和MySQL构建一个基本的成绩管理系统。我们将涵盖系统的基本架构和主要功能模块。

系统架构

该系统的主要架构包括三个层次:表现层、业务逻辑层和数据访问层。

  1. 表现层(JSP):负责展示用户界面,用户通过浏览器与应用进行交互。
  2. 业务逻辑层(Servlet):处理具体的业务逻辑,如成绩的增、删、改、查。
  3. 数据访问层(MySQL):存储和管理所有的成绩数据。

数据库设计

我们首先建立一个名为student_grades的数据库,并创建一张grades表来存储学生成绩信息。表的结构如下:

CREATE DATABASE student_grades;

USE student_grades;

CREATE TABLE grades (
    id INT AUTO_INCREMENT PRIMARY KEY,
    student_name VARCHAR(100) NOT NULL,
    subject VARCHAR(100) NOT NULL,
    score DECIMAL(5, 2) NOT NULL
);

这个表包含四个字段:id(主键)、student_name(学生姓名)、subject(课程名称)和score(成绩)。

业务逻辑层

接下来,我们实现Servlet类,处理用户请求。例如,我们可以创建一个GradeServlet类以处理成绩的添加和检索。

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/grade")
public class GradeServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            String studentName = request.getParameter("studentName");
            String subject = request.getParameter("subject");
            String score = request.getParameter("score");

            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student_grades", "username", "password");
            String sql = "INSERT INTO grades (student_name, subject, score) VALUES (?, ?, ?)";
            PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, studentName);
            pstmt.setString(2, subject);
            pstmt.setBigDecimal(3, new BigDecimal(score));
            pstmt.executeUpdate();

            response.sendRedirect("success.jsp");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student_grades", "username", "password");
            String sql = "SELECT * FROM grades";
            PreparedStatement pstmt = conn.prepareStatement(sql);
            ResultSet rs = pstmt.executeQuery();

            request.setAttribute("results", rs);
            request.getRequestDispatcher("displayGrades.jsp").forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们通过doPost方法处理成绩的录入,通过doGet方法获取成绩记录。

显示结果的JSP页面

接下来,我们制作一个简单的JSP页面来显示成绩:

displayGrades.jsp

<%@ page import="java.sql.*" %>
<html>
    <head>
        <title>成绩列表</title>
    </head>
    <body>
        <h1>成绩列表</h1>
        <table border="1">
            <tr>
                <th>ID</th>
                <th>学生姓名</th>
                <th>科目</th>
                <th>分数</th>
            </tr>
            <%
                ResultSet rs = (ResultSet) request.getAttribute("results");
                while (rs.next()) {
            %>
            <tr>
                <td><%= rs.getInt("id") %></td>
                <td><%= rs.getString("student_name") %></td>
                <td><%= rs.getString("subject") %></td>
                <td><%= rs.getBigDecimal("score") %></td>
            </tr>
            <%
                }
            %>
        </table>
    </body>
</html>

完成

通过以上步骤,我们实现了一个基本的成绩管理系统,可以进行成绩的添加和查询功能。用户可以通过浏览器与Servlet交互,输入成绩信息,系统将其存储到数据库中,并在需要时展示现有的成绩记录。

在实际应用中,还可以扩展用户认证、成绩修改和删除功能,以满足更复杂的需求。此外,前端界面和后端逻辑也可以进行优化和增强,以提升用户体验和系统性能。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部