以下是一个简单的学生库管理系统示例代码,使用Java编写,并使用IntelliJ IDEA作为开发环境,MySQL作为数据库。
首先,创建一个名为“StudentManagement”的项目,并添加以下依赖项:
- MySQL Connector/J
- JBCrypt
接下来,创建一个名为“Student”的模型类,表示学生信息:
```
public class Student {
private int id;
private String name;
private int age;
private String gender;
private String major;
// 构造函数
public Student(int id, String name, int age, String gender, String major) {
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
this.major = major;
}
// getter 和 setter 方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
}
```
接下来,创建一个名为“DatabaseConnection”的类,负责连接到MySQL数据库:
```
import java.sql.*;
public class DatabaseConnection {
private static final String URL = "jdbc:mysql://localhost:3306/student_management";
private static final String USERNAME = "root";
private static final String PASSWORD = "password";
private Connection conn;
public DatabaseConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
public Connection getConnection() {
return conn;
}
}
```
然后,创建一个名为“StudentDao”的数据访问对象类,用于执行与学生相关的数据库操作:
```
import org.mindrot.jbcrypt.BCrypt;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class StudentDao {
private Connection conn;
public StudentDao() {
conn = new DatabaseConnection().getConnection();
}
// 添加学生
public void addStudent(Student student) {
String sql = "INSERT INTO students(name, age, gender, major) VALUES (?, ?, ?, ?)";
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, student.getName());
ps.setInt(2, student.getAge());
ps.setString(3, student.getGender());
ps.setString(4, student.getMajor());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 根据ID查找学生
public Student getStudentById(int id) {
String sql = "SELECT * FROM students WHERE id=?";
Student student = null;
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
student = new Student(
rs.getInt("id"),
rs.getString("name"),
rs.getInt("age"),
rs.getString("gender"),
rs.getString("major")
);
}
} catch (SQLException e) {
e.printStackTrace();
}
return student;
}
// 获取所有学生
public List<Student> getAllStudents() {
String sql = "SELECT * FROM students";
List<Student> students = new ArrayList<>();
try {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
Student student = new Student(
rs.getInt("id"),
rs.getString("name"),
rs.getInt("age"),
rs.getString("gender"),
rs.getString("major")
);
students.add(student);
}
} catch (SQLException e) {
e.printStackTrace();
}
return students;
}
// 更新学生信息
public void updateStudent(Student student) {
String sql = "UPDATE students SET name=?, age=?, gender=?, major=? WHERE id=?";
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, student.getName());
ps.setInt(2, student.getAge());
ps.setString(3, student.getGender());
ps.setString(4, student.getMajor());
ps.setInt(5, student.getId());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 删除学生
public void deleteStudent(int id) {
String sql = "DELETE FROM students WHERE id=?";
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
最后,创建一个名为“Main”的主程序类,用于演示如何使用StudentDao执行数据库操作:
```
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
StudentDao dao = new StudentDao();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请选择操作:");
System.out.println("1. 添加学生");
System.out.println("2. 查找学生");
System.out.println("3. 查看所有学生");
System.out.println("4. 更新学生信息");
System.out.println("5. 删除学生");
System.out.println("6. 退出程序");
System.out.print("请输入选项:");
int option = scanner.nextInt();
switch (option) {
case 1:
System.out.print("请输入姓名:");
String name = scanner.next();
System.out.print("请输入年龄:");
int age = scanner.nextInt();
System.out.print("请输入性别:");
String gender = scanner.next();
System.out.print("请输入专业:");
String major = scanner.next();
Student student = new Student(0, name, age, gender, major);
dao.addStudent(student);
System.out.println("添加成功!");
break;
case 2:
System.out.print("请输入学生ID:");
int id = scanner.nextInt();
Student studentById = dao.getStudentById(id);
if (studentById != null) {
System.out.println(studentById);
} else {
System.out.println("未找到该学生!");
}
break;
case 3:
List<Student> allStudents = dao.getAllStudents();
if (allStudents.size() > 0) {
for (Student s : allStudents) {
System.out.println(s);
}
} else {
System.out.println("暂无学生!");
}
break;
case 4:
System.out.print("请输入学生ID:");
int updateId = scanner.nextInt();
Student updateStudent = dao.getStudentById(updateId);
if (updateStudent != null) {
System.out.print("请输入姓名(回车不修改):");
String updateName = scanner.next();
if (!updateName.isEmpty()) {
updateStudent.setName(updateName);
}
System.out.print("请输入年龄(回车不修改):");
String updateAge = scanner.next();
if (!updateAge.isEmpty()) {
updateStudent.setAge(Integer.parseInt(updateAge));
}
System.out.print("请输入性别(回车不修改):");
String updateGender = scanner.next();
if (!updateGender.isEmpty()) {
updateStudent.setGender(updateGender);
}
System.out.print("请输入专业(回车不修改):");
String updateMajor = scanner.next();
if (!updateMajor.isEmpty()) {
updateStudent.setMajor(updateMajor);
}
dao.updateStudent(updateStudent);
System.out.println("更新成功!");
} else {
System.out.println("未找到该学生!");
}
break;
case 5:
System.out.print("请输入学生ID:");
int deleteId = scanner.nextInt();
dao.deleteStudent(deleteId);
System.out.println("删除成功!");
break;
case 6:
System.exit(0);
default:
System.out.println("无效选项!");
break;
}
}
}
}
```
运行程序,即可使用控制台界面进行学生库管理。