Java实现图书管理系统

一、框架

1. 创建类

用户:管理员AdminUser 普通用户NormalUser 继承抽象类User

书:书Book 书架BookList

操作对象:书Book

2. 知识点

主要涉及的知识点:数据类型 变量 if for 数组 方法 类和对象 封装继承多态 抽象类和接口

3.利用数组放置图书

Test.Java

BookList.java

方法调用

BookList.java

Book.java

4.利用向上转型实现用户身份的选择

User.java

添加图书操作AddIOperation等类实现接口IOperations

IOperations.java

每个功能操作均需重写接口IOperations的work方法--此处以添加操作为例

NormalUser.java

AdminUser.java

Test.java

二、功能的实现------重写Work()方法

1.退出操作ExitOperation

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

2.展示操作ShowOperation

java 复制代码
public class ShowOperation implements IOperations{
    @Override
    public void work(BookList bookList) {
        System.out.println("展示书籍");
        for (int i = 0; i < bookList.getUsedSize(); i++) {
            System.out.println(bookList.getBooks()[i].toString());
        }
    }
}

3.查找操作FindOperation

java 复制代码
public class FindOperation implements IOperations{
    @Override
    public void work(BookList bookList) {
        System.out.println("查找书籍");
        System.out.println("请输入您要查找的图书名字:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        for (int i = 0; i < bookList.getUsedSize(); i++) {
            if(bookList.getBooks()[i].getName().equals(name)) {
                System.out.println(bookList.getBooks()[i].toString());
                return;
            }
        }
        System.out.println("没有这本书");
    }
}

4.借阅操作BorrowOperation

java 复制代码
public class BorrowOperation implements IOperations{
    @Override
    public void work(BookList bookList) {
        System.out.println("借阅书籍");
        System.out.println("请输入你要借阅的图书名字:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        for (int i = 0; i < bookList.getUsedSize(); i++) {
            if (bookList.getBooks()[i].getName().equals(name)) {
                bookList.getBooks()[i].setBorrowed(true);
                System.out.println("借阅成功");
                return;
            }
        }
        System.out.println("没有找到这本书");
    }
}

5.归还操作ReturnOPeration

java 复制代码
public class ReturnIOperation implements IOperations{
    @Override
    public void work(BookList bookList) {
        System.out.println("归还书籍");
        System.out.println("请输入你要归还的图书名字:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        for (int i = 0; i < bookList.getUsedSize(); i++) {
            if (bookList.getBooks()[i].getName().equals(name)) {
                if(bookList.getBooks()[i].isBorrowed()) {
                    bookList.getBooks()[i].setBorrowed(false);
                    System.out.println("归还成功");
                    return;
                }else {
                    System.out.println("这本书已经归还了,无需再次归还");
                    return;
                }
            }

        }
        System.out.println("没有找到这本书");
    }
}

6.添加功能AddOperation

java 复制代码
public class AddIOperation implements IOperations{
    @Override
    public void work(BookList bookList) {
        System.out.println("增添书籍");
        //判满
        int currentSize = bookList.getUsedSize();
        if (currentSize == bookList.getBooks().length) {
            System.out.println("书架已满,添加失败");
            return;
        }
        System.out.println("请输入图书名字:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        System.out.println("请输入图书的作者:");
        String author = scanner.nextLine();
        System.out.println("请输入图书的价格:");
        int price = scanner.nextInt();
        scanner.nextLine();
        System.out.println("请输入图书的类型:");
        String type = scanner.nextLine();

        Book newBook = new Book(name,author,price,type);

        //判断书架有没有这本书
        for (int i = 0; i < bookList.getBooks().length; i++) {
            if(newBook.equals(bookList.getBooks()[i])) {
                System.out.println("该书已存在,添加无效");
                return;
            }
        }
        bookList.setBooks(currentSize,newBook);
        bookList.setUsedSize(currentSize+1);
        System.out.println("添加成功");
    }
}

7.删除操作DelOperation

java 复制代码
public class DelOperation implements IOperations{
    @Override
    public void work(BookList bookList) {
        System.out.println("删除书籍");
        System.out.println("请输入您要删除的图书名字");
        Scanner scanner = new Scanner(System.in);
        int pos = -1;
        String name = scanner.nextLine();
        int currentSize = bookList.getUsedSize();
        int i = 0;
        for (; i < currentSize; i++) {
            if(name.equals(bookList.getBooks()[i].getName())) {
                pos = i;
                break;
            }
        }
        if (i == currentSize) {
            System.out.println("没有你想删除的图书");
            return;
        }
        int j = pos;
        for (;j < bookList.getUsedSize()-1; j++) {
            Book book = bookList.getBooks()[j+1];
            bookList.setBooks(j,book);
        }
        bookList.setBooks(j,null);
        bookList.setUsedSize(currentSize-1);
        System.out.println("删除成功");
    }
}
相关推荐
zquwei19 分钟前
SpringCloudGateway+Nacos注册与转发Netty+WebSocket
java·网络·分布式·后端·websocket·网络协议·spring
TT哇25 分钟前
*【每日一题 提高题】[蓝桥杯 2022 国 A] 选素数
java·算法·蓝桥杯
火烧屁屁啦1 小时前
【JavaEE进阶】初始Spring Web MVC
java·spring·java-ee
飞飞-躺着更舒服1 小时前
【QT】实现电子飞行显示器(改进版)
开发语言·qt
w_31234541 小时前
自定义一个maven骨架 | 最佳实践
java·maven·intellij-idea
岁岁岁平安1 小时前
spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))
java·学习·spring·依赖注入·集合注入·基本数据类型注入·引用数据类型注入
武昌库里写JAVA1 小时前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
Q_19284999061 小时前
基于Spring Boot的九州美食城商户一体化系统
java·spring boot·后端
张国荣家的弟弟2 小时前
【Yonghong 企业日常问题 06】上传的文件不在白名单,修改allow.jar.digest属性添加允许上传的文件SH256值?
java·jar·bi
ZSYP-S2 小时前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring