一、前言:
今天我们来分享一下一个简单的图书管理系统,不知道大家是不是图书馆的常客,有没有去过图书馆借过书,你们想知道这个图书管理系统是怎么实现的吗?下面我们一起来看看这个是怎么实现的?
我们知道图书馆系统可以有两个系统,一个是管理员管理图书的系统,管理员可以(1)查找某一本图书情况、(2)增加新的图书、(3)删除旧的图书、(4)查看图书馆有哪些图书、(5)退出管理系统。
另一个就是作为学生的我们去借书的系统,我们去图书馆可以(1)查找某一本图书的情况、(2)借阅某一本书、(3)归还某一本书、(4)退出管理系统。
二、代码实现
1、代码的类、抽象类及接口
(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("删除成功!"); } }