小型学生信息管理系统
Java+MySQL
所有步骤均写在代码的注释行中,方便大家查看!!!
所有步骤均写在代码的注释行中,方便大家查看!!!
所有步骤均写在代码的注释行中,方便大家查看!!!
第一步,
package com.yann.student;
//这个接口定义对学生的四种操作方法
import java.util.List;
//增//删//改//查所有//查学号//查关键信息
//第一步,定义一个学生的接口,该接口必须要说明学生所具有的的所有方法
public interface StudentDao {
// 第一个方法,增加学生
public void addStudent(Student student);
// 第二个方法,删除学生
public void deleteStudent(int id);
// 第三个方法,更新学生信息
public void updateStudent(Student student);
// 第四个方法,打印出所有学生的名单
public List<Student> getAllStudent();
// 第五个方法,通过学号索引学生
public Student getStudentById(int id);
// 第六个方法,通过姓名和性别索引学生,有可能重名同性,故打印列表
public List<Student> getStudentByCondition(String name, String gender);
}
第二步,
package com.yann.student;
import java.sql.*;
//定义数据库连接
public class DBUtil {
// 新建一个方法,获得数据库的连接
public static Connection getConnection() {
// 首先让连接指向一个空值,否则return的时候没有全局变量
Connection connection = null;
try {
// 获得数据库连接,先输入连接URL,再输入账户名,再输入密码,用逗号隔开
// 这里需要注意的是,如果数据库报出编码异常,应该添加?useUnicode=true&characterEncoding=utf8
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf8", "root", "root");
} catch (SQLException e) {
// 捕捉异常
e.printStackTrace();
}
return connection;
}
}
第三步,
package com.yann.student;
//定义一个学生类,这是java入门的知识,没什么好说的,直接撸代码就好了
public class Student {
private int id;
private String name;
private int age;
private String gender;
private String phone;
private String education;
// 第一个构造方法,有id的
public Student(int id, String name, int age, String gender, String phone, String education) {
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
this.phone = phone;
this.education = education;
}
// 第二个构造方法,没有id的
public Student(String name, int age, String gender, String phone, String education) {
this.name = name;
this.age = age;
this.gender = gender;
this.phone = phone;
this.education = education;
}
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 getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEducation() {
return education;
}
public void setEducation(String education) {
this.education = education;
}
}
第四步,
package com.yann.student;
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 StudentDaoImpl implements StudentDao {
// 获得一个连接,指向空值
Connection connection = null;
// 获得一个操作数据库的语句,设为空值
PreparedStatement preparedStatement = null;
// 做一个结果集合,设为空值
ResultSet resultSet = null;
@Override
public void addStudent(Student student) {
// 编写SQL语句,这个只能看你数据库学得怎么样了,不过语法结构还是比较简单的
String sql = "insert into student values" +
"(null,?,?,?,?,?)";
try {
// 尝试连接
connection = DBUtil.getConnection();
// 执行SQL语句
preparedStatement = connection.prepareStatement(sql);
// 插入姓名,对应SQL语句中的第一个?(问号)
preparedStatement.setString(1, student.getName());
// 插入年龄,对应第二个?
preparedStatement.setInt(2, student.getAge());
// 插入性别,对应第三个?
preparedStatement.setString(3, student.getGender());
// 插入电话号码,对应第四个?
preparedStatement.setString(4, student.getPhone());
// 插入教育程度,对应第五个?
preparedStatement.setString(5, student.getEducation());
// 将上述语句送到数据库执行一发
preparedStatement.executeUpdate();
// 从系统告知我们添加成功
System.out.println("添加成功");
} catch (SQLException e) {
// 如果有异常,抛出即可
e.printStackTrace();
}
}
@Override
public void deleteStudent(int id) {
String sql = "delete from student where id=?";
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setObject(1, id);
preparedStatement.executeUpdate();
System.out.println("删除學生成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void updateStudent(Student student) {
String sql = "update student set name=?,age=?,gender=?,phone=?,education=? where id=?";
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, student.getName());
preparedStatement.setInt(2, student.getAge());
preparedStatement.setString(3, student.getGender());
preparedStatement.setString(4, student.getPhone());
preparedStatement.setString(5, student.getEducation());
preparedStatement.setInt(6, student.getId());
preparedStatement.executeUpdate();
System.out.println("修改學生成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public List<Student> getAllStudent() {
List<Student> students = new ArrayList<Student>();
String sql = "select * from student";
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
Student stu = new Student(resultSet.getInt(1), resultSet.getString(2), resultSet.getInt(3), resultSet.getString(4), resultSet.getString(5), resultSet.getString(6));
students.add(stu);
}
} catch (SQLException e) {
e.printStackTrace();
}
return students;
}
@Override
public Student getStudentById(int id) {
Student stu = null;
String sql = "select * from student where id=?";
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, id);
resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
stu = new Student(resultSet.getInt(1), resultSet.getString(2), resultSet.getInt(3), resultSet.getString(4), resultSet.getString(5), resultSet.getString(6));
}
} catch (SQLException e) {
e.printStackTrace();
}
return stu;
}
@Override
public List<Student> getStudentByCondition(String name, String gender) {
List<Student> students = new ArrayList<Student>();
String sql = "select * from student where name like ? and gender=?";
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setObject(1, "%" + name + "%");//注意此写法
preparedStatement.setObject(2, gender);
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
Student stu = new Student(resultSet.getInt(1), resultSet.getString(2), resultSet.getInt(3), resultSet.getString(4), resultSet.getString(5), resultSet.getString(6));
students.add(stu);
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
第五步,
package com.yann.student;
//做一个main方法测试一下
public class Test {
public static void main(String[] args) {
StudentDaoImpl studentDao = new StudentDaoImpl();
studentDao.addStudent(
new Student("tom", 20, "man", "110", "benke")
);
}
}
添加成功
Process finished with exit code 0