完成了用户管理界面,测试界面,测试记录,排行榜,以及权限控制,并最终美化了界面

This commit is contained in:
2026-01-04 04:09:57 +08:00
parent 6cb9a8f864
commit d0d1c6aab0
34 changed files with 2503 additions and 606 deletions

View File

@@ -0,0 +1,233 @@
package backend.dao;
import backend.model.Questions;
import backend.model.TestRecord;
import backend.utils.DBConnectionPool;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class QuestionsDao {
List<Questions> commonResultSet(ResultSet rs) throws SQLException{
List<Questions> questionPoList = new ArrayList<>();
while(rs.next()){
Questions questions = new Questions();
questions.setId(rs.getInt("id"));
questions.setName(rs.getString("name"));
questions.setDescription(rs.getString("description"));
questions.setAnswer(rs.getString("answer"));
questions.setFrequency(rs.getInt("frequency"));
questionPoList.add(questions);
}
return questionPoList;
}
public List<Questions> getAll() {
List<Questions> questionPoList = new ArrayList<>();
//1. 从连接池中拿到连接
Connection conn = DBConnectionPool.getConnection();
if(conn==null)
return null;
//2. 创建Statement对象
String sql = "select id,name,description,answer,frequency from questions";
try{
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
questionPoList=commonResultSet(rs);
rs.close();
stmt.close();
}catch(SQLException e){
System.out.println("数据库异常:"+ e.getMessage());
}finally {
DBConnectionPool.releaseConnection(conn);
}
return questionPoList;
}
public Questions getById(Integer id) {
Connection conn = DBConnectionPool.getConnection();
if (conn == null)
return null;
Questions questionPo = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
stmt = conn.prepareStatement("select id,name,description,answer,frequency from questions where id = ?");
stmt.setInt(1, id);
rs = stmt.executeQuery();
if (rs.next()) { // 检查是否有数据
questionPo = new Questions();
questionPo.setId(rs.getInt("id"));
questionPo.setName(rs.getString("name"));
questionPo.setDescription(rs.getString("description"));
questionPo.setAnswer(rs.getString("answer"));
questionPo.setFrequency(rs.getInt("frequency"));
}
} catch (SQLException e) {
System.out.println("数据库异常:" + e.getMessage());
} finally {
// 释放资源
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
} catch (SQLException e) {
System.out.println("资源释放异常:" + e.getMessage());
}
DBConnectionPool.releaseConnection(conn);
}
return questionPo;
}
public List<Questions> getByCondition(Integer frequency,String key) {
List<Questions> questionPoList = null;
//1. 从连接池中拿到连接
Connection conn = DBConnectionPool.getConnection();
if(conn==null)
return null;
//2. 创建Statement对象
String sql = "select id,name,description,answer,frequency from questions where name like ?";
if(frequency != null)
sql += " and frequency = ?";
try{
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, "%"+key+"%");
if(frequency != null)
stmt.setInt(2, frequency);
ResultSet rs = stmt.executeQuery();
questionPoList =commonResultSet(rs);
rs.close();
stmt.close();
}catch(SQLException e){
System.out.println("数据库异常:"+ e.getMessage());
}finally {
DBConnectionPool.releaseConnection(conn);
}
return questionPoList;
}
public boolean insert(Questions question){
int row = 0;
//1. 从连接池中拿到连接
Connection conn = DBConnectionPool.getConnection();
if(conn==null)
return false;
//2. 创建Statement对象
String sql = "insert into questions(name,description,answer,frequency) values(?,?,?,?)";
try{
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, question.getName());
stmt.setString(2, question.getDescription());
stmt.setString(3, question.getAnswer());
if(question.getFrequency()==null)
stmt.setInt(4, 0);
else
stmt.setInt(4, question.getFrequency());
row = stmt.executeUpdate();
stmt.close();
}catch(SQLException e){
System.out.println("数据库异常:"+ e.getMessage());
}finally {
DBConnectionPool.releaseConnection(conn);
}
return row > 0;
}
public boolean delete(Integer id){
int row = 0;
//1. 从连接池中拿到连接
Connection conn = DBConnectionPool.getConnection();
if(conn==null)
return false;
//2. 创建Statement对象
String sql = "delete from questions where id = ?";
try{
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, id);
row = stmt.executeUpdate();
stmt.close();
}catch(SQLException e){
System.out.println("数据库异常:"+ e.getMessage());
}finally {
DBConnectionPool.releaseConnection(conn);
}
return row > 0;
}
public boolean update(Questions question){
int row = 0;
//1. 从连接池中拿到连接
Connection conn = DBConnectionPool.getConnection();
if(conn==null)
return false;
//2. 创建Statement对象
String sql = "update questions set name = ?,description = ?,answer = ?,frequency=? where id = ?";
try{
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, question.getName());
stmt.setString(2, question.getDescription());
stmt.setString(3, question.getAnswer());
if(question.getFrequency()==null)
stmt.setInt(4, 0);
else
stmt.setInt(4, question.getFrequency());
stmt.setInt(5, question.getId());
row = stmt.executeUpdate();
stmt.close();
}catch(SQLException e){
System.out.println("数据库异常:"+ e.getMessage());
}finally {
DBConnectionPool.releaseConnection(conn);
}
return row > 0;
}
public Questions getRandomQuestion() {
List<Questions> questionPoList = getAll();
Random random = new Random();
//生成随机索引
int index = random.nextInt(questionPoList.size());
return questionPoList.get(index);
}
public Questions getByName(String name) {
Questions questionPo = null;
//1. 从连接池中拿到连接
Connection conn = DBConnectionPool.getConnection();
if(conn==null)
return null;
//2. 创建Statement对象
String sql = "select id,name,description,answer,frequency from questions where name = ?";
try{
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, name);
ResultSet rs = stmt.executeQuery();
questionPo = commonResultSet(rs).get(0);
rs.close();
stmt.close();
} catch(SQLException e){
System.out.println("数据库异常:"+ e.getMessage());
} finally {
DBConnectionPool.releaseConnection(conn);
}
return questionPo;
}
// public static void main(String[] args) {
// WordDao wordDao = new WordDao();
// //查询
// List<WordPo> wordPoList = wordDao.getByCondition(3,"v");
// if(wordPoList != null)
// for(WordPo wordPo:wordPoList)
// System.out.println(wordPo.getWord());
// //增加
// wordDao.insert(new WordPo("test", "test", "test", 1));
// //更新
// wordDao.updata(new WordPo(1, 1, "test", "test", "test"));
// }
}