最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java開發(fā)實例之圖書管理系統(tǒng)的實現(xiàn)

 更新時間:2021年10月08日 09:13:08   作者:小玄ks  
圖書管理的功能大體包括:增加書籍、借閱書籍、刪除書籍、查看書籍列表、退出系統(tǒng)、查找書籍、返還書籍這些,本文主要給大家介紹該系統(tǒng)的數(shù)據(jù)庫語句,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

聲明:本項目不涉及web操作,但需要了解java的基本語法和MySQL的基本語句運用。

一、項目分布

在這里插入圖片描述

  • db.sql類:SQL語句,在控制臺執(zhí)行,用于建立圖書管理庫。
  • Book類: 定義了書的一些屬性(書編號,書名,作者,價格,分類,狀態(tài))并且寫了屬性的get、set、toSting方法。
  • User類:定義了用戶的一些屬性(用戶編號,用戶名,密碼和是否為管理員的標記),并且寫了屬性的get、set、toSting方法。
  • NormalUser類:描述普通用戶,實現(xiàn)普通用戶的構(gòu)造方法,并打印普通用戶的操作界面。
  • Admin類:描述管理員,實現(xiàn)管理員的構(gòu)造方法并打印管理員的操作界面。
  • DBUtil類:封裝與數(shù)據(jù)庫建立連接的操作(主要用JDBC來編寫)。
  • BookDao類:封裝 對表的增刪查改操作。
  • UserDao類:封裝 識別用戶的操作。

在這里插入圖片描述

operations包中定義了IOperation(操作)接口,這個包中的下面這些類都實現(xiàn)了這個IOperation接口(完成增刪查改等操作):

  • AddOperation類:增加書籍
  • BorrowOperation類:借閱書籍
  • DeleteOperation類:刪除書籍
  • DisplayOperation類:查看書籍列表
  • ExitOperation類:退出系統(tǒng)
  • FindOperation類:查找書籍
  • ReturnOperation類:返還書籍

二、代碼展示

1.SQL語句

在控制臺執(zhí)行,用于建立圖書管理庫(設(shè)置“張三”為普通用戶,密碼為321;“admin”為管理員,密碼為123)

create database if not exists bookmanager;

use bookmanager;

-- 創(chuàng)建一個書籍表
drop table if exists book;
create table book(
    bookId int primary key auto_increment,
    name varchar(20),
    author varchar(20),
    -- 為了準確,價格以 分 為單位
    price int,
    type varchar(20),
    -- 如果isBorrowed為1,表示已經(jīng)借出,為0,表示未借出
    isBorrowed int
);

-- 創(chuàng)建一個用戶表(用戶有管理員和普通用戶兩種)
drop table if exists user;
create table user(
    userId int primary key auto_increment,
    username varchar(20) unique,
    password varchar(20),
    -- 如果isAdmin 為1,表示是管理員,為0,表示是普通用戶
    isAdmin int
);

-- 插入一些數(shù)據(jù)
insert into book values(null,'西游記','吳承恩',10000,'古典小說',0);
insert into book values(null, '三國演義', '羅貫中', 10000, '古典小說', 0);
insert into book values(null, '水滸傳', '施耐庵', 10000, '古典小說', 0);
insert into book values(null, '金瓶梅', '蘭陵笑笑生', 10000, '古典小說', 0);
insert into book values(null,'三體','劉慈欣',10000,'科幻小說',0);

-- 插入一些用戶
insert into user values(null,'admin','123',1);
insert into user values(null,'張三','321',0);

2.Book類

定義了書的一些屬性(書編號,書名,作者,價格,分類,狀態(tài))并且寫了屬性的get、set、toSting方法

package Java100_1006;

//使用這個類來表示一本書
// +------------+-------------+------+-----+---------+----------------+
// | Field      | Type        | Null | Key | Default | Extra          |
// +------------+-------------+------+-----+---------+----------------+
// | bookId     | int(11)     | NO   | PRI | NULL    | auto_increment |
// | name       | varchar(20) | YES  |     | NULL    |                |
// | author     | varchar(20) | YES  |     | NULL    |                |
// | price      | int(11)     | YES  |     | NULL    |                |
// | type       | varchar(20) | YES  |     | NULL    |                |
// | isBorrowed | int(11)     | YES  |     | NULL    |                |
// +------------+-------------+------+-----+---------+----------------+

public class Book {
    private int bookId;
    private String name;
    private String author;
    private int price;
    private String type;
    private boolean isBorrowed;

    public int getBookId() {
        return bookId;
    }

    public void setBookId(int bookId) {
        this.bookId = bookId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

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

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getType() {
        return type;
    }

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

    public boolean isBorrowed() {
        return isBorrowed;
    }

    public void setBorrowed(boolean borrowed) {
        isBorrowed = borrowed;
    }

    @Override
    public String toString() {
        return "Book{" +
                "bookId=" + bookId +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                ", isBorrowed=" + isBorrowed +
                '}';
    }
}

3.User類

定義了用戶的一些屬性(用戶編號,用戶名,密碼和是否為管理員的標記),并且寫了屬性的get、set、toSting方法

package Java100_1006;

import Java100_1006.operations.IOperation;

abstract public class User {
    // 使用這個 User 類來表示一個用戶
// +----------+-------------+------+-----+---------+----------------+
// | Field    | Type        | Null | Key | Default | Extra          |
// +----------+-------------+------+-----+---------+----------------+
// | userId   | int(11)     | NO   | PRI | NULL    | auto_increment |
// | username | varchar(20) | YES  |     | NULL    |                |
// | password | varchar(20) | YES  |     | NULL    |                |
// | isAdmin  | int(11)     | YES  |     | NULL    |                |
// +----------+-------------+------+-----+---------+----------------+
    // 針對此處的 isAdmin, 并不是直接使用一個 boolean 變量來區(qū)分, 而是使用兩個不同的子類.
    // 原因是, 管理員和普通用戶支持的方法, 是不一樣的.
    private int userId;
    private String userName;
    private String passWord;

    // 包含了一個數(shù)組, 數(shù)組里面就是該用戶支持的哪些操作.
    // 針對普通用戶, 和管理員, 分別設(shè)置不同的操作.
    IOperation[] operations;

    //普通用戶和管理員看到的菜單也不同
    abstract public int menu();

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    @Override
    public String toString() {
        return "User{" +
                "userId=" + userId +
                ", userName='" + userName + '\'' +
                ", passWord='" + passWord + '\'' +
                '}';
    }
}

4.用戶分為兩種

普通用戶和管理員,所以應該分別建立兩個類來描述這兩個用戶。

4.1NormalUser類

**描述普通用戶,實現(xiàn)普通用戶的構(gòu)造方法,并打印普通用戶的操作界面。

package Java100_1006;

import Java100_1006.operations.*;

import java.util.Scanner;

//普通用戶
public class NormalUser extends User{
    //普通用戶的構(gòu)造方法
    public NormalUser(){
        this.operations = new IOperation[]{
            	//0.退出
                new ExitOperation(),
            	//1.查看書籍列表
                new DisplayOperation(),
            	//2. 查找指定書籍
                new FindOperation(),
            	//3.借閱書籍
                new BorrowOperation(),
            	//4. 歸還書籍
                new ReturnOperation()
        };
    }

    //打印普通用戶的菜單
    @Override
    public int menu() {
        System.out.println("=============================");
        System.out.println("歡迎您"+this.getUserName()+"!");
        System.out.println("1. 查看書籍列表");
        System.out.println("2. 查找指定書籍");
        System.out.println("3. 借閱書籍");
        System.out.println("4. 歸還書籍");
        System.out.println("0. 退出系統(tǒng)");
        System.out.println("=============================");
        System.out.println("請輸入您的選項:");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
}

4.2Admin類

描述管理員,實現(xiàn)管理員的構(gòu)造方法并打印管理員的操作界面

package Java100_1006;

import Java100_1006.operations.*;

import java.util.Scanner;

//管理員
public class Admin extends User{
    //管理員的構(gòu)造方法
    public Admin(){
        //初始化operation
        //繼承與User類,所以可以使用父類的中的數(shù)組
        this.operations = new IOperation[]{
            	//0. 退出系統(tǒng)
                new ExitOperation(),
           	 	//1. 查看書籍列表
                new DisplayOperation(),
            	//2. 查找指定書籍
                new FindOperation(),
            	//3. 新增書籍
                new AddOperation(),
            	//4. 刪除書籍
                new DeleteOperation()
        };
    }
    //打印管理員的菜單
    @Override
    public int menu() {
        System.out.println("================================");
        System.out.println("歡迎您, " + this.getUserName() + "! 您是管理員! ");
        System.out.println("1. 查看書籍列表");
        System.out.println("2. 查找指定書籍");
        System.out.println("3. 新增書籍");
        System.out.println("4. 刪除書籍");
        System.out.println("0. 退出系統(tǒng)");
        System.out.println("================================");
        System.out.println("請輸入選項: ");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
}

5.DBUtil類

封裝與數(shù)據(jù)庫建立連接的操作(主要用JDBC來編寫)

package Java100_1006;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

//先建立這個類來 封裝 數(shù)據(jù)庫建立連接的操作
//具體步驟:
//1.創(chuàng)建DataSouse實例
//2.根據(jù)DataSouse創(chuàng)建對應的Connection
public class DBUtil {
    private static final String URL = "jdbc:mysql://127.0.0.1:3306/bookmanager?characterEncoding=utf8&useSSL=false";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "1234";

    //懶漢模式:
    private static DataSource dataSource = null;

    //初始情況下,dataSource為null,沒有被實例化
    //首次調(diào)用getDataSource()時才會被實例化
    private static DataSource getDataSource(){
        if(dataSource == null){
            dataSource = new MysqlDataSource();
            ((MysqlDataSource)dataSource).setUrl(URL);
            ((MysqlDataSource)dataSource).setUser(USERNAME);
            ((MysqlDataSource)dataSource).setPassword(PASSWORD);
        }
        return dataSource;
    }

    //提供一個方法來建立連接
    //用static來修飾,那么就無需實例化DBUtil實例就能調(diào)用這個方法,更加方便
    public static Connection getConnection() throws SQLException {
        return getDataSource().getConnection();
    }

    //釋放資源
    public static void close(Connection connection, PreparedStatement statement, ResultSet resultSet){
        try{
            if(resultSet != null){
                resultSet.close();
            }
            if(statement != null){
                statement.close();
            }
            if(connection != null){
                connection.close();
            }
        }catch (SQLException e){
            e.printStackTrace();
        }

    }
}

6.BookDao類

封裝 對表的增刪查改操作

package Java100_1006;

import Java100_1006.Book;
import Java100_1006.DBUtil;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

//封裝 對Book表的增刪查改操作
public class BookDao {

    //1.新增書籍(插入)
    public boolean add(Book book){
        //把book對象插入數(shù)據(jù)庫的書籍表中
        Connection connection = null;
        PreparedStatement statement = null;
        try {
            //1.和數(shù)據(jù)庫建立連接
            connection = DBUtil.getConnection();

            //2.拼裝sql語句
            String sql = "insert into book values(null,?,?,?,?,?)";
            statement = connection.prepareStatement(sql);
            statement.setString(1,book.getName());
            statement.setString(2,book.getAuthor());
            statement.setInt(3,book.getPrice());
            statement.setString(4,book.getType());
            statement.setInt(5,book.isBorrowed()?1:0);

            //3.執(zhí)行SQL
            int ret = statement.executeUpdate();
            if(ret == 1)
                return true;
            return false;

        }catch (SQLException e){
            e.printStackTrace();
        }finally {
            DBUtil.close(connection,statement,null);
        }
        return false;
    }
    //2.查找所有書籍(查找)
    public List<Book> selectAll() {
        List<Book> list = new ArrayList<>();
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;

        try {
            //1.與數(shù)據(jù)庫建立連接
            connection = DBUtil.getConnection();
            //2.拼裝SQL
            String sql = "select * from book";
            statement = connection.prepareStatement(sql);
            //3.執(zhí)行SQL
            resultSet = statement.executeQuery();
            //4.遍歷結(jié)果集合
            while(resultSet.next()){
                //取出當前行的這些列,構(gòu)造一個Book對象來
                Book book = new Book();
                book.setBookId(resultSet.getInt("bookId"));
                book.setName(resultSet.getString("name"));
                book.setAuthor(resultSet.getString("author"));
                book.setPrice(resultSet.getInt("price"));
                book.setType(resultSet.getString("type"));
                book.setBorrowed(resultSet.getInt("isBorrowed")==1);
                //把這個book對象添加到鏈表中
                list.add(book);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            DBUtil.close(connection,statement,resultSet);
        }
        return list;
    }
    //3.根據(jù)名字查找書籍(查找)
    public List<Book> selectByName(String name){
        List<Book> list = new ArrayList<>();
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;

        try {
            //1.先與數(shù)據(jù)庫建立連接
            connection = DBUtil.getConnection();
            //2.拼裝SQL語句
            String sql = "select * from book where name=?";
            statement = connection.prepareStatement(sql);
            statement.setString(1,name);
            //3.執(zhí)行SQL
            resultSet = statement.executeQuery();
            //4.遍歷結(jié)果集合
            while(resultSet.next()){
                Book book = new Book();
                book.setBookId(resultSet.getInt("bookId"));
                book.setName(resultSet.getString("name"));
                book.setAuthor(resultSet.getString("author"));
                book.setPrice(resultSet.getInt("price"));
                book.setType(resultSet.getString("type"));
                book.setBorrowed(resultSet.getInt("isBorrowed") == 1);
                list.add(book);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            DBUtil.close(connection,statement,resultSet);
        }
        return list;
    }
    //4.刪除書籍(刪除)
    public boolean delete(int bookId){
     Connection connection = null;
     PreparedStatement statement = null;
        try {
            //1.建立連接
            connection = DBUtil.getConnection();
            //2.拼裝SQL
            String sql = "delete from book where bookId=?";
            statement = connection.prepareStatement(sql);
            statement.setInt(1,bookId);
            //3.執(zhí)行SQL
            int ret = statement.executeUpdate();
            if(ret != 1){
                return  false;
            }
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            DBUtil.close(connection,statement,null);
        }
        return false;
    }
    //5.借書(修改)
    public boolean borrowBook(int bookId){

        Connection connection = null;
        //statement1用于查找操作
        PreparedStatement statement1 = null;
        //statement2用于修改操作
        PreparedStatement statement2 = null;
        ResultSet resultSet = null;
        try {
            //1.建立連接
            connection = DBUtil.getConnection();
            //要借書,就必須知道這本書存不存在,所以我們先查找,再操作
            //2.拼裝SQL
            String sql = "select * from book where bookId=?";
            statement1 = connection.prepareStatement(sql);
            statement1.setInt(1,bookId);
            //3.執(zhí)行SQL
            resultSet = statement1.executeQuery();
            //4.遍歷結(jié)果,預期結(jié)果要么是1條,要么是0條
            if(resultSet.next()){
                //進入if就說明書是存在的
                boolean isBorrowed = (resultSet.getInt("isBorrowed")==1);
                if(isBorrowed) {
                    //說明書已經(jīng)被借出了,不能再次借閱
                    System.out.println("書已經(jīng)借出! 無法再次借出! bookId = " + bookId);
                    return false;
                }
            }else{
                //進入else,那么書是不存在的
                System.out.println("書不存在! 無法借出! bookId = " + bookId);
                return false;
            }
            //[接下來是開始進行借書邏輯]
            //5.拼裝SQL
            sql = "update book set isBorrowed=1 where bookId=?";
            statement2 = connection.prepareStatement(sql);
            statement2.setInt(1,bookId);

            //6.執(zhí)行SQL
            int ret = statement2.executeUpdate();
            if(ret != 1){
                return false;
            }
            return true;

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if(resultSet != null){
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(statement2 != null){
                try {
                    statement2.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(statement1 != null){
                try {
                    statement1.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection != null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return false;
    }
    //6.還書(修改)
    public boolean returnBook(int bookId){
        Connection connection = null;
        PreparedStatement statement1 = null;
        PreparedStatement statement2 = null;
        ResultSet resultSet = null;
        try {
            connection = DBUtil.getConnection();
            //查詢書是否存在
            String sql = "select * from book where bookId=?";
            statement1 = connection.prepareStatement(sql);
            statement1.setInt(1,bookId);
            resultSet = statement1.executeQuery();
            if(resultSet.next()){
                //進入if語句就說明這本書存在于書籍名單中
                boolean isBorrowed = (resultSet.getInt("isBorrowed")==1);
                if(!isBorrowed){
                    System.out.println("書沒有借出, 沒必要還! bookId = " + bookId);
                    return false;
                }
            }else{
                //不是圖書系統(tǒng)中的書,不需要還
                System.out.println("書不存在, 無法歸還! bookId = " + bookId);
                return false;
            }
            //[還書]
            //修改書籍的借出狀態(tài)就可
            sql = "update book set isBorrowed=0 where bookId=?";
            statement2 = connection.prepareStatement(sql);
            statement2.setInt(1,bookId);
            int ret = statement2.executeUpdate();
            if(ret != 1){
                return false;
            }
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if(resultSet != null){
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(statement2 != null){
                try {
                    statement2.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(statement1 != null){
                try {
                    statement1.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection != null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return false;
    }
}

7.UserDao類

封裝 識別用戶的操作

package Java100_1006;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class UserDao {
    //實現(xiàn)根據(jù)用戶名找密碼這樣一個過程(用戶名 唯一)
    public User selectByName(String name){
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        try {
            connection = DBUtil.getConnection();
            String sql = "select * from user where username=?";
            statement = connection.prepareStatement(sql);
            statement.setString(1,name);
            resultSet = statement.executeQuery();
            if(resultSet.next()){
                //存在這個用戶,返回一個User對象
                //判斷這個用戶是普通用戶還是管理員
                boolean isAdmin = (resultSet.getInt("isAdmin"))==1;
                User user = null;
                if (isAdmin){
                    user = new Admin();
                }else{
                    user = new NormalUser();
                }
                user.setUserId(resultSet.getInt("userId"));
                user.setUserName(resultSet.getString("username"));
                user.setPassWord(resultSet.getString("password"));
                return user;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            DBUtil.close(connection,statement,resultSet);
        }
        return null;
    }
}

8.operations包

創(chuàng)建IOperation接口和實現(xiàn)這個接口的其他類

接口:

package Java100_1006.operations;

//后續(xù)的增加 刪除  借書 還書 等操作都要實現(xiàn)這個接口
public interface IOperation {
    void work();
}

8.1AddOperation類:增加書籍

package Java100_1006.operations;

import Java100_1006.Book;
import Java100_1006.BookDao;

import java.util.Scanner;

public class AddOperation implements IOperation{
    @Override
    public void work() {
        System.out.println("新增書籍!");
        Scanner scanner  = new Scanner(System.in);
        System.out.println("請輸入書名: ");
        String bookName = scanner.next();
        System.out.println("請輸入作者: ");
        String author = scanner.next();
        System.out.println("請輸入價格:");
        int price = scanner.nextInt();
        System.out.println("請輸入類別:");
        String type = scanner.next();
        //假設(shè)新增書籍都是未借出的狀態(tài)
        Book book = new Book();
        book.setName(bookName);
        book.setAuthor(author);
        book.setPrice(price);
        book.setType(type);
        BookDao bookDao = new BookDao();
        boolean ret = bookDao.add(book);
        if(ret){
            System.out.println("新增書籍成功");
        }else{
            System.out.println("新增書籍失敗!");
        }
    }
}

8.2BorrowOperation類:借閱書籍

package Java100_1006.operations;

import Java100_1006.BookDao;

import java.util.Scanner;

public class BorrowOperation implements IOperation{
    @Override
    public void work() {
        System.out.println("借閱書籍!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入要借閱的書籍id:");
        int bookId = scanner.nextInt();
        BookDao bookDao = new BookDao();
        boolean ret = bookDao.borrowBook(bookId);
        if (ret) {
            System.out.println("借閱書籍成功!");
        } else {
            System.out.println("借閱書籍失敗!");
        }
    }
}

8.3DeleteOperation類:刪除書籍

package Java100_1006.operations;

import Java100_1006.BookDao;

import java.util.Scanner;

public class DeleteOperation implements IOperation{
    @Override
    public void work() {
        System.out.println("刪除書籍!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入要刪除的書籍id: ");
        int bookId = scanner.nextInt();

        BookDao bookDao = new BookDao();
        boolean ret = bookDao.delete(bookId);
        if (ret) {
            System.out.println("刪除成功!");
        } else {
            System.out.println("刪除失敗!");
        }
    }
}

8.4DisplayOperation類:查看書籍列表

package Java100_1006.operations;

import Java100_1006.Book;
import Java100_1006.BookDao;

import java.util.List;

public class DisplayOperation implements IOperation{
    @Override
    public void work() {
        System.out.println("展示所有書籍!");
        BookDao bookDao = new BookDao();
        List<Book> books = bookDao.selectAll();
        for(Book book:books){
            System.out.println(book);
        }
        System.out.println("展示所有書籍完畢!");
    }
}

8.5ExitOperation類:退出系統(tǒng)

package Java100_1006.operations;

//退出操作
public class ExitOperation implements IOperation{
    @Override
    public void work() {
        System.out.println("退出程序");
        System.exit(0);
    }
}

8.6FindOperation類:查找書籍

package Java100_1006.operations;

import Java100_1006.Book;
import Java100_1006.BookDao;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class FindOperation implements IOperation{
    @Override
    public void work() {
        System.out.println("根據(jù)名字查找書籍!");
        System.out.println("請輸入要查找的書名: ");
        Scanner scanner = new Scanner(System.in);
        String bookName = scanner.next();
        BookDao bookDao = new BookDao();
        List<Book> books = bookDao.selectByName(bookName);
        for(Book book:books){
            System.out.println(book);
        }
        System.out.println("根據(jù)名字查找書籍完畢!");
    }
}

8.7ReturnOperation類:返還書籍

package Java100_1006.operations;

import Java100_1006.BookDao;

import java.util.Scanner;

public class ReturnOperation implements IOperation{
    @Override
    public void work() {
        System.out.println("歸還書籍!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入要歸還的書籍id:");
        int bookId = scanner.nextInt();
        BookDao bookDao = new BookDao();
        boolean ret = bookDao.returnBook(bookId);
        if (ret) {
            System.out.println("歸還書籍成功!");
        } else {
            System.out.println("歸還書籍失敗!");
        }
    }
}

9.Main方法實現(xiàn)

package Java100_1006;

import java.util.Scanner;

//編寫系統(tǒng)的主體邏輯
public class Main {
    public static void main(String[] args) {
        //通過login方法進行登錄
        User user = login();
        while(true){
            int choice = user.menu();
            user.doOperation(choice);
        }
    }

    private static User login() {
        //1.實現(xiàn)用戶登錄邏輯
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入用戶名:");
        String userName = scanner.next();
        System.out.println("請輸入密碼:");
        String passWord = scanner.next();
        //2.從數(shù)據(jù)庫根據(jù)用戶名查詢密碼
        UserDao userDao = new UserDao();
        User user = userDao.selectByName(userName);
        if(user == null){
            //不存在該用戶
            System.out.println("登陸失敗!");
            // 直接退出程序
            System.exit(0);
        }
        if(!user.getPassWord().equals(passWord)){
            //密碼不正確
            System.out.println("登陸失敗");
            System.exit(0);
        }
        return user;
    }
}

三、結(jié)果實現(xiàn)

1.登錄界面

在這里插入圖片描述

在這里插入圖片描述

2.普通用戶操作

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

3.管理員操作

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

到此這篇關(guān)于Java開發(fā)實例之圖書管理系統(tǒng)的實現(xiàn)的文章就介紹到這了,更多相關(guān)Java 圖書管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java開發(fā)只要tomcat設(shè)計模式用的好下班就能早

    java開發(fā)只要tomcat設(shè)計模式用的好下班就能早

    這篇文章主要為大家介紹了java開發(fā)只要tomcat設(shè)計模式的示例詳解,<BR>只要設(shè)計模式用的好下班就能早,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 基于Redis生成分布式全局唯一ID的3種策略

    基于Redis生成分布式全局唯一ID的3種策略

    在分布式系統(tǒng)設(shè)計中,全局唯一ID是一個基礎(chǔ)而關(guān)鍵的組件,Redis具備高性能、原子操作及簡單易用的特性,因此我們可以基于Redis實現(xiàn)全局唯一ID的生成,下面我們來看看實現(xiàn)的三種方法吧
    2025-04-04
  • Java commons io包實現(xiàn)多線程同步圖片下載入門教程

    Java commons io包實現(xiàn)多線程同步圖片下載入門教程

    這篇文章主要介紹了Java commons io包實現(xiàn)多線程同步圖片下載入門,commons io: 是針對開發(fā)IO流功能的工具類庫,其中包含了許多可調(diào)用的函數(shù),感興趣的朋友跟隨小編一起看看吧
    2021-04-04
  • springmvc Controller方法沒有加@ResponseBody導致api訪問404問題

    springmvc Controller方法沒有加@ResponseBody導致api訪問404問題

    這篇文章主要介紹了springmvc Controller方法沒有加@ResponseBody導致api訪問404問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java發(fā)送post方法詳解

    Java發(fā)送post方法詳解

    這篇文章主要介紹了Java發(fā)送post方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Java中使用While語句自增運算遍歷數(shù)組典型實例

    Java中使用While語句自增運算遍歷數(shù)組典型實例

    這篇文章主要介紹了Java中使用While語句自增運算遍歷數(shù)組典型實例,本文直接給出實例代碼,并對每一句代碼都注解了詳細注釋,需要的朋友可以參考下
    2015-06-06
  • 詳解Mybatis中萬能的Map和模糊查詢寫法

    詳解Mybatis中萬能的Map和模糊查詢寫法

    這篇文章主要介紹了Mybatis中萬能的Map和模糊查詢寫法的相關(guān)資料,幫助大家更好的理解和使用Mybatis,感興趣的朋友可以了解下
    2021-03-03
  • 基于JVM 中常見垃圾收集算法介紹

    基于JVM 中常見垃圾收集算法介紹

    下面小編就為大家分享一篇基于JVM 中常見垃圾收集算法介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Spring各版本新特性的介紹

    Spring各版本新特性的介紹

    今天小編就為大家分享一篇關(guān)于Spring各版本新特性的介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Java中常用的設(shè)計模式之觀察者模式詳解

    Java中常用的設(shè)計模式之觀察者模式詳解

    這篇文章主要為大家詳細介紹了Java中常用的設(shè)計模式之觀察者模式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02

最新評論

柏乡县| 定西市| 临城县| 定襄县| 叙永县| 曲麻莱县| 锡林浩特市| 广丰县| 玉树县| 丰原市| 广宗县| 呼图壁县| 棋牌| 东乡族自治县| 临夏县| 聂荣县| 鲁山县| 绥化市| 土默特右旗| 伊川县| 揭西县| 庆元县| 阿尔山市| 镇沅| 宁德市| 高陵县| 全南县| 安岳县| 鲁甸县| 治多县| 定日县| 突泉县| 密山市| 呼图壁县| 上栗县| 勐海县| 马边| 尚义县| 红河县| 玉树县| 湘西|