Java——简易图书管理系统

目录

一、思路

二、实现

2.1 创建对象

2.1.1 书

2.1.2 用户

2.2 交互

2.2.1 操作界面

2.2.2 书架

2.2.3 对图书操作

2.2.4 具体实现对图书操作

2.2.4.1 退出系统(即结束程序)

2.2.4.2 查找图书

2..2.4.3 打印图书

2.2.4.4 借阅与归还图书

2.2.4.5 增加图书 

2.2.4.6 删除图书 

三、完整代码

3.1 book包

3.2 user包

3.3 behavior类


一、思路

简易图书管理系统说白了其实就是 用户 与 图书 这两个对象之间的交互

书的属性有

书名

作者

类型

价格

借阅状态


而用户可以分为

普通用户

管理员

使用数组将书统一管理起来

用户对这个数组进行操作


普通用户可以进行

查看所有书籍

借阅书籍

归还书

退出系统


而管理员可以进行普通用户的所有操作,此外

增加书籍

删除书籍


大致如此

二、实现

2.1 创建对象

2.1.1 书

public class Book {
    private String name;//书名
    private String author;//作者
    private double price;//价格
    private String type;//类型
    boolean IsBorrowed;//借出状态  
}

书需要构造方法

以及重写 toString,方便输出

public class Book {
    private String name;//书名
    private String author;//作者
    private double price;//价格
    private String type;//类型
    boolean IsBorrowed;//借出状态

    //构造方法
    //书一开始的状态都是未借出
    //boolean类型在不赋值的情况下默认人为false
    public Book(String name, String author, double price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                 ((IsBorrowed == true)?"已接触":"未借出") +
                '}';
    }
}

为方便管理,将所有与书有关的类放到同一个包下面去

package book;

public class Book {
    private String name;//书名
    private String author;//作者
    private double price;//价格
    private String type;//类型
    boolean IsBorrowed;//借出状态

    //构造方法
    //书一开始的状态都是未借出
    //boolean类型在不赋值的情况下默认人为false
    public Book(String name, String author, double price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                 ((IsBorrowed == true)?"已接触":"未借出") +
                '}';
    }
}

目前就是如此

其他方法在实现用户与图书交互时进行补充

2.1.2 用户

为方便管理,将用户相关类放到另一个包中

用户与管理员在属性上是相同的

那么就可以继承于一个抽象类

package user;

abstract public class User {
    protected String name;

    public User(String name) {
        this.name = name;
    }
}

package user;

public class NormalUser extends User {
    public NormalUser(String name) {
        super(name);
    }
}
package user;

public class Administrator extends User{
    public Administrator(String name) {
        super(name);
    }
}

可能用到的方法依旧是在后文中进行补充


2.2 交互

2.2.1 操作界面

用户在登陆时会检测身份

public static  User  login(){
        System.out.println("欢迎使用图书管理系统!!!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您的姓名");
        String name = scanner.nextLine();
        System.out.println("请选择你的身份");
        System.out.println("1.普通用户");
        System.out.println("2.管理员");
        int choice = scanner.nextInt();
        if(choice == 1){
            return new NormalUser (name);
        }
        else if(choice == 2){
            return new Administrator(name);
        }
        else {
            System.out.println("输入的值无效");
        }
        return null;
    }

无论是管理员还是普通用户都会有操作界面

那就可以将这个方法作为抽象方法放在 User 类

package user;
abstract public class User {
    protected String name;

    public User(String name) {
        this.name = name;
    }

    abstract  public void menu();
}

在子类中实现

package user;

public class NormalUser extends User {
    public NormalUser(String name) {
        super(name);
    }

    @Override
  public void menu() {
        System.out.println("请选择操作");
        System.out.println("1.显示图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("4.查找图书");
        System.out.println("0.退出系统!");
    }
}
package user;

public class Administrator extends User{
    public Administrator(String name) {
        super(name);
    }

    @Override
  public void menu() {
        System.out.println("请选择操作");
        System.out.println("1.显示图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("4.查找图书");
        System.out.println("5.增加图书");
        System.out.println("6.删除图书");
        System.out.println("0.退出系统!");
    }
}

测试

  public static void main(String[] args) {
        User user = login();
        user.menu();
    }

2.2.2 书架

将书放到一个数组中方便管理

定义一个书架类

这个书架中默认会有几本书

书架有默认容量和已存书本数量

package book;

public class BookList {
    private final int defaultcapacity = 10;//默认容量
    protected Book[] booklist = new Book[defaultcapacity];

    private int usespace;//已存书本容量
    public BookList() {
        this.booklist[0] = new Book("三体", "刘慈欣", 18.88, "小说");
        this.booklist[1] = new Book("西游记", "吴承恩", 17.77, "小说");
        this.booklist[2] = new Book("红楼梦", "曹雪芹", 16.66, "小说");

        usespace = 3;
    }

    public int usesize(){
        return this.usespace;
    }
    public int size(){
        return this.booklist.length;
    }
}

所有操作实际上都是对 booklist 这个数组进行

2.2.3 对图书操作

无论是管理员还是普通用户的操作

都可以理解成一种行为的多态

那就可以用一个接口

package behavior;

import book.BookList;

public interface Behavior{
    void work();//各种操作
    BookList booklist = new BookList();
}

所有的操作都是实现了这个接口的类

public class AddBehavior implements Ibehavior{
    @Override
    public void work() {
        System.out.println("添加图书");
    }
}
public class BorrowedBehavior implements Ibehavior{
    @Override
    public void work() {
        System.out.println("借阅图书");
    }
}
public class ExitBehavior implements Ibehavior{
    @Override
    public void work() {
        System.out.println("退出系统!");
    }
}
public class RemoveBehavior implements Ibehavior{
    @Override
    public void work() {
        System.out.println("归还图书!");
    }
}
public class ReturnBehavior implements Ibehavior{
    @Override
    public void work() {
        System.out.println("归还图书");
    }
}
public class ShowBehavior implements Ibehavior{
    @Override
    public void work() {
        System.out.println("展示未借阅的图书!");
    }
}

public class FindBehavior implements Behavior{
    @Override
    public void work() {
        System.out.println("查找图书!");
    }
}

2.2.4 具体实现对图书操作

普通用户与管理员有对应的操作

可以在普通用户类与管理员类中创建一个数组

public class Administrator extends User{
    public Administrator(String name) {
        super(name);
    }
    protected Behavior[] behaviors = {new ExitBehavior(),new ShowBehavior(),new BorrowedBehavior(),new ReturnBehavior(),new FindBehavior(),new AddBehavior(),new RemoveBehavior()};

    @Override
    public void menu() {
        System.out.println("请选择操作");
        System.out.println("1.显示图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("4.查找图书");
        System.out.println("5.增加图书");
        System.out.println("6.删除图书");
        System.out.println("0.退出系统!");
    }
}
public class NormalUser extends User {
    public NormalUser(String name) {
        super(name);
    }
protected Behavior[] behaviors = {new ExitBehavior(),new ShowBehavior(),new BorrowedBehavior(),new ReturnBehavior(),new FindBehavior()};
    @Override
    public void menu() {
        System.out.println("请选择操作");
        System.out.println("1.显示图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("4.查找图书");
        System.out.println("0.退出系统!");
    }
}

这里就需要对应的下标值来对数组进行操作

而对应下标值可以通过 menu 方法来返回

修改一下就可以了

public class Administrator extends User{
    public Administrator(String name) {
        super(name);
    }
    protected Behavior[] behaviors = {new ExitBehavior(),new ShowBehavior(),new BorrowedBehavior(),new ReturnBehavior(),new FindBehavior(),new AddBehavior(),new RemoveBehavior()};

    @Override
    public int menu() {
        System.out.println("请选择操作");
        System.out.println("1.显示图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("4.查找图书");
        System.out.println("5.增加图书");
        System.out.println("6.删除图书");
        System.out.println("0.退出系统!");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
    @Override
    public void DoBehavior(int choice){
        this.behaviors[choice].work();
    }
}
public class NormalUser extends User {
    public NormalUser(String name) {
        super(name);
    }
protected Behavior[] behaviors = {new ExitBehavior(),new ShowBehavior(),new BorrowedBehavior(),new ReturnBehavior(),new FindBehavior()};
    @Override
    public int menu() {
        System.out.println("请选择操作");
        System.out.println("1.显示图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("4.查找图书");
        System.out.println("0.退出系统!");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
    @Override
    public void DoBehavior(int choice){
        this.behaviors[choice].work();
    }
}

对各项操作进行实现

2.2.4.1 退出系统(即结束程序)

public class ExitBehavior implements Behavior{
    @Override
    public void work() {
        System.out.println("退出系统!");
        System.exit(0);
    }
}

测试


2.2.4.2 查找图书

根据书名进行对应图书查找

需要拿到书名

BookBookList 中增加方法

public class Book {
    private String name;//书名
    private String author;//作者
    private double price;//价格
    private String type;//类型
    boolean IsBorrowed;//借出状态

    //构造方法
    //书一开始的状态都是未借出
    //boolean类型在不赋值的情况下默认人为false
    public Book(String name, String author, double price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                 ((IsBorrowed == true)?"已接触":"未借出") +
                '}';
    }

    public String getName(){
        return this.name;
    }
}
package book;

public class BookList {
    private final int defaultcapacity = 10;//默认容量
    protected Book[] booklist = new Book[defaultcapacity];

    private int usespace;//已存书本容量
    public BookList() {
        this.booklist[0] = new Book("三体", "刘慈欣", 18.88, "小说");
        this.booklist[1] = new Book("西游记", "吴承恩", 17.77, "小说");
        this.booklist[2] = new Book("红楼梦", "曹雪芹", 16.66, "小说");

        usespace = 3;
    }

    public int usesize(){
//        存放书本数量
        return this.usespace;
    }
    public int size(){
//        书架总容量
        return this.booklist.length;
    }
    public String getBookName(int index){
//        返回对应位置的书名
        return this.booklist[index].getName();
    }
    public Book getBook(int index){
//        返回对应位置的书
        return this.booklist[index];
    }
}

package behavior;

import java.util.Scanner;

public class FindBehavior implements Behavior{
    @Override
    public void work() {
        System.out.println("查找图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要查找的书籍名称:");
        String name = scanner.nextLine();
        for (int i = 0; i < booklist.usesize(); i++) {
            if(name.equals(booklist.getBookName(i))){
                System.out.println("已找到您要查找的图书");
                System.out.println(booklist.getBook(i));
                return;
            }
        }
        System.out.println("没有您要查找的书籍");
    }
}

测试


2..2.4.3 打印图书

将书架上所有书打印出来

只展示没有被借出的图书

那就需要获得书的借出状态

public class Book {
    private String name;//书名
    private String author;//作者
    private double price;//价格
    private String type;//类型
    boolean IsBorrowed;//借出状态

    //构造方法
    //书一开始的状态都是未借出
    //boolean类型在不赋值的情况下默认人为false
    public Book(String name, String author, double price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                 ((IsBorrowed == true)?"已接触":"未借出") +
                '}';
    }

    public String getName(){
        return this.name;
    }
    public Boolean IsBorrowed(){
        return this.IsBorrowed;
    }
}
package behavior;

public class ShowBehavior implements Behavior{
    @Override
    public void work() {
        System.out.println("展示未借阅的图书!");
        for (int i = 0; i < booklist.usesize(); i++) {
            if(!booklist.getBook(i).IsBorrowed()){
                System.out.println(booklist.getBook(i));
            }
        }
    }
}

测试


2.2.4.4 借阅与归还图书

查找到对应图书

修改该书的 IsBorrowed 属性即可

需要在 Book 中增加 set 方法

package book;

public class Book {
    private String name;//书名
    private String author;//作者
    private double price;//价格
    private String type;//类型
    boolean IsBorrowed;//借出状态

    //构造方法
    //书一开始的状态都是未借出
    //boolean类型在不赋值的情况下默认人为false
    public Book(String name, String author, double price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                 ((IsBorrowed == true)?"已接触":"未借出") +
                '}';
    }

    public void setBorrowed_borrow(){
        this.IsBorrowed = true;
    }
    public void setBorrowed_return(){
        this.IsBorrowed = false;
    }
    public String getName(){
        return this.name;
    }
    public Boolean IsBorrowed(){
        return this.IsBorrowed;
    }
}
package behavior;

import java.util.Scanner;

public class ReturnBehavior implements Behavior {
    @Override
    public void work() {
        System.out.println("归还图书");
        System.out.println("请输入您要归还的图书名称:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        for (int i = 0; i < booklist.usesize(); i++) {
            if (name.equals(booklist.getBookName(i)) && !booklist.getBook(i).IsBorrowed()){
                System.out.println("本系统已录入该图书");
                return;
            }
            if (name.equals(booklist.getBookName(i))) {
                booklist.getBook(i).setBorrowed_return();
                System.out.println("归还成功!");
                return;
            }
        }
        System.out.println("这本书不属于本系统!");
    }
}
package behavior;

import java.util.Scanner;

public class BorrowedBehavior implements Behavior {
    @Override
    public void work() {
        System.out.println("借阅图书");
        System.out.println("请输入您要借阅的图书名称:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        for (int i = 0; i < booklist.usesize(); i++) {
            if (name.equals(booklist.getBookName(i)) && booklist.getBook(i).IsBorrowed()){
                System.out.println("该图书已借出");
                return;
            }
            if (name.equals(booklist.getBookName(i))) {
                booklist.getBook(i).setBorrowed_borrow();
                System.out.println("借阅成功!");
                return;
            }
        }
        System.out.println("没有您要借阅的书籍");
    }
}

测试


2.2.4.5 增加图书 

先判断书架是否是满的

再判断是否存在同名书籍

增加后需要将 usespace++

需要一个 set 方法

package book;

public class BookList {
    private final int defaultcapacity = 10;//默认容量
    protected Book[] booklist = new Book[defaultcapacity];

    private int usespace;//已存书本容量
    public BookList() {
        this.booklist[0] = new Book("三体", "刘慈欣", 18.88, "小说");
        this.booklist[1] = new Book("西游记", "吴承恩", 17.77, "小说");
        this.booklist[2] = new Book("红楼梦", "曹雪芹", 16.66, "小说");

        usespace = 3;
    }

    public int usesize(){
//        存放书本数量
        return this.usespace;
    }
    public int size(){
//        书架总容量
        return this.booklist.length;
    }

    public void setUsespace(int usespace) {
        //改变书架书的数量
        this.usespace = usespace;
    }

    public void setBooklist(Book book){
//        增加书籍
        this.booklist[usespace++] = book;
    }
    public String getBookName(int index){
//        返回对应位置的书名
        return this.booklist[index].getName();
    }
    public Book getBook(int index){
//        返回对应位置的书
        return this.booklist[index];
    }
}
public class AddBehavior implements Behavior{
    @Override
    public void work() {
        System.out.println("添加图书");
        if (booklist.size() == booklist.usesize()) {
            System.out.println("书架已满!");
            return;
        }//判断书架是否已满
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您要添加的书籍名称:");
        String name = scanner.nextLine();
        for (int i = 0; i < booklist.usesize(); i++) {
//            判断是否存在同名书籍
            if (name.equals(booklist.getBookName(i))) {
                System.out.println("系统已收录该图书");
                return;
            }
        }
        System.out.println("请输入该书的作者");
        String author = scanner.nextLine();

        System.out.println("请输入该书的价格");
        double price = scanner.nextDouble();
        String type = scanner.nextLine();//接受回车键

        System.out.println("请输入该书的类型");
        type = scanner.nextLine();

        Book book = new Book(name,author,price,type);
        booklist.setBooklist(book);
        System.out.println("新增图书成功!");
    }
}

测试

2.2.4.6 删除图书 

找到对应的图书

如果已经借出就不能删除

如果没有借出

将他所在空间置为 null

然后将他所在位置之后的图书向前移动

同样需要在 BookList 类中补充方法

package book;

public class BookList {
    private final int defaultcapacity = 10;//默认容量
    protected Book[] booklist = new Book[defaultcapacity];

    private int usespace;//已存书本容量
    public BookList() {
        this.booklist[0] = new Book("三体", "刘慈欣", 18.88, "小说");
        this.booklist[1] = new Book("西游记", "吴承恩", 17.77, "小说");
        this.booklist[2] = new Book("红楼梦", "曹雪芹", 16.66, "小说");

        usespace = 3;
    }

    public int usesize(){
//        存放书本数量
        return this.usespace;
    }
    public int size(){
//        书架总容量
        return this.booklist.length;
    }

    public void setUsespace(int usespace) {
        //改变书架书的数量
        this.usespace = usespace;
    }

    public void setBooklist(Book book){
//        增加书籍(放在尾部)
        this.booklist[usespace++] = book;
    }
    public void setBooklist(Book book,int index){
//        增加书籍(指定位置)
        this.booklist[index] = book;
    }
    public void removeBook(int index){
        //删除对应下标位置的书
        this.booklist[index] = null;
    }
    public String getBookName(int index){
//        返回对应位置的书名
        return this.booklist[index].getName();
    }
    public Book getBook(int index){
//        返回对应位置的书
        return this.booklist[index];
    }
}
package behavior;

import java.util.Scanner;

public class RemoveBehavior implements Behavior {
    @Override
    public void work() {
        System.out.println("删除图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您要删除的书籍名称:");
        String name = scanner.nextLine();
        for (int i = 0; i < booklist.usesize(); i++) {
            if (name.equals(booklist.getBookName(i)) && booklist.getBook(i).IsBorrowed()) {
//                已借出不能删除
                System.out.println("该图书已借出");
                return;
            }
            if (name.equals(booklist.getBookName(i)) && !booklist.getBook(i).IsBorrowed()) {
                booklist.removeBook(i);//指定位置置空
                for (int j = i; j < booklist.usesize() - 1; j++) {
                    //指定位置处的书向前移动
                    booklist.setBooklist(booklist.getBook(j + 1), j);
                }
                System.out.println("删除成功!");
                int newspace = booklist.usesize();
                booklist.setUsespace(--newspace);//删除后 书架中的存储的书的数量减少
                return;
            }
        }
        System.out.println("没有您要删除的书籍");
        return;
    }
}

测试


感谢观看

三、完整代码

3.1 book包

package book;

public class BookList {
    private final int defaultcapacity = 10;//默认容量
    protected Book[] booklist = new Book[defaultcapacity];

    private int usespace;//已存书本容量
    public BookList() {
        this.booklist[0] = new Book("三体", "刘慈欣", 18.88, "小说");
        this.booklist[1] = new Book("西游记", "吴承恩", 17.77, "小说");
        this.booklist[2] = new Book("红楼梦", "曹雪芹", 16.66, "小说");

        usespace = 3;
    }

    public int usesize(){
//        存放书本数量
        return this.usespace;
    }
    public int size(){
//        书架总容量
        return this.booklist.length;
    }

    public void setUsespace(int usespace) {
        //改变书架书的数量
        this.usespace = usespace;
    }

    public void setBooklist(Book book){
//        增加书籍(放在尾部)
        this.booklist[usespace++] = book;
    }
    public void setBooklist(Book book,int index){
//        增加书籍(指定位置)
        this.booklist[index] = book;
    }
    public void removeBook(int index){
        //删除对应下标位置的书
        this.booklist[index] = null;
    }
    public String getBookName(int index){
//        返回对应位置的书名
        return this.booklist[index].getName();
    }
    public Book getBook(int index){
//        返回对应位置的书
        return this.booklist[index];
    }
}
package book;

public class Book {
    private String name;//书名
    private String author;//作者
    private double price;//价格
    private String type;//类型
    boolean IsBorrowed;//借出状态

    //构造方法
    //书一开始的状态都是未借出
    //boolean类型在不赋值的情况下默认人为false
    public Book(String name, String author, double price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                 ((IsBorrowed == true)?"已接触":"未借出") +
                '}';
    }

    public void setBorrowed_borrow(){
        this.IsBorrowed = true;
    }
    public void setBorrowed_return(){
        this.IsBorrowed = false;
    }

    public String getName(){
        return this.name;
    }
    public Boolean IsBorrowed(){
        return this.IsBorrowed;
    }
}

3.2 user包

package user;

abstract public class User {
    protected String name;


    public User(String name) {
        this.name = name;
    }

    abstract public int menu();
    abstract public void DoBehavior(int choice);
}
package user;

import behavior.*;

import java.util.Scanner;

public class NormalUser extends User {
    public NormalUser(String name) {
        super(name);
    }
protected Behavior[] behaviors = {new ExitBehavior(),new ShowBehavior(),new BorrowedBehavior(),new ReturnBehavior(),new FindBehavior()};
    @Override
    public int menu() {
        System.out.println("请选择操作");
        System.out.println("1.显示图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("4.查找图书");
        System.out.println("0.退出系统!");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
    @Override
    public void DoBehavior(int choice){
        this.behaviors[choice].work();
    }
}
package user;

import behavior.*;

import java.util.Scanner;

public class Administrator extends User{
    public Administrator(String name) {
        super(name);
    }
    protected Behavior[] behaviors = {new ExitBehavior(),new ShowBehavior(),new BorrowedBehavior(),new ReturnBehavior(),new FindBehavior(),new AddBehavior(),new RemoveBehavior()};

    @Override
    public int menu() {
        System.out.println("请选择操作");
        System.out.println("1.显示图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("4.查找图书");
        System.out.println("5.增加图书");
        System.out.println("6.删除图书");
        System.out.println("0.退出系统!");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
    @Override
    public void DoBehavior(int choice){
        this.behaviors[choice].work();
    }
}

3.3 behavior类

package behavior;

import book.BookList;

public interface Behavior{
    void work();//各种操作
    BookList booklist = new BookList();
}

package behavior;


import book.Book;

import java.util.Scanner;

public class AddBehavior implements Behavior{
    @Override
    public void work() {
        System.out.println("添加图书");
        if (booklist.size() == booklist.usesize()) {
            System.out.println("书架已满!");
            return;
        }//判断书架是否已满
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您要添加的书籍名称:");
        String name = scanner.nextLine();
        for (int i = 0; i < booklist.usesize(); i++) {
//            判断是否存在同名书籍
            if (name.equals(booklist.getBookName(i))) {
                System.out.println("系统已收录该图书");
                return;
            }
        }
        System.out.println("请输入该书的作者");
        String author = scanner.nextLine();

        System.out.println("请输入该书的价格");
        double price = scanner.nextDouble();
        String type = scanner.nextLine();//接受回车键

        System.out.println("请输入该书的类型");
        type = scanner.nextLine();

        Book book = new Book(name,author,price,type);
        booklist.setBooklist(book);
        System.out.println("新增图书成功!");
    }
}
package behavior;

import java.util.Scanner;

public class BorrowedBehavior implements Behavior {
    @Override
    public void work() {
        System.out.println("借阅图书");
        System.out.println("请输入您要借阅的图书名称:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        for (int i = 0; i < booklist.usesize(); i++) {
            if (name.equals(booklist.getBookName(i)) && booklist.getBook(i).IsBorrowed()){
                System.out.println("该图书已借出");
                return;
            }
            if (name.equals(booklist.getBookName(i))) {
                booklist.getBook(i).setBorrowed_borrow();
                System.out.println("借阅成功!");
                return;
            }
        }
        System.out.println("没有您要借阅的书籍");
    }
}
package behavior;

public class ExitBehavior implements Behavior{
    @Override
    public void work() {
        System.out.println("退出系统!");
        System.exit(0);
    }
}
package behavior;

import java.util.Scanner;

public class FindBehavior implements Behavior{
    @Override
    public void work() {
        System.out.println("查找图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要查找的书籍名称:");
        String name = scanner.nextLine();
        for (int i = 0; i < booklist.usesize(); i++) {
            if(name.equals(booklist.getBookName(i))){
                System.out.println("已找到您要查找的图书");
                System.out.println(booklist.getBook(i));
                return;
            }
        }
        System.out.println("没有您要查找的书籍");
    }
}
import java.util.Scanner;

public class RemoveBehavior implements Behavior {
    @Override
    public void work() {
        System.out.println("删除图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您要删除的书籍名称:");
        String name = scanner.nextLine();
        for (int i = 0; i < booklist.usesize(); i++) {
            if (name.equals(booklist.getBookName(i)) && booklist.getBook(i).IsBorrowed()) {
//                已借出不能删除
                System.out.println("该图书已借出");
                return;
            }
            if (name.equals(booklist.getBookName(i)) && !booklist.getBook(i).IsBorrowed()) {
                booklist.removeBook(i);//指定位置置空
                for (int j = i; j < booklist.usesize() - 1; j++) {
                    //指定位置处的书向前移动
                    booklist.setBooklist(booklist.getBook(j + 1), j);
                }
                System.out.println("删除成功!");
                int newspace = booklist.usesize();
                booklist.setUsespace(--newspace);//删除后 书架中的存储的书的数量减少
                return;
            }
        }
        System.out.println("没有您要删除的书籍");
        return;
    }
}
package behavior;

import java.util.Scanner;

public class ReturnBehavior implements Behavior {
    @Override
    public void work() {
        System.out.println("归还图书");
        System.out.println("请输入您要归还的图书名称:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        for (int i = 0; i < booklist.usesize(); i++) {
            if (name.equals(booklist.getBookName(i)) && !booklist.getBook(i).IsBorrowed()){
                System.out.println("本系统已录入该图书");
                return;
            }
            if (name.equals(booklist.getBookName(i))) {
                booklist.getBook(i).setBorrowed_return();
                System.out.println("归还成功!");
                return;
            }
        }
        System.out.println("这本书不属于本系统!");
    }
}
package behavior;

public class ShowBehavior implements Behavior{
    @Override
    public void work() {
        System.out.println("展示未借阅的图书!");
        for (int i = 0; i < booklist.usesize(); i++) {
            if(!booklist.getBook(i).IsBorrowed()){
                System.out.println(booklist.getBook(i));
            }
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值