Java 图书管理系统功能实现

承接上一篇的 图书管理系统 ,点击这里跳转

要实现什么功能

1.查找图书

2.增加图书

3.删除图书

4.展示图书

5.退出系统

6.借阅图书

7.归还图书

1.查找图书

要完成这个功能需要以下步骤

输入书名,

然后在书架里找到这本书打印出来,

如果没有这本书就返回

java 复制代码
public class FindOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("查找图书-----");
        //输入书名,查找书名,找到了打印书的信息
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要查找的书-----");
        String name = scanner.nextLine();
        int currentSize = bookList.getUseSize();
        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBook(i);
            //这里比较书的名字
            if(name.equals(book.getName())) {
                System.out.println("找到了!");
                System.out.println(book);
                return;
            }
        }
        System.out.println("没有找到你要的书-----");
        return;
    }
}

由于书在定义的时候重写了toString方法所以可以直接打印出来

2.增加图书

增加图书的前提是书架里有足够的空间,所以需要提前判满,如果已经满了就可以直接返回

java 复制代码
//直接加在最后一本书最后,然后书架中当前的书加1,但是前提是需要有足够的空间,所以需要提前判定是否已经满了
        int currentSize = bookList.getUseSize();
        if(currentSize == bookList.getBooks().length){
            System.out.println("书架已经满了-----");
            return;
        }

之后的操作是输入书名等信息,放进一本创建的新书中,书架里的书变多,那么当前书架中的书也加一

java 复制代码
Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要增加的书名-----");
        String name = scanner.nextLine();
        System.out.println("请输入作者的名字-----");
        String author = scanner.nextLine();
        System.out.println("请输入价格-----");
        int price = scanner.nextInt();

        //由于nextLine会接收回车,所以留下一个nextLine来接收空格
        scanner.nextLine();

        System.out.println("请输入类型-----");
        String type = scanner.nextLine();

        //这里把输入的数据放入到一本新书中
        Book newBook = new Book(name,author,price,type);

        //加入新书,当前书加1
        bookList.setBook(newBook,currentSize);
        bookList.setUseSize(currentSize+1);
        System.out.println("加入新书成功!");
        return;
    }

3.删除图书

首先我们要确定怎么来进行删除图书的操作

pos 之后的书来覆盖pos下标的书,然后当前书架的书减1,

那么重要的是找到下标pos

java 复制代码
 public void work(BookList bookList) {
        System.out.println("删除图书-----");
        //删除图书需要先找到此书的下标,用后面的书都覆盖前面的书,当前书数量减1
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要删除的书-----");
        String name = scanner.nextLine();
        int currentSize = bookList.getUseSize();
        //把i拿出来防止被释放
        int i = 0;
        for (; i < currentSize; i++) {
            Book book = bookList.getBook(i);
            //设置一个pos变量来接收下标
            int pos ;
            //这里比较书的名字
            if(name.equals(book.getName())) {
                //pos 接收下标
                pos = i;

那么找到下标之后就需要进行删除书籍的操作

java 复制代码
//这里比较书的名字
            if(name.equals(book.getName())) {
                //pos 接收下标
                pos = i;
                //从这本书开始被后面的书覆盖,这里 currentSize-1 防止越界
                for (int j = pos; j < currentSize-1; j++) {
                    Book book1 = bookList.getBook(j+1);
                    bookList.setBook(book1,j);
                }
                //数量减1
                bookList.setUseSize(currentSize-1);
                System.out.println("删除成功!");
                return;

因为获取书需要获取pos之后的书籍,那么如果不限制就会发生越界访问

4.展示图书

这个直接遍历书架打印出书的内容即可

java 复制代码
public class ShowOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("显示图书-----");
        int currentSize = bookList.getUseSize();
        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBook(i);
            System.out.println(book);
        }
    }
}

5.退出系统

这里需要了解exit

在Java中,System.exit(int status) 是一个静态方法,用于立即终止当前正在运行的Java虚拟机(JVM)

java 复制代码
public class ExitOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("退出系统-----");
        exit(0);
    }
}

6.借阅图书

与其他功能相同的是需要输入书名来找书,然后修改书的是否借出值

java 复制代码
public class BorrowOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("借阅图书-----");
        //输入书名,如果有此书就修改isBorrowed的值,没有则结束
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要借阅的书-----");
        String name = scanner.nextLine();
        int currentSize = bookList.getUseSize();
        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBook(i);
            //这里比较书的名字
            if(name.equals(book.getName())) {
                //修改是否借阅
                book.setBorrowed(true);
                System.out.println("借阅成功!");
                return;
            }
        }
        System.out.println("没有找到你要借阅的书-----");
        return;
    }
}

7.归还图书

与借阅图书相同

java 复制代码
public class ReturnOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("归还图书-----");
        //找到书并修改借出值
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要归还的书-----");
        String name = scanner.nextLine();
        int currentSize = bookList.getUseSize();
        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBook(i);
            //这里比较书的名字
            if(name.equals(book.getName())) {
                book.setBorrowed(false);
                System.out.println("还书成功!");
                return;
            }
        }
        System.out.println("没有找到你要还的书-----");
        return;
    }

看到这里不妨留下你的三连,你的三连就是我的动力!

相关推荐
duration~36 分钟前
Maven随笔
java·maven
zmgst39 分钟前
canal1.1.7使用canal-adapter进行mysql同步数据
java·数据库·mysql
跃ZHD1 小时前
前后端分离,Jackson,Long精度丢失
java
blammmp1 小时前
Java:数据结构-枚举
java·开发语言·数据结构
暗黑起源喵1 小时前
设计模式-工厂设计模式
java·开发语言·设计模式
WaaTong2 小时前
Java反射
java·开发语言·反射
九圣残炎2 小时前
【从零开始的LeetCode-算法】1456. 定长子串中元音的最大数目
java·算法·leetcode
wclass-zhengge2 小时前
Netty篇(入门编程)
java·linux·服务器
Re.不晚3 小时前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
雷神乐乐3 小时前
Maven学习——创建Maven的Java和Web工程,并运行在Tomcat上
java·maven