在学生关系管理系统中,需要录入学生、修改学生、查询学生和删除学生。其中查询可以根据学生学号、学生姓名(模糊)查询。对于教务系统,对性能和安全都有一定的要求。请根据此场景,设计一个系统,能够实现对学生信息的维护。要求: (1)使用C3P0数据源、配置文件的方式,创建数据库连接池。 (2)使用DBUtils承担对学生信息的增删改查操作。
时间: 2024-03-18 13:42:33 浏览: 108
好的,针对您的要求,我可以为您设计如下的学生信息管理系统:
1. 数据库设计
(1)学生表(student_info):
字段名|类型|说明
-|-|-
id|int|学生ID,主键
name|varchar(20)|学生姓名
student_number|varchar(20)|学生学号
age|int|学生年龄
gender|varchar(10)|学生性别
address|varchar(100)|学生住址
2. 系统设计
(1)连接池配置
在项目中引入C3P0连接池,并在配置文件中配置数据库连接信息,如下所示:
```xml
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
```
(2)DBUtils操作数据库
在项目中引入DBUtils,并使用QueryRunner类承担对学生信息的增删改查操作,如下所示:
```java
public class StudentDao {
private QueryRunner qr = new QueryRunner(DBUtils.getDataSource());
// 添加学生信息
public void addStudent(Student student) throws SQLException {
String sql = "INSERT INTO student_info (name, student_number, age, gender, address) VALUES (?, ?, ?, ?, ?)";
qr.update(sql, student.getName(), student.getStudentNumber(), student.getAge(), student.getGender(), student.getAddress());
}
// 删除学生信息
public void deleteStudentById(int id) throws SQLException {
String sql = "DELETE FROM student_info WHERE id = ?";
qr.update(sql, id);
}
// 修改学生信息
public void updateStudent(Student student) throws SQLException {
String sql = "UPDATE student_info SET name = ?, student_number = ?, age = ?, gender = ?, address = ? WHERE id = ?";
qr.update(sql, student.getName(), student.getStudentNumber(), student.getAge(), student.getGender(), student.getAddress(), student.getId());
}
// 根据学号查询学生信息
public Student findStudentByNumber(String number) throws SQLException {
String sql = "SELECT id, name, student_number, age, gender, address FROM student_info WHERE student_number = ?";
return qr.query(sql, new BeanHandler<Student>(Student.class), number);
}
// 根据姓名模糊查询学生信息
public List<Student> findStudentByName(String name) throws SQLException {
String sql = "SELECT id, name, student_number, age, gender, address FROM student_info WHERE name LIKE ?";
return qr.query(sql, new BeanListHandler<Student>(Student.class), "%" + name + "%");
}
}
```
3. 总结
通过以上的设计,我们可以实现对学生信息的增删改查操作,并且使用连接池和DBUtils可以提高系统的性能,同时也有一定的安全性。当然,在实际开发中,还需结合具体场景进行优化。
阅读全文