JavaWeb老年人系统

创建项目:打开 IntelliJ IDEA,选择 File -> New -> Project,选择 Maven 项目,勾选 Create from archetype 并选择 org.apache.maven.archetypes:maven-archetype-webapp,点击 Next 完成项目创建。
xml:



javax.servlet
javax.servlet-api
4.0.1
provided



javax.servlet.jsp
javax.servlet.jsp-api
2.3.3
provided



javax.servlet
jstl
1.2



mysql
mysql-connector-java
8.0.26



commons-dbcp
commons-dbcp
1.4


配置 Tomcat:在 IDEA 中配置 Tomcat 服务器,选择 Run -> Edit Configurations,添加一个新的 Tomcat Server,配置 Deployment 选项,将项目部署到 Tomcat 中。
数据库设计
创建一个名为 elderly_assessment 的数据库,并创建以下两张表:
sql
-- 老年人信息表
CREATE TABLE elderly (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(50) NOT NULL,
name VARCHAR(50) NOT NULL,
age INT,
gender VARCHAR(10)
);

-- 老年人能力评估表
CREATE TABLE assessment (
id INT AUTO_INCREMENT PRIMARY KEY,
elderly_id INT NOT NULL,
assessment_date DATE NOT NULL,
ability_score INT,
FOREIGN KEY (elderly_id) REFERENCES elderly(id)
);
后端代码实现

  1. 数据库连接工具类(DBUtils.java)
    java
    import org.apache.commons.dbcp.BasicDataSource;

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

public class DBUtils {
private static BasicDataSource dataSource;

static {
    dataSource = new BasicDataSource();
    dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://localhost:3306/elderly_assessment?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC");
    dataSource.setUsername("root");
    dataSource.setPassword("your_password");
    dataSource.setInitialSize(5);
    dataSource.setMaxActive(10);
}

public static Connection getConnection() throws SQLException {
    return dataSource.getConnection();
}

}
2. 实体类(Elderly.java 和 Assessment.java)
java
// Elderly.java
public class Elderly {
private int id;
private String username;
private String password;
private String name;
private int age;
private String gender;

// 构造方法、Getter 和 Setter 方法
public Elderly() {}

public Elderly(String username, String password, String name, int age, String gender) {
    this.username = username;
    this.password = password;
    this.name = name;
    this.age = age;
    this.gender = gender;
}

// Getter 和 Setter 方法省略

}

// Assessment.java
public class Assessment {
private int id;
private int elderlyId;
private java.sql.Date assessmentDate;
private int abilityScore;

// 构造方法、Getter 和 Setter 方法
public Assessment() {}

public Assessment(int elderlyId, java.sql.Date assessmentDate, int abilityScore) {
    this.elderlyId = elderlyId;
    this.assessmentDate = assessmentDate;
    this.abilityScore = abilityScore;
}

// Getter 和 Setter 方法省略

}
3. 数据访问对象(ElderlyDAO.java 和 AssessmentDAO.java)
java
// ElderlyDAO.java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class ElderlyDAO {
public void register(Elderly elderly) {
String sql = "INSERT INTO elderly (username, password, name, age, gender) VALUES (?,?,?,?,?)";
try (Connection conn = DBUtils.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, elderly.getUsername());
pstmt.setString(2, elderly.getPassword());
pstmt.setString(3, elderly.getName());
pstmt.setInt(4, elderly.getAge());
pstmt.setString(5, elderly.getGender());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}

public Elderly login(String username, String password) {
    String sql = "SELECT * FROM elderly WHERE username = ? AND password = ?";
    try (Connection conn = DBUtils.getConnection();
         PreparedStatement pstmt = conn.prepareStatement(sql)) {
        pstmt.setString(1, username);
        pstmt.setString(2, password);
        ResultSet rs = pstmt.executeQuery();
        if (rs.next()) {
            Elderly elderly = new Elderly();
            elderly.setId(rs.getInt("id"));
            elderly.setUsername(rs.getString("username"));
            elderly.setPassword(rs.getString("password"));
            elderly.setName(rs.getString("name"));
            elderly.setAge(rs.getInt("age"));
            elderly.setGender(rs.getString("gender"));
            return elderly;
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}

}

// AssessmentDAO.java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class AssessmentDAO {
public void addAssessment(Assessment assessment) {
String sql = "INSERT INTO assessment (elderly_id, assessment_date, ability_score) VALUES (?,?,?)";
try (Connection conn = DBUtils.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, assessment.getElderlyId());
pstmt.setDate(2, assessment.getAssessmentDate());
pstmt.setInt(3, assessment.getAbilityScore());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}

public List<Assessment> queryAssessments(int elderlyId, java.sql.Date startDate, java.sql.Date endDate) {
    List<Assessment> assessments = new ArrayList<>();
    String sql = "SELECT * FROM assessment WHERE elderly_id = ? AND assessment_date BETWEEN ? AND ?";
    try (Connection conn = DBUtils.getConnection();
         PreparedStatement pstmt = conn.prepareStatement(sql)) {
        pstmt.setInt(1, elderlyId);
        pstmt.setDate(2, startDate);
        pstmt.setDate(3, endDate);
        ResultSet rs = pstmt.executeQuery();
        while (rs.next()) {
            Assessment assessment = new Assessment();
            assessment.setId(rs.getInt("id"));
            assessment.setElderlyId(rs.getInt("elderly_id"));
            assessment.setAssessmentDate(rs.getDate("assessment_date"));
            assessment.setAbilityScore(rs.getInt("ability_score"));
            assessments.add(assessment);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return assessments;
}

public double getAverageScore(int elderlyId) {
    String sql = "SELECT AVG(ability_score) FROM assessment WHERE elderly_id = ?";
    try (Connection conn = DBUtils.getConnection();
         PreparedStatement pstmt = conn.prepareStatement(sql)) {
        pstmt.setInt(1, elderlyId);
        ResultSet rs = pstmt.executeQuery();
        if (rs.next()) {
            return rs.getDouble(1);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return 0;
}

public List<Assessment> getAllAssessments() {
    List<Assessment> assessments = new ArrayList<>();
    String sql = "SELECT * FROM assessment";
    try (Connection conn = DBUtils.getConnection();
         PreparedStatement pstmt = conn.prepareStatement(sql)) {
        ResultSet rs = pstmt.executeQuery();
        while (rs.next()) {
            Assessment assessment = new Assessment();
            assessment.setId(rs.getInt("id"));
            assessment.setElderlyId(rs.getInt("elderly_id"));
            assessment.setAssessmentDate(rs.getDate("assessment_date"));
            assessment.setAbilityScore(rs.getInt("ability_score"));
            assessments.add(assessment);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return assessments;
}

}
4. Servlet 实现
java
// RegisterServlet.java
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;

@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
String gender = request.getParameter("gender");

    Elderly elderly = new Elderly(username, password, name, age, gender);
    ElderlyDAO elderlyDAO = new ElderlyDAO();
    elderlyDAO.register(elderly);

    response.sendRedirect("login.jsp");
}

}

// LoginServlet.java
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 javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");

    ElderlyDAO elderlyDAO = new ElderlyDAO();
    Elderly elderly = elderlyDAO.login(username, password);

    if (elderly != null) {
        HttpSession session = request.getSession();
        session.setAttribute("elderly", elderly);
        response.sendRedirect("index.jsp");
    } else {
        request.setAttribute("error", "用户名或密码错误");
        request.getRequestDispatcher("login.jsp").forward(request, response);
    }
}

}

// AddAssessmentServlet.java
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.Date;

@WebServlet("/addAssessment")
public class AddAssessmentServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
HttpSession session = request.getSession();
Elderly elderly = (Elderly) session.getAttribute("elderly");
int elderlyId = elderly.getId();
String dateStr = request.getParameter("assessmentDate");
Date assessmentDate = Date.valueOf(dateStr);
int abilityScore = Integer.parseInt(request.getParameter("abilityScore"));

    Assessment assessment = new Assessment(elderlyId, assessmentDate, abilityScore);
    AssessmentDAO assessmentDAO = new AssessmentDAO();
    assessmentDAO.addAssessment(assessment);

    response.sendRedirect("index.jsp");
}

}

// QueryAssessmentServlet.java
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.Date;
import java.util.List;

@WebServlet("/queryAssessment")
public class QueryAssessmentServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
HttpSession session = request.getSession();
Elderly elderly = (Elderly) session.getAttribute("elderly");
int elderlyId = elderly.getId();
String startDateStr = request.getParameter("startDate");
String endDateStr = request.getParameter("endDate");
Date startDate = Date.valueOf(startDateStr);
Date endDate = Date.valueOf(endDateStr);

    AssessmentDAO assessmentDAO = new AssessmentDAO();
    List<Assessment> assessments = assessmentDAO.queryAssessments(elderlyId, startDate, endDate);

    request.setAttribute("assessments", assessments);
    request.getRequestDispatcher("queryResult.jsp").forward(request, response);
}

}

// StatisticsServlet.java
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 javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/statistics")
public class StatisticsServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
HttpSession session = request.getSession();
Elderly elderly = (Elderly) session.getAttribute("elderly");
int elderlyId = elderly.getId();

    AssessmentDAO assessmentDAO = new AssessmentDAO();
    double averageScore = assessmentDAO.getAverageScore(elderlyId);

    request.setAttribute("averageScore", averageScore);
    request.getRequestDispatcher("statistics.jsp").forward(request, response);
}

}

// ExportServlet.java
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.io.PrintWriter;
import java.util.List;

@WebServlet("/export")
public class ExportServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/csv");
response.setHeader("Content-Disposition", "attachment; filename=assessment_data.csv");

    AssessmentDAO assessmentDAO = new AssessmentDAO();
    List<Assessment> assessments = assessmentDAO.getAllAssessments();

    PrintWriter writer = response.getWriter();
    writer.println("ID,老年人 ID,评估日期,能力得分");
    for (Assessment assessment : assessments) {
        writer.println(assessment.getId() + "," + assessment.getElderlyId() + "," + assessment.getAssessmentDate() + "," + assessment.getAbilityScore());
    }
    writer.close();
}

}
前端页面实现

  1. 登录页面(login.jsp)
    jsp
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
登录

登录



注册

${error}

2. 注册页面(register.jsp) jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 注册

注册



<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 老年人评估系统 - 主页

欢迎,${elderly.name}

进行能力评估
查询评估数据
查看数据统计
导出评估数据
退出登录 4. 能力评估页面(addAssessment.jsp) jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 老年人能力评估

老年人能力评估



返回主页 5. 评估数据查询页面(queryAssessment.jsp) jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 评估数据查询

评估数据查询



返回主页 6. 评估数据查询结果页面(queryResult.jsp) jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 评估数据查询结果

评估数据查询结果

ID 老年人 ID 评估日期 能力得分
${assessment.id} ${assessment.elderlyId} ${assessment.assessmentDate} ${assessment.abilityScore}
返回主页 7. 数据统计页面(statistics.jsp) jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 能力数据统计

能力数据统计

平均得分:${averageScore}

返回主页 退出登录 Servlet(LogoutServlet.java) java 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 javax.servlet.http.HttpSession; import java.io.IOException;

@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
session.invalidate();
response.sendRedirect("login.jsp");
}
}
项目总结:
通过以上步骤,我们完成了一个基于 JavaWeb 的老年人评估系统的开发,主要实现了以下功能:
老年人登录、注册:用户可以通过 login.jsp 页面登录系统,若没有账号可通过 register.jsp 页面进行注册。
老年人能力定期评估:登录后,用户可以在 addAssessment.jsp 页面输入评估日期和能力得分,提交评估信息。
能力评估数据多条件查询:用户可以在 queryAssessment.jsp 页面输入开始日期和结束日期,查询指定时间段内的评估数据,查询结果显示在 queryResult.jsp 页面。
能力数据统计:用户可以在主页点击 “查看数据统计” 链接,查看自己的平均能力得分,统计结果显示在 statistics.jsp 页面。
能力数据导出:用户可以在主页点击 “导出评估数据” 链接,将所有评估数据以 CSV 文件的形式导出。

posted @ 2025-02-19 16:45  Echosssss  阅读(12)  评论(0)    收藏  举报