Java 图书管理系统

package Practice;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        BookList bookList = new BookList();
        User user = login();
        while (true) {
            int choice = user.menu();
            user.doIOperation(choice, bookList);
        }
    }

    public static User login() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您的姓名:");
        String name = scanner.next();
        System.out.println("请输入您的角色:");
        System.out.println("0. 管理员   1. 普通用户");
        while (true) {
            int who = scanner.nextInt();
            if (who == 0) {
                return new Admin(name);
            } else if (who == 1) {
                return new NormalUser(name);
            } else {
                System.out.println("您的输入有误,请重新输入");
            }
        }
    }
}

//分割线//

package Practice;

import Practice.Operation.IOperation;

abstract public class User {
    protected IOperation[] iOperations;
    protected String name;

    public abstract int menu();

    public void doIOperation(int choice, BookList bookList) {
        this.iOperations[choice - 1].word(bookList);
    }
}

//分割线//

package Practice;

import Practice.Operation.*;

import java.util.Scanner;

public class Admin extends User {

    public Admin(String name) {
        this.name = name;
        this.iOperations = new IOperation[]{
                new Find(),
                new Add(),
                new Del(),
                new Display(),
                new Exit()
        };
    }

    @Override
    public int menu() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Hello [" + name + "] 欢迎来到图书管理系统");
        System.out.println("==============================================");
        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("==============================================");
        int choice = scanner.nextInt();
        return choice;
    }
}

//分割线//

package Practice;

import Practice.Operation.*;

import java.util.Scanner;

public class NormalUser extends User {

    public NormalUser(String name) {
        this.name = name;
        this.iOperations = new IOperation[]{
          new Find(),
          new Borrow(),
          new Return(),
          new Exit()
        };
    }

    @Override
    public int menu() {
        System.out.println("Hello [" + name + "] 欢迎来到图书管理系统");
        System.out.println("==============================================");
        System.out.println("请输入您的选择:");
        System.out.println("1. 查阅书籍信息");
        System.out.println("2. 借阅书籍");
        System.out.println("3. 归还书籍");
        System.out.println("4. 退出程序");
        System.out.println("==============================================");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
}

//分割线//

package Practice;


public class Book {
    private String name;
    private String author;
    private double price;
    private String type;
    private boolean isBorrow = false;

    public Book(String name, String author, double price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }

    public String getName() {
        return name;
    }

    public boolean isBorrow() {
        return isBorrow;
    }

    public void setBorrow(boolean borrow) {
        isBorrow = borrow;
    }

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

//分割线//

package Practice;

import java.util.Arrays;

public class BookList {
    private Book[] books = new Book[100];
    private int size = 0;

    public BookList() {
        books[0] = new Book("西游记", "吴承恩", 100, "古典小说");
        books[1] = new Book("三国演义","罗贯中", 100, "古典小说");
        books[2] = new Book("水浒传", "施耐庵", 100, "古典小说");
        size = 3;
    }

    public Book getBooks(int index) {
        return books[index];
    }

    public void setBooks(int index, Book book) {
        books[index] = book;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }


}

//分割线//

package Practice.Operation;

import Practice.BookList;

public interface IOperation {
    void word(BookList bookList);
}

//分割线//

package Practice.Operation;

import Practice.Book;
import Practice.BookList;

import java.util.Scanner;

public class Add implements IOperation {
    @Override
    public void word(BookList bookList) {
        System.out.println("增添书籍");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您要添加的书籍名称:" );
        String name = scanner.next();
        System.out.println("请输入您要添加的书籍作者:" );
        String author = scanner.next();
        System.out.println("请输入您要添加的书籍价格:" );
        double price = scanner.nextDouble();
        System.out.println("请输入您要添加的书籍类型:" );
        String type = scanner.next();

        Book book = new Book(name, author, price, type);
        bookList.setBooks(bookList.getSize(), book);
        bookList.setSize(bookList.getSize() + 1);
        System.out.println("添加成功!");
    }

}

//分割线//

package Practice.Operation;

import Practice.BookList;

import java.util.Scanner;

public class Del implements IOperation {

    @Override
    public void word(BookList bookList) {
        System.out.println("删除书籍");
        System.out.println("请输入您要删除的书籍名称:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.next();
        int i = 0;
        for (; i < bookList.getSize(); i++) {
            if (bookList.getBooks(i).getName().equals(name)) {
                break;
            }
        }
        if (i >= bookList.getSize()) {
            System.out.println("没有找到您要删除的书籍");
            return;
        }
        if (i == bookList.getSize() - 1) {
            bookList.setSize(bookList.getSize() - 1);
            System.out.println("删除成功!");
            return;
        }
        if (i < bookList.getSize()) {
            bookList.setBooks(i, bookList.getBooks(bookList.getSize() - 1));
            bookList.setSize(bookList.getSize() - 1);
            System.out.println("删除成功!");
        }

    }
}

//分割线//

package Practice.Operation;

import Practice.BookList;

import java.util.Scanner;

public class Find implements IOperation {

    @Override
    public void word(BookList bookList) {
        System.out.println("查阅书籍信息");
        System.out.println("请输入您要查找的书籍名称:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.next();
        int i = 0;
        for (; i < bookList.getSize(); i++) {
            if (bookList.getBooks(i).getName().contains(name)) {
                System.out.println(bookList.getBooks(i));
            }
        }
        if (i > bookList.getSize()) {
            System.out.println("没有您需要的书籍!");
        }

    }
}

//分割线//

package Practice.Operation;

import Practice.BookList;

public class Display implements IOperation {

    @Override
    public void word(BookList bookList) {
        System.out.println("打印书籍列表");
        for (int i = 0; i < bookList.getSize(); i++) {
            System.out.println(bookList.getBooks(i));
        }
    }
}

//分割线//

package Practice.Operation;

import Practice.BookList;

import java.util.Scanner;

public class Borrow implements IOperation {

    @Override
    public void word(BookList bookList) {
        System.out.println("借阅书籍");
        System.out.println("请输入您要借阅的书籍名称:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.next();
        int i = 0;
        for (; i < bookList.getSize(); i++) {
            if (bookList.getBooks(i).getName().equals(name)) {
                break;
            }
        }
        if (i >= bookList.getSize() -1) {
            System.out.println("没有您要借阅的书籍!");
            return;
        }
        if (bookList.getBooks(i).isBorrow()) {
            System.out.println("该书籍已被借出!");
        }
        if (!bookList.getBooks(i).isBorrow()) {
            bookList.getBooks(i).setBorrow(true);
            System.out.println("借书成功!");
        }
    }
}

//分割线//

package Practice.Operation;

import Practice.BookList;

import java.util.Scanner;


public class Return implements IOperation {

    @Override
    public void word(BookList bookList) {
        System.out.println("归还书籍");
        System.out.println("请输入您要归还的书籍名称:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.next();
        int i = 0;
        for (; i < bookList.getSize(); i++) {
            if (bookList.getBooks(i).getName().equals(name)) {
                break;
            }
        }
        if (i >= bookList.getSize()) {
            System.out.println("没有您要归还的书籍,不用归还!");
            return;
        }
        if (!bookList.getBooks(i).isBorrow()) {
            System.out.println("此书未被借出,不用归还!");
        }
        bookList.getBooks(i).setBorrow(false);
        System.out.println("还书成功!");
    }
}

//分割线//

package Practice.Operation;

import Practice.BookList;

public class Exit implements IOperation {

    @Override
    public void word(BookList bookList) {
        System.out.println("退出程序");
        System.exit(0);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值