018-小型学生管理系统(MySQL实现增删改查),java代码可执行版本

小型学生信息管理系统

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

猜你喜欢

转载自blog.csdn.net/qq_31698195/article/details/89554858