0
点赞
收藏
分享

微信扫一扫

Java mysql版学生管理系统(基础版)

sin信仰 2022-03-12 阅读 52

学校要求搞了一个小项目、实习生写的代码还有很多不足,但是基本功能都实现

懂得都懂,还缺少优化!各位可以自己加功能

(想要完整代码直接拖到下面复制)

1.第一步搭建mysql


首先我是采用了小皮面板8.0来启动mysql(下载)

mysql版本采用的是5.7.26、直接无脑点击开启mysql

2.打开项目目录、在scr同目录创建一个 libs文件夹、并且(下载密码6666)两个mysql.jar的包

这步是导入依赖

3.打开idea打开libs包、右键两个.jar的包、选择add to project library

 

 硬件就导入完毕了!

2.实现基础代码

2-1.首先要实现一些基础功能(这里我创建了一个StudentManager.java)

2-2菜单代码(ps:当flag=false的时候将跳出死循环)

import java.util.Scanner;

public class studentManager {
    //主类型
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        boolean flag = true;

        while (flag){
            //执行菜单
            displaymenu();
            /*用户输入的值*/
            String choice = sc.next();
            switch (choice){
                case "1":
                    System.out.println("添加学生");
                    break;
                case "2":
                    System.out.println("删除学生");
                    break;
                case "3":
                    System.out.println("修改学生");
                    break;
                case "4":
                    System.out.println("查看学生");
                    break;
                case "5":
                    System.out.println("退出");
                    flag = false;
                    break;
                default:
                    System.out.println("输入的值有误");
                    break;
            }

        }

    }
    //菜单
    private static void displaymenu() {
        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("请输入你的选择");
    }
}

写完的代码的预览图

这样就完成了第一步

 3.嵌入mysql和创建数据表

3.1创建mysql的表、注意id一定要选择自增

 3.2mysql连接方法、这个一定要先放进去,增删改查都需要用到他

private static Connection mysqlConnection() throws SQLException {
        /*格式:地址值:端口 数据库名字 ssl验证 时区*/
        String url = "jdbc:mysql://localhost:3306/heima?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";

        /*写入数据库账号密码*/
        Connection conn = DriverManager.getConnection(url, "root", "123456");

        /*返回*/
        return conn;
    }

3.3查询学生信息方法

/*查询学生数据*/
    private static void qureystudent() throws SQLException {
        mysqlQuery();
    }
//判断数据库是否有值、返回boolean类型、丢入一个sql语句
    public static boolean selectcheck(String sql) throws SQLException {
        //假设不存在
        boolean flag = false;
        //连接数据库,创建方法
        Connection conn = mysqlConnection();
        Statement  smt = null;
        smt = conn.createStatement();

        /*执行sql语句,获取boolean值*/
        ResultSet rs = smt.executeQuery(sql);
        if (rs.next()){
            flag = true;
            return flag;
        }
        return flag;
    }
//数据表查询
    public static void mysqlQuery() throws SQLException{
        Connection conn = mysqlConnection();
        Statement  smt = null;
        smt = conn.createStatement();
        //根据id进行降序
        String sql = "SELECT * FROM itheima order by id desc";
        boolean flag = selectcheck(sql);
        if (!flag){
            System.out.println("暂未有数据,请先添加");
            return;
        }

        ResultSet rs = smt.executeQuery(sql);
        //循环打印
        while(rs.next()){

            // 通过字段检索
            int id  = rs.getInt("id");
            String sid  = rs.getString("sid");
            String name = rs.getString("name");
            int age = rs.getInt("age");
            String brithday = rs.getString("brithday");

            // 输出数据
            System.out.print(" 编号:" + id);
            System.out.print(" 学号: " + sid);
            System.out.print(" 名字: " + name);
            System.out.print(" 年龄: " + age);
            System.out.print(" 生日: " + brithday);
            System.out.print("\n");

        }
        // 完成后关闭
        rs.close();
        smt.close();

    }

3.4新增学生数据方法

/*添加学生数据*/
    private static void addstudent() throws SQLException{
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入学生的学号");
        String sid = scanner.next();

        System.out.println("请输入学生的名字");
        String name = scanner.next();

        System.out.println("请输入学生的年龄");
        int age = scanner.nextInt();

        System.out.println("请输入学生的生日");
        String birthday = scanner.next();

        mysqlInsert(sid,name,age,birthday);

    }
//添加判断是否存在学号、传入一个student的学号
    public static boolean mysqlcheck(String student) throws SQLException {
        //假设不存在
        boolean flag = false;
        /*连接数据库*/
        Connection conn = mysqlConnection();
        //Statement执行sql语句,先设置为空
        Statement  smt = null;
        smt = conn.createStatement();

        /*mysql语句*/
        String sql = "SELECT * FROM itheima";
        /*将返回的值传回rs*/
        ResultSet rs = smt.executeQuery(sql);

        /*返回值是0或1,查看sid是否重复*/
        while(rs.next()){
            String sid  = rs.getString("sid");
            if (student.equals(sid)) {
                return true;
            }
        }

        return flag;
    }
//数据表添加、接收要添加的数据
    public static void mysqlInsert(String sid, String name, int age, String brithday) throws SQLException {
        //连接数据库
        Connection conn = mysqlConnection();
        //PreparedStatement操作数据库
        PreparedStatement smt = null;

        /*判断学号是否已经存在*/
        boolean flag = mysqlcheck(sid);
        if (flag){
            System.out.println("学号已存在,请换一个学号");
            return;
        }

        /*如果不存在继续往下执行*/
        String sql = "insert into itheima(sid,name,age,brithday) values(?,?,?,?)";
        smt = conn.prepareStatement(sql);
        smt.setString(1, sid);
        smt.setString(2, name);
        smt.setInt(3, age);
        smt.setString(4, brithday);
        int result =smt.executeUpdate();// 返回值0或者1

        /*人性化反馈*/
        if (result==1){
            System.out.println("添加学生数据成功");
        }else{
            System.out.println("添加学生数据失败");
        }
        //关闭资源,释放内存
        smt.close();
    }

3.5删除学生信息方法

/*删除学生数据*/
    private static void deletestudent() throws SQLException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要删除的id");
        int deletsid = sc.nextInt();

        mysqldelete(deletsid);

    }
//删除功能、丢入要删除的id
    public static void mysqldelete(int id) throws SQLException{
        //连接数据库
        Connection conn = mysqlConnection();
        PreparedStatement smt = null;

        //写入要删除的id
        String sql = "DELETE FROM itheima where id=?";
        smt = conn.prepareStatement(sql);
        smt.setInt(1, id);
        int result =smt.executeUpdate();

        if (result==0){
            System.out.println("删除失败,不存在的编号: "+id);
            return;
        }else{
            System.out.println("删除成功编号: "+id);
        }
    }

3.6修改学生信息的方法

/*修改学生数据*/
    public static void updateStudent() throws SQLException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改的编号:");
        int id = sc.nextInt();

        System.out.println("请输⼊新的学⽣学号:");
        String sid = sc.next();

        System.out.println("请输⼊新的学⽣姓名:");
        String name = sc.next();

        System.out.println("请输⼊新的学⽣年龄:");
        int age = sc.nextInt();

        System.out.println("请输⼊新的学⽣⽣⽇:");
        String birthday = sc.next();

        mysqlupdate(id,sid,name,age,birthday);
    }
//添加判断是否存在学号、传入一个student的学号
    public static boolean mysqlcheck(String student) throws SQLException {
        //假设不存在
        boolean flag = false;
        /*连接数据库*/
        Connection conn = mysqlConnection();
        //Statement执行sql语句,先设置为空
        Statement  smt = null;
        smt = conn.createStatement();

        /*mysql语句*/
        String sql = "SELECT * FROM itheima";
        /*将返回的值传回rs*/
        ResultSet rs = smt.executeQuery(sql);

        /*返回值是0或1,查看sid是否重复*/
        while(rs.next()){
            String sid  = rs.getString("sid");
            if (student.equals(sid)) {
                return true;
            }
        }

        return flag;
    }
    //修改功能
    public static void mysqlupdate(int id,String sid,String name,int age,String brithday) throws SQLException{
        //连接数据库
        Connection conn = mysqlConnection();
        PreparedStatement smt = null;

        /*调用mysqlcheck方法判断sid是否重复*/
        boolean flag = mysqlcheck(sid);
        if (flag){
            System.out.println("学号已存在,请换一个学号");
            return;
        }

        /*将传入的值放进语句里面*/
        String sql = "update itheima set sid=?,name=?,age=?,brithday=? where id=?";
        smt = conn.prepareStatement(sql);
        smt.setString(1, sid);
        smt.setString(2, name);
        smt.setInt(3,age);
        smt.setString(4,brithday);
        smt.setInt(5,id);

        /*人性化提示*/
        int result =smt.executeUpdate();// 返回值0或者1
        if(result>0) {
            System.out.println("修改成功");
        }else {
            System.out.println("修改失败");
        }

    }

4.完完整整的代码,可以直接用(类名需要改一下)

import java.sql.*;
import java.util.Scanner;

public class studentManager {
    //主类型
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Scanner sc = new Scanner(System.in);
        boolean flag = true;

        while (flag){
            //执行菜单
            displaymenu();
            /*用户输入的值*/
            String choice = sc.next();
            switch (choice){
                case "1":
                    System.out.println("添加学生");
                    /*添加数据*/
                    addstudent();
                    break;
                case "2":
                    System.out.println("删除学生");
                    deletestudent();
                    break;
                case "3":
                    System.out.println("修改学生");
                    updateStudent();
                    break;
                case "4":
                    System.out.println("查看学生");
                    qureystudent();
                    break;
                case "5":
                    System.out.println("退出");
                    flag = false;
                    break;
                default:
                    System.out.println("输入的值有误");
                    break;
            }

        }

    }
    //菜单
    private static void displaymenu() {
        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("请输入你的选择");
    }
    /*修改学生数据*/
    public static void updateStudent() throws SQLException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改的编号:");
        int id = sc.nextInt();

        System.out.println("请输⼊新的学⽣学号:");
        String sid = sc.next();

        System.out.println("请输⼊新的学⽣姓名:");
        String name = sc.next();

        System.out.println("请输⼊新的学⽣年龄:");
        int age = sc.nextInt();

        System.out.println("请输⼊新的学⽣⽣⽇:");
        String birthday = sc.next();

        mysqlupdate(id,sid,name,age,birthday);
    }
    /*删除学生数据*/
    private static void deletestudent() throws SQLException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要删除的id");
        int deletsid = sc.nextInt();

        mysqldelete(deletsid);

    }
    /*查询学生数据*/
    private static void qureystudent() throws SQLException {
        mysqlQuery();
    }
    /*添加学生数据*/
    private static void addstudent() throws SQLException{
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入学生的学号");
        String sid = scanner.next();

        System.out.println("请输入学生的名字");
        String name = scanner.next();

        System.out.println("请输入学生的年龄");
        int age = scanner.nextInt();

        System.out.println("请输入学生的生日");
        String birthday = scanner.next();

        mysqlInsert(sid,name,age,birthday);

    }


    /*查询用Statement和executeQuery*/
    /*修改用PreparedStatement和executeUpdate*/


    //数据库连接地址  标注成员函数可能抛出的sql异常 Connection数据库连接资源、方便其他方法调用
    private static Connection mysqlConnection() throws SQLException {
        /*格式:地址值:端口 数据库名字 ssl验证 时区*/
        String url = "jdbc:mysql://localhost:3306/heima?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";

        /*写入数据库账号密码*/
        Connection conn = DriverManager.getConnection(url, "root", "123456");

        /*返回*/
        return conn;
    }

    //数据表添加、接收要添加的数据
    public static void mysqlInsert(String sid, String name, int age, String brithday) throws SQLException {
        //连接数据库
        Connection conn = mysqlConnection();
        //PreparedStatement操作数据库
        PreparedStatement smt = null;

        /*判断学号是否已经存在*/
        boolean flag = mysqlcheck(sid);
        if (flag){
            System.out.println("学号已存在,请换一个学号");
            return;
        }

        /*如果不存在继续往下执行*/
        String sql = "insert into itheima(sid,name,age,brithday) values(?,?,?,?)";
        smt = conn.prepareStatement(sql);
        smt.setString(1, sid);
        smt.setString(2, name);
        smt.setInt(3, age);
        smt.setString(4, brithday);
        int result =smt.executeUpdate();// 返回值0或者1

        /*人性化反馈*/
        if (result==1){
            System.out.println("添加学生数据成功");
        }else{
            System.out.println("添加学生数据失败");
        }
        //关闭资源,释放内存
        smt.close();
    }

    //添加判断是否存在学号、传入一个student的学号
    public static boolean mysqlcheck(String student) throws SQLException {
        //假设不存在
        boolean flag = false;
        /*连接数据库*/
        Connection conn = mysqlConnection();
        //Statement执行sql语句,先设置为空
        Statement  smt = null;
        smt = conn.createStatement();

        /*mysql语句*/
        String sql = "SELECT * FROM itheima";
        /*将返回的值传回rs*/
        ResultSet rs = smt.executeQuery(sql);

        /*返回值是0或1,查看sid是否重复*/
        while(rs.next()){
            String sid  = rs.getString("sid");
            if (student.equals(sid)) {
                return true;
            }
        }

        return flag;
    }

    //数据表查询
    public static void mysqlQuery() throws SQLException{
        Connection conn = mysqlConnection();
        Statement  smt = null;
        smt = conn.createStatement();
        //根据id进行降序
        String sql = "SELECT * FROM itheima order by id desc";
        boolean flag = selectcheck(sql);
        if (!flag){
            System.out.println("暂未有数据,请先添加");
            return;
        }

        ResultSet rs = smt.executeQuery(sql);
        //循环打印
        while(rs.next()){

            // 通过字段检索
            int id  = rs.getInt("id");
            String sid  = rs.getString("sid");
            String name = rs.getString("name");
            int age = rs.getInt("age");
            String brithday = rs.getString("brithday");

            // 输出数据
            System.out.print(" 编号:" + id);
            System.out.print(" 学号: " + sid);
            System.out.print(" 名字: " + name);
            System.out.print(" 年龄: " + age);
            System.out.print(" 生日: " + brithday);
            System.out.print("\n");

        }
        // 完成后关闭
        rs.close();
        smt.close();

    }

    //判断数据库是否有值、返回boolean类型、丢入一个sql语句
    public static boolean selectcheck(String sql) throws SQLException {
        //假设不存在
        boolean flag = false;
        //连接数据库,创建方法
        Connection conn = mysqlConnection();
        Statement  smt = null;
        smt = conn.createStatement();

        /*执行sql语句,获取boolean值*/
        ResultSet rs = smt.executeQuery(sql);
        if (rs.next()){
            flag = true;
            return flag;
        }
        return flag;
    }

    //删除功能、丢入要删除的id
    public static void mysqldelete(int id) throws SQLException{
        //连接数据库
        Connection conn = mysqlConnection();
        PreparedStatement smt = null;

        //写入要删除的id
        String sql = "DELETE FROM itheima where id=?";
        smt = conn.prepareStatement(sql);
        smt.setInt(1, id);
        int result =smt.executeUpdate();

        if (result==0){
            System.out.println("删除失败,不存在的编号: "+id);
            return;
        }else{
            System.out.println("删除成功编号: "+id);
        }
    }

    //修改功能
    public static void mysqlupdate(int id,String sid,String name,int age,String brithday) throws SQLException{
        //连接数据库
        Connection conn = mysqlConnection();
        PreparedStatement smt = null;

        /*调用mysqlcheck方法判断sid是否重复*/
        boolean flag = mysqlcheck(sid);
        if (flag){
            System.out.println("学号已存在,请换一个学号");
            return;
        }

        /*将传入的值放进语句里面*/
        String sql = "update itheima set sid=?,name=?,age=?,brithday=? where id=?";
        smt = conn.prepareStatement(sql);
        smt.setString(1, sid);
        smt.setString(2, name);
        smt.setInt(3,age);
        smt.setString(4,brithday);
        smt.setInt(5,id);

        /*人性化提示*/
        int result =smt.executeUpdate();// 返回值0或者1
        if(result>0) {
            System.out.println("修改成功");
        }else {
            System.out.println("修改失败");
        }

    }
    
}
举报

相关推荐

0 条评论