基于JDBC的图书管理系统

1.图书管理系统类图

在这里插入图片描述

2.程序设计

2.1Student类

public class Student {
    private String sname;//学生姓名
    private String snumber;//学号

    public Student(){
        String sname="";//学生姓名
        String snumber="";//学号
    }

    public void setSname(String sname) {
        this.sname = sname;
    }
    public String getSname() {
        return sname;
    }

    public void setSnumber(String snumber) {
        this.snumber = snumber;
    }
    public String getSnumber() {
        return snumber;
    }

    public void printStudentMassage(){
        System.out.println();
        System.out.println("姓名:   "+getSname()+"学号:   "+getSnumber());
    }
}

2.2Teacher类

public class Teacher {
    private String tname;//老师姓名
    private String tnumber;//工号
    //BookManage tbook;//图书使用信息

    public Teacher(){
        String tname="";//老师姓名
        String tnumber="";//工号
    }

    public void setTname(String tname) {
        this.tname = tname;
    }
    public String getTname() {
        return tname;
    }

    public void setTnumber(String tnumber) {
        this.tnumber = tnumber;
    }
    public String getTnumber() {
        return tnumber;
    }

    public void printTeacherMassage(){
        System.out.println();
        System.out.println("姓名:   "+getTname()+"工号:   "+getTnumber());

    }
}

2.3Sever类

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Sever {
    // 数据库连接路径
    private static final String driver = "com.mysql.jdbc.Driver";
    private static final  String url = "jdbc:mysql://localhost:3306/librarytext?useSSL=false&useUnicode=true&characterEncoding=UTF-8";
    //URL指向要访问的数据库名
    private static final  String user = "root";
    //MySQL配置时的用户名
    private static final String password = "123456";
    //MySQL配置时的密码
    private static Connection con = null;
    // 静态代码块(将加载驱动、连接数据库放入静态块中)
    static{
        try {
            Class.forName(driver); // 加载驱动程序
            con = DriverManager.getConnection(url, user, password); // 获取数据库的连接
        }
        catch (SQLException ex) {
            while (ex != null) {
                ex = ex.getNextException();
            }
        }
        catch (Exception ce) {
            ce.printStackTrace();
        }
    }
    // 对外提供一个方法来获取数据库连接

    public static Connection getConnection(){
        return con;
    }
}

2.4BookManage类

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class BookManage {
    //图书信息
    private String ID;//编号
    private String bname;//图书名称
    private String author;//作者
    private String publishedHouse;//出版社
    private String type;//图书类型
    private String place;//存放位置
    private String date;//出版日期
    private String bookStatus;//书籍状态
    private String borrowPeopleName;//借书人
    private String number;//借书人Id
    private String borrowDate;//借阅日期
    private String backTime;//归还日期

    public BookManage(){
        String ID=" ";//编号
        String bname=" ";//图书名称
        String author=" ";//作者
        String publishedHouse=" ";//出版社
        String type=" ";//图书类型
        String place=" ";//存放位置
        String date=" ";//出版日期
        String bookStatus=" ";//书籍状态
        String borrowPeopleName=" ";//借书人
        String number=" ";//借书人Id
        String borrowDate=" ";//借阅日期
        String backTime=" ";//归还日期
    }
    public BookManage(String ID, String bname,String author,String publishedHouse,String type,String date,String borrowPeopleName, String number,String borrowDate,String backTime) {
        this.ID=ID;//编号
        this.bname=bname;//图书名称
        this.author=author;//作者
        this.publishedHouse=publishedHouse;//出版社
        this.type=type;//图书类型
        this.date=date;//出版日期
        this.borrowPeopleName=borrowPeopleName;//借书人
        this.number=number;//借书人Id
        this.borrowDate=borrowDate;//借阅日期
        this.backTime=backTime;//归还日期
    }
    public BookManage(String ID, String bname,String author,String publishedHouse,String type,String place,String date,String bookStatus,String borrowPeopleName, String number,String borrowDate,String backTime){
        this.ID=ID;//编号
        this.bname=bname;//图书名称
        this.author=author;//作者
        this.publishedHouse=publishedHouse;//出版社
        this.type=type;//图书类型
        this.place=place;//存放位置
        this.date=date;//出版日期
        this.bookStatus=bookStatus;//书籍状态
        this.borrowPeopleName=borrowPeopleName;//借书人
        this.number=number;//借书人Id
        this.borrowDate=borrowDate;//借阅日期
        this.backTime=backTime;//归还日期
    }

    public void setID(String ID) {
        this.ID = ID;
    }
    public String getID() {
        return ID;
    }

    public void setBname(String bname) {
        this.bname = bname;
    }
    public String getBname() {
        return bname;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
    public String getAuthor() {
        return author;
    }

    public void setPublishedHouse(String publishedHouse) {
        this.publishedHouse = publishedHouse;
    }
    public String getPublishedHouse() {
        return publishedHouse;
    }

    public void setType(String type) {
        this.type = type;
    }
    public String getType() {
        return type;
    }

    public void setPlace(String place) {
        this.place = place;
    }
    public String getPlace() {
        return place;
    }

    public void setDate(String date) {
        this.date = date;
    }
    public String getDate() {
        return date;
    }

    public void setBookStatus(String bookStatus) {
        this.bookStatus = bookStatus;
    }
    public String getBookStatus() {
        return bookStatus;
    }

    public void setBorrowPeopleName(String borrowPeopleName) {
        this.borrowPeopleName = borrowPeopleName;
    }
    public String getBorrowPeopleName() {
        return borrowPeopleName;
    }

    public void setNumber(String number) {
        this.number = number;
    }
    public String getNumber() {
        return number;
    }

    public void setBackTime(String backTime) {
        this.backTime = backTime;
    }
    public String getBackTime1() {
        DateFormat dateFormat = new SimpleDateFormat("yyy-MM-dd");
        Calendar calendar = Calendar.getInstance();
        backTime = dateFormat.format(calendar.getTime());
        return backTime;
    }
    public String getBackTime(){
        return backTime;
    }

    public void setBorrowDate(String borrowDate) {
        this.borrowDate = borrowDate;
    }
    public String getBorrowDate1() {
        DateFormat dateFormat = new SimpleDateFormat("yyy-MM-dd");
        Calendar calendar = Calendar.getInstance();
        borrowDate = dateFormat.format(calendar.getTime());
        return borrowDate;
    }
    public String getBorrowDate() {
        return borrowDate;
    }

    //图书所有信息输出
    public String printBookAllmassage() {
        return "BookManage{" + "ID='" + ID + '\'' + ", bname='" + bname + '\'' + ", author='" + author + '\'' + ", publishedHouse='" + publishedHouse + '\'' + ", type='" + type + '\'' + ", place='" + place + '\'' + ", date='" + date + '\'' + ", bookStatus='" + bookStatus + '\'' + ", borrowPeopleName='" + borrowPeopleName + '\'' + ", number='" + number + '\'' + ", borrowDate='" + borrowDate + '\'' + ", backTime='" + backTime + '\'' + '}';
    }


    //图书基本信息输出
    public String printBookmassage() {
        return "BookManage{" + "ID='" + ID + '\'' + ", bname='" + bname + '\'' + ", author='" + author + '\'' + ", publishedHouse='" + publishedHouse + '\'' + ", type='" + type + '\'' + ", place='" + place + '\'' + ", date='" + date + '\'' + ", bookStatus='" + bookStatus + '\'' + '}';
    }


    //书籍借阅信息输出
    public String printBookBorrowmassage() {
        return "BookManage{" + "ID='" + ID + '\'' + ", bname='" + bname + '\'' + ", author='" + author + '\'' + ", publishedHouse='" + publishedHouse + '\'' + ", type='" + type + '\'' + ", date='" + date + '\'' + ", borrowDate='" + borrowDate + '\'' + ", backTime='" + backTime + '\'' + '}';
    }

    //书籍归还信息输出
    public String printBookBackmassage() {
        return "BookManage{" + "ID='" + ID + '\'' + ", bname='" +
                bname + '\'' + ", author='" + author + '\'' + ", publishedHouse='"
                + publishedHouse + '\'' + ", type='" + type + '\'' + ", date='" + date +
                '\'' + ", borrowDate='" + borrowDate + '\'' + ", backTime='" + backTime + '\'' + '}';
    }

}

2.5Manage类

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Scanner;

public class Manage {
    public void addBookstore() throws SQLException {//添加信息
        Connection conn =Sever.getConnection();
        Statement stmt = (Statement) conn.createStatement();
        System.out.println("请输入添加信息:");
        Scanner scc = new Scanner(System.in);
        BookManage x = new BookManage();
        System.out.println("输入编号:");
        String r=scc.next();
        x.setID(r);
        String  sqla= "select * from books where ID ='"+r+"'";
        stmt.execute(sqla);
        if(sqla==null){
            System.out.println("该图书存在");
            stmt.close();
        }
        else {
            System.out.println("输入图书名称:");
            x.setBname(scc.next());
            System.out.println("输入作者:");
            x.setAuthor(scc.next());
            System.out.println("输入出版社:");
            x.setPublishedHouse(scc.next());
            System.out.println("输入图书类型:");
            x.setType(scc.next());
            System.out.println("输入存放位置:");
            x.setPlace(scc.next());
            System.out.println("输入出版日期:");
            x.setDate(scc.next());
            System.out.println();
            try {
                // Statement stmt = (Statement) conn.createStatement();
                String sql = "insert into books values('" + x.getID() + "','"
                        + x.getBname() + "','" + x.getAuthor() + "','" +
                        x.getPublishedHouse() + "','" + x.getType() + "','"
                        + x.getPlace() + "','" + x.getDate() + "','" +
                        x.getBookStatus() + " ',' ',' ',' ',' ');";
                stmt.execute(sql);
                //  参数用?表示,相当于占位符,然后在对参数进行赋值。当真正执行时,这些参数会加载在SQL语句中,把SQL语句拼接完整才去执行。这样就会减少对数据库的操作
                stmt.close();
                System.out.println("添加成功!!!");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public void updateBookstore() throws SQLException {//修改信息
        Connection con =Sever.getConnection();
        System.out.println("输入要修改的图书编号:");
        BookManage x = new BookManage();
        Scanner sc = new Scanner(System.in);
        String r = sc.next();
        Statement stmt = (Statement) con.createStatement();
        String  sqla= "select * from books where ID ='"+r+"'";
        ResultSet resultSet = stmt.executeQuery(sqla);
        // org.apache.commons.collections4.CollectionUtils.isEmpty(Collections.singleton(sqla));
        if(!resultSet.next()){
            System.out.println("该图书不存在!!");
            stmt.close();}
        else {
            try {
                System.out.println("输入图书名称:");
                x.setBname(sc.next());
                System.out.println("输入作者:");
                x.setAuthor(sc.next());
                System.out.println("输入出版社:");
                x.setPublishedHouse(sc.next());
                System.out.println("输入图书类型:");
                x.setType(sc.next());
                System.out.println("输入存放位置:");
                x.setPlace(sc.next());
                System.out.println("输入出版日期:");
                x.setDate(sc.next());
                //  System.out.println("输入书籍状态:");
                // x.setBookStatus(sc.next());
                //  参数用?表示,相当于占位符,然后在对参数进行赋值。当真正执行时,这些参数会加载在SQL语句中,把SQL语句拼接完整才去执行。这样就会减少对数据库的操作
                String sql = "update books set bname='" + x.getBname() + "',author='" + x.getAuthor() + "',publishedHouse='" + x.getPublishedHouse() + "',typel='" + x.getType() + "',place='" + x.getPlace() + "',datel='" + x.getDate() + "',bookStatus='" + x.getBookStatus() + "',borrowPeopleName='" + x.getBorrowPeopleName() + "',numberl='" + x.getNumber() + "',borrowDate='" + x.getBorrowDate() + "',backTime='" + x.getBackTime1() + "' where ID ='" + r + "'";
                System.out.println(" 修改成功");
                stmt.execute(sql);
                stmt.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public void deleteBookstore() throws SQLException, ParseException {//删除信息
        Connection conn =Sever.getConnection();
        System.out.println("输入过期时间:");
        Scanner sc = new Scanner(System.in);
        String r = sc.next();
        // BookManage bookManage=new BookManage();
        // String time=bookManage.getDate();
        // String timeMax=time+365;

        Statement stmt = (Statement) conn.createStatement();
        String  sqla= "select * from books where datel <'"+r+"'";
        stmt.execute(sqla);
        if(sqla==null){
            System.out.println("该图书不存在");
            stmt.close();}
        else {
            try {
                //Statement stmt = (Statement) conn.createStatement();
                String sql = "DELETE FROM books WHERE datel <\"" + r + "\"";// 参数用?表示,相当于占位符
                stmt.executeUpdate(sql);
                System.out.println("删除成功");
                stmt.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public void seleteBookstore() throws SQLException {//查询基本信息
        Connection conn =Sever.getConnection();
        System.out.println("输入要查询的图书名称:");
        Scanner sc = new Scanner(System.in);
        String r = sc.next();
        Statement stmt = (Statement) conn.createStatement();
        try {
            String sql = "select * from books where bname='"+r+"'";
            ResultSet rs=stmt.executeQuery(sql);
            BookManage bookManage=null;
            while (rs.next()){
                BookManage bookManage1=new BookManage(rs.getString("ID"),rs.getString("bname"),rs.getString("author"),
                        rs.getString("publishedHouse"),rs.getString("typel"),rs.getString("place"),
                        rs.getString("datel"),rs.getString("bookStatus"),rs.getString("borrowPeopleName"),
                        rs.getString("numberl"),rs.getString("borrowDate"), rs.getString("backTime"));
                System.out.println(bookManage1.printBookmassage());
            }
            rs.close();
            stmt.close();
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }

    public void borrowBookStudent1()throws SQLException{
        Connection conn =Sever.getConnection();
        System.out.println("请输入用户名和ID:");
        Scanner sc = new Scanner(System.in);
        String r1 = sc.next();
        String r2 = sc.next();
        Statement stmt = (Statement) conn.createStatement();
        String sql = "select * from student where sname='"+r1+"' and snumber='"+r2+"'";
        ResultSet rs=null;
        rs=stmt.executeQuery(sql);
        if(sql==null) {
            System.out.println("该用户不存在");
        }
        else {
            {
                System.out.println("请输入要借阅的书籍的ID:");
                String r4 = sc.next();
                sql = "select * from books where ID='"+r4+"'";
                ArrayList<BookManage> arrayList=new ArrayList<>();
                rs=stmt.executeQuery(sql);
                BookManage x=null;
                while (rs.next()){
                    x=new BookManage(rs.getString("ID"),rs.getString("bname"),rs.getString("author"),
                            rs.getString("publishedHouse"),rs.getString("typel"),rs.getString("place"),
                            rs.getString("datel"),rs.getString("bookStatus"),rs.getString("borrowPeopleName"),
                            rs.getString("numberl"),rs.getString("borrowDate"),rs.getString("backTime"));
                    arrayList.add(x);
                    //rs.close();
                }
                try {
                    if(!x.getType().equals("borrow")) {
                        x.setBorrowDate(x.getBorrowDate1());
                        x.setBookStatus("borrow");
                        x.setBorrowPeopleName(r1);
                        x.setNumber(r2);
                        x.setBackTime("");
                        //  参数用?表示,相当于占位符,然后在对参数进行赋值。当真正执行时,这些参数会加载在SQL语句中,把SQL语句拼接完整才去执行。这样就会减少对数据库的操作
                        sql = "update books set bookStatus='" + x.getBookStatus() + "',borrowPeopleName='" + r1 + "',numberl='" + r2 + "',borrowDate='" + x.getBorrowDate() + "',backTime='" + x.getBackTime() + "'" + " where ID ='" + r4 + "'";
                        stmt.execute(sql);
                        BookManage y = new BookManage(x.getID(), x.getBname(), x.getAuthor(), x.getPublishedHouse(), x.getType(), x.getDate(), r1, r2, x.getBorrowDate(), x.getBackTime());
                        stmt.close();
//
                        try {
                            Statement stat = (Statement) conn.createStatement();
                            String sqlc = "insert into studentborrowmessage values('" + y.getID() + "','" + y.getBname() + "','" + y.getAuthor() + "','" + y.getPublishedHouse() + "','" + y.getType() + "','" + y.getDate() + "','" + y.getBorrowPeopleName() + "','" + y.getNumber() + "','" + y.getBorrowDate() + "','" + y.getBackTime() + "');";
                            stat.executeUpdate(sqlc);
                            //  参数用?表示,相当于占位符,然后在对参数进行赋值。当真正执行时,这些参数会加载在SQL语句中,把SQL语句拼接完整才去执行。这样就会减少对数据库的操作
                            stat.close();
                            System.out.println("借阅成功");
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                    else {
                        System.out.println("不能借阅,被借阅");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public void borrowBookTeacher2()throws SQLException{
        Connection conn =Sever.getConnection();
        System.out.println("请输入用户名和ID:");
        Scanner sc = new Scanner(System.in);
        String r1 = sc.next();
        String r2 = sc.next();
        Statement stmt = (Statement) conn.createStatement();
        String sql = "select * from teacher where tname='"+r1+"' and tnumber='"+r2+"'";
        ResultSet rs=stmt.executeQuery(sql);
        if(sql==null) {
            System.out.println("该用户不存在");
        }
        else {
            {
                System.out.println("请输入要借阅的书籍的ID:");
                String r4 = sc.next();
                sql = "select * from books where ID='"+r4+"'";
                ArrayList<BookManage> arrayList=new ArrayList<>();
                rs=stmt.executeQuery(sql);
                BookManage x=null;
                while (rs.next()){
                    x=new BookManage(rs.getString("ID"),rs.getString("bname"),rs.getString("author"),
                            rs.getString("publishedHouse"),rs.getString("typel"),rs.getString("place"),
                            rs.getString("datel"),rs.getString("bookStatus"),rs.getString("borrowPeopleName"),
                            rs.getString("numberl"),rs.getString("borrowDate"),rs.getString("backTime"));
                    arrayList.add(x);
                }

                try {
                    if(!x.getType().equals("borrow")) {
                        //  System.out.println("输入借阅日期:");
                        x.setBorrowDate(x.getBorrowDate1());
                        x.setBookStatus("borrow");
                        x.setBorrowPeopleName(r1);
                        x.setNumber(r2);
                        x.setBackTime("");
                        //  参数用?表示,相当于占位符,然后在对参数进行赋值。当真正执行时,这些参数会加载在SQL语句中,把SQL语句拼接完整才去执行。这样就会减少对数据库的操作

                        sql = "update books set bookStatus='" + x.getBookStatus() + "',borrowPeopleName='" + r1 + "',numberl='" + r2 + "',borrowDate='" + x.getBorrowDate() + "',backTime='" + x.getBackTime() + "'" + " where ID ='" + r4 + "'";
                        stmt.execute(sql);
                        BookManage y = new BookManage(x.getID(),x.getBname(),x.getAuthor(),x.getPublishedHouse(),x.getType(),x.getDate(),r1,r2,x.getBorrowDate(),x.getBackTime());
                        stmt.close();
//
                        try {
                            Statement stat = (Statement) conn.createStatement();
                            String sqlc = "insert into teacherborrowmessage values('"+y.getID() +"','"+y.getBname() +"','"+y.getAuthor() +"','"+y.getPublishedHouse() +"','"+y.getType() +"','"+y.getDate() +"','"+y.getBorrowPeopleName()+"','"+y.getNumber()+"','"+y.getBorrowDate() +"','"+y.getBackTime() +"');";
                            stat.executeUpdate(sqlc);
                            //  参数用?表示,相当于占位符,然后在对参数进行赋值。当真正执行时,这些参数会加载在SQL语句中,把SQL语句拼接完整才去执行。这样就会减少对数据库的操作
                            stat.close();
                            System.out.println("借阅成功");
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                    else {
                        System.out.println("不能借阅,被借阅");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public void borrowBookMassage0() throws SQLException{//查询本书在书库目前的借阅情况
        Connection conn = Sever.getConnection();
        System.out.println("输入要查询的图书名称:");
        Scanner sc = new Scanner(System.in);
        String r1 = sc.next();
        Statement stmt = (Statement) conn.createStatement();
        try {
            String sql = "select * from books where bname ='"+r1+"'";
            ResultSet rs = stmt.executeQuery(sql);
            BookManage bookManage = null;
            while (rs.next()) {
                BookManage bookManage1=new BookManage(rs.getString("ID"),rs.getString("bname"),
                        rs.getString("author"),
                        rs.getString("publishedHouse"),rs.getString("typel"),
                        rs.getString("place"),
                        rs.getString("datel"),rs.getString("bookStatus"),
                        rs.getString("borrowPeopleName"),
                        rs.getString("numberl"),rs.getString("borrowDate"),
                        rs.getString("backTime"));
                System.out.println(bookManage1.printBookmassage());
            }
            rs.close();
            stmt.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void borrowBookMassage1() throws SQLException{//学生查询本人的借阅情况
        Connection conn = Sever.getConnection();
        Statement stmt = (Statement) conn.createStatement();
        System.out.println("请输入用户名和ID:");
        Scanner sc = new Scanner(System.in);
        String user = sc.next();
        String userid = sc.next();
        try {
            String sql = "select * from studentborrowmessage where borrowPeopleName='"
                    +user+"' and numberl='"+userid+"'";
            ResultSet rs = stmt.executeQuery(sql);
            BookManage bookManage = null;
            //boolean next() throws SQLException
            while (rs.next()) {
                BookManage bookManage1 = new BookManage(rs.getString("ID"),
                        rs.getString("bname"), rs.getString("author"),
                        rs.getString("publishedHouse"), rs.getString("typel"),
                        rs.getString("datel"),rs.getString("borrowPeopleName"),
                        rs.getString("numberl"), rs.getString("borrowDate"),
                        rs.getString("backTime"));
                System.out.println(bookManage1.printBookBorrowmassage());
            }
            rs.close();
            stmt.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void borrowBookMassage2() throws SQLException{//老师查询本人的借阅情况
        Connection conn = Sever.getConnection();
        Statement stmt = (Statement) conn.createStatement();
        System.out.println("请输入用户名和ID:");
        Scanner sc = new Scanner(System.in);
        String r1 = sc.next();
        String r2 = sc.next();
        try {
            String sql = "select * from teacherborrowmessage where borrowPeopleName='"+r1+"' and numberl='"+r2+"'";
            ResultSet rs = stmt.executeQuery(sql);
            BookManage bookManage = null;
            while (rs.next()) {
                BookManage bookManage1 = new BookManage(rs.getString("ID"), rs.getString("bname"), rs.getString("author"),
                        rs.getString("publishedHouse"), rs.getString("typel"), rs.getString("datel"),rs.getString("borrowPeopleName"),rs.getString("numberl"),
                        rs.getString("borrowDate"), rs.getString("backTime"));
                System.out.println(bookManage1.printBookBorrowmassage());
            }
            rs.close();
            stmt.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void backBookStudent1()throws SQLException{
        Connection conn =Sever.getConnection();
        System.out.println("请输入用户名和ID:");
        Scanner sc = new Scanner(System.in);
        String r1 = sc.next();
        String r2 = sc.next();
        Statement stmt = (Statement) conn.createStatement();
        String sql = "select * from student where sname='"+r1+"' and snumber='"+r2+"'";
        stmt.executeQuery(sql);
        if(sql==null) {
            System.out.println("该用户不存在");
        }
        else {
            System.out.println("请输入要归还的书籍:");
            String r3 = sc.next();
            String sqla="select * from books where bname='"+r3+"'";
            stmt.executeQuery(sqla);
            if(sqla==null) {
                System.out.println("该图书不存在");
            }
            else {
                BookManage x = new BookManage();
                System.out.println("请输入要归还的书籍的ID:");
                String r4 = sc.next();
                try {
                    Statement stat = (Statement) conn.createStatement();
                    sql= "select * from studentborrowmessage where ID='"+r4+"'" ;
                    ResultSet rs=null;
                    rs=stmt.executeQuery(sql);
                    BookManage y=null;
                    while (rs.next()) {
                        // BookManage bookManage=null;
                        //  参数用?表示,相当于占位符,然后在对参数进行赋值。当真正执行时,这些参数会加载在SQL语句中,把SQL语句拼接完整才去执行。这样就会减少对数据库的操作
                        y = new BookManage(rs.getString("ID"), rs.getString("bname"), rs.getString("author"),
                                rs.getString("publishedHouse"), rs.getString("typel"), rs.getString("datel"), rs.getString("borrowPeopleName"), rs.getString("numberl"),
                                rs.getString("borrowDate"), rs.getString("backTime"));
                    }    //rs.close();
                    Statement stab = (Statement) conn.createStatement();
                    String sqlx = "insert into studentbackmessage values('"+y.getID() +"','"+y.getBname()
                            +"','"+y.getAuthor() +"','"+y.getPublishedHouse()
                            +"','"+y.getType() +"','"+y.getDate() +"','"+y.getBorrowPeopleName()
                            +"','"+y.getNumber()+"','"+y.getBorrowDate() +"','"+y.getBackTime1() +"');";
                    stat.executeUpdate(sqlx);
                    stab.close();


                }
                catch (Exception e){
                    e.printStackTrace();
                }
                try {
                    // System.out.println("输入归还日期:");
                    x.setBackTime(x.getBackTime1());
                    x.setBookStatus("");
                    x.setBorrowPeopleName("");
                    x.setNumber("");
                    x.setBorrowDate("");

                    sql = "update books set bookStatus='" + x.getBookStatus() + "',borrowPeopleName='"
                            + x.getBorrowPeopleName() + "',numberl='" + x.getNumber()
                            + "',borrowDate='" + x.getBorrowDate() + "',backTime='" + x.getBackTime1() + "'" + " where ID ='" + r4 + "'";
                    stmt.execute(sql);

                    //  参数用?表示,相当于占位符,然后在对参数进行赋值。当真正执行时,这些参数会加载在SQL语句中,把SQL语句拼接完整才去执行。这样就会减少对数据库的操作

                    //  BookManage y = new BookManage(x.getID(), x.getBname(), x.getAuthor(), x.getPublishedHouse(), x.getType(), x.getDate(),x.getBorrowPeopleName(),x.getNumber(), x.getBorrowDate(), x.getBackTime());
                    stmt.close();
                    try {
                        Statement stme = (Statement) conn.createStatement();
                        String sqld="DELETE FROM studentborrowmessage WHERE ID='"+r4+"'";// 参数用?表示,相当于占位符
                        stme.executeUpdate(sqld);
                        stme.close();
                        System.out.println("归还成功");
                    }
                    catch (Exception e){
                        e.printStackTrace();
                    }
                }
                catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    }

    public void backBookTeacher2()throws SQLException{
        Connection conn =Sever.getConnection();
        System.out.println("请输入用户名和ID:");
        Scanner sc = new Scanner(System.in);
        String r1 = sc.next();
        String r2 = sc.next();
        Statement stmt = (Statement) conn.createStatement();
        String sql = "select * from teacher where tname='"+r1+"' and tnumber='"+r2+"'";
        // ResultSet rs=stmt.executeQuery(sql);
        if(sql.length()==0||sql==null) {
            System.out.println("该用户不存在");
        }
        else {
            System.out.println("请输入要归还的书籍:");
            String r3 = sc.next();
            String sqla="select * from books where bname='"+r3+"'";
            stmt.executeQuery(sqla);
            if(sqla.length()==0||sql==null) {
                System.out.println("该图书不存在");
            }
            else {
                BookManage x = new BookManage();
                System.out.println("请输入要归还的书籍的ID:");
                String r4 = sc.next();
                try {
                    Statement stat = (Statement) conn.createStatement();
                    sql= "select * from teacherborrowmessage where ID='"+r4+"'" ;
                    ResultSet rs=null;
                    rs=stmt.executeQuery(sql);
                    BookManage y=null;
                    while (rs.next()) {
                        y = new BookManage(rs.getString("ID"), rs.getString("bname"), rs.getString("author"),
                                rs.getString("publishedHouse"), rs.getString("typel"), rs.getString("datel"), rs.getString("borrowPeopleName"), rs.getString("numberl"),
                                rs.getString("borrowDate"), rs.getString("backTime"));
                        Statement stab = (Statement) conn.createStatement();
                        String sqlx = "insert into teacherbackmessage values('" + y.getID() + "','"
                                + y.getBname() + "','" + y.getAuthor()
                                + "','" + y.getPublishedHouse() + "','" + y.getType()
                                + "','" + y.getDate() + "','" + y.getBorrowPeopleName() + "','"
                                + y.getNumber() + "','" + y.getBorrowDate() + "','" + y.getBackTime1() + "');";
                        stat.executeUpdate(sqlx);
                        stab.close();
                    }

                    try {
                        // System.out.println("输入归还日期:");
                        x.setBackTime(x.getBackTime1());
                        x.setBookStatus("");
                        x.setBorrowPeopleName("");
                        x.setNumber("");
                        x.setBorrowDate("");

                        sql = "update books set bookStatus='" + x.getBookStatus() + "',borrowPeopleName='" +
                                x.getBorrowPeopleName() + "',numberl='" + x.getNumber() + "',borrowDate='"
                                + x.getBorrowDate() + "',backTime='" + x.getBackTime1() + "'" + " where ID ='" + r4 + "'";
                        stmt.execute(sql);

                        //  参数用?表示,相当于占位符,然后在对参数进行赋值。当真正执行时,这些参数会加载在SQL语句中,把SQL语句拼接完整才去执行。这样就会减少对数据库的操作
                        //  BookManage y = new BookManage(x.getID(), x.getBname(), x.getAuthor(), x.getPublishedHouse(), x.getType(), x.getDate(),x.getBorrowPeopleName(),x.getNumber(), x.getBorrowDate(), x.getBackTime());
                        stmt.close();

                        try {
                            Statement stme = (Statement) conn.createStatement();
                            String sqld="DELETE FROM teacherborrowmessage WHERE ID='"+r4+"'";// 参数用?表示,相当于占位符
                            stme.executeUpdate(sqld);
                            stme.close();
                            System.out.println("归还成功");
                        }
                        catch (Exception e){
                            e.printStackTrace();
                        }
                    }
                    catch (Exception e){
                        e.printStackTrace();
                    }

                }
                catch (Exception e){
                    e.printStackTrace();
                }

            }

        }


    }

    public void backBookMassage1() throws SQLException{//学生查询本人的借阅情况
        Connection conn = Sever.getConnection();
        Statement stmt = (Statement) conn.createStatement();
        System.out.println("请输入用户名和ID:");
        Scanner sc = new Scanner(System.in);
        String r1 = sc.next();
        String r2 = sc.next();
        try {
            String sql = "select * from studentBackMessage where borrowPeopleName='"+r1+"' and numberl='"+r2+"'";
            ResultSet rs =null;
            rs=stmt.executeQuery(sql);
            BookManage bookManage = null;
            while (rs.next()) {
                BookManage  bookManage1 = new BookManage(rs.getString("ID"),
                        rs.getString("bname"), rs.getString("author"),
                        rs.getString("publishedHouse"), rs.getString("typel"),
                        rs.getString("datel"),rs.getString("borrowPeopleName"),
                        rs.getString("numberl"), rs.getString("borrowDate"),
                        rs.getString("backTime"));
                System.out.println(bookManage1.printBookBackmassage());
        }
            rs.close();
            stmt.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void backBookMassage2() throws SQLException{//老师查询本人的借阅情况
        Connection conn = Sever.getConnection();
        Statement stmt = (Statement) conn.createStatement();
        System.out.println("请输入用户名和ID:");
        Scanner sc = new Scanner(System.in);
        String r1 = sc.next();
        String r2 = sc.next();
        try {
            String sql = "select * from teacherbackmessage";
            //  String sql = "select * from teacherbackmessage where borrowPeopleName='"+r1+"' and numberl='"+r2+"'";
            ResultSet rs =null;
            rs=stmt.executeQuery(sql);
            //ArrayList<BookManage> arrayList = new ArrayList<>();
            BookManage bookManage1 = null;
            while (rs.next()) {
                bookManage1 = new BookManage(rs.getString("ID"), rs.getString("bname"), rs.getString("author"),
                        rs.getString("publishedHouse"), rs.getString("typel"), rs.getString("datel"),rs.getString("borrowPeopleName"),rs.getString("numberl"),
                        rs.getString("borrowDate"), rs.getString("backTime"));
                System.out.println(bookManage1.printBookBackmassage());
            }
            rs.close();
            stmt.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void bookSort()throws SQLException{//排序
        Connection conn =Sever.getConnection();
        System.out.println("按图书名称排序");
        try {
            Statement stmt = (Statement) conn.createStatement();
            ResultSet rs = stmt.executeQuery("select * from books ORDER BY CONVERT(bname USING GB2312)");
            while (rs.next()){
                BookManage bookManage1=new BookManage(rs.getString("ID"),rs.getString("bname"),rs.getString("author"),
                        rs.getString("publishedHouse"),rs.getString("typel"),rs.getString("place"),
                        rs.getString("datel"),rs.getString("bookStatus"),rs.getString("borrowPeopleName"),
                        rs.getString("numberl"),rs.getString("borrowDate"), rs.getString("backTime"));
                System.out.println(bookManage1.printBookmassage());
            }
            stmt.close();
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }

    public void show() {
        Connection conn =Sever.getConnection();
        try {
            Statement stmt = (Statement) conn.createStatement();
            ResultSet rs = stmt.executeQuery("select * from books");
            while (rs.next()) {
                BookManage bookManage1 = new BookManage(rs.getString("ID"),
                        rs.getString("bname"), rs.getString("author"),
                        rs.getString("publishedHouse"), rs.getString("typel"),
                        rs.getString("place"), rs.getString("datel"),
                        rs.getString("bookStatus"), rs.getString("borrowPeopleName"),
                        rs.getString("numberl"), rs.getString("borrowDate"),
                        rs.getString("backTime"));
                System.out.println(bookManage1.printBookmassage());
            }
        }catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

2.6Mbin类

public class Mbin {
    public  void printMbina(){
        System.out.println("===================================");
        System.out.println();
        System.out.println("  a.[添加]              b.[修改]    ");
        System.out.println("  c.[删除]              d.[查询]    ");
        System.out.println("  e.[显示]              f.[排序]    ");
        System.out.println("        g.[书籍借阅信息查询]        ");
        System.out.println();
        System.out.println("===================================");
        System.out.print(" 请输入你的选择 :");
    }
    public  void printMbinb(){
        System.out.println("===================================");
        System.out.println();
        System.out.println("   a.[查询]          b.[借书]     ");
        System.out.println("   c.[书籍借阅查询]  d.[学生借阅查询]     ");
        System.out.println("   e.[还书]          f.[学生归还查询]      ");
        System.out.println();
        System.out.println("===================================");
        System.out.print(" 请输入你的选择: ");
    }
    public  void printMbinc(){
        System.out.println("===================================");
        System.out.println();
        System.out.println("  a.[查询]           b.[借书]   ");
        System.out.println("  c.[书籍借阅查询]   d.[老师借阅查询]   ");
        System.out.println("  e.[还书]           f.[老师归还查询]   ");
        System.out.println();
        System.out.println("===================================");
        System.out.print(" 请输入你的选择 :");
    }
}

2.7Menu类

import java.util.Scanner;

public class Menu {
    public static void main(String[] args) throws Exception {
        Manage manage=new Manage();
        Mbin a=new Mbin();
        // a.printMbin();
        System.out.println("1.管理员登录  2.学生登录  3.老师登录");
        while (true) {
            Scanner scanner = new Scanner(System.in);
            int select = scanner.nextInt();
            if(select==1){
                System.out.println("管理员登录成功!");
                while (true) {
                    a.printMbina();
                    String selects = scanner.next();
                    switch (selects) {
                        case "a": {
                            manage.addBookstore(); //添加图书
                            System.out.println();
                        }
                        break;
                        case "b": {
                            manage.updateBookstore(); //修改图书
                            System.out.println();
                        }
                        break;
                        case "c": {
                            manage.deleteBookstore(); //删除图书
                            System.out.println();
                        }
                        break;
                        case "d": {
                            manage.seleteBookstore(); //查询图书
                            System.out.println();
                        }
                        break;
                        case "e": {
                            manage.show();  //书籍借阅信息查询
                            System.out.println();
                        }
                        break;
                        case "g": {
                            manage.borrowBookMassage0();  //书籍借阅信息查询
                            System.out.println();
                        }
                        break;
                        case "f": {
                            manage.bookSort();
                            System.out.println();  //书籍排序
                        }
                        break;
                        default:
                            System.out.println("选择错误 关闭系统!!");
                            System.exit(0);
                    }
                }
            }
            else if(select==2){
                System.out.println("学生登录成功!");
                while (true) {
                    a.printMbinb();
                    String selects = scanner.next();
                    switch (selects) {
                        case "a": {
                            manage.seleteBookstore();//查询图书
                            System.out.println();
                        }
                        break;
                        case "b": {
                            manage.borrowBookStudent1();//学生借书
                            System.out.println();
                        }
                        break;
                        case "c": {
                            manage.borrowBookMassage0(); //书籍借阅查询
                            System.out.println();
                        }
                        break;
                        case "d": {
                            manage.borrowBookMassage1();//学生借阅查询
                            System.out.println();
                        }
                        break;
                        case "e": {
                            manage.backBookStudent1();//还书
                            System.out.println();
                        }
                        break;
                        case "f": {
                            manage.backBookMassage1();//学生归还查询
                            System.out.println();
                        }
                        break;
                        default:
                            System.out.println("选择错误,退出系统!!!");
                            System.exit(0);
                    }
                }
            }
            else if(select==3){
                System.out.println("老师登录成功!");
                while (true) {
                    a.printMbinc();
                    String selects = scanner.next();
                    switch (selects) {
                        case "a":{
                            manage.seleteBookstore();
                            System.out.println();
                        }
                        break;
                        case "b": {
                            manage.borrowBookTeacher2();
                            System.out.println();
                        }
                        break;
                        case "c": {
                            manage.borrowBookMassage0();
                            System.out.println();
                        }
                        break;
                        case "d": {
                            manage.borrowBookMassage2();
                            System.out.println();
                        }
                        break;
                        case "e": {
                            manage.backBookTeacher2();
                            System.out.println();
                        }
                        break;
                        case "f": {
                            manage.backBookMassage2();
                            System.out.println();
                        }
                        break;
                        default:
                            System.out.println("选择错误,退出系统!!!");
                            System.exit(0);
                    }
                }
            }else{
                System.out.println("身份错误!!!!");
            }
        }
    }
}

3.功能

3.1管理员功能

在这里插入图片描述

3.2学生功能

在这里插入图片描述

3.3老师功能

在这里插入图片描述

4.系统升级

本系统做的相对简单,仅仅实现了基础功能,并不完善,可以在以下几方面加以改进。
1.系统登陆问题(密码、验证)
2.权限问题(老师与学生的差异,eg:借书数量、种类等)
3.归还方面(逾期扣费、丢失赔偿等)
4.图书属性(增加同本图书数量)
5.查询方面(同类图书的存放地点、同本图书的库存数等)

发布了70 篇原创文章 · 获赞 3 · 访问量 1236

猜你喜欢

转载自blog.csdn.net/qq_43361209/article/details/103987067