Java图书管理系统

1.思维导图如下

2.Book包下

Book类

package practice_2_27.Book;

public class Book {
    private String bookName;
    private String author;
    private Double price;
    private String type;
    private Boolean isBorrowed;

    public Book(String bookName, String author, Double price, String type) {
        this.bookName = bookName;
        this.author = author;
        this.price = price;
        this.type = type;
        this.isBorrowed = false;
    }

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

    public Book(String bookName) {
        this.bookName = bookName;
    }

    public String getBookName() {
        return bookName;
    }


    public String getAuthor() {
        return author;
    }


    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public Boolean getBorrowed() {
        return isBorrowed;
    }

    public void setBorrowed(Boolean borrowed) {
        isBorrowed = borrowed;
    }
}

BookList类

package practice_2_27.Book;

import java.util.ArrayList;
import java.util.List;

public class BookList {

    public static final List<Book>books = new ArrayList<>();

    public static final List<String>bookNames = new ArrayList<>();

    static {
        books.add(new Book("三国演义","罗贯中",65.3,"小说"));
        books.add(new Book("红楼梦","曹雪芹",103.5,"小说"));
        books.add(new Book("水浒传","施耐庵",44.4,"小说"));
        books.add(new Book("西游记","吴承恩",98.2,"小说"));

        bookNames.add("三国演义");
        bookNames.add("红楼梦");
        bookNames.add("水浒传");
        bookNames.add("西游记");
    }

    public void disPlay() {
        for (Book temp:books) {
            System.out.println(temp.toString());
        }
    }

    public boolean isBookContains(String bookName){
        return bookNames.contains(bookName);
    }

    public int index(String bookName){
        return bookNames.indexOf(bookName);
    }

    public void remove(int index){
        books.remove(index);
        bookNames.remove(index);
    }
}

User包下

User类

package practice_2_27.User;

import practice_2_27.Book.BookList;
import practice_2_27.Operate.IOperation;

import java.util.Scanner;

public abstract class User {
    protected String userName;

    protected IOperation[] operations;

    Scanner sc = new Scanner(System.in);

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

    public abstract int menu();

    public void doOperate(BookList bookList,int choice) {
        operations[choice-1].operate(bookList);
    }
}

NormalUser类

package practice_2_27.User;

import practice_2_21.Operation.impl.ListBooksOperation;
import practice_2_27.Operate.IOperation;
import practice_2_27.Operate.impls.BorrowOperation;
import practice_2_27.Operate.impls.FindOperation;
import practice_2_27.Operate.impls.ListOperation;
import practice_2_27.Operate.impls.ReturnOperation;
import practice_2_27.User.User;

import java.util.Scanner;

public class NormalUser extends User {

    public NormalUser(String userName) {
        super(userName);
        super.operations = new IOperation[]{
                new ListOperation(),
                new FindOperation(),
                new BorrowOperation(),
                new ReturnOperation()
        };
    }

    @Override
    public int menu() {
        System.out.println("************欢迎"+userName+"来到图书管理系统***********");
        System.out.println("1.显示书籍列表");
        System.out.println("2.查询书籍");
        System.out.println("3.借阅书籍");
        System.out.println("4.归还书籍");
        System.out.println("-1.退出系统");
        System.out.println("请输入你的选择:");
        int choice = sc.nextInt();
        if(choice == -1){
            sc.close();
        }
        return choice;
    }
}

Admin类

package practice_2_27.User;

import practice_2_27.Operate.IOperation;
import practice_2_27.Operate.impls.*;

public class Admin extends User{

    public Admin(String userName) {

        super(userName);
        super.operations = new IOperation[]{
                new AddOperation(),
                new DeleteOperation(),
                new UpdateOperation(),
                new FindOperation(),
                new ListOperation()
        };
    }

    @Override
    public int menu() {
        System.out.println("************欢迎"+userName+"来到图书管理系统***********");
        System.out.println("1.添加书籍");
        System.out.println("2.删除书籍");
        System.out.println("3.更新书籍");
        System.out.println("4.查找书籍");
        System.out.println("5.显示书籍列表");
        System.out.println("-1.退出系统");
        System.out.println("请输入你的选择:");
        int choice = sc.nextInt();
        if(choice == -1){
            sc.close();
        }
        return choice;
    }
}

Operate包下

IOperation接口

package practice_2_27.Operate;

import practice_2_27.Book.BookList;

import java.util.Scanner;

public abstract interface IOperation {

    Scanner sc = new Scanner(System.in);

    void operate(BookList bookList);

}

impl包下的操作类

Add Operation

package practice_2_27.Operate.impls;

import practice_2_27.Book.Book;
import practice_2_27.Book.BookList;
import practice_2_27.Operate.IOperation;

public class AddOperation implements IOperation {

    @Override
    public void operate(BookList bookList) {
        System.out.println("您现在进行的是添加书籍操作");
        System.out.println("请输入您要添加的书籍名称");
        String bookName = sc.nextLine();
        //判断书架上是否已经包含了该图书
        if(bookList.isBookContains(bookName)){
            System.out.println("书架上已经有这本书啦~");
            return;
        }
        System.out.println("请输入作者名称:");
        String author = sc.nextLine();
        System.out.println("请输入书籍价格:");
        Double price = sc.nextDouble();
        System.out.println("请输入书籍类型:");
        String type = sc.nextLine();
        type = sc.nextLine();
        bookList.books.add(new Book(bookName,author,price,type));
        bookList.bookNames.add(bookName);
        System.out.println("添加成功");
    }
}

Borrow Operation

package practice_2_27.Operate.impls;

import practice_2_27.Book.BookList;
import practice_2_27.Operate.IOperation;

public class BorrowOperation implements IOperation {

    @Override
    public void operate(BookList bookList) {
        System.out.println("请输入你要借的书籍名称:");
        String bookName = sc.nextLine();
        if(!bookList.isBookContains(bookName)){
            System.out.println("书架上没有这本书哦~");
        }else {
            //判断这本书是否被借出去
            int index = bookList.index(bookName);
            if(bookList.books.get(index).getBorrowed() == false){
                bookList.books.get(index).setBorrowed(true);
                System.out.println("借阅成功~");
            }else {
                System.out.println("这本书已经被借走啦~");
            }
        }
    }
}

DeleteOperation

package practice_2_27.Operate.impls;

import practice_2_27.Book.BookList;
import practice_2_27.Operate.IOperation;

public class DeleteOperation implements IOperation {

    @Override
    public void operate(BookList bookList) {
        System.out.println("请输入要删除的书籍名称:");
        String bookName = sc.nextLine();
        //判断书架上是否存在这本书
        if(!bookList.isBookContains(bookName)){
            System.out.println("书架上没有这本书哦~");
        }else {
            //找到其下标
            int index = bookList.index(bookName);
            //删除
            bookList.remove(index);
            System.out.println("删除成功~");
        }
    }
}

Find Operation

package practice_2_27.Operate.impls;

import practice_2_27.Book.BookList;
import practice_2_27.Operate.IOperation;

public class FindOperation implements IOperation {

    @Override
    public void operate(BookList bookList) {
        System.out.println("请输入要查找的书籍名称:");
        String bookName = sc.nextLine();
        //判断书架上是否存在这本书
        if(!bookList.isBookContains(bookName)){
            System.out.println("书架上没有这本书哦~");
        }else {
            //找到其下标
            int index = bookList.index(bookName);
            //删除
            System.out.println(bookList.books.get(index));
        }
    }
}

ListOperation

package practice_2_27.Operate.impls;

import practice_2_27.Book.BookList;
import practice_2_27.Operate.IOperation;

public class ListOperation implements IOperation {

    @Override
    public void operate(BookList bookList) {
        System.out.println("书籍列表:");
        bookList.disPlay();


    }
}

ReturnOperation

package practice_2_27.Operate.impls;

import practice_2_27.Book.BookList;
import practice_2_27.Operate.IOperation;

public class ReturnOperation implements IOperation {
    @Override
    public void operate(BookList bookList) {
        //还书
        System.out.println("请输入你需要还的书籍名称:");
        String bookName = sc.nextLine();
        //检查书架上是否有这本书
        if(!bookList.isBookContains(bookName)){
            System.out.println("书架上没有这本书哦~");
        }else {
            //检查这本书有没有被借走
            int index = bookList.index(bookName);
            if(bookList.books.get(index).getBorrowed() == true){
                bookList.books.get(index).setBorrowed(false);
                System.out.println("还书成功~");
            }else {
                System.out.println("这本书没有被借走呀~");
            }        }
    }
}

UpdateOperation

package practice_2_27.Operate.impls;

import practice_2_27.Book.Book;
import practice_2_27.Book.BookList;
import practice_2_27.Operate.IOperation;

public class UpdateOperation implements IOperation {

    @Override
    public void operate(BookList bookList) {
        System.out.println("请输入要更新的书籍名称:");
        String bookName = sc.nextLine();
        //
        if(!bookList.isBookContains(bookName)){
            System.out.println("书架上没有这本书哦~");
        }else {
            int index = bookList.index(bookName);
            Book book = bookList.books.get(index);
            System.out.println("请输入修改后的书籍价格:");
            Double price = sc.nextDouble();
            book.setPrice(price);
            System.out.println("请输入修改后的书籍类型:");
            String type = sc.nextLine();
            type = sc.nextLine();
            book.setType(type);
            System.out.println("请输入修改后该书籍是否被借出");
            Boolean res = sc.nextBoolean();
            book.setBorrowed(res);
            System.out.println("修改成功!");
        }
    }
}

Main类

import practice_2_27.Book.BookList;
import practice_2_27.User.Admin;
import practice_2_27.User.NormalUser;
import practice_2_27.User.User;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        //创建一个书架对象
        BookList bookList = new BookList();
        User user = login();
        while (true){
            int res = user.menu();
            if(res == -1){
                System.out.println("bye~~~");
                return;
            }else {
                user.doOperate(bookList,res);
            }

        }

    }
    public static User login(){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的姓名:");
        String userName = sc.nextLine();
        System.out.println("1.普通用户 2.管理员");
        System.out.println("请输入您的身份:");
        int val = sc.nextInt();
        if(val == 1){
            return new NormalUser(userName);
        }else{
            return new Admin(userName);
        }
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值