一、框架
1. 创建类
用户:管理员AdminUser 普通用户NormalUser 继承抽象类User
书:书Book 书架BookList
操作对象:书Book
2. 知识点
主要涉及的知识点:数据类型 变量 if for 数组 方法 类和对象 封装继承多态 抽象类和接口
3.利用数组放置图书
Test.Java
BookList.java
方法调用
BookList.java
Book.java
4.利用向上转型实现用户身份的选择
User.java
添加图书操作AddIOperation等类实现接口IOperations
IOperations.java
每个功能操作均需重写接口IOperations的work方法--此处以添加操作为例
NormalUser.java
AdminUser.java
Test.java
二、功能的实现——重写Work()方法
1.退出操作ExitOperation
public class ExitOperation implements IOperations{@Overridepublic void work(BookList bookList) {System.out.println("退出系统");System.exit(0);}
}
2.展示操作ShowOperation
public class ShowOperation implements IOperations{@Overridepublic void work(BookList bookList) {System.out.println("展示书籍");for (int i = 0; i < bookList.getUsedSize(); i++) {System.out.println(bookList.getBooks()[i].toString());}}
}
3.查找操作FindOperation
public class FindOperation implements IOperations{@Overridepublic void work(BookList bookList) {System.out.println("查找书籍");System.out.println("请输入您要查找的图书名字:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();for (int i = 0; i < bookList.getUsedSize(); i++) {if(bookList.getBooks()[i].getName().equals(name)) {System.out.println(bookList.getBooks()[i].toString());return;}}System.out.println("没有这本书");}
}
4.借阅操作BorrowOperation
public class BorrowOperation implements IOperations{@Overridepublic void work(BookList bookList) {System.out.println("借阅书籍");System.out.println("请输入你要借阅的图书名字:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();for (int i = 0; i < bookList.getUsedSize(); i++) {if (bookList.getBooks()[i].getName().equals(name)) {bookList.getBooks()[i].setBorrowed(true);System.out.println("借阅成功");return;}}System.out.println("没有找到这本书");}
}
5.归还操作ReturnOPeration
public class ReturnIOperation implements IOperations{@Overridepublic void work(BookList bookList) {System.out.println("归还书籍");System.out.println("请输入你要归还的图书名字:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();for (int i = 0; i < bookList.getUsedSize(); i++) {if (bookList.getBooks()[i].getName().equals(name)) {if(bookList.getBooks()[i].isBorrowed()) {bookList.getBooks()[i].setBorrowed(false);System.out.println("归还成功");return;}else {System.out.println("这本书已经归还了,无需再次归还");return;}}}System.out.println("没有找到这本书");}
}
6.添加功能AddOperation
public class AddIOperation implements IOperations{@Overridepublic void work(BookList bookList) {System.out.println("增添书籍");//判满int currentSize = bookList.getUsedSize();if (currentSize == bookList.getBooks().length) {System.out.println("书架已满,添加失败");return;}System.out.println("请输入图书名字:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();System.out.println("请输入图书的作者:");String author = scanner.nextLine();System.out.println("请输入图书的价格:");int price = scanner.nextInt();scanner.nextLine();System.out.println("请输入图书的类型:");String type = scanner.nextLine();Book newBook = new Book(name,author,price,type);//判断书架有没有这本书for (int i = 0; i < bookList.getBooks().length; i++) {if(newBook.equals(bookList.getBooks()[i])) {System.out.println("该书已存在,添加无效");return;}}bookList.setBooks(currentSize,newBook);bookList.setUsedSize(currentSize+1);System.out.println("添加成功");}
}
7.删除操作DelOperation
public class DelOperation implements IOperations{@Overridepublic void work(BookList bookList) {System.out.println("删除书籍");System.out.println("请输入您要删除的图书名字");Scanner scanner = new Scanner(System.in);int pos = -1;String name = scanner.nextLine();int currentSize = bookList.getUsedSize();int i = 0;for (; i < currentSize; i++) {if(name.equals(bookList.getBooks()[i].getName())) {pos = i;break;}}if (i == currentSize) {System.out.println("没有你想删除的图书");return;}int j = pos;for (;j < bookList.getUsedSize()-1; j++) {Book book = bookList.getBooks()[j+1];bookList.setBooks(j,book);}bookList.setBooks(j,null);bookList.setUsedSize(currentSize-1);System.out.println("删除成功");}
}