JSP学生信息管理系统设计攻略
学生信息管理系统可以帮助学校和教师更好地管理学生信息,提高工作效率。JSP作为JavaWeb的一个重要组成部分,可以方便快捷地搭建一个学生信息管理系统。下面是一个完整的JSP学生信息管理系统设计攻略,包含以下步骤:
1.需求分析
在开始设计之前,需要了解业务需求,也就是学生信息管理系统需要实现哪些功能,这是设计的关键。在相关人员的讨论下,我们列出如下的基本功能需求:
- 学生信息录入和存储
- 学生成绩查询和统计
- 学生信息修改和删除
- 学生成绩数据报表导出和打印
2.数据库设计
为了存储学生信息和成绩数据,我们需要一个数据库。这里我们使用MySQL数据库,并创建一个名为student的数据库,其中包含两张表,分别是student和score表。两张表都包含学生的姓名和学号属性,而score表还包含课程名称和成绩属性。
示例代码如下:
CREATE DATABASE student;
USE student;
CREATE TABLE student (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
number VARCHAR(20) NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE score (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
number VARCHAR(20) NOT NULL,
course VARCHAR(20) NOT NULL,
score INT(11),
PRIMARY KEY (id)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
3.JSP页面设计
在了解了需求和数据库设计之后,我们需要设计JSP页面,方便用户进行学生信息的操作和数据查询。我们设计了三个页面:首页、学生信息管理页面和学生成绩管理页面,每个页面都有相应的功能。
3.1 首页
首页包含站点 Logo、导航菜单,方便用户进行页面切换。
示例代码如下:
<!DOCTYPE html>
<html>
<head>
<title>学生信息管理系统</title>
</head>
<body>
<header>
<img src="logo.png" alt="学生信息管理系统" width="150" height="100">
<nav>
<a href="student.jsp">学生信息管理</a>
<a href="score.jsp">学生成绩管理</a>
</nav>
</header>
<main>
<h1>欢迎使用学生信息管理系统</h1>
<p>请选择相应的功能进行操作</p>
</main>
<footer>© 2021 学生信息管理系统</footer>
</body>
</html>
3.2 学生信息管理页面
学生信息管理页面包括学生信息的录入、查询、修改和删除功能。通过JSP页面和数据库交互,用户可以进行这些操作。
示例代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>学生信息管理</title>
</head>
<body>
<header>
<img src="logo.png" alt="学生信息管理系统" width="150" height="100">
<nav>
<a href="student.jsp">学生信息管理</a>
<a href="score.jsp">学生成绩管理</a>
</nav>
</header>
<main>
<h1>学生信息管理</h1>
<table>
<thead>
<tr>
<th>学号</th>
<th>姓名</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<%
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?characterEncoding=utf-8", "root", "password");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM student");
while(rs.next()){
String number = rs.getString("number");
String name = rs.getString("name");
%>
<tr>
<td><%= number %></td>
<td><%= name %></td>
<td><a href="edit.jsp?number=<%= number %>">修改</a> <a href="delete.jsp?number=<%= number %>">删除</a></td>
</tr>
<% } %>
</tbody>
</table>
<h2>添加学生</h2>
<form method="POST" action="add.jsp">
<label for="number">学号:</label>
<input type="text" name="number" required><br>
<label for="name">姓名:</label>
<input type="text" name="name" required><br>
<input type="submit" value="添加">
</form>
</main>
<footer>© 2021 学生信息管理系统</footer>
</body>
</html>
3.3 学生成绩管理页面
学生成绩管理页面包括成绩的录入、查询和统计功能。用户可以通过填写相应的表单和选择查询条件快速地查询成绩信息,并且计算出学生成绩的平均分。
示例代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>学生成绩管理</title>
</head>
<body>
<header>
<img src="logo.png" alt="学生信息管理系统" width="150" height="100">
<nav>
<a href="student.jsp">学生信息管理</a>
<a href="score.jsp">学生成绩管理</a>
</nav>
</header>
<main>
<h1>学生成绩管理</h1>
<h2>添加成绩</h2>
<form method="POST" action="addscore.jsp">
<label for="number">学号:</label>
<input type="text" name="number" required><br>
<label for="name">姓名:</label>
<input type="text" name="name" required><br>
<label for="course">课程:</label>
<input type="text" name="course" required><br>
<label for="score">成绩:</label>
<input type="text" name="score" required><br>
<input type="submit" value="添加">
</form>
<h2>查询成绩</h2>
<form method="POST" action="">
<label for="number">学号:</label>
<input type="text" name="number"><br>
<label for="name">姓名:</label>
<input type="text" name="name"><br>
<input type="submit" value="查询">
</form>
<table>
<thead>
<tr>
<th>学号</th>
<th>姓名</th>
<th>课程</th>
<th>成绩</th>
</tr>
</thead>
<tbody>
<%
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?characterEncoding=utf-8", "root", "password");
Statement stmt = conn.createStatement();
String number = request.getParameter("number");
String name = request.getParameter("name");
String sql = "SELECT * FROM score";
if(number != null && !number.equals("")){
sql += " WHERE number='" + number + "'";
}
if(name != null && !name.equals("")){
sql += " WHERE name='" + name + "'";
}
ResultSet rs = stmt.executeQuery(sql);
int count = 0;
int totalScore = 0;
while(rs.next()){
String num = rs.getString("number");
String n = rs.getString("name");
String course = rs.getString("course");
int score = rs.getInt("score");
count++;
totalScore += score;
%>
<tr>
<td><%= num %></td>
<td><%= n %></td>
<td><%= course %></td>
<td><%= score %></td>
</tr>
<% } %>
<tr>
<td colspan="3">平均分</td>
<td><%= count > 0 ? totalScore/count : 0 %></td>
</tr>
</tbody>
</table>
</main>
<footer>© 2021 学生信息管理系统</footer>
</body>
</html>
4.JSP和数据库交互
在设计完JSP页面之后,我们需要将页面和数据库进行交互,完成数据的增删改查等操作。这里我们使用JDBC进行连接和数据处理。在JSP页面中使用Java代码,在MySQL数据库中进行读写操作。
示例代码如下:
4.1 添加学生信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<%
String number = request.getParameter("number");
String name = request.getParameter("name");
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?characterEncoding=utf-8", "root", "password");
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO student (number, name) VALUES (?, ?)");
pstmt.setString(1, number);
pstmt.setString(2, name);
pstmt.executeUpdate();
pstmt.close();
conn.close();
response.sendRedirect("student.jsp");
%>
4.2 修改学生信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<%
String number = request.getParameter("number");
String name = request.getParameter("name");
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?characterEncoding=utf-8", "root", "password");
PreparedStatement pstmt = conn.prepareStatement("UPDATE student SET name=? WHERE number=?");
pstmt.setString(1, name);
pstmt.setString(2, number);
pstmt.executeUpdate();
pstmt.close();
conn.close();
response.sendRedirect("student.jsp");
%>
4.3 删除学生信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<%
String number = request.getParameter("number");
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?characterEncoding=utf-8", "root", "password");
PreparedStatement pstmt = conn.prepareStatement("DELETE FROM student WHERE number=?");
pstmt.setString(1, number);
pstmt.executeUpdate();
pstmt.close();
conn.close();
response.sendRedirect("student.jsp");
%>
4.4 添加成绩信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<%
String number = request.getParameter("number");
String name = request.getParameter("name");
String course = request.getParameter("course");
int score = Integer.parseInt(request.getParameter("score"));
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?characterEncoding=utf-8", "root", "password");
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO score (number, name, course, score) VALUES (?, ?, ?, ?)");
pstmt.setString(1, number);
pstmt.setString(2, name);
pstmt.setString(3, course);
pstmt.setInt(4, score);
pstmt.executeUpdate();
pstmt.close();
conn.close();
response.sendRedirect("score.jsp");
%>
5.部署和测试
在完成以上的工作之后,我们需要将代码部署到Web服务器上,并进行测试。可以选择Tomcat、Jetty等Web服务器进行部署。在Web服务器上启动我们的学生信息管理系统,测试其是否能够正常运行。
6.总结
通过以上的步骤,我们完成了一个简单的JSP学生信息管理系统。设计过程中涉及的知识点包括需求分析、数据库设计、JSP页面设计、JSP和数据库的交互等。同时,我们还学习了如何使用JDBC进行数据库的读写操作,和如何将代码部署到Web服务器上进行测试。当然,这只是一个简单的示例,真正实现一个完整的学生信息管理系统需要更多的思考和代码实现。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JSP学生信息管理系统设计 - Python技术站