承接上一篇的 图书管理系统 ,点击这里跳转
要实现什么功能
1.查找图书
2.增加图书
3.删除图书
4.展示图书
5.退出系统
6.借阅图书
7.归还图书
1.查找图书
要完成这个功能需要以下步骤
输入书名,
然后在书架里找到这本书打印出来,
如果没有这本书就返回
public class FindOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("查找图书-----");
//输入书名,查找书名,找到了打印书的信息
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要查找的书-----");
String name = scanner.nextLine();
int currentSize = bookList.getUseSize();
for (int i = 0; i < currentSize; i++) {
Book book = bookList.getBook(i);
//这里比较书的名字
if(name.equals(book.getName())) {
System.out.println("找到了!");
System.out.println(book);
return;
}
}
System.out.println("没有找到你要的书-----");
return;
}
}
由于书在定义的时候重写了toString方法所以可以直接打印出来
2.增加图书
增加图书的前提是书架里有足够的空间,所以需要提前判满,如果已经满了就可以直接返回
//直接加在最后一本书最后,然后书架中当前的书加1,但是前提是需要有足够的空间,所以需要提前判定是否已经满了
int currentSize = bookList.getUseSize();
if(currentSize == bookList.getBooks().length){
System.out.println("书架已经满了-----");
return;
}
之后的操作是输入书名等信息,放进一本创建的新书中,书架里的书变多,那么当前书架中的书也加一
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要增加的书名-----");
String name = scanner.nextLine();
System.out.println("请输入作者的名字-----");
String author = scanner.nextLine();
System.out.println("请输入价格-----");
int price = scanner.nextInt();
//由于nextLine会接收回车,所以留下一个nextLine来接收空格
scanner.nextLine();
System.out.println("请输入类型-----");
String type = scanner.nextLine();
//这里把输入的数据放入到一本新书中
Book newBook = new Book(name,author,price,type);
//加入新书,当前书加1
bookList.setBook(newBook,currentSize);
bookList.setUseSize(currentSize+1);
System.out.println("加入新书成功!");
return;
}
3.删除图书
首先我们要确定怎么来进行删除图书的操作
用pos之后的书来覆盖pos下标的书,然后当前书架的书减1,
那么重要的是找到下标pos
public void work(BookList bookList) {
System.out.println("删除图书-----");
//删除图书需要先找到此书的下标,用后面的书都覆盖前面的书,当前书数量减1
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要删除的书-----");
String name = scanner.nextLine();
int currentSize = bookList.getUseSize();
//把i拿出来防止被释放
int i = 0;
for (; i < currentSize; i++) {
Book book = bookList.getBook(i);
//设置一个pos变量来接收下标
int pos ;
//这里比较书的名字
if(name.equals(book.getName())) {
//pos 接收下标
pos = i;
那么找到下标之后就需要进行删除书籍的操作
//这里比较书的名字
if(name.equals(book.getName())) {
//pos 接收下标
pos = i;
//从这本书开始被后面的书覆盖,这里 currentSize-1 防止越界
for (int j = pos; j < currentSize-1; j++) {
Book book1 = bookList.getBook(j+1);
bookList.setBook(book1,j);
}
//数量减1
bookList.setUseSize(currentSize-1);
System.out.println("删除成功!");
return;
因为获取书需要获取pos之后的书籍,那么如果不限制就会发生越界访问
4.展示图书
这个直接遍历书架打印出书的内容即可
public class ShowOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("显示图书-----");
int currentSize = bookList.getUseSize();
for (int i = 0; i < currentSize; i++) {
Book book = bookList.getBook(i);
System.out.println(book);
}
}
}
5.退出系统
这里需要了解exit
在Java中,
System.exit(int status)
是一个静态方法,用于立即终止当前正在运行的Java虚拟机(JVM)
public class ExitOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("退出系统-----");
exit(0);
}
}
6.借阅图书
与其他功能相同的是需要输入书名来找书,然后修改书的是否借出值
public class BorrowOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("借阅图书-----");
//输入书名,如果有此书就修改isBorrowed的值,没有则结束
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要借阅的书-----");
String name = scanner.nextLine();
int currentSize = bookList.getUseSize();
for (int i = 0; i < currentSize; i++) {
Book book = bookList.getBook(i);
//这里比较书的名字
if(name.equals(book.getName())) {
//修改是否借阅
book.setBorrowed(true);
System.out.println("借阅成功!");
return;
}
}
System.out.println("没有找到你要借阅的书-----");
return;
}
}
7.归还图书
与借阅图书相同
public class ReturnOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("归还图书-----");
//找到书并修改借出值
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要归还的书-----");
String name = scanner.nextLine();
int currentSize = bookList.getUseSize();
for (int i = 0; i < currentSize; i++) {
Book book = bookList.getBook(i);
//这里比较书的名字
if(name.equals(book.getName())) {
book.setBorrowed(false);
System.out.println("还书成功!");
return;
}
}
System.out.println("没有找到你要还的书-----");
return;
}
看到这里不妨留下你的三连,你的三连就是我的动力!