代码:106 JavaSE: 106期Java代码 - Gitee.com
以上是所有创建的接口和类。
进入后选择身份是管理员还是普通用户,根据不同用户提供不同的菜单,可选择的功能也不同。
Book类:设置一下基础成员变量构造方法。getter和setter和一个toString方法也很简单。
BookList里在创建一个Book[]数组,在构造方法里初始化几本书,还有一个memoryused属性记录一共存放了几本书。getBooks()后面返还Book[]数组,相当于getter。
User是一个抽象类,Admin和NormalUser是子类,继承了User
menu()方法写成了抽象方法,因为类中存在了抽象方法,所以类必须是抽象类。
operation对象存放的是各种功能,但是因为管理员和普通用户的权限不同,不能在User里初始化。在operation包里所有的类都是实现了IOperation这个接口,所以可以存放在IOperation这个数组里,这里是向上转型。
doOperations(int choice, BookList booklist)里只需要获得用户选择的功能,根据数字调用IOperation[]里面的方法。
功能里,只有删除会复杂一点。查找的话,用名字在books里进行遍历查找就行。 借阅和归还也是遍历,如果找到了,就把isBorrowed的属性进行修改。显示所有图书,遍历打印。
这里把booklist中books数组最后一个元素设为null不够准确,应该说是最后一本书,因为删除了一本书之后,所有的书都在数组上前进了一个位置,当把最后一本书付给倒数第二本书时,把最后的一个元素设为null并且在memoryused元素-1就把删除做完了。