java连接mysql数据库实现图书馆管理系统

图书馆管理系统,具体功能包括:
1. 用户登录
2. 用户注册
3. 新图书入库
4. 图书信息查询
5. 图书更新(修改)
6. 旧图书删除
7. 办理借阅证登记
8. 图书借阅管理
完整项目: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();
            }
        }
    }
    
}

管理员表
在这里插入图片描述
图书表
在这里插入图片描述
读者表
在这里插入图片描述

借阅表
在这里插入图片描述
借阅表的外键关系
在这里插入图片描述

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类

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类

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()
        ;
    }

}

猜你喜欢

转载自blog.csdn.net/sger123/article/details/108788969