Java connects to mysql database to implement library management system

Library management system, specific functions include:
1. User login
2. User registration
3. New book storage
4. Book information query
5. Book update (modification)
6. Old book deletion
7. Borrow card registration
8. Book borrowing Management
complete project: https://download.csdn.net/download/sger123/12887202

//数据库连接    MySQL:8.0.14
public class DBConnection {
    
    
    public static final String DRIVER ="com.mysql.cj.jdbc.Driver";
    public static final String URL="jdbc:mysql://localhost:3306/library_management_system?serverTimezone=GMT%2B8";
   //library_management_system 是自己创建的数据库名字
   // public static final String URL="jdbc:mysql://localhost:3306/library_management_system";mysql5.0的
    public static final String USER="root";
    public static final String PASSWORD="123456";

    Connection conn =null;
    public DBConnection(){
    
    

        try{
    
    
            Class.forName(DRIVER);
        }catch (ClassNotFoundException e) {
    
    
            e.printStackTrace();
        }

        try{
    
    
            conn= DriverManager.getConnection(URL,USER,PASSWORD);
        }catch (SQLException e) {
    
    
            e.printStackTrace();
        }
    }
    public Connection getConnection(){
    
    
        return this.conn;
    }


    public void close(){
    
    
        if(this.conn!=null){
    
    
            try{
    
    
                this.conn.close();
            } catch (SQLException e) {
    
    
                e.printStackTrace();
            }
        }
    }
    
}

Administrator table
Insert image description here
Book table
Insert image description here
Reader table
Insert image description here

Borrowing table
Insert image description here
Foreign key relationship of borrowing table
Insert image description here

javaBean

//图书类
public class Book {
    
    
    private int book_id;          //图书编号
    private String book_name;      //书名
    private String book_author;   //作者
    private String book_press;   //出版社

    public Book(int book_id, String book_name, String book_author, String book_press) {
    
    
        this.book_id = book_id;
        this.book_name = book_name;
        this.book_author = book_author;
        this.book_press = book_press;
    }

    public int getBook_id() {
    
    
        return book_id;
    }

    public void setBook_id(int book_id) {
    
    
        this.book_id = book_id;
    }

    public String getBook_name() {
    
    
        return book_name;
    }

    public void setBook_name(String book_name) {
    
    
        this.book_name = book_name;
    }

    public String getBook_author() {
    
    
        return book_author;
    }

    public void setBook_author(String book_author) {
    
    
        this.book_author = book_author;
    }

    public String getBook_press() {
    
    
        return book_press;
    }

    public void setBook_press(String book_press) {
    
    
        this.book_press = book_press;
    }
//读者类
public class User {
    
    
    private int user_id;   //借阅证
    private String  user_name;
    private int user_age;
    private String user_sex;
    private String user_phone;

    public User(int user_id, String user_name, int user_age, String user_sex, String user_phone) {
    
    
        this.user_id = user_id;
        this.user_name = user_name;
        this.user_age = user_age;
        this.user_sex = user_sex;
        this.user_phone = user_phone;
    }

    public int getUser_id() {
    
    
        return user_id;
    }

    public void setUser_id(int user_id) {
    
    
        this.user_id = user_id;
    }

    public String getUser_name() {
    
    
        return user_name;
    }

    public void setUser_name(String user_name) {
    
    
        this.user_name = user_name;
    }

    public int getUser_age() {
    
    
        return user_age;
    }

    public void setUser_age(int user_age) {
    
    
        this.user_age = user_age;
    }

    public String getUser_sex() {
    
    
        return user_sex;
    }

    public void setUser_sex(String user_sex) {
    
    
        this.user_sex = user_sex;
    }

    public String getUser_phone() {
    
    
        return user_phone;
    }

    public void setUser_phone(String user_phone) {
    
    
        this.user_phone = user_phone;
    }
}

//借阅类
public class Borrow {
    
    
    private  int user_id;
    private int book_id;

    public Borrow(int user_id, int book_id) {
    
    
        this.user_id = user_id;
        this.book_id = book_id;
    }

    public int getUser_id() {
    
    
        return user_id;
    }

    public void setUser_id(int user_id) {
    
    
        this.user_id = user_id;
    }

    public int getBook_id() {
    
    
        return book_id;
    }

    public void setBook_id(int book_id) {
    
    
        this.book_id = book_id;
    }
}

DBDao class

public class DBDao {
    
    
    private DBConnection dbConnection = null;
    private Connection conn = null;
   /* private static String username;
    private static String password;*/
    static Scanner input = new Scanner(System.in);

    public DBDao() {
    
    
        this.dbConnection =new DBConnection();
        this.conn = dbConnection.getConnection();
    }

    //管理员登陆
    public boolean denglu(){
    
    
        System.out.println("----管理员登录----");
        System.out.println("输入用户名:");
        String adminName=input.next();
        System.out.println("输入密码:");
        String adminPwd=input.next();
        String sql="SELECT ADMIN_NAME,ADMIN_PWD FROM ADMIN WHERE ADMIN_NAME=? AND ADMIN_PWD=?";
        PreparedStatement ptmt= null;
        try {
    
    
            ptmt = conn.prepareStatement(sql);
            ptmt.setString(1, adminName);
            ptmt.setString(2, adminPwd);
            ResultSet rs=ptmt.executeQuery();
            if (rs.next()) {
    
    
                System.out.println("登录成功!");
                return true;
            } else {
    
    
                System.out.println("账号或密码不正确,请重新登录!\n");
                return false;
            }
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        }
        return false;
    }

    //管理员注册
    public boolean zhuce(){
    
    
        System.out.println("----管理员注册----");
        System.out.println("输入用户名:");
        String adminName=input.next();
        System.out.println("输入密码:");
        String adminPwd1=input.next();
        System.out.println("再次确认密码");
        String adminPwd2=input.next();

        if(adminPwd1.equals(adminPwd2)){
    
    
            String password=adminPwd1;
            String sql="INSERT INTO ADMIN(ADMIN_NAME,ADMIN_PWD) VALUES(?,?)";
            PreparedStatement ptmt= null;
            try {
    
    
                ptmt = conn.prepareStatement(sql);
                ptmt.setString(1, adminName);
                ptmt.setString(2, password);
                ptmt.execute();
                System.out.println("注册成功!");
                return true;
            } catch (SQLException e) {
    
    
                e.printStackTrace();
            }
        }else{
    
    
            System.out.println("你输入的两次密码不一致,请重新注册!");
            return false;
        }
       return false;
    }

    //新图书入库
    public boolean insertBook(Book book){
    
    
        boolean flag = false;
        PreparedStatement pstmt = null;
        String sql = "insert into book(book_id,book_name,book_author,book_press) values(?,?,?,?)";
        try {
    
    
            pstmt = conn.prepareStatement(sql); //模糊查询
            pstmt.setInt(1, book.getBook_id());
            pstmt.setString(2,book.getBook_name());
            pstmt.setString(3, book.getBook_author());
            pstmt.setString(4,book.getBook_press());
            if (pstmt.executeUpdate() > 0) {
    
    
                flag = true;
            }
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            try {
    
    
                pstmt.close();
            } catch (SQLException e) {
    
    
                e.printStackTrace();
            }
        }
        return flag;
    }


    //查询所有图书信息
    public boolean bookInof(){
    
    

        Statement stmt =null;

        String sql="select * from book";
        try{
    
    
            stmt=conn.createStatement();
            //执行查询数据库的SQL语句   ,返回一个结果集(ResultSet)对象。
            ResultSet Book = stmt.executeQuery(sql);
            System.out.println("图书编号"+"   书名"+"                               " +
                    "作者"+"                  出版社");
            while(Book.next()){
    
     //如果对象中有数据,就会循环打印出来

                System.out.printf("%-10s",Book.getString("book_id"));
                System.out.printf("%-30s",Book.getString("book_name"));
                System.out.printf("%-20s",Book.getString("book_author"));
                System.out.printf("%-20s\n",Book.getString("book_press"));
            }
        }catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            try {
    
    
                stmt.close();
            } catch (SQLException e) {
    
    
                e.printStackTrace();
            }
        }
        return true;

    }

    //查询该图书编号图书信息
    public  boolean searchBook(int id){
    
    
        PreparedStatement pstmt=null;
        String sql="SELECT book_id,book_name,book_author,book_press FROM book WHERE book_id=?";
        try{
    
    
            pstmt=conn.prepareStatement(sql);
            pstmt.setInt(1, id);

            ResultSet rs=pstmt.executeQuery();
            while(rs.next()){
    
    
                System.out.println("图书编号:"+rs.getInt(1)+"\t"+"书名:"+rs.getString(2)+"\t"+"图书作者:"+rs.getString(3)+"\t"+"出版社:"+rs.getString(4));
            }
        }catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            try {
    
    
                pstmt.close();
            } catch (SQLException e) {
    
    
                e.printStackTrace();
            }
        }
        return true;

    }

    //用图书编号修改图书信息
    public boolean bookUpdate(int id,Book book){
    
    
        boolean flag=false;
        PreparedStatement pstmt = null;
        String sql="UPDATE book SET book_name=?,book_author=?,book_press=? WHERE book_id=?";
        try{
    
    
            pstmt=conn.prepareStatement(sql);
            pstmt.setString(1, book.getBook_name());
            pstmt.setString(2, book.getBook_author());
            pstmt.setString(3, book.getBook_press());
            pstmt.setInt(4, book.getBook_id());
            if (pstmt.executeUpdate() > 0) {
    
    
                flag = true;
            }
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            try {
    
    
                pstmt.close();
            } catch (SQLException e) {
    
    
                e.printStackTrace();
            }
        }
        return flag;

    }


    //按编号删除旧图书
    public boolean delelteBook(int id){
    
    
        boolean flag=false;
        PreparedStatement pstmt=null;
        String sql="DELETE FROM book WHERE book_id=?";

        try{
    
    
            pstmt=conn.prepareStatement(sql);
            pstmt.setInt(1, id);     //接收id传入sql语句
            if (pstmt.executeUpdate() > 0) {
    
            // 至少已经更新了一行
                flag = true;
            }
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            try {
    
    
                pstmt.close();
            } catch (SQLException e) {
    
    
                e.printStackTrace();
            }
        }
        return flag;

    }


    //办理借阅证
    public boolean  loanCard(User user){
    
    
        boolean flag = false;
        PreparedStatement pstmt = null;
        String sql = "insert into user(user_id,user_name,user_age,user_sex,user_phone) values(?,?,?,?,?)";
        try {
    
    
            pstmt = conn.prepareStatement(sql); //模糊查询
            pstmt.setInt(1, user.getUser_id());
            pstmt.setString(2, user.getUser_name());
            pstmt.setInt(3, user.getUser_age());
            pstmt.setString(4, String.valueOf(user.getUser_sex()));
            pstmt.setString(5, user.getUser_phone());

            if (pstmt.executeUpdate() > 0) {
    
    
                flag = true;
            }
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            try {
    
    
                pstmt.close();
            } catch (SQLException e) {
    
    
                e.printStackTrace();
            }
        }
        return flag;
    }

    //用借书证搜索读者

    public boolean searchUser(int id){
    
    
        PreparedStatement pstmt=null;
        String sql="SELECT user_id,user_name,user_age,user_sex,user_phone FROM user WHERE user_id=?";
        try{
    
    
            pstmt=conn.prepareStatement(sql);
            pstmt.setInt(1, id);

            ResultSet rs=pstmt.executeQuery();
            while(rs.next()){
    
    
                System.out.println("读者借书证号:"+rs.getInt(1)+"\t"+"读者姓名:"+rs.getString(2)+"\t"+"读者年龄:"+rs.getString(3)+"\t"+"读者性别"+rs.getString(4)+"\t"+"读者联系方式"+rs.getString(5));
            }
        }catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            try {
    
    
                pstmt.close();
            } catch (SQLException e) {
    
    
                e.printStackTrace();
            }
        }
        return true;
    }

    //搜索所有拥有借书证读者
    public boolean userInof(){
    
    
        Statement stmt =null;

        String sql="select * from user";
        try{
    
    
            stmt=conn.createStatement();
            //执行查询数据库的SQL语句   ,返回一个结果集(ResultSet)对象。
            ResultSet Book = stmt.executeQuery(sql);
            System.out.println("借书证号"+"   读者姓名"+"                 " +
                    "读者年龄"+"  读者性别"+"      联系方式");
            while(Book.next()){
    
     //如果对象中有数据,就会循环打印出来

                System.out.printf("%-10s",Book.getString("user_id"));
                System.out.printf("%20s",Book.getString("user_name"));
                System.out.printf("%20s",Book.getString("user_age"));
                System.out.printf("%20s",Book.getString("user_sex"));
                System.out.printf("%20s\n",Book.getString("user_phone"));
            }
        }catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            try {
    
    
                stmt.close();
            } catch (SQLException e) {
    
    
                e.printStackTrace();
            }
        }
        return true;

    }

    //借书
    public boolean borrow(Borrow borrow){
    
    
        if(serachBorrow(borrow.getBook_id())){
    
    
            return false;
        }
        boolean flag = false;
        PreparedStatement pstmt = null;
        String sql = "insert into borrow(user_id,book_id) values(?,?)";
        try {
    
    
            pstmt = conn.prepareStatement(sql); //模糊查询
            pstmt.setInt(1, borrow.getUser_id());
            pstmt.setInt(2,borrow.getBook_id());

            if (pstmt.executeUpdate() > 0) {
    
    
                flag = true;
            }
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            try {
    
    
                pstmt.close();
            } catch (SQLException e) {
    
    
                e.printStackTrace();
            }
        }
        return flag;
    }

    //还书
    public boolean return_book(Borrow borrow){
    
    
        boolean flag=false;
        PreparedStatement pstmt=null;
        String sql="DELETE FROM borrow WHERE user_id=? and book_id=?";

        try{
    
    
            pstmt=conn.prepareStatement(sql);
            pstmt.setInt(1, borrow.getUser_id());
            pstmt.setInt(2, borrow.getBook_id());
            if (pstmt.executeUpdate() > 0) {
    
    
                flag = true;
            }
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            try {
    
    
                pstmt.close();
            } catch (SQLException e) {
    
    
                e.printStackTrace();
            }
        }
        return flag;


    }

        //在借阅表中搜索该图书
    public boolean serachBorrow(int book_id){
    
    
        String sql="SELECT book_id FROM borrow WHERE book_id=?";
        PreparedStatement ptmt= null;
        try {
    
    
            ptmt = conn.prepareStatement(sql);
            ptmt.setInt(1, book_id);

            ResultSet rs=ptmt.executeQuery();
            if (rs.next()) {
    
    
                System.out.println("图书已被借走!\n");
                return true;
            } else {
    
    
                return false;
            }
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        }
        return false;
    }
}

Main class

public class Main {
    
    
    public static Scanner scanner=new Scanner(System.in);
    public static DBDao dbDao=new DBDao();
    public static void main(String[] args) {
    
    

        Main main=new Main();
        System.out.println("欢迎使用图书馆管理系统");
        System.out.println("1.登陆         2.注册");

        System.out.println("请选择你要进行的操作:");
        int choose1=scanner.nextInt();
        switch (choose1){
    
    
            case 1:
               if( dbDao.denglu()){
    
    
                   main.caozuo();
               }

                break;
            case 2:
                if(dbDao.zhuce()){
    
    
                 dbDao.denglu();
                }else{
    
    
                    System.out.println("注册失败");
                }
                break;
        }

    }
    //登陆后才能进行操作

    public  void caozuo(){
    
    
        int a=-1;
        while(a==-1) {
    
    
            System.out.println();
            System.out.println("---------------------管理员操作-----------------------");
            System.out.println(" 1.新图书入库\t" +
                    "2.	图书信息查询\t" +
                    "3.	图书更新(修改)\t" +
                    "4.	旧图书删除\t" +
                    "5.	办理借阅证登记\t" +
                    "6.	图书借阅管理\t" +
                    "7.退出操作");
            System.out.println("请选择你要进行的操作:");
            int choose2 = scanner.nextInt();
            switch (choose2) {
    
    
                case 1:
                    insertNewbook();
                    break;
                case 2:
                    dbDao.bookInof();
                    break;
                case 3:
                    updatebook();
                    break;
                case 4:
                    deleteBook();
                    break;
                case 5:
                    loanCard();
                    break;
                case 6:
                    loanManagement();
                    break;
                case 7:
                    a=0;
                    System.out.println("欢迎下次使用本系统");
                    break;
            }
        }
    }



    //新图书入库
    public  void insertNewbook() {
    
    
        System.out.println("请输入要插入的图书编号:");
        int book_id=scanner.nextInt();
        System.out.println("请输入要插入的图书名称:");
        String  book_name=scanner.next();
        System.out.println("请输入要插入的图书作者:");
        String  book_author=scanner.next();
        System.out.println("请输入要插入的图书出版号:");
        String  book_press=scanner.next();
        Book book=new Book(book_id,book_name,book_author,book_press);
       if(dbDao.insertBook(book)){
    
    
           System.out.println("新图书入库成功!");
       }else{
    
    
           System.out.println("新图书入库失败!");
       }
    }

    //修改图书
    public void updatebook(){
    
    
        System.out.println("请输入要修改的图书的编号:");
        int book_id=scanner.nextInt();
        System.out.println("查询到该图书信息:");
        dbDao.searchBook(book_id);
        System.out.println("请输入修改后的图书名称:");
        String  book_name=scanner.next();
        System.out.println("请输入修改后的图书作者:");
        String  book_author=scanner.next();
        System.out.println("请输入修改后的图书出版号:");
        String  book_press=scanner.next();
        Book book=new Book(book_id,book_name,book_author,book_press);
        if(dbDao.bookUpdate(book_id,book)){
    
    
            System.out.println("图书信息修改成功!");
        }else{
    
    
            System.out.println("图书信息修改失败!");
        }
    }

     public void deleteBook() {
    
    
         System.out.println("请输入要删除的图书编号");
         int book_id=scanner.nextInt();
         if(dbDao.delelteBook(book_id)){
    
    
             System.out.println("删除成功!");
         }else{
    
    
             System.out.println("删除失败!");
         }
    }


    //办理借阅证
    public void loanCard(){
    
    
        System.out.println("办理借阅证登记:");
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("MMDDmmss");
        Date date=new Date();

        int user_id = Integer.parseInt(simpleDateFormat.format(date));

        System.out.println("请输入该读者的名字:");
        String  user_name=scanner.next();
        System.out.println("请输入该读者的年龄:");
        int  user_age=scanner.nextInt();
        System.out.println("请输入该用户的性别:");
        String  user_sex=scanner.next();
        System.out.println("请输入该读者的联系方式:");
        String user_phone=scanner.next();
        Pattern p = Pattern.compile("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$");
        Matcher m = p.matcher(user_phone);

        if(m.matches()){
    
    
            User user=new User(user_id,user_name,user_age,user_sex,user_phone);

            if(dbDao.loanCard(user)){
    
    
                System.out.println("借阅证登记成功!");
                System.out.println("该读者的借书证号为"+user_id);
            }else{
    
    
                System.out.println("借阅证登记失败!");
            }
        }else{
    
    
            System.out.println("输入的手机号格式不对");
            System.out.println("借阅证登记失败!");
        }
    }

    //图书借阅管理
    public  void loanManagement() {
    
    
        System.out.println("1.借书        2.还书       3.读者信息");

        System.out.println("请选择操作");
        int choose3=scanner.nextInt();
        switch (choose3){
    
    
            case 1:
                borrow();   //借书
                break;
            case 2:
                return_book(); //还书
                break;
            case 3:
                user();
                break;
        }

    }

    public  void borrow() {
    
    
        System.out.println("请输入该读者的借书证号:");
        int user_id=scanner.nextInt();
        System.out.println("请输入要借的图书编号:");
        int book_id=scanner.nextInt();
        Borrow borrow=new Borrow(user_id,book_id);
       if(dbDao.borrow(borrow)){
    
    
           System.out.println("借书成功");
       }else{
    
    
           System.out.println("借书失败");
       }

    }

    public  void return_book() {
    
    
        System.out.println("请输入该读者的借书证号:");
        int user_id=scanner.nextInt();
        System.out.println("请输入要还的图书编号:");
        int book_id=scanner.nextInt();
        Borrow borrow=new Borrow(user_id,book_id);

        if(dbDao.return_book(borrow)){
    
    
            System.out.println("还书成功");
        }else{
    
    
            System.out.println("还书失败");
        }
    }


    public  void user() {
    
    
        dbDao.userInof()
        ;
    }

}

Guess you like

Origin blog.csdn.net/sger123/article/details/108788969