写一个Javaweb统计学生的信息
时间: 2023-05-28 21:05:45 浏览: 103
javaweb学生信息管理系统-源码+数据库(高分课程设计&期末大作业)
对于这个需求,我们需要设计一个数据库表来存储学生的信息,包括学生姓名、学号、性别、出生日期、入学日期、专业等信息。然后通过Javaweb技术,编写相应的代码来实现信息的录入、修改、查询和统计功能。
以下是一个简单的示例代码:
1. 数据库表的设计
在数据库中创建一个名为“student”的表,包含以下字段:
字段名 | 数据类型 | 描述
---|---|---
id | int(11) | 自增主键
name | varchar(50) | 学生姓名
student_id | varchar(20) | 学生学号
gender | varchar(10) | 学生性别
birthday | date | 学生出生日期
enrollment_date | date | 学生入学日期
major | varchar(50) | 学生所在专业
2. 实现信息录入功能
在JSP页面中,通过表单提交学生信息,将数据传递给后台Servlet进行处理。在Servlet中,通过JDBC连接数据库,将学生信息插入到“student”表中。
示例代码:
// 获取表单参数
String name = request.getParameter("name");
String studentId = request.getParameter("student_id");
String gender = request.getParameter("gender");
String birthday = request.getParameter("birthday");
String enrollmentDate = request.getParameter("enrollment_date");
String major = request.getParameter("major");
// 插入学生信息到数据库
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = DBUtil.getConnection();
String sql = "INSERT INTO student(name, student_id, gender, birthday, enrollment_date, major) VALUES(?, ?, ?, ?, ?, ?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, studentId);
pstmt.setString(3, gender);
pstmt.setString(4, birthday);
pstmt.setString(5, enrollmentDate);
pstmt.setString(6, major);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn, pstmt, null);
}
3. 实现信息修改功能
在JSP页面中,提供一个表单,允许用户修改学生信息。将修改后的数据传递给后台Servlet进行处理。在Servlet中,通过JDBC连接数据库,更新对应学生的信息。
示例代码:
// 获取表单参数
int id = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
String studentId = request.getParameter("student_id");
String gender = request.getParameter("gender");
String birthday = request.getParameter("birthday");
String enrollmentDate = request.getParameter("enrollment_date");
String major = request.getParameter("major");
// 更新学生信息到数据库
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = DBUtil.getConnection();
String sql = "UPDATE student SET name=?, student_id=?, gender=?, birthday=?, enrollment_date=?, major=? WHERE id=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, studentId);
pstmt.setString(3, gender);
pstmt.setString(4, birthday);
pstmt.setString(5, enrollmentDate);
pstmt.setString(6, major);
pstmt.setInt(7, id);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn, pstmt, null);
}
4. 实现信息查询功能
在JSP页面中,提供一个表单,允许用户输入关键词进行查询。将查询结果显示在页面上。在Servlet中,通过JDBC连接数据库,执行对应的查询语句,将结果封装成List对象,传递给JSP页面进行显示。
示例代码:
// 获取查询关键词
String keyword = request.getParameter("keyword");
// 执行查询语句
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List<Student> students = new ArrayList<Student>();
try {
conn = DBUtil.getConnection();
String sql = "SELECT * FROM student WHERE name LIKE ? OR student_id LIKE ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "%" + keyword + "%");
pstmt.setString(2, "%" + keyword + "%");
rs = pstmt.executeQuery();
while (rs.next()) {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
student.setStudentId(rs.getString("student_id"));
student.setGender(rs.getString("gender"));
student.setBirthday(rs.getDate("birthday"));
student.setEnrollmentDate(rs.getDate("enrollment_date"));
student.setMajor(rs.getString("major"));
students.add(student);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn, pstmt, rs);
}
// 将查询结果传递给JSP页面
request.setAttribute("students", students);
request.getRequestDispatcher("search.jsp").forward(request, response);
5. 实现信息统计功能
在Servlet中,通过JDBC连接数据库,执行统计查询语句,将结果封装成Map对象,传递给JSP页面进行显示。
示例代码:
// 执行统计查询语句
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
Map<String, Integer> statistics = new LinkedHashMap<String, Integer>();
try {
conn = DBUtil.getConnection();
String sql = "SELECT major, COUNT(*) AS count FROM student GROUP BY major";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
String major = rs.getString("major");
int count = rs.getInt("count");
statistics.put(major, count);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn, pstmt, rs);
}
// 将统计结果传递给JSP页面
request.setAttribute("statistics", statistics);
request.getRequestDispatcher("statistics.jsp").forward(request, response);
以上是一个简单的Javaweb统计学生信息的示例,需要根据具体需求进行适当修改和完善。
阅读全文