Java 图书管理系统功能实现

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

要实现什么功能

1.查找图书

2.增加图书

3.删除图书

4.展示图书

5.退出系统

6.借阅图书

7.归还图书

1.查找图书

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

输入书名,

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

如果没有这本书就返回

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.增加图书

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

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

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

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

 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;

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

//这里比较书的名字
            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.展示图书

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

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)

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

 6.借阅图书

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

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.归还图书

与借阅图书相同

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

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

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值