基于Java (Jsp+Servlet) 和 MySQL 的成绩管理系统
随着信息技术的发展,传统的手工成绩管理方式逐渐被计算机化管理系统取代。本文将介绍如何使用Java(JSP+Servlet)和MySQL构建一个基本的成绩管理系统。我们将涵盖系统的基本架构和主要功能模块。
系统架构
该系统的主要架构包括三个层次:表现层、业务逻辑层和数据访问层。
- 表现层(JSP):负责展示用户界面,用户通过浏览器与应用进行交互。
- 业务逻辑层(Servlet):处理具体的业务逻辑,如成绩的增、删、改、查。
- 数据访问层(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交互,输入成绩信息,系统将其存储到数据库中,并在需要时展示现有的成绩记录。
在实际应用中,还可以扩展用户认证、成绩修改和删除功能,以满足更复杂的需求。此外,前端界面和后端逻辑也可以进行优化和增强,以提升用户体验和系统性能。