图书管理系统1

简介: 图书管理系统

一、前言:

今天我们来分享一下一个简单的图书管理系统,不知道大家是不是图书馆的常客,有没有去过图书馆借过书,你们想知道这个图书管理系统是怎么实现的吗?下面我们一起来看看这个是怎么实现的?

我们知道图书馆系统可以有两个系统,一个是管理员管理图书的系统,管理员可以(1)查找某一本图书情况、(2)增加新的图书、(3)删除旧的图书、(4)查看图书馆有哪些图书、(5)退出管理系统。

另一个就是作为学生的我们去借书的系统,我们去图书馆可以(1)查找某一本图书的情况、(2)借阅某一本书、(3)归还某一本书、(4)退出管理系统。

二、代码实现

1、代码的类、抽象类及接口

36a5fa9697c14d0f9436282cfe61b62f.png

(1)book

这个包就是字面意识用来存放书的信息。

(2)operation

这个包存放的是一些操作的实现,如查找图书,退出系统等等(容我慢慢道来)。

3)user

这个包是用于区分两种不同使用者,而去实现相应的操作。

(4)Main

将以上所说的东西结合起来,从而实现这个图书馆管理系统。

2、代码的具体实现

(1)book

Book类:用于设置一本书的书名、作者、价格、类型、是否被借出的情况

package book;
public class Book {
    private String name;//书名
    private String author;//作者
    private int price;//价格
    private String type;//类型
    private boolean isBorrowed;//是否被借出
// Book构造方法
    public Book(String name, String author, int price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }
//个个变量的get和set方法
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public boolean isBorrowed() {
        return isBorrowed;
    }
    public void setBorrowed(boolean borrowed) {
        isBorrowed = borrowed;
    }
//重写toString方法
    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +((isBorrowed==true)? "已借出":"未借出")
                + '}';
    }
}

BookList类:一个书架,初始存放三本书,可以添加,删除,查找。

package book;
public class BookList {
    private Book[] books =new Book[10];//创建一个Book类的书组,用来放书
    private int usedSize;//记录book有多少本书
    //BookList的构造方法,存放所以书的内容
    public BookList(){
        books[0] = new Book("三国演义","罗贯中",19,"小说");
        books[1] = new Book("西游记","吴承恩",29,"小说");
        books[2] = new Book("红楼梦","曹雪芹",9,"小说");
        usedSize = 3;
    }
    /**
     *
     * @param pos pos位置一定是合法的
     * @return 一本书
     */
    public Book getBook(int pos) {
        return books[pos];
    }
    /**
     *
     * @param pos pos位置一定是合法的
     * @param book 你要放的书
     */
    public void setBooks(int pos,Book book) {
        books[pos] = book;
    }
    /**
     * 实时获取当前的 书的个数
     * @return
     */
    public int getUsedSize() {
        return usedSize;
    }
    /**
     * 实时的修改当前书架上的书的个数
     */
    public void setUsedSize(int size) {
        usedSize = size;
    }
}

(2)operation

IOperation接口:给operation通过work抽象方法

package operation;
import book.BookList;
//因为每个操作类都要实现work抽象方法,所以创建一个接口,提供work方法
public interface IOperation {
        void work(BookList bookList) ;
}

AddOperation类:进行添加操作

package operation;
import book.BookList;
import book.Book;
import java.util.Scanner;
public class AddOperation implements IOperation{
    //重写work方法,添加书籍的信息
    @Override
    public void work(BookList bookList) {
        System.out.println("新增图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入图书的名字:");
        String name = scanner.nextLine();
        System.out.println("请输入图书的作者:");
        String author = scanner.nextLine();
        System.out.println("请输入图书的类型:");
        String type = scanner.nextLine();
        System.out.println("请输入图书的价格:");
        int price = scanner.nextInt();
//new一个Book的对象,保持新添加书籍的信息
        Book book = new Book(name,author,price,type);
//重新设置书架书的数量的值
        int currentSize = bookList.getUsedSize();
        bookList.setBooks(currentSize,book);
        bookList.setUsedSize(currentSize+1);
        System.out.println("新增书籍成功!");
    }
}

BorrowOperation类:进行借书操作

package operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class BorrowOperation implements IOperation{
    //重写work方法
    @Override
    public void work(BookList bookList) {
        Scanner sc=new Scanner(System.in);
//给借书的人查看所有图书的信息,方便借阅
        System.out.println("我们图书馆有:");
        for (int i=0;i< bookList.getUsedSize();i++)
        {
            Book book=bookList.getBook(i);
            System.out.println(book);
        }
        System.out.println("请问你要借的图书是:");
        String name = sc.nextLine();
//判断书籍是否可以借阅
        for (int i=0;i< bookList.getUsedSize();i++)
        {
            Book book=bookList.getBook(i);
            if (book.getName().equals(name))
            {
                System.out.println("找到图书!");
                if(!book.isBorrowed())
                {
                    System.out.println("该书未被借出,借书成功!");
                    book.setBorrowed(true);
                    System.out.println(book);
                    break;
                }
            }
            if (i== bookList.getUsedSize()-1)
              System.out.println("该书已被借出,借书失败!");
        }
    }
}

DelOperation类:进行删除操作

package operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class DelOperation implements IOperation{
//重写work方法
    @Override
    public void work(BookList bookList) {
        System.out.println("删除图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要删除图书的名字:");
        String name = scanner.nextLine();
        int j=0;
        for (int i=0;i< bookList.getUsedSize();i++)
        {
            Book book=bookList.getBook(i);
            if (book.getName().equals(name))
            {
                j=i;
                break;
            }
        }
//重新编排书籍的序号
        for (int i=j;i< bookList.getUsedSize()-1;i++)
        {
            Book book=bookList.getBook(i+1);
            bookList.setBooks(i,book);
        }
//更改书籍数量信息
        int currentSize=bookList.getUsedSize();
        bookList.setUsedSize(currentSize-1);
        System.out.println("删除成功!");
    }
}


目录
相关文章
|
6月前
|
C++
图书管理系统(C++)
图书管理系统(C++)
45 0
|
1月前
|
C语言 Python
图书管理系统
【10月更文挑战第11天】图书管理系统。
47 5
|
6月前
|
存储 Java
学生成绩管理系统
学生成绩管理系统
96 5
|
6月前
|
存储 安全 Java
图书管理系统的设计与实现
图书管理系统的设计与实现
|
C# 数据库
C#图书管理系统
C#图书管理系统
86 0
|
存储 程序员 C#
基于C#实现的学生成绩管理系统
基于C#实现的学生成绩管理系统
159 0
简易版 图书管理系统
简易版 图书管理系统
129 0
简易版 图书管理系统
图书管理系统2
图书管理系统
127 0
|
C++
使用C++实现的学生成绩管理系统(附完整代码)
使用C++实现的学生成绩管理系统(附完整代码)
1571 0
使用C++实现的学生成绩管理系统(附完整代码)
|
前端开发 Java 关系型数据库
基于SSM实现图书管理系统
基于SSM实现图书管理系统
279 0
基于SSM实现图书管理系统