用java写一个学生管理系统,需要录入和更新学生信息到mysql里,并可以提示重复学号录入
时间: 2024-03-02 13:52:25 浏览: 176
好的,学生管理系统可以采用面向对象编程的思想,用Java语言实现,并将学生信息存储到MySQL数据库中。以下是一个简单的实现方法:
1. 首先,需要引入MySQL的JDBC驱动,可以在项目中添加以下依赖:
```xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
```
2. 创建一个Student类,表示学生对象,包括学号、姓名、年龄、性别等属性。为了方便操作数据库,这里使用了Lombok库来简化代码。
```java
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
private String id; // 学号
private String name; // 姓名
private int age; // 年龄
private String gender; // 性别
}
```
3. 创建一个Database类,用于连接数据库和操作学生信息。在连接数据库时,需要提供数据库名称、用户名和密码。在添加学生时,需要先查询学生表中是否已经存在该学号的学生,如果存在则提示重复学号录入。以下是一个简单的Database类的定义:
```java
import java.sql.*;
public class Database {
private static final String DATABASE_NAME = "test"; // 数据库名称
private static final String USERNAME = "root"; // 数据库用户名
private static final String PASSWORD = "password"; // 数据库密码
private Connection connection;
public Database() {
try {
// 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立连接
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/" + DATABASE_NAME + "?useSSL=false&serverTimezone=UTC",
USERNAME,
PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
public void addStudent(Student student) {
try {
// 查询学生表中是否已经存在该学号的学生
String sql = "SELECT * FROM student WHERE id=?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, student.getId());
ResultSet resultSet = statement.executeQuery();
if (resultSet.next()) {
System.out.println("重复学号录入!");
return;
}
// 添加学生到数据库
sql = "INSERT INTO student (id, name, age, gender) VALUES (?, ?, ?, ?)";
statement = connection.prepareStatement(sql);
statement.setString(1, student.getId());
statement.setString(2, student.getName());
statement.setInt(3, student.getAge());
statement.setString(4, student.getGender());
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void updateStudent(Student student) {
try {
// 更新学生信息
String sql = "UPDATE student SET name=?, age=?, gender=? WHERE id=?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, student.getName());
statement.setInt(2, student.getAge());
statement.setString(3, student.getGender());
statement.setString(4, student.getId());
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
4. 在主函数中,可以创建一个Database类的对象,然后调用其方法实现添加学生、更新学生信息等功能。例如:
```java
public class Main {
public static void main(String[] args) {
Database database = new Database();
database.addStudent(new Student("1001", "张三", 18, "男"));
database.addStudent(new Student("1002", "李四", 19, "女"));
database.addStudent(new Student("1003", "王五", 20, "男"));
database.addStudent(new Student("1001", "赵六", 21, "女")); // 重复学号录入
database.updateStudent(new Student("1001", "张三", 22, "男"));
}
}
```
输出结果如下:
```
重复学号录入!
```
以上是一个简单的学生管理系统的实现,具体的实现方式可以根据实际需求进行调整。需要注意的是,这里只是提供了一个简单的实现方法,实际应用中还需要进行更多的错误处理和安全性考虑。
阅读全文