文章目录
1.包装和类分块介绍
各种操作放在operatin包中 , 用户分类放在user包中 , 每个书的信息存在Book类中 , 一系列书放于BookList类中
< 1 > 首先通过IOperation接口创建一个work方法(用于统一各种Operation方法名)
< 2 >通过抽象类User实现管理员(AdminUser)和普通用户(NormalUser)的多态 , 分别实现两种不同的菜单操作,实现不同的operations数组操作
< 3 > 用Main方法选择调用不同的身份,启动程序
< 4 >通过Main方法中调用User的work方法 , 再通过User的work方法调用operations数组中各种Operation的work方法
各种操作介绍
AddOperation
添加图书(依次输入书名 , 作者 , 价格 , 类型 ) , 最后提示添加成功的信息
BorrowOperation
把未借出的图书借出去(按照书名)
此处的BorrowOperation也可以按照图书编号操作 , 具体可参考ReturnOperation操作
具体功能介绍
- 实现了 work 方法,该方法用于处理借书操作。首先会在控制台输出提示信息让用户输入想借书籍的书名。
- 通过 Scanner 获取用户输入的书名后,会遍历给定的 BookList (书籍列表)。
- 若在列表中找到了同名书籍,接着判断该书是否已被借出,如果没借出就将该书的借出状态设为已借出,并输出“借书成功!”,然后结束方法执行;如果该书已借出,则输出“你想借阅的书籍已借出!”并结束方法执行。
- 若遍历完整个书籍列表都没找到用户输入书名对应的书籍,就输出“未找到您想借阅的书籍”。
DeleteOperation
删除某本图书(按照书籍列表的图书编号)
具体功能介绍
- 实现了 work 方法用于处理删除书籍操作。先是在控制台输出提示信息告知用户要进行删除书籍的操作,并让用户输入想删除的图书序号。
- 通过 Scanner 获取用户输入的序号后,会先判断该序号是否在合理范围内(大于等于0且小于书籍列表的长度),若超出范围,则输出“输入编号不存在”并结束方法执行。
- 若序号对应的是书籍列表中的最后一本书,就直接将书籍列表的长度减1,以此实现删除最后一本书的效果,随后结束方法执行。
- 若不是最后一本书,会把列表中最后一本书放到输入序号对应的位置上,然后将书籍列表的长度减1,并输出“删除书籍成功!”,最后结束方法执行。
ExitOperation
退出系统
FindOperation
寻找图书(按照书名)
具体功能介绍
- 实现的 work 方法用于执行查找书籍的操作。首先会在控制台输出提示信息,告知用户要进行查找操作并让用户输入要查找的书名。
- 通过 Scanner 获取用户输入的书名后,会遍历给定的 BookList (书籍列表)。
- 若在遍历过程中发现有书籍的名字与输入的书名相同,就会输出这本书的相关信息(通过输出 bookList.getBook(i) )以及“已找到!”的提示,然后结束方法执行。
- 若遍历完整个书籍列表都没有找到匹配书名的书籍,就会输出“没找到,书籍不存在”,随后结束方法执行。
ListOperation
打印书籍列表
具体功能介绍
通过循环遍历给定的 BookList (书籍列表),对于列表中的每一本书(获取到 Book 对象),会按照序号(从1开始,通过 i + 1 表示)加上书的相关信息(直接输出 book 对象,调用了 Book 类的 toString 方法来展示关键信息)的格式,将每一本书的信息依次输出到控制台,以此实现查看书籍列表内容的功能。
ReturnOperation
把已借出的书籍还回去(按照书籍列表的图书编号)
具体功能介绍
- 实现的 work 方法用于处理还书操作。先是在控制台输出“还书操作”的提示信息,接着提示用户输入想还书的编号,通过 Scanner 获取用户输入的编号后将其减1(编号从1开始计数,这里转换为从0开始的索引(下标))。
- 然后判断该编号是否合法,若编号小于0或者大于书籍列表的长度,就输出“输入编号不合法!”并结束方法执行。
- 若编号合法,会判断对应书籍是否已借出,若已借出,则将该书的借出状态设为未借出,并输出“还书成功!”;若该书未借出,就输出“该书未借出!”。
2.Book类
public class Book {
private String name;
private String author;
private double price;
private String type; //类型
private boolean isBorrowed;
//构造方法
public Book(String name,String author,double price,String type){
this.name=name;
this.author=author;
this.price=price;
this.type=type;
this.isBorrowed=false;
}
@Override
public String toString() {
return "[" + name + ',' + author + ',' + price +','+
type + ',' + (isBorrowed?"已借出":"未借出") + ']';
}
//提供getter,setter
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 double getPrice() {
return price;
}
public void setPrice(double 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;
}
}
3.BookList类
public class BookList {
private Book[] books=new Book[100]; //存放书籍
private int size=0;
public BookList(){
books[0]=new Book("西游记","吴承恩",100,"古典小说");
books[1]=new Book("红楼梦","曹雪芹",90,"古典小说");
books[2]=new Book("高等数学","高斯",40,"数学");
books[3]=new Book("Java入门到精通","詹姆斯高斯林",70,"计算机");
size=4;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this