今天我们创建操作系统这一部分,对于图书馆我们都不陌生,在图书馆我们通常会有借阅图书,归还图书,查找图书等等许多操作,那在图书系统的创建中我们也相应有这些操作。
在众多的操作类型中,我们可以发现它们都有一个特征,那就是它们都是一种操作,那我们不妨可以设置一个基本类型——InOperation接口。并且在这个接口中写一个方法work()。
public interface IoOperation { public void work(Bookshelf bookshelf); }
然后我们就可以去实现其他接口,在借阅,归还,添加,删除等操作中,我认为最重要的有几个点。
1.长度
在书架中我们存放有书籍,对于存放书籍我们使用的是数组,那么数组的长度就是一个值得注意的地方,此外还有就是数组使用长度,即书籍占用的长度,我们可以将用number定义。在书架包里我们有getNumber(),setNumber()方法去得到它,在借阅,归还,显示和添加等操作中我们都要用到它。(注意添加书籍后要将使用长度+1)
//添加 ...... int current = bookshelf.getNumber(); if (current + 1 > bookshelf.getBookssize()){ System.out.println("书架满了,不能添加!!"); return; }......
//借阅 ...... int current = bookshelf.getNumber(); for (int i = 0; i < current; i++){ Book book = bookshelf.getBooks(i);//要先创建一个Book类型的变量去得到图书的数量,好在循环的时候比较 if (book.getName().equals(name)){ if (book.isCondition()){ System.out.println("该书已经被借出!!"); return;//让循环到此处的时候有个出口,如果条件满足就跳出,不满足就经行下面的操作 } book.setCondition(true); System.out.println("借阅成功!!"); return; } }
//归还 ...... for (int i = 0; i < current; i++){ Book book = bookshelf.getBooks(i); if (book.getName().equals(name)){ if (book.condition){ book.setCondition(false); System.out.println("归还成功!!"); return; } } }
//显示
......
int current = bookshelf.number; for (int i = 0; i < current; i++){ Book book = bookshelf.getBooks(i); System.out.println(book); }
2.租借状态
我们可以用condition定义租借状态,其类型为boolean类型,未初始化是为false,可以认为未借出,如果借出了,我们就修改为将其赋值为true,
book.setCondition(true); 或者 book.setCondition(false);
当然它返回的值为false或true,要返回“为借出”或“借出”,我们可以重写toString()方法,
@Override public String toString() { return "Book{" + "name='" + name + '\'' + ", author='" + author + '\'' + ", price='" + price + '\'' + ", type='" + type + '\'' + ((condition == true) ? "借出" : "未借出") + '}'; }
剩余的部分就按照逻辑写下去,就可以将操作这一部分完成。